From a60df900ac5f257cc86ef34b05229c10ebe0bca6 Mon Sep 17 00:00:00 2001 From: admin Date: Thu, 8 Sep 2005 06:05:44 +0000 Subject: [PATCH] This commit was generated by cvs2git to create tag 'TG-Start-D5-38-2003'. Sprout from master 2005-09-08 06:05:43 UTC srn 'Modified a method createAndDisplayGO' Delete: INSTALL LICENCE Makefile.in adm_local/unix/config_files/README adm_local/unix/make_commence.in adm_local/unix/make_omniorb.in bin/VERSION build_configure configure.in.base doc/Makefile.in doc/salome/GEOM_index.html doc/salome/Makefile.in doc/salome/gui/GEOM/GEOM.log doc/salome/gui/GEOM/blocks.htm doc/salome/gui/GEOM/changing_displaying_parameters.htm doc/salome/gui/GEOM/cshdat_robohelp.htm doc/salome/gui/GEOM/cshdat_webhelp.htm doc/salome/gui/GEOM/default.css doc/salome/gui/GEOM/default.skn doc/salome/gui/GEOM/default_ns.css doc/salome/gui/GEOM/ehelp.xml doc/salome/gui/GEOM/ehlpdhtm.js doc/salome/gui/GEOM/files/introduction_to_geom.htm doc/salome/gui/GEOM/files/salome2_sp3_basicgui_functions.htm doc/salome/gui/GEOM/files/salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image27.gif doc/salome/gui/GEOM/files/salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image28.gif doc/salome/gui/GEOM/files/salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image29.gif doc/salome/gui/GEOM/files/salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image30.gif doc/salome/gui/GEOM/files/salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image31.gif doc/salome/gui/GEOM/files/salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image32.gif doc/salome/gui/GEOM/files/salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image33.gif doc/salome/gui/GEOM/files/salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image34.gif doc/salome/gui/GEOM/files/salome2_sp3_booleangui_functions.htm doc/salome/gui/GEOM/files/salome2_sp3_booleangui_functions_salome2_sp3_booleangui_functions_image1.gif doc/salome/gui/GEOM/files/salome2_sp3_booleangui_functions_salome2_sp3_booleangui_functions_image2.gif doc/salome/gui/GEOM/files/salome2_sp3_booleangui_functions_salome2_sp3_booleangui_functions_image3.gif doc/salome/gui/GEOM/files/salome2_sp3_booleangui_functions_salome2_sp3_booleangui_functions_image4.gif doc/salome/gui/GEOM/files/salome2_sp3_buildgui_functions.htm doc/salome/gui/GEOM/files/salome2_sp3_displaygui_functions.htm doc/salome/gui/GEOM/files/salome2_sp3_displaygui_functions_salome2_sp3_displaygui_functions_image51.gif doc/salome/gui/GEOM/files/salome2_sp3_displaygui_functions_salome2_sp3_displaygui_functions_image52.gif doc/salome/gui/GEOM/files/salome2_sp3_displaygui_functions_salome2_sp3_displaygui_functions_image53.gif doc/salome/gui/GEOM/files/salome2_sp3_displaygui_functions_salome2_sp3_displaygui_functions_image54.gif doc/salome/gui/GEOM/files/salome2_sp3_displaygui_functions_salome2_sp3_displaygui_functions_image55.gif doc/salome/gui/GEOM/files/salome2_sp3_generationgui_functions.htm doc/salome/gui/GEOM/files/salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image56.gif doc/salome/gui/GEOM/files/salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image57.gif doc/salome/gui/GEOM/files/salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image58.gif doc/salome/gui/GEOM/files/salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image59.gif doc/salome/gui/GEOM/files/salome2_sp3_geomtoolsgui_functions.htm doc/salome/gui/GEOM/files/salome2_sp3_measuregui_functions.htm doc/salome/gui/GEOM/files/salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image71.gif doc/salome/gui/GEOM/files/salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image72.gif doc/salome/gui/GEOM/files/salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image73.gif doc/salome/gui/GEOM/files/salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image74.gif doc/salome/gui/GEOM/files/salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image75.gif doc/salome/gui/GEOM/files/salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image76.gif doc/salome/gui/GEOM/files/salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image77.gif doc/salome/gui/GEOM/files/salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image78.gif doc/salome/gui/GEOM/files/salome2_sp3_operationgui_functions.htm doc/salome/gui/GEOM/files/salome2_sp3_operationgui_functions_salome2_sp3_operationgui_functions_image87.gif doc/salome/gui/GEOM/files/salome2_sp3_operationgui_functions_salome2_sp3_operationgui_functions_image88.gif doc/salome/gui/GEOM/files/salome2_sp3_operationgui_functions_salome2_sp3_operationgui_functions_image89.gif doc/salome/gui/GEOM/files/salome2_sp3_operationgui_functions_salome2_sp3_operationgui_functions_image90.gif doc/salome/gui/GEOM/files/salome2_sp3_primitivegui_functions.htm doc/salome/gui/GEOM/files/salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image100.gif doc/salome/gui/GEOM/files/salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image101.gif doc/salome/gui/GEOM/files/salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image102.gif doc/salome/gui/GEOM/files/salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image103.gif doc/salome/gui/GEOM/files/salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image99.gif doc/salome/gui/GEOM/files/salome2_sp3_repairgui_functions.htm doc/salome/gui/GEOM/files/salome2_sp3_repairgui_functions_salome2_sp3_repairgui_functions_image119.gif doc/salome/gui/GEOM/files/salome2_sp3_repairgui_functions_salome2_sp3_repairgui_functions_image120.gif doc/salome/gui/GEOM/files/salome2_sp3_repairgui_functions_salome2_sp3_repairgui_functions_image121.gif doc/salome/gui/GEOM/files/salome2_sp3_repairgui_functions_salome2_sp3_repairgui_functions_image122.gif doc/salome/gui/GEOM/files/salome2_sp3_transformationgui_functions.htm doc/salome/gui/GEOM/files/salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image128.gif doc/salome/gui/GEOM/files/salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image129.gif doc/salome/gui/GEOM/files/salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image130.gif doc/salome/gui/GEOM/files/salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image131.gif doc/salome/gui/GEOM/files/salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image132.gif doc/salome/gui/GEOM/files/salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image133.gif doc/salome/gui/GEOM/geom.htm doc/salome/gui/GEOM/geom.html doc/salome/gui/GEOM/geom.log doc/salome/gui/GEOM/geom_csh.htm doc/salome/gui/GEOM/geom_csh.html doc/salome/gui/GEOM/geom_help.html doc/salome/gui/GEOM/geom_help_csh.html doc/salome/gui/GEOM/geom_help_rhc.html doc/salome/gui/GEOM/geom_rhc.htm doc/salome/gui/GEOM/geom_rhc.html doc/salome/gui/GEOM/i_blue.jpg doc/salome/gui/GEOM/image10.jpg doc/salome/gui/GEOM/image100.jpg doc/salome/gui/GEOM/image101.jpg doc/salome/gui/GEOM/image102.jpg doc/salome/gui/GEOM/image103.jpg doc/salome/gui/GEOM/image104.jpg doc/salome/gui/GEOM/image105.jpg doc/salome/gui/GEOM/image106.jpg doc/salome/gui/GEOM/image107.jpg doc/salome/gui/GEOM/image108.jpg doc/salome/gui/GEOM/image109.jpg doc/salome/gui/GEOM/image11.gif doc/salome/gui/GEOM/image11.jpg doc/salome/gui/GEOM/image110.jpg doc/salome/gui/GEOM/image111.jpg doc/salome/gui/GEOM/image112.jpg doc/salome/gui/GEOM/image113.jpg doc/salome/gui/GEOM/image114.jpg doc/salome/gui/GEOM/image115.jpg doc/salome/gui/GEOM/image116.jpg doc/salome/gui/GEOM/image117.jpg doc/salome/gui/GEOM/image118.jpg doc/salome/gui/GEOM/image119.jpg doc/salome/gui/GEOM/image12.gif doc/salome/gui/GEOM/image12.jpg doc/salome/gui/GEOM/image120.jpg doc/salome/gui/GEOM/image121.jpg doc/salome/gui/GEOM/image122.jpg doc/salome/gui/GEOM/image123.jpg doc/salome/gui/GEOM/image124.jpg doc/salome/gui/GEOM/image125.jpg doc/salome/gui/GEOM/image126.jpg doc/salome/gui/GEOM/image127.jpg doc/salome/gui/GEOM/image128.jpg doc/salome/gui/GEOM/image129.jpg doc/salome/gui/GEOM/image13.gif doc/salome/gui/GEOM/image13.jpg doc/salome/gui/GEOM/image130.jpg doc/salome/gui/GEOM/image131.jpg doc/salome/gui/GEOM/image132.jpg doc/salome/gui/GEOM/image133.jpg doc/salome/gui/GEOM/image134.jpg doc/salome/gui/GEOM/image135.jpg doc/salome/gui/GEOM/image136.jpg doc/salome/gui/GEOM/image137.jpg doc/salome/gui/GEOM/image138.jpg doc/salome/gui/GEOM/image139.jpg doc/salome/gui/GEOM/image14.gif doc/salome/gui/GEOM/image14.jpg doc/salome/gui/GEOM/image140.jpg doc/salome/gui/GEOM/image141.jpg doc/salome/gui/GEOM/image142.jpg doc/salome/gui/GEOM/image144.jpg doc/salome/gui/GEOM/image145.jpg doc/salome/gui/GEOM/image146.jpg doc/salome/gui/GEOM/image147.jpg doc/salome/gui/GEOM/image149.jpg doc/salome/gui/GEOM/image15.gif doc/salome/gui/GEOM/image15.jpg doc/salome/gui/GEOM/image150.jpg doc/salome/gui/GEOM/image151.jpg doc/salome/gui/GEOM/image152.jpg doc/salome/gui/GEOM/image154.jpg doc/salome/gui/GEOM/image156.jpg doc/salome/gui/GEOM/image158.jpg doc/salome/gui/GEOM/image16.gif doc/salome/gui/GEOM/image16.jpg doc/salome/gui/GEOM/image160.jpg doc/salome/gui/GEOM/image161.jpg doc/salome/gui/GEOM/image163.jpg doc/salome/gui/GEOM/image164.jpg doc/salome/gui/GEOM/image165.jpg doc/salome/gui/GEOM/image166.jpg doc/salome/gui/GEOM/image167.jpg doc/salome/gui/GEOM/image168.jpg doc/salome/gui/GEOM/image169.jpg doc/salome/gui/GEOM/image17.gif doc/salome/gui/GEOM/image17.jpg doc/salome/gui/GEOM/image170.jpg doc/salome/gui/GEOM/image171.jpg doc/salome/gui/GEOM/image172.jpg doc/salome/gui/GEOM/image173.jpg doc/salome/gui/GEOM/image175.jpg doc/salome/gui/GEOM/image176.jpg doc/salome/gui/GEOM/image179.jpg doc/salome/gui/GEOM/image18.jpg doc/salome/gui/GEOM/image180.jpg doc/salome/gui/GEOM/image181.jpg doc/salome/gui/GEOM/image182.jpg doc/salome/gui/GEOM/image183.jpg doc/salome/gui/GEOM/image184.jpg doc/salome/gui/GEOM/image185.jpg doc/salome/gui/GEOM/image186.jpg doc/salome/gui/GEOM/image187.jpg doc/salome/gui/GEOM/image188.jpg doc/salome/gui/GEOM/image189.jpg doc/salome/gui/GEOM/image19.gif doc/salome/gui/GEOM/image19.jpg doc/salome/gui/GEOM/image190.jpg doc/salome/gui/GEOM/image191.jpg doc/salome/gui/GEOM/image192.jpg doc/salome/gui/GEOM/image193.jpg doc/salome/gui/GEOM/image194.jpg doc/salome/gui/GEOM/image196.jpg doc/salome/gui/GEOM/image197.jpg doc/salome/gui/GEOM/image199.jpg doc/salome/gui/GEOM/image2.gif doc/salome/gui/GEOM/image20.gif doc/salome/gui/GEOM/image20.jpg doc/salome/gui/GEOM/image200.jpg doc/salome/gui/GEOM/image201.jpg doc/salome/gui/GEOM/image202.jpg doc/salome/gui/GEOM/image203.jpg doc/salome/gui/GEOM/image204.jpg doc/salome/gui/GEOM/image205.jpg doc/salome/gui/GEOM/image206.jpg doc/salome/gui/GEOM/image207.jpg doc/salome/gui/GEOM/image208.jpg doc/salome/gui/GEOM/image209.jpg doc/salome/gui/GEOM/image21.gif doc/salome/gui/GEOM/image21.jpg doc/salome/gui/GEOM/image210.jpg doc/salome/gui/GEOM/image211.jpg doc/salome/gui/GEOM/image212.jpg doc/salome/gui/GEOM/image213.jpg doc/salome/gui/GEOM/image214.jpg doc/salome/gui/GEOM/image215.jpg doc/salome/gui/GEOM/image216.jpg doc/salome/gui/GEOM/image217.jpg doc/salome/gui/GEOM/image218.jpg doc/salome/gui/GEOM/image219.jpg doc/salome/gui/GEOM/image22.gif doc/salome/gui/GEOM/image22.jpg doc/salome/gui/GEOM/image220.jpg doc/salome/gui/GEOM/image221.jpg doc/salome/gui/GEOM/image222.jpg doc/salome/gui/GEOM/image223.jpg doc/salome/gui/GEOM/image224.jpg doc/salome/gui/GEOM/image225.jpg doc/salome/gui/GEOM/image226.jpg doc/salome/gui/GEOM/image227.jpg doc/salome/gui/GEOM/image228.jpg doc/salome/gui/GEOM/image229.jpg doc/salome/gui/GEOM/image23.gif doc/salome/gui/GEOM/image23.jpg doc/salome/gui/GEOM/image230.jpg doc/salome/gui/GEOM/image231.jpg doc/salome/gui/GEOM/image233.jpg doc/salome/gui/GEOM/image234.jpg doc/salome/gui/GEOM/image235.jpg doc/salome/gui/GEOM/image236.jpg doc/salome/gui/GEOM/image237.jpg doc/salome/gui/GEOM/image238.jpg doc/salome/gui/GEOM/image239.jpg doc/salome/gui/GEOM/image24.gif doc/salome/gui/GEOM/image24.jpg doc/salome/gui/GEOM/image240.jpg doc/salome/gui/GEOM/image241.jpg doc/salome/gui/GEOM/image242.jpg doc/salome/gui/GEOM/image243.jpg doc/salome/gui/GEOM/image244.jpg doc/salome/gui/GEOM/image245.jpg doc/salome/gui/GEOM/image246.jpg doc/salome/gui/GEOM/image247.jpg doc/salome/gui/GEOM/image248.jpg doc/salome/gui/GEOM/image249.jpg doc/salome/gui/GEOM/image25.gif doc/salome/gui/GEOM/image250.jpg doc/salome/gui/GEOM/image251.jpg doc/salome/gui/GEOM/image252.jpg doc/salome/gui/GEOM/image253.jpg doc/salome/gui/GEOM/image254.jpg doc/salome/gui/GEOM/image255.jpg doc/salome/gui/GEOM/image256.jpg doc/salome/gui/GEOM/image257.jpg doc/salome/gui/GEOM/image258.jpg doc/salome/gui/GEOM/image259.jpg doc/salome/gui/GEOM/image26.jpg doc/salome/gui/GEOM/image260.jpg doc/salome/gui/GEOM/image261.jpg doc/salome/gui/GEOM/image262.jpg doc/salome/gui/GEOM/image263.jpg doc/salome/gui/GEOM/image264.jpg doc/salome/gui/GEOM/image265.jpg doc/salome/gui/GEOM/image266.jpg doc/salome/gui/GEOM/image267.jpg doc/salome/gui/GEOM/image268.jpg doc/salome/gui/GEOM/image269.jpg doc/salome/gui/GEOM/image27.jpg doc/salome/gui/GEOM/image270.jpg doc/salome/gui/GEOM/image271.jpg doc/salome/gui/GEOM/image272.jpg doc/salome/gui/GEOM/image273.jpg doc/salome/gui/GEOM/image274.jpg doc/salome/gui/GEOM/image275.jpg doc/salome/gui/GEOM/image276.jpg doc/salome/gui/GEOM/image277.jpg doc/salome/gui/GEOM/image278.jpg doc/salome/gui/GEOM/image279.jpg doc/salome/gui/GEOM/image28.jpg doc/salome/gui/GEOM/image280.jpg doc/salome/gui/GEOM/image281.jpg doc/salome/gui/GEOM/image282.jpg doc/salome/gui/GEOM/image283.jpg doc/salome/gui/GEOM/image284.jpg doc/salome/gui/GEOM/image285.jpg doc/salome/gui/GEOM/image286.jpg doc/salome/gui/GEOM/image287.jpg doc/salome/gui/GEOM/image288.jpg doc/salome/gui/GEOM/image289.jpg doc/salome/gui/GEOM/image29.gif doc/salome/gui/GEOM/image29.jpg doc/salome/gui/GEOM/image290.jpg doc/salome/gui/GEOM/image291.jpg doc/salome/gui/GEOM/image292.jpg doc/salome/gui/GEOM/image293.jpg doc/salome/gui/GEOM/image294.jpg doc/salome/gui/GEOM/image295.jpg doc/salome/gui/GEOM/image296.jpg doc/salome/gui/GEOM/image297.jpg doc/salome/gui/GEOM/image298.jpg doc/salome/gui/GEOM/image299.jpg doc/salome/gui/GEOM/image3.jpg doc/salome/gui/GEOM/image300.jpg doc/salome/gui/GEOM/image32.gif doc/salome/gui/GEOM/image35.gif doc/salome/gui/GEOM/image37.gif doc/salome/gui/GEOM/image4.gif doc/salome/gui/GEOM/image41.gif doc/salome/gui/GEOM/image42.gif doc/salome/gui/GEOM/image44.gif doc/salome/gui/GEOM/image49.gif doc/salome/gui/GEOM/image5.gif doc/salome/gui/GEOM/image5.jpg doc/salome/gui/GEOM/image51.gif doc/salome/gui/GEOM/image51.jpg doc/salome/gui/GEOM/image52.gif doc/salome/gui/GEOM/image52.jpg doc/salome/gui/GEOM/image53.gif doc/salome/gui/GEOM/image53.jpg doc/salome/gui/GEOM/image54.jpg doc/salome/gui/GEOM/image55.jpg doc/salome/gui/GEOM/image56.gif doc/salome/gui/GEOM/image56.jpg doc/salome/gui/GEOM/image57.gif doc/salome/gui/GEOM/image57.jpg doc/salome/gui/GEOM/image58.jpg doc/salome/gui/GEOM/image59.gif doc/salome/gui/GEOM/image59.jpg doc/salome/gui/GEOM/image6.gif doc/salome/gui/GEOM/image60.jpg doc/salome/gui/GEOM/image61.gif doc/salome/gui/GEOM/image61.jpg doc/salome/gui/GEOM/image62.jpg doc/salome/gui/GEOM/image63.jpg doc/salome/gui/GEOM/image64.gif doc/salome/gui/GEOM/image65.jpg doc/salome/gui/GEOM/image66.jpg doc/salome/gui/GEOM/image67.jpg doc/salome/gui/GEOM/image68.jpg doc/salome/gui/GEOM/image69.jpg doc/salome/gui/GEOM/image7.gif doc/salome/gui/GEOM/image7.jpg doc/salome/gui/GEOM/image70.jpg doc/salome/gui/GEOM/image71.jpg doc/salome/gui/GEOM/image72.jpg doc/salome/gui/GEOM/image73.jpg doc/salome/gui/GEOM/image74.jpg doc/salome/gui/GEOM/image75.jpg doc/salome/gui/GEOM/image76.jpg doc/salome/gui/GEOM/image77.jpg doc/salome/gui/GEOM/image78.jpg doc/salome/gui/GEOM/image79.jpg doc/salome/gui/GEOM/image8.gif doc/salome/gui/GEOM/image8.jpg doc/salome/gui/GEOM/image80.jpg doc/salome/gui/GEOM/image81.jpg doc/salome/gui/GEOM/image82.jpg doc/salome/gui/GEOM/image83.jpg doc/salome/gui/GEOM/image84.jpg doc/salome/gui/GEOM/image85.jpg doc/salome/gui/GEOM/image86.jpg doc/salome/gui/GEOM/image87.jpg doc/salome/gui/GEOM/image88.jpg doc/salome/gui/GEOM/image89.jpg doc/salome/gui/GEOM/image9.gif doc/salome/gui/GEOM/image9.jpg doc/salome/gui/GEOM/image90.jpg doc/salome/gui/GEOM/image91.jpg doc/salome/gui/GEOM/image92.jpg doc/salome/gui/GEOM/image93.jpg doc/salome/gui/GEOM/image94.jpg doc/salome/gui/GEOM/image95.jpg doc/salome/gui/GEOM/image96.jpg doc/salome/gui/GEOM/image97.jpg doc/salome/gui/GEOM/image98.jpg doc/salome/gui/GEOM/image99.jpg doc/salome/gui/GEOM/newentity_blocks.htm doc/salome/gui/GEOM/salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image13.gif doc/salome/gui/GEOM/salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image14.gif doc/salome/gui/GEOM/salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image15.gif doc/salome/gui/GEOM/salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image16.gif doc/salome/gui/GEOM/salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image17.gif doc/salome/gui/GEOM/salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image18.gif doc/salome/gui/GEOM/salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image19.gif doc/salome/gui/GEOM/sketcher.htm doc/salome/gui/GEOM/webhelp.cab doc/salome/gui/GEOM/webhelp.jar doc/salome/gui/GEOM/whcsh_home.htm doc/salome/gui/GEOM/whcshdata.htm doc/salome/gui/GEOM/whdata/whftdata.js doc/salome/gui/GEOM/whdata/whftdata0.htm doc/salome/gui/GEOM/whdata/whftdata0.xml doc/salome/gui/GEOM/whdata/whfts.htm doc/salome/gui/GEOM/whdata/whfts.js doc/salome/gui/GEOM/whdata/whfts.xml doc/salome/gui/GEOM/whdata/whfwdata.js doc/salome/gui/GEOM/whdata/whfwdata0.htm doc/salome/gui/GEOM/whdata/whfwdata0.xml doc/salome/gui/GEOM/whdata/whfwdata1.htm doc/salome/gui/GEOM/whdata/whfwdata2.htm doc/salome/gui/GEOM/whdata/whgdata.js doc/salome/gui/GEOM/whdata/whgdata0.htm doc/salome/gui/GEOM/whdata/whgdata0.xml doc/salome/gui/GEOM/whdata/whglo.htm doc/salome/gui/GEOM/whdata/whglo.js doc/salome/gui/GEOM/whdata/whglo.xml doc/salome/gui/GEOM/whdata/whidata.js doc/salome/gui/GEOM/whdata/whidx.htm doc/salome/gui/GEOM/whdata/whidx.js doc/salome/gui/GEOM/whdata/whidx.xml doc/salome/gui/GEOM/whdata/whtdata.js doc/salome/gui/GEOM/whdata/whtdata0.htm doc/salome/gui/GEOM/whdata/whtdata0.xml doc/salome/gui/GEOM/whdata/whtoc.htm doc/salome/gui/GEOM/whdata/whtoc.js doc/salome/gui/GEOM/whdata/whtoc.xml doc/salome/gui/GEOM/whestart.ico doc/salome/gui/GEOM/whfbody.htm doc/salome/gui/GEOM/whfdhtml.htm doc/salome/gui/GEOM/whfform.htm doc/salome/gui/GEOM/whfhost.js doc/salome/gui/GEOM/whform.js doc/salome/gui/GEOM/whframes.js doc/salome/gui/GEOM/whgbody.htm doc/salome/gui/GEOM/whgdata/whexpbar.gif doc/salome/gui/GEOM/whgdata/whlstf0.htm doc/salome/gui/GEOM/whgdata/whlstf1.htm doc/salome/gui/GEOM/whgdata/whlstf2.htm doc/salome/gui/GEOM/whgdata/whlstf3.htm doc/salome/gui/GEOM/whgdata/whlstf4.htm doc/salome/gui/GEOM/whgdata/whlstf5.htm doc/salome/gui/GEOM/whgdata/whlstfl0.htm doc/salome/gui/GEOM/whgdata/whlstfl1.htm doc/salome/gui/GEOM/whgdata/whlstfl10.htm doc/salome/gui/GEOM/whgdata/whlstfl11.htm doc/salome/gui/GEOM/whgdata/whlstfl12.htm doc/salome/gui/GEOM/whgdata/whlstfl13.htm doc/salome/gui/GEOM/whgdata/whlstfl14.htm doc/salome/gui/GEOM/whgdata/whlstfl15.htm doc/salome/gui/GEOM/whgdata/whlstfl16.htm doc/salome/gui/GEOM/whgdata/whlstfl17.htm doc/salome/gui/GEOM/whgdata/whlstfl18.htm doc/salome/gui/GEOM/whgdata/whlstfl19.htm doc/salome/gui/GEOM/whgdata/whlstfl2.htm doc/salome/gui/GEOM/whgdata/whlstfl20.htm doc/salome/gui/GEOM/whgdata/whlstfl21.htm doc/salome/gui/GEOM/whgdata/whlstfl22.htm doc/salome/gui/GEOM/whgdata/whlstfl23.htm doc/salome/gui/GEOM/whgdata/whlstfl3.htm doc/salome/gui/GEOM/whgdata/whlstfl4.htm doc/salome/gui/GEOM/whgdata/whlstfl5.htm doc/salome/gui/GEOM/whgdata/whlstfl6.htm doc/salome/gui/GEOM/whgdata/whlstfl7.htm doc/salome/gui/GEOM/whgdata/whlstfl8.htm doc/salome/gui/GEOM/whgdata/whlstfl9.htm doc/salome/gui/GEOM/whgdata/whlstg0.htm doc/salome/gui/GEOM/whgdata/whlsti0.htm doc/salome/gui/GEOM/whgdata/whlstt0.htm doc/salome/gui/GEOM/whgdata/whlstt1.htm doc/salome/gui/GEOM/whgdata/whlstt2.htm doc/salome/gui/GEOM/whgdata/whlstt3.htm doc/salome/gui/GEOM/whgdata/whlstt4.htm doc/salome/gui/GEOM/whgdata/whnvf30.htm doc/salome/gui/GEOM/whgdata/whnvf31.htm doc/salome/gui/GEOM/whgdata/whnvf32.htm doc/salome/gui/GEOM/whgdata/whnvf33.htm doc/salome/gui/GEOM/whgdata/whnvl31.htm doc/salome/gui/GEOM/whgdata/whnvl32.htm doc/salome/gui/GEOM/whgdata/whnvl33.htm doc/salome/gui/GEOM/whgdata/whnvp30.htm doc/salome/gui/GEOM/whgdata/whnvp31.htm doc/salome/gui/GEOM/whgdata/whnvp32.htm doc/salome/gui/GEOM/whgdata/whnvp33.htm doc/salome/gui/GEOM/whgdata/whnvt30.htm doc/salome/gui/GEOM/whgdata/whnvt31.htm doc/salome/gui/GEOM/whgdata/whnvt32.htm doc/salome/gui/GEOM/whgdata/whnvt33.htm doc/salome/gui/GEOM/whgdef.htm doc/salome/gui/GEOM/whgdhtml.htm doc/salome/gui/GEOM/whghost.js doc/salome/gui/GEOM/whhost.js doc/salome/gui/GEOM/whibody.htm doc/salome/gui/GEOM/whidhtml.htm doc/salome/gui/GEOM/whiform.htm doc/salome/gui/GEOM/whihost.js doc/salome/gui/GEOM/whlang.js doc/salome/gui/GEOM/whmozemu.js doc/salome/gui/GEOM/whmsg.js doc/salome/gui/GEOM/whnjs.htm doc/salome/gui/GEOM/whphost.js doc/salome/gui/GEOM/whproj.htm doc/salome/gui/GEOM/whproj.js doc/salome/gui/GEOM/whproj.xml doc/salome/gui/GEOM/whproxy.js doc/salome/gui/GEOM/whres.xml doc/salome/gui/GEOM/whrstart.ico doc/salome/gui/GEOM/whskin_banner.htm doc/salome/gui/GEOM/whskin_blank.htm doc/salome/gui/GEOM/whskin_frmset01.htm doc/salome/gui/GEOM/whskin_frmset010.htm doc/salome/gui/GEOM/whskin_homepage.htm doc/salome/gui/GEOM/whskin_info.htm doc/salome/gui/GEOM/whskin_mbars.htm doc/salome/gui/GEOM/whskin_papplet.htm doc/salome/gui/GEOM/whskin_pdhtml.htm doc/salome/gui/GEOM/whskin_pickup.htm doc/salome/gui/GEOM/whskin_plist.htm doc/salome/gui/GEOM/whskin_tbars.htm doc/salome/gui/GEOM/whskin_tw.htm doc/salome/gui/GEOM/whst_topics.xml doc/salome/gui/GEOM/whstart.ico doc/salome/gui/GEOM/whstart.js doc/salome/gui/GEOM/whstub.js doc/salome/gui/GEOM/wht_abge.jpg doc/salome/gui/GEOM/wht_abgi.jpg doc/salome/gui/GEOM/wht_abgw.jpg doc/salome/gui/GEOM/wht_abte.jpg doc/salome/gui/GEOM/wht_abti.jpg doc/salome/gui/GEOM/wht_abtw.jpg doc/salome/gui/GEOM/wht_fts_h.gif doc/salome/gui/GEOM/wht_fts_n.gif doc/salome/gui/GEOM/wht_glo_h.gif doc/salome/gui/GEOM/wht_glo_n.gif doc/salome/gui/GEOM/wht_go.gif doc/salome/gui/GEOM/wht_hide.gif doc/salome/gui/GEOM/wht_idx_h.gif doc/salome/gui/GEOM/wht_idx_n.gif doc/salome/gui/GEOM/wht_logo1.gif doc/salome/gui/GEOM/wht_logo2.gif doc/salome/gui/GEOM/wht_next.gif doc/salome/gui/GEOM/wht_next_g.gif doc/salome/gui/GEOM/wht_prev.gif doc/salome/gui/GEOM/wht_prev_g.gif doc/salome/gui/GEOM/wht_spac.gif doc/salome/gui/GEOM/wht_sync.gif doc/salome/gui/GEOM/wht_tab0.gif doc/salome/gui/GEOM/wht_tab1.gif doc/salome/gui/GEOM/wht_tab2.gif doc/salome/gui/GEOM/wht_tab3.gif doc/salome/gui/GEOM/wht_tab4.gif doc/salome/gui/GEOM/wht_tab5.gif doc/salome/gui/GEOM/wht_tab6.gif doc/salome/gui/GEOM/wht_tab7.gif doc/salome/gui/GEOM/wht_tab8.gif doc/salome/gui/GEOM/wht_toc1.gif doc/salome/gui/GEOM/wht_toc2.gif doc/salome/gui/GEOM/wht_toc3.gif doc/salome/gui/GEOM/wht_toc4.gif doc/salome/gui/GEOM/wht_toc_h.gif doc/salome/gui/GEOM/wht_toc_n.gif doc/salome/gui/GEOM/wht_ws.gif doc/salome/gui/GEOM/wht_ws_g.gif doc/salome/gui/GEOM/whtbar.js doc/salome/gui/GEOM/whtdhtml.htm doc/salome/gui/GEOM/whthost.js doc/salome/gui/GEOM/whtopic.js doc/salome/gui/GEOM/whutils.js doc/salome/gui/GEOM/whver.js doc/salome/gui/GEOM/whxdata/whftdata0.xml doc/salome/gui/GEOM/whxdata/whfts.xml doc/salome/gui/GEOM/whxdata/whfwdata0.xml doc/salome/gui/GEOM/whxdata/whfwdata1.xml doc/salome/gui/GEOM/whxdata/whfwdata2.xml doc/salome/gui/GEOM/whxdata/whgdata0.xml doc/salome/gui/GEOM/whxdata/whglo.xml doc/salome/gui/GEOM/whxdata/whidx.xml doc/salome/gui/GEOM/whxdata/whtdata0.xml doc/salome/gui/GEOM/whxdata/whtoc.xml doc/salome/gui/GEOM/working_with_groups.htm doc/salome/gui/Makefile.in doc/salome/tui/GEOM/HTML/GEOM_Gen.html doc/salome/tui/GEOM/HTML/GEOM_Shape.html doc/salome/tui/GEOM/doxyfile doc/salome/tui/GEOM/doxyfile_py doc/salome/tui/GEOM/sources/Application-About.png doc/salome/tui/GEOM/sources/Application-About1.jpg doc/salome/tui/GEOM/sources/application.gif doc/salome/tui/GEOM/sources/application.jpg doc/salome/tui/GEOM/sources/bg_salome.gif doc/salome/tui/GEOM/sources/logocorp.gif doc/salome/tui/GEOM/sources/myheader.html doc/salome/tui/GEOM/sources/myheader_py2.html doc/salome/tui/GEOM/sources/occ.gif doc/salome/tui/GEOM/sources/static/doxygen.css doc/salome/tui/GEOM/sources/static/page2.html doc/salome/tui/GEOM/sources/static/tree.js doc/salome/tui/GEOM/sources/static/treeview.js doc/salome/tui/Makefile.in idl/GEOM_Gen.idl idl/GEOM_Superv.idl idl/Makefile.in resources/GEOM.config resources/GEOMCatalog.xml resources/GEOMDS_Resources resources/GEOM_en.xml resources/GEOM_fr.xml resources/ImportExport resources/ModuleGeom.png resources/ShHealing resources/arc.png resources/archimede.png resources/axisinertia.png resources/basicproperties.png resources/bezier.png resources/block_2f.png resources/block_6f.png resources/block_face_2e.png resources/block_face_4e.png resources/block_face_4v.png resources/block_multitrsf_double.png resources/block_multitrsf_simple.png resources/bounding.png resources/box.png resources/box2points.png resources/boxdxyz.png resources/build_compound.png resources/build_edge.png resources/build_face.png resources/build_shell.png resources/build_solid.png resources/build_wire.png resources/centergravity.png resources/chamfer.png resources/chamferall.png resources/chamferedge.png resources/chamferface.png resources/check.png resources/check_blocks_compound.png resources/circle.png resources/circle3points.png resources/circlepointvector.png resources/closecontour.png resources/common.png resources/cone.png resources/conedxyz.png resources/conepointvector.png resources/coordsys.png resources/cut.png resources/cylinder.png resources/cylinderdxyz.png resources/cylinderpointvector.png resources/delete.png resources/display.png resources/displayall.png resources/displayonly.png resources/ellipse.png resources/ellipsepointvector.png resources/erase.png resources/eraseall.png resources/fillet.png resources/filletall.png resources/filletedge.png resources/filletface.png resources/filling.png resources/free_bound.png resources/free_faces.png resources/fuse.png resources/geometry.png resources/glue.png resources/group_edit.png resources/group_new.png resources/interpol.png resources/line.png resources/line2points.png resources/lineedge.png resources/linepointvector.png resources/marker.png resources/marker2.png resources/marker3.png resources/mindist.png resources/mirrorAxe.png resources/mirrorPlane.png resources/mirrorPoint.png resources/multirotation.png resources/multirotationdouble.png resources/multirotationsimple.png resources/multitranslation.png resources/multitranslationdouble.png resources/multitranslationsimple.png resources/offset.png resources/orientation.png resources/partition.png resources/partitionkeep.png resources/partitionplane.png resources/pipe.png resources/plane.png resources/plane3points.png resources/planeWorking.png resources/planedxyz.png resources/planeface.png resources/planepointvector.png resources/planeworkingface.png resources/planeworkingorigin.png resources/planeworkingvector.png resources/point2.png resources/point3.png resources/point_coord.png resources/pointonedge.png resources/polyline.png resources/position.png resources/position2.png resources/prism.png resources/propagate.png resources/redo.png resources/revol.png resources/rotate.png resources/scale.png resources/section.png resources/select1.png resources/sewing.png resources/shading.png resources/shapeprocess.png resources/sketch.png resources/sphere.png resources/spheredxyz.png resources/spherepoint.png resources/spline.png resources/subblock.png resources/subshape.png resources/suppressintwires.png resources/supressHolesOnFaceShell.png resources/supressface.png resources/supresshole.png resources/tolerance.png resources/torus.png resources/torusdxyz.png resources/toruspointvector.png resources/translation.png resources/translationDxyz.png resources/translationPoints.png resources/translationVector.png resources/tree_block.png resources/tree_compound.png resources/tree_compsolid.png resources/tree_edge.png resources/tree_face.png resources/tree_group_edge.png resources/tree_group_face.png resources/tree_group_solid.png resources/tree_group_vertex.png resources/tree_lcs.png resources/tree_shape.png resources/tree_shell.png resources/tree_solid.png resources/tree_vertex.png resources/tree_wire.png resources/undo.png resources/vector.png resources/vector2points.png resources/vectordxyz.png resources/whatis.png src/ARCHIMEDE/Archimede_VolumeSection.cxx src/ARCHIMEDE/Archimede_VolumeSection.hxx src/ARCHIMEDE/Makefile.in src/BREPExport/BREPExport.cxx src/BREPExport/Makefile.in src/BREPImport/BREPImport.cxx src/BREPImport/Makefile.in src/BasicGUI/BasicGUI.cxx src/BasicGUI/BasicGUI.h src/BasicGUI/BasicGUI_ArcDlg.cxx src/BasicGUI/BasicGUI_ArcDlg.h src/BasicGUI/BasicGUI_CircleDlg.cxx src/BasicGUI/BasicGUI_CircleDlg.h src/BasicGUI/BasicGUI_CurveDlg.cxx src/BasicGUI/BasicGUI_CurveDlg.h src/BasicGUI/BasicGUI_EllipseDlg.cxx src/BasicGUI/BasicGUI_EllipseDlg.h src/BasicGUI/BasicGUI_LineDlg.cxx src/BasicGUI/BasicGUI_LineDlg.h src/BasicGUI/BasicGUI_MarkerDlg.cxx src/BasicGUI/BasicGUI_MarkerDlg.h src/BasicGUI/BasicGUI_PlaneDlg.cxx src/BasicGUI/BasicGUI_PlaneDlg.h src/BasicGUI/BasicGUI_PointDlg.cxx src/BasicGUI/BasicGUI_PointDlg.h src/BasicGUI/BasicGUI_VectorDlg.cxx src/BasicGUI/BasicGUI_VectorDlg.h src/BasicGUI/BasicGUI_WorkingPlaneDlg.cxx src/BasicGUI/BasicGUI_WorkingPlaneDlg.h src/BasicGUI/Makefile.in src/BlocksGUI/BlocksGUI.cxx src/BlocksGUI/BlocksGUI.h src/BlocksGUI/BlocksGUI_BlockDlg.cxx src/BlocksGUI/BlocksGUI_BlockDlg.h src/BlocksGUI/BlocksGUI_ExplodeDlg.cxx src/BlocksGUI/BlocksGUI_ExplodeDlg.h src/BlocksGUI/BlocksGUI_PropagateDlg.cxx src/BlocksGUI/BlocksGUI_PropagateDlg.h src/BlocksGUI/BlocksGUI_QuadFaceDlg.cxx src/BlocksGUI/BlocksGUI_QuadFaceDlg.h src/BlocksGUI/BlocksGUI_TrsfDlg.cxx src/BlocksGUI/BlocksGUI_TrsfDlg.h src/BlocksGUI/Makefile.in src/BooleanGUI/BooleanGUI.cxx src/BooleanGUI/BooleanGUI.h src/BooleanGUI/BooleanGUI_Dialog.cxx src/BooleanGUI/BooleanGUI_Dialog.h src/BooleanGUI/Makefile.in src/BuildGUI/BuildGUI.cxx src/BuildGUI/BuildGUI.h src/BuildGUI/BuildGUI_CompoundDlg.cxx src/BuildGUI/BuildGUI_CompoundDlg.h src/BuildGUI/BuildGUI_EdgeDlg.cxx src/BuildGUI/BuildGUI_EdgeDlg.h src/BuildGUI/BuildGUI_FaceDlg.cxx src/BuildGUI/BuildGUI_FaceDlg.h src/BuildGUI/BuildGUI_ShellDlg.cxx src/BuildGUI/BuildGUI_ShellDlg.h src/BuildGUI/BuildGUI_SolidDlg.cxx src/BuildGUI/BuildGUI_SolidDlg.h src/BuildGUI/BuildGUI_WireDlg.cxx src/BuildGUI/BuildGUI_WireDlg.h src/BuildGUI/Makefile.in src/DisplayGUI/DisplayGUI.h src/DisplayGUI/Makefile.in src/DlgRef/DlgRef_1List1Spin1Btn_QTD.cxx src/DlgRef/DlgRef_1List1Spin1Btn_QTD.h src/DlgRef/DlgRef_1Sel1Check1List_QTD.cxx src/DlgRef/DlgRef_1Sel1Check1List_QTD.h src/DlgRef/DlgRef_1Sel1Check_QTD.cxx src/DlgRef/DlgRef_1Sel1Check_QTD.h src/DlgRef/DlgRef_1Sel1Spin.cxx src/DlgRef/DlgRef_1Sel1Spin.h src/DlgRef/DlgRef_1Sel1Spin1Check.cxx src/DlgRef/DlgRef_1Sel1Spin1Check.h src/DlgRef/DlgRef_1Sel1Spin1Check_QTD.cxx src/DlgRef/DlgRef_1Sel1Spin1Check_QTD.h src/DlgRef/DlgRef_1Sel1Spin_QTD.cxx src/DlgRef/DlgRef_1Sel1Spin_QTD.h src/DlgRef/DlgRef_1Sel2Spin.cxx src/DlgRef/DlgRef_1Sel2Spin.h src/DlgRef/DlgRef_1Sel2Spin_QTD.cxx src/DlgRef/DlgRef_1Sel2Spin_QTD.h src/DlgRef/DlgRef_1Sel3Check_QTD.cxx src/DlgRef/DlgRef_1Sel3Check_QTD.h src/DlgRef/DlgRef_1Sel3Spin.cxx src/DlgRef/DlgRef_1Sel3Spin.h src/DlgRef/DlgRef_1Sel3Spin_QTD.cxx src/DlgRef/DlgRef_1Sel3Spin_QTD.h src/DlgRef/DlgRef_1Sel4Spin.cxx src/DlgRef/DlgRef_1Sel4Spin.h src/DlgRef/DlgRef_1Sel4Spin_QTD.cxx src/DlgRef/DlgRef_1Sel4Spin_QTD.h src/DlgRef/DlgRef_1Sel5Spin.cxx src/DlgRef/DlgRef_1Sel5Spin.h src/DlgRef/DlgRef_1Sel5Spin_QTD.cxx src/DlgRef/DlgRef_1Sel5Spin_QTD.h src/DlgRef/DlgRef_1Sel_Ext.h src/DlgRef/DlgRef_1Sel_QTD.cxx src/DlgRef/DlgRef_1Sel_QTD.h src/DlgRef/DlgRef_1Spin.cxx src/DlgRef/DlgRef_1Spin.h src/DlgRef/DlgRef_1Spin_QTD.cxx src/DlgRef/DlgRef_1Spin_QTD.h src/DlgRef/DlgRef_2Sel1Spin.cxx src/DlgRef/DlgRef_2Sel1Spin.h src/DlgRef/DlgRef_2Sel1Spin2Check.cxx src/DlgRef/DlgRef_2Sel1Spin2Check.h src/DlgRef/DlgRef_2Sel1Spin2Check_QTD.cxx src/DlgRef/DlgRef_2Sel1Spin2Check_QTD.h src/DlgRef/DlgRef_2Sel1Spin_QTD.cxx src/DlgRef/DlgRef_2Sel1Spin_QTD.h src/DlgRef/DlgRef_2Sel2Spin.cxx src/DlgRef/DlgRef_2Sel2Spin.h src/DlgRef/DlgRef_2Sel2Spin1Check.cxx src/DlgRef/DlgRef_2Sel2Spin1Check.h src/DlgRef/DlgRef_2Sel2Spin1Check_QTD.cxx src/DlgRef/DlgRef_2Sel2Spin1Check_QTD.h src/DlgRef/DlgRef_2Sel2Spin_QTD.cxx src/DlgRef/DlgRef_2Sel2Spin_QTD.h src/DlgRef/DlgRef_2Sel3Spin.cxx src/DlgRef/DlgRef_2Sel3Spin.h src/DlgRef/DlgRef_2Sel3Spin_QTD.cxx src/DlgRef/DlgRef_2Sel3Spin_QTD.h src/DlgRef/DlgRef_2Sel4Spin1Check.cxx src/DlgRef/DlgRef_2Sel4Spin1Check.h src/DlgRef/DlgRef_2Sel4Spin1Check_QTD.cxx src/DlgRef/DlgRef_2Sel4Spin1Check_QTD.h src/DlgRef/DlgRef_2Sel_QTD.cxx src/DlgRef/DlgRef_2Sel_QTD.h src/DlgRef/DlgRef_2Spin.cxx src/DlgRef/DlgRef_2Spin.h src/DlgRef/DlgRef_2Spin_QTD.cxx src/DlgRef/DlgRef_2Spin_QTD.h src/DlgRef/DlgRef_3Check_QTD.cxx src/DlgRef/DlgRef_3Check_QTD.h src/DlgRef/DlgRef_3Sel1Spin.cxx src/DlgRef/DlgRef_3Sel1Spin.h src/DlgRef/DlgRef_3Sel3Spin1Check.cxx src/DlgRef/DlgRef_3Sel3Spin1Check.h src/DlgRef/DlgRef_3Sel3Spin1Check_QTD.cxx src/DlgRef/DlgRef_3Sel3Spin1Check_QTD.h src/DlgRef/DlgRef_3Sel4Spin2Check.cxx src/DlgRef/DlgRef_3Sel4Spin2Check.h src/DlgRef/DlgRef_3Sel4Spin2Check_QTD.cxx src/DlgRef/DlgRef_3Sel4Spin2Check_QTD.h src/DlgRef/DlgRef_3Sel_QTD.cxx src/DlgRef/DlgRef_3Sel_QTD.h src/DlgRef/DlgRef_3Spin.cxx src/DlgRef/DlgRef_3Spin.h src/DlgRef/DlgRef_3Spin1Check.cxx src/DlgRef/DlgRef_3Spin1Check.h src/DlgRef/DlgRef_3Spin1Check_QTD.cxx src/DlgRef/DlgRef_3Spin1Check_QTD.h src/DlgRef/DlgRef_3Spin_QTD.cxx src/DlgRef/DlgRef_3Spin_QTD.h src/DlgRef/DlgRef_4Sel1List1Check_QTD.cxx src/DlgRef/DlgRef_4Sel1List1Check_QTD.h src/DlgRef/DlgRef_4Sel1List_QTD.cxx src/DlgRef/DlgRef_4Sel1List_QTD.h src/DlgRef/DlgRef_6Sel_QTD.cxx src/DlgRef/DlgRef_6Sel_QTD.h src/DlgRef/DlgRef_Skeleton_QTD.cxx src/DlgRef/DlgRef_Skeleton_QTD.h src/DlgRef/DlgRef_SpinBox.cxx src/DlgRef/DlgRef_SpinBox.h src/DlgRef/Makefile.in src/DlgRef/UIFiles/DlgRef_1List1Spin1Btn_QTD.ui src/DlgRef/UIFiles/DlgRef_1Sel1Check1List_QTD.ui src/DlgRef/UIFiles/DlgRef_1Sel1Check_QTD.ui src/DlgRef/UIFiles/DlgRef_1Sel1Spin1Check_QTD.ui src/DlgRef/UIFiles/DlgRef_1Sel1Spin_QTD.ui src/DlgRef/UIFiles/DlgRef_1Sel2Spin_QTD.ui src/DlgRef/UIFiles/DlgRef_1Sel3Check_QTD.ui src/DlgRef/UIFiles/DlgRef_1Sel3Spin_QTD.ui src/DlgRef/UIFiles/DlgRef_1Sel4Spin_QTD.ui src/DlgRef/UIFiles/DlgRef_1Sel5Spin_QTD.ui src/DlgRef/UIFiles/DlgRef_1Sel_QTD.ui src/DlgRef/UIFiles/DlgRef_1Spin_QTD.ui src/DlgRef/UIFiles/DlgRef_2Sel1Spin2Check_QTD.ui src/DlgRef/UIFiles/DlgRef_2Sel1Spin_QTD.ui src/DlgRef/UIFiles/DlgRef_2Sel2Spin1Check_QTD.ui src/DlgRef/UIFiles/DlgRef_2Sel2Spin_QTD.ui src/DlgRef/UIFiles/DlgRef_2Sel3Spin_QTD.ui src/DlgRef/UIFiles/DlgRef_2Sel4Spin1Check_QTD.ui src/DlgRef/UIFiles/DlgRef_2Sel_QTD.ui src/DlgRef/UIFiles/DlgRef_2Spin_QTD.ui src/DlgRef/UIFiles/DlgRef_3Check_QTD.ui src/DlgRef/UIFiles/DlgRef_3Sel3Spin1Check_QTD.ui src/DlgRef/UIFiles/DlgRef_3Sel4Spin2Check_QTD.ui src/DlgRef/UIFiles/DlgRef_3Sel_QTD.ui src/DlgRef/UIFiles/DlgRef_3Spin1Check_QTD.ui src/DlgRef/UIFiles/DlgRef_3Spin_QTD.ui src/DlgRef/UIFiles/DlgRef_4Sel1List_QTD.ui src/DlgRef/UIFiles/DlgRef_6Sel_QTD.ui src/DlgRef/UIFiles/DlgRef_Skeleton_QTD.ui src/DlgRef/UIFiles/ui_to_cxx src/EntityGUI/EntityGUI.cxx src/EntityGUI/EntityGUI.h src/EntityGUI/EntityGUI_1Sel_QTD.cxx src/EntityGUI/EntityGUI_1Sel_QTD.h src/EntityGUI/EntityGUI_1Spin.cxx src/EntityGUI/EntityGUI_1Spin.h src/EntityGUI/EntityGUI_1Spin_QTD.cxx src/EntityGUI/EntityGUI_1Spin_QTD.h src/EntityGUI/EntityGUI_2Spin.cxx src/EntityGUI/EntityGUI_2Spin.h src/EntityGUI/EntityGUI_2Spin_QTD.cxx src/EntityGUI/EntityGUI_2Spin_QTD.h src/EntityGUI/EntityGUI_3Spin.cxx src/EntityGUI/EntityGUI_3Spin.h src/EntityGUI/EntityGUI_3Spin_QTD.cxx src/EntityGUI/EntityGUI_3Spin_QTD.h src/EntityGUI/EntityGUI_4Spin.cxx src/EntityGUI/EntityGUI_4Spin.h src/EntityGUI/EntityGUI_4Spin_QTD.cxx src/EntityGUI/EntityGUI_4Spin_QTD.h src/EntityGUI/EntityGUI_Dir1_QTD.cxx src/EntityGUI/EntityGUI_Dir1_QTD.h src/EntityGUI/EntityGUI_Dir2_QTD.cxx src/EntityGUI/EntityGUI_Dir2_QTD.h src/EntityGUI/EntityGUI_Point_QTD.cxx src/EntityGUI/EntityGUI_Point_QTD.h src/EntityGUI/EntityGUI_Skeleton_QTD.cxx src/EntityGUI/EntityGUI_Skeleton_QTD.h src/EntityGUI/EntityGUI_SketcherDlg.cxx src/EntityGUI/EntityGUI_SketcherDlg.h src/EntityGUI/EntityGUI_SubShapeDlg.cxx src/EntityGUI/EntityGUI_SubShapeDlg.h src/EntityGUI/Makefile.in src/EntityGUI/UIFiles/EntityGUI_1Sel_QTD.ui src/EntityGUI/UIFiles/EntityGUI_1Spin_QTD.ui src/EntityGUI/UIFiles/EntityGUI_2Spin_QTD.ui src/EntityGUI/UIFiles/EntityGUI_3Spin_QTD.ui src/EntityGUI/UIFiles/EntityGUI_4Spin_QTD.ui src/EntityGUI/UIFiles/EntityGUI_Dir1_QTD.ui src/EntityGUI/UIFiles/EntityGUI_Dir2_QTD.ui src/EntityGUI/UIFiles/EntityGUI_Point_QTD.ui src/EntityGUI/UIFiles/EntityGUI_Skeleton_QTD.ui src/EntityGUI/UIFiles/ui_to_cxx src/GEOM/GEOM_Application.cxx src/GEOM/GEOM_Application.hxx src/GEOM/GEOM_Application.ixx src/GEOM/GEOM_Application.jxx src/GEOM/GEOM_DataMapIteratorOfDataMapOfAsciiStringTransient.hxx src/GEOM/GEOM_DataMapIteratorOfDataMapOfAsciiStringTransient_0.cxx src/GEOM/GEOM_DataMapNodeOfDataMapOfAsciiStringTransient.hxx src/GEOM/GEOM_DataMapNodeOfDataMapOfAsciiStringTransient_0.cxx src/GEOM/GEOM_DataMapOfAsciiStringTransient.hxx src/GEOM/GEOM_DataMapOfAsciiStringTransient_0.cxx src/GEOM/GEOM_Engine.cxx src/GEOM/GEOM_Engine.hxx src/GEOM/GEOM_Function.cxx src/GEOM/GEOM_Function.hxx src/GEOM/GEOM_Gen_i.cc src/GEOM/GEOM_IOperations.cxx src/GEOM/GEOM_IOperations.hxx src/GEOM/GEOM_ISubShape.hxx src/GEOM/GEOM_Object.cxx src/GEOM/GEOM_Object.hxx src/GEOM/GEOM_PythonDump.cxx src/GEOM/GEOM_PythonDump.hxx src/GEOM/GEOM_Solver.cxx src/GEOM/GEOM_Solver.hxx src/GEOM/GEOM_SubShapeDriver.cxx src/GEOM/GEOM_SubShapeDriver.hxx src/GEOM/Handle_GEOM_Application.hxx src/GEOM/Handle_GEOM_DataMapNodeOfDataMapOfAsciiStringTransient.hxx src/GEOM/Makefile.in src/GEOM/geom.cxx src/GEOMAlgo/BlockFix.cdl src/GEOMAlgo/BlockFix.cxx src/GEOMAlgo/BlockFix.hxx src/GEOMAlgo/BlockFix.ixx src/GEOMAlgo/BlockFix.jxx src/GEOMAlgo/BlockFix_BlockFixAPI.cdl src/GEOMAlgo/BlockFix_BlockFixAPI.cxx src/GEOMAlgo/BlockFix_BlockFixAPI.hxx src/GEOMAlgo/BlockFix_BlockFixAPI.ixx src/GEOMAlgo/BlockFix_BlockFixAPI.jxx src/GEOMAlgo/BlockFix_BlockFixAPI.lxx src/GEOMAlgo/BlockFix_CheckTool.cdl src/GEOMAlgo/BlockFix_CheckTool.cxx src/GEOMAlgo/BlockFix_CheckTool.hxx src/GEOMAlgo/BlockFix_CheckTool.ixx src/GEOMAlgo/BlockFix_CheckTool.jxx src/GEOMAlgo/BlockFix_PeriodicSurfaceModifier.cdl src/GEOMAlgo/BlockFix_PeriodicSurfaceModifier.cxx src/GEOMAlgo/BlockFix_PeriodicSurfaceModifier.hxx src/GEOMAlgo/BlockFix_PeriodicSurfaceModifier.ixx src/GEOMAlgo/BlockFix_PeriodicSurfaceModifier.jxx src/GEOMAlgo/BlockFix_SphereSpaceModifier.cdl src/GEOMAlgo/BlockFix_SphereSpaceModifier.cxx src/GEOMAlgo/BlockFix_SphereSpaceModifier.hxx src/GEOMAlgo/BlockFix_SphereSpaceModifier.ixx src/GEOMAlgo/BlockFix_SphereSpaceModifier.jxx src/GEOMAlgo/BlockFix_UnionEdges.cdl src/GEOMAlgo/BlockFix_UnionEdges.cxx src/GEOMAlgo/BlockFix_UnionEdges.hxx src/GEOMAlgo/BlockFix_UnionEdges.ixx src/GEOMAlgo/BlockFix_UnionEdges.jxx src/GEOMAlgo/BlockFix_UnionFaces.cdl src/GEOMAlgo/BlockFix_UnionFaces.cxx src/GEOMAlgo/BlockFix_UnionFaces.hxx src/GEOMAlgo/BlockFix_UnionFaces.ixx src/GEOMAlgo/BlockFix_UnionFaces.jxx src/GEOMAlgo/GEOMAlgo.cdl src/GEOMAlgo/GEOMAlgo_Algo.cdl src/GEOMAlgo/GEOMAlgo_Algo.cxx src/GEOMAlgo/GEOMAlgo_Algo.hxx src/GEOMAlgo/GEOMAlgo_Algo.ixx src/GEOMAlgo/GEOMAlgo_Algo.jxx src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.cdl src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.cxx src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.hxx src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.ixx src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.jxx src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger.hxx src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger_0.cxx src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_0.cxx src/GEOMAlgo/GEOMAlgo_DataMapOfPassKeyInteger.hxx src/GEOMAlgo/GEOMAlgo_DataMapOfPassKeyInteger_0.cxx src/GEOMAlgo/GEOMAlgo_FinderShapeOn.cdl src/GEOMAlgo/GEOMAlgo_FinderShapeOn.cxx src/GEOMAlgo/GEOMAlgo_FinderShapeOn.hxx src/GEOMAlgo/GEOMAlgo_FinderShapeOn.ixx src/GEOMAlgo/GEOMAlgo_FinderShapeOn.jxx src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.cdl src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.cxx src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.hxx src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.ixx src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.jxx src/GEOMAlgo/GEOMAlgo_GlueAnalyser.cdl src/GEOMAlgo/GEOMAlgo_GlueAnalyser.cxx src/GEOMAlgo/GEOMAlgo_GlueAnalyser.hxx src/GEOMAlgo/GEOMAlgo_GlueAnalyser.ixx src/GEOMAlgo/GEOMAlgo_GlueAnalyser.jxx src/GEOMAlgo/GEOMAlgo_Gluer.cdl src/GEOMAlgo/GEOMAlgo_Gluer.cxx src/GEOMAlgo/GEOMAlgo_Gluer.hxx src/GEOMAlgo/GEOMAlgo_Gluer.ixx src/GEOMAlgo/GEOMAlgo_Gluer.jxx src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_0.cxx src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape.hxx src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape_0.cxx src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape.hxx src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_0.cxx src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_0.cxx src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState.hxx src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState_0.cxx src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfIntegerShape.hxx src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfIntegerShape_0.cxx src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyListOfShape.hxx src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyListOfShape_0.cxx src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape.hxx src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape_0.cxx src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeBox.hxx src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeBox_0.cxx src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeState.hxx src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeState_0.cxx src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfCoupleOfShapes.hxx src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfCoupleOfShapes_0.cxx src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfPnt.hxx src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfPnt_0.cxx src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfCoupleOfShapes.hxx src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfCoupleOfShapes_0.cxx src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfPnt.hxx src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfPnt_0.cxx src/GEOMAlgo/GEOMAlgo_ListOfCoupleOfShapes.hxx src/GEOMAlgo/GEOMAlgo_ListOfCoupleOfShapes_0.cxx src/GEOMAlgo/GEOMAlgo_ListOfPnt.hxx src/GEOMAlgo/GEOMAlgo_ListOfPnt_0.cxx src/GEOMAlgo/GEOMAlgo_PassKey.cdl src/GEOMAlgo/GEOMAlgo_PassKey.cxx src/GEOMAlgo/GEOMAlgo_PassKey.hxx src/GEOMAlgo/GEOMAlgo_PassKey.ixx src/GEOMAlgo/GEOMAlgo_PassKey.jxx src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.cdl src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.cxx src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.hxx src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.ixx src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.jxx src/GEOMAlgo/GEOMAlgo_PassKeyShape.cdl src/GEOMAlgo/GEOMAlgo_PassKeyShape.cxx src/GEOMAlgo/GEOMAlgo_PassKeyShape.hxx src/GEOMAlgo/GEOMAlgo_PassKeyShape.ixx src/GEOMAlgo/GEOMAlgo_PassKeyShape.jxx src/GEOMAlgo/GEOMAlgo_ShapeAlgo.cdl src/GEOMAlgo/GEOMAlgo_ShapeAlgo.cxx src/GEOMAlgo/GEOMAlgo_ShapeAlgo.hxx src/GEOMAlgo/GEOMAlgo_ShapeAlgo.ixx src/GEOMAlgo/GEOMAlgo_ShapeAlgo.jxx src/GEOMAlgo/GEOMAlgo_ShapeSolid.cdl src/GEOMAlgo/GEOMAlgo_ShapeSolid.cxx src/GEOMAlgo/GEOMAlgo_ShapeSolid.hxx src/GEOMAlgo/GEOMAlgo_ShapeSolid.ixx src/GEOMAlgo/GEOMAlgo_ShapeSolid.jxx src/GEOMAlgo/GEOMAlgo_ShellSolid.cdl src/GEOMAlgo/GEOMAlgo_ShellSolid.cxx src/GEOMAlgo/GEOMAlgo_ShellSolid.hxx src/GEOMAlgo/GEOMAlgo_ShellSolid.ixx src/GEOMAlgo/GEOMAlgo_ShellSolid.jxx src/GEOMAlgo/GEOMAlgo_SolidSolid.cdl src/GEOMAlgo/GEOMAlgo_SolidSolid.cxx src/GEOMAlgo/GEOMAlgo_SolidSolid.hxx src/GEOMAlgo/GEOMAlgo_SolidSolid.ixx src/GEOMAlgo/GEOMAlgo_SolidSolid.jxx src/GEOMAlgo/GEOMAlgo_State.hxx src/GEOMAlgo/GEOMAlgo_StateCollector.cdl src/GEOMAlgo/GEOMAlgo_StateCollector.cxx src/GEOMAlgo/GEOMAlgo_StateCollector.hxx src/GEOMAlgo/GEOMAlgo_StateCollector.ixx src/GEOMAlgo/GEOMAlgo_StateCollector.jxx src/GEOMAlgo/GEOMAlgo_SurfaceTools.cdl src/GEOMAlgo/GEOMAlgo_SurfaceTools.cxx src/GEOMAlgo/GEOMAlgo_SurfaceTools.hxx src/GEOMAlgo/GEOMAlgo_SurfaceTools.ixx src/GEOMAlgo/GEOMAlgo_SurfaceTools.jxx src/GEOMAlgo/GEOMAlgo_Tools.cdl src/GEOMAlgo/GEOMAlgo_Tools.cxx src/GEOMAlgo/GEOMAlgo_Tools.hxx src/GEOMAlgo/GEOMAlgo_Tools.ixx src/GEOMAlgo/GEOMAlgo_Tools.jxx src/GEOMAlgo/GEOMAlgo_VertexSolid.cdl src/GEOMAlgo/GEOMAlgo_VertexSolid.cxx src/GEOMAlgo/GEOMAlgo_VertexSolid.hxx src/GEOMAlgo/GEOMAlgo_VertexSolid.ixx src/GEOMAlgo/GEOMAlgo_VertexSolid.jxx src/GEOMAlgo/GEOMAlgo_WireSolid.cdl src/GEOMAlgo/GEOMAlgo_WireSolid.cxx src/GEOMAlgo/GEOMAlgo_WireSolid.hxx src/GEOMAlgo/GEOMAlgo_WireSolid.ixx src/GEOMAlgo/GEOMAlgo_WireSolid.jxx src/GEOMAlgo/Handle_BlockFix_BlockFixAPI.hxx src/GEOMAlgo/Handle_BlockFix_PeriodicSurfaceModifier.hxx src/GEOMAlgo/Handle_BlockFix_SphereSpaceModifier.hxx src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape.hxx src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape.hxx src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState.hxx src/GEOMAlgo/Handle_GEOMAlgo_ListNodeOfListOfCoupleOfShapes.hxx src/GEOMAlgo/Handle_GEOMAlgo_ListNodeOfListOfPnt.hxx src/GEOMAlgo/Makefile.in src/GEOMBase/GEOMBase.cxx src/GEOMBase/GEOMBase.h src/GEOMBase/GEOMBase_Helper.cxx src/GEOMBase/GEOMBase_Helper.h src/GEOMBase/GEOMBase_Skeleton.cxx src/GEOMBase/GEOMBase_Skeleton.h src/GEOMBase/GEOMBase_aParameterDlg.cxx src/GEOMBase/GEOMBase_aParameterDlg.h src/GEOMBase/GEOM_Operation.cxx src/GEOMBase/GEOM_Operation.h src/GEOMBase/Makefile.in src/GEOMClient/GEOM_Client.cxx src/GEOMClient/GEOM_Client.hxx src/GEOMClient/Makefile.in src/GEOMContext/GEOMContext.cxx src/GEOMContext/GEOMContext.h src/GEOMContext/GEOM_icons.po src/GEOMContext/GEOM_msg_en.po src/GEOMContext/GEOM_msg_fr.po src/GEOMContext/Makefile.in src/GEOMDS/GEOMDS_Commands.cxx src/GEOMDS/GEOMDS_Commands.jxx src/GEOMFiltersSelection/GEOM_EdgeFilter.cxx src/GEOMFiltersSelection/GEOM_EdgeFilter.h src/GEOMFiltersSelection/GEOM_EdgeFilter.hxx src/GEOMFiltersSelection/GEOM_EdgeFilter.ixx src/GEOMFiltersSelection/GEOM_EdgeFilter.jxx src/GEOMFiltersSelection/GEOM_FaceFilter.cxx src/GEOMFiltersSelection/GEOM_FaceFilter.h src/GEOMFiltersSelection/GEOM_FaceFilter.hxx src/GEOMFiltersSelection/GEOM_FaceFilter.ixx src/GEOMFiltersSelection/GEOM_FaceFilter.jxx src/GEOMFiltersSelection/GEOM_LogicalFilter.cxx src/GEOMFiltersSelection/GEOM_LogicalFilter.h src/GEOMFiltersSelection/GEOM_LogicalFilter.hxx src/GEOMFiltersSelection/GEOM_OCCFilter.cxx src/GEOMFiltersSelection/GEOM_OCCFilter.h src/GEOMFiltersSelection/GEOM_PreviewFilter.cxx src/GEOMFiltersSelection/GEOM_PreviewFilter.h src/GEOMFiltersSelection/GEOM_PreviewFilter.hxx src/GEOMFiltersSelection/GEOM_PreviewFilter.ixx src/GEOMFiltersSelection/GEOM_PreviewFilter.jxx src/GEOMFiltersSelection/GEOM_SelectionFilter.cxx src/GEOMFiltersSelection/GEOM_SelectionFilter.h src/GEOMFiltersSelection/GEOM_ShapeTypeFilter.cxx src/GEOMFiltersSelection/GEOM_ShapeTypeFilter.hxx src/GEOMFiltersSelection/GEOM_ShapeTypeFilter.ixx src/GEOMFiltersSelection/GEOM_ShapeTypeFilter.jxx src/GEOMFiltersSelection/GEOM_TypeFilter.cxx src/GEOMFiltersSelection/GEOM_TypeFilter.h src/GEOMFiltersSelection/GEOM_TypeFilter.hxx src/GEOMFiltersSelection/Handle_GEOM_EdgeFilter.hxx src/GEOMFiltersSelection/Handle_GEOM_FaceFilter.hxx src/GEOMFiltersSelection/Handle_GEOM_PreviewFilter.hxx src/GEOMFiltersSelection/Handle_GEOM_ShapeTypeFilter.hxx src/GEOMFiltersSelection/Makefile.in src/GEOMGUI/GEOMGUI.cxx src/GEOMGUI/GEOMGUI.h src/GEOMGUI/GEOMGUI_OCCSelector.cxx src/GEOMGUI/GEOMGUI_OCCSelector.h src/GEOMGUI/GEOMGUI_Selection.cxx src/GEOMGUI/GEOMGUI_Selection.h src/GEOMGUI/GEOM_Displayer.cxx src/GEOMGUI/GEOM_Displayer.h src/GEOMGUI/GEOM_images.po src/GEOMGUI/GEOM_msg_en.po src/GEOMGUI/GEOM_msg_fr.po src/GEOMGUI/GeometryGUI.cxx src/GEOMGUI/GeometryGUI.h src/GEOMGUI/GeometryGUI_Swig.hxx src/GEOMGUI/GeometryGUI_Swig.i src/GEOMGUI/Makefile.in src/GEOMImpl/GEOMImpl_ArcDriver.cxx src/GEOMImpl/GEOMImpl_ArcDriver.hxx src/GEOMImpl/GEOMImpl_ArchimedeDriver.cxx src/GEOMImpl/GEOMImpl_ArchimedeDriver.hxx src/GEOMImpl/GEOMImpl_Block6Explorer.cxx src/GEOMImpl/GEOMImpl_Block6Explorer.hxx src/GEOMImpl/GEOMImpl_BlockDriver.cxx src/GEOMImpl/GEOMImpl_BlockDriver.hxx src/GEOMImpl/GEOMImpl_BooleanDriver.cxx src/GEOMImpl/GEOMImpl_BooleanDriver.hxx src/GEOMImpl/GEOMImpl_BoxDriver.cxx src/GEOMImpl/GEOMImpl_BoxDriver.hxx src/GEOMImpl/GEOMImpl_ChamferDriver.cxx src/GEOMImpl/GEOMImpl_ChamferDriver.hxx src/GEOMImpl/GEOMImpl_CircleDriver.cxx src/GEOMImpl/GEOMImpl_CircleDriver.hxx src/GEOMImpl/GEOMImpl_ConeDriver.cxx src/GEOMImpl/GEOMImpl_ConeDriver.hxx src/GEOMImpl/GEOMImpl_CopyDriver.cxx src/GEOMImpl/GEOMImpl_CopyDriver.hxx src/GEOMImpl/GEOMImpl_CylinderDriver.cxx src/GEOMImpl/GEOMImpl_CylinderDriver.hxx src/GEOMImpl/GEOMImpl_EllipseDriver.cxx src/GEOMImpl/GEOMImpl_EllipseDriver.hxx src/GEOMImpl/GEOMImpl_ExportDriver.cxx src/GEOMImpl/GEOMImpl_ExportDriver.hxx src/GEOMImpl/GEOMImpl_FilletDriver.cxx src/GEOMImpl/GEOMImpl_FilletDriver.hxx src/GEOMImpl/GEOMImpl_FillingDriver.cxx src/GEOMImpl/GEOMImpl_FillingDriver.hxx src/GEOMImpl/GEOMImpl_Gen.cxx src/GEOMImpl/GEOMImpl_Gen.hxx src/GEOMImpl/GEOMImpl_GlueDriver.cxx src/GEOMImpl/GEOMImpl_GlueDriver.hxx src/GEOMImpl/GEOMImpl_HealingDriver.cxx src/GEOMImpl/GEOMImpl_HealingDriver.hxx src/GEOMImpl/GEOMImpl_I3DPrimOperations.cxx src/GEOMImpl/GEOMImpl_I3DPrimOperations.hxx src/GEOMImpl/GEOMImpl_IArc.hxx src/GEOMImpl/GEOMImpl_IArchimede.hxx src/GEOMImpl/GEOMImpl_IBasicOperations.cxx src/GEOMImpl/GEOMImpl_IBasicOperations.hxx src/GEOMImpl/GEOMImpl_IBlockTrsf.hxx src/GEOMImpl/GEOMImpl_IBlocks.hxx src/GEOMImpl/GEOMImpl_IBlocksOperations.cxx src/GEOMImpl/GEOMImpl_IBlocksOperations.hxx src/GEOMImpl/GEOMImpl_IBoolean.hxx src/GEOMImpl/GEOMImpl_IBooleanOperations.cxx src/GEOMImpl/GEOMImpl_IBooleanOperations.hxx src/GEOMImpl/GEOMImpl_IBox.hxx src/GEOMImpl/GEOMImpl_IChamfer.hxx src/GEOMImpl/GEOMImpl_ICircle.hxx src/GEOMImpl/GEOMImpl_ICone.hxx src/GEOMImpl/GEOMImpl_ICopy.hxx src/GEOMImpl/GEOMImpl_ICurvesOperations.cxx src/GEOMImpl/GEOMImpl_ICurvesOperations.hxx src/GEOMImpl/GEOMImpl_ICylinder.hxx src/GEOMImpl/GEOMImpl_IEllipse.hxx src/GEOMImpl/GEOMImpl_IFillet.hxx src/GEOMImpl/GEOMImpl_IFilling.hxx src/GEOMImpl/GEOMImpl_IGlue.hxx src/GEOMImpl/GEOMImpl_IGroupOperations.cxx src/GEOMImpl/GEOMImpl_IGroupOperations.hxx src/GEOMImpl/GEOMImpl_IHealing.hxx src/GEOMImpl/GEOMImpl_IHealingOperations.cxx src/GEOMImpl/GEOMImpl_IHealingOperations.hxx src/GEOMImpl/GEOMImpl_IImportExport.hxx src/GEOMImpl/GEOMImpl_IInsertOperations.cxx src/GEOMImpl/GEOMImpl_IInsertOperations.hxx src/GEOMImpl/GEOMImpl_ILine.hxx src/GEOMImpl/GEOMImpl_ILocalOperations.cxx src/GEOMImpl/GEOMImpl_ILocalOperations.hxx src/GEOMImpl/GEOMImpl_IMarker.hxx src/GEOMImpl/GEOMImpl_IMeasure.hxx src/GEOMImpl/GEOMImpl_IMeasureOperations.cxx src/GEOMImpl/GEOMImpl_IMeasureOperations.hxx src/GEOMImpl/GEOMImpl_IMirror.hxx src/GEOMImpl/GEOMImpl_IOffset.hxx src/GEOMImpl/GEOMImpl_IPartition.hxx src/GEOMImpl/GEOMImpl_IPipe.hxx src/GEOMImpl/GEOMImpl_IPlane.hxx src/GEOMImpl/GEOMImpl_IPoint.hxx src/GEOMImpl/GEOMImpl_IPolyline.hxx src/GEOMImpl/GEOMImpl_IPosition.hxx src/GEOMImpl/GEOMImpl_IPrism.hxx src/GEOMImpl/GEOMImpl_IRevolution.hxx src/GEOMImpl/GEOMImpl_IRotate.hxx src/GEOMImpl/GEOMImpl_IScale.hxx src/GEOMImpl/GEOMImpl_IShapes.hxx src/GEOMImpl/GEOMImpl_IShapesOperations.cxx src/GEOMImpl/GEOMImpl_IShapesOperations.hxx src/GEOMImpl/GEOMImpl_ISketcher.hxx src/GEOMImpl/GEOMImpl_ISphere.hxx src/GEOMImpl/GEOMImpl_ISpline.hxx src/GEOMImpl/GEOMImpl_ITorus.hxx src/GEOMImpl/GEOMImpl_ITransformOperations.cxx src/GEOMImpl/GEOMImpl_ITransformOperations.hxx src/GEOMImpl/GEOMImpl_ITranslate.hxx src/GEOMImpl/GEOMImpl_IVector.hxx src/GEOMImpl/GEOMImpl_ImportDriver.cxx src/GEOMImpl/GEOMImpl_ImportDriver.hxx src/GEOMImpl/GEOMImpl_LineDriver.cxx src/GEOMImpl/GEOMImpl_LineDriver.hxx src/GEOMImpl/GEOMImpl_MarkerDriver.cxx src/GEOMImpl/GEOMImpl_MarkerDriver.hxx src/GEOMImpl/GEOMImpl_MeasureDriver.cxx src/GEOMImpl/GEOMImpl_MeasureDriver.hxx src/GEOMImpl/GEOMImpl_MirrorDriver.cxx src/GEOMImpl/GEOMImpl_MirrorDriver.hxx src/GEOMImpl/GEOMImpl_OffsetDriver.cxx src/GEOMImpl/GEOMImpl_OffsetDriver.hxx src/GEOMImpl/GEOMImpl_PartitionDriver.cxx src/GEOMImpl/GEOMImpl_PartitionDriver.hxx src/GEOMImpl/GEOMImpl_PipeDriver.cxx src/GEOMImpl/GEOMImpl_PipeDriver.hxx src/GEOMImpl/GEOMImpl_PlaneDriver.cxx src/GEOMImpl/GEOMImpl_PlaneDriver.hxx src/GEOMImpl/GEOMImpl_PointDriver.cxx src/GEOMImpl/GEOMImpl_PointDriver.hxx src/GEOMImpl/GEOMImpl_PolylineDriver.cxx src/GEOMImpl/GEOMImpl_PolylineDriver.hxx src/GEOMImpl/GEOMImpl_PositionDriver.cxx src/GEOMImpl/GEOMImpl_PositionDriver.hxx src/GEOMImpl/GEOMImpl_PrismDriver.cxx src/GEOMImpl/GEOMImpl_PrismDriver.hxx src/GEOMImpl/GEOMImpl_RevolutionDriver.cxx src/GEOMImpl/GEOMImpl_RevolutionDriver.hxx src/GEOMImpl/GEOMImpl_RotateDriver.cxx src/GEOMImpl/GEOMImpl_RotateDriver.hxx src/GEOMImpl/GEOMImpl_ScaleDriver.cxx src/GEOMImpl/GEOMImpl_ScaleDriver.hxx src/GEOMImpl/GEOMImpl_ShapeDriver.cxx src/GEOMImpl/GEOMImpl_ShapeDriver.hxx src/GEOMImpl/GEOMImpl_SketcherDriver.cxx src/GEOMImpl/GEOMImpl_SketcherDriver.hxx src/GEOMImpl/GEOMImpl_SphereDriver.cxx src/GEOMImpl/GEOMImpl_SphereDriver.hxx src/GEOMImpl/GEOMImpl_SplineDriver.cxx src/GEOMImpl/GEOMImpl_SplineDriver.hxx src/GEOMImpl/GEOMImpl_Template.cxx src/GEOMImpl/GEOMImpl_Template.hxx src/GEOMImpl/GEOMImpl_TorusDriver.cxx src/GEOMImpl/GEOMImpl_TorusDriver.hxx src/GEOMImpl/GEOMImpl_TranslateDriver.cxx src/GEOMImpl/GEOMImpl_TranslateDriver.hxx src/GEOMImpl/GEOMImpl_Types.hxx src/GEOMImpl/GEOMImpl_VectorDriver.cxx src/GEOMImpl/GEOMImpl_VectorDriver.hxx src/GEOMImpl/GUID.txt src/GEOMImpl/Makefile.in src/GEOMToolsGUI/GEOMToolsGUI.cxx src/GEOMToolsGUI/GEOMToolsGUI.h src/GEOMToolsGUI/GEOMToolsGUI_NameDlg.cxx src/GEOMToolsGUI/GEOMToolsGUI_NameDlg.h src/GEOMToolsGUI/GEOMToolsGUI_NbIsosDlg.cxx src/GEOMToolsGUI/GEOMToolsGUI_NbIsosDlg.h src/GEOMToolsGUI/GEOMToolsGUI_TransparencyDlg.h src/GEOMToolsGUI/Makefile.in src/GEOM_I/GEOM_DumpPython.cc src/GEOM_I/GEOM_Gen_i.cc src/GEOM_I/GEOM_Gen_i.hh src/GEOM_I/GEOM_I3DPrimOperations_i.cc src/GEOM_I/GEOM_I3DPrimOperations_i.hh src/GEOM_I/GEOM_IBasicOperations_i.cc src/GEOM_I/GEOM_IBasicOperations_i.hh src/GEOM_I/GEOM_IBlocksOperations_i.cc src/GEOM_I/GEOM_IBlocksOperations_i.hh src/GEOM_I/GEOM_IBooleanOperations_i.cc src/GEOM_I/GEOM_IBooleanOperations_i.hh src/GEOM_I/GEOM_ICurvesOperations_i.cc src/GEOM_I/GEOM_ICurvesOperations_i.hh src/GEOM_I/GEOM_IGroupOperations_i.cc src/GEOM_I/GEOM_IGroupOperations_i.hh src/GEOM_I/GEOM_IHealingOperations_i.cc src/GEOM_I/GEOM_IHealingOperations_i.hh src/GEOM_I/GEOM_IInsertOperations_i.cc src/GEOM_I/GEOM_IInsertOperations_i.hh src/GEOM_I/GEOM_ILocalOperations_i.cc src/GEOM_I/GEOM_ILocalOperations_i.hh src/GEOM_I/GEOM_IMeasureOperations_i.cc src/GEOM_I/GEOM_IMeasureOperations_i.hh src/GEOM_I/GEOM_IOperations_i.cc src/GEOM_I/GEOM_IOperations_i.hh src/GEOM_I/GEOM_IShapesOperations_i.cc src/GEOM_I/GEOM_IShapesOperations_i.hh src/GEOM_I/GEOM_ITransformOperations_i.cc src/GEOM_I/GEOM_ITransformOperations_i.hh src/GEOM_I/GEOM_Object_i.cc src/GEOM_I/GEOM_Object_i.hh src/GEOM_I/Makefile.in src/GEOM_I_Superv/GEOM_List_i.hh src/GEOM_I_Superv/GEOM_Superv_i.cc src/GEOM_I_Superv/GEOM_Superv_i.hh src/GEOM_I_Superv/Makefile.in src/GEOM_SWIG/GEOM_Nut.py src/GEOM_SWIG/GEOM_Partition1.py src/GEOM_SWIG/GEOM_Partition2.py src/GEOM_SWIG/GEOM_Partition3.py src/GEOM_SWIG/GEOM_Partition4.py src/GEOM_SWIG/GEOM_Partition5.py src/GEOM_SWIG/GEOM_Sketcher.py src/GEOM_SWIG/GEOM_Spanner.py src/GEOM_SWIG/GEOM_TestAll.py src/GEOM_SWIG/GEOM_TestHealing.py src/GEOM_SWIG/GEOM_TestMeasures.py src/GEOM_SWIG/GEOM_TestOthers.py src/GEOM_SWIG/GEOM_blocks.py src/GEOM_SWIG/GEOM_cyl2complementary.py src/GEOM_SWIG/GEOM_example.py src/GEOM_SWIG/GEOM_example2.py src/GEOM_SWIG/GEOM_example3.py src/GEOM_SWIG/GEOM_example4.py src/GEOM_SWIG/GEOM_example5.py src/GEOM_SWIG/GEOM_moteur.py src/GEOM_SWIG/GEOM_shared_modules.py src/GEOM_SWIG/GEOM_shellSolid.py src/GEOM_SWIG/GEOM_tube_geom.py src/GEOM_SWIG/GEOM_tube_geom_gg2.py src/GEOM_SWIG/GEOM_usinggeom.py src/GEOM_SWIG/Makefile.in src/GEOM_SWIG/PAL_MESH_019_020_geometry.py src/GEOM_SWIG/PAL_MESH_028_geometry.py src/GEOM_SWIG/PAL_MESH_030_geometry.py src/GEOM_SWIG/PAL_MESH_033_geometry.py src/GEOM_SWIG/PAL_MESH_035_geometry.py src/GEOM_SWIG/batchmode_geompy.py src/GEOM_SWIG/geompy.py src/GEOM_SWIG/libGEOM_Swig.i src/GenerationGUI/GenerationGUI.cxx src/GenerationGUI/GenerationGUI.h src/GenerationGUI/GenerationGUI_FillingDlg.cxx src/GenerationGUI/GenerationGUI_FillingDlg.h src/GenerationGUI/GenerationGUI_PipeDlg.cxx src/GenerationGUI/GenerationGUI_PipeDlg.h src/GenerationGUI/GenerationGUI_PrismDlg.cxx src/GenerationGUI/GenerationGUI_PrismDlg.h src/GenerationGUI/GenerationGUI_RevolDlg.cxx src/GenerationGUI/GenerationGUI_RevolDlg.h src/GenerationGUI/Makefile.in src/GroupGUI/GroupGUI.cxx src/GroupGUI/GroupGUI.h src/GroupGUI/GroupGUI_GroupDlg.cxx src/GroupGUI/GroupGUI_GroupDlg.h src/GroupGUI/Makefile.in src/IGESExport/IGESExport.cxx src/IGESExport/Makefile.in src/IGESImport/IGESImport.cxx src/IGESImport/Makefile.in src/Makefile.in src/MeasureGUI/Makefile.in src/MeasureGUI/MeasureGUI.cxx src/MeasureGUI/MeasureGUI.h src/MeasureGUI/MeasureGUI_1Sel12LineEdit_QTD.cxx src/MeasureGUI/MeasureGUI_1Sel12LineEdit_QTD.h src/MeasureGUI/MeasureGUI_1Sel1TextView_QTD.cxx src/MeasureGUI/MeasureGUI_1Sel1TextView_QTD.h src/MeasureGUI/MeasureGUI_1Sel3LineEdit_QTD.cxx src/MeasureGUI/MeasureGUI_1Sel3LineEdit_QTD.h src/MeasureGUI/MeasureGUI_1Sel6LineEdit_QTD.cxx src/MeasureGUI/MeasureGUI_1Sel6LineEdit_QTD.h src/MeasureGUI/MeasureGUI_2Sel1LineEdit_QTD.cxx src/MeasureGUI/MeasureGUI_2Sel1LineEdit_QTD.h src/MeasureGUI/MeasureGUI_BndBoxDlg.cxx src/MeasureGUI/MeasureGUI_BndBoxDlg.h src/MeasureGUI/MeasureGUI_CenterMassDlg.cxx src/MeasureGUI/MeasureGUI_CenterMassDlg.h src/MeasureGUI/MeasureGUI_CheckCompoundOfBlocksDlg.cxx src/MeasureGUI/MeasureGUI_CheckCompoundOfBlocksDlg.h src/MeasureGUI/MeasureGUI_CheckShapeDlg.cxx src/MeasureGUI/MeasureGUI_CheckShapeDlg.h src/MeasureGUI/MeasureGUI_DistanceDlg.cxx src/MeasureGUI/MeasureGUI_DistanceDlg.h src/MeasureGUI/MeasureGUI_InertiaDlg.cxx src/MeasureGUI/MeasureGUI_InertiaDlg.h src/MeasureGUI/MeasureGUI_MaxToleranceDlg.cxx src/MeasureGUI/MeasureGUI_MaxToleranceDlg.h src/MeasureGUI/MeasureGUI_PointDlg.cxx src/MeasureGUI/MeasureGUI_PointDlg.h src/MeasureGUI/MeasureGUI_PropertiesDlg.cxx src/MeasureGUI/MeasureGUI_PropertiesDlg.h src/MeasureGUI/MeasureGUI_Skeleton.cxx src/MeasureGUI/MeasureGUI_Skeleton.h src/MeasureGUI/MeasureGUI_Skeleton_QTD.cxx src/MeasureGUI/MeasureGUI_Skeleton_QTD.h src/MeasureGUI/MeasureGUI_WhatisDlg.cxx src/MeasureGUI/MeasureGUI_WhatisDlg.h src/MeasureGUI/UIFiles/MeasureGUI_1Sel12LineEdit_QTD.ui src/MeasureGUI/UIFiles/MeasureGUI_1Sel1TextView_QTD.ui src/MeasureGUI/UIFiles/MeasureGUI_1Sel3LineEdit_QTD.ui src/MeasureGUI/UIFiles/MeasureGUI_1Sel6LineEdit_QTD.ui src/MeasureGUI/UIFiles/MeasureGUI_2Sel1LineEdit_QTD.ui src/MeasureGUI/UIFiles/MeasureGUI_Skeleton_QTD.ui src/MeasureGUI/UIFiles/ui_to_cxx src/NMTAlgo/Makefile.in src/NMTAlgo/NMTAlgo.cdl src/NMTAlgo/NMTAlgo_Algo.cdl src/NMTAlgo/NMTAlgo_Algo.cxx src/NMTAlgo/NMTAlgo_Algo.hxx src/NMTAlgo/NMTAlgo_Algo.ixx src/NMTAlgo/NMTAlgo_Algo.jxx src/NMTAlgo/NMTAlgo_Builder.cdl src/NMTAlgo/NMTAlgo_Builder.cxx src/NMTAlgo/NMTAlgo_Builder.hxx src/NMTAlgo/NMTAlgo_Builder.ixx src/NMTAlgo/NMTAlgo_Builder.jxx src/NMTAlgo/NMTAlgo_Loop3d.cdl src/NMTAlgo/NMTAlgo_Loop3d.cxx src/NMTAlgo/NMTAlgo_Loop3d.hxx src/NMTAlgo/NMTAlgo_Loop3d.ixx src/NMTAlgo/NMTAlgo_Loop3d.jxx src/NMTAlgo/NMTAlgo_Splitter.cdl src/NMTAlgo/NMTAlgo_Splitter.cxx src/NMTAlgo/NMTAlgo_Splitter.hxx src/NMTAlgo/NMTAlgo_Splitter.ixx src/NMTAlgo/NMTAlgo_Splitter.jxx src/NMTAlgo/NMTAlgo_Splitter1.cdl src/NMTAlgo/NMTAlgo_Splitter1.cxx src/NMTAlgo/NMTAlgo_Splitter1.hxx src/NMTAlgo/NMTAlgo_Splitter1.ixx src/NMTAlgo/NMTAlgo_Splitter1.jxx src/NMTAlgo/NMTAlgo_Splitter_1.cxx src/NMTAlgo/NMTAlgo_Splitter_2.cxx src/NMTAlgo/NMTAlgo_Tools.cdl src/NMTAlgo/NMTAlgo_Tools.cxx src/NMTAlgo/NMTAlgo_Tools.hxx src/NMTAlgo/NMTAlgo_Tools.ixx src/NMTAlgo/NMTAlgo_Tools.jxx src/NMTDS/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx src/NMTDS/Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx src/NMTDS/Makefile.in src/NMTDS/NMTDS.cdl src/NMTDS/NMTDS_CArray1OfIndexRange.hxx src/NMTDS/NMTDS_CArray1OfIndexRange_0.cxx src/NMTDS/NMTDS_IndexRange.cdl src/NMTDS/NMTDS_IndexRange.cxx src/NMTDS/NMTDS_IndexRange.hxx src/NMTDS/NMTDS_IndexRange.ixx src/NMTDS/NMTDS_IndexRange.jxx src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_0.cxx src/NMTDS/NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx src/NMTDS/NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_0.cxx src/NMTDS/NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx src/NMTDS/NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx src/NMTDS/NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx src/NMTDS/NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx src/NMTDS/NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx src/NMTDS/NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx src/NMTDS/NMTDS_PShapesDataStructure.hxx src/NMTDS/NMTDS_ShapesDataStructure.cdl src/NMTDS/NMTDS_ShapesDataStructure.cxx src/NMTDS/NMTDS_ShapesDataStructure.hxx src/NMTDS/NMTDS_ShapesDataStructure.ixx src/NMTDS/NMTDS_ShapesDataStructure.jxx src/NMTTools/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx src/NMTTools/Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger.hxx src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape.hxx src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock.hxx src/NMTTools/Handle_NMTTools_ListNodeOfListOfCommonBlock.hxx src/NMTTools/Handle_NMTTools_ListNodeOfListOfCoupleOfShape.hxx src/NMTTools/Makefile.in src/NMTTools/NMTTools.cdl src/NMTTools/NMTTools_CommonBlock.cdl src/NMTTools/NMTTools_CommonBlock.cxx src/NMTTools/NMTTools_CommonBlock.hxx src/NMTTools/NMTTools_CommonBlock.ixx src/NMTTools/NMTTools_CommonBlock.jxx src/NMTTools/NMTTools_CommonBlockAPI.cdl src/NMTTools/NMTTools_CommonBlockAPI.cxx src/NMTTools/NMTTools_CommonBlockAPI.hxx src/NMTTools/NMTTools_CommonBlockAPI.ixx src/NMTTools/NMTTools_CommonBlockAPI.jxx src/NMTTools/NMTTools_CommonBlockPool.hxx src/NMTTools/NMTTools_CommonBlockPool_0.cxx src/NMTTools/NMTTools_CoupleOfShape.cdl src/NMTTools/NMTTools_CoupleOfShape.cxx src/NMTTools/NMTTools_CoupleOfShape.hxx src/NMTTools/NMTTools_CoupleOfShape.ixx src/NMTTools/NMTTools_CoupleOfShape.jxx src/NMTTools/NMTTools_DEProcessor.cdl src/NMTTools/NMTTools_DEProcessor.cxx src/NMTTools/NMTTools_DEProcessor.hxx src/NMTTools/NMTTools_DEProcessor.ixx src/NMTTools/NMTTools_DEProcessor.jxx src/NMTTools/NMTTools_DSFiller.cdl src/NMTTools/NMTTools_DSFiller.cxx src/NMTTools/NMTTools_DSFiller.hxx src/NMTTools/NMTTools_DSFiller.ixx src/NMTTools/NMTTools_DSFiller.jxx src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger.hxx src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_0.cxx src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape.hxx src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_0.cxx src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock.hxx src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_0.cxx src/NMTTools/NMTTools_IndexedDataMapOfIndexedMapOfInteger.hxx src/NMTTools/NMTTools_IndexedDataMapOfIndexedMapOfInteger_0.cxx src/NMTTools/NMTTools_IndexedDataMapOfShapeIndexedMapOfShape.hxx src/NMTTools/NMTTools_IndexedDataMapOfShapeIndexedMapOfShape_0.cxx src/NMTTools/NMTTools_IndexedDataMapOfShapePaveBlock.hxx src/NMTTools/NMTTools_IndexedDataMapOfShapePaveBlock_0.cxx src/NMTTools/NMTTools_IteratorOfCoupleOfShape.cdl src/NMTTools/NMTTools_IteratorOfCoupleOfShape.cxx src/NMTTools/NMTTools_IteratorOfCoupleOfShape.hxx src/NMTTools/NMTTools_IteratorOfCoupleOfShape.ixx src/NMTTools/NMTTools_IteratorOfCoupleOfShape.jxx src/NMTTools/NMTTools_ListIteratorOfListOfCommonBlock.hxx src/NMTTools/NMTTools_ListIteratorOfListOfCommonBlock_0.cxx src/NMTTools/NMTTools_ListIteratorOfListOfCoupleOfShape.hxx src/NMTTools/NMTTools_ListIteratorOfListOfCoupleOfShape_0.cxx src/NMTTools/NMTTools_ListNodeOfListOfCommonBlock.hxx src/NMTTools/NMTTools_ListNodeOfListOfCommonBlock_0.cxx src/NMTTools/NMTTools_ListNodeOfListOfCoupleOfShape.hxx src/NMTTools/NMTTools_ListNodeOfListOfCoupleOfShape_0.cxx src/NMTTools/NMTTools_ListOfCommonBlock.hxx src/NMTTools/NMTTools_ListOfCommonBlock_0.cxx src/NMTTools/NMTTools_ListOfCoupleOfShape.hxx src/NMTTools/NMTTools_ListOfCoupleOfShape_0.cxx src/NMTTools/NMTTools_PCurveMaker.cdl src/NMTTools/NMTTools_PCurveMaker.cxx src/NMTTools/NMTTools_PCurveMaker.hxx src/NMTTools/NMTTools_PCurveMaker.ixx src/NMTTools/NMTTools_PCurveMaker.jxx src/NMTTools/NMTTools_PDSFiller.hxx src/NMTTools/NMTTools_PPaveFiller.hxx src/NMTTools/NMTTools_PaveFiller.cdl src/NMTTools/NMTTools_PaveFiller.cxx src/NMTTools/NMTTools_PaveFiller.hxx src/NMTTools/NMTTools_PaveFiller.ixx src/NMTTools/NMTTools_PaveFiller.jxx src/NMTTools/NMTTools_PaveFiller_0.cxx src/NMTTools/NMTTools_PaveFiller_1.cxx src/NMTTools/NMTTools_PaveFiller_2.cxx src/NMTTools/NMTTools_PaveFiller_3.cxx src/NMTTools/NMTTools_PaveFiller_4.cxx src/NMTTools/NMTTools_PaveFiller_5.cxx src/NMTTools/NMTTools_PaveFiller_6.cxx src/NMTTools/NMTTools_PaveFiller_7.cxx src/NMTTools/NMTTools_PaveFiller_8.cxx src/NMTTools/NMTTools_PaveFiller_9.cxx src/NMTTools/NMTTools_Tools.cdl src/NMTTools/NMTTools_Tools.cxx src/NMTTools/NMTTools_Tools.hxx src/NMTTools/NMTTools_Tools.ixx src/NMTTools/NMTTools_Tools.jxx src/OBJECT/GEOM_AISShape.cxx src/OBJECT/GEOM_AISShape.hxx src/OBJECT/GEOM_AISShape.ixx src/OBJECT/GEOM_AISShape.jxx src/OBJECT/GEOM_AISTrihedron.cxx src/OBJECT/GEOM_AISTrihedron.hxx src/OBJECT/GEOM_Actor.cxx src/OBJECT/GEOM_Actor.h src/OBJECT/GEOM_AssemblyBuilder.cxx src/OBJECT/GEOM_AssemblyBuilder.h src/OBJECT/GEOM_InteractiveObject.cxx src/OBJECT/GEOM_InteractiveObject.hxx src/OBJECT/GEOM_InteractiveObject.ixx src/OBJECT/GEOM_InteractiveObject.jxx src/OBJECT/GEOM_OCCReader.cxx src/OBJECT/GEOM_OCCReader.h src/OBJECT/GEOM_VTKTrihedron.cxx src/OBJECT/GEOM_VTKTrihedron.hxx src/OBJECT/Handle_GEOM_AISShape.hxx src/OBJECT/Handle_GEOM_InteractiveObject.hxx src/OBJECT/Makefile.in src/OperationGUI/Makefile.in src/OperationGUI/OperationGUI.cxx src/OperationGUI/OperationGUI.h src/OperationGUI/OperationGUI_ArchimedeDlg.cxx src/OperationGUI/OperationGUI_ArchimedeDlg.h src/OperationGUI/OperationGUI_ChamferDlg.cxx src/OperationGUI/OperationGUI_ChamferDlg.h src/OperationGUI/OperationGUI_ClippingDlg.cxx src/OperationGUI/OperationGUI_ClippingDlg.h src/OperationGUI/OperationGUI_FilletDlg.cxx src/OperationGUI/OperationGUI_FilletDlg.h src/OperationGUI/OperationGUI_MaterialDlg.cxx src/OperationGUI/OperationGUI_MaterialDlg.h src/OperationGUI/OperationGUI_PartitionDlg.cxx src/OperationGUI/OperationGUI_PartitionDlg.h src/PARTITION/Makefile.in src/PARTITION/Partition.cdl src/PARTITION/Partition_Inter2d.cdl src/PARTITION/Partition_Inter2d.cxx src/PARTITION/Partition_Inter2d.hxx src/PARTITION/Partition_Inter2d.ixx src/PARTITION/Partition_Inter2d.jxx src/PARTITION/Partition_Inter3d.cdl src/PARTITION/Partition_Inter3d.cxx src/PARTITION/Partition_Inter3d.hxx src/PARTITION/Partition_Inter3d.ixx src/PARTITION/Partition_Inter3d.jxx src/PARTITION/Partition_Loop.cdl src/PARTITION/Partition_Loop.cxx src/PARTITION/Partition_Loop.hxx src/PARTITION/Partition_Loop.ixx src/PARTITION/Partition_Loop.jxx src/PARTITION/Partition_Loop2d.cdl src/PARTITION/Partition_Loop2d.cxx src/PARTITION/Partition_Loop2d.hxx src/PARTITION/Partition_Loop2d.ixx src/PARTITION/Partition_Loop2d.jxx src/PARTITION/Partition_Loop3d.cdl src/PARTITION/Partition_Loop3d.cxx src/PARTITION/Partition_Loop3d.hxx src/PARTITION/Partition_Loop3d.ixx src/PARTITION/Partition_Loop3d.jxx src/PARTITION/Partition_Spliter.cdl src/PARTITION/Partition_Spliter.cxx src/PARTITION/Partition_Spliter.hxx src/PARTITION/Partition_Spliter.ixx src/PARTITION/Partition_Spliter.jxx src/PrimitiveGUI/Makefile.in src/PrimitiveGUI/PrimitiveGUI.cxx src/PrimitiveGUI/PrimitiveGUI.h src/PrimitiveGUI/PrimitiveGUI_BoxDlg.cxx src/PrimitiveGUI/PrimitiveGUI_BoxDlg.h src/PrimitiveGUI/PrimitiveGUI_ConeDlg.cxx src/PrimitiveGUI/PrimitiveGUI_ConeDlg.h src/PrimitiveGUI/PrimitiveGUI_CylinderDlg.cxx src/PrimitiveGUI/PrimitiveGUI_CylinderDlg.h src/PrimitiveGUI/PrimitiveGUI_SphereDlg.cxx src/PrimitiveGUI/PrimitiveGUI_SphereDlg.h src/PrimitiveGUI/PrimitiveGUI_TorusDlg.cxx src/PrimitiveGUI/PrimitiveGUI_TorusDlg.h src/RepairGUI/Makefile.in src/RepairGUI/RepairGUI.cxx src/RepairGUI/RepairGUI.h src/RepairGUI/RepairGUI_CloseContourDlg.cxx src/RepairGUI/RepairGUI_CloseContourDlg.h src/RepairGUI/RepairGUI_DivideEdgeDlg.cxx src/RepairGUI/RepairGUI_DivideEdgeDlg.h src/RepairGUI/RepairGUI_FreeBoundDlg.cxx src/RepairGUI/RepairGUI_FreeBoundDlg.h src/RepairGUI/RepairGUI_FreeFacesDlg.cxx src/RepairGUI/RepairGUI_FreeFacesDlg.h src/RepairGUI/RepairGUI_GlueDlg.cxx src/RepairGUI/RepairGUI_GlueDlg.h src/RepairGUI/RepairGUI_RemoveHolesDlg.cxx src/RepairGUI/RepairGUI_RemoveHolesDlg.h src/RepairGUI/RepairGUI_RemoveIntWiresDlg.cxx src/RepairGUI/RepairGUI_RemoveIntWiresDlg.h src/RepairGUI/RepairGUI_SewingDlg.cxx src/RepairGUI/RepairGUI_SewingDlg.h src/RepairGUI/RepairGUI_ShapeProcessDlg.cxx src/RepairGUI/RepairGUI_ShapeProcessDlg.h src/RepairGUI/RepairGUI_SuppressFacesDlg.cxx src/RepairGUI/RepairGUI_SuppressFacesDlg.h src/SKETCHER/Makefile.in src/SKETCHER/Sketcher_Profile.cxx src/SKETCHER/Sketcher_Profile.hxx src/STEPExport/Makefile.in src/STEPExport/STEPExport.cxx src/STEPImport/Makefile.in src/STEPImport/STEPImport.cxx src/ShHealOper/Makefile.in src/ShHealOper/ShHealOper_CloseContour.cxx src/ShHealOper/ShHealOper_CloseContour.hxx src/ShHealOper/ShHealOper_EdgeDivide.cxx src/ShHealOper/ShHealOper_EdgeDivide.hxx src/ShHealOper/ShHealOper_FillHoles.cxx src/ShHealOper/ShHealOper_FillHoles.hxx src/ShHealOper/ShHealOper_RemoveFace.cxx src/ShHealOper/ShHealOper_RemoveFace.hxx src/ShHealOper/ShHealOper_RemoveInternalWires.cxx src/ShHealOper/ShHealOper_RemoveInternalWires.hxx src/ShHealOper/ShHealOper_Sewing.cxx src/ShHealOper/ShHealOper_Sewing.hxx src/ShHealOper/ShHealOper_ShapeProcess.cxx src/ShHealOper/ShHealOper_ShapeProcess.hxx src/ShHealOper/ShHealOper_SpiltCurve2d.hxx src/ShHealOper/ShHealOper_SplitCurve2d.cxx src/ShHealOper/ShHealOper_SplitCurve2d.hxx src/ShHealOper/ShHealOper_SplitCurve3d.cxx src/ShHealOper/ShHealOper_SplitCurve3d.hxx src/ShHealOper/ShHealOper_Tool.cxx src/ShHealOper/ShHealOper_Tool.hxx src/TransformationGUI/Makefile.in src/TransformationGUI/TransformationGUI.cxx src/TransformationGUI/TransformationGUI.h src/TransformationGUI/TransformationGUI_MirrorDlg.cxx src/TransformationGUI/TransformationGUI_MirrorDlg.h src/TransformationGUI/TransformationGUI_MultiRotationDlg.cxx src/TransformationGUI/TransformationGUI_MultiRotationDlg.h src/TransformationGUI/TransformationGUI_MultiTranslationDlg.cxx src/TransformationGUI/TransformationGUI_MultiTranslationDlg.h src/TransformationGUI/TransformationGUI_OffsetDlg.cxx src/TransformationGUI/TransformationGUI_OffsetDlg.h src/TransformationGUI/TransformationGUI_PositionDlg.cxx src/TransformationGUI/TransformationGUI_PositionDlg.h src/TransformationGUI/TransformationGUI_RotationDlg.cxx src/TransformationGUI/TransformationGUI_RotationDlg.h src/TransformationGUI/TransformationGUI_ScaleDlg.cxx src/TransformationGUI/TransformationGUI_ScaleDlg.h src/TransformationGUI/TransformationGUI_TranslationDlg.cxx src/TransformationGUI/TransformationGUI_TranslationDlg.h --- INSTALL | 4 - LICENCE | 504 -- Makefile.in | 253 - adm_local/unix/config_files/README | 3 - adm_local/unix/make_commence.in | 254 - adm_local/unix/make_omniorb.in | 53 - bin/VERSION | 1 - build_configure | 215 - configure.in.base | 377 -- doc/Makefile.in | 40 - doc/salome/GEOM_index.html | 95 - doc/salome/Makefile.in | 44 - doc/salome/gui/GEOM/GEOM.log | 454 -- doc/salome/gui/GEOM/blocks.htm | 116 - .../GEOM/changing_displaying_parameters.htm | 246 - doc/salome/gui/GEOM/cshdat_robohelp.htm | 258 - doc/salome/gui/GEOM/cshdat_webhelp.htm | 251 - doc/salome/gui/GEOM/default.css | 101 - doc/salome/gui/GEOM/default.skn | 262 - doc/salome/gui/GEOM/default_ns.css | 118 - doc/salome/gui/GEOM/ehelp.xml | 10 - doc/salome/gui/GEOM/ehlpdhtm.js | 4239 ------------- .../gui/GEOM/files/introduction_to_geom.htm | 138 - .../files/salome2_sp3_basicgui_functions.htm | 869 --- ...salome2_sp3_basicgui_functions_image27.gif | Bin 880 -> 0 bytes ...salome2_sp3_basicgui_functions_image28.gif | Bin 904 -> 0 bytes ...salome2_sp3_basicgui_functions_image29.gif | Bin 945 -> 0 bytes ...salome2_sp3_basicgui_functions_image30.gif | Bin 932 -> 0 bytes ...salome2_sp3_basicgui_functions_image31.gif | Bin 938 -> 0 bytes ...salome2_sp3_basicgui_functions_image32.gif | Bin 900 -> 0 bytes ...salome2_sp3_basicgui_functions_image33.gif | Bin 918 -> 0 bytes ...salome2_sp3_basicgui_functions_image34.gif | Bin 929 -> 0 bytes .../salome2_sp3_booleangui_functions.htm | 327 - ...alome2_sp3_booleangui_functions_image1.gif | Bin 943 -> 0 bytes ...alome2_sp3_booleangui_functions_image2.gif | Bin 952 -> 0 bytes ...alome2_sp3_booleangui_functions_image3.gif | Bin 952 -> 0 bytes ...alome2_sp3_booleangui_functions_image4.gif | Bin 942 -> 0 bytes .../files/salome2_sp3_buildgui_functions.htm | 462 -- .../salome2_sp3_displaygui_functions.htm | 226 - ...lome2_sp3_displaygui_functions_image51.gif | Bin 946 -> 0 bytes ...lome2_sp3_displaygui_functions_image52.gif | Bin 958 -> 0 bytes ...lome2_sp3_displaygui_functions_image53.gif | Bin 950 -> 0 bytes ...lome2_sp3_displaygui_functions_image54.gif | Bin 994 -> 0 bytes ...lome2_sp3_displaygui_functions_image55.gif | Bin 987 -> 0 bytes .../salome2_sp3_generationgui_functions.htm | 309 - ...e2_sp3_generationgui_functions_image56.gif | Bin 961 -> 0 bytes ...e2_sp3_generationgui_functions_image57.gif | Bin 981 -> 0 bytes ...e2_sp3_generationgui_functions_image58.gif | Bin 965 -> 0 bytes ...e2_sp3_generationgui_functions_image59.gif | Bin 963 -> 0 bytes .../salome2_sp3_geomtoolsgui_functions.htm | 156 - .../salome2_sp3_measuregui_functions.htm | 589 -- ...lome2_sp3_measuregui_functions_image71.gif | Bin 934 -> 0 bytes ...lome2_sp3_measuregui_functions_image72.gif | Bin 962 -> 0 bytes ...lome2_sp3_measuregui_functions_image73.gif | Bin 960 -> 0 bytes ...lome2_sp3_measuregui_functions_image74.gif | Bin 982 -> 0 bytes ...lome2_sp3_measuregui_functions_image75.gif | Bin 938 -> 0 bytes ...lome2_sp3_measuregui_functions_image76.gif | Bin 949 -> 0 bytes ...lome2_sp3_measuregui_functions_image77.gif | Bin 941 -> 0 bytes ...lome2_sp3_measuregui_functions_image78.gif | Bin 1005 -> 0 bytes .../salome2_sp3_operationgui_functions.htm | 641 -- ...me2_sp3_operationgui_functions_image87.gif | Bin 967 -> 0 bytes ...me2_sp3_operationgui_functions_image88.gif | Bin 955 -> 0 bytes ...me2_sp3_operationgui_functions_image89.gif | Bin 937 -> 0 bytes ...me2_sp3_operationgui_functions_image90.gif | Bin 927 -> 0 bytes .../salome2_sp3_primitivegui_functions.htm | 389 -- ...e2_sp3_primitivegui_functions_image100.gif | Bin 945 -> 0 bytes ...e2_sp3_primitivegui_functions_image101.gif | Bin 967 -> 0 bytes ...e2_sp3_primitivegui_functions_image102.gif | Bin 974 -> 0 bytes ...e2_sp3_primitivegui_functions_image103.gif | Bin 953 -> 0 bytes ...me2_sp3_primitivegui_functions_image99.gif | Bin 960 -> 0 bytes .../files/salome2_sp3_repairgui_functions.htm | 897 --- ...lome2_sp3_repairgui_functions_image119.gif | Bin 970 -> 0 bytes ...lome2_sp3_repairgui_functions_image120.gif | Bin 944 -> 0 bytes ...lome2_sp3_repairgui_functions_image121.gif | Bin 972 -> 0 bytes ...lome2_sp3_repairgui_functions_image122.gif | Bin 971 -> 0 bytes ...alome2_sp3_transformationgui_functions.htm | 676 --- ...3_transformationgui_functions_image128.gif | Bin 929 -> 0 bytes ...3_transformationgui_functions_image129.gif | Bin 956 -> 0 bytes ...3_transformationgui_functions_image130.gif | Bin 935 -> 0 bytes ...3_transformationgui_functions_image131.gif | Bin 945 -> 0 bytes ...3_transformationgui_functions_image132.gif | Bin 949 -> 0 bytes ...3_transformationgui_functions_image133.gif | Bin 977 -> 0 bytes doc/salome/gui/GEOM/geom.htm | 139 - doc/salome/gui/GEOM/geom.html | 150 - doc/salome/gui/GEOM/geom.log | 476 -- doc/salome/gui/GEOM/geom_csh.htm | 106 - doc/salome/gui/GEOM/geom_csh.html | 100 - doc/salome/gui/GEOM/geom_help.html | 150 - doc/salome/gui/GEOM/geom_help_csh.html | 100 - doc/salome/gui/GEOM/geom_help_rhc.html | 100 - doc/salome/gui/GEOM/geom_rhc.htm | 106 - doc/salome/gui/GEOM/geom_rhc.html | 100 - doc/salome/gui/GEOM/i_blue.jpg | Bin 1337 -> 0 bytes doc/salome/gui/GEOM/image10.jpg | Bin 3449 -> 0 bytes doc/salome/gui/GEOM/image100.jpg | Bin 9555 -> 0 bytes doc/salome/gui/GEOM/image101.jpg | Bin 10879 -> 0 bytes doc/salome/gui/GEOM/image102.jpg | Bin 11226 -> 0 bytes doc/salome/gui/GEOM/image103.jpg | Bin 9032 -> 0 bytes doc/salome/gui/GEOM/image104.jpg | Bin 8781 -> 0 bytes doc/salome/gui/GEOM/image105.jpg | Bin 10760 -> 0 bytes doc/salome/gui/GEOM/image106.jpg | Bin 11193 -> 0 bytes doc/salome/gui/GEOM/image107.jpg | Bin 11641 -> 0 bytes doc/salome/gui/GEOM/image108.jpg | Bin 11642 -> 0 bytes doc/salome/gui/GEOM/image109.jpg | Bin 5022 -> 0 bytes doc/salome/gui/GEOM/image11.gif | Bin 1646 -> 0 bytes doc/salome/gui/GEOM/image11.jpg | Bin 2844 -> 0 bytes doc/salome/gui/GEOM/image110.jpg | Bin 5012 -> 0 bytes doc/salome/gui/GEOM/image111.jpg | Bin 8741 -> 0 bytes doc/salome/gui/GEOM/image112.jpg | Bin 2948 -> 0 bytes doc/salome/gui/GEOM/image113.jpg | Bin 2827 -> 0 bytes doc/salome/gui/GEOM/image114.jpg | Bin 8640 -> 0 bytes doc/salome/gui/GEOM/image115.jpg | Bin 9009 -> 0 bytes doc/salome/gui/GEOM/image116.jpg | Bin 9081 -> 0 bytes doc/salome/gui/GEOM/image117.jpg | Bin 9509 -> 0 bytes doc/salome/gui/GEOM/image118.jpg | Bin 10432 -> 0 bytes doc/salome/gui/GEOM/image119.jpg | Bin 9552 -> 0 bytes doc/salome/gui/GEOM/image12.gif | Bin 1604 -> 0 bytes doc/salome/gui/GEOM/image12.jpg | Bin 3830 -> 0 bytes doc/salome/gui/GEOM/image120.jpg | Bin 8570 -> 0 bytes doc/salome/gui/GEOM/image121.jpg | Bin 3718 -> 0 bytes doc/salome/gui/GEOM/image122.jpg | Bin 4025 -> 0 bytes doc/salome/gui/GEOM/image123.jpg | Bin 9483 -> 0 bytes doc/salome/gui/GEOM/image124.jpg | Bin 6196 -> 0 bytes doc/salome/gui/GEOM/image125.jpg | Bin 11230 -> 0 bytes doc/salome/gui/GEOM/image126.jpg | Bin 12022 -> 0 bytes doc/salome/gui/GEOM/image127.jpg | Bin 3736 -> 0 bytes doc/salome/gui/GEOM/image128.jpg | Bin 1902 -> 0 bytes doc/salome/gui/GEOM/image129.jpg | Bin 1964 -> 0 bytes doc/salome/gui/GEOM/image13.gif | Bin 1499 -> 0 bytes doc/salome/gui/GEOM/image13.jpg | Bin 22439 -> 0 bytes doc/salome/gui/GEOM/image130.jpg | Bin 3272 -> 0 bytes doc/salome/gui/GEOM/image131.jpg | Bin 9984 -> 0 bytes doc/salome/gui/GEOM/image132.jpg | Bin 10001 -> 0 bytes doc/salome/gui/GEOM/image133.jpg | Bin 3685 -> 0 bytes doc/salome/gui/GEOM/image134.jpg | Bin 11106 -> 0 bytes doc/salome/gui/GEOM/image135.jpg | Bin 3633 -> 0 bytes doc/salome/gui/GEOM/image136.jpg | Bin 2945 -> 0 bytes doc/salome/gui/GEOM/image137.jpg | Bin 4060 -> 0 bytes doc/salome/gui/GEOM/image138.jpg | Bin 5792 -> 0 bytes doc/salome/gui/GEOM/image139.jpg | Bin 7526 -> 0 bytes doc/salome/gui/GEOM/image14.gif | Bin 1309 -> 0 bytes doc/salome/gui/GEOM/image14.jpg | Bin 8265 -> 0 bytes doc/salome/gui/GEOM/image140.jpg | Bin 4364 -> 0 bytes doc/salome/gui/GEOM/image141.jpg | Bin 5916 -> 0 bytes doc/salome/gui/GEOM/image142.jpg | Bin 3170 -> 0 bytes doc/salome/gui/GEOM/image144.jpg | Bin 22434 -> 0 bytes doc/salome/gui/GEOM/image145.jpg | Bin 10447 -> 0 bytes doc/salome/gui/GEOM/image146.jpg | Bin 11320 -> 0 bytes doc/salome/gui/GEOM/image147.jpg | Bin 4258 -> 0 bytes doc/salome/gui/GEOM/image149.jpg | Bin 3666 -> 0 bytes doc/salome/gui/GEOM/image15.gif | Bin 1790 -> 0 bytes doc/salome/gui/GEOM/image15.jpg | Bin 12330 -> 0 bytes doc/salome/gui/GEOM/image150.jpg | Bin 4622 -> 0 bytes doc/salome/gui/GEOM/image151.jpg | Bin 10219 -> 0 bytes doc/salome/gui/GEOM/image152.jpg | Bin 9107 -> 0 bytes doc/salome/gui/GEOM/image154.jpg | Bin 15519 -> 0 bytes doc/salome/gui/GEOM/image156.jpg | Bin 13889 -> 0 bytes doc/salome/gui/GEOM/image158.jpg | Bin 18417 -> 0 bytes doc/salome/gui/GEOM/image16.gif | Bin 1442 -> 0 bytes doc/salome/gui/GEOM/image16.jpg | Bin 6259 -> 0 bytes doc/salome/gui/GEOM/image160.jpg | Bin 16741 -> 0 bytes doc/salome/gui/GEOM/image161.jpg | Bin 13465 -> 0 bytes doc/salome/gui/GEOM/image163.jpg | Bin 6781 -> 0 bytes doc/salome/gui/GEOM/image164.jpg | Bin 5424 -> 0 bytes doc/salome/gui/GEOM/image165.jpg | Bin 9596 -> 0 bytes doc/salome/gui/GEOM/image166.jpg | Bin 9776 -> 0 bytes doc/salome/gui/GEOM/image167.jpg | Bin 5505 -> 0 bytes doc/salome/gui/GEOM/image168.jpg | Bin 6169 -> 0 bytes doc/salome/gui/GEOM/image169.jpg | Bin 12021 -> 0 bytes doc/salome/gui/GEOM/image17.gif | Bin 1721 -> 0 bytes doc/salome/gui/GEOM/image17.jpg | Bin 7792 -> 0 bytes doc/salome/gui/GEOM/image170.jpg | Bin 8878 -> 0 bytes doc/salome/gui/GEOM/image171.jpg | Bin 8023 -> 0 bytes doc/salome/gui/GEOM/image172.jpg | Bin 7109 -> 0 bytes doc/salome/gui/GEOM/image173.jpg | Bin 9979 -> 0 bytes doc/salome/gui/GEOM/image175.jpg | Bin 9324 -> 0 bytes doc/salome/gui/GEOM/image176.jpg | Bin 13599 -> 0 bytes doc/salome/gui/GEOM/image179.jpg | Bin 18423 -> 0 bytes doc/salome/gui/GEOM/image18.jpg | Bin 3378 -> 0 bytes doc/salome/gui/GEOM/image180.jpg | Bin 10039 -> 0 bytes doc/salome/gui/GEOM/image181.jpg | Bin 8500 -> 0 bytes doc/salome/gui/GEOM/image182.jpg | Bin 16425 -> 0 bytes doc/salome/gui/GEOM/image183.jpg | Bin 14260 -> 0 bytes doc/salome/gui/GEOM/image184.jpg | Bin 16038 -> 0 bytes doc/salome/gui/GEOM/image185.jpg | Bin 6145 -> 0 bytes doc/salome/gui/GEOM/image186.jpg | Bin 16278 -> 0 bytes doc/salome/gui/GEOM/image187.jpg | Bin 20153 -> 0 bytes doc/salome/gui/GEOM/image188.jpg | Bin 18274 -> 0 bytes doc/salome/gui/GEOM/image189.jpg | Bin 24603 -> 0 bytes doc/salome/gui/GEOM/image19.gif | Bin 1801 -> 0 bytes doc/salome/gui/GEOM/image19.jpg | Bin 7809 -> 0 bytes doc/salome/gui/GEOM/image190.jpg | Bin 15206 -> 0 bytes doc/salome/gui/GEOM/image191.jpg | Bin 20633 -> 0 bytes doc/salome/gui/GEOM/image192.jpg | Bin 13112 -> 0 bytes doc/salome/gui/GEOM/image193.jpg | Bin 9769 -> 0 bytes doc/salome/gui/GEOM/image194.jpg | Bin 12744 -> 0 bytes doc/salome/gui/GEOM/image196.jpg | Bin 12763 -> 0 bytes doc/salome/gui/GEOM/image197.jpg | Bin 9273 -> 0 bytes doc/salome/gui/GEOM/image199.jpg | Bin 13440 -> 0 bytes doc/salome/gui/GEOM/image2.gif | Bin 1447 -> 0 bytes doc/salome/gui/GEOM/image20.gif | Bin 1628 -> 0 bytes doc/salome/gui/GEOM/image20.jpg | Bin 7902 -> 0 bytes doc/salome/gui/GEOM/image200.jpg | Bin 13194 -> 0 bytes doc/salome/gui/GEOM/image201.jpg | Bin 5193 -> 0 bytes doc/salome/gui/GEOM/image202.jpg | Bin 6377 -> 0 bytes doc/salome/gui/GEOM/image203.jpg | Bin 14865 -> 0 bytes doc/salome/gui/GEOM/image204.jpg | Bin 5191 -> 0 bytes doc/salome/gui/GEOM/image205.jpg | Bin 13829 -> 0 bytes doc/salome/gui/GEOM/image206.jpg | Bin 4983 -> 0 bytes doc/salome/gui/GEOM/image207.jpg | Bin 13990 -> 0 bytes doc/salome/gui/GEOM/image208.jpg | Bin 10477 -> 0 bytes doc/salome/gui/GEOM/image209.jpg | Bin 11139 -> 0 bytes doc/salome/gui/GEOM/image21.gif | Bin 1407 -> 0 bytes doc/salome/gui/GEOM/image21.jpg | Bin 8786 -> 0 bytes doc/salome/gui/GEOM/image210.jpg | Bin 12886 -> 0 bytes doc/salome/gui/GEOM/image211.jpg | Bin 12992 -> 0 bytes doc/salome/gui/GEOM/image212.jpg | Bin 11806 -> 0 bytes doc/salome/gui/GEOM/image213.jpg | Bin 12481 -> 0 bytes doc/salome/gui/GEOM/image214.jpg | Bin 12759 -> 0 bytes doc/salome/gui/GEOM/image215.jpg | Bin 10568 -> 0 bytes doc/salome/gui/GEOM/image216.jpg | Bin 12504 -> 0 bytes doc/salome/gui/GEOM/image217.jpg | Bin 11989 -> 0 bytes doc/salome/gui/GEOM/image218.jpg | Bin 13752 -> 0 bytes doc/salome/gui/GEOM/image219.jpg | Bin 12098 -> 0 bytes doc/salome/gui/GEOM/image22.gif | Bin 1450 -> 0 bytes doc/salome/gui/GEOM/image22.jpg | Bin 8692 -> 0 bytes doc/salome/gui/GEOM/image220.jpg | Bin 18424 -> 0 bytes doc/salome/gui/GEOM/image221.jpg | Bin 12696 -> 0 bytes doc/salome/gui/GEOM/image222.jpg | Bin 13381 -> 0 bytes doc/salome/gui/GEOM/image223.jpg | Bin 12992 -> 0 bytes doc/salome/gui/GEOM/image224.jpg | Bin 13926 -> 0 bytes doc/salome/gui/GEOM/image225.jpg | Bin 13543 -> 0 bytes doc/salome/gui/GEOM/image226.jpg | Bin 15066 -> 0 bytes doc/salome/gui/GEOM/image227.jpg | Bin 14432 -> 0 bytes doc/salome/gui/GEOM/image228.jpg | Bin 12578 -> 0 bytes doc/salome/gui/GEOM/image229.jpg | Bin 12042 -> 0 bytes doc/salome/gui/GEOM/image23.gif | Bin 1588 -> 0 bytes doc/salome/gui/GEOM/image23.jpg | Bin 8722 -> 0 bytes doc/salome/gui/GEOM/image230.jpg | Bin 12888 -> 0 bytes doc/salome/gui/GEOM/image231.jpg | Bin 12493 -> 0 bytes doc/salome/gui/GEOM/image233.jpg | Bin 11376 -> 0 bytes doc/salome/gui/GEOM/image234.jpg | Bin 13014 -> 0 bytes doc/salome/gui/GEOM/image235.jpg | Bin 11389 -> 0 bytes doc/salome/gui/GEOM/image236.jpg | Bin 14574 -> 0 bytes doc/salome/gui/GEOM/image237.jpg | Bin 13535 -> 0 bytes doc/salome/gui/GEOM/image238.jpg | Bin 14133 -> 0 bytes doc/salome/gui/GEOM/image239.jpg | Bin 16510 -> 0 bytes doc/salome/gui/GEOM/image24.gif | Bin 1119 -> 0 bytes doc/salome/gui/GEOM/image24.jpg | Bin 8813 -> 0 bytes doc/salome/gui/GEOM/image240.jpg | Bin 14340 -> 0 bytes doc/salome/gui/GEOM/image241.jpg | Bin 14291 -> 0 bytes doc/salome/gui/GEOM/image242.jpg | Bin 9261 -> 0 bytes doc/salome/gui/GEOM/image243.jpg | Bin 12109 -> 0 bytes doc/salome/gui/GEOM/image244.jpg | Bin 13191 -> 0 bytes doc/salome/gui/GEOM/image245.jpg | Bin 11258 -> 0 bytes doc/salome/gui/GEOM/image246.jpg | Bin 13145 -> 0 bytes doc/salome/gui/GEOM/image247.jpg | Bin 15459 -> 0 bytes doc/salome/gui/GEOM/image248.jpg | Bin 14906 -> 0 bytes doc/salome/gui/GEOM/image249.jpg | Bin 13366 -> 0 bytes doc/salome/gui/GEOM/image25.gif | Bin 1106 -> 0 bytes doc/salome/gui/GEOM/image250.jpg | Bin 13950 -> 0 bytes doc/salome/gui/GEOM/image251.jpg | Bin 14433 -> 0 bytes doc/salome/gui/GEOM/image252.jpg | Bin 17788 -> 0 bytes doc/salome/gui/GEOM/image253.jpg | Bin 12988 -> 0 bytes doc/salome/gui/GEOM/image254.jpg | Bin 15156 -> 0 bytes doc/salome/gui/GEOM/image255.jpg | Bin 15145 -> 0 bytes doc/salome/gui/GEOM/image256.jpg | Bin 14278 -> 0 bytes doc/salome/gui/GEOM/image257.jpg | Bin 14556 -> 0 bytes doc/salome/gui/GEOM/image258.jpg | Bin 10302 -> 0 bytes doc/salome/gui/GEOM/image259.jpg | Bin 11339 -> 0 bytes doc/salome/gui/GEOM/image26.jpg | Bin 9713 -> 0 bytes doc/salome/gui/GEOM/image260.jpg | Bin 9346 -> 0 bytes doc/salome/gui/GEOM/image261.jpg | Bin 9566 -> 0 bytes doc/salome/gui/GEOM/image262.jpg | Bin 11480 -> 0 bytes doc/salome/gui/GEOM/image263.jpg | Bin 8481 -> 0 bytes doc/salome/gui/GEOM/image264.jpg | Bin 10052 -> 0 bytes doc/salome/gui/GEOM/image265.jpg | Bin 13626 -> 0 bytes doc/salome/gui/GEOM/image266.jpg | Bin 12516 -> 0 bytes doc/salome/gui/GEOM/image267.jpg | Bin 12666 -> 0 bytes doc/salome/gui/GEOM/image268.jpg | Bin 12708 -> 0 bytes doc/salome/gui/GEOM/image269.jpg | Bin 13118 -> 0 bytes doc/salome/gui/GEOM/image27.jpg | Bin 2716 -> 0 bytes doc/salome/gui/GEOM/image270.jpg | Bin 13289 -> 0 bytes doc/salome/gui/GEOM/image271.jpg | Bin 12548 -> 0 bytes doc/salome/gui/GEOM/image272.jpg | Bin 13310 -> 0 bytes doc/salome/gui/GEOM/image273.jpg | Bin 12706 -> 0 bytes doc/salome/gui/GEOM/image274.jpg | Bin 12961 -> 0 bytes doc/salome/gui/GEOM/image275.jpg | Bin 11643 -> 0 bytes doc/salome/gui/GEOM/image276.jpg | Bin 9985 -> 0 bytes doc/salome/gui/GEOM/image277.jpg | Bin 11571 -> 0 bytes doc/salome/gui/GEOM/image278.jpg | Bin 13102 -> 0 bytes doc/salome/gui/GEOM/image279.jpg | Bin 15226 -> 0 bytes doc/salome/gui/GEOM/image28.jpg | Bin 9703 -> 0 bytes doc/salome/gui/GEOM/image280.jpg | Bin 15180 -> 0 bytes doc/salome/gui/GEOM/image281.jpg | Bin 14398 -> 0 bytes doc/salome/gui/GEOM/image282.jpg | Bin 14897 -> 0 bytes doc/salome/gui/GEOM/image283.jpg | Bin 14994 -> 0 bytes doc/salome/gui/GEOM/image284.jpg | Bin 14063 -> 0 bytes doc/salome/gui/GEOM/image285.jpg | Bin 7504 -> 0 bytes doc/salome/gui/GEOM/image286.jpg | Bin 14002 -> 0 bytes doc/salome/gui/GEOM/image287.jpg | Bin 12366 -> 0 bytes doc/salome/gui/GEOM/image288.jpg | Bin 15251 -> 0 bytes doc/salome/gui/GEOM/image289.jpg | Bin 13516 -> 0 bytes doc/salome/gui/GEOM/image29.gif | Bin 914 -> 0 bytes doc/salome/gui/GEOM/image29.jpg | Bin 10342 -> 0 bytes doc/salome/gui/GEOM/image290.jpg | Bin 14626 -> 0 bytes doc/salome/gui/GEOM/image291.jpg | Bin 11450 -> 0 bytes doc/salome/gui/GEOM/image292.jpg | Bin 12912 -> 0 bytes doc/salome/gui/GEOM/image293.jpg | Bin 16335 -> 0 bytes doc/salome/gui/GEOM/image294.jpg | Bin 12981 -> 0 bytes doc/salome/gui/GEOM/image295.jpg | Bin 18252 -> 0 bytes doc/salome/gui/GEOM/image296.jpg | Bin 17683 -> 0 bytes doc/salome/gui/GEOM/image297.jpg | Bin 16645 -> 0 bytes doc/salome/gui/GEOM/image298.jpg | Bin 17987 -> 0 bytes doc/salome/gui/GEOM/image299.jpg | Bin 14312 -> 0 bytes doc/salome/gui/GEOM/image3.jpg | Bin 28699 -> 0 bytes doc/salome/gui/GEOM/image300.jpg | Bin 13896 -> 0 bytes doc/salome/gui/GEOM/image32.gif | Bin 914 -> 0 bytes doc/salome/gui/GEOM/image35.gif | Bin 870 -> 0 bytes doc/salome/gui/GEOM/image37.gif | Bin 956 -> 0 bytes doc/salome/gui/GEOM/image4.gif | Bin 1513 -> 0 bytes doc/salome/gui/GEOM/image41.gif | Bin 957 -> 0 bytes doc/salome/gui/GEOM/image42.gif | Bin 917 -> 0 bytes doc/salome/gui/GEOM/image44.gif | Bin 924 -> 0 bytes doc/salome/gui/GEOM/image49.gif | Bin 863 -> 0 bytes doc/salome/gui/GEOM/image5.gif | Bin 1274 -> 0 bytes doc/salome/gui/GEOM/image5.jpg | Bin 2485 -> 0 bytes doc/salome/gui/GEOM/image51.gif | Bin 954 -> 0 bytes doc/salome/gui/GEOM/image51.jpg | Bin 8646 -> 0 bytes doc/salome/gui/GEOM/image52.gif | Bin 973 -> 0 bytes doc/salome/gui/GEOM/image52.jpg | Bin 2701 -> 0 bytes doc/salome/gui/GEOM/image53.gif | Bin 987 -> 0 bytes doc/salome/gui/GEOM/image53.jpg | Bin 4321 -> 0 bytes doc/salome/gui/GEOM/image54.jpg | Bin 4615 -> 0 bytes doc/salome/gui/GEOM/image55.jpg | Bin 9078 -> 0 bytes doc/salome/gui/GEOM/image56.gif | Bin 979 -> 0 bytes doc/salome/gui/GEOM/image56.jpg | Bin 10965 -> 0 bytes doc/salome/gui/GEOM/image57.gif | Bin 990 -> 0 bytes doc/salome/gui/GEOM/image57.jpg | Bin 10819 -> 0 bytes doc/salome/gui/GEOM/image58.jpg | Bin 10119 -> 0 bytes doc/salome/gui/GEOM/image59.gif | Bin 963 -> 0 bytes doc/salome/gui/GEOM/image59.jpg | Bin 9005 -> 0 bytes doc/salome/gui/GEOM/image6.gif | Bin 1938 -> 0 bytes doc/salome/gui/GEOM/image60.jpg | Bin 10026 -> 0 bytes doc/salome/gui/GEOM/image61.gif | Bin 975 -> 0 bytes doc/salome/gui/GEOM/image61.jpg | Bin 9786 -> 0 bytes doc/salome/gui/GEOM/image62.jpg | Bin 10428 -> 0 bytes doc/salome/gui/GEOM/image63.jpg | Bin 9001 -> 0 bytes doc/salome/gui/GEOM/image64.gif | Bin 5504 -> 0 bytes doc/salome/gui/GEOM/image65.jpg | Bin 8853 -> 0 bytes doc/salome/gui/GEOM/image66.jpg | Bin 8483 -> 0 bytes doc/salome/gui/GEOM/image67.jpg | Bin 2823 -> 0 bytes doc/salome/gui/GEOM/image68.jpg | Bin 9523 -> 0 bytes doc/salome/gui/GEOM/image69.jpg | Bin 10495 -> 0 bytes doc/salome/gui/GEOM/image7.gif | Bin 1529 -> 0 bytes doc/salome/gui/GEOM/image7.jpg | Bin 3007 -> 0 bytes doc/salome/gui/GEOM/image70.jpg | Bin 9666 -> 0 bytes doc/salome/gui/GEOM/image71.jpg | Bin 8737 -> 0 bytes doc/salome/gui/GEOM/image72.jpg | Bin 9271 -> 0 bytes doc/salome/gui/GEOM/image73.jpg | Bin 9992 -> 0 bytes doc/salome/gui/GEOM/image74.jpg | Bin 9311 -> 0 bytes doc/salome/gui/GEOM/image75.jpg | Bin 9913 -> 0 bytes doc/salome/gui/GEOM/image76.jpg | Bin 3194 -> 0 bytes doc/salome/gui/GEOM/image77.jpg | Bin 8333 -> 0 bytes doc/salome/gui/GEOM/image78.jpg | Bin 3702 -> 0 bytes doc/salome/gui/GEOM/image79.jpg | Bin 3637 -> 0 bytes doc/salome/gui/GEOM/image8.gif | Bin 1675 -> 0 bytes doc/salome/gui/GEOM/image8.jpg | Bin 3262 -> 0 bytes doc/salome/gui/GEOM/image80.jpg | Bin 3884 -> 0 bytes doc/salome/gui/GEOM/image81.jpg | Bin 5230 -> 0 bytes doc/salome/gui/GEOM/image82.jpg | Bin 3527 -> 0 bytes doc/salome/gui/GEOM/image83.jpg | Bin 3741 -> 0 bytes doc/salome/gui/GEOM/image84.jpg | Bin 3512 -> 0 bytes doc/salome/gui/GEOM/image85.jpg | Bin 3785 -> 0 bytes doc/salome/gui/GEOM/image86.jpg | Bin 11657 -> 0 bytes doc/salome/gui/GEOM/image87.jpg | Bin 10601 -> 0 bytes doc/salome/gui/GEOM/image88.jpg | Bin 9341 -> 0 bytes doc/salome/gui/GEOM/image89.jpg | Bin 9470 -> 0 bytes doc/salome/gui/GEOM/image9.gif | Bin 1352 -> 0 bytes doc/salome/gui/GEOM/image9.jpg | Bin 2956 -> 0 bytes doc/salome/gui/GEOM/image90.jpg | Bin 9457 -> 0 bytes doc/salome/gui/GEOM/image91.jpg | Bin 10242 -> 0 bytes doc/salome/gui/GEOM/image92.jpg | Bin 10331 -> 0 bytes doc/salome/gui/GEOM/image93.jpg | Bin 10323 -> 0 bytes doc/salome/gui/GEOM/image94.jpg | Bin 2935 -> 0 bytes doc/salome/gui/GEOM/image95.jpg | Bin 3417 -> 0 bytes doc/salome/gui/GEOM/image96.jpg | Bin 3599 -> 0 bytes doc/salome/gui/GEOM/image97.jpg | Bin 3574 -> 0 bytes doc/salome/gui/GEOM/image98.jpg | Bin 2921 -> 0 bytes doc/salome/gui/GEOM/image99.jpg | Bin 8883 -> 0 bytes doc/salome/gui/GEOM/newentity_blocks.htm | 319 - ...salome2_sp3_buildgui_functions_image13.gif | Bin 987 -> 0 bytes ...salome2_sp3_buildgui_functions_image14.gif | Bin 886 -> 0 bytes ...salome2_sp3_buildgui_functions_image15.gif | Bin 922 -> 0 bytes ...salome2_sp3_buildgui_functions_image16.gif | Bin 922 -> 0 bytes ...salome2_sp3_buildgui_functions_image17.gif | Bin 952 -> 0 bytes ...salome2_sp3_buildgui_functions_image18.gif | Bin 960 -> 0 bytes ...salome2_sp3_buildgui_functions_image19.gif | Bin 932 -> 0 bytes doc/salome/gui/GEOM/sketcher.htm | 202 - doc/salome/gui/GEOM/webhelp.cab | Bin 89619 -> 0 bytes doc/salome/gui/GEOM/webhelp.jar | Bin 134517 -> 0 bytes doc/salome/gui/GEOM/whcsh_home.htm | 600 -- doc/salome/gui/GEOM/whcshdata.htm | 87 - doc/salome/gui/GEOM/whdata/whftdata.js | 25 - doc/salome/gui/GEOM/whdata/whftdata0.htm | 35 - doc/salome/gui/GEOM/whdata/whftdata0.xml | 21 - doc/salome/gui/GEOM/whdata/whfts.htm | 18 - doc/salome/gui/GEOM/whdata/whfts.js | 40 - doc/salome/gui/GEOM/whdata/whfts.xml | 7 - doc/salome/gui/GEOM/whdata/whfwdata.js | 37 - doc/salome/gui/GEOM/whdata/whfwdata0.htm | 782 --- doc/salome/gui/GEOM/whdata/whfwdata0.xml | 728 --- doc/salome/gui/GEOM/whdata/whfwdata1.htm | 287 - doc/salome/gui/GEOM/whdata/whfwdata2.htm | 222 - doc/salome/gui/GEOM/whdata/whgdata.js | 26 - doc/salome/gui/GEOM/whdata/whgdata0.htm | 33 - doc/salome/gui/GEOM/whdata/whgdata0.xml | 22 - doc/salome/gui/GEOM/whdata/whglo.htm | 16 - doc/salome/gui/GEOM/whdata/whglo.js | 34 - doc/salome/gui/GEOM/whdata/whglo.xml | 5 - doc/salome/gui/GEOM/whdata/whidata.js | 89 - doc/salome/gui/GEOM/whdata/whidx.htm | 15 - doc/salome/gui/GEOM/whdata/whidx.js | 34 - doc/salome/gui/GEOM/whdata/whidx.xml | 4 - doc/salome/gui/GEOM/whdata/whtdata.js | 64 - doc/salome/gui/GEOM/whdata/whtdata0.htm | 35 - doc/salome/gui/GEOM/whdata/whtdata0.xml | 28 - doc/salome/gui/GEOM/whdata/whtoc.htm | 16 - doc/salome/gui/GEOM/whdata/whtoc.js | 31 - doc/salome/gui/GEOM/whdata/whtoc.xml | 4 - doc/salome/gui/GEOM/whestart.ico | Bin 10134 -> 0 bytes doc/salome/gui/GEOM/whfbody.htm | 37 - doc/salome/gui/GEOM/whfdhtml.htm | 30 - doc/salome/gui/GEOM/whfform.htm | 136 - doc/salome/gui/GEOM/whfhost.js | 945 --- doc/salome/gui/GEOM/whform.js | 216 - doc/salome/gui/GEOM/whframes.js | 79 - doc/salome/gui/GEOM/whgbody.htm | 35 - doc/salome/gui/GEOM/whgdata/whexpbar.gif | Bin 67 -> 0 bytes doc/salome/gui/GEOM/whgdata/whlstf0.htm | 48 - doc/salome/gui/GEOM/whgdata/whlstf1.htm | 47 - doc/salome/gui/GEOM/whgdata/whlstf2.htm | 55 - doc/salome/gui/GEOM/whgdata/whlstf3.htm | 51 - doc/salome/gui/GEOM/whgdata/whlstf4.htm | 45 - doc/salome/gui/GEOM/whgdata/whlstf5.htm | 52 - doc/salome/gui/GEOM/whgdata/whlstfl0.htm | 45 - doc/salome/gui/GEOM/whgdata/whlstfl1.htm | 45 - doc/salome/gui/GEOM/whgdata/whlstfl10.htm | 45 - doc/salome/gui/GEOM/whgdata/whlstfl11.htm | 45 - doc/salome/gui/GEOM/whgdata/whlstfl12.htm | 45 - doc/salome/gui/GEOM/whgdata/whlstfl13.htm | 45 - doc/salome/gui/GEOM/whgdata/whlstfl14.htm | 45 - doc/salome/gui/GEOM/whgdata/whlstfl15.htm | 45 - doc/salome/gui/GEOM/whgdata/whlstfl16.htm | 45 - doc/salome/gui/GEOM/whgdata/whlstfl17.htm | 45 - doc/salome/gui/GEOM/whgdata/whlstfl18.htm | 45 - doc/salome/gui/GEOM/whgdata/whlstfl19.htm | 45 - doc/salome/gui/GEOM/whgdata/whlstfl2.htm | 45 - doc/salome/gui/GEOM/whgdata/whlstfl20.htm | 45 - doc/salome/gui/GEOM/whgdata/whlstfl21.htm | 45 - doc/salome/gui/GEOM/whgdata/whlstfl22.htm | 45 - doc/salome/gui/GEOM/whgdata/whlstfl23.htm | 45 - doc/salome/gui/GEOM/whgdata/whlstfl3.htm | 45 - doc/salome/gui/GEOM/whgdata/whlstfl4.htm | 45 - doc/salome/gui/GEOM/whgdata/whlstfl5.htm | 45 - doc/salome/gui/GEOM/whgdata/whlstfl6.htm | 45 - doc/salome/gui/GEOM/whgdata/whlstfl7.htm | 45 - doc/salome/gui/GEOM/whgdata/whlstfl8.htm | 45 - doc/salome/gui/GEOM/whgdata/whlstfl9.htm | 45 - doc/salome/gui/GEOM/whgdata/whlstg0.htm | 75 - doc/salome/gui/GEOM/whgdata/whlsti0.htm | 39 - doc/salome/gui/GEOM/whgdata/whlstt0.htm | 51 - doc/salome/gui/GEOM/whgdata/whlstt1.htm | 57 - doc/salome/gui/GEOM/whgdata/whlstt2.htm | 59 - doc/salome/gui/GEOM/whgdata/whlstt3.htm | 64 - doc/salome/gui/GEOM/whgdata/whlstt4.htm | 61 - doc/salome/gui/GEOM/whgdata/whnvf30.htm | 13 - doc/salome/gui/GEOM/whgdata/whnvf31.htm | 15 - doc/salome/gui/GEOM/whgdata/whnvf32.htm | 15 - doc/salome/gui/GEOM/whgdata/whnvf33.htm | 15 - doc/salome/gui/GEOM/whgdata/whnvl31.htm | 43 - doc/salome/gui/GEOM/whgdata/whnvl32.htm | 72 - doc/salome/gui/GEOM/whgdata/whnvl33.htm | 72 - doc/salome/gui/GEOM/whgdata/whnvp30.htm | 16 - doc/salome/gui/GEOM/whgdata/whnvp31.htm | 16 - doc/salome/gui/GEOM/whgdata/whnvp32.htm | 16 - doc/salome/gui/GEOM/whgdata/whnvp33.htm | 16 - doc/salome/gui/GEOM/whgdata/whnvt30.htm | 47 - doc/salome/gui/GEOM/whgdata/whnvt31.htm | 45 - doc/salome/gui/GEOM/whgdata/whnvt32.htm | 45 - doc/salome/gui/GEOM/whgdata/whnvt33.htm | 45 - doc/salome/gui/GEOM/whgdef.htm | 98 - doc/salome/gui/GEOM/whgdhtml.htm | 150 - doc/salome/gui/GEOM/whghost.js | 247 - doc/salome/gui/GEOM/whhost.js | 1305 ---- doc/salome/gui/GEOM/whibody.htm | 284 - doc/salome/gui/GEOM/whidhtml.htm | 30 - doc/salome/gui/GEOM/whiform.htm | 91 - doc/salome/gui/GEOM/whihost.js | 424 -- doc/salome/gui/GEOM/whlang.js | 453 -- doc/salome/gui/GEOM/whmozemu.js | 67 - doc/salome/gui/GEOM/whmsg.js | 69 - doc/salome/gui/GEOM/whnjs.htm | 25 - doc/salome/gui/GEOM/whphost.js | 581 -- doc/salome/gui/GEOM/whproj.htm | 24 - doc/salome/gui/GEOM/whproj.js | 85 - doc/salome/gui/GEOM/whproj.xml | 3 - doc/salome/gui/GEOM/whproxy.js | 74 - doc/salome/gui/GEOM/whres.xml | 256 - doc/salome/gui/GEOM/whrstart.ico | Bin 10134 -> 0 bytes doc/salome/gui/GEOM/whskin_banner.htm | 49 - doc/salome/gui/GEOM/whskin_blank.htm | 10 - doc/salome/gui/GEOM/whskin_frmset01.htm | 172 - doc/salome/gui/GEOM/whskin_frmset010.htm | 50 - doc/salome/gui/GEOM/whskin_homepage.htm | 139 - doc/salome/gui/GEOM/whskin_info.htm | 20 - doc/salome/gui/GEOM/whskin_mbars.htm | 59 - doc/salome/gui/GEOM/whskin_papplet.htm | 360 -- doc/salome/gui/GEOM/whskin_pdhtml.htm | 64 - doc/salome/gui/GEOM/whskin_pickup.htm | 229 - doc/salome/gui/GEOM/whskin_plist.htm | 238 - doc/salome/gui/GEOM/whskin_tbars.htm | 101 - doc/salome/gui/GEOM/whskin_tw.htm | 63 - doc/salome/gui/GEOM/whst_topics.xml | 82 - doc/salome/gui/GEOM/whstart.ico | Bin 10134 -> 0 bytes doc/salome/gui/GEOM/whstart.js | 432 -- doc/salome/gui/GEOM/whstub.js | 159 - doc/salome/gui/GEOM/wht_abge.jpg | Bin 6210 -> 0 bytes doc/salome/gui/GEOM/wht_abgi.jpg | Bin 4967 -> 0 bytes doc/salome/gui/GEOM/wht_abgw.jpg | Bin 5659 -> 0 bytes doc/salome/gui/GEOM/wht_abte.jpg | Bin 9810 -> 0 bytes doc/salome/gui/GEOM/wht_abti.jpg | Bin 3863 -> 0 bytes doc/salome/gui/GEOM/wht_abtw.jpg | Bin 3973 -> 0 bytes doc/salome/gui/GEOM/wht_fts_h.gif | Bin 188 -> 0 bytes doc/salome/gui/GEOM/wht_fts_n.gif | Bin 188 -> 0 bytes doc/salome/gui/GEOM/wht_glo_h.gif | Bin 142 -> 0 bytes doc/salome/gui/GEOM/wht_glo_n.gif | Bin 142 -> 0 bytes doc/salome/gui/GEOM/wht_go.gif | Bin 260 -> 0 bytes doc/salome/gui/GEOM/wht_hide.gif | Bin 842 -> 0 bytes doc/salome/gui/GEOM/wht_idx_h.gif | Bin 168 -> 0 bytes doc/salome/gui/GEOM/wht_idx_n.gif | Bin 168 -> 0 bytes doc/salome/gui/GEOM/wht_logo1.gif | Bin 1405 -> 0 bytes doc/salome/gui/GEOM/wht_logo2.gif | Bin 1393 -> 0 bytes doc/salome/gui/GEOM/wht_next.gif | Bin 73 -> 0 bytes doc/salome/gui/GEOM/wht_next_g.gif | Bin 73 -> 0 bytes doc/salome/gui/GEOM/wht_prev.gif | Bin 73 -> 0 bytes doc/salome/gui/GEOM/wht_prev_g.gif | Bin 73 -> 0 bytes doc/salome/gui/GEOM/wht_spac.gif | Bin 43 -> 0 bytes doc/salome/gui/GEOM/wht_sync.gif | Bin 846 -> 0 bytes doc/salome/gui/GEOM/wht_tab0.gif | Bin 285 -> 0 bytes doc/salome/gui/GEOM/wht_tab1.gif | Bin 237 -> 0 bytes doc/salome/gui/GEOM/wht_tab2.gif | Bin 226 -> 0 bytes doc/salome/gui/GEOM/wht_tab3.gif | Bin 209 -> 0 bytes doc/salome/gui/GEOM/wht_tab4.gif | Bin 198 -> 0 bytes doc/salome/gui/GEOM/wht_tab5.gif | Bin 221 -> 0 bytes doc/salome/gui/GEOM/wht_tab6.gif | Bin 212 -> 0 bytes doc/salome/gui/GEOM/wht_tab7.gif | Bin 236 -> 0 bytes doc/salome/gui/GEOM/wht_tab8.gif | Bin 225 -> 0 bytes doc/salome/gui/GEOM/wht_toc1.gif | Bin 124 -> 0 bytes doc/salome/gui/GEOM/wht_toc2.gif | Bin 922 -> 0 bytes doc/salome/gui/GEOM/wht_toc3.gif | Bin 911 -> 0 bytes doc/salome/gui/GEOM/wht_toc4.gif | Bin 953 -> 0 bytes doc/salome/gui/GEOM/wht_toc_h.gif | Bin 204 -> 0 bytes doc/salome/gui/GEOM/wht_toc_n.gif | Bin 195 -> 0 bytes doc/salome/gui/GEOM/wht_ws.gif | Bin 973 -> 0 bytes doc/salome/gui/GEOM/wht_ws_g.gif | Bin 949 -> 0 bytes doc/salome/gui/GEOM/whtbar.js | 2043 ------- doc/salome/gui/GEOM/whtdhtml.htm | 49 - doc/salome/gui/GEOM/whthost.js | 1504 ----- doc/salome/gui/GEOM/whtopic.js | 724 --- doc/salome/gui/GEOM/whutils.js | 527 -- doc/salome/gui/GEOM/whver.js | 103 - doc/salome/gui/GEOM/whxdata/whftdata0.xml | 21 - doc/salome/gui/GEOM/whxdata/whfts.xml | 7 - doc/salome/gui/GEOM/whxdata/whfwdata0.xml | 768 --- doc/salome/gui/GEOM/whxdata/whfwdata1.xml | 273 - doc/salome/gui/GEOM/whxdata/whfwdata2.xml | 208 - doc/salome/gui/GEOM/whxdata/whgdata0.xml | 22 - doc/salome/gui/GEOM/whxdata/whglo.xml | 5 - doc/salome/gui/GEOM/whxdata/whidx.xml | 4 - doc/salome/gui/GEOM/whxdata/whtdata0.xml | 28 - doc/salome/gui/GEOM/whxdata/whtoc.xml | 4 - doc/salome/gui/GEOM/working_with_groups.htm | 203 - doc/salome/gui/Makefile.in | 33 - doc/salome/tui/GEOM/HTML/GEOM_Gen.html | 802 --- doc/salome/tui/GEOM/HTML/GEOM_Shape.html | 18 - doc/salome/tui/GEOM/doxyfile | 200 - doc/salome/tui/GEOM/doxyfile_py | 200 - .../tui/GEOM/sources/Application-About.png | Bin 19226 -> 0 bytes .../tui/GEOM/sources/Application-About1.jpg | Bin 14327 -> 0 bytes doc/salome/tui/GEOM/sources/application.gif | Bin 2602 -> 0 bytes doc/salome/tui/GEOM/sources/application.jpg | Bin 792 -> 0 bytes doc/salome/tui/GEOM/sources/bg_salome.gif | Bin 17294 -> 0 bytes doc/salome/tui/GEOM/sources/logocorp.gif | Bin 1792 -> 0 bytes doc/salome/tui/GEOM/sources/myheader.html | 24 - doc/salome/tui/GEOM/sources/myheader_py2.html | 24 - doc/salome/tui/GEOM/sources/occ.gif | Bin 14790 -> 0 bytes .../tui/GEOM/sources/static/doxygen.css | 49 - doc/salome/tui/GEOM/sources/static/page2.html | 43 - doc/salome/tui/GEOM/sources/static/tree.js | 59 - .../tui/GEOM/sources/static/treeview.js | 505 -- doc/salome/tui/Makefile.in | 61 - idl/GEOM_Gen.idl | 2075 ------- idl/GEOM_Superv.idl | 418 -- idl/Makefile.in | 69 - resources/GEOM.config | 1 - resources/GEOMCatalog.xml | 4276 ------------- resources/GEOMDS_Resources | 10 - resources/GEOM_en.xml | 312 - resources/GEOM_fr.xml | 256 - resources/ImportExport | 14 - resources/ModuleGeom.png | Bin 1879 -> 0 bytes resources/ShHealing | 251 - resources/arc.png | Bin 397 -> 0 bytes resources/archimede.png | Bin 325 -> 0 bytes resources/axisinertia.png | Bin 414 -> 0 bytes resources/basicproperties.png | Bin 260 -> 0 bytes resources/bezier.png | Bin 250 -> 0 bytes resources/block_2f.png | Bin 424 -> 0 bytes resources/block_6f.png | Bin 368 -> 0 bytes resources/block_face_2e.png | Bin 425 -> 0 bytes resources/block_face_4e.png | Bin 459 -> 0 bytes resources/block_face_4v.png | Bin 362 -> 0 bytes resources/block_multitrsf_double.png | Bin 604 -> 0 bytes resources/block_multitrsf_simple.png | Bin 587 -> 0 bytes resources/bounding.png | Bin 444 -> 0 bytes resources/box.png | Bin 310 -> 0 bytes resources/box2points.png | Bin 330 -> 0 bytes resources/boxdxyz.png | Bin 364 -> 0 bytes resources/build_compound.png | Bin 385 -> 0 bytes resources/build_edge.png | Bin 214 -> 0 bytes resources/build_face.png | Bin 225 -> 0 bytes resources/build_shell.png | Bin 298 -> 0 bytes resources/build_solid.png | Bin 295 -> 0 bytes resources/build_wire.png | Bin 340 -> 0 bytes resources/centergravity.png | Bin 328 -> 0 bytes resources/chamfer.png | Bin 283 -> 0 bytes resources/chamferall.png | Bin 288 -> 0 bytes resources/chamferedge.png | Bin 307 -> 0 bytes resources/chamferface.png | Bin 297 -> 0 bytes resources/check.png | Bin 606 -> 0 bytes resources/check_blocks_compound.png | Bin 636 -> 0 bytes resources/circle.png | Bin 399 -> 0 bytes resources/circle3points.png | Bin 439 -> 0 bytes resources/circlepointvector.png | Bin 346 -> 0 bytes resources/closecontour.png | Bin 368 -> 0 bytes resources/common.png | Bin 267 -> 0 bytes resources/cone.png | Bin 406 -> 0 bytes resources/conedxyz.png | Bin 438 -> 0 bytes resources/conepointvector.png | Bin 433 -> 0 bytes resources/coordsys.png | Bin 1179 -> 0 bytes resources/cut.png | Bin 283 -> 0 bytes resources/cylinder.png | Bin 330 -> 0 bytes resources/cylinderdxyz.png | Bin 389 -> 0 bytes resources/cylinderpointvector.png | Bin 384 -> 0 bytes resources/delete.png | Bin 943 -> 0 bytes resources/display.png | Bin 247 -> 0 bytes resources/displayall.png | Bin 247 -> 0 bytes resources/displayonly.png | Bin 247 -> 0 bytes resources/ellipse.png | Bin 337 -> 0 bytes resources/ellipsepointvector.png | Bin 337 -> 0 bytes resources/erase.png | Bin 311 -> 0 bytes resources/eraseall.png | Bin 323 -> 0 bytes resources/fillet.png | Bin 293 -> 0 bytes resources/filletall.png | Bin 288 -> 0 bytes resources/filletedge.png | Bin 307 -> 0 bytes resources/filletface.png | Bin 297 -> 0 bytes resources/filling.png | Bin 450 -> 0 bytes resources/free_bound.png | Bin 432 -> 0 bytes resources/free_faces.png | Bin 464 -> 0 bytes resources/fuse.png | Bin 286 -> 0 bytes resources/geometry.png | Bin 238 -> 0 bytes resources/glue.png | Bin 408 -> 0 bytes resources/group_edit.png | Bin 758 -> 0 bytes resources/group_new.png | Bin 718 -> 0 bytes resources/interpol.png | Bin 254 -> 0 bytes resources/line.png | Bin 259 -> 0 bytes resources/line2points.png | Bin 259 -> 0 bytes resources/lineedge.png | Bin 938 -> 0 bytes resources/linepointvector.png | Bin 255 -> 0 bytes resources/marker.png | Bin 285 -> 0 bytes resources/marker2.png | Bin 309 -> 0 bytes resources/marker3.png | Bin 289 -> 0 bytes resources/mindist.png | Bin 252 -> 0 bytes resources/mirrorAxe.png | Bin 436 -> 0 bytes resources/mirrorPlane.png | Bin 336 -> 0 bytes resources/mirrorPoint.png | Bin 427 -> 0 bytes resources/multirotation.png | Bin 446 -> 0 bytes resources/multirotationdouble.png | Bin 604 -> 0 bytes resources/multirotationsimple.png | Bin 587 -> 0 bytes resources/multitranslation.png | Bin 325 -> 0 bytes resources/multitranslationdouble.png | Bin 395 -> 0 bytes resources/multitranslationsimple.png | Bin 284 -> 0 bytes resources/offset.png | Bin 696 -> 0 bytes resources/orientation.png | Bin 362 -> 0 bytes resources/partition.png | Bin 335 -> 0 bytes resources/partitionkeep.png | Bin 412 -> 0 bytes resources/partitionplane.png | Bin 493 -> 0 bytes resources/pipe.png | Bin 392 -> 0 bytes resources/plane.png | Bin 241 -> 0 bytes resources/plane3points.png | Bin 336 -> 0 bytes resources/planeWorking.png | Bin 268 -> 0 bytes resources/planedxyz.png | Bin 315 -> 0 bytes resources/planeface.png | Bin 368 -> 0 bytes resources/planepointvector.png | Bin 260 -> 0 bytes resources/planeworkingface.png | Bin 378 -> 0 bytes resources/planeworkingorigin.png | Bin 270 -> 0 bytes resources/planeworkingvector.png | Bin 259 -> 0 bytes resources/point2.png | Bin 192 -> 0 bytes resources/point3.png | Bin 335 -> 0 bytes resources/point_coord.png | Bin 192 -> 0 bytes resources/pointonedge.png | Bin 255 -> 0 bytes resources/polyline.png | Bin 547 -> 0 bytes resources/position.png | Bin 303 -> 0 bytes resources/position2.png | Bin 306 -> 0 bytes resources/prism.png | Bin 315 -> 0 bytes resources/propagate.png | Bin 409 -> 0 bytes resources/redo.png | Bin 211 -> 0 bytes resources/revol.png | Bin 488 -> 0 bytes resources/rotate.png | Bin 425 -> 0 bytes resources/scale.png | Bin 302 -> 0 bytes resources/section.png | Bin 276 -> 0 bytes resources/select1.png | Bin 975 -> 0 bytes resources/sewing.png | Bin 396 -> 0 bytes resources/shading.png | Bin 357 -> 0 bytes resources/shapeprocess.png | Bin 362 -> 0 bytes resources/sketch.png | Bin 398 -> 0 bytes resources/sphere.png | Bin 445 -> 0 bytes resources/spheredxyz.png | Bin 511 -> 0 bytes resources/spherepoint.png | Bin 451 -> 0 bytes resources/spline.png | Bin 254 -> 0 bytes resources/subblock.png | Bin 461 -> 0 bytes resources/subshape.png | Bin 461 -> 0 bytes resources/suppressintwires.png | Bin 368 -> 0 bytes resources/supressHolesOnFaceShell.png | Bin 253 -> 0 bytes resources/supressface.png | Bin 368 -> 0 bytes resources/supresshole.png | Bin 363 -> 0 bytes resources/tolerance.png | Bin 387 -> 0 bytes resources/torus.png | Bin 448 -> 0 bytes resources/torusdxyz.png | Bin 504 -> 0 bytes resources/toruspointvector.png | Bin 493 -> 0 bytes resources/translation.png | Bin 285 -> 0 bytes resources/translationDxyz.png | Bin 416 -> 0 bytes resources/translationPoints.png | Bin 399 -> 0 bytes resources/translationVector.png | Bin 285 -> 0 bytes resources/tree_block.png | Bin 156 -> 0 bytes resources/tree_compound.png | Bin 189 -> 0 bytes resources/tree_compsolid.png | Bin 908 -> 0 bytes resources/tree_edge.png | Bin 132 -> 0 bytes resources/tree_face.png | Bin 119 -> 0 bytes resources/tree_group_edge.png | Bin 257 -> 0 bytes resources/tree_group_face.png | Bin 258 -> 0 bytes resources/tree_group_solid.png | Bin 260 -> 0 bytes resources/tree_group_vertex.png | Bin 248 -> 0 bytes resources/tree_lcs.png | Bin 277 -> 0 bytes resources/tree_shape.png | Bin 909 -> 0 bytes resources/tree_shell.png | Bin 149 -> 0 bytes resources/tree_solid.png | Bin 156 -> 0 bytes resources/tree_vertex.png | Bin 119 -> 0 bytes resources/tree_wire.png | Bin 145 -> 0 bytes resources/undo.png | Bin 210 -> 0 bytes resources/vector.png | Bin 269 -> 0 bytes resources/vector2points.png | Bin 277 -> 0 bytes resources/vectordxyz.png | Bin 290 -> 0 bytes resources/whatis.png | Bin 414 -> 0 bytes src/ARCHIMEDE/Archimede_VolumeSection.cxx | 409 -- src/ARCHIMEDE/Archimede_VolumeSection.hxx | 85 - src/ARCHIMEDE/Makefile.in | 57 - src/BREPExport/BREPExport.cxx | 37 - src/BREPExport/Makefile.in | 47 - src/BREPImport/BREPImport.cxx | 41 - src/BREPImport/Makefile.in | 45 - src/BasicGUI/BasicGUI.cxx | 229 - src/BasicGUI/BasicGUI.h | 66 - src/BasicGUI/BasicGUI_ArcDlg.cxx | 334 -- src/BasicGUI/BasicGUI_ArcDlg.h | 83 - src/BasicGUI/BasicGUI_CircleDlg.cxx | 435 -- src/BasicGUI/BasicGUI_CircleDlg.h | 96 - src/BasicGUI/BasicGUI_CurveDlg.cxx | 326 - src/BasicGUI/BasicGUI_CurveDlg.h | 86 - src/BasicGUI/BasicGUI_EllipseDlg.cxx | 348 -- src/BasicGUI/BasicGUI_EllipseDlg.h | 89 - src/BasicGUI/BasicGUI_LineDlg.cxx | 296 - src/BasicGUI/BasicGUI_LineDlg.h | 86 - src/BasicGUI/BasicGUI_MarkerDlg.cxx | 748 --- src/BasicGUI/BasicGUI_MarkerDlg.h | 98 - src/BasicGUI/BasicGUI_PlaneDlg.cxx | 507 -- src/BasicGUI/BasicGUI_PlaneDlg.h | 92 - src/BasicGUI/BasicGUI_PointDlg.cxx | 571 -- src/BasicGUI/BasicGUI_PointDlg.h | 101 - src/BasicGUI/BasicGUI_VectorDlg.cxx | 416 -- src/BasicGUI/BasicGUI_VectorDlg.h | 91 - src/BasicGUI/BasicGUI_WorkingPlaneDlg.cxx | 468 -- src/BasicGUI/BasicGUI_WorkingPlaneDlg.h | 88 - src/BasicGUI/Makefile.in | 78 - src/BlocksGUI/BlocksGUI.cxx | 136 - src/BlocksGUI/BlocksGUI.h | 54 - src/BlocksGUI/BlocksGUI_BlockDlg.cxx | 400 -- src/BlocksGUI/BlocksGUI_BlockDlg.h | 79 - src/BlocksGUI/BlocksGUI_ExplodeDlg.cxx | 505 -- src/BlocksGUI/BlocksGUI_ExplodeDlg.h | 105 - src/BlocksGUI/BlocksGUI_PropagateDlg.cxx | 319 - src/BlocksGUI/BlocksGUI_PropagateDlg.h | 80 - src/BlocksGUI/BlocksGUI_QuadFaceDlg.cxx | 413 -- src/BlocksGUI/BlocksGUI_QuadFaceDlg.h | 89 - src/BlocksGUI/BlocksGUI_TrsfDlg.cxx | 520 -- src/BlocksGUI/BlocksGUI_TrsfDlg.h | 91 - src/BlocksGUI/Makefile.in | 68 - src/BooleanGUI/BooleanGUI.cxx | 110 - src/BooleanGUI/BooleanGUI.h | 57 - src/BooleanGUI/BooleanGUI_Dialog.cxx | 289 - src/BooleanGUI/BooleanGUI_Dialog.h | 75 - src/BooleanGUI/Makefile.in | 60 - src/BuildGUI/BuildGUI.cxx | 118 - src/BuildGUI/BuildGUI.h | 55 - src/BuildGUI/BuildGUI_CompoundDlg.cxx | 227 - src/BuildGUI/BuildGUI_CompoundDlg.h | 71 - src/BuildGUI/BuildGUI_EdgeDlg.cxx | 283 - src/BuildGUI/BuildGUI_EdgeDlg.h | 73 - src/BuildGUI/BuildGUI_FaceDlg.cxx | 243 - src/BuildGUI/BuildGUI_FaceDlg.h | 70 - src/BuildGUI/BuildGUI_ShellDlg.cxx | 246 - src/BuildGUI/BuildGUI_ShellDlg.h | 71 - src/BuildGUI/BuildGUI_SolidDlg.cxx | 262 - src/BuildGUI/BuildGUI_SolidDlg.h | 73 - src/BuildGUI/BuildGUI_WireDlg.cxx | 245 - src/BuildGUI/BuildGUI_WireDlg.h | 71 - src/BuildGUI/Makefile.in | 70 - src/DisplayGUI/DisplayGUI.h | 92 - src/DisplayGUI/Makefile.in | 58 - src/DlgRef/DlgRef_1List1Spin1Btn_QTD.cxx | 73 - src/DlgRef/DlgRef_1List1Spin1Btn_QTD.h | 50 - src/DlgRef/DlgRef_1Sel1Check1List_QTD.cxx | 91 - src/DlgRef/DlgRef_1Sel1Check1List_QTD.h | 53 - src/DlgRef/DlgRef_1Sel1Check_QTD.cxx | 83 - src/DlgRef/DlgRef_1Sel1Check_QTD.h | 50 - src/DlgRef/DlgRef_1Sel1Spin.cxx | 54 - src/DlgRef/DlgRef_1Sel1Spin.h | 57 - src/DlgRef/DlgRef_1Sel1Spin1Check.cxx | 54 - src/DlgRef/DlgRef_1Sel1Spin1Check.h | 53 - src/DlgRef/DlgRef_1Sel1Spin1Check_QTD.cxx | 95 - src/DlgRef/DlgRef_1Sel1Spin1Check_QTD.h | 48 - src/DlgRef/DlgRef_1Sel1Spin_QTD.cxx | 89 - src/DlgRef/DlgRef_1Sel1Spin_QTD.h | 50 - src/DlgRef/DlgRef_1Sel2Spin.cxx | 60 - src/DlgRef/DlgRef_1Sel2Spin.h | 48 - src/DlgRef/DlgRef_1Sel2Spin_QTD.cxx | 100 - src/DlgRef/DlgRef_1Sel2Spin_QTD.h | 48 - src/DlgRef/DlgRef_1Sel3Check_QTD.cxx | 95 - src/DlgRef/DlgRef_1Sel3Check_QTD.h | 46 - src/DlgRef/DlgRef_1Sel3Spin.cxx | 63 - src/DlgRef/DlgRef_1Sel3Spin.h | 60 - src/DlgRef/DlgRef_1Sel3Spin_QTD.cxx | 111 - src/DlgRef/DlgRef_1Sel3Spin_QTD.h | 54 - src/DlgRef/DlgRef_1Sel4Spin.cxx | 67 - src/DlgRef/DlgRef_1Sel4Spin.h | 51 - src/DlgRef/DlgRef_1Sel4Spin_QTD.cxx | 132 - src/DlgRef/DlgRef_1Sel4Spin_QTD.h | 55 - src/DlgRef/DlgRef_1Sel5Spin.cxx | 71 - src/DlgRef/DlgRef_1Sel5Spin.h | 57 - src/DlgRef/DlgRef_1Sel5Spin_QTD.cxx | 133 - src/DlgRef/DlgRef_1Sel5Spin_QTD.h | 54 - src/DlgRef/DlgRef_1Sel_Ext.h | 34 - src/DlgRef/DlgRef_1Sel_QTD.cxx | 74 - src/DlgRef/DlgRef_1Sel_QTD.h | 48 - src/DlgRef/DlgRef_1Spin.cxx | 56 - src/DlgRef/DlgRef_1Spin.h | 51 - src/DlgRef/DlgRef_1Spin_QTD.cxx | 68 - src/DlgRef/DlgRef_1Spin_QTD.h | 44 - src/DlgRef/DlgRef_2Sel1Spin.cxx | 59 - src/DlgRef/DlgRef_2Sel1Spin.h | 57 - src/DlgRef/DlgRef_2Sel1Spin2Check.cxx | 54 - src/DlgRef/DlgRef_2Sel1Spin2Check.h | 52 - src/DlgRef/DlgRef_2Sel1Spin2Check_QTD.cxx | 120 - src/DlgRef/DlgRef_2Sel1Spin2Check_QTD.h | 51 - src/DlgRef/DlgRef_2Sel1Spin_QTD.cxx | 113 - src/DlgRef/DlgRef_2Sel1Spin_QTD.h | 55 - src/DlgRef/DlgRef_2Sel2Spin.cxx | 57 - src/DlgRef/DlgRef_2Sel2Spin.h | 57 - src/DlgRef/DlgRef_2Sel2Spin1Check.cxx | 62 - src/DlgRef/DlgRef_2Sel2Spin1Check.h | 54 - src/DlgRef/DlgRef_2Sel2Spin1Check_QTD.cxx | 130 - src/DlgRef/DlgRef_2Sel2Spin1Check_QTD.h | 53 - src/DlgRef/DlgRef_2Sel2Spin_QTD.cxx | 116 - src/DlgRef/DlgRef_2Sel2Spin_QTD.h | 57 - src/DlgRef/DlgRef_2Sel3Spin.cxx | 60 - src/DlgRef/DlgRef_2Sel3Spin.h | 55 - src/DlgRef/DlgRef_2Sel3Spin_QTD.cxx | 127 - src/DlgRef/DlgRef_2Sel3Spin_QTD.h | 57 - src/DlgRef/DlgRef_2Sel4Spin1Check.cxx | 68 - src/DlgRef/DlgRef_2Sel4Spin1Check.h | 56 - src/DlgRef/DlgRef_2Sel4Spin1Check_QTD.cxx | 158 - src/DlgRef/DlgRef_2Sel4Spin1Check_QTD.h | 58 - src/DlgRef/DlgRef_2Sel_QTD.cxx | 90 - src/DlgRef/DlgRef_2Sel_QTD.h | 51 - src/DlgRef/DlgRef_2Spin.cxx | 60 - src/DlgRef/DlgRef_2Spin.h | 52 - src/DlgRef/DlgRef_2Spin_QTD.cxx | 79 - src/DlgRef/DlgRef_2Spin_QTD.h | 46 - src/DlgRef/DlgRef_3Check_QTD.cxx | 75 - src/DlgRef/DlgRef_3Check_QTD.h | 46 - src/DlgRef/DlgRef_3Sel1Spin.cxx | 55 - src/DlgRef/DlgRef_3Sel1Spin.h | 65 - src/DlgRef/DlgRef_3Sel3Spin1Check.cxx | 114 - src/DlgRef/DlgRef_3Sel3Spin1Check.h | 57 - src/DlgRef/DlgRef_3Sel3Spin1Check_QTD.cxx | 158 - src/DlgRef/DlgRef_3Sel3Spin1Check_QTD.h | 57 - src/DlgRef/DlgRef_3Sel4Spin2Check.cxx | 69 - src/DlgRef/DlgRef_3Sel4Spin2Check.h | 56 - src/DlgRef/DlgRef_3Sel4Spin2Check_QTD.cxx | 182 - src/DlgRef/DlgRef_3Sel4Spin2Check_QTD.h | 62 - src/DlgRef/DlgRef_3Sel_QTD.cxx | 106 - src/DlgRef/DlgRef_3Sel_QTD.h | 54 - src/DlgRef/DlgRef_3Spin.cxx | 63 - src/DlgRef/DlgRef_3Spin.h | 58 - src/DlgRef/DlgRef_3Spin1Check.cxx | 63 - src/DlgRef/DlgRef_3Spin1Check.h | 54 - src/DlgRef/DlgRef_3Spin1Check_QTD.cxx | 96 - src/DlgRef/DlgRef_3Spin1Check_QTD.h | 52 - src/DlgRef/DlgRef_3Spin_QTD.cxx | 90 - src/DlgRef/DlgRef_3Spin_QTD.h | 49 - src/DlgRef/DlgRef_4Sel1List1Check_QTD.cxx | 176 - src/DlgRef/DlgRef_4Sel1List1Check_QTD.h | 66 - src/DlgRef/DlgRef_4Sel1List_QTD.cxx | 152 - src/DlgRef/DlgRef_4Sel1List_QTD.h | 57 - src/DlgRef/DlgRef_6Sel_QTD.cxx | 152 - src/DlgRef/DlgRef_6Sel_QTD.h | 63 - src/DlgRef/DlgRef_Skeleton_QTD.cxx | 139 - src/DlgRef/DlgRef_Skeleton_QTD.h | 64 - src/DlgRef/DlgRef_SpinBox.cxx | 102 - src/DlgRef/DlgRef_SpinBox.h | 66 - src/DlgRef/Makefile.in | 157 - .../UIFiles/DlgRef_1List1Spin1Btn_QTD.ui | 93 - .../UIFiles/DlgRef_1Sel1Check1List_QTD.ui | 157 - src/DlgRef/UIFiles/DlgRef_1Sel1Check_QTD.ui | 133 - .../UIFiles/DlgRef_1Sel1Spin1Check_QTD.ui | 179 - src/DlgRef/UIFiles/DlgRef_1Sel1Spin_QTD.ui | 165 - src/DlgRef/UIFiles/DlgRef_1Sel2Spin_QTD.ui | 194 - src/DlgRef/UIFiles/DlgRef_1Sel3Check_QTD.ui | 151 - src/DlgRef/UIFiles/DlgRef_1Sel3Spin_QTD.ui | 223 - src/DlgRef/UIFiles/DlgRef_1Sel4Spin_QTD.ui | 292 - src/DlgRef/UIFiles/DlgRef_1Sel5Spin_QTD.ui | 281 - src/DlgRef/UIFiles/DlgRef_1Sel_QTD.ui | 128 - src/DlgRef/UIFiles/DlgRef_1Spin_QTD.ui | 112 - .../UIFiles/DlgRef_2Sel1Spin2Check_QTD.ui | 211 - src/DlgRef/UIFiles/DlgRef_2Sel1Spin_QTD.ui | 215 - .../UIFiles/DlgRef_2Sel2Spin1Check_QTD.ui | 248 - src/DlgRef/UIFiles/DlgRef_2Sel2Spin_QTD.ui | 231 - src/DlgRef/UIFiles/DlgRef_2Sel3Spin_QTD.ui | 260 - .../UIFiles/DlgRef_2Sel4Spin1Check_QTD.ui | 324 - src/DlgRef/UIFiles/DlgRef_2Sel_QTD.ui | 165 - src/DlgRef/UIFiles/DlgRef_2Spin_QTD.ui | 141 - src/DlgRef/UIFiles/DlgRef_3Check_QTD.ui | 112 - .../UIFiles/DlgRef_3Sel3Spin1Check_QTD.ui | 317 - .../UIFiles/DlgRef_3Sel4Spin2Check_QTD.ui | 372 -- src/DlgRef/UIFiles/DlgRef_3Sel_QTD.ui | 202 - src/DlgRef/UIFiles/DlgRef_3Spin1Check_QTD.ui | 178 - src/DlgRef/UIFiles/DlgRef_3Spin_QTD.ui | 170 - src/DlgRef/UIFiles/DlgRef_4Sel1List_QTD.ui | 260 - src/DlgRef/UIFiles/DlgRef_6Sel_QTD.ui | 296 - src/DlgRef/UIFiles/DlgRef_Skeleton_QTD.ui | 281 - src/DlgRef/UIFiles/ui_to_cxx | 85 - src/EntityGUI/EntityGUI.cxx | 678 --- src/EntityGUI/EntityGUI.h | 79 - src/EntityGUI/EntityGUI_1Sel_QTD.cxx | 103 - src/EntityGUI/EntityGUI_1Sel_QTD.h | 48 - src/EntityGUI/EntityGUI_1Spin.cxx | 56 - src/EntityGUI/EntityGUI_1Spin.h | 47 - src/EntityGUI/EntityGUI_1Spin_QTD.cxx | 97 - src/EntityGUI/EntityGUI_1Spin_QTD.h | 47 - src/EntityGUI/EntityGUI_2Spin.cxx | 60 - src/EntityGUI/EntityGUI_2Spin.h | 48 - src/EntityGUI/EntityGUI_2Spin_QTD.cxx | 108 - src/EntityGUI/EntityGUI_2Spin_QTD.h | 49 - src/EntityGUI/EntityGUI_3Spin.cxx | 63 - src/EntityGUI/EntityGUI_3Spin.h | 49 - src/EntityGUI/EntityGUI_3Spin_QTD.cxx | 119 - src/EntityGUI/EntityGUI_3Spin_QTD.h | 51 - src/EntityGUI/EntityGUI_4Spin.cxx | 67 - src/EntityGUI/EntityGUI_4Spin.h | 50 - src/EntityGUI/EntityGUI_4Spin_QTD.cxx | 130 - src/EntityGUI/EntityGUI_4Spin_QTD.h | 53 - src/EntityGUI/EntityGUI_Dir1_QTD.cxx | 80 - src/EntityGUI/EntityGUI_Dir1_QTD.h | 41 - src/EntityGUI/EntityGUI_Dir2_QTD.cxx | 76 - src/EntityGUI/EntityGUI_Dir2_QTD.h | 40 - src/EntityGUI/EntityGUI_Point_QTD.cxx | 74 - src/EntityGUI/EntityGUI_Point_QTD.h | 40 - src/EntityGUI/EntityGUI_Skeleton_QTD.cxx | 176 - src/EntityGUI/EntityGUI_Skeleton_QTD.h | 61 - src/EntityGUI/EntityGUI_SketcherDlg.cxx | 1406 ----- src/EntityGUI/EntityGUI_SketcherDlg.h | 152 - src/EntityGUI/EntityGUI_SubShapeDlg.cxx | 596 -- src/EntityGUI/EntityGUI_SubShapeDlg.h | 93 - src/EntityGUI/Makefile.in | 88 - src/EntityGUI/UIFiles/EntityGUI_1Sel_QTD.ui | 218 - src/EntityGUI/UIFiles/EntityGUI_1Spin_QTD.ui | 201 - src/EntityGUI/UIFiles/EntityGUI_2Spin_QTD.ui | 230 - src/EntityGUI/UIFiles/EntityGUI_3Spin_QTD.ui | 259 - src/EntityGUI/UIFiles/EntityGUI_4Spin_QTD.ui | 288 - src/EntityGUI/UIFiles/EntityGUI_Dir1_QTD.ui | 112 - src/EntityGUI/UIFiles/EntityGUI_Dir2_QTD.ui | 120 - src/EntityGUI/UIFiles/EntityGUI_Point_QTD.ui | 103 - .../UIFiles/EntityGUI_Skeleton_QTD.ui | 379 -- src/EntityGUI/UIFiles/ui_to_cxx | 28 - src/GEOM/GEOM_Application.cxx | 39 - src/GEOM/GEOM_Application.hxx | 89 - src/GEOM/GEOM_Application.ixx | 63 - src/GEOM/GEOM_Application.jxx | 9 - ...teratorOfDataMapOfAsciiStringTransient.hxx | 86 - ...ratorOfDataMapOfAsciiStringTransient_0.cxx | 36 - ...MapNodeOfDataMapOfAsciiStringTransient.hxx | 123 - ...pNodeOfDataMapOfAsciiStringTransient_0.cxx | 85 - .../GEOM_DataMapOfAsciiStringTransient.hxx | 118 - .../GEOM_DataMapOfAsciiStringTransient_0.cxx | 39 - src/GEOM/GEOM_Engine.cxx | 632 -- src/GEOM/GEOM_Engine.hxx | 87 - src/GEOM/GEOM_Function.cxx | 681 --- src/GEOM/GEOM_Function.hxx | 251 - src/GEOM/GEOM_Gen_i.cc | 5333 ----------------- src/GEOM/GEOM_IOperations.cxx | 84 - src/GEOM/GEOM_IOperations.hxx | 66 - src/GEOM/GEOM_ISubShape.hxx | 34 - src/GEOM/GEOM_Object.cxx | 406 -- src/GEOM/GEOM_Object.hxx | 237 - src/GEOM/GEOM_PythonDump.cxx | 94 - src/GEOM/GEOM_PythonDump.hxx | 55 - src/GEOM/GEOM_Solver.cxx | 50 - src/GEOM/GEOM_Solver.hxx | 34 - src/GEOM/GEOM_SubShapeDriver.cxx | 151 - src/GEOM/GEOM_SubShapeDriver.hxx | 139 - src/GEOM/Handle_GEOM_Application.hxx | 77 - ...MapNodeOfDataMapOfAsciiStringTransient.hxx | 91 - src/GEOM/Makefile.in | 59 - src/GEOM/geom.cxx | 88 - src/GEOMAlgo/BlockFix.cdl | 50 - src/GEOMAlgo/BlockFix.cxx | 196 - src/GEOMAlgo/BlockFix.hxx | 105 - src/GEOMAlgo/BlockFix.ixx | 26 - src/GEOMAlgo/BlockFix.jxx | 6 - src/GEOMAlgo/BlockFix_BlockFixAPI.cdl | 48 - src/GEOMAlgo/BlockFix_BlockFixAPI.cxx | 48 - src/GEOMAlgo/BlockFix_BlockFixAPI.hxx | 118 - src/GEOMAlgo/BlockFix_BlockFixAPI.ixx | 76 - src/GEOMAlgo/BlockFix_BlockFixAPI.jxx | 9 - src/GEOMAlgo/BlockFix_BlockFixAPI.lxx | 42 - src/GEOMAlgo/BlockFix_CheckTool.cdl | 47 - src/GEOMAlgo/BlockFix_CheckTool.cxx | 241 - src/GEOMAlgo/BlockFix_CheckTool.hxx | 119 - src/GEOMAlgo/BlockFix_CheckTool.ixx | 26 - src/GEOMAlgo/BlockFix_CheckTool.jxx | 6 - .../BlockFix_PeriodicSurfaceModifier.cdl | 115 - .../BlockFix_PeriodicSurfaceModifier.cxx | 230 - .../BlockFix_PeriodicSurfaceModifier.hxx | 140 - .../BlockFix_PeriodicSurfaceModifier.ixx | 78 - .../BlockFix_PeriodicSurfaceModifier.jxx | 27 - src/GEOMAlgo/BlockFix_SphereSpaceModifier.cdl | 120 - src/GEOMAlgo/BlockFix_SphereSpaceModifier.cxx | 242 - src/GEOMAlgo/BlockFix_SphereSpaceModifier.hxx | 141 - src/GEOMAlgo/BlockFix_SphereSpaceModifier.ixx | 78 - src/GEOMAlgo/BlockFix_SphereSpaceModifier.jxx | 27 - src/GEOMAlgo/BlockFix_UnionEdges.cdl | 28 - src/GEOMAlgo/BlockFix_UnionEdges.cxx | 320 - src/GEOMAlgo/BlockFix_UnionEdges.hxx | 99 - src/GEOMAlgo/BlockFix_UnionEdges.ixx | 26 - src/GEOMAlgo/BlockFix_UnionEdges.jxx | 9 - src/GEOMAlgo/BlockFix_UnionFaces.cdl | 46 - src/GEOMAlgo/BlockFix_UnionFaces.cxx | 512 -- src/GEOMAlgo/BlockFix_UnionFaces.hxx | 101 - src/GEOMAlgo/BlockFix_UnionFaces.ixx | 26 - src/GEOMAlgo/BlockFix_UnionFaces.jxx | 9 - src/GEOMAlgo/GEOMAlgo.cdl | 105 - src/GEOMAlgo/GEOMAlgo_Algo.cdl | 39 - src/GEOMAlgo/GEOMAlgo_Algo.cxx | 59 - src/GEOMAlgo/GEOMAlgo_Algo.hxx | 99 - src/GEOMAlgo/GEOMAlgo_Algo.ixx | 26 - src/GEOMAlgo/GEOMAlgo_Algo.jxx | 3 - src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.cdl | 48 - src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.cxx | 65 - src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.hxx | 100 - src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.ixx | 26 - src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.jxx | 6 - ...taMapIteratorOfDataMapOfPassKeyInteger.hxx | 106 - ...MapIteratorOfDataMapOfPassKeyInteger_0.cxx | 56 - ...o_DataMapNodeOfDataMapOfPassKeyInteger.hxx | 144 - ...DataMapNodeOfDataMapOfPassKeyInteger_0.cxx | 105 - .../GEOMAlgo_DataMapOfPassKeyInteger.hxx | 135 - .../GEOMAlgo_DataMapOfPassKeyInteger_0.cxx | 59 - src/GEOMAlgo/GEOMAlgo_FinderShapeOn.cdl | 96 - src/GEOMAlgo/GEOMAlgo_FinderShapeOn.cxx | 528 -- src/GEOMAlgo/GEOMAlgo_FinderShapeOn.hxx | 144 - src/GEOMAlgo/GEOMAlgo_FinderShapeOn.ixx | 26 - src/GEOMAlgo/GEOMAlgo_FinderShapeOn.jxx | 15 - src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.cdl | 120 - src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.cxx | 822 --- src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.hxx | 148 - src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.ixx | 26 - src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.jxx | 21 - src/GEOMAlgo/GEOMAlgo_GlueAnalyser.cdl | 63 - src/GEOMAlgo/GEOMAlgo_GlueAnalyser.cxx | 439 -- src/GEOMAlgo/GEOMAlgo_GlueAnalyser.hxx | 118 - src/GEOMAlgo/GEOMAlgo_GlueAnalyser.ixx | 26 - src/GEOMAlgo/GEOMAlgo_GlueAnalyser.jxx | 9 - src/GEOMAlgo/GEOMAlgo_Gluer.cdl | 141 - src/GEOMAlgo/GEOMAlgo_Gluer.cxx | 989 --- src/GEOMAlgo/GEOMAlgo_Gluer.hxx | 152 - src/GEOMAlgo/GEOMAlgo_Gluer.ixx | 26 - src/GEOMAlgo/GEOMAlgo_Gluer.jxx | 27 - ...aMapNodeOfIndexedDataMapOfIntegerShape.hxx | 143 - ...apNodeOfIndexedDataMapOfIntegerShape_0.cxx | 100 - ...deOfIndexedDataMapOfPassKeyListOfShape.hxx | 147 - ...OfIndexedDataMapOfPassKeyListOfShape_0.cxx | 103 - ...ndexedDataMapOfPassKeyShapeListOfShape.hxx | 147 - ...exedDataMapOfPassKeyShapeListOfShape_0.cxx | 103 - ...dDataMapNodeOfIndexedDataMapOfShapeBox.hxx | 147 - ...ataMapNodeOfIndexedDataMapOfShapeBox_0.cxx | 103 - ...ataMapNodeOfIndexedDataMapOfShapeState.hxx | 146 - ...aMapNodeOfIndexedDataMapOfShapeState_0.cxx | 100 - .../GEOMAlgo_IndexedDataMapOfIntegerShape.hxx | 140 - ...EOMAlgo_IndexedDataMapOfIntegerShape_0.cxx | 57 - ...lgo_IndexedDataMapOfPassKeyListOfShape.hxx | 141 - ...o_IndexedDataMapOfPassKeyListOfShape_0.cxx | 60 - ...ndexedDataMapOfPassKeyShapeListOfShape.hxx | 141 - ...exedDataMapOfPassKeyShapeListOfShape_0.cxx | 60 - .../GEOMAlgo_IndexedDataMapOfShapeBox.hxx | 141 - .../GEOMAlgo_IndexedDataMapOfShapeBox_0.cxx | 60 - .../GEOMAlgo_IndexedDataMapOfShapeState.hxx | 143 - .../GEOMAlgo_IndexedDataMapOfShapeState_0.cxx | 57 - ...lgo_ListIteratorOfListOfCoupleOfShapes.hxx | 131 - ...o_ListIteratorOfListOfCoupleOfShapes_0.cxx | 52 - .../GEOMAlgo_ListIteratorOfListOfPnt.hxx | 131 - .../GEOMAlgo_ListIteratorOfListOfPnt_0.cxx | 52 - ...EOMAlgo_ListNodeOfListOfCoupleOfShapes.hxx | 130 - ...MAlgo_ListNodeOfListOfCoupleOfShapes_0.cxx | 98 - src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfPnt.hxx | 130 - .../GEOMAlgo_ListNodeOfListOfPnt_0.cxx | 98 - .../GEOMAlgo_ListOfCoupleOfShapes.hxx | 157 - .../GEOMAlgo_ListOfCoupleOfShapes_0.cxx | 49 - src/GEOMAlgo/GEOMAlgo_ListOfPnt.hxx | 157 - src/GEOMAlgo/GEOMAlgo_ListOfPnt_0.cxx | 49 - src/GEOMAlgo/GEOMAlgo_PassKey.cdl | 81 - src/GEOMAlgo/GEOMAlgo_PassKey.cxx | 286 - src/GEOMAlgo/GEOMAlgo_PassKey.hxx | 121 - src/GEOMAlgo/GEOMAlgo_PassKey.ixx | 26 - src/GEOMAlgo/GEOMAlgo_PassKey.jxx | 6 - src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.cdl | 29 - src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.cxx | 26 - src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.hxx | 96 - src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.ixx | 26 - src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.jxx | 6 - src/GEOMAlgo/GEOMAlgo_PassKeyShape.cdl | 48 - src/GEOMAlgo/GEOMAlgo_PassKeyShape.cxx | 112 - src/GEOMAlgo/GEOMAlgo_PassKeyShape.hxx | 102 - src/GEOMAlgo/GEOMAlgo_PassKeyShape.ixx | 26 - src/GEOMAlgo/GEOMAlgo_PassKeyShape.jxx | 9 - src/GEOMAlgo/GEOMAlgo_ShapeAlgo.cdl | 47 - src/GEOMAlgo/GEOMAlgo_ShapeAlgo.cxx | 66 - src/GEOMAlgo/GEOMAlgo_ShapeAlgo.hxx | 111 - src/GEOMAlgo/GEOMAlgo_ShapeAlgo.ixx | 26 - src/GEOMAlgo/GEOMAlgo_ShapeAlgo.jxx | 6 - src/GEOMAlgo/GEOMAlgo_ShapeSolid.cdl | 48 - src/GEOMAlgo/GEOMAlgo_ShapeSolid.cxx | 61 - src/GEOMAlgo/GEOMAlgo_ShapeSolid.hxx | 115 - src/GEOMAlgo/GEOMAlgo_ShapeSolid.ixx | 26 - src/GEOMAlgo/GEOMAlgo_ShapeSolid.jxx | 9 - src/GEOMAlgo/GEOMAlgo_ShellSolid.cdl | 34 - src/GEOMAlgo/GEOMAlgo_ShellSolid.cxx | 350 -- src/GEOMAlgo/GEOMAlgo_ShellSolid.hxx | 96 - src/GEOMAlgo/GEOMAlgo_ShellSolid.ixx | 26 - src/GEOMAlgo/GEOMAlgo_ShellSolid.jxx | 3 - src/GEOMAlgo/GEOMAlgo_SolidSolid.cdl | 39 - src/GEOMAlgo/GEOMAlgo_SolidSolid.cxx | 182 - src/GEOMAlgo/GEOMAlgo_SolidSolid.hxx | 101 - src/GEOMAlgo/GEOMAlgo_SolidSolid.ixx | 26 - src/GEOMAlgo/GEOMAlgo_SolidSolid.jxx | 6 - src/GEOMAlgo/GEOMAlgo_State.hxx | 40 - src/GEOMAlgo/GEOMAlgo_StateCollector.cdl | 31 - src/GEOMAlgo/GEOMAlgo_StateCollector.cxx | 71 - src/GEOMAlgo/GEOMAlgo_StateCollector.hxx | 100 - src/GEOMAlgo/GEOMAlgo_StateCollector.ixx | 26 - src/GEOMAlgo/GEOMAlgo_StateCollector.jxx | 3 - src/GEOMAlgo/GEOMAlgo_SurfaceTools.cdl | 78 - src/GEOMAlgo/GEOMAlgo_SurfaceTools.cxx | 249 - src/GEOMAlgo/GEOMAlgo_SurfaceTools.hxx | 120 - src/GEOMAlgo/GEOMAlgo_SurfaceTools.ixx | 26 - src/GEOMAlgo/GEOMAlgo_SurfaceTools.jxx | 21 - src/GEOMAlgo/GEOMAlgo_Tools.cdl | 94 - src/GEOMAlgo/GEOMAlgo_Tools.cxx | 438 -- src/GEOMAlgo/GEOMAlgo_Tools.hxx | 120 - src/GEOMAlgo/GEOMAlgo_Tools.ixx | 26 - src/GEOMAlgo/GEOMAlgo_Tools.jxx | 30 - src/GEOMAlgo/GEOMAlgo_VertexSolid.cdl | 32 - src/GEOMAlgo/GEOMAlgo_VertexSolid.cxx | 219 - src/GEOMAlgo/GEOMAlgo_VertexSolid.hxx | 95 - src/GEOMAlgo/GEOMAlgo_VertexSolid.ixx | 26 - src/GEOMAlgo/GEOMAlgo_VertexSolid.jxx | 3 - src/GEOMAlgo/GEOMAlgo_WireSolid.cdl | 31 - src/GEOMAlgo/GEOMAlgo_WireSolid.cxx | 152 - src/GEOMAlgo/GEOMAlgo_WireSolid.hxx | 95 - src/GEOMAlgo/GEOMAlgo_WireSolid.ixx | 26 - src/GEOMAlgo/GEOMAlgo_WireSolid.jxx | 3 - src/GEOMAlgo/Handle_BlockFix_BlockFixAPI.hxx | 91 - ...andle_BlockFix_PeriodicSurfaceModifier.hxx | 91 - .../Handle_BlockFix_SphereSpaceModifier.hxx | 91 - ...o_DataMapNodeOfDataMapOfPassKeyInteger.hxx | 91 - ...aMapNodeOfIndexedDataMapOfIntegerShape.hxx | 91 - ...deOfIndexedDataMapOfPassKeyListOfShape.hxx | 91 - ...ndexedDataMapOfPassKeyShapeListOfShape.hxx | 91 - ...dDataMapNodeOfIndexedDataMapOfShapeBox.hxx | 91 - ...ataMapNodeOfIndexedDataMapOfShapeState.hxx | 91 - ...EOMAlgo_ListNodeOfListOfCoupleOfShapes.hxx | 91 - .../Handle_GEOMAlgo_ListNodeOfListOfPnt.hxx | 91 - src/GEOMAlgo/Makefile.in | 109 - src/GEOMBase/GEOMBase.cxx | 979 --- src/GEOMBase/GEOMBase.h | 148 - src/GEOMBase/GEOMBase_Helper.cxx | 974 --- src/GEOMBase/GEOMBase_Helper.h | 204 - src/GEOMBase/GEOMBase_Skeleton.cxx | 219 - src/GEOMBase/GEOMBase_Skeleton.h | 87 - src/GEOMBase/GEOMBase_aParameterDlg.cxx | 159 - src/GEOMBase/GEOMBase_aParameterDlg.h | 59 - src/GEOMBase/GEOM_Operation.cxx | 124 - src/GEOMBase/GEOM_Operation.h | 56 - src/GEOMBase/Makefile.in | 71 - src/GEOMClient/GEOM_Client.cxx | 244 - src/GEOMClient/GEOM_Client.hxx | 110 - src/GEOMClient/Makefile.in | 62 - src/GEOMContext/GEOMContext.cxx | 170 - src/GEOMContext/GEOMContext.h | 88 - src/GEOMContext/GEOM_icons.po | 362 -- src/GEOMContext/GEOM_msg_en.po | 1316 ---- src/GEOMContext/GEOM_msg_fr.po | 1316 ---- src/GEOMContext/Makefile.in | 65 - src/GEOMDS/GEOMDS_Commands.cxx | 303 - src/GEOMDS/GEOMDS_Commands.jxx | 38 - src/GEOMFiltersSelection/GEOM_EdgeFilter.cxx | 47 - src/GEOMFiltersSelection/GEOM_EdgeFilter.h | 20 - src/GEOMFiltersSelection/GEOM_EdgeFilter.hxx | 108 - src/GEOMFiltersSelection/GEOM_EdgeFilter.ixx | 83 - src/GEOMFiltersSelection/GEOM_EdgeFilter.jxx | 29 - src/GEOMFiltersSelection/GEOM_FaceFilter.cxx | 55 - src/GEOMFiltersSelection/GEOM_FaceFilter.h | 20 - src/GEOMFiltersSelection/GEOM_FaceFilter.hxx | 110 - src/GEOMFiltersSelection/GEOM_FaceFilter.ixx | 83 - src/GEOMFiltersSelection/GEOM_FaceFilter.jxx | 29 - .../GEOM_LogicalFilter.cxx | 76 - src/GEOMFiltersSelection/GEOM_LogicalFilter.h | 31 - .../GEOM_LogicalFilter.hxx | 103 - src/GEOMFiltersSelection/GEOM_OCCFilter.cxx | 46 - src/GEOMFiltersSelection/GEOM_OCCFilter.h | 29 - .../GEOM_PreviewFilter.cxx | 31 - src/GEOMFiltersSelection/GEOM_PreviewFilter.h | 16 - .../GEOM_PreviewFilter.hxx | 102 - .../GEOM_PreviewFilter.ixx | 83 - .../GEOM_PreviewFilter.jxx | 29 - .../GEOM_SelectionFilter.cxx | 170 - .../GEOM_SelectionFilter.h | 41 - .../GEOM_ShapeTypeFilter.cxx | 165 - .../GEOM_ShapeTypeFilter.hxx | 110 - .../GEOM_ShapeTypeFilter.ixx | 83 - .../GEOM_ShapeTypeFilter.jxx | 29 - src/GEOMFiltersSelection/GEOM_TypeFilter.cxx | 47 - src/GEOMFiltersSelection/GEOM_TypeFilter.h | 25 - src/GEOMFiltersSelection/GEOM_TypeFilter.hxx | 90 - .../Handle_GEOM_EdgeFilter.hxx | 100 - .../Handle_GEOM_FaceFilter.hxx | 100 - .../Handle_GEOM_PreviewFilter.hxx | 100 - .../Handle_GEOM_ShapeTypeFilter.hxx | 100 - src/GEOMFiltersSelection/Makefile.in | 70 - src/GEOMGUI/GEOMGUI.cxx | 117 - src/GEOMGUI/GEOMGUI.h | 79 - src/GEOMGUI/GEOMGUI_OCCSelector.cxx | 267 - src/GEOMGUI/GEOMGUI_OCCSelector.h | 18 - src/GEOMGUI/GEOMGUI_Selection.cxx | 180 - src/GEOMGUI/GEOMGUI_Selection.h | 55 - src/GEOMGUI/GEOM_Displayer.cxx | 1119 ---- src/GEOMGUI/GEOM_Displayer.h | 197 - src/GEOMGUI/GEOM_images.po | 731 --- src/GEOMGUI/GEOM_msg_en.po | 2898 --------- src/GEOMGUI/GEOM_msg_fr.po | 1385 ----- src/GEOMGUI/GeometryGUI.cxx | 1615 ----- src/GEOMGUI/GeometryGUI.h | 186 - src/GEOMGUI/GeometryGUI_Swig.hxx | 65 - src/GEOMGUI/GeometryGUI_Swig.i | 49 - src/GEOMGUI/Makefile.in | 78 - src/GEOMImpl/GEOMImpl_ArcDriver.cxx | 133 - src/GEOMImpl/GEOMImpl_ArcDriver.hxx | 139 - src/GEOMImpl/GEOMImpl_ArchimedeDriver.cxx | 168 - src/GEOMImpl/GEOMImpl_ArchimedeDriver.hxx | 139 - src/GEOMImpl/GEOMImpl_Block6Explorer.cxx | 1215 ---- src/GEOMImpl/GEOMImpl_Block6Explorer.hxx | 207 - src/GEOMImpl/GEOMImpl_BlockDriver.cxx | 986 --- src/GEOMImpl/GEOMImpl_BlockDriver.hxx | 155 - src/GEOMImpl/GEOMImpl_BooleanDriver.cxx | 139 - src/GEOMImpl/GEOMImpl_BooleanDriver.hxx | 139 - src/GEOMImpl/GEOMImpl_BoxDriver.cxx | 132 - src/GEOMImpl/GEOMImpl_BoxDriver.hxx | 139 - src/GEOMImpl/GEOMImpl_ChamferDriver.cxx | 229 - src/GEOMImpl/GEOMImpl_ChamferDriver.hxx | 139 - src/GEOMImpl/GEOMImpl_CircleDriver.cxx | 155 - src/GEOMImpl/GEOMImpl_CircleDriver.hxx | 139 - src/GEOMImpl/GEOMImpl_ConeDriver.cxx | 166 - src/GEOMImpl/GEOMImpl_ConeDriver.hxx | 139 - src/GEOMImpl/GEOMImpl_CopyDriver.cxx | 115 - src/GEOMImpl/GEOMImpl_CopyDriver.hxx | 139 - src/GEOMImpl/GEOMImpl_CylinderDriver.cxx | 149 - src/GEOMImpl/GEOMImpl_CylinderDriver.hxx | 139 - src/GEOMImpl/GEOMImpl_EllipseDriver.cxx | 125 - src/GEOMImpl/GEOMImpl_EllipseDriver.hxx | 139 - src/GEOMImpl/GEOMImpl_ExportDriver.cxx | 140 - src/GEOMImpl/GEOMImpl_ExportDriver.hxx | 139 - src/GEOMImpl/GEOMImpl_FilletDriver.cxx | 158 - src/GEOMImpl/GEOMImpl_FilletDriver.hxx | 139 - src/GEOMImpl/GEOMImpl_FillingDriver.cxx | 167 - src/GEOMImpl/GEOMImpl_FillingDriver.hxx | 139 - src/GEOMImpl/GEOMImpl_Gen.cxx | 356 -- src/GEOMImpl/GEOMImpl_Gen.hxx | 73 - src/GEOMImpl/GEOMImpl_GlueDriver.cxx | 313 - src/GEOMImpl/GEOMImpl_GlueDriver.hxx | 147 - src/GEOMImpl/GEOMImpl_HealingDriver.cxx | 406 -- src/GEOMImpl/GEOMImpl_HealingDriver.hxx | 152 - src/GEOMImpl/GEOMImpl_I3DPrimOperations.cxx | 916 --- src/GEOMImpl/GEOMImpl_I3DPrimOperations.hxx | 59 - src/GEOMImpl/GEOMImpl_IArc.hxx | 27 - src/GEOMImpl/GEOMImpl_IArchimede.hxx | 36 - src/GEOMImpl/GEOMImpl_IBasicOperations.cxx | 624 -- src/GEOMImpl/GEOMImpl_IBasicOperations.hxx | 56 - src/GEOMImpl/GEOMImpl_IBlockTrsf.hxx | 42 - src/GEOMImpl/GEOMImpl_IBlocks.hxx | 26 - src/GEOMImpl/GEOMImpl_IBlocksOperations.cxx | 3129 ---------- src/GEOMImpl/GEOMImpl_IBlocksOperations.hxx | 152 - src/GEOMImpl/GEOMImpl_IBoolean.hxx | 24 - src/GEOMImpl/GEOMImpl_IBooleanOperations.cxx | 330 - src/GEOMImpl/GEOMImpl_IBooleanOperations.hxx | 36 - src/GEOMImpl/GEOMImpl_IBox.hxx | 41 - src/GEOMImpl/GEOMImpl_IChamfer.hxx | 48 - src/GEOMImpl/GEOMImpl_ICircle.hxx | 41 - src/GEOMImpl/GEOMImpl_ICone.hxx | 41 - src/GEOMImpl/GEOMImpl_ICopy.hxx | 21 - src/GEOMImpl/GEOMImpl_ICurvesOperations.cxx | 581 -- src/GEOMImpl/GEOMImpl_ICurvesOperations.hxx | 45 - src/GEOMImpl/GEOMImpl_ICylinder.hxx | 36 - src/GEOMImpl/GEOMImpl_IEllipse.hxx | 32 - src/GEOMImpl/GEOMImpl_IFillet.hxx | 40 - src/GEOMImpl/GEOMImpl_IFilling.hxx | 37 - src/GEOMImpl/GEOMImpl_IGlue.hxx | 28 - src/GEOMImpl/GEOMImpl_IGroupOperations.cxx | 709 --- src/GEOMImpl/GEOMImpl_IGroupOperations.hxx | 45 - src/GEOMImpl/GEOMImpl_IHealing.hxx | 61 - src/GEOMImpl/GEOMImpl_IHealingOperations.cxx | 756 --- src/GEOMImpl/GEOMImpl_IHealingOperations.hxx | 67 - src/GEOMImpl/GEOMImpl_IImportExport.hxx | 32 - src/GEOMImpl/GEOMImpl_IInsertOperations.cxx | 386 -- src/GEOMImpl/GEOMImpl_IInsertOperations.hxx | 46 - src/GEOMImpl/GEOMImpl_ILine.hxx | 24 - src/GEOMImpl/GEOMImpl_ILocalOperations.cxx | 506 -- src/GEOMImpl/GEOMImpl_ILocalOperations.hxx | 44 - src/GEOMImpl/GEOMImpl_IMarker.hxx | 69 - src/GEOMImpl/GEOMImpl_IMeasure.hxx | 22 - src/GEOMImpl/GEOMImpl_IMeasureOperations.cxx | 907 --- src/GEOMImpl/GEOMImpl_IMeasureOperations.hxx | 74 - src/GEOMImpl/GEOMImpl_IMirror.hxx | 30 - src/GEOMImpl/GEOMImpl_IOffset.hxx | 26 - src/GEOMImpl/GEOMImpl_IPartition.hxx | 63 - src/GEOMImpl/GEOMImpl_IPipe.hxx | 24 - src/GEOMImpl/GEOMImpl_IPlane.hxx | 47 - src/GEOMImpl/GEOMImpl_IPoint.hxx | 44 - src/GEOMImpl/GEOMImpl_IPolyline.hxx | 26 - src/GEOMImpl/GEOMImpl_IPosition.hxx | 33 - src/GEOMImpl/GEOMImpl_IPrism.hxx | 35 - src/GEOMImpl/GEOMImpl_IRevolution.hxx | 31 - src/GEOMImpl/GEOMImpl_IRotate.hxx | 47 - src/GEOMImpl/GEOMImpl_IScale.hxx | 31 - src/GEOMImpl/GEOMImpl_IShapes.hxx | 55 - src/GEOMImpl/GEOMImpl_IShapesOperations.cxx | 1957 ------ src/GEOMImpl/GEOMImpl_IShapesOperations.hxx | 125 - src/GEOMImpl/GEOMImpl_ISketcher.hxx | 34 - src/GEOMImpl/GEOMImpl_ISphere.hxx | 26 - src/GEOMImpl/GEOMImpl_ISpline.hxx | 26 - src/GEOMImpl/GEOMImpl_ITorus.hxx | 32 - .../GEOMImpl_ITransformOperations.cxx | 1310 ---- .../GEOMImpl_ITransformOperations.hxx | 93 - src/GEOMImpl/GEOMImpl_ITranslate.hxx | 76 - src/GEOMImpl/GEOMImpl_IVector.hxx | 36 - src/GEOMImpl/GEOMImpl_ImportDriver.cxx | 143 - src/GEOMImpl/GEOMImpl_ImportDriver.hxx | 139 - src/GEOMImpl/GEOMImpl_LineDriver.cxx | 155 - src/GEOMImpl/GEOMImpl_LineDriver.hxx | 138 - src/GEOMImpl/GEOMImpl_MarkerDriver.cxx | 141 - src/GEOMImpl/GEOMImpl_MarkerDriver.hxx | 138 - src/GEOMImpl/GEOMImpl_MeasureDriver.cxx | 135 - src/GEOMImpl/GEOMImpl_MeasureDriver.hxx | 139 - src/GEOMImpl/GEOMImpl_MirrorDriver.cxx | 167 - src/GEOMImpl/GEOMImpl_MirrorDriver.hxx | 139 - src/GEOMImpl/GEOMImpl_OffsetDriver.cxx | 129 - src/GEOMImpl/GEOMImpl_OffsetDriver.hxx | 139 - src/GEOMImpl/GEOMImpl_PartitionDriver.cxx | 269 - src/GEOMImpl/GEOMImpl_PartitionDriver.hxx | 139 - src/GEOMImpl/GEOMImpl_PipeDriver.cxx | 140 - src/GEOMImpl/GEOMImpl_PipeDriver.hxx | 139 - src/GEOMImpl/GEOMImpl_PlaneDriver.cxx | 164 - src/GEOMImpl/GEOMImpl_PlaneDriver.hxx | 138 - src/GEOMImpl/GEOMImpl_PointDriver.cxx | 139 - src/GEOMImpl/GEOMImpl_PointDriver.hxx | 138 - src/GEOMImpl/GEOMImpl_PolylineDriver.cxx | 125 - src/GEOMImpl/GEOMImpl_PolylineDriver.hxx | 139 - src/GEOMImpl/GEOMImpl_PositionDriver.cxx | 174 - src/GEOMImpl/GEOMImpl_PositionDriver.hxx | 139 - src/GEOMImpl/GEOMImpl_PrismDriver.cxx | 146 - src/GEOMImpl/GEOMImpl_PrismDriver.hxx | 139 - src/GEOMImpl/GEOMImpl_RevolutionDriver.cxx | 146 - src/GEOMImpl/GEOMImpl_RevolutionDriver.hxx | 139 - src/GEOMImpl/GEOMImpl_RotateDriver.cxx | 245 - src/GEOMImpl/GEOMImpl_RotateDriver.hxx | 139 - src/GEOMImpl/GEOMImpl_ScaleDriver.cxx | 119 - src/GEOMImpl/GEOMImpl_ScaleDriver.hxx | 139 - src/GEOMImpl/GEOMImpl_ShapeDriver.cxx | 353 -- src/GEOMImpl/GEOMImpl_ShapeDriver.hxx | 139 - src/GEOMImpl/GEOMImpl_SketcherDriver.cxx | 150 - src/GEOMImpl/GEOMImpl_SketcherDriver.hxx | 139 - src/GEOMImpl/GEOMImpl_SphereDriver.cxx | 114 - src/GEOMImpl/GEOMImpl_SphereDriver.hxx | 139 - src/GEOMImpl/GEOMImpl_SplineDriver.cxx | 157 - src/GEOMImpl/GEOMImpl_SplineDriver.hxx | 139 - src/GEOMImpl/GEOMImpl_Template.cxx | 88 - src/GEOMImpl/GEOMImpl_Template.hxx | 139 - src/GEOMImpl/GEOMImpl_TorusDriver.cxx | 143 - src/GEOMImpl/GEOMImpl_TorusDriver.hxx | 139 - src/GEOMImpl/GEOMImpl_TranslateDriver.cxx | 224 - src/GEOMImpl/GEOMImpl_TranslateDriver.hxx | 139 - src/GEOMImpl/GEOMImpl_Types.hxx | 211 - src/GEOMImpl/GEOMImpl_VectorDriver.cxx | 136 - src/GEOMImpl/GEOMImpl_VectorDriver.hxx | 138 - src/GEOMImpl/GUID.txt | 69 - src/GEOMImpl/Makefile.in | 105 - src/GEOMToolsGUI/GEOMToolsGUI.cxx | 649 -- src/GEOMToolsGUI/GEOMToolsGUI.h | 81 - src/GEOMToolsGUI/GEOMToolsGUI_NameDlg.cxx | 135 - src/GEOMToolsGUI/GEOMToolsGUI_NameDlg.h | 46 - src/GEOMToolsGUI/GEOMToolsGUI_NbIsosDlg.cxx | 151 - src/GEOMToolsGUI/GEOMToolsGUI_NbIsosDlg.h | 60 - .../GEOMToolsGUI_TransparencyDlg.h | 65 - src/GEOMToolsGUI/Makefile.in | 67 - src/GEOM_I/GEOM_DumpPython.cc | 94 - src/GEOM_I/GEOM_Gen_i.cc | 868 --- src/GEOM_I/GEOM_Gen_i.hh | 208 - src/GEOM_I/GEOM_I3DPrimOperations_i.cc | 467 -- src/GEOM_I/GEOM_I3DPrimOperations_i.hh | 82 - src/GEOM_I/GEOM_IBasicOperations_i.cc | 371 -- src/GEOM_I/GEOM_IBasicOperations_i.hh | 68 - src/GEOM_I/GEOM_IBlocksOperations_i.cc | 1037 ---- src/GEOM_I/GEOM_IBlocksOperations_i.hh | 133 - src/GEOM_I/GEOM_IBooleanOperations_i.cc | 183 - src/GEOM_I/GEOM_IBooleanOperations_i.hh | 43 - src/GEOM_I/GEOM_ICurvesOperations_i.cc | 328 - src/GEOM_I/GEOM_ICurvesOperations_i.hh | 53 - src/GEOM_I/GEOM_IGroupOperations_i.cc | 311 - src/GEOM_I/GEOM_IGroupOperations_i.hh | 47 - src/GEOM_I/GEOM_IHealingOperations_i.cc | 437 -- src/GEOM_I/GEOM_IHealingOperations_i.hh | 53 - src/GEOM_I/GEOM_IInsertOperations_i.cc | 201 - src/GEOM_I/GEOM_IInsertOperations_i.hh | 42 - src/GEOM_I/GEOM_ILocalOperations_i.cc | 275 - src/GEOM_I/GEOM_ILocalOperations_i.hh | 50 - src/GEOM_I/GEOM_IMeasureOperations_i.cc | 286 - src/GEOM_I/GEOM_IMeasureOperations_i.hh | 64 - src/GEOM_I/GEOM_IOperations_i.cc | 125 - src/GEOM_I/GEOM_IOperations_i.hh | 45 - src/GEOM_I/GEOM_IShapesOperations_i.cc | 857 --- src/GEOM_I/GEOM_IShapesOperations_i.hh | 109 - src/GEOM_I/GEOM_ITransformOperations_i.cc | 931 --- src/GEOM_I/GEOM_ITransformOperations_i.hh | 111 - src/GEOM_I/GEOM_Object_i.cc | 298 - src/GEOM_I/GEOM_Object_i.hh | 63 - src/GEOM_I/Makefile.in | 98 - src/GEOM_I_Superv/GEOM_List_i.hh | 85 - src/GEOM_I_Superv/GEOM_Superv_i.cc | 1918 ------ src/GEOM_I_Superv/GEOM_Superv_i.hh | 484 -- src/GEOM_I_Superv/Makefile.in | 64 - src/GEOM_SWIG/GEOM_Nut.py | 68 - src/GEOM_SWIG/GEOM_Partition1.py | 86 - src/GEOM_SWIG/GEOM_Partition2.py | 145 - src/GEOM_SWIG/GEOM_Partition3.py | 143 - src/GEOM_SWIG/GEOM_Partition4.py | 83 - src/GEOM_SWIG/GEOM_Partition5.py | 93 - src/GEOM_SWIG/GEOM_Sketcher.py | 58 - src/GEOM_SWIG/GEOM_Spanner.py | 504 -- src/GEOM_SWIG/GEOM_TestAll.py | 335 -- src/GEOM_SWIG/GEOM_TestHealing.py | 331 - src/GEOM_SWIG/GEOM_TestMeasures.py | 102 - src/GEOM_SWIG/GEOM_TestOthers.py | 427 -- src/GEOM_SWIG/GEOM_blocks.py | 41 - src/GEOM_SWIG/GEOM_cyl2complementary.py | 88 - src/GEOM_SWIG/GEOM_example.py | 54 - src/GEOM_SWIG/GEOM_example2.py | 68 - src/GEOM_SWIG/GEOM_example3.py | 116 - src/GEOM_SWIG/GEOM_example4.py | 108 - src/GEOM_SWIG/GEOM_example5.py | 54 - src/GEOM_SWIG/GEOM_moteur.py | 144 - src/GEOM_SWIG/GEOM_shared_modules.py | 19 - src/GEOM_SWIG/GEOM_shellSolid.py | 678 --- src/GEOM_SWIG/GEOM_tube_geom.py | 151 - src/GEOM_SWIG/GEOM_tube_geom_gg2.py | 157 - src/GEOM_SWIG/GEOM_usinggeom.py | 40 - src/GEOM_SWIG/Makefile.in | 91 - src/GEOM_SWIG/PAL_MESH_019_020_geometry.py | 34 - src/GEOM_SWIG/PAL_MESH_028_geometry.py | 64 - src/GEOM_SWIG/PAL_MESH_030_geometry.py | 57 - src/GEOM_SWIG/PAL_MESH_033_geometry.py | 40 - src/GEOM_SWIG/PAL_MESH_035_geometry.py | 88 - src/GEOM_SWIG/batchmode_geompy.py | 1163 ---- src/GEOM_SWIG/geompy.py | 2530 -------- src/GEOM_SWIG/libGEOM_Swig.i | 12 - src/GenerationGUI/GenerationGUI.cxx | 112 - src/GenerationGUI/GenerationGUI.h | 55 - .../GenerationGUI_FillingDlg.cxx | 345 -- src/GenerationGUI/GenerationGUI_FillingDlg.h | 80 - src/GenerationGUI/GenerationGUI_PipeDlg.cxx | 308 - src/GenerationGUI/GenerationGUI_PipeDlg.h | 74 - src/GenerationGUI/GenerationGUI_PrismDlg.cxx | 343 -- src/GenerationGUI/GenerationGUI_PrismDlg.h | 79 - src/GenerationGUI/GenerationGUI_RevolDlg.cxx | 363 -- src/GenerationGUI/GenerationGUI_RevolDlg.h | 81 - src/GenerationGUI/Makefile.in | 66 - src/GroupGUI/GroupGUI.cxx | 152 - src/GroupGUI/GroupGUI.h | 57 - src/GroupGUI/GroupGUI_GroupDlg.cxx | 655 -- src/GroupGUI/GroupGUI_GroupDlg.h | 103 - src/GroupGUI/Makefile.in | 60 - src/IGESExport/IGESExport.cxx | 52 - src/IGESExport/Makefile.in | 45 - src/IGESImport/IGESImport.cxx | 76 - src/IGESImport/Makefile.in | 45 - src/Makefile.in | 37 - src/MeasureGUI/Makefile.in | 92 - src/MeasureGUI/MeasureGUI.cxx | 148 - src/MeasureGUI/MeasureGUI.h | 52 - .../MeasureGUI_1Sel12LineEdit_QTD.cxx | 150 - .../MeasureGUI_1Sel12LineEdit_QTD.h | 59 - .../MeasureGUI_1Sel1TextView_QTD.cxx | 77 - src/MeasureGUI/MeasureGUI_1Sel1TextView_QTD.h | 44 - .../MeasureGUI_1Sel3LineEdit_QTD.cxx | 104 - src/MeasureGUI/MeasureGUI_1Sel3LineEdit_QTD.h | 48 - .../MeasureGUI_1Sel6LineEdit_QTD.cxx | 132 - src/MeasureGUI/MeasureGUI_1Sel6LineEdit_QTD.h | 54 - .../MeasureGUI_2Sel1LineEdit_QTD.cxx | 100 - src/MeasureGUI/MeasureGUI_2Sel1LineEdit_QTD.h | 47 - src/MeasureGUI/MeasureGUI_BndBoxDlg.cxx | 210 - src/MeasureGUI/MeasureGUI_BndBoxDlg.h | 86 - src/MeasureGUI/MeasureGUI_CenterMassDlg.cxx | 341 -- src/MeasureGUI/MeasureGUI_CenterMassDlg.h | 81 - .../MeasureGUI_CheckCompoundOfBlocksDlg.cxx | 371 -- .../MeasureGUI_CheckCompoundOfBlocksDlg.h | 84 - src/MeasureGUI/MeasureGUI_CheckShapeDlg.cxx | 158 - src/MeasureGUI/MeasureGUI_CheckShapeDlg.h | 71 - src/MeasureGUI/MeasureGUI_DistanceDlg.cxx | 338 -- src/MeasureGUI/MeasureGUI_DistanceDlg.h | 82 - src/MeasureGUI/MeasureGUI_InertiaDlg.cxx | 204 - src/MeasureGUI/MeasureGUI_InertiaDlg.h | 73 - src/MeasureGUI/MeasureGUI_MaxToleranceDlg.cxx | 202 - src/MeasureGUI/MeasureGUI_MaxToleranceDlg.h | 87 - src/MeasureGUI/MeasureGUI_PointDlg.cxx | 223 - src/MeasureGUI/MeasureGUI_PointDlg.h | 85 - src/MeasureGUI/MeasureGUI_PropertiesDlg.cxx | 221 - src/MeasureGUI/MeasureGUI_PropertiesDlg.h | 87 - src/MeasureGUI/MeasureGUI_Skeleton.cxx | 344 -- src/MeasureGUI/MeasureGUI_Skeleton.h | 98 - src/MeasureGUI/MeasureGUI_Skeleton_QTD.cxx | 99 - src/MeasureGUI/MeasureGUI_Skeleton_QTD.h | 46 - src/MeasureGUI/MeasureGUI_WhatisDlg.cxx | 148 - src/MeasureGUI/MeasureGUI_WhatisDlg.h | 71 - .../UIFiles/MeasureGUI_1Sel12LineEdit_QTD.ui | 268 - .../UIFiles/MeasureGUI_1Sel1TextView_QTD.ui | 116 - .../UIFiles/MeasureGUI_1Sel3LineEdit_QTD.ui | 191 - .../UIFiles/MeasureGUI_1Sel6LineEdit_QTD.ui | 254 - .../UIFiles/MeasureGUI_2Sel1LineEdit_QTD.ui | 186 - .../UIFiles/MeasureGUI_Skeleton_QTD.ui | 210 - src/MeasureGUI/UIFiles/ui_to_cxx | 19 - src/NMTAlgo/Makefile.in | 70 - src/NMTAlgo/NMTAlgo.cdl | 40 - src/NMTAlgo/NMTAlgo_Algo.cdl | 59 - src/NMTAlgo/NMTAlgo_Algo.cxx | 119 - src/NMTAlgo/NMTAlgo_Algo.hxx | 109 - src/NMTAlgo/NMTAlgo_Algo.ixx | 19 - src/NMTAlgo/NMTAlgo_Algo.jxx | 9 - src/NMTAlgo/NMTAlgo_Builder.cdl | 79 - src/NMTAlgo/NMTAlgo_Builder.cxx | 649 -- src/NMTAlgo/NMTAlgo_Builder.hxx | 119 - src/NMTAlgo/NMTAlgo_Builder.ixx | 19 - src/NMTAlgo/NMTAlgo_Builder.jxx | 12 - src/NMTAlgo/NMTAlgo_Loop3d.cdl | 66 - src/NMTAlgo/NMTAlgo_Loop3d.cxx | 330 - src/NMTAlgo/NMTAlgo_Loop3d.hxx | 107 - src/NMTAlgo/NMTAlgo_Loop3d.ixx | 19 - src/NMTAlgo/NMTAlgo_Loop3d.jxx | 21 - src/NMTAlgo/NMTAlgo_Splitter.cdl | 181 - src/NMTAlgo/NMTAlgo_Splitter.cxx | 605 -- src/NMTAlgo/NMTAlgo_Splitter.hxx | 167 - src/NMTAlgo/NMTAlgo_Splitter.ixx | 19 - src/NMTAlgo/NMTAlgo_Splitter.jxx | 12 - src/NMTAlgo/NMTAlgo_Splitter1.cdl | 73 - src/NMTAlgo/NMTAlgo_Splitter1.cxx | 356 -- src/NMTAlgo/NMTAlgo_Splitter1.hxx | 117 - src/NMTAlgo/NMTAlgo_Splitter1.ixx | 19 - src/NMTAlgo/NMTAlgo_Splitter1.jxx | 9 - src/NMTAlgo/NMTAlgo_Splitter_1.cxx | 916 --- src/NMTAlgo/NMTAlgo_Splitter_2.cxx | 660 -- src/NMTAlgo/NMTAlgo_Tools.cdl | 71 - src/NMTAlgo/NMTAlgo_Tools.cxx | 499 -- src/NMTAlgo/NMTAlgo_Tools.hxx | 105 - src/NMTAlgo/NMTAlgo_Tools.ixx | 19 - src/NMTAlgo/NMTAlgo_Tools.jxx | 21 - ...pOfIntegerIndexedDataMapOfShapeInteger.hxx | 85 - ...dexedDataMapOfShapeAncestorsSuccessors.hxx | 85 - src/NMTDS/Makefile.in | 72 - src/NMTDS/NMTDS.cdl | 39 - src/NMTDS/NMTDS_CArray1OfIndexRange.hxx | 132 - src/NMTDS/NMTDS_CArray1OfIndexRange_0.cxx | 33 - src/NMTDS/NMTDS_IndexRange.cdl | 39 - src/NMTDS/NMTDS_IndexRange.cxx | 57 - src/NMTDS/NMTDS_IndexRange.hxx | 94 - src/NMTDS/NMTDS_IndexRange.ixx | 19 - src/NMTDS/NMTDS_IndexRange.jxx | 3 - ...pOfIntegerIndexedDataMapOfShapeInteger.hxx | 136 - ...fIntegerIndexedDataMapOfShapeInteger_0.cxx | 93 - ...pOfIntegerIndexedDataMapOfShapeInteger.hxx | 133 - ...fIntegerIndexedDataMapOfShapeInteger_0.cxx | 50 - ...dexedDataMapOfShapeAncestorsSuccessors.hxx | 124 - ...xedDataMapOfShapeAncestorsSuccessors_0.cxx | 45 - ...dexedDataMapOfShapeAncestorsSuccessors.hxx | 123 - ...xedDataMapOfShapeAncestorsSuccessors_0.cxx | 91 - ...dexedDataMapOfShapeAncestorsSuccessors.hxx | 150 - ...xedDataMapOfShapeAncestorsSuccessors_0.cxx | 42 - src/NMTDS/NMTDS_PShapesDataStructure.hxx | 22 - src/NMTDS/NMTDS_ShapesDataStructure.cdl | 56 - src/NMTDS/NMTDS_ShapesDataStructure.cxx | 226 - src/NMTDS/NMTDS_ShapesDataStructure.hxx | 108 - src/NMTDS/NMTDS_ShapesDataStructure.ixx | 19 - src/NMTDS/NMTDS_ShapesDataStructure.jxx | 9 - ...pOfIntegerIndexedDataMapOfShapeInteger.hxx | 85 - ...dexedDataMapOfShapeAncestorsSuccessors.hxx | 85 - ...eOfIndexedDataMapOfIndexedMapOfInteger.hxx | 85 - ...IndexedDataMapOfShapeIndexedMapOfShape.hxx | 85 - ...apNodeOfIndexedDataMapOfShapePaveBlock.hxx | 85 - ...e_NMTTools_ListNodeOfListOfCommonBlock.hxx | 85 - ...NMTTools_ListNodeOfListOfCoupleOfShape.hxx | 85 - src/NMTTools/Makefile.in | 103 - src/NMTTools/NMTTools.cdl | 66 - src/NMTTools/NMTTools_CommonBlock.cdl | 88 - src/NMTTools/NMTTools_CommonBlock.cxx | 227 - src/NMTTools/NMTTools_CommonBlock.hxx | 110 - src/NMTTools/NMTTools_CommonBlock.ixx | 19 - src/NMTTools/NMTTools_CommonBlock.jxx | 12 - src/NMTTools/NMTTools_CommonBlockAPI.cdl | 54 - src/NMTTools/NMTTools_CommonBlockAPI.cxx | 114 - src/NMTTools/NMTTools_CommonBlockAPI.hxx | 103 - src/NMTTools/NMTTools_CommonBlockAPI.ixx | 19 - src/NMTTools/NMTTools_CommonBlockAPI.jxx | 15 - src/NMTTools/NMTTools_CommonBlockPool.hxx | 132 - src/NMTTools/NMTTools_CommonBlockPool_0.cxx | 33 - src/NMTTools/NMTTools_CoupleOfShape.cdl | 39 - src/NMTTools/NMTTools_CoupleOfShape.cxx | 45 - src/NMTTools/NMTTools_CoupleOfShape.hxx | 91 - src/NMTTools/NMTTools_CoupleOfShape.ixx | 19 - src/NMTTools/NMTTools_CoupleOfShape.jxx | 6 - src/NMTTools/NMTTools_DEProcessor.cdl | 105 - src/NMTTools/NMTTools_DEProcessor.cxx | 492 -- src/NMTTools/NMTTools_DEProcessor.hxx | 117 - src/NMTTools/NMTTools_DEProcessor.ixx | 19 - src/NMTTools/NMTTools_DEProcessor.jxx | 18 - src/NMTTools/NMTTools_DSFiller.cdl | 80 - src/NMTTools/NMTTools_DSFiller.cxx | 149 - src/NMTTools/NMTTools_DSFiller.hxx | 123 - src/NMTTools/NMTTools_DSFiller.ixx | 19 - src/NMTTools/NMTTools_DSFiller.jxx | 15 - ...eOfIndexedDataMapOfIndexedMapOfInteger.hxx | 136 - ...fIndexedDataMapOfIndexedMapOfInteger_0.cxx | 93 - ...IndexedDataMapOfShapeIndexedMapOfShape.hxx | 140 - ...dexedDataMapOfShapeIndexedMapOfShape_0.cxx | 96 - ...apNodeOfIndexedDataMapOfShapePaveBlock.hxx | 140 - ...NodeOfIndexedDataMapOfShapePaveBlock_0.cxx | 96 - ...ls_IndexedDataMapOfIndexedMapOfInteger.hxx | 133 - ..._IndexedDataMapOfIndexedMapOfInteger_0.cxx | 50 - ...IndexedDataMapOfShapeIndexedMapOfShape.hxx | 134 - ...dexedDataMapOfShapeIndexedMapOfShape_0.cxx | 53 - ...MTTools_IndexedDataMapOfShapePaveBlock.hxx | 134 - ...Tools_IndexedDataMapOfShapePaveBlock_0.cxx | 53 - .../NMTTools_IteratorOfCoupleOfShape.cdl | 55 - .../NMTTools_IteratorOfCoupleOfShape.cxx | 140 - .../NMTTools_IteratorOfCoupleOfShape.hxx | 111 - .../NMTTools_IteratorOfCoupleOfShape.ixx | 19 - .../NMTTools_IteratorOfCoupleOfShape.jxx | 9 - ...TTools_ListIteratorOfListOfCommonBlock.hxx | 124 - ...ools_ListIteratorOfListOfCommonBlock_0.cxx | 45 - ...ools_ListIteratorOfListOfCoupleOfShape.hxx | 124 - ...ls_ListIteratorOfListOfCoupleOfShape_0.cxx | 45 - .../NMTTools_ListNodeOfListOfCommonBlock.hxx | 123 - ...NMTTools_ListNodeOfListOfCommonBlock_0.cxx | 91 - ...NMTTools_ListNodeOfListOfCoupleOfShape.hxx | 123 - ...TTools_ListNodeOfListOfCoupleOfShape_0.cxx | 91 - src/NMTTools/NMTTools_ListOfCommonBlock.hxx | 150 - src/NMTTools/NMTTools_ListOfCommonBlock_0.cxx | 42 - src/NMTTools/NMTTools_ListOfCoupleOfShape.hxx | 150 - .../NMTTools_ListOfCoupleOfShape_0.cxx | 42 - src/NMTTools/NMTTools_PCurveMaker.cdl | 35 - src/NMTTools/NMTTools_PCurveMaker.cxx | 109 - src/NMTTools/NMTTools_PCurveMaker.hxx | 91 - src/NMTTools/NMTTools_PCurveMaker.ixx | 19 - src/NMTTools/NMTTools_PCurveMaker.jxx | 3 - src/NMTTools/NMTTools_PDSFiller.hxx | 22 - src/NMTTools/NMTTools_PPaveFiller.hxx | 22 - src/NMTTools/NMTTools_PaveFiller.cdl | 441 -- src/NMTTools/NMTTools_PaveFiller.cxx | 212 - src/NMTTools/NMTTools_PaveFiller.hxx | 237 - src/NMTTools/NMTTools_PaveFiller.ixx | 19 - src/NMTTools/NMTTools_PaveFiller.jxx | 66 - src/NMTTools/NMTTools_PaveFiller_0.cxx | 118 - src/NMTTools/NMTTools_PaveFiller_1.cxx | 170 - src/NMTTools/NMTTools_PaveFiller_2.cxx | 211 - src/NMTTools/NMTTools_PaveFiller_3.cxx | 88 - src/NMTTools/NMTTools_PaveFiller_4.cxx | 1079 ---- src/NMTTools/NMTTools_PaveFiller_5.cxx | 605 -- src/NMTTools/NMTTools_PaveFiller_6.cxx | 1201 ---- src/NMTTools/NMTTools_PaveFiller_7.cxx | 261 - src/NMTTools/NMTTools_PaveFiller_8.cxx | 595 -- src/NMTTools/NMTTools_PaveFiller_9.cxx | 105 - src/NMTTools/NMTTools_Tools.cdl | 72 - src/NMTTools/NMTTools_Tools.cxx | 550 -- src/NMTTools/NMTTools_Tools.hxx | 109 - src/NMTTools/NMTTools_Tools.ixx | 19 - src/NMTTools/NMTTools_Tools.jxx | 36 - src/OBJECT/GEOM_AISShape.cxx | 254 - src/OBJECT/GEOM_AISShape.hxx | 140 - src/OBJECT/GEOM_AISShape.ixx | 91 - src/OBJECT/GEOM_AISShape.jxx | 41 - src/OBJECT/GEOM_AISTrihedron.cxx | 72 - src/OBJECT/GEOM_AISTrihedron.hxx | 81 - src/OBJECT/GEOM_Actor.cxx | 475 -- src/OBJECT/GEOM_Actor.h | 128 - src/OBJECT/GEOM_AssemblyBuilder.cxx | 421 -- src/OBJECT/GEOM_AssemblyBuilder.h | 99 - src/OBJECT/GEOM_InteractiveObject.cxx | 76 - src/OBJECT/GEOM_InteractiveObject.hxx | 127 - src/OBJECT/GEOM_InteractiveObject.ixx | 83 - src/OBJECT/GEOM_InteractiveObject.jxx | 32 - src/OBJECT/GEOM_OCCReader.cxx | 995 --- src/OBJECT/GEOM_OCCReader.h | 143 - src/OBJECT/GEOM_VTKTrihedron.cxx | 396 -- src/OBJECT/GEOM_VTKTrihedron.hxx | 101 - src/OBJECT/Handle_GEOM_AISShape.hxx | 100 - src/OBJECT/Handle_GEOM_InteractiveObject.hxx | 100 - src/OBJECT/Makefile.in | 68 - src/OperationGUI/Makefile.in | 70 - src/OperationGUI/OperationGUI.cxx | 125 - src/OperationGUI/OperationGUI.h | 56 - .../OperationGUI_ArchimedeDlg.cxx | 267 - src/OperationGUI/OperationGUI_ArchimedeDlg.h | 74 - src/OperationGUI/OperationGUI_ChamferDlg.cxx | 708 --- src/OperationGUI/OperationGUI_ChamferDlg.h | 98 - src/OperationGUI/OperationGUI_ClippingDlg.cxx | 397 -- src/OperationGUI/OperationGUI_ClippingDlg.h | 81 - src/OperationGUI/OperationGUI_FilletDlg.cxx | 635 -- src/OperationGUI/OperationGUI_FilletDlg.h | 93 - src/OperationGUI/OperationGUI_MaterialDlg.cxx | 238 - src/OperationGUI/OperationGUI_MaterialDlg.h | 71 - .../OperationGUI_PartitionDlg.cxx | 554 -- src/OperationGUI/OperationGUI_PartitionDlg.h | 91 - src/PARTITION/Makefile.in | 63 - src/PARTITION/Partition.cdl | 44 - src/PARTITION/Partition_Inter2d.cdl | 91 - src/PARTITION/Partition_Inter2d.cxx | 673 --- src/PARTITION/Partition_Inter2d.hxx | 110 - src/PARTITION/Partition_Inter2d.ixx | 31 - src/PARTITION/Partition_Inter2d.jxx | 47 - src/PARTITION/Partition_Inter3d.cdl | 175 - src/PARTITION/Partition_Inter3d.cxx | 939 --- src/PARTITION/Partition_Inter3d.hxx | 143 - src/PARTITION/Partition_Inter3d.ixx | 31 - src/PARTITION/Partition_Inter3d.jxx | 53 - src/PARTITION/Partition_Loop.cdl | 87 - src/PARTITION/Partition_Loop.cxx | 467 -- src/PARTITION/Partition_Loop.hxx | 118 - src/PARTITION/Partition_Loop.ixx | 31 - src/PARTITION/Partition_Loop.jxx | 41 - src/PARTITION/Partition_Loop2d.cdl | 83 - src/PARTITION/Partition_Loop2d.cxx | 1138 ---- src/PARTITION/Partition_Loop2d.hxx | 106 - src/PARTITION/Partition_Loop2d.ixx | 14 - src/PARTITION/Partition_Loop2d.jxx | 24 - src/PARTITION/Partition_Loop3d.cdl | 69 - src/PARTITION/Partition_Loop3d.cxx | 351 -- src/PARTITION/Partition_Loop3d.hxx | 102 - src/PARTITION/Partition_Loop3d.ixx | 14 - src/PARTITION/Partition_Loop3d.jxx | 30 - src/PARTITION/Partition_Spliter.cdl | 185 - src/PARTITION/Partition_Spliter.cxx | 2160 ------- src/PARTITION/Partition_Spliter.hxx | 150 - src/PARTITION/Partition_Spliter.ixx | 31 - src/PARTITION/Partition_Spliter.jxx | 41 - src/PrimitiveGUI/Makefile.in | 68 - src/PrimitiveGUI/PrimitiveGUI.cxx | 138 - src/PrimitiveGUI/PrimitiveGUI.h | 56 - src/PrimitiveGUI/PrimitiveGUI_BoxDlg.cxx | 412 -- src/PrimitiveGUI/PrimitiveGUI_BoxDlg.h | 83 - src/PrimitiveGUI/PrimitiveGUI_ConeDlg.cxx | 471 -- src/PrimitiveGUI/PrimitiveGUI_ConeDlg.h | 84 - src/PrimitiveGUI/PrimitiveGUI_CylinderDlg.cxx | 447 -- src/PrimitiveGUI/PrimitiveGUI_CylinderDlg.h | 83 - src/PrimitiveGUI/PrimitiveGUI_SphereDlg.cxx | 398 -- src/PrimitiveGUI/PrimitiveGUI_SphereDlg.h | 82 - src/PrimitiveGUI/PrimitiveGUI_TorusDlg.cxx | 445 -- src/PrimitiveGUI/PrimitiveGUI_TorusDlg.h | 84 - src/RepairGUI/Makefile.in | 78 - src/RepairGUI/RepairGUI.cxx | 146 - src/RepairGUI/RepairGUI.h | 57 - src/RepairGUI/RepairGUI_CloseContourDlg.cxx | 398 -- src/RepairGUI/RepairGUI_CloseContourDlg.h | 88 - src/RepairGUI/RepairGUI_DivideEdgeDlg.cxx | 365 -- src/RepairGUI/RepairGUI_DivideEdgeDlg.h | 87 - src/RepairGUI/RepairGUI_FreeBoundDlg.cxx | 282 - src/RepairGUI/RepairGUI_FreeBoundDlg.h | 92 - src/RepairGUI/RepairGUI_FreeFacesDlg.cxx | 330 - src/RepairGUI/RepairGUI_FreeFacesDlg.h | 85 - src/RepairGUI/RepairGUI_GlueDlg.cxx | 447 -- src/RepairGUI/RepairGUI_GlueDlg.h | 83 - src/RepairGUI/RepairGUI_RemoveHolesDlg.cxx | 448 -- src/RepairGUI/RepairGUI_RemoveHolesDlg.h | 95 - src/RepairGUI/RepairGUI_RemoveIntWiresDlg.cxx | 391 -- src/RepairGUI/RepairGUI_RemoveIntWiresDlg.h | 90 - src/RepairGUI/RepairGUI_SewingDlg.cxx | 369 -- src/RepairGUI/RepairGUI_SewingDlg.h | 91 - src/RepairGUI/RepairGUI_ShapeProcessDlg.cxx | 847 --- src/RepairGUI/RepairGUI_ShapeProcessDlg.h | 141 - src/RepairGUI/RepairGUI_SuppressFacesDlg.cxx | 349 -- src/RepairGUI/RepairGUI_SuppressFacesDlg.h | 85 - src/SKETCHER/Makefile.in | 51 - src/SKETCHER/Sketcher_Profile.cxx | 407 -- src/SKETCHER/Sketcher_Profile.hxx | 54 - src/STEPExport/Makefile.in | 45 - src/STEPExport/STEPExport.cxx | 53 - src/STEPImport/Makefile.in | 45 - src/STEPImport/STEPImport.cxx | 114 - src/ShHealOper/Makefile.in | 80 - src/ShHealOper/ShHealOper_CloseContour.cxx | 407 -- src/ShHealOper/ShHealOper_CloseContour.hxx | 140 - src/ShHealOper/ShHealOper_EdgeDivide.cxx | 256 - src/ShHealOper/ShHealOper_EdgeDivide.hxx | 94 - src/ShHealOper/ShHealOper_FillHoles.cxx | 468 -- src/ShHealOper/ShHealOper_FillHoles.hxx | 119 - src/ShHealOper/ShHealOper_RemoveFace.cxx | 444 -- src/ShHealOper/ShHealOper_RemoveFace.hxx | 86 - .../ShHealOper_RemoveInternalWires.cxx | 154 - .../ShHealOper_RemoveInternalWires.hxx | 83 - src/ShHealOper/ShHealOper_Sewing.cxx | 282 - src/ShHealOper/ShHealOper_Sewing.hxx | 152 - src/ShHealOper/ShHealOper_ShapeProcess.cxx | 180 - src/ShHealOper/ShHealOper_ShapeProcess.hxx | 131 - src/ShHealOper/ShHealOper_SpiltCurve2d.hxx | 66 - src/ShHealOper/ShHealOper_SplitCurve2d.cxx | 47 - src/ShHealOper/ShHealOper_SplitCurve2d.hxx | 66 - src/ShHealOper/ShHealOper_SplitCurve3d.cxx | 46 - src/ShHealOper/ShHealOper_SplitCurve3d.hxx | 66 - src/ShHealOper/ShHealOper_Tool.cxx | 60 - src/ShHealOper/ShHealOper_Tool.hxx | 108 - src/TransformationGUI/Makefile.in | 74 - src/TransformationGUI/TransformationGUI.cxx | 156 - src/TransformationGUI/TransformationGUI.h | 56 - .../TransformationGUI_MirrorDlg.cxx | 452 -- .../TransformationGUI_MirrorDlg.h | 80 - .../TransformationGUI_MultiRotationDlg.cxx | 483 -- .../TransformationGUI_MultiRotationDlg.h | 87 - .../TransformationGUI_MultiTranslationDlg.cxx | 546 -- .../TransformationGUI_MultiTranslationDlg.h | 88 - .../TransformationGUI_OffsetDlg.cxx | 352 -- .../TransformationGUI_OffsetDlg.h | 79 - .../TransformationGUI_PositionDlg.cxx | 445 -- .../TransformationGUI_PositionDlg.h | 81 - .../TransformationGUI_RotationDlg.cxx | 386 -- .../TransformationGUI_RotationDlg.h | 79 - .../TransformationGUI_ScaleDlg.cxx | 374 -- .../TransformationGUI_ScaleDlg.h | 81 - .../TransformationGUI_TranslationDlg.cxx | 527 -- .../TransformationGUI_TranslationDlg.h | 81 - 1883 files changed, 235808 deletions(-) delete mode 100644 INSTALL delete mode 100644 LICENCE delete mode 100644 Makefile.in delete mode 100644 adm_local/unix/config_files/README delete mode 100644 adm_local/unix/make_commence.in delete mode 100644 adm_local/unix/make_omniorb.in delete mode 100755 bin/VERSION delete mode 100755 build_configure delete mode 100644 configure.in.base delete mode 100644 doc/Makefile.in delete mode 100644 doc/salome/GEOM_index.html delete mode 100644 doc/salome/Makefile.in delete mode 100755 doc/salome/gui/GEOM/GEOM.log delete mode 100755 doc/salome/gui/GEOM/blocks.htm delete mode 100755 doc/salome/gui/GEOM/changing_displaying_parameters.htm delete mode 100755 doc/salome/gui/GEOM/cshdat_robohelp.htm delete mode 100755 doc/salome/gui/GEOM/cshdat_webhelp.htm delete mode 100755 doc/salome/gui/GEOM/default.css delete mode 100755 doc/salome/gui/GEOM/default.skn delete mode 100755 doc/salome/gui/GEOM/default_ns.css delete mode 100755 doc/salome/gui/GEOM/ehelp.xml delete mode 100755 doc/salome/gui/GEOM/ehlpdhtm.js delete mode 100755 doc/salome/gui/GEOM/files/introduction_to_geom.htm delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_basicgui_functions.htm delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image27.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image28.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image29.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image30.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image31.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image32.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image33.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image34.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_booleangui_functions.htm delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_booleangui_functions_salome2_sp3_booleangui_functions_image1.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_booleangui_functions_salome2_sp3_booleangui_functions_image2.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_booleangui_functions_salome2_sp3_booleangui_functions_image3.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_booleangui_functions_salome2_sp3_booleangui_functions_image4.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_buildgui_functions.htm delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_displaygui_functions.htm delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_displaygui_functions_salome2_sp3_displaygui_functions_image51.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_displaygui_functions_salome2_sp3_displaygui_functions_image52.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_displaygui_functions_salome2_sp3_displaygui_functions_image53.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_displaygui_functions_salome2_sp3_displaygui_functions_image54.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_displaygui_functions_salome2_sp3_displaygui_functions_image55.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_generationgui_functions.htm delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image56.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image57.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image58.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image59.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_geomtoolsgui_functions.htm delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_measuregui_functions.htm delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image71.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image72.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image73.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image74.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image75.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image76.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image77.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image78.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_operationgui_functions.htm delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_operationgui_functions_salome2_sp3_operationgui_functions_image87.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_operationgui_functions_salome2_sp3_operationgui_functions_image88.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_operationgui_functions_salome2_sp3_operationgui_functions_image89.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_operationgui_functions_salome2_sp3_operationgui_functions_image90.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_primitivegui_functions.htm delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image100.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image101.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image102.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image103.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image99.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_repairgui_functions.htm delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_repairgui_functions_salome2_sp3_repairgui_functions_image119.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_repairgui_functions_salome2_sp3_repairgui_functions_image120.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_repairgui_functions_salome2_sp3_repairgui_functions_image121.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_repairgui_functions_salome2_sp3_repairgui_functions_image122.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_transformationgui_functions.htm delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image128.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image129.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image130.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image131.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image132.gif delete mode 100755 doc/salome/gui/GEOM/files/salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image133.gif delete mode 100755 doc/salome/gui/GEOM/geom.htm delete mode 100755 doc/salome/gui/GEOM/geom.html delete mode 100755 doc/salome/gui/GEOM/geom.log delete mode 100755 doc/salome/gui/GEOM/geom_csh.htm delete mode 100755 doc/salome/gui/GEOM/geom_csh.html delete mode 100755 doc/salome/gui/GEOM/geom_help.html delete mode 100755 doc/salome/gui/GEOM/geom_help_csh.html delete mode 100755 doc/salome/gui/GEOM/geom_help_rhc.html delete mode 100755 doc/salome/gui/GEOM/geom_rhc.htm delete mode 100755 doc/salome/gui/GEOM/geom_rhc.html delete mode 100755 doc/salome/gui/GEOM/i_blue.jpg delete mode 100755 doc/salome/gui/GEOM/image10.jpg delete mode 100755 doc/salome/gui/GEOM/image100.jpg delete mode 100755 doc/salome/gui/GEOM/image101.jpg delete mode 100755 doc/salome/gui/GEOM/image102.jpg delete mode 100755 doc/salome/gui/GEOM/image103.jpg delete mode 100755 doc/salome/gui/GEOM/image104.jpg delete mode 100755 doc/salome/gui/GEOM/image105.jpg delete mode 100755 doc/salome/gui/GEOM/image106.jpg delete mode 100755 doc/salome/gui/GEOM/image107.jpg delete mode 100755 doc/salome/gui/GEOM/image108.jpg delete mode 100755 doc/salome/gui/GEOM/image109.jpg delete mode 100755 doc/salome/gui/GEOM/image11.gif delete mode 100755 doc/salome/gui/GEOM/image11.jpg delete mode 100755 doc/salome/gui/GEOM/image110.jpg delete mode 100755 doc/salome/gui/GEOM/image111.jpg delete mode 100755 doc/salome/gui/GEOM/image112.jpg delete mode 100755 doc/salome/gui/GEOM/image113.jpg delete mode 100755 doc/salome/gui/GEOM/image114.jpg delete mode 100755 doc/salome/gui/GEOM/image115.jpg delete mode 100755 doc/salome/gui/GEOM/image116.jpg delete mode 100755 doc/salome/gui/GEOM/image117.jpg delete mode 100755 doc/salome/gui/GEOM/image118.jpg delete mode 100755 doc/salome/gui/GEOM/image119.jpg delete mode 100755 doc/salome/gui/GEOM/image12.gif delete mode 100755 doc/salome/gui/GEOM/image12.jpg delete mode 100755 doc/salome/gui/GEOM/image120.jpg delete mode 100755 doc/salome/gui/GEOM/image121.jpg delete mode 100755 doc/salome/gui/GEOM/image122.jpg delete mode 100755 doc/salome/gui/GEOM/image123.jpg delete mode 100755 doc/salome/gui/GEOM/image124.jpg delete mode 100755 doc/salome/gui/GEOM/image125.jpg delete mode 100755 doc/salome/gui/GEOM/image126.jpg delete mode 100755 doc/salome/gui/GEOM/image127.jpg delete mode 100755 doc/salome/gui/GEOM/image128.jpg delete mode 100755 doc/salome/gui/GEOM/image129.jpg delete mode 100755 doc/salome/gui/GEOM/image13.gif delete mode 100755 doc/salome/gui/GEOM/image13.jpg delete mode 100755 doc/salome/gui/GEOM/image130.jpg delete mode 100755 doc/salome/gui/GEOM/image131.jpg delete mode 100755 doc/salome/gui/GEOM/image132.jpg delete mode 100755 doc/salome/gui/GEOM/image133.jpg delete mode 100755 doc/salome/gui/GEOM/image134.jpg delete mode 100755 doc/salome/gui/GEOM/image135.jpg delete mode 100755 doc/salome/gui/GEOM/image136.jpg delete mode 100755 doc/salome/gui/GEOM/image137.jpg delete mode 100755 doc/salome/gui/GEOM/image138.jpg delete mode 100755 doc/salome/gui/GEOM/image139.jpg delete mode 100755 doc/salome/gui/GEOM/image14.gif delete mode 100755 doc/salome/gui/GEOM/image14.jpg delete mode 100755 doc/salome/gui/GEOM/image140.jpg delete mode 100755 doc/salome/gui/GEOM/image141.jpg delete mode 100755 doc/salome/gui/GEOM/image142.jpg delete mode 100755 doc/salome/gui/GEOM/image144.jpg delete mode 100755 doc/salome/gui/GEOM/image145.jpg delete mode 100755 doc/salome/gui/GEOM/image146.jpg delete mode 100755 doc/salome/gui/GEOM/image147.jpg delete mode 100755 doc/salome/gui/GEOM/image149.jpg delete mode 100755 doc/salome/gui/GEOM/image15.gif delete mode 100755 doc/salome/gui/GEOM/image15.jpg delete mode 100755 doc/salome/gui/GEOM/image150.jpg delete mode 100755 doc/salome/gui/GEOM/image151.jpg delete mode 100755 doc/salome/gui/GEOM/image152.jpg delete mode 100755 doc/salome/gui/GEOM/image154.jpg delete mode 100755 doc/salome/gui/GEOM/image156.jpg delete mode 100755 doc/salome/gui/GEOM/image158.jpg delete mode 100755 doc/salome/gui/GEOM/image16.gif delete mode 100755 doc/salome/gui/GEOM/image16.jpg delete mode 100755 doc/salome/gui/GEOM/image160.jpg delete mode 100755 doc/salome/gui/GEOM/image161.jpg delete mode 100755 doc/salome/gui/GEOM/image163.jpg delete mode 100755 doc/salome/gui/GEOM/image164.jpg delete mode 100755 doc/salome/gui/GEOM/image165.jpg delete mode 100755 doc/salome/gui/GEOM/image166.jpg delete mode 100755 doc/salome/gui/GEOM/image167.jpg delete mode 100755 doc/salome/gui/GEOM/image168.jpg delete mode 100755 doc/salome/gui/GEOM/image169.jpg delete mode 100755 doc/salome/gui/GEOM/image17.gif delete mode 100755 doc/salome/gui/GEOM/image17.jpg delete mode 100755 doc/salome/gui/GEOM/image170.jpg delete mode 100755 doc/salome/gui/GEOM/image171.jpg delete mode 100755 doc/salome/gui/GEOM/image172.jpg delete mode 100755 doc/salome/gui/GEOM/image173.jpg delete mode 100755 doc/salome/gui/GEOM/image175.jpg delete mode 100755 doc/salome/gui/GEOM/image176.jpg delete mode 100755 doc/salome/gui/GEOM/image179.jpg delete mode 100755 doc/salome/gui/GEOM/image18.jpg delete mode 100755 doc/salome/gui/GEOM/image180.jpg delete mode 100755 doc/salome/gui/GEOM/image181.jpg delete mode 100755 doc/salome/gui/GEOM/image182.jpg delete mode 100755 doc/salome/gui/GEOM/image183.jpg delete mode 100755 doc/salome/gui/GEOM/image184.jpg delete mode 100755 doc/salome/gui/GEOM/image185.jpg delete mode 100755 doc/salome/gui/GEOM/image186.jpg delete mode 100755 doc/salome/gui/GEOM/image187.jpg delete mode 100755 doc/salome/gui/GEOM/image188.jpg delete mode 100755 doc/salome/gui/GEOM/image189.jpg delete mode 100755 doc/salome/gui/GEOM/image19.gif delete mode 100755 doc/salome/gui/GEOM/image19.jpg delete mode 100755 doc/salome/gui/GEOM/image190.jpg delete mode 100755 doc/salome/gui/GEOM/image191.jpg delete mode 100755 doc/salome/gui/GEOM/image192.jpg delete mode 100755 doc/salome/gui/GEOM/image193.jpg delete mode 100755 doc/salome/gui/GEOM/image194.jpg delete mode 100755 doc/salome/gui/GEOM/image196.jpg delete mode 100755 doc/salome/gui/GEOM/image197.jpg delete mode 100755 doc/salome/gui/GEOM/image199.jpg delete mode 100755 doc/salome/gui/GEOM/image2.gif delete mode 100755 doc/salome/gui/GEOM/image20.gif delete mode 100755 doc/salome/gui/GEOM/image20.jpg delete mode 100755 doc/salome/gui/GEOM/image200.jpg delete mode 100755 doc/salome/gui/GEOM/image201.jpg delete mode 100755 doc/salome/gui/GEOM/image202.jpg delete mode 100755 doc/salome/gui/GEOM/image203.jpg delete mode 100755 doc/salome/gui/GEOM/image204.jpg delete mode 100755 doc/salome/gui/GEOM/image205.jpg delete mode 100755 doc/salome/gui/GEOM/image206.jpg delete mode 100755 doc/salome/gui/GEOM/image207.jpg delete mode 100755 doc/salome/gui/GEOM/image208.jpg delete mode 100755 doc/salome/gui/GEOM/image209.jpg delete mode 100755 doc/salome/gui/GEOM/image21.gif delete mode 100755 doc/salome/gui/GEOM/image21.jpg delete mode 100755 doc/salome/gui/GEOM/image210.jpg delete mode 100755 doc/salome/gui/GEOM/image211.jpg delete mode 100755 doc/salome/gui/GEOM/image212.jpg delete mode 100755 doc/salome/gui/GEOM/image213.jpg delete mode 100755 doc/salome/gui/GEOM/image214.jpg delete mode 100755 doc/salome/gui/GEOM/image215.jpg delete mode 100755 doc/salome/gui/GEOM/image216.jpg delete mode 100755 doc/salome/gui/GEOM/image217.jpg delete mode 100755 doc/salome/gui/GEOM/image218.jpg delete mode 100755 doc/salome/gui/GEOM/image219.jpg delete mode 100755 doc/salome/gui/GEOM/image22.gif delete mode 100755 doc/salome/gui/GEOM/image22.jpg delete mode 100755 doc/salome/gui/GEOM/image220.jpg delete mode 100755 doc/salome/gui/GEOM/image221.jpg delete mode 100755 doc/salome/gui/GEOM/image222.jpg delete mode 100755 doc/salome/gui/GEOM/image223.jpg delete mode 100755 doc/salome/gui/GEOM/image224.jpg delete mode 100755 doc/salome/gui/GEOM/image225.jpg delete mode 100755 doc/salome/gui/GEOM/image226.jpg delete mode 100755 doc/salome/gui/GEOM/image227.jpg delete mode 100755 doc/salome/gui/GEOM/image228.jpg delete mode 100755 doc/salome/gui/GEOM/image229.jpg delete mode 100755 doc/salome/gui/GEOM/image23.gif delete mode 100755 doc/salome/gui/GEOM/image23.jpg delete mode 100755 doc/salome/gui/GEOM/image230.jpg delete mode 100755 doc/salome/gui/GEOM/image231.jpg delete mode 100755 doc/salome/gui/GEOM/image233.jpg delete mode 100755 doc/salome/gui/GEOM/image234.jpg delete mode 100755 doc/salome/gui/GEOM/image235.jpg delete mode 100755 doc/salome/gui/GEOM/image236.jpg delete mode 100755 doc/salome/gui/GEOM/image237.jpg delete mode 100755 doc/salome/gui/GEOM/image238.jpg delete mode 100755 doc/salome/gui/GEOM/image239.jpg delete mode 100755 doc/salome/gui/GEOM/image24.gif delete mode 100755 doc/salome/gui/GEOM/image24.jpg delete mode 100755 doc/salome/gui/GEOM/image240.jpg delete mode 100755 doc/salome/gui/GEOM/image241.jpg delete mode 100755 doc/salome/gui/GEOM/image242.jpg delete mode 100755 doc/salome/gui/GEOM/image243.jpg delete mode 100755 doc/salome/gui/GEOM/image244.jpg delete mode 100755 doc/salome/gui/GEOM/image245.jpg delete mode 100755 doc/salome/gui/GEOM/image246.jpg delete mode 100755 doc/salome/gui/GEOM/image247.jpg delete mode 100755 doc/salome/gui/GEOM/image248.jpg delete mode 100755 doc/salome/gui/GEOM/image249.jpg delete mode 100755 doc/salome/gui/GEOM/image25.gif delete mode 100755 doc/salome/gui/GEOM/image250.jpg delete mode 100755 doc/salome/gui/GEOM/image251.jpg delete mode 100755 doc/salome/gui/GEOM/image252.jpg delete mode 100755 doc/salome/gui/GEOM/image253.jpg delete mode 100755 doc/salome/gui/GEOM/image254.jpg delete mode 100755 doc/salome/gui/GEOM/image255.jpg delete mode 100755 doc/salome/gui/GEOM/image256.jpg delete mode 100755 doc/salome/gui/GEOM/image257.jpg delete mode 100755 doc/salome/gui/GEOM/image258.jpg delete mode 100755 doc/salome/gui/GEOM/image259.jpg delete mode 100755 doc/salome/gui/GEOM/image26.jpg delete mode 100755 doc/salome/gui/GEOM/image260.jpg delete mode 100755 doc/salome/gui/GEOM/image261.jpg delete mode 100755 doc/salome/gui/GEOM/image262.jpg delete mode 100755 doc/salome/gui/GEOM/image263.jpg delete mode 100755 doc/salome/gui/GEOM/image264.jpg delete mode 100755 doc/salome/gui/GEOM/image265.jpg delete mode 100755 doc/salome/gui/GEOM/image266.jpg delete mode 100755 doc/salome/gui/GEOM/image267.jpg delete mode 100755 doc/salome/gui/GEOM/image268.jpg delete mode 100755 doc/salome/gui/GEOM/image269.jpg delete mode 100755 doc/salome/gui/GEOM/image27.jpg delete mode 100755 doc/salome/gui/GEOM/image270.jpg delete mode 100755 doc/salome/gui/GEOM/image271.jpg delete mode 100755 doc/salome/gui/GEOM/image272.jpg delete mode 100755 doc/salome/gui/GEOM/image273.jpg delete mode 100755 doc/salome/gui/GEOM/image274.jpg delete mode 100755 doc/salome/gui/GEOM/image275.jpg delete mode 100755 doc/salome/gui/GEOM/image276.jpg delete mode 100755 doc/salome/gui/GEOM/image277.jpg delete mode 100755 doc/salome/gui/GEOM/image278.jpg delete mode 100755 doc/salome/gui/GEOM/image279.jpg delete mode 100755 doc/salome/gui/GEOM/image28.jpg delete mode 100755 doc/salome/gui/GEOM/image280.jpg delete mode 100755 doc/salome/gui/GEOM/image281.jpg delete mode 100755 doc/salome/gui/GEOM/image282.jpg delete mode 100755 doc/salome/gui/GEOM/image283.jpg delete mode 100755 doc/salome/gui/GEOM/image284.jpg delete mode 100755 doc/salome/gui/GEOM/image285.jpg delete mode 100755 doc/salome/gui/GEOM/image286.jpg delete mode 100755 doc/salome/gui/GEOM/image287.jpg delete mode 100755 doc/salome/gui/GEOM/image288.jpg delete mode 100755 doc/salome/gui/GEOM/image289.jpg delete mode 100755 doc/salome/gui/GEOM/image29.gif delete mode 100755 doc/salome/gui/GEOM/image29.jpg delete mode 100755 doc/salome/gui/GEOM/image290.jpg delete mode 100755 doc/salome/gui/GEOM/image291.jpg delete mode 100755 doc/salome/gui/GEOM/image292.jpg delete mode 100755 doc/salome/gui/GEOM/image293.jpg delete mode 100755 doc/salome/gui/GEOM/image294.jpg delete mode 100755 doc/salome/gui/GEOM/image295.jpg delete mode 100755 doc/salome/gui/GEOM/image296.jpg delete mode 100755 doc/salome/gui/GEOM/image297.jpg delete mode 100755 doc/salome/gui/GEOM/image298.jpg delete mode 100755 doc/salome/gui/GEOM/image299.jpg delete mode 100755 doc/salome/gui/GEOM/image3.jpg delete mode 100755 doc/salome/gui/GEOM/image300.jpg delete mode 100755 doc/salome/gui/GEOM/image32.gif delete mode 100755 doc/salome/gui/GEOM/image35.gif delete mode 100755 doc/salome/gui/GEOM/image37.gif delete mode 100755 doc/salome/gui/GEOM/image4.gif delete mode 100755 doc/salome/gui/GEOM/image41.gif delete mode 100755 doc/salome/gui/GEOM/image42.gif delete mode 100755 doc/salome/gui/GEOM/image44.gif delete mode 100755 doc/salome/gui/GEOM/image49.gif delete mode 100755 doc/salome/gui/GEOM/image5.gif delete mode 100755 doc/salome/gui/GEOM/image5.jpg delete mode 100755 doc/salome/gui/GEOM/image51.gif delete mode 100755 doc/salome/gui/GEOM/image51.jpg delete mode 100755 doc/salome/gui/GEOM/image52.gif delete mode 100755 doc/salome/gui/GEOM/image52.jpg delete mode 100755 doc/salome/gui/GEOM/image53.gif delete mode 100755 doc/salome/gui/GEOM/image53.jpg delete mode 100755 doc/salome/gui/GEOM/image54.jpg delete mode 100755 doc/salome/gui/GEOM/image55.jpg delete mode 100755 doc/salome/gui/GEOM/image56.gif delete mode 100755 doc/salome/gui/GEOM/image56.jpg delete mode 100755 doc/salome/gui/GEOM/image57.gif delete mode 100755 doc/salome/gui/GEOM/image57.jpg delete mode 100755 doc/salome/gui/GEOM/image58.jpg delete mode 100755 doc/salome/gui/GEOM/image59.gif delete mode 100755 doc/salome/gui/GEOM/image59.jpg delete mode 100755 doc/salome/gui/GEOM/image6.gif delete mode 100755 doc/salome/gui/GEOM/image60.jpg delete mode 100755 doc/salome/gui/GEOM/image61.gif delete mode 100755 doc/salome/gui/GEOM/image61.jpg delete mode 100755 doc/salome/gui/GEOM/image62.jpg delete mode 100755 doc/salome/gui/GEOM/image63.jpg delete mode 100755 doc/salome/gui/GEOM/image64.gif delete mode 100755 doc/salome/gui/GEOM/image65.jpg delete mode 100755 doc/salome/gui/GEOM/image66.jpg delete mode 100755 doc/salome/gui/GEOM/image67.jpg delete mode 100755 doc/salome/gui/GEOM/image68.jpg delete mode 100755 doc/salome/gui/GEOM/image69.jpg delete mode 100755 doc/salome/gui/GEOM/image7.gif delete mode 100755 doc/salome/gui/GEOM/image7.jpg delete mode 100755 doc/salome/gui/GEOM/image70.jpg delete mode 100755 doc/salome/gui/GEOM/image71.jpg delete mode 100755 doc/salome/gui/GEOM/image72.jpg delete mode 100755 doc/salome/gui/GEOM/image73.jpg delete mode 100755 doc/salome/gui/GEOM/image74.jpg delete mode 100755 doc/salome/gui/GEOM/image75.jpg delete mode 100755 doc/salome/gui/GEOM/image76.jpg delete mode 100755 doc/salome/gui/GEOM/image77.jpg delete mode 100755 doc/salome/gui/GEOM/image78.jpg delete mode 100755 doc/salome/gui/GEOM/image79.jpg delete mode 100755 doc/salome/gui/GEOM/image8.gif delete mode 100755 doc/salome/gui/GEOM/image8.jpg delete mode 100755 doc/salome/gui/GEOM/image80.jpg delete mode 100755 doc/salome/gui/GEOM/image81.jpg delete mode 100755 doc/salome/gui/GEOM/image82.jpg delete mode 100755 doc/salome/gui/GEOM/image83.jpg delete mode 100755 doc/salome/gui/GEOM/image84.jpg delete mode 100755 doc/salome/gui/GEOM/image85.jpg delete mode 100755 doc/salome/gui/GEOM/image86.jpg delete mode 100755 doc/salome/gui/GEOM/image87.jpg delete mode 100755 doc/salome/gui/GEOM/image88.jpg delete mode 100755 doc/salome/gui/GEOM/image89.jpg delete mode 100755 doc/salome/gui/GEOM/image9.gif delete mode 100755 doc/salome/gui/GEOM/image9.jpg delete mode 100755 doc/salome/gui/GEOM/image90.jpg delete mode 100755 doc/salome/gui/GEOM/image91.jpg delete mode 100755 doc/salome/gui/GEOM/image92.jpg delete mode 100755 doc/salome/gui/GEOM/image93.jpg delete mode 100755 doc/salome/gui/GEOM/image94.jpg delete mode 100755 doc/salome/gui/GEOM/image95.jpg delete mode 100755 doc/salome/gui/GEOM/image96.jpg delete mode 100755 doc/salome/gui/GEOM/image97.jpg delete mode 100755 doc/salome/gui/GEOM/image98.jpg delete mode 100755 doc/salome/gui/GEOM/image99.jpg delete mode 100755 doc/salome/gui/GEOM/newentity_blocks.htm delete mode 100755 doc/salome/gui/GEOM/salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image13.gif delete mode 100755 doc/salome/gui/GEOM/salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image14.gif delete mode 100755 doc/salome/gui/GEOM/salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image15.gif delete mode 100755 doc/salome/gui/GEOM/salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image16.gif delete mode 100755 doc/salome/gui/GEOM/salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image17.gif delete mode 100755 doc/salome/gui/GEOM/salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image18.gif delete mode 100755 doc/salome/gui/GEOM/salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image19.gif delete mode 100755 doc/salome/gui/GEOM/sketcher.htm delete mode 100755 doc/salome/gui/GEOM/webhelp.cab delete mode 100755 doc/salome/gui/GEOM/webhelp.jar delete mode 100755 doc/salome/gui/GEOM/whcsh_home.htm delete mode 100755 doc/salome/gui/GEOM/whcshdata.htm delete mode 100755 doc/salome/gui/GEOM/whdata/whftdata.js delete mode 100755 doc/salome/gui/GEOM/whdata/whftdata0.htm delete mode 100755 doc/salome/gui/GEOM/whdata/whftdata0.xml delete mode 100755 doc/salome/gui/GEOM/whdata/whfts.htm delete mode 100755 doc/salome/gui/GEOM/whdata/whfts.js delete mode 100755 doc/salome/gui/GEOM/whdata/whfts.xml delete mode 100755 doc/salome/gui/GEOM/whdata/whfwdata.js delete mode 100755 doc/salome/gui/GEOM/whdata/whfwdata0.htm delete mode 100755 doc/salome/gui/GEOM/whdata/whfwdata0.xml delete mode 100755 doc/salome/gui/GEOM/whdata/whfwdata1.htm delete mode 100755 doc/salome/gui/GEOM/whdata/whfwdata2.htm delete mode 100755 doc/salome/gui/GEOM/whdata/whgdata.js delete mode 100755 doc/salome/gui/GEOM/whdata/whgdata0.htm delete mode 100755 doc/salome/gui/GEOM/whdata/whgdata0.xml delete mode 100755 doc/salome/gui/GEOM/whdata/whglo.htm delete mode 100755 doc/salome/gui/GEOM/whdata/whglo.js delete mode 100755 doc/salome/gui/GEOM/whdata/whglo.xml delete mode 100755 doc/salome/gui/GEOM/whdata/whidata.js delete mode 100755 doc/salome/gui/GEOM/whdata/whidx.htm delete mode 100755 doc/salome/gui/GEOM/whdata/whidx.js delete mode 100755 doc/salome/gui/GEOM/whdata/whidx.xml delete mode 100755 doc/salome/gui/GEOM/whdata/whtdata.js delete mode 100755 doc/salome/gui/GEOM/whdata/whtdata0.htm delete mode 100755 doc/salome/gui/GEOM/whdata/whtdata0.xml delete mode 100755 doc/salome/gui/GEOM/whdata/whtoc.htm delete mode 100755 doc/salome/gui/GEOM/whdata/whtoc.js delete mode 100755 doc/salome/gui/GEOM/whdata/whtoc.xml delete mode 100755 doc/salome/gui/GEOM/whestart.ico delete mode 100755 doc/salome/gui/GEOM/whfbody.htm delete mode 100755 doc/salome/gui/GEOM/whfdhtml.htm delete mode 100755 doc/salome/gui/GEOM/whfform.htm delete mode 100755 doc/salome/gui/GEOM/whfhost.js delete mode 100755 doc/salome/gui/GEOM/whform.js delete mode 100755 doc/salome/gui/GEOM/whframes.js delete mode 100755 doc/salome/gui/GEOM/whgbody.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whexpbar.gif delete mode 100755 doc/salome/gui/GEOM/whgdata/whlstf0.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whlstf1.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whlstf2.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whlstf3.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whlstf4.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whlstf5.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whlstfl0.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whlstfl1.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whlstfl10.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whlstfl11.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whlstfl12.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whlstfl13.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whlstfl14.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whlstfl15.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whlstfl16.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whlstfl17.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whlstfl18.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whlstfl19.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whlstfl2.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whlstfl20.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whlstfl21.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whlstfl22.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whlstfl23.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whlstfl3.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whlstfl4.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whlstfl5.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whlstfl6.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whlstfl7.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whlstfl8.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whlstfl9.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whlstg0.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whlsti0.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whlstt0.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whlstt1.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whlstt2.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whlstt3.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whlstt4.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whnvf30.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whnvf31.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whnvf32.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whnvf33.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whnvl31.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whnvl32.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whnvl33.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whnvp30.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whnvp31.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whnvp32.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whnvp33.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whnvt30.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whnvt31.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whnvt32.htm delete mode 100755 doc/salome/gui/GEOM/whgdata/whnvt33.htm delete mode 100755 doc/salome/gui/GEOM/whgdef.htm delete mode 100755 doc/salome/gui/GEOM/whgdhtml.htm delete mode 100755 doc/salome/gui/GEOM/whghost.js delete mode 100755 doc/salome/gui/GEOM/whhost.js delete mode 100755 doc/salome/gui/GEOM/whibody.htm delete mode 100755 doc/salome/gui/GEOM/whidhtml.htm delete mode 100755 doc/salome/gui/GEOM/whiform.htm delete mode 100755 doc/salome/gui/GEOM/whihost.js delete mode 100755 doc/salome/gui/GEOM/whlang.js delete mode 100755 doc/salome/gui/GEOM/whmozemu.js delete mode 100755 doc/salome/gui/GEOM/whmsg.js delete mode 100755 doc/salome/gui/GEOM/whnjs.htm delete mode 100755 doc/salome/gui/GEOM/whphost.js delete mode 100755 doc/salome/gui/GEOM/whproj.htm delete mode 100755 doc/salome/gui/GEOM/whproj.js delete mode 100755 doc/salome/gui/GEOM/whproj.xml delete mode 100755 doc/salome/gui/GEOM/whproxy.js delete mode 100755 doc/salome/gui/GEOM/whres.xml delete mode 100755 doc/salome/gui/GEOM/whrstart.ico delete mode 100755 doc/salome/gui/GEOM/whskin_banner.htm delete mode 100755 doc/salome/gui/GEOM/whskin_blank.htm delete mode 100755 doc/salome/gui/GEOM/whskin_frmset01.htm delete mode 100755 doc/salome/gui/GEOM/whskin_frmset010.htm delete mode 100755 doc/salome/gui/GEOM/whskin_homepage.htm delete mode 100755 doc/salome/gui/GEOM/whskin_info.htm delete mode 100755 doc/salome/gui/GEOM/whskin_mbars.htm delete mode 100755 doc/salome/gui/GEOM/whskin_papplet.htm delete mode 100755 doc/salome/gui/GEOM/whskin_pdhtml.htm delete mode 100755 doc/salome/gui/GEOM/whskin_pickup.htm delete mode 100755 doc/salome/gui/GEOM/whskin_plist.htm delete mode 100755 doc/salome/gui/GEOM/whskin_tbars.htm delete mode 100755 doc/salome/gui/GEOM/whskin_tw.htm delete mode 100755 doc/salome/gui/GEOM/whst_topics.xml delete mode 100755 doc/salome/gui/GEOM/whstart.ico delete mode 100755 doc/salome/gui/GEOM/whstart.js delete mode 100755 doc/salome/gui/GEOM/whstub.js delete mode 100755 doc/salome/gui/GEOM/wht_abge.jpg delete mode 100755 doc/salome/gui/GEOM/wht_abgi.jpg delete mode 100755 doc/salome/gui/GEOM/wht_abgw.jpg delete mode 100755 doc/salome/gui/GEOM/wht_abte.jpg delete mode 100755 doc/salome/gui/GEOM/wht_abti.jpg delete mode 100755 doc/salome/gui/GEOM/wht_abtw.jpg delete mode 100755 doc/salome/gui/GEOM/wht_fts_h.gif delete mode 100755 doc/salome/gui/GEOM/wht_fts_n.gif delete mode 100755 doc/salome/gui/GEOM/wht_glo_h.gif delete mode 100755 doc/salome/gui/GEOM/wht_glo_n.gif delete mode 100755 doc/salome/gui/GEOM/wht_go.gif delete mode 100755 doc/salome/gui/GEOM/wht_hide.gif delete mode 100755 doc/salome/gui/GEOM/wht_idx_h.gif delete mode 100755 doc/salome/gui/GEOM/wht_idx_n.gif delete mode 100755 doc/salome/gui/GEOM/wht_logo1.gif delete mode 100755 doc/salome/gui/GEOM/wht_logo2.gif delete mode 100755 doc/salome/gui/GEOM/wht_next.gif delete mode 100755 doc/salome/gui/GEOM/wht_next_g.gif delete mode 100755 doc/salome/gui/GEOM/wht_prev.gif delete mode 100755 doc/salome/gui/GEOM/wht_prev_g.gif delete mode 100755 doc/salome/gui/GEOM/wht_spac.gif delete mode 100755 doc/salome/gui/GEOM/wht_sync.gif delete mode 100755 doc/salome/gui/GEOM/wht_tab0.gif delete mode 100755 doc/salome/gui/GEOM/wht_tab1.gif delete mode 100755 doc/salome/gui/GEOM/wht_tab2.gif delete mode 100755 doc/salome/gui/GEOM/wht_tab3.gif delete mode 100755 doc/salome/gui/GEOM/wht_tab4.gif delete mode 100755 doc/salome/gui/GEOM/wht_tab5.gif delete mode 100755 doc/salome/gui/GEOM/wht_tab6.gif delete mode 100755 doc/salome/gui/GEOM/wht_tab7.gif delete mode 100755 doc/salome/gui/GEOM/wht_tab8.gif delete mode 100755 doc/salome/gui/GEOM/wht_toc1.gif delete mode 100755 doc/salome/gui/GEOM/wht_toc2.gif delete mode 100755 doc/salome/gui/GEOM/wht_toc3.gif delete mode 100755 doc/salome/gui/GEOM/wht_toc4.gif delete mode 100755 doc/salome/gui/GEOM/wht_toc_h.gif delete mode 100755 doc/salome/gui/GEOM/wht_toc_n.gif delete mode 100755 doc/salome/gui/GEOM/wht_ws.gif delete mode 100755 doc/salome/gui/GEOM/wht_ws_g.gif delete mode 100755 doc/salome/gui/GEOM/whtbar.js delete mode 100755 doc/salome/gui/GEOM/whtdhtml.htm delete mode 100755 doc/salome/gui/GEOM/whthost.js delete mode 100755 doc/salome/gui/GEOM/whtopic.js delete mode 100755 doc/salome/gui/GEOM/whutils.js delete mode 100755 doc/salome/gui/GEOM/whver.js delete mode 100755 doc/salome/gui/GEOM/whxdata/whftdata0.xml delete mode 100755 doc/salome/gui/GEOM/whxdata/whfts.xml delete mode 100755 doc/salome/gui/GEOM/whxdata/whfwdata0.xml delete mode 100755 doc/salome/gui/GEOM/whxdata/whfwdata1.xml delete mode 100755 doc/salome/gui/GEOM/whxdata/whfwdata2.xml delete mode 100755 doc/salome/gui/GEOM/whxdata/whgdata0.xml delete mode 100755 doc/salome/gui/GEOM/whxdata/whglo.xml delete mode 100755 doc/salome/gui/GEOM/whxdata/whidx.xml delete mode 100755 doc/salome/gui/GEOM/whxdata/whtdata0.xml delete mode 100755 doc/salome/gui/GEOM/whxdata/whtoc.xml delete mode 100755 doc/salome/gui/GEOM/working_with_groups.htm delete mode 100644 doc/salome/gui/Makefile.in delete mode 100644 doc/salome/tui/GEOM/HTML/GEOM_Gen.html delete mode 100644 doc/salome/tui/GEOM/HTML/GEOM_Shape.html delete mode 100755 doc/salome/tui/GEOM/doxyfile delete mode 100755 doc/salome/tui/GEOM/doxyfile_py delete mode 100755 doc/salome/tui/GEOM/sources/Application-About.png delete mode 100755 doc/salome/tui/GEOM/sources/Application-About1.jpg delete mode 100644 doc/salome/tui/GEOM/sources/application.gif delete mode 100755 doc/salome/tui/GEOM/sources/application.jpg delete mode 100755 doc/salome/tui/GEOM/sources/bg_salome.gif delete mode 100755 doc/salome/tui/GEOM/sources/logocorp.gif delete mode 100755 doc/salome/tui/GEOM/sources/myheader.html delete mode 100755 doc/salome/tui/GEOM/sources/myheader_py2.html delete mode 100755 doc/salome/tui/GEOM/sources/occ.gif delete mode 100755 doc/salome/tui/GEOM/sources/static/doxygen.css delete mode 100755 doc/salome/tui/GEOM/sources/static/page2.html delete mode 100755 doc/salome/tui/GEOM/sources/static/tree.js delete mode 100644 doc/salome/tui/GEOM/sources/static/treeview.js delete mode 100644 doc/salome/tui/Makefile.in delete mode 100644 idl/GEOM_Gen.idl delete mode 100644 idl/GEOM_Superv.idl delete mode 100644 idl/Makefile.in delete mode 100644 resources/GEOM.config delete mode 100644 resources/GEOMCatalog.xml delete mode 100644 resources/GEOMDS_Resources delete mode 100644 resources/GEOM_en.xml delete mode 100644 resources/GEOM_fr.xml delete mode 100644 resources/ImportExport delete mode 100644 resources/ModuleGeom.png delete mode 100644 resources/ShHealing delete mode 100644 resources/arc.png delete mode 100644 resources/archimede.png delete mode 100644 resources/axisinertia.png delete mode 100644 resources/basicproperties.png delete mode 100644 resources/bezier.png delete mode 100644 resources/block_2f.png delete mode 100644 resources/block_6f.png delete mode 100644 resources/block_face_2e.png delete mode 100644 resources/block_face_4e.png delete mode 100644 resources/block_face_4v.png delete mode 100644 resources/block_multitrsf_double.png delete mode 100644 resources/block_multitrsf_simple.png delete mode 100644 resources/bounding.png delete mode 100644 resources/box.png delete mode 100644 resources/box2points.png delete mode 100644 resources/boxdxyz.png delete mode 100644 resources/build_compound.png delete mode 100644 resources/build_edge.png delete mode 100644 resources/build_face.png delete mode 100644 resources/build_shell.png delete mode 100644 resources/build_solid.png delete mode 100644 resources/build_wire.png delete mode 100644 resources/centergravity.png delete mode 100644 resources/chamfer.png delete mode 100644 resources/chamferall.png delete mode 100644 resources/chamferedge.png delete mode 100644 resources/chamferface.png delete mode 100644 resources/check.png delete mode 100644 resources/check_blocks_compound.png delete mode 100644 resources/circle.png delete mode 100644 resources/circle3points.png delete mode 100644 resources/circlepointvector.png delete mode 100644 resources/closecontour.png delete mode 100644 resources/common.png delete mode 100644 resources/cone.png delete mode 100755 resources/conedxyz.png delete mode 100644 resources/conepointvector.png delete mode 100755 resources/coordsys.png delete mode 100644 resources/cut.png delete mode 100644 resources/cylinder.png delete mode 100755 resources/cylinderdxyz.png delete mode 100644 resources/cylinderpointvector.png delete mode 100644 resources/delete.png delete mode 100644 resources/display.png delete mode 100644 resources/displayall.png delete mode 100644 resources/displayonly.png delete mode 100755 resources/ellipse.png delete mode 100755 resources/ellipsepointvector.png delete mode 100644 resources/erase.png delete mode 100644 resources/eraseall.png delete mode 100644 resources/fillet.png delete mode 100644 resources/filletall.png delete mode 100644 resources/filletedge.png delete mode 100644 resources/filletface.png delete mode 100644 resources/filling.png delete mode 100755 resources/free_bound.png delete mode 100644 resources/free_faces.png delete mode 100644 resources/fuse.png delete mode 100644 resources/geometry.png delete mode 100644 resources/glue.png delete mode 100644 resources/group_edit.png delete mode 100644 resources/group_new.png delete mode 100644 resources/interpol.png delete mode 100644 resources/line.png delete mode 100644 resources/line2points.png delete mode 100644 resources/lineedge.png delete mode 100644 resources/linepointvector.png delete mode 100644 resources/marker.png delete mode 100644 resources/marker2.png delete mode 100644 resources/marker3.png delete mode 100644 resources/mindist.png delete mode 100644 resources/mirrorAxe.png delete mode 100644 resources/mirrorPlane.png delete mode 100644 resources/mirrorPoint.png delete mode 100644 resources/multirotation.png delete mode 100644 resources/multirotationdouble.png delete mode 100644 resources/multirotationsimple.png delete mode 100644 resources/multitranslation.png delete mode 100644 resources/multitranslationdouble.png delete mode 100644 resources/multitranslationsimple.png delete mode 100644 resources/offset.png delete mode 100644 resources/orientation.png delete mode 100644 resources/partition.png delete mode 100644 resources/partitionkeep.png delete mode 100644 resources/partitionplane.png delete mode 100755 resources/pipe.png delete mode 100644 resources/plane.png delete mode 100644 resources/plane3points.png delete mode 100644 resources/planeWorking.png delete mode 100644 resources/planedxyz.png delete mode 100644 resources/planeface.png delete mode 100644 resources/planepointvector.png delete mode 100644 resources/planeworkingface.png delete mode 100644 resources/planeworkingorigin.png delete mode 100644 resources/planeworkingvector.png delete mode 100644 resources/point2.png delete mode 100644 resources/point3.png delete mode 100644 resources/point_coord.png delete mode 100755 resources/pointonedge.png delete mode 100644 resources/polyline.png delete mode 100644 resources/position.png delete mode 100644 resources/position2.png delete mode 100644 resources/prism.png delete mode 100644 resources/propagate.png delete mode 100644 resources/redo.png delete mode 100644 resources/revol.png delete mode 100644 resources/rotate.png delete mode 100644 resources/scale.png delete mode 100644 resources/section.png delete mode 100644 resources/select1.png delete mode 100644 resources/sewing.png delete mode 100755 resources/shading.png delete mode 100644 resources/shapeprocess.png delete mode 100644 resources/sketch.png delete mode 100644 resources/sphere.png delete mode 100644 resources/spheredxyz.png delete mode 100644 resources/spherepoint.png delete mode 100644 resources/spline.png delete mode 100755 resources/subblock.png delete mode 100755 resources/subshape.png delete mode 100644 resources/suppressintwires.png delete mode 100755 resources/supressHolesOnFaceShell.png delete mode 100644 resources/supressface.png delete mode 100755 resources/supresshole.png delete mode 100644 resources/tolerance.png delete mode 100644 resources/torus.png delete mode 100755 resources/torusdxyz.png delete mode 100644 resources/toruspointvector.png delete mode 100644 resources/translation.png delete mode 100644 resources/translationDxyz.png delete mode 100644 resources/translationPoints.png delete mode 100644 resources/translationVector.png delete mode 100644 resources/tree_block.png delete mode 100644 resources/tree_compound.png delete mode 100644 resources/tree_compsolid.png delete mode 100644 resources/tree_edge.png delete mode 100644 resources/tree_face.png delete mode 100644 resources/tree_group_edge.png delete mode 100644 resources/tree_group_face.png delete mode 100644 resources/tree_group_solid.png delete mode 100644 resources/tree_group_vertex.png delete mode 100644 resources/tree_lcs.png delete mode 100644 resources/tree_shape.png delete mode 100644 resources/tree_shell.png delete mode 100644 resources/tree_solid.png delete mode 100644 resources/tree_vertex.png delete mode 100644 resources/tree_wire.png delete mode 100644 resources/undo.png delete mode 100644 resources/vector.png delete mode 100644 resources/vector2points.png delete mode 100644 resources/vectordxyz.png delete mode 100644 resources/whatis.png delete mode 100644 src/ARCHIMEDE/Archimede_VolumeSection.cxx delete mode 100644 src/ARCHIMEDE/Archimede_VolumeSection.hxx delete mode 100644 src/ARCHIMEDE/Makefile.in delete mode 100644 src/BREPExport/BREPExport.cxx delete mode 100644 src/BREPExport/Makefile.in delete mode 100644 src/BREPImport/BREPImport.cxx delete mode 100644 src/BREPImport/Makefile.in delete mode 100644 src/BasicGUI/BasicGUI.cxx delete mode 100644 src/BasicGUI/BasicGUI.h delete mode 100644 src/BasicGUI/BasicGUI_ArcDlg.cxx delete mode 100644 src/BasicGUI/BasicGUI_ArcDlg.h delete mode 100644 src/BasicGUI/BasicGUI_CircleDlg.cxx delete mode 100644 src/BasicGUI/BasicGUI_CircleDlg.h delete mode 100644 src/BasicGUI/BasicGUI_CurveDlg.cxx delete mode 100644 src/BasicGUI/BasicGUI_CurveDlg.h delete mode 100644 src/BasicGUI/BasicGUI_EllipseDlg.cxx delete mode 100644 src/BasicGUI/BasicGUI_EllipseDlg.h delete mode 100644 src/BasicGUI/BasicGUI_LineDlg.cxx delete mode 100644 src/BasicGUI/BasicGUI_LineDlg.h delete mode 100644 src/BasicGUI/BasicGUI_MarkerDlg.cxx delete mode 100644 src/BasicGUI/BasicGUI_MarkerDlg.h delete mode 100644 src/BasicGUI/BasicGUI_PlaneDlg.cxx delete mode 100644 src/BasicGUI/BasicGUI_PlaneDlg.h delete mode 100644 src/BasicGUI/BasicGUI_PointDlg.cxx delete mode 100644 src/BasicGUI/BasicGUI_PointDlg.h delete mode 100644 src/BasicGUI/BasicGUI_VectorDlg.cxx delete mode 100644 src/BasicGUI/BasicGUI_VectorDlg.h delete mode 100644 src/BasicGUI/BasicGUI_WorkingPlaneDlg.cxx delete mode 100644 src/BasicGUI/BasicGUI_WorkingPlaneDlg.h delete mode 100644 src/BasicGUI/Makefile.in delete mode 100644 src/BlocksGUI/BlocksGUI.cxx delete mode 100644 src/BlocksGUI/BlocksGUI.h delete mode 100644 src/BlocksGUI/BlocksGUI_BlockDlg.cxx delete mode 100644 src/BlocksGUI/BlocksGUI_BlockDlg.h delete mode 100644 src/BlocksGUI/BlocksGUI_ExplodeDlg.cxx delete mode 100644 src/BlocksGUI/BlocksGUI_ExplodeDlg.h delete mode 100644 src/BlocksGUI/BlocksGUI_PropagateDlg.cxx delete mode 100644 src/BlocksGUI/BlocksGUI_PropagateDlg.h delete mode 100644 src/BlocksGUI/BlocksGUI_QuadFaceDlg.cxx delete mode 100644 src/BlocksGUI/BlocksGUI_QuadFaceDlg.h delete mode 100644 src/BlocksGUI/BlocksGUI_TrsfDlg.cxx delete mode 100644 src/BlocksGUI/BlocksGUI_TrsfDlg.h delete mode 100644 src/BlocksGUI/Makefile.in delete mode 100644 src/BooleanGUI/BooleanGUI.cxx delete mode 100644 src/BooleanGUI/BooleanGUI.h delete mode 100644 src/BooleanGUI/BooleanGUI_Dialog.cxx delete mode 100644 src/BooleanGUI/BooleanGUI_Dialog.h delete mode 100644 src/BooleanGUI/Makefile.in delete mode 100644 src/BuildGUI/BuildGUI.cxx delete mode 100644 src/BuildGUI/BuildGUI.h delete mode 100644 src/BuildGUI/BuildGUI_CompoundDlg.cxx delete mode 100644 src/BuildGUI/BuildGUI_CompoundDlg.h delete mode 100644 src/BuildGUI/BuildGUI_EdgeDlg.cxx delete mode 100644 src/BuildGUI/BuildGUI_EdgeDlg.h delete mode 100644 src/BuildGUI/BuildGUI_FaceDlg.cxx delete mode 100644 src/BuildGUI/BuildGUI_FaceDlg.h delete mode 100644 src/BuildGUI/BuildGUI_ShellDlg.cxx delete mode 100644 src/BuildGUI/BuildGUI_ShellDlg.h delete mode 100644 src/BuildGUI/BuildGUI_SolidDlg.cxx delete mode 100644 src/BuildGUI/BuildGUI_SolidDlg.h delete mode 100644 src/BuildGUI/BuildGUI_WireDlg.cxx delete mode 100644 src/BuildGUI/BuildGUI_WireDlg.h delete mode 100644 src/BuildGUI/Makefile.in delete mode 100644 src/DisplayGUI/DisplayGUI.h delete mode 100644 src/DisplayGUI/Makefile.in delete mode 100644 src/DlgRef/DlgRef_1List1Spin1Btn_QTD.cxx delete mode 100644 src/DlgRef/DlgRef_1List1Spin1Btn_QTD.h delete mode 100644 src/DlgRef/DlgRef_1Sel1Check1List_QTD.cxx delete mode 100644 src/DlgRef/DlgRef_1Sel1Check1List_QTD.h delete mode 100644 src/DlgRef/DlgRef_1Sel1Check_QTD.cxx delete mode 100644 src/DlgRef/DlgRef_1Sel1Check_QTD.h delete mode 100644 src/DlgRef/DlgRef_1Sel1Spin.cxx delete mode 100644 src/DlgRef/DlgRef_1Sel1Spin.h delete mode 100644 src/DlgRef/DlgRef_1Sel1Spin1Check.cxx delete mode 100644 src/DlgRef/DlgRef_1Sel1Spin1Check.h delete mode 100644 src/DlgRef/DlgRef_1Sel1Spin1Check_QTD.cxx delete mode 100644 src/DlgRef/DlgRef_1Sel1Spin1Check_QTD.h delete mode 100644 src/DlgRef/DlgRef_1Sel1Spin_QTD.cxx delete mode 100644 src/DlgRef/DlgRef_1Sel1Spin_QTD.h delete mode 100644 src/DlgRef/DlgRef_1Sel2Spin.cxx delete mode 100644 src/DlgRef/DlgRef_1Sel2Spin.h delete mode 100644 src/DlgRef/DlgRef_1Sel2Spin_QTD.cxx delete mode 100644 src/DlgRef/DlgRef_1Sel2Spin_QTD.h delete mode 100644 src/DlgRef/DlgRef_1Sel3Check_QTD.cxx delete mode 100644 src/DlgRef/DlgRef_1Sel3Check_QTD.h delete mode 100644 src/DlgRef/DlgRef_1Sel3Spin.cxx delete mode 100644 src/DlgRef/DlgRef_1Sel3Spin.h delete mode 100644 src/DlgRef/DlgRef_1Sel3Spin_QTD.cxx delete mode 100644 src/DlgRef/DlgRef_1Sel3Spin_QTD.h delete mode 100644 src/DlgRef/DlgRef_1Sel4Spin.cxx delete mode 100644 src/DlgRef/DlgRef_1Sel4Spin.h delete mode 100644 src/DlgRef/DlgRef_1Sel4Spin_QTD.cxx delete mode 100644 src/DlgRef/DlgRef_1Sel4Spin_QTD.h delete mode 100644 src/DlgRef/DlgRef_1Sel5Spin.cxx delete mode 100644 src/DlgRef/DlgRef_1Sel5Spin.h delete mode 100644 src/DlgRef/DlgRef_1Sel5Spin_QTD.cxx delete mode 100644 src/DlgRef/DlgRef_1Sel5Spin_QTD.h delete mode 100644 src/DlgRef/DlgRef_1Sel_Ext.h delete mode 100644 src/DlgRef/DlgRef_1Sel_QTD.cxx delete mode 100644 src/DlgRef/DlgRef_1Sel_QTD.h delete mode 100644 src/DlgRef/DlgRef_1Spin.cxx delete mode 100644 src/DlgRef/DlgRef_1Spin.h delete mode 100644 src/DlgRef/DlgRef_1Spin_QTD.cxx delete mode 100644 src/DlgRef/DlgRef_1Spin_QTD.h delete mode 100644 src/DlgRef/DlgRef_2Sel1Spin.cxx delete mode 100644 src/DlgRef/DlgRef_2Sel1Spin.h delete mode 100644 src/DlgRef/DlgRef_2Sel1Spin2Check.cxx delete mode 100644 src/DlgRef/DlgRef_2Sel1Spin2Check.h delete mode 100644 src/DlgRef/DlgRef_2Sel1Spin2Check_QTD.cxx delete mode 100644 src/DlgRef/DlgRef_2Sel1Spin2Check_QTD.h delete mode 100644 src/DlgRef/DlgRef_2Sel1Spin_QTD.cxx delete mode 100644 src/DlgRef/DlgRef_2Sel1Spin_QTD.h delete mode 100644 src/DlgRef/DlgRef_2Sel2Spin.cxx delete mode 100644 src/DlgRef/DlgRef_2Sel2Spin.h delete mode 100644 src/DlgRef/DlgRef_2Sel2Spin1Check.cxx delete mode 100644 src/DlgRef/DlgRef_2Sel2Spin1Check.h delete mode 100644 src/DlgRef/DlgRef_2Sel2Spin1Check_QTD.cxx delete mode 100644 src/DlgRef/DlgRef_2Sel2Spin1Check_QTD.h delete mode 100644 src/DlgRef/DlgRef_2Sel2Spin_QTD.cxx delete mode 100644 src/DlgRef/DlgRef_2Sel2Spin_QTD.h delete mode 100644 src/DlgRef/DlgRef_2Sel3Spin.cxx delete mode 100644 src/DlgRef/DlgRef_2Sel3Spin.h delete mode 100644 src/DlgRef/DlgRef_2Sel3Spin_QTD.cxx delete mode 100644 src/DlgRef/DlgRef_2Sel3Spin_QTD.h delete mode 100644 src/DlgRef/DlgRef_2Sel4Spin1Check.cxx delete mode 100644 src/DlgRef/DlgRef_2Sel4Spin1Check.h delete mode 100644 src/DlgRef/DlgRef_2Sel4Spin1Check_QTD.cxx delete mode 100644 src/DlgRef/DlgRef_2Sel4Spin1Check_QTD.h delete mode 100644 src/DlgRef/DlgRef_2Sel_QTD.cxx delete mode 100644 src/DlgRef/DlgRef_2Sel_QTD.h delete mode 100644 src/DlgRef/DlgRef_2Spin.cxx delete mode 100644 src/DlgRef/DlgRef_2Spin.h delete mode 100644 src/DlgRef/DlgRef_2Spin_QTD.cxx delete mode 100644 src/DlgRef/DlgRef_2Spin_QTD.h delete mode 100644 src/DlgRef/DlgRef_3Check_QTD.cxx delete mode 100644 src/DlgRef/DlgRef_3Check_QTD.h delete mode 100644 src/DlgRef/DlgRef_3Sel1Spin.cxx delete mode 100644 src/DlgRef/DlgRef_3Sel1Spin.h delete mode 100644 src/DlgRef/DlgRef_3Sel3Spin1Check.cxx delete mode 100644 src/DlgRef/DlgRef_3Sel3Spin1Check.h delete mode 100644 src/DlgRef/DlgRef_3Sel3Spin1Check_QTD.cxx delete mode 100644 src/DlgRef/DlgRef_3Sel3Spin1Check_QTD.h delete mode 100644 src/DlgRef/DlgRef_3Sel4Spin2Check.cxx delete mode 100644 src/DlgRef/DlgRef_3Sel4Spin2Check.h delete mode 100644 src/DlgRef/DlgRef_3Sel4Spin2Check_QTD.cxx delete mode 100644 src/DlgRef/DlgRef_3Sel4Spin2Check_QTD.h delete mode 100644 src/DlgRef/DlgRef_3Sel_QTD.cxx delete mode 100644 src/DlgRef/DlgRef_3Sel_QTD.h delete mode 100644 src/DlgRef/DlgRef_3Spin.cxx delete mode 100644 src/DlgRef/DlgRef_3Spin.h delete mode 100644 src/DlgRef/DlgRef_3Spin1Check.cxx delete mode 100644 src/DlgRef/DlgRef_3Spin1Check.h delete mode 100644 src/DlgRef/DlgRef_3Spin1Check_QTD.cxx delete mode 100644 src/DlgRef/DlgRef_3Spin1Check_QTD.h delete mode 100644 src/DlgRef/DlgRef_3Spin_QTD.cxx delete mode 100644 src/DlgRef/DlgRef_3Spin_QTD.h delete mode 100644 src/DlgRef/DlgRef_4Sel1List1Check_QTD.cxx delete mode 100644 src/DlgRef/DlgRef_4Sel1List1Check_QTD.h delete mode 100644 src/DlgRef/DlgRef_4Sel1List_QTD.cxx delete mode 100644 src/DlgRef/DlgRef_4Sel1List_QTD.h delete mode 100644 src/DlgRef/DlgRef_6Sel_QTD.cxx delete mode 100644 src/DlgRef/DlgRef_6Sel_QTD.h delete mode 100644 src/DlgRef/DlgRef_Skeleton_QTD.cxx delete mode 100644 src/DlgRef/DlgRef_Skeleton_QTD.h delete mode 100644 src/DlgRef/DlgRef_SpinBox.cxx delete mode 100644 src/DlgRef/DlgRef_SpinBox.h delete mode 100644 src/DlgRef/Makefile.in delete mode 100644 src/DlgRef/UIFiles/DlgRef_1List1Spin1Btn_QTD.ui delete mode 100644 src/DlgRef/UIFiles/DlgRef_1Sel1Check1List_QTD.ui delete mode 100644 src/DlgRef/UIFiles/DlgRef_1Sel1Check_QTD.ui delete mode 100644 src/DlgRef/UIFiles/DlgRef_1Sel1Spin1Check_QTD.ui delete mode 100644 src/DlgRef/UIFiles/DlgRef_1Sel1Spin_QTD.ui delete mode 100644 src/DlgRef/UIFiles/DlgRef_1Sel2Spin_QTD.ui delete mode 100644 src/DlgRef/UIFiles/DlgRef_1Sel3Check_QTD.ui delete mode 100644 src/DlgRef/UIFiles/DlgRef_1Sel3Spin_QTD.ui delete mode 100644 src/DlgRef/UIFiles/DlgRef_1Sel4Spin_QTD.ui delete mode 100644 src/DlgRef/UIFiles/DlgRef_1Sel5Spin_QTD.ui delete mode 100644 src/DlgRef/UIFiles/DlgRef_1Sel_QTD.ui delete mode 100644 src/DlgRef/UIFiles/DlgRef_1Spin_QTD.ui delete mode 100644 src/DlgRef/UIFiles/DlgRef_2Sel1Spin2Check_QTD.ui delete mode 100644 src/DlgRef/UIFiles/DlgRef_2Sel1Spin_QTD.ui delete mode 100644 src/DlgRef/UIFiles/DlgRef_2Sel2Spin1Check_QTD.ui delete mode 100644 src/DlgRef/UIFiles/DlgRef_2Sel2Spin_QTD.ui delete mode 100644 src/DlgRef/UIFiles/DlgRef_2Sel3Spin_QTD.ui delete mode 100644 src/DlgRef/UIFiles/DlgRef_2Sel4Spin1Check_QTD.ui delete mode 100644 src/DlgRef/UIFiles/DlgRef_2Sel_QTD.ui delete mode 100644 src/DlgRef/UIFiles/DlgRef_2Spin_QTD.ui delete mode 100644 src/DlgRef/UIFiles/DlgRef_3Check_QTD.ui delete mode 100644 src/DlgRef/UIFiles/DlgRef_3Sel3Spin1Check_QTD.ui delete mode 100644 src/DlgRef/UIFiles/DlgRef_3Sel4Spin2Check_QTD.ui delete mode 100644 src/DlgRef/UIFiles/DlgRef_3Sel_QTD.ui delete mode 100644 src/DlgRef/UIFiles/DlgRef_3Spin1Check_QTD.ui delete mode 100644 src/DlgRef/UIFiles/DlgRef_3Spin_QTD.ui delete mode 100644 src/DlgRef/UIFiles/DlgRef_4Sel1List_QTD.ui delete mode 100644 src/DlgRef/UIFiles/DlgRef_6Sel_QTD.ui delete mode 100644 src/DlgRef/UIFiles/DlgRef_Skeleton_QTD.ui delete mode 100755 src/DlgRef/UIFiles/ui_to_cxx delete mode 100644 src/EntityGUI/EntityGUI.cxx delete mode 100644 src/EntityGUI/EntityGUI.h delete mode 100644 src/EntityGUI/EntityGUI_1Sel_QTD.cxx delete mode 100644 src/EntityGUI/EntityGUI_1Sel_QTD.h delete mode 100644 src/EntityGUI/EntityGUI_1Spin.cxx delete mode 100644 src/EntityGUI/EntityGUI_1Spin.h delete mode 100644 src/EntityGUI/EntityGUI_1Spin_QTD.cxx delete mode 100644 src/EntityGUI/EntityGUI_1Spin_QTD.h delete mode 100644 src/EntityGUI/EntityGUI_2Spin.cxx delete mode 100644 src/EntityGUI/EntityGUI_2Spin.h delete mode 100644 src/EntityGUI/EntityGUI_2Spin_QTD.cxx delete mode 100644 src/EntityGUI/EntityGUI_2Spin_QTD.h delete mode 100644 src/EntityGUI/EntityGUI_3Spin.cxx delete mode 100644 src/EntityGUI/EntityGUI_3Spin.h delete mode 100644 src/EntityGUI/EntityGUI_3Spin_QTD.cxx delete mode 100644 src/EntityGUI/EntityGUI_3Spin_QTD.h delete mode 100644 src/EntityGUI/EntityGUI_4Spin.cxx delete mode 100644 src/EntityGUI/EntityGUI_4Spin.h delete mode 100644 src/EntityGUI/EntityGUI_4Spin_QTD.cxx delete mode 100644 src/EntityGUI/EntityGUI_4Spin_QTD.h delete mode 100644 src/EntityGUI/EntityGUI_Dir1_QTD.cxx delete mode 100644 src/EntityGUI/EntityGUI_Dir1_QTD.h delete mode 100644 src/EntityGUI/EntityGUI_Dir2_QTD.cxx delete mode 100644 src/EntityGUI/EntityGUI_Dir2_QTD.h delete mode 100644 src/EntityGUI/EntityGUI_Point_QTD.cxx delete mode 100644 src/EntityGUI/EntityGUI_Point_QTD.h delete mode 100644 src/EntityGUI/EntityGUI_Skeleton_QTD.cxx delete mode 100644 src/EntityGUI/EntityGUI_Skeleton_QTD.h delete mode 100644 src/EntityGUI/EntityGUI_SketcherDlg.cxx delete mode 100644 src/EntityGUI/EntityGUI_SketcherDlg.h delete mode 100644 src/EntityGUI/EntityGUI_SubShapeDlg.cxx delete mode 100644 src/EntityGUI/EntityGUI_SubShapeDlg.h delete mode 100644 src/EntityGUI/Makefile.in delete mode 100644 src/EntityGUI/UIFiles/EntityGUI_1Sel_QTD.ui delete mode 100644 src/EntityGUI/UIFiles/EntityGUI_1Spin_QTD.ui delete mode 100644 src/EntityGUI/UIFiles/EntityGUI_2Spin_QTD.ui delete mode 100644 src/EntityGUI/UIFiles/EntityGUI_3Spin_QTD.ui delete mode 100644 src/EntityGUI/UIFiles/EntityGUI_4Spin_QTD.ui delete mode 100644 src/EntityGUI/UIFiles/EntityGUI_Dir1_QTD.ui delete mode 100644 src/EntityGUI/UIFiles/EntityGUI_Dir2_QTD.ui delete mode 100644 src/EntityGUI/UIFiles/EntityGUI_Point_QTD.ui delete mode 100644 src/EntityGUI/UIFiles/EntityGUI_Skeleton_QTD.ui delete mode 100755 src/EntityGUI/UIFiles/ui_to_cxx delete mode 100644 src/GEOM/GEOM_Application.cxx delete mode 100644 src/GEOM/GEOM_Application.hxx delete mode 100644 src/GEOM/GEOM_Application.ixx delete mode 100644 src/GEOM/GEOM_Application.jxx delete mode 100644 src/GEOM/GEOM_DataMapIteratorOfDataMapOfAsciiStringTransient.hxx delete mode 100644 src/GEOM/GEOM_DataMapIteratorOfDataMapOfAsciiStringTransient_0.cxx delete mode 100644 src/GEOM/GEOM_DataMapNodeOfDataMapOfAsciiStringTransient.hxx delete mode 100644 src/GEOM/GEOM_DataMapNodeOfDataMapOfAsciiStringTransient_0.cxx delete mode 100644 src/GEOM/GEOM_DataMapOfAsciiStringTransient.hxx delete mode 100644 src/GEOM/GEOM_DataMapOfAsciiStringTransient_0.cxx delete mode 100644 src/GEOM/GEOM_Engine.cxx delete mode 100644 src/GEOM/GEOM_Engine.hxx delete mode 100644 src/GEOM/GEOM_Function.cxx delete mode 100644 src/GEOM/GEOM_Function.hxx delete mode 100644 src/GEOM/GEOM_Gen_i.cc delete mode 100644 src/GEOM/GEOM_IOperations.cxx delete mode 100644 src/GEOM/GEOM_IOperations.hxx delete mode 100644 src/GEOM/GEOM_ISubShape.hxx delete mode 100644 src/GEOM/GEOM_Object.cxx delete mode 100644 src/GEOM/GEOM_Object.hxx delete mode 100644 src/GEOM/GEOM_PythonDump.cxx delete mode 100644 src/GEOM/GEOM_PythonDump.hxx delete mode 100644 src/GEOM/GEOM_Solver.cxx delete mode 100644 src/GEOM/GEOM_Solver.hxx delete mode 100644 src/GEOM/GEOM_SubShapeDriver.cxx delete mode 100644 src/GEOM/GEOM_SubShapeDriver.hxx delete mode 100644 src/GEOM/Handle_GEOM_Application.hxx delete mode 100644 src/GEOM/Handle_GEOM_DataMapNodeOfDataMapOfAsciiStringTransient.hxx delete mode 100644 src/GEOM/Makefile.in delete mode 100644 src/GEOM/geom.cxx delete mode 100644 src/GEOMAlgo/BlockFix.cdl delete mode 100644 src/GEOMAlgo/BlockFix.cxx delete mode 100644 src/GEOMAlgo/BlockFix.hxx delete mode 100644 src/GEOMAlgo/BlockFix.ixx delete mode 100644 src/GEOMAlgo/BlockFix.jxx delete mode 100644 src/GEOMAlgo/BlockFix_BlockFixAPI.cdl delete mode 100644 src/GEOMAlgo/BlockFix_BlockFixAPI.cxx delete mode 100644 src/GEOMAlgo/BlockFix_BlockFixAPI.hxx delete mode 100644 src/GEOMAlgo/BlockFix_BlockFixAPI.ixx delete mode 100644 src/GEOMAlgo/BlockFix_BlockFixAPI.jxx delete mode 100644 src/GEOMAlgo/BlockFix_BlockFixAPI.lxx delete mode 100644 src/GEOMAlgo/BlockFix_CheckTool.cdl delete mode 100644 src/GEOMAlgo/BlockFix_CheckTool.cxx delete mode 100644 src/GEOMAlgo/BlockFix_CheckTool.hxx delete mode 100644 src/GEOMAlgo/BlockFix_CheckTool.ixx delete mode 100644 src/GEOMAlgo/BlockFix_CheckTool.jxx delete mode 100644 src/GEOMAlgo/BlockFix_PeriodicSurfaceModifier.cdl delete mode 100644 src/GEOMAlgo/BlockFix_PeriodicSurfaceModifier.cxx delete mode 100644 src/GEOMAlgo/BlockFix_PeriodicSurfaceModifier.hxx delete mode 100644 src/GEOMAlgo/BlockFix_PeriodicSurfaceModifier.ixx delete mode 100644 src/GEOMAlgo/BlockFix_PeriodicSurfaceModifier.jxx delete mode 100644 src/GEOMAlgo/BlockFix_SphereSpaceModifier.cdl delete mode 100644 src/GEOMAlgo/BlockFix_SphereSpaceModifier.cxx delete mode 100644 src/GEOMAlgo/BlockFix_SphereSpaceModifier.hxx delete mode 100644 src/GEOMAlgo/BlockFix_SphereSpaceModifier.ixx delete mode 100644 src/GEOMAlgo/BlockFix_SphereSpaceModifier.jxx delete mode 100644 src/GEOMAlgo/BlockFix_UnionEdges.cdl delete mode 100644 src/GEOMAlgo/BlockFix_UnionEdges.cxx delete mode 100644 src/GEOMAlgo/BlockFix_UnionEdges.hxx delete mode 100644 src/GEOMAlgo/BlockFix_UnionEdges.ixx delete mode 100644 src/GEOMAlgo/BlockFix_UnionEdges.jxx delete mode 100644 src/GEOMAlgo/BlockFix_UnionFaces.cdl delete mode 100644 src/GEOMAlgo/BlockFix_UnionFaces.cxx delete mode 100644 src/GEOMAlgo/BlockFix_UnionFaces.hxx delete mode 100644 src/GEOMAlgo/BlockFix_UnionFaces.ixx delete mode 100644 src/GEOMAlgo/BlockFix_UnionFaces.jxx delete mode 100755 src/GEOMAlgo/GEOMAlgo.cdl delete mode 100755 src/GEOMAlgo/GEOMAlgo_Algo.cdl delete mode 100755 src/GEOMAlgo/GEOMAlgo_Algo.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_Algo.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_Algo.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_Algo.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapOfPassKeyInteger.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapOfPassKeyInteger_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_FinderShapeOn.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_FinderShapeOn.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_FinderShapeOn.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_FinderShapeOn.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_FinderShapeOn.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_GlueAnalyser.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_GlueAnalyser.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_GlueAnalyser.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_GlueAnalyser.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_GlueAnalyser.jxx delete mode 100755 src/GEOMAlgo/GEOMAlgo_Gluer.cdl delete mode 100755 src/GEOMAlgo/GEOMAlgo_Gluer.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_Gluer.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_Gluer.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_Gluer.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfIntegerShape.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfIntegerShape_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyListOfShape.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyListOfShape_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeBox.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeBox_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeState.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeState_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfCoupleOfShapes.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfCoupleOfShapes_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfPnt.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfPnt_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfCoupleOfShapes.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfCoupleOfShapes_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfPnt.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfPnt_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ListOfCoupleOfShapes.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ListOfCoupleOfShapes_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ListOfPnt.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ListOfPnt_0.cxx delete mode 100755 src/GEOMAlgo/GEOMAlgo_PassKey.cdl delete mode 100755 src/GEOMAlgo/GEOMAlgo_PassKey.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_PassKey.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_PassKey.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_PassKey.jxx delete mode 100755 src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.cdl delete mode 100755 src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.jxx delete mode 100755 src/GEOMAlgo/GEOMAlgo_PassKeyShape.cdl delete mode 100755 src/GEOMAlgo/GEOMAlgo_PassKeyShape.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_PassKeyShape.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_PassKeyShape.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_PassKeyShape.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ShapeAlgo.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_ShapeAlgo.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ShapeAlgo.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ShapeAlgo.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ShapeAlgo.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ShapeSolid.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_ShapeSolid.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ShapeSolid.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ShapeSolid.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ShapeSolid.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ShellSolid.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_ShellSolid.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ShellSolid.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ShellSolid.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ShellSolid.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_SolidSolid.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_SolidSolid.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_SolidSolid.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_SolidSolid.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_SolidSolid.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_State.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_StateCollector.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_StateCollector.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_StateCollector.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_StateCollector.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_StateCollector.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_SurfaceTools.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_SurfaceTools.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_SurfaceTools.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_SurfaceTools.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_SurfaceTools.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_Tools.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_Tools.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_Tools.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_Tools.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_Tools.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_VertexSolid.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_VertexSolid.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_VertexSolid.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_VertexSolid.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_VertexSolid.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_WireSolid.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_WireSolid.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_WireSolid.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_WireSolid.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_WireSolid.jxx delete mode 100644 src/GEOMAlgo/Handle_BlockFix_BlockFixAPI.hxx delete mode 100644 src/GEOMAlgo/Handle_BlockFix_PeriodicSurfaceModifier.hxx delete mode 100644 src/GEOMAlgo/Handle_BlockFix_SphereSpaceModifier.hxx delete mode 100644 src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx delete mode 100644 src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx delete mode 100644 src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape.hxx delete mode 100644 src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape.hxx delete mode 100644 src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx delete mode 100644 src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState.hxx delete mode 100644 src/GEOMAlgo/Handle_GEOMAlgo_ListNodeOfListOfCoupleOfShapes.hxx delete mode 100644 src/GEOMAlgo/Handle_GEOMAlgo_ListNodeOfListOfPnt.hxx delete mode 100644 src/GEOMAlgo/Makefile.in delete mode 100644 src/GEOMBase/GEOMBase.cxx delete mode 100644 src/GEOMBase/GEOMBase.h delete mode 100755 src/GEOMBase/GEOMBase_Helper.cxx delete mode 100755 src/GEOMBase/GEOMBase_Helper.h delete mode 100644 src/GEOMBase/GEOMBase_Skeleton.cxx delete mode 100644 src/GEOMBase/GEOMBase_Skeleton.h delete mode 100644 src/GEOMBase/GEOMBase_aParameterDlg.cxx delete mode 100644 src/GEOMBase/GEOMBase_aParameterDlg.h delete mode 100644 src/GEOMBase/GEOM_Operation.cxx delete mode 100644 src/GEOMBase/GEOM_Operation.h delete mode 100644 src/GEOMBase/Makefile.in delete mode 100644 src/GEOMClient/GEOM_Client.cxx delete mode 100644 src/GEOMClient/GEOM_Client.hxx delete mode 100644 src/GEOMClient/Makefile.in delete mode 100644 src/GEOMContext/GEOMContext.cxx delete mode 100644 src/GEOMContext/GEOMContext.h delete mode 100644 src/GEOMContext/GEOM_icons.po delete mode 100644 src/GEOMContext/GEOM_msg_en.po delete mode 100644 src/GEOMContext/GEOM_msg_fr.po delete mode 100644 src/GEOMContext/Makefile.in delete mode 100644 src/GEOMDS/GEOMDS_Commands.cxx delete mode 100644 src/GEOMDS/GEOMDS_Commands.jxx delete mode 100644 src/GEOMFiltersSelection/GEOM_EdgeFilter.cxx delete mode 100644 src/GEOMFiltersSelection/GEOM_EdgeFilter.h delete mode 100644 src/GEOMFiltersSelection/GEOM_EdgeFilter.hxx delete mode 100644 src/GEOMFiltersSelection/GEOM_EdgeFilter.ixx delete mode 100644 src/GEOMFiltersSelection/GEOM_EdgeFilter.jxx delete mode 100644 src/GEOMFiltersSelection/GEOM_FaceFilter.cxx delete mode 100644 src/GEOMFiltersSelection/GEOM_FaceFilter.h delete mode 100644 src/GEOMFiltersSelection/GEOM_FaceFilter.hxx delete mode 100644 src/GEOMFiltersSelection/GEOM_FaceFilter.ixx delete mode 100644 src/GEOMFiltersSelection/GEOM_FaceFilter.jxx delete mode 100644 src/GEOMFiltersSelection/GEOM_LogicalFilter.cxx delete mode 100644 src/GEOMFiltersSelection/GEOM_LogicalFilter.h delete mode 100644 src/GEOMFiltersSelection/GEOM_LogicalFilter.hxx delete mode 100644 src/GEOMFiltersSelection/GEOM_OCCFilter.cxx delete mode 100644 src/GEOMFiltersSelection/GEOM_OCCFilter.h delete mode 100644 src/GEOMFiltersSelection/GEOM_PreviewFilter.cxx delete mode 100644 src/GEOMFiltersSelection/GEOM_PreviewFilter.h delete mode 100644 src/GEOMFiltersSelection/GEOM_PreviewFilter.hxx delete mode 100644 src/GEOMFiltersSelection/GEOM_PreviewFilter.ixx delete mode 100644 src/GEOMFiltersSelection/GEOM_PreviewFilter.jxx delete mode 100644 src/GEOMFiltersSelection/GEOM_SelectionFilter.cxx delete mode 100644 src/GEOMFiltersSelection/GEOM_SelectionFilter.h delete mode 100644 src/GEOMFiltersSelection/GEOM_ShapeTypeFilter.cxx delete mode 100644 src/GEOMFiltersSelection/GEOM_ShapeTypeFilter.hxx delete mode 100644 src/GEOMFiltersSelection/GEOM_ShapeTypeFilter.ixx delete mode 100644 src/GEOMFiltersSelection/GEOM_ShapeTypeFilter.jxx delete mode 100644 src/GEOMFiltersSelection/GEOM_TypeFilter.cxx delete mode 100644 src/GEOMFiltersSelection/GEOM_TypeFilter.h delete mode 100644 src/GEOMFiltersSelection/GEOM_TypeFilter.hxx delete mode 100644 src/GEOMFiltersSelection/Handle_GEOM_EdgeFilter.hxx delete mode 100644 src/GEOMFiltersSelection/Handle_GEOM_FaceFilter.hxx delete mode 100644 src/GEOMFiltersSelection/Handle_GEOM_PreviewFilter.hxx delete mode 100644 src/GEOMFiltersSelection/Handle_GEOM_ShapeTypeFilter.hxx delete mode 100644 src/GEOMFiltersSelection/Makefile.in delete mode 100644 src/GEOMGUI/GEOMGUI.cxx delete mode 100644 src/GEOMGUI/GEOMGUI.h delete mode 100644 src/GEOMGUI/GEOMGUI_OCCSelector.cxx delete mode 100644 src/GEOMGUI/GEOMGUI_OCCSelector.h delete mode 100644 src/GEOMGUI/GEOMGUI_Selection.cxx delete mode 100644 src/GEOMGUI/GEOMGUI_Selection.h delete mode 100644 src/GEOMGUI/GEOM_Displayer.cxx delete mode 100644 src/GEOMGUI/GEOM_Displayer.h delete mode 100644 src/GEOMGUI/GEOM_images.po delete mode 100644 src/GEOMGUI/GEOM_msg_en.po delete mode 100644 src/GEOMGUI/GEOM_msg_fr.po delete mode 100644 src/GEOMGUI/GeometryGUI.cxx delete mode 100644 src/GEOMGUI/GeometryGUI.h delete mode 100644 src/GEOMGUI/GeometryGUI_Swig.hxx delete mode 100644 src/GEOMGUI/GeometryGUI_Swig.i delete mode 100644 src/GEOMGUI/Makefile.in delete mode 100644 src/GEOMImpl/GEOMImpl_ArcDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_ArcDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_ArchimedeDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_ArchimedeDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_Block6Explorer.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_Block6Explorer.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_BlockDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_BlockDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_BooleanDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_BooleanDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_BoxDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_BoxDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_ChamferDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_ChamferDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_CircleDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_CircleDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_ConeDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_ConeDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_CopyDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_CopyDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_CylinderDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_CylinderDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_EllipseDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_EllipseDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_ExportDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_ExportDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_FilletDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_FilletDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_FillingDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_FillingDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_Gen.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_Gen.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_GlueDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_GlueDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_HealingDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_HealingDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_I3DPrimOperations.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_I3DPrimOperations.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_IArc.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_IArchimede.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_IBasicOperations.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_IBasicOperations.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_IBlockTrsf.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_IBlocks.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_IBlocksOperations.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_IBlocksOperations.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_IBoolean.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_IBooleanOperations.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_IBooleanOperations.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_IBox.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_IChamfer.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_ICircle.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_ICone.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_ICopy.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_ICurvesOperations.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_ICurvesOperations.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_ICylinder.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_IEllipse.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_IFillet.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_IFilling.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_IGlue.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_IGroupOperations.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_IGroupOperations.hxx delete mode 100755 src/GEOMImpl/GEOMImpl_IHealing.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_IHealingOperations.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_IHealingOperations.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_IImportExport.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_IInsertOperations.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_IInsertOperations.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_ILine.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_ILocalOperations.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_ILocalOperations.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_IMarker.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_IMeasure.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_IMeasureOperations.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_IMeasureOperations.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_IMirror.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_IOffset.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_IPartition.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_IPipe.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_IPlane.hxx delete mode 100755 src/GEOMImpl/GEOMImpl_IPoint.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_IPolyline.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_IPosition.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_IPrism.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_IRevolution.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_IRotate.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_IScale.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_IShapes.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_IShapesOperations.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_IShapesOperations.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_ISketcher.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_ISphere.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_ISpline.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_ITorus.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_ITransformOperations.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_ITransformOperations.hxx delete mode 100755 src/GEOMImpl/GEOMImpl_ITranslate.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_IVector.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_ImportDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_ImportDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_LineDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_LineDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_MarkerDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_MarkerDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_MeasureDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_MeasureDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_MirrorDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_MirrorDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_OffsetDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_OffsetDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_PartitionDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_PartitionDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_PipeDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_PipeDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_PlaneDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_PlaneDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_PointDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_PointDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_PolylineDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_PolylineDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_PositionDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_PositionDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_PrismDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_PrismDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_RevolutionDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_RevolutionDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_RotateDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_RotateDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_ScaleDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_ScaleDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_ShapeDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_ShapeDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_SketcherDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_SketcherDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_SphereDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_SphereDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_SplineDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_SplineDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_Template.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_Template.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_TorusDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_TorusDriver.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_TranslateDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_TranslateDriver.hxx delete mode 100755 src/GEOMImpl/GEOMImpl_Types.hxx delete mode 100644 src/GEOMImpl/GEOMImpl_VectorDriver.cxx delete mode 100644 src/GEOMImpl/GEOMImpl_VectorDriver.hxx delete mode 100755 src/GEOMImpl/GUID.txt delete mode 100644 src/GEOMImpl/Makefile.in delete mode 100644 src/GEOMToolsGUI/GEOMToolsGUI.cxx delete mode 100644 src/GEOMToolsGUI/GEOMToolsGUI.h delete mode 100644 src/GEOMToolsGUI/GEOMToolsGUI_NameDlg.cxx delete mode 100644 src/GEOMToolsGUI/GEOMToolsGUI_NameDlg.h delete mode 100644 src/GEOMToolsGUI/GEOMToolsGUI_NbIsosDlg.cxx delete mode 100644 src/GEOMToolsGUI/GEOMToolsGUI_NbIsosDlg.h delete mode 100644 src/GEOMToolsGUI/GEOMToolsGUI_TransparencyDlg.h delete mode 100644 src/GEOMToolsGUI/Makefile.in delete mode 100644 src/GEOM_I/GEOM_DumpPython.cc delete mode 100644 src/GEOM_I/GEOM_Gen_i.cc delete mode 100644 src/GEOM_I/GEOM_Gen_i.hh delete mode 100644 src/GEOM_I/GEOM_I3DPrimOperations_i.cc delete mode 100644 src/GEOM_I/GEOM_I3DPrimOperations_i.hh delete mode 100644 src/GEOM_I/GEOM_IBasicOperations_i.cc delete mode 100644 src/GEOM_I/GEOM_IBasicOperations_i.hh delete mode 100644 src/GEOM_I/GEOM_IBlocksOperations_i.cc delete mode 100644 src/GEOM_I/GEOM_IBlocksOperations_i.hh delete mode 100644 src/GEOM_I/GEOM_IBooleanOperations_i.cc delete mode 100644 src/GEOM_I/GEOM_IBooleanOperations_i.hh delete mode 100644 src/GEOM_I/GEOM_ICurvesOperations_i.cc delete mode 100644 src/GEOM_I/GEOM_ICurvesOperations_i.hh delete mode 100644 src/GEOM_I/GEOM_IGroupOperations_i.cc delete mode 100644 src/GEOM_I/GEOM_IGroupOperations_i.hh delete mode 100644 src/GEOM_I/GEOM_IHealingOperations_i.cc delete mode 100644 src/GEOM_I/GEOM_IHealingOperations_i.hh delete mode 100644 src/GEOM_I/GEOM_IInsertOperations_i.cc delete mode 100644 src/GEOM_I/GEOM_IInsertOperations_i.hh delete mode 100644 src/GEOM_I/GEOM_ILocalOperations_i.cc delete mode 100644 src/GEOM_I/GEOM_ILocalOperations_i.hh delete mode 100644 src/GEOM_I/GEOM_IMeasureOperations_i.cc delete mode 100644 src/GEOM_I/GEOM_IMeasureOperations_i.hh delete mode 100644 src/GEOM_I/GEOM_IOperations_i.cc delete mode 100644 src/GEOM_I/GEOM_IOperations_i.hh delete mode 100644 src/GEOM_I/GEOM_IShapesOperations_i.cc delete mode 100644 src/GEOM_I/GEOM_IShapesOperations_i.hh delete mode 100644 src/GEOM_I/GEOM_ITransformOperations_i.cc delete mode 100644 src/GEOM_I/GEOM_ITransformOperations_i.hh delete mode 100644 src/GEOM_I/GEOM_Object_i.cc delete mode 100644 src/GEOM_I/GEOM_Object_i.hh delete mode 100644 src/GEOM_I/Makefile.in delete mode 100644 src/GEOM_I_Superv/GEOM_List_i.hh delete mode 100644 src/GEOM_I_Superv/GEOM_Superv_i.cc delete mode 100644 src/GEOM_I_Superv/GEOM_Superv_i.hh delete mode 100644 src/GEOM_I_Superv/Makefile.in delete mode 100755 src/GEOM_SWIG/GEOM_Nut.py delete mode 100755 src/GEOM_SWIG/GEOM_Partition1.py delete mode 100755 src/GEOM_SWIG/GEOM_Partition2.py delete mode 100755 src/GEOM_SWIG/GEOM_Partition3.py delete mode 100755 src/GEOM_SWIG/GEOM_Partition4.py delete mode 100755 src/GEOM_SWIG/GEOM_Partition5.py delete mode 100644 src/GEOM_SWIG/GEOM_Sketcher.py delete mode 100644 src/GEOM_SWIG/GEOM_Spanner.py delete mode 100644 src/GEOM_SWIG/GEOM_TestAll.py delete mode 100644 src/GEOM_SWIG/GEOM_TestHealing.py delete mode 100644 src/GEOM_SWIG/GEOM_TestMeasures.py delete mode 100644 src/GEOM_SWIG/GEOM_TestOthers.py delete mode 100644 src/GEOM_SWIG/GEOM_blocks.py delete mode 100755 src/GEOM_SWIG/GEOM_cyl2complementary.py delete mode 100644 src/GEOM_SWIG/GEOM_example.py delete mode 100644 src/GEOM_SWIG/GEOM_example2.py delete mode 100644 src/GEOM_SWIG/GEOM_example3.py delete mode 100755 src/GEOM_SWIG/GEOM_example4.py delete mode 100644 src/GEOM_SWIG/GEOM_example5.py delete mode 100644 src/GEOM_SWIG/GEOM_moteur.py delete mode 100644 src/GEOM_SWIG/GEOM_shared_modules.py delete mode 100755 src/GEOM_SWIG/GEOM_shellSolid.py delete mode 100755 src/GEOM_SWIG/GEOM_tube_geom.py delete mode 100755 src/GEOM_SWIG/GEOM_tube_geom_gg2.py delete mode 100644 src/GEOM_SWIG/GEOM_usinggeom.py delete mode 100644 src/GEOM_SWIG/Makefile.in delete mode 100755 src/GEOM_SWIG/PAL_MESH_019_020_geometry.py delete mode 100755 src/GEOM_SWIG/PAL_MESH_028_geometry.py delete mode 100755 src/GEOM_SWIG/PAL_MESH_030_geometry.py delete mode 100755 src/GEOM_SWIG/PAL_MESH_033_geometry.py delete mode 100755 src/GEOM_SWIG/PAL_MESH_035_geometry.py delete mode 100644 src/GEOM_SWIG/batchmode_geompy.py delete mode 100644 src/GEOM_SWIG/geompy.py delete mode 100644 src/GEOM_SWIG/libGEOM_Swig.i delete mode 100644 src/GenerationGUI/GenerationGUI.cxx delete mode 100644 src/GenerationGUI/GenerationGUI.h delete mode 100644 src/GenerationGUI/GenerationGUI_FillingDlg.cxx delete mode 100644 src/GenerationGUI/GenerationGUI_FillingDlg.h delete mode 100644 src/GenerationGUI/GenerationGUI_PipeDlg.cxx delete mode 100644 src/GenerationGUI/GenerationGUI_PipeDlg.h delete mode 100644 src/GenerationGUI/GenerationGUI_PrismDlg.cxx delete mode 100644 src/GenerationGUI/GenerationGUI_PrismDlg.h delete mode 100644 src/GenerationGUI/GenerationGUI_RevolDlg.cxx delete mode 100644 src/GenerationGUI/GenerationGUI_RevolDlg.h delete mode 100644 src/GenerationGUI/Makefile.in delete mode 100644 src/GroupGUI/GroupGUI.cxx delete mode 100644 src/GroupGUI/GroupGUI.h delete mode 100644 src/GroupGUI/GroupGUI_GroupDlg.cxx delete mode 100644 src/GroupGUI/GroupGUI_GroupDlg.h delete mode 100755 src/GroupGUI/Makefile.in delete mode 100644 src/IGESExport/IGESExport.cxx delete mode 100644 src/IGESExport/Makefile.in delete mode 100644 src/IGESImport/IGESImport.cxx delete mode 100644 src/IGESImport/Makefile.in delete mode 100644 src/Makefile.in delete mode 100644 src/MeasureGUI/Makefile.in delete mode 100644 src/MeasureGUI/MeasureGUI.cxx delete mode 100644 src/MeasureGUI/MeasureGUI.h delete mode 100644 src/MeasureGUI/MeasureGUI_1Sel12LineEdit_QTD.cxx delete mode 100644 src/MeasureGUI/MeasureGUI_1Sel12LineEdit_QTD.h delete mode 100644 src/MeasureGUI/MeasureGUI_1Sel1TextView_QTD.cxx delete mode 100644 src/MeasureGUI/MeasureGUI_1Sel1TextView_QTD.h delete mode 100644 src/MeasureGUI/MeasureGUI_1Sel3LineEdit_QTD.cxx delete mode 100644 src/MeasureGUI/MeasureGUI_1Sel3LineEdit_QTD.h delete mode 100644 src/MeasureGUI/MeasureGUI_1Sel6LineEdit_QTD.cxx delete mode 100644 src/MeasureGUI/MeasureGUI_1Sel6LineEdit_QTD.h delete mode 100644 src/MeasureGUI/MeasureGUI_2Sel1LineEdit_QTD.cxx delete mode 100644 src/MeasureGUI/MeasureGUI_2Sel1LineEdit_QTD.h delete mode 100644 src/MeasureGUI/MeasureGUI_BndBoxDlg.cxx delete mode 100644 src/MeasureGUI/MeasureGUI_BndBoxDlg.h delete mode 100644 src/MeasureGUI/MeasureGUI_CenterMassDlg.cxx delete mode 100644 src/MeasureGUI/MeasureGUI_CenterMassDlg.h delete mode 100644 src/MeasureGUI/MeasureGUI_CheckCompoundOfBlocksDlg.cxx delete mode 100644 src/MeasureGUI/MeasureGUI_CheckCompoundOfBlocksDlg.h delete mode 100644 src/MeasureGUI/MeasureGUI_CheckShapeDlg.cxx delete mode 100644 src/MeasureGUI/MeasureGUI_CheckShapeDlg.h delete mode 100644 src/MeasureGUI/MeasureGUI_DistanceDlg.cxx delete mode 100644 src/MeasureGUI/MeasureGUI_DistanceDlg.h delete mode 100644 src/MeasureGUI/MeasureGUI_InertiaDlg.cxx delete mode 100644 src/MeasureGUI/MeasureGUI_InertiaDlg.h delete mode 100644 src/MeasureGUI/MeasureGUI_MaxToleranceDlg.cxx delete mode 100644 src/MeasureGUI/MeasureGUI_MaxToleranceDlg.h delete mode 100644 src/MeasureGUI/MeasureGUI_PointDlg.cxx delete mode 100644 src/MeasureGUI/MeasureGUI_PointDlg.h delete mode 100644 src/MeasureGUI/MeasureGUI_PropertiesDlg.cxx delete mode 100644 src/MeasureGUI/MeasureGUI_PropertiesDlg.h delete mode 100644 src/MeasureGUI/MeasureGUI_Skeleton.cxx delete mode 100644 src/MeasureGUI/MeasureGUI_Skeleton.h delete mode 100644 src/MeasureGUI/MeasureGUI_Skeleton_QTD.cxx delete mode 100644 src/MeasureGUI/MeasureGUI_Skeleton_QTD.h delete mode 100644 src/MeasureGUI/MeasureGUI_WhatisDlg.cxx delete mode 100644 src/MeasureGUI/MeasureGUI_WhatisDlg.h delete mode 100644 src/MeasureGUI/UIFiles/MeasureGUI_1Sel12LineEdit_QTD.ui delete mode 100644 src/MeasureGUI/UIFiles/MeasureGUI_1Sel1TextView_QTD.ui delete mode 100644 src/MeasureGUI/UIFiles/MeasureGUI_1Sel3LineEdit_QTD.ui delete mode 100644 src/MeasureGUI/UIFiles/MeasureGUI_1Sel6LineEdit_QTD.ui delete mode 100644 src/MeasureGUI/UIFiles/MeasureGUI_2Sel1LineEdit_QTD.ui delete mode 100644 src/MeasureGUI/UIFiles/MeasureGUI_Skeleton_QTD.ui delete mode 100755 src/MeasureGUI/UIFiles/ui_to_cxx delete mode 100644 src/NMTAlgo/Makefile.in delete mode 100644 src/NMTAlgo/NMTAlgo.cdl delete mode 100644 src/NMTAlgo/NMTAlgo_Algo.cdl delete mode 100644 src/NMTAlgo/NMTAlgo_Algo.cxx delete mode 100644 src/NMTAlgo/NMTAlgo_Algo.hxx delete mode 100644 src/NMTAlgo/NMTAlgo_Algo.ixx delete mode 100644 src/NMTAlgo/NMTAlgo_Algo.jxx delete mode 100644 src/NMTAlgo/NMTAlgo_Builder.cdl delete mode 100644 src/NMTAlgo/NMTAlgo_Builder.cxx delete mode 100644 src/NMTAlgo/NMTAlgo_Builder.hxx delete mode 100644 src/NMTAlgo/NMTAlgo_Builder.ixx delete mode 100644 src/NMTAlgo/NMTAlgo_Builder.jxx delete mode 100644 src/NMTAlgo/NMTAlgo_Loop3d.cdl delete mode 100644 src/NMTAlgo/NMTAlgo_Loop3d.cxx delete mode 100644 src/NMTAlgo/NMTAlgo_Loop3d.hxx delete mode 100644 src/NMTAlgo/NMTAlgo_Loop3d.ixx delete mode 100644 src/NMTAlgo/NMTAlgo_Loop3d.jxx delete mode 100644 src/NMTAlgo/NMTAlgo_Splitter.cdl delete mode 100644 src/NMTAlgo/NMTAlgo_Splitter.cxx delete mode 100644 src/NMTAlgo/NMTAlgo_Splitter.hxx delete mode 100644 src/NMTAlgo/NMTAlgo_Splitter.ixx delete mode 100644 src/NMTAlgo/NMTAlgo_Splitter.jxx delete mode 100644 src/NMTAlgo/NMTAlgo_Splitter1.cdl delete mode 100644 src/NMTAlgo/NMTAlgo_Splitter1.cxx delete mode 100644 src/NMTAlgo/NMTAlgo_Splitter1.hxx delete mode 100644 src/NMTAlgo/NMTAlgo_Splitter1.ixx delete mode 100644 src/NMTAlgo/NMTAlgo_Splitter1.jxx delete mode 100644 src/NMTAlgo/NMTAlgo_Splitter_1.cxx delete mode 100644 src/NMTAlgo/NMTAlgo_Splitter_2.cxx delete mode 100644 src/NMTAlgo/NMTAlgo_Tools.cdl delete mode 100644 src/NMTAlgo/NMTAlgo_Tools.cxx delete mode 100644 src/NMTAlgo/NMTAlgo_Tools.hxx delete mode 100644 src/NMTAlgo/NMTAlgo_Tools.ixx delete mode 100644 src/NMTAlgo/NMTAlgo_Tools.jxx delete mode 100644 src/NMTDS/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx delete mode 100644 src/NMTDS/Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx delete mode 100644 src/NMTDS/Makefile.in delete mode 100644 src/NMTDS/NMTDS.cdl delete mode 100644 src/NMTDS/NMTDS_CArray1OfIndexRange.hxx delete mode 100644 src/NMTDS/NMTDS_CArray1OfIndexRange_0.cxx delete mode 100644 src/NMTDS/NMTDS_IndexRange.cdl delete mode 100644 src/NMTDS/NMTDS_IndexRange.cxx delete mode 100644 src/NMTDS/NMTDS_IndexRange.hxx delete mode 100644 src/NMTDS/NMTDS_IndexRange.ixx delete mode 100644 src/NMTDS/NMTDS_IndexRange.jxx delete mode 100644 src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx delete mode 100644 src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_0.cxx delete mode 100644 src/NMTDS/NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx delete mode 100644 src/NMTDS/NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_0.cxx delete mode 100644 src/NMTDS/NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx delete mode 100644 src/NMTDS/NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx delete mode 100644 src/NMTDS/NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx delete mode 100644 src/NMTDS/NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx delete mode 100644 src/NMTDS/NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx delete mode 100644 src/NMTDS/NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx delete mode 100644 src/NMTDS/NMTDS_PShapesDataStructure.hxx delete mode 100644 src/NMTDS/NMTDS_ShapesDataStructure.cdl delete mode 100644 src/NMTDS/NMTDS_ShapesDataStructure.cxx delete mode 100644 src/NMTDS/NMTDS_ShapesDataStructure.hxx delete mode 100644 src/NMTDS/NMTDS_ShapesDataStructure.ixx delete mode 100644 src/NMTDS/NMTDS_ShapesDataStructure.jxx delete mode 100644 src/NMTTools/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx delete mode 100644 src/NMTTools/Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx delete mode 100644 src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger.hxx delete mode 100644 src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape.hxx delete mode 100644 src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock.hxx delete mode 100644 src/NMTTools/Handle_NMTTools_ListNodeOfListOfCommonBlock.hxx delete mode 100644 src/NMTTools/Handle_NMTTools_ListNodeOfListOfCoupleOfShape.hxx delete mode 100644 src/NMTTools/Makefile.in delete mode 100644 src/NMTTools/NMTTools.cdl delete mode 100644 src/NMTTools/NMTTools_CommonBlock.cdl delete mode 100644 src/NMTTools/NMTTools_CommonBlock.cxx delete mode 100644 src/NMTTools/NMTTools_CommonBlock.hxx delete mode 100644 src/NMTTools/NMTTools_CommonBlock.ixx delete mode 100644 src/NMTTools/NMTTools_CommonBlock.jxx delete mode 100644 src/NMTTools/NMTTools_CommonBlockAPI.cdl delete mode 100644 src/NMTTools/NMTTools_CommonBlockAPI.cxx delete mode 100644 src/NMTTools/NMTTools_CommonBlockAPI.hxx delete mode 100644 src/NMTTools/NMTTools_CommonBlockAPI.ixx delete mode 100644 src/NMTTools/NMTTools_CommonBlockAPI.jxx delete mode 100644 src/NMTTools/NMTTools_CommonBlockPool.hxx delete mode 100644 src/NMTTools/NMTTools_CommonBlockPool_0.cxx delete mode 100644 src/NMTTools/NMTTools_CoupleOfShape.cdl delete mode 100644 src/NMTTools/NMTTools_CoupleOfShape.cxx delete mode 100644 src/NMTTools/NMTTools_CoupleOfShape.hxx delete mode 100644 src/NMTTools/NMTTools_CoupleOfShape.ixx delete mode 100644 src/NMTTools/NMTTools_CoupleOfShape.jxx delete mode 100644 src/NMTTools/NMTTools_DEProcessor.cdl delete mode 100644 src/NMTTools/NMTTools_DEProcessor.cxx delete mode 100644 src/NMTTools/NMTTools_DEProcessor.hxx delete mode 100644 src/NMTTools/NMTTools_DEProcessor.ixx delete mode 100644 src/NMTTools/NMTTools_DEProcessor.jxx delete mode 100644 src/NMTTools/NMTTools_DSFiller.cdl delete mode 100644 src/NMTTools/NMTTools_DSFiller.cxx delete mode 100644 src/NMTTools/NMTTools_DSFiller.hxx delete mode 100644 src/NMTTools/NMTTools_DSFiller.ixx delete mode 100644 src/NMTTools/NMTTools_DSFiller.jxx delete mode 100644 src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger.hxx delete mode 100644 src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_0.cxx delete mode 100644 src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape.hxx delete mode 100644 src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_0.cxx delete mode 100644 src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock.hxx delete mode 100644 src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_0.cxx delete mode 100644 src/NMTTools/NMTTools_IndexedDataMapOfIndexedMapOfInteger.hxx delete mode 100644 src/NMTTools/NMTTools_IndexedDataMapOfIndexedMapOfInteger_0.cxx delete mode 100644 src/NMTTools/NMTTools_IndexedDataMapOfShapeIndexedMapOfShape.hxx delete mode 100644 src/NMTTools/NMTTools_IndexedDataMapOfShapeIndexedMapOfShape_0.cxx delete mode 100644 src/NMTTools/NMTTools_IndexedDataMapOfShapePaveBlock.hxx delete mode 100644 src/NMTTools/NMTTools_IndexedDataMapOfShapePaveBlock_0.cxx delete mode 100644 src/NMTTools/NMTTools_IteratorOfCoupleOfShape.cdl delete mode 100644 src/NMTTools/NMTTools_IteratorOfCoupleOfShape.cxx delete mode 100644 src/NMTTools/NMTTools_IteratorOfCoupleOfShape.hxx delete mode 100644 src/NMTTools/NMTTools_IteratorOfCoupleOfShape.ixx delete mode 100644 src/NMTTools/NMTTools_IteratorOfCoupleOfShape.jxx delete mode 100644 src/NMTTools/NMTTools_ListIteratorOfListOfCommonBlock.hxx delete mode 100644 src/NMTTools/NMTTools_ListIteratorOfListOfCommonBlock_0.cxx delete mode 100644 src/NMTTools/NMTTools_ListIteratorOfListOfCoupleOfShape.hxx delete mode 100644 src/NMTTools/NMTTools_ListIteratorOfListOfCoupleOfShape_0.cxx delete mode 100644 src/NMTTools/NMTTools_ListNodeOfListOfCommonBlock.hxx delete mode 100644 src/NMTTools/NMTTools_ListNodeOfListOfCommonBlock_0.cxx delete mode 100644 src/NMTTools/NMTTools_ListNodeOfListOfCoupleOfShape.hxx delete mode 100644 src/NMTTools/NMTTools_ListNodeOfListOfCoupleOfShape_0.cxx delete mode 100644 src/NMTTools/NMTTools_ListOfCommonBlock.hxx delete mode 100644 src/NMTTools/NMTTools_ListOfCommonBlock_0.cxx delete mode 100644 src/NMTTools/NMTTools_ListOfCoupleOfShape.hxx delete mode 100644 src/NMTTools/NMTTools_ListOfCoupleOfShape_0.cxx delete mode 100644 src/NMTTools/NMTTools_PCurveMaker.cdl delete mode 100644 src/NMTTools/NMTTools_PCurveMaker.cxx delete mode 100644 src/NMTTools/NMTTools_PCurveMaker.hxx delete mode 100644 src/NMTTools/NMTTools_PCurveMaker.ixx delete mode 100644 src/NMTTools/NMTTools_PCurveMaker.jxx delete mode 100644 src/NMTTools/NMTTools_PDSFiller.hxx delete mode 100644 src/NMTTools/NMTTools_PPaveFiller.hxx delete mode 100644 src/NMTTools/NMTTools_PaveFiller.cdl delete mode 100644 src/NMTTools/NMTTools_PaveFiller.cxx delete mode 100644 src/NMTTools/NMTTools_PaveFiller.hxx delete mode 100644 src/NMTTools/NMTTools_PaveFiller.ixx delete mode 100644 src/NMTTools/NMTTools_PaveFiller.jxx delete mode 100644 src/NMTTools/NMTTools_PaveFiller_0.cxx delete mode 100644 src/NMTTools/NMTTools_PaveFiller_1.cxx delete mode 100644 src/NMTTools/NMTTools_PaveFiller_2.cxx delete mode 100644 src/NMTTools/NMTTools_PaveFiller_3.cxx delete mode 100644 src/NMTTools/NMTTools_PaveFiller_4.cxx delete mode 100644 src/NMTTools/NMTTools_PaveFiller_5.cxx delete mode 100644 src/NMTTools/NMTTools_PaveFiller_6.cxx delete mode 100644 src/NMTTools/NMTTools_PaveFiller_7.cxx delete mode 100644 src/NMTTools/NMTTools_PaveFiller_8.cxx delete mode 100644 src/NMTTools/NMTTools_PaveFiller_9.cxx delete mode 100644 src/NMTTools/NMTTools_Tools.cdl delete mode 100644 src/NMTTools/NMTTools_Tools.cxx delete mode 100644 src/NMTTools/NMTTools_Tools.hxx delete mode 100644 src/NMTTools/NMTTools_Tools.ixx delete mode 100644 src/NMTTools/NMTTools_Tools.jxx delete mode 100644 src/OBJECT/GEOM_AISShape.cxx delete mode 100644 src/OBJECT/GEOM_AISShape.hxx delete mode 100644 src/OBJECT/GEOM_AISShape.ixx delete mode 100644 src/OBJECT/GEOM_AISShape.jxx delete mode 100755 src/OBJECT/GEOM_AISTrihedron.cxx delete mode 100755 src/OBJECT/GEOM_AISTrihedron.hxx delete mode 100644 src/OBJECT/GEOM_Actor.cxx delete mode 100644 src/OBJECT/GEOM_Actor.h delete mode 100644 src/OBJECT/GEOM_AssemblyBuilder.cxx delete mode 100644 src/OBJECT/GEOM_AssemblyBuilder.h delete mode 100644 src/OBJECT/GEOM_InteractiveObject.cxx delete mode 100644 src/OBJECT/GEOM_InteractiveObject.hxx delete mode 100644 src/OBJECT/GEOM_InteractiveObject.ixx delete mode 100644 src/OBJECT/GEOM_InteractiveObject.jxx delete mode 100644 src/OBJECT/GEOM_OCCReader.cxx delete mode 100644 src/OBJECT/GEOM_OCCReader.h delete mode 100644 src/OBJECT/GEOM_VTKTrihedron.cxx delete mode 100644 src/OBJECT/GEOM_VTKTrihedron.hxx delete mode 100644 src/OBJECT/Handle_GEOM_AISShape.hxx delete mode 100644 src/OBJECT/Handle_GEOM_InteractiveObject.hxx delete mode 100644 src/OBJECT/Makefile.in delete mode 100644 src/OperationGUI/Makefile.in delete mode 100644 src/OperationGUI/OperationGUI.cxx delete mode 100644 src/OperationGUI/OperationGUI.h delete mode 100644 src/OperationGUI/OperationGUI_ArchimedeDlg.cxx delete mode 100644 src/OperationGUI/OperationGUI_ArchimedeDlg.h delete mode 100644 src/OperationGUI/OperationGUI_ChamferDlg.cxx delete mode 100644 src/OperationGUI/OperationGUI_ChamferDlg.h delete mode 100644 src/OperationGUI/OperationGUI_ClippingDlg.cxx delete mode 100644 src/OperationGUI/OperationGUI_ClippingDlg.h delete mode 100644 src/OperationGUI/OperationGUI_FilletDlg.cxx delete mode 100644 src/OperationGUI/OperationGUI_FilletDlg.h delete mode 100644 src/OperationGUI/OperationGUI_MaterialDlg.cxx delete mode 100644 src/OperationGUI/OperationGUI_MaterialDlg.h delete mode 100644 src/OperationGUI/OperationGUI_PartitionDlg.cxx delete mode 100644 src/OperationGUI/OperationGUI_PartitionDlg.h delete mode 100644 src/PARTITION/Makefile.in delete mode 100644 src/PARTITION/Partition.cdl delete mode 100644 src/PARTITION/Partition_Inter2d.cdl delete mode 100644 src/PARTITION/Partition_Inter2d.cxx delete mode 100644 src/PARTITION/Partition_Inter2d.hxx delete mode 100644 src/PARTITION/Partition_Inter2d.ixx delete mode 100644 src/PARTITION/Partition_Inter2d.jxx delete mode 100644 src/PARTITION/Partition_Inter3d.cdl delete mode 100644 src/PARTITION/Partition_Inter3d.cxx delete mode 100644 src/PARTITION/Partition_Inter3d.hxx delete mode 100644 src/PARTITION/Partition_Inter3d.ixx delete mode 100644 src/PARTITION/Partition_Inter3d.jxx delete mode 100644 src/PARTITION/Partition_Loop.cdl delete mode 100644 src/PARTITION/Partition_Loop.cxx delete mode 100644 src/PARTITION/Partition_Loop.hxx delete mode 100644 src/PARTITION/Partition_Loop.ixx delete mode 100644 src/PARTITION/Partition_Loop.jxx delete mode 100644 src/PARTITION/Partition_Loop2d.cdl delete mode 100644 src/PARTITION/Partition_Loop2d.cxx delete mode 100644 src/PARTITION/Partition_Loop2d.hxx delete mode 100644 src/PARTITION/Partition_Loop2d.ixx delete mode 100644 src/PARTITION/Partition_Loop2d.jxx delete mode 100644 src/PARTITION/Partition_Loop3d.cdl delete mode 100644 src/PARTITION/Partition_Loop3d.cxx delete mode 100644 src/PARTITION/Partition_Loop3d.hxx delete mode 100644 src/PARTITION/Partition_Loop3d.ixx delete mode 100644 src/PARTITION/Partition_Loop3d.jxx delete mode 100644 src/PARTITION/Partition_Spliter.cdl delete mode 100644 src/PARTITION/Partition_Spliter.cxx delete mode 100644 src/PARTITION/Partition_Spliter.hxx delete mode 100644 src/PARTITION/Partition_Spliter.ixx delete mode 100644 src/PARTITION/Partition_Spliter.jxx delete mode 100644 src/PrimitiveGUI/Makefile.in delete mode 100644 src/PrimitiveGUI/PrimitiveGUI.cxx delete mode 100644 src/PrimitiveGUI/PrimitiveGUI.h delete mode 100644 src/PrimitiveGUI/PrimitiveGUI_BoxDlg.cxx delete mode 100644 src/PrimitiveGUI/PrimitiveGUI_BoxDlg.h delete mode 100644 src/PrimitiveGUI/PrimitiveGUI_ConeDlg.cxx delete mode 100644 src/PrimitiveGUI/PrimitiveGUI_ConeDlg.h delete mode 100644 src/PrimitiveGUI/PrimitiveGUI_CylinderDlg.cxx delete mode 100644 src/PrimitiveGUI/PrimitiveGUI_CylinderDlg.h delete mode 100644 src/PrimitiveGUI/PrimitiveGUI_SphereDlg.cxx delete mode 100644 src/PrimitiveGUI/PrimitiveGUI_SphereDlg.h delete mode 100644 src/PrimitiveGUI/PrimitiveGUI_TorusDlg.cxx delete mode 100644 src/PrimitiveGUI/PrimitiveGUI_TorusDlg.h delete mode 100644 src/RepairGUI/Makefile.in delete mode 100644 src/RepairGUI/RepairGUI.cxx delete mode 100644 src/RepairGUI/RepairGUI.h delete mode 100644 src/RepairGUI/RepairGUI_CloseContourDlg.cxx delete mode 100644 src/RepairGUI/RepairGUI_CloseContourDlg.h delete mode 100644 src/RepairGUI/RepairGUI_DivideEdgeDlg.cxx delete mode 100644 src/RepairGUI/RepairGUI_DivideEdgeDlg.h delete mode 100644 src/RepairGUI/RepairGUI_FreeBoundDlg.cxx delete mode 100644 src/RepairGUI/RepairGUI_FreeBoundDlg.h delete mode 100644 src/RepairGUI/RepairGUI_FreeFacesDlg.cxx delete mode 100644 src/RepairGUI/RepairGUI_FreeFacesDlg.h delete mode 100644 src/RepairGUI/RepairGUI_GlueDlg.cxx delete mode 100644 src/RepairGUI/RepairGUI_GlueDlg.h delete mode 100644 src/RepairGUI/RepairGUI_RemoveHolesDlg.cxx delete mode 100644 src/RepairGUI/RepairGUI_RemoveHolesDlg.h delete mode 100644 src/RepairGUI/RepairGUI_RemoveIntWiresDlg.cxx delete mode 100644 src/RepairGUI/RepairGUI_RemoveIntWiresDlg.h delete mode 100644 src/RepairGUI/RepairGUI_SewingDlg.cxx delete mode 100644 src/RepairGUI/RepairGUI_SewingDlg.h delete mode 100755 src/RepairGUI/RepairGUI_ShapeProcessDlg.cxx delete mode 100755 src/RepairGUI/RepairGUI_ShapeProcessDlg.h delete mode 100644 src/RepairGUI/RepairGUI_SuppressFacesDlg.cxx delete mode 100644 src/RepairGUI/RepairGUI_SuppressFacesDlg.h delete mode 100644 src/SKETCHER/Makefile.in delete mode 100644 src/SKETCHER/Sketcher_Profile.cxx delete mode 100644 src/SKETCHER/Sketcher_Profile.hxx delete mode 100644 src/STEPExport/Makefile.in delete mode 100644 src/STEPExport/STEPExport.cxx delete mode 100644 src/STEPImport/Makefile.in delete mode 100644 src/STEPImport/STEPImport.cxx delete mode 100644 src/ShHealOper/Makefile.in delete mode 100644 src/ShHealOper/ShHealOper_CloseContour.cxx delete mode 100644 src/ShHealOper/ShHealOper_CloseContour.hxx delete mode 100644 src/ShHealOper/ShHealOper_EdgeDivide.cxx delete mode 100644 src/ShHealOper/ShHealOper_EdgeDivide.hxx delete mode 100644 src/ShHealOper/ShHealOper_FillHoles.cxx delete mode 100644 src/ShHealOper/ShHealOper_FillHoles.hxx delete mode 100644 src/ShHealOper/ShHealOper_RemoveFace.cxx delete mode 100644 src/ShHealOper/ShHealOper_RemoveFace.hxx delete mode 100644 src/ShHealOper/ShHealOper_RemoveInternalWires.cxx delete mode 100644 src/ShHealOper/ShHealOper_RemoveInternalWires.hxx delete mode 100644 src/ShHealOper/ShHealOper_Sewing.cxx delete mode 100644 src/ShHealOper/ShHealOper_Sewing.hxx delete mode 100644 src/ShHealOper/ShHealOper_ShapeProcess.cxx delete mode 100644 src/ShHealOper/ShHealOper_ShapeProcess.hxx delete mode 100644 src/ShHealOper/ShHealOper_SpiltCurve2d.hxx delete mode 100644 src/ShHealOper/ShHealOper_SplitCurve2d.cxx delete mode 100644 src/ShHealOper/ShHealOper_SplitCurve2d.hxx delete mode 100644 src/ShHealOper/ShHealOper_SplitCurve3d.cxx delete mode 100644 src/ShHealOper/ShHealOper_SplitCurve3d.hxx delete mode 100644 src/ShHealOper/ShHealOper_Tool.cxx delete mode 100644 src/ShHealOper/ShHealOper_Tool.hxx delete mode 100644 src/TransformationGUI/Makefile.in delete mode 100644 src/TransformationGUI/TransformationGUI.cxx delete mode 100644 src/TransformationGUI/TransformationGUI.h delete mode 100644 src/TransformationGUI/TransformationGUI_MirrorDlg.cxx delete mode 100644 src/TransformationGUI/TransformationGUI_MirrorDlg.h delete mode 100644 src/TransformationGUI/TransformationGUI_MultiRotationDlg.cxx delete mode 100644 src/TransformationGUI/TransformationGUI_MultiRotationDlg.h delete mode 100644 src/TransformationGUI/TransformationGUI_MultiTranslationDlg.cxx delete mode 100644 src/TransformationGUI/TransformationGUI_MultiTranslationDlg.h delete mode 100644 src/TransformationGUI/TransformationGUI_OffsetDlg.cxx delete mode 100644 src/TransformationGUI/TransformationGUI_OffsetDlg.h delete mode 100644 src/TransformationGUI/TransformationGUI_PositionDlg.cxx delete mode 100644 src/TransformationGUI/TransformationGUI_PositionDlg.h delete mode 100644 src/TransformationGUI/TransformationGUI_RotationDlg.cxx delete mode 100644 src/TransformationGUI/TransformationGUI_RotationDlg.h delete mode 100644 src/TransformationGUI/TransformationGUI_ScaleDlg.cxx delete mode 100644 src/TransformationGUI/TransformationGUI_ScaleDlg.h delete mode 100644 src/TransformationGUI/TransformationGUI_TranslationDlg.cxx delete mode 100644 src/TransformationGUI/TransformationGUI_TranslationDlg.h diff --git a/INSTALL b/INSTALL deleted file mode 100644 index fb2743f12..000000000 --- a/INSTALL +++ /dev/null @@ -1,4 +0,0 @@ -This is the version 3.0.0 of GEOM -Compatible with : - - KERNEL 3.0.0 only! - - SALOMEGUI 3.0.0 diff --git a/LICENCE b/LICENCE deleted file mode 100644 index b1e3f5a26..000000000 --- a/LICENCE +++ /dev/null @@ -1,504 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - 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 - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - - diff --git a/Makefile.in b/Makefile.in deleted file mode 100644 index 81a995749..000000000 --- a/Makefile.in +++ /dev/null @@ -1,253 +0,0 @@ -# -* Makefile *- -# -# Author : Patrick GOLDBRONN (CEA) -# Date : 28/06/2001 -# $Header$ -# - -# source path -top_srcdir=@top_srcdir@ -top_builddir=. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/bin:@top_srcdir@/resources:./bin:@top_srcdir@/idl - - -@COMMENCE@ - -SUBDIRS = idl src doc - -RESOURCES_FILES = \ -GEOM_en.xml \ -GEOM_fr.xml \ -GEOM.config \ -GEOMCatalog.xml \ -GEOMDS_Resources \ -ImportExport \ -ShHealing \ -arc.png \ -archimede.png \ -axisinertia.png \ -basicproperties.png \ -bounding.png \ -box.png \ -box2points.png \ -boxdxyz.png \ -build_compound.png \ -build_edge.png \ -build_face.png \ -build_shell.png \ -build_solid.png \ -build_wire.png \ -centergravity.png \ -chamfer.png \ -chamferall.png \ -chamferedge.png \ -chamferface.png \ -check.png \ -circle.png \ -circlepointvector.png \ -circle3points.png \ -common.png \ -cone.png \ -conedxyz.png \ -conepointvector.png \ -cut.png \ -cylinder.png \ -cylinderdxyz.png \ -cylinderpointvector.png \ -delete.png \ -display.png \ -displayonly.png \ -displayall.png \ -erase.png \ -eraseall.png \ -fillet.png \ -filletall.png \ -filletedge.png \ -filletface.png \ -filling.png \ -fuse.png \ -geometry.png \ -line.png \ -line2points.png \ -lineedge.png \ -linepointvector.png \ -mindist.png \ -mirrorPoint.png \ -mirrorAxe.png \ -mirrorPlane.png \ -ModuleGeom.png \ -multirotation.png \ -multirotationdouble.png \ -multirotationsimple.png \ -multitranslation.png \ -multitranslationdouble.png \ -multitranslationsimple.png \ -offset.png \ -orientation.png \ -partition.png \ -partitionkeep.png \ -partitionplane.png \ -pipe.png \ -plane.png \ -planeWorking.png \ -planedxyz.png \ -plane3points.png \ -planeface.png \ -planepointvector.png \ -planeworkingface.png \ -planeworkingvector.png \ -planeworkingorigin.png \ -point2.png \ -pointonedge.png \ -polyline.png \ -prism.png \ -revol.png \ -rotate.png \ -scale.png \ -section.png \ -select1.png \ -sewing.png \ -shading.png \ -sketch.png \ -sphere.png \ -spheredxyz.png \ -spherepoint.png \ -subshape.png \ -supressHolesOnFaceShell.png \ -supressface.png \ -supresshole.png \ -tolerance.png \ -torus.png \ -torusdxyz.png \ -toruspointvector.png \ -translationDxyz.png \ -translationPoints.png \ -translationVector.png \ -tree_compound.png \ -tree_compsolid.png \ -tree_edge.png \ -tree_face.png \ -tree_shape.png \ -tree_shell.png \ -tree_solid.png \ -tree_vertex.png \ -tree_wire.png \ -tree_group_vertex.png \ -tree_group_edge.png \ -tree_group_face.png \ -tree_group_solid.png \ -tree_lcs.png \ -vector.png \ -vector2points.png \ -vectordxyz.png \ -whatis.png \ -ellipse.png \ -ellipsepointvector.png \ -bezier.png \ -interpol.png \ -spline.png \ -closecontour.png \ -suppressintwires.png \ -marker.png \ -marker2.png \ -marker3.png \ -position.png \ -position2.png \ -free_bound.png \ -point_coord.png \ -point3.png \ -shapeprocess.png \ -block_2f.png \ -block_6f.png \ -block_face_2e.png \ -block_face_4e.png \ -block_face_4v.png \ -block_multitrsf_double.png \ -block_multitrsf_simple.png \ -tree_block.png \ -subblock.png \ -group_new.png \ -group_edit.png \ -glue.png \ -check_blocks_compound.png \ -free_faces.png \ -propagate.png \ -redo.png \ -undo.png - - -BIN_SCRIPT= \ -VERSION - -# copy header files in common directory -ifeq ($(HAVE_SSTREAM),yes) - include_list=include/salome/SALOMEconfig.h -else - include_list=include/salome/SALOMEconfig.h include/salome/sstream -endif - -inc: idl $(include_list) - -include/salome/SALOMEconfig.h: salome_adm/unix/SALOMEconfig.ref - -$(RM) $@ - $(LN_S) ../../$< $@ - -# test if SALOMEconfig.h has changed (contents) -salome_adm/unix/SALOMEconfig.ref: salome_adm/unix/SALOMEconfig.h - @if ! [ -a $@ ]; then \ - cp -p -f $< $@; \ - fi; \ - if ! cmp $< $@; then \ - cp -p -f $< $@; \ - fi; \ - -include/salome/sstream: salome_adm/unix/sstream - -$(RM) $@ - $(LN_S) ../../$< $@ - -depend: depend_idl - -depend_idl: - (cd idl ; $(MAKE) $@) || exit 1 - -# doc is already build : if you want to had documents, go manually to doc and run 'make doc' -#doc: -# (cd doc && $(MAKE) $@) || exit 1 - -install-end: -# finish libtool install -# @$(LT) --mode=finish $(libdir) - -install-include: $(include_list) - $(INSTALL) -d $(includedir) - @for f in X $(include_list); do \ - if test $$f != X; then \ - ($(INSTALL_DATA) -p $$f $(includedir)/. || exit 1); \ - fi; \ - done - -# install script in $(bindir) : -install-bin: $(BIN_SCRIPT) - $(INSTALL) -d $(bindir) - if test $(BIN_SCRIPT)X != X; then \ - $(INSTALL_PROGRAM) $^ $(bindir); \ - fi - -uninstall: uninstall-idl - -uninstall-idl: - $(RM) $(idldir)/*.idl - -distclean: distclean-other - -distclean-other: - -$(RM) salome_adm/unix/*~ salome_adm/unix/*% salome_adm/unix/*.bak salome_adm/unix/*.new salome_adm/unix/*.old - -$(RM) salome_adm/unix/make_* - -$(RM) salome_adm/unix/depend salome_adm/unix/SALOMEconfig.h - -$(RM) config.cache config.log config.status - -@MODULE@ - -install: install-bin install-include install-end - diff --git a/adm_local/unix/config_files/README b/adm_local/unix/config_files/README deleted file mode 100644 index feb997b16..000000000 --- a/adm_local/unix/config_files/README +++ /dev/null @@ -1,3 +0,0 @@ -This file is only here for CVS: -CVS does not always create empty directory, and adm_local/unix/config_file -is needed by build_configure. diff --git a/adm_local/unix/make_commence.in b/adm_local/unix/make_commence.in deleted file mode 100644 index 336eddf01..000000000 --- a/adm_local/unix/make_commence.in +++ /dev/null @@ -1,254 +0,0 @@ -# common directories to put headerfiles -inc_builddir=$(top_builddir)/include/salome - -@SET_MAKE@ -SHELL=/bin/sh - -# header missing - -HAVE_SSTREAM=@HAVE_SSTREAM@ - - -LIBS=@LIBS@ -LDFLAGS=@LDFLAGS@ -L$(top_builddir)/lib/salome -Xlinker -rpath-link -Xlinker -L$(top_builddir)/lib/salome -# add libstdc++ to link c++ library with libtool ! -LDFLAGS+= -lstdc++ - -CP=@CP@ - -# CPP - -CPP=@CPP@ -CXXCPP=@CXXCPP@ -CPPFLAGS=@CPPFLAGS@ -I$(inc_builddir) -I$(srcdir) -I. - -# C - -CC = @CC@ -CFLAGS = @CFLAGS@ -C_DEPEND_FLAG = @C_DEPEND_FLAG@ - -# C++ - -CXX = @CXX@ -CXXFLAGS = @CXXFLAGS@ -CXX_DEPEND_FLAG = @CXX_DEPEND_FLAG@ - -# BOOST Library - -BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ - -# JAVA - -JAVA_INCLUDES = @JAVA_INCLUDES@ -JAVA_LIBS = @JAVA_LIBS@ -JAVA_LDPATH = @JAVA_LDPATH@ - -# PYTHON - -PYTHON = @PYTHON@ -PYTHONHOME = @PYTHONHOME@ -PYTHON_INCLUDES = @PYTHON_INCLUDES@ -PYTHON_LIBS = @PYTHON_LIBS@ -PYTHON_VERSION = @PYTHON_VERSION@ -PYTHON_SITE = $(prefix)/lib/python$(PYTHON_VERSION)/site-packages -PYTHON_SITE_INSTALL = $(prefix)/lib/python$(PYTHON_VERSION)/site-packages/salome -# QT - -QT_ROOT = @QT_ROOT@ -QT_INCLUDES = @QT_INCLUDES@ -QT_MT_INCLUDES = @QT_INCLUDES@ -DQT_THREAD_SUPPORT -QT_LIBS = @QT_LIBS@ -QT_MT_LIBS = @QT_MT_LIBS@ - -MOC = @MOC@ -UIC = @UIC@ - -MSG2QM = @MSG2QM@ - -#QWT - -QWT_INCLUDES=@QWT_INCLUDES@ -QWT_LIBS=@QWT_LIBS@ - -# SIP -SIP = @SIP@ -SIP_INCLUDES = @SIP_INCLUDES@ -SIP_LIBS = @SIP_LIBS@ - -# PYQT -PYQT_SIPS = @PYQT_SIPS@ -PYQT_LIBS = @PYQT_LIBS@ - -# openGL -OGL_INCLUDES=@OGL_INCLUDES@ -OGL_LIBS=@OGL_LIBS@ - -# VTK -VTK_INCLUDES=@VTK_INCLUDES@ -VTK_LIBS=@VTK_LIBS@ - -# HDF5 - -HDF5_INCLUDES=@HDF5_INCLUDES@ -HDF5_LIBS=@HDF5_LIBS@ -HDF5_MT_LIBS=@HDF5_MT_LIBS@ - -# OpenCasCade - -OCC_INCLUDES=@CAS_CPPFLAGS@ -OCC_CXXFLAGS=@CAS_CXXFLAGS@ - -#OCC_KERNEL_LIBS=@CAS_KERNEL@ -#OCC_OCAF_LIBS=@CAS_OCAF@ -#OCC_VIEWER_LIBS=@CAS_VIEWER@ -#OCC_MODELER_LIBS=@CAS_MODELER@ -#OCC_DATAEXCHANGE_LIBS=@CAS_DATAEXCHANGE@ -#OCC_LIBS=@CAS_LDFLAGS@ -CAS_KERNEL=@CAS_KERNEL@ -CAS_OCAF=@CAS_OCAF@ -CAS_VIEWER=@CAS_VIEWER@ -CAS_MODELER=@CAS_MODELER@ -CAS_DATAEXCHANGE=@CAS_DATAEXCHANGE@ -CAS_LDPATH=@CAS_LDPATH@ -# MPICH - -MPICH_INCLUDES=@MPICH_INCLUDES@ -MPICH_LIBS=@MPICH_LIBS@ - -# Swig C++ Python - -SWIG = @SWIG@ -SWIG_FLAGS = @SWIG_FLAGS@ -I$(inc_builddir) -I$(srcdir) -I. - -# OMNIORB - -OMNIORB_ROOT = @OMNIORB_ROOT@ -OMNIORB_INCLUDES = @OMNIORB_INCLUDES@ -OMNIORB_LIBS = @OMNIORB_LIBS@ -OMNIORB_CXXFLAGS = @OMNIORB_CXXFLAGS@ - -OMNIORB_IDL = @OMNIORB_IDL@ -OMNIORB_IDLCXXFLAGS = @OMNIORB_IDLCXXFLAGS@ -OMNIORB_IDLPYFLAGS = @OMNIORB_IDLPYFLAGS@ -I$(top_srcdir)/idl -I$(KERNEL_ROOT_DIR)/idl/salome - -OMNIORB_IDL_CLN_H = @OMNIORB_IDL_CLN_H@ -OMNIORB_IDL_CLN_CXX = @OMNIORB_IDL_CLN_CXX@ -OMNIORB_IDL_CLN_OBJ = @OMNIORB_IDL_CLN_OBJ@ - -OMNIORB_IDL_SRV_H = @OMNIORB_IDL_SRV_H@ -OMNIORB_IDL_SRV_CXX = @OMNIORB_IDL_SRV_CXX@ -OMNIORB_IDL_SRV_OBJ = @OMNIORB_IDL_SRV_OBJ@ - -# Default ORB - -CORBA_ROOT = @CORBA_ROOT@ -CORBA_INCLUDES = @CORBA_INCLUDES@ -CORBA_LIBS = @CORBA_LIBS@ -CORBA_CXXFLAGS = @CORBA_CXXFLAGS@ - -IDLCXXFLAGS = -bcxx @IDLCXXFLAGS@ -I$(top_srcdir)/idl -I$(KERNEL_ROOT_DIR)/idl/salome -IDLPYFLAGS = @IDLPYFLAGS@ - -IDL = @IDL@ - -IDL_CLN_H = @IDL_CLN_H@ -IDL_CLN_CXX = @IDL_CLN_CXX@ -IDL_CLN_OBJ = @IDL_CLN_OBJ@ - -IDL_SRV_H = @IDL_SRV_H@ -IDL_SRV_CXX = @IDL_SRV_CXX@ -IDL_SRV_OBJ = @IDL_SRV_OBJ@ - -CPPFLAGS+= $(CORBA_INCLUDES) -CXXFLAGS+= $(CORBA_CXXFLAGS) - -# add corba libs when link salome application ! -#LDFLAGS+= $(CORBA_LIBS) -LIBS+=$(CORBA_LIBS) - -DOXYGEN = @DOXYGEN@ - -## Shared libraries -LT_STATIC_EXEC=@LT_STATIC_EXEC@ -DYNAMIC_DIRS=@DYNAMIC_DIRS@ -LT_LIB=libtool -LT=$(top_builddir)/libtool -LT_COMPILE=$(LT) --mode=compile $(CC) -LT_LINK_LIB=$(LT_LIB) --mode=link $(CC) -rpath $(libdir) -LT_LINK_EXE=$(LT) --mode=link $(CC) $(LT_STATIC_EXEC) -dlopen self -rpath $(bindir) $(DYNAMIC_DIRS) -LT_RUN=$(LT) --mode=execute -LT_INSTALL_PROG=$(LT) --mode=install $(INSTALL_PROGRAM) -LT_INSTALL_LIB=$(LT) --mode=install $(INSTALL_DATA) -LT_UNINSTALL=$(LT) --mode=uninstall $(RM) - -INSTALL=@INSTALL@ -INSTALL_PROGRAM=@INSTALL_PROGRAM@ -INSTALL_DATA=@INSTALL_DATA@ - -# create a symbolic link (or a copie ?) -LN_S=@LN_S@ - -## Installation points -prefix=@prefix@ -exec_prefix=@exec_prefix@ -bindir=@bindir@/salome -libdir=@libdir@/salome -# warning : if user give this path in configure we could have salome/salome :-( -includedir=@includedir@/salome -datadir=@datadir@/salome -idldir=${prefix}/idl/salome -sharedpydir=@libdir@/python$(PYTHON_VERSION)/site-packages/salome/shared_modules -incmakedir=${prefix}/salome_adm/unix - -docdir=${prefix}/doc/salome - -# -# begin of package rules -# - -.PHONY: all lib bin inc resources data docs tests install uninstall dep depend depend_idl cleandep mostlyclean clean distclean - -.SUFFIXES: .cxx .cc .c .f .o .lo .idl .py .i .ui .po .qm - -all: - $(MAKE) inc - $(MAKE) depend_idl - $(MAKE) depend - $(MAKE) lib - $(MAKE) bin - $(MAKE) resources - -# -# add target to build administrative files -# - -Makefile: $(top_builddir)/config.status $(srcdir)/Makefile.in - cd $(top_builddir) ; ./config.status - -$(top_builddir)/config.status: $(top_srcdir)/configure - cd $(top_builddir) ; ./config.status --recheck - -# VPATH contain $(srcdir), so make configure is good in top_srcdir and we must add target configure otherwise :-) -ifneq ($(top_srcdir),$(srcdir)) -configure: $(top_srcdir)/configure -endif - -$(top_srcdir)/configure: $(top_srcdir)/configure.in $(top_srcdir)/aclocal.m4 - cd $(top_srcdir) ; autoconf - -$(top_srcdir)/configure.in: $(top_srcdir)/configure.in.base - cd $(top_srcdir) && ./build_configure - - -ACLOCAL_SRC = \ -ac_cxx_bool.m4 check_corba.m4 check_vtk.m4 \ -ac_cxx_depend_flag.m4 check_hdf5.m4 enable_pthreads.m4 \ -ac_cxx_mutable.m4 check_mico.m4 libtool.m4 \ -ac_cxx_namespaces.m4 check_omniorb.m4 pyembed.m4 \ -ac_cxx_partial_specialization.m4 check_opengl.m4 python.m4 \ -ac_cxx_typename.m4 check_pthreads.m4 check_cas.m4 \ -ac_cc_warnings.m4 check_qt.m4 check_swig.m4 - -$(top_srcdir)/aclocal.m4: $(ACLOCAL_SRC:%=@KERNEL_ROOT_DIR@/salome_adm/unix/config_files/%) - cd $(top_srcdir) ; aclocal --acdir=adm_local/unix/config_files -I @KERNEL_ROOT_DIR@/salome_adm/unix/config_files diff --git a/adm_local/unix/make_omniorb.in b/adm_local/unix/make_omniorb.in deleted file mode 100644 index 84679a9ea..000000000 --- a/adm_local/unix/make_omniorb.in +++ /dev/null @@ -1,53 +0,0 @@ -#======================================================================= -# Begin specific part to omniorb -# (include from file adm/unix/make_omniorb generated by -# adm/unix/make_omniorb.in) -#======================================================================= -# -* Makefile *- -# -# Author : Patrick GOLDBRONN (CEA) -# Date : 29/06/2001 -# $Header$ -# - -# Client and server object are the same with omniorb -# There are one header file and one source file generate - -#IDLOBJ=$(IDLSRC:%.idl=%$(IDL_CLN_OBJ)) - -# dependancies between idl and it's generated files -%$(OMNIORB_IDL_CLN_CXX) %$(OMNIORB_IDL_CLN_H): ${KERNEL_ROOT_DIR}/idl/salome/%.idl - $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $< - -%$(OMNIORB_IDL_CLN_CXX) %$(OMNIORB_IDL_CLN_H): ${top_srcdir}/idl/%.idl - $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $< - -# dependncies between idl files -depend_idl: .depidl - -# we use cpp to generate dependencies between idl files. -# we change cpp output to keep only idl file and transform it to get a suitable rule -.depidl: $(IDL_FILES) - @touch $@ - @for dep in $? dummy; do \ - if [ $$dep != "dummy" ]; then \ - echo Building dependencies for $$dep; \ - basedep=`basename $$dep .idl`; \ - header="$$basedep"$(IDL_CLN_H); \ - sed '\%^'"$$header"':%,\%[^\\]$$%d' <$@ >$@- && mv $@- $@; \ - $(CPP) $(C_DEPEND_FLAG) -I$(srcdir) $$dep 2>/dev/null | \ - sed `echo "s%$$basedep\\.idl%$$header:%g"` | \ - sed 's% $(srcdir)/% %g' | \ - sed 's% $(top_srcdir)/% %g' | \ - sed 's% $(top_builddir)/% %g' | \ - sed 's%^.*:\.o: *%%' | sed 's%^ *\\ *%%'| sed 's%^ *\(.*\):%\1:%' | \ - sed 's/\.idl/$(IDL_CLN_H)/' >>$@; \ - echo '' >>$@; \ - fi; \ - done ; - --include .depidl - -#======================================================================= -# End specific part to omniorb -#======================================================================= diff --git a/bin/VERSION b/bin/VERSION deleted file mode 100755 index ebd7876a4..000000000 --- a/bin/VERSION +++ /dev/null @@ -1 +0,0 @@ -THIS IS SALOME - GEOM VERSION: 3.0.2 diff --git a/build_configure b/build_configure deleted file mode 100755 index 7d997f9e8..000000000 --- a/build_configure +++ /dev/null @@ -1,215 +0,0 @@ -#!/bin/bash - -# -# Tool for updating list of .in file for the SALOME project -# and regenerating configure script -# -# Author : Marc Tajchman - CEA -# Date : 10/10/2002 -# $Header$ -# - -ORIG_DIR=`pwd` -CONF_DIR=`echo $0 | sed -e "s,[^/]*$,,;s,/$,,;s,^$,.,"` - -######################################################################## -# Test if the KERNEL_ROOT_DIR is set correctly -if test ! -d "${KERNEL_ROOT_DIR}"; then - echo "failed : KERNEL_ROOT_DIR variable is not correct !" - exit -fi - -# Test if the KERNEL_SRC is set correctly - -#if test ! -d "${KERNEL_SRC}"; then -# echo "failed : KERNEL_SRC variable is not correct !" -# exit -#fi -######################################################################## -# find_in - utility function -# -# usage : -# find_in directory filename -# -# Finds files following the *.in pattern, recursively in the -# directory (first argument). -# Results are appended into the file (second argument) -# -# Difference from the standard unix find is that files are tested -# before directories -# - -find_in() -{ - local i - local f=$2 - -# if the first argument is not a directory, returns - - if [ ! -d "$1" ] ; then - return - fi - -# dont look in the CVS directories - - case $1 in - */CVS) return ;; - */adm_local/*) return ;; - *) ;; - esac - -# for each regular file contained in the directory -# test if it's a .in file - - for i in "$1"/* - do - if [ -f "$i" ] ; then - case $i in - *.in) echo " "$i" \\" >> $f;; - *) ;; - esac - fi - done - -# for each subdirectory of the first argument, proceeds recursively - - for i in "$1"/* - do - if [ -d "$i" ] ; then - find_in "$i" "$f" - fi - done -} - - -####################################################################### -# Generate list of .in files (Makefile.in, config.h.in, etc) -# appending it in file configure.in - -cd ${CONF_DIR} -ABS_CONF_DIR=`pwd` - -# -# Common part of the configure.in file -# -chmod u+w configure.in.base -if ! \cp -f configure.in.base configure.in_tmp1 -then - echo - echo "error : can't create files in" ${CONF_DIR} - echo "aborting ..." - chmod u-w configure.in.base - exit -fi -chmod u-w configure.in.base - -if [ -e "${CONF_DIR}/salome_adm" ] ; then - \rm -f ${CONF_DIR}/salome_adm -fi - -# make a link allowing AC_OUTPUT to find the salome_adm/.../*.in files -echo "" >> configure.in_tmp1 -echo 'ln -fs ${KERNEL_ROOT_DIR}/salome_adm ${ROOT_SRCDIR}/salome_adm' >> configure.in_tmp1 - -echo "" >> configure.in_tmp1 -echo "AC_OUTPUT([ \\" >> configure.in_tmp1 - -# -# List of .in files in the adm/unix directory -# These files MUST be on top of AC_OUTPUT list so we -# put them "manually" -# - -echo " ./salome_adm/unix/SALOMEconfig.h \\" >> configure.in_tmp1 -echo " ./salome_adm/unix/F77config.h \\" >> configure.in_tmp1 -echo " ./salome_adm/unix/sstream \\" >> configure.in_tmp1 -echo " ./salome_adm/unix/depend \\" >> configure.in_tmp1 -echo " ./adm_local/unix/make_omniorb \\" >> configure.in_tmp1 -echo " ./salome_adm/unix/envScript \\" >> configure.in_tmp1 -echo " ./adm_local/unix/make_commence \\" >> configure.in_tmp1 -echo " ./salome_adm/unix/make_conclude \\" >> configure.in_tmp1 -echo " ./salome_adm/unix/make_module \\" >> configure.in_tmp1 - -\rm -f configure.in_tmp2 configure.in_tmp3 -touch configure.in_tmp2 -find_in . configure.in_tmp2 -sed -e '/^...salome_adm/d' configure.in_tmp2 > configure.in_tmp3 -sed -e '/^...adm_local.unix.make_omniorb/d' configure.in_tmp3 configure.in_tmp2 -sed -e '/^...adm_local.unix.make_commence/d' configure.in_tmp2 > configure.in_tmp3 -sed -e '/configure.in/d' configure.in_tmp3 > configure.in_tmp2 -sed -e 's/.in / /' configure.in_tmp2 >> configure.in_tmp1 -#sed '/^.salome_adm/d' configure.in_tmp2 > configure.in_tmp3 -#sed '/configure.in/d' configure.in_tmp3 > configure.in_tmp2 -#sed 's/.in / /' configure.in_tmp2 >> configure.in_tmp1 - -echo "])" >> configure.in_tmp1 - -# delete the link created for AC_OUTPUT -echo "" >> configure.in_tmp1 -#echo 'rm -f ${ROOT_SRCDIR}/salome_adm' >> configure.in_tmp1 -\mv configure.in_tmp1 configure.in_new -\rm -f configure.in_tmp2 configure.in_tmp3 - - -######################################################################## -# Create new (or replace old) configure.in file -# Print a message if the file is write protected -# - -echo -if test ! -f configure.in -then - echo -n "Creating new file 'configure.in' ... " - if \mv configure.in_new configure.in >& /dev/null - then - echo "done" - else - echo "error, check your file permissions" - fi -else - echo -n "Updating 'configure.in' file ... " - if ! \cp configure.in configure.in_old >& /dev/null - then - echo - echo - echo "Can't backup previous configure.in" - echo -n "Continue (you will not be able to revert) - (Y/N) ? " - read R - case "x$R" in - xn*) exit;; - xN*) exit;; - esac - echo - echo -n " " - fi - if \cp configure.in_new configure.in >& /dev/null - then - echo "done" - else - echo - echo "error, can't update previous configure.in" - fi -fi - -######################################################################## -# Use autoconf to rebuild the configure script -# - -if test -f configure -then - echo -n "Updating 'configure' script ... " -else - echo -n "Creating 'configure' script ... " -fi - -aclocal --acdir=adm_local/unix/config_files -I ${KERNEL_ROOT_DIR}/salome_adm/unix/config_files -if autoconf -then - echo "done" -else - echo "failed (check file permissions and/or user quotas ...)" -fi - -cd ${ORIG_DIR} - -echo diff --git a/configure.in.base b/configure.in.base deleted file mode 100644 index cab0113ce..000000000 --- a/configure.in.base +++ /dev/null @@ -1,377 +0,0 @@ -# -# PLEASE DO NOT MODIFY configure.in FILE -# -# ALL CHANGES WILL BE DISCARDED BY THE NEXT -# build_configure COMMAND -# -# CHANGES MUST BE MADE IN configure.in.base FILE -# -# -# Author : Marc Tajchman (CEA) -# Date : 28/06/2001 -# Modified by : Patrick GOLDBRONN (CEA) -# Modified by : Marc Tajchman (CEA) -# -# Created from configure.in.base -# - - -AC_INIT(src) -AC_CONFIG_AUX_DIR(${KERNEL_ROOT_DIR}/salome_adm/unix/config_files) -AC_CANONICAL_HOST - -PACKAGE=salome -AC_SUBST(PACKAGE) - -VERSION=0.0.1 -AC_SUBST(VERSION) - -dnl -dnl Initialize source and build root directories -dnl - -ROOT_BUILDDIR=`pwd` -ROOT_SRCDIR=`echo $0 | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"` -cd $ROOT_SRCDIR -ROOT_SRCDIR=`pwd` -cd $ROOT_BUILDDIR - -AC_SUBST(ROOT_SRCDIR) -AC_SUBST(ROOT_BUILDDIR) - -echo -echo Source root directory : $ROOT_SRCDIR -echo Build root directory : $ROOT_BUILDDIR -echo -echo - -if test -z "$AR"; then - AC_CHECK_PROGS(AR,ar xar,:,$PATH) -fi -AC_SUBST(AR) - -dnl Export the AR macro so that it will be placed in the libtool file -dnl correctly. -export AR - -echo -echo --------------------------------------------- -echo testing make -echo --------------------------------------------- -echo - -AC_PROG_MAKE_SET -AC_PROG_INSTALL -dnl -dnl libtool macro check for CC, LD, NM, LN_S, RANLIB, STRIP + pour les librairies dynamiques ! - -AC_ENABLE_DEBUG(yes) -AC_DISABLE_PRODUCTION - -echo --------------------------------------------- -echo testing libtool -echo --------------------------------------------- - -dnl first, we set static to no! -dnl if we want it, use --enable-static -AC_ENABLE_STATIC(no) - -AC_LIBTOOL_DLOPEN -AC_PROG_LIBTOOL - -dnl Fix up the INSTALL macro if it s a relative path. We want the -dnl full-path to the binary instead. -case "$INSTALL" in - *install-sh*) - INSTALL='\${KERNEL_ROOT_DIR}'/salome_adm/unix/config_files/install-sh - ;; -esac - -echo -echo --------------------------------------------- -echo testing C/C++ -echo --------------------------------------------- -echo - -cc_ok=no -dnl inutil car libtool -dnl AC_PROG_CC -AC_PROG_CXX -AC_DEPEND_FLAG -# AC_CC_WARNINGS([ansi]) -cc_ok=yes - -dnl Library libdl : -AC_CHECK_LIB(dl,dlopen) - -dnl add library libm : -AC_CHECK_LIB(m,ceil) - -dnl -dnl Well we use sstream which is not in gcc pre-2.95.3 -dnl We must test if it exists. If not, add it in include ! -dnl - -AC_CXX_HAVE_SSTREAM - -dnl -dnl --------------------------------------------- -dnl testing MPICH -dnl --------------------------------------------- -dnl - -CHECK_MPICH - -echo -echo --------------------------------------------- -echo testing LEX \& YACC -echo --------------------------------------------- -echo - -lex_yacc_ok=no -AC_PROG_YACC -AC_PROG_LEX -lex_yacc_ok=yes - -echo -echo --------------------------------------------- -echo testing python -echo --------------------------------------------- -echo - -CHECK_PYTHON - -dnl echo -dnl echo --------------------------------------------- -dnl echo testing java -dnl echo --------------------------------------------- -dnl echo - -dnl CHECK_JAVA - -echo -echo --------------------------------------------- -echo testing swig -echo --------------------------------------------- -echo - -CHECK_SWIG - -echo -echo --------------------------------------------- -echo testing threads -echo --------------------------------------------- -echo - -ENABLE_PTHREADS - -echo -echo --------------------------------------------- -echo testing omniORB -echo --------------------------------------------- -echo - -CHECK_OMNIORB - -dnl echo -dnl echo --------------------------------------------- -dnl echo testing mico -dnl echo --------------------------------------------- -dnl echo - -dnl CHECK_MICO - -echo -echo --------------------------------------------- -echo default ORB : omniORB -echo --------------------------------------------- -echo - -DEFAULT_ORB=omniORB -CHECK_CORBA - -AC_SUBST_FILE(CORBA) -corba=make_$ORB -CORBA=adm_local/unix/$corba - -echo -echo --------------------------------------------- -echo testing openGL -echo --------------------------------------------- -echo - -CHECK_OPENGL - -echo -echo --------------------------------------------- -echo testing QT -echo --------------------------------------------- -echo - -CHECK_QT - -echo -echo --------------------------------------------- -echo testing MSG2QM -echo --------------------------------------------- -echo - -CHECK_MSG2QM - -echo -echo --------------------------------------------- -echo testing VTK -echo --------------------------------------------- -echo - -CHECK_VTK - -echo -echo --------------------------------------------- -echo testing HDF5 -echo --------------------------------------------- -echo - -CHECK_HDF5 - -echo -echo --------------------------------------------- -echo BOOST Library -echo --------------------------------------------- -echo - -CHECK_BOOST - -echo -echo --------------------------------------------- -echo Testing OpenCascade -echo --------------------------------------------- -echo - -CHECK_CAS - -echo -echo --------------------------------------------- -echo Testing html generators -echo --------------------------------------------- -echo - -CHECK_HTML_GENERATORS - -echo -echo --------------------------------------------- -echo Testing Kernel -echo --------------------------------------------- -echo - -CHECK_KERNEL - -echo -echo --------------------------------------------- -echo Summary -echo --------------------------------------------- -echo - -echo Configure -variables="cc_ok lex_yacc_ok python_ok swig_ok threads_ok OpenGL_ok qt_ok vtk_ok hdf5_ok omniORB_ok boost_ok occ_ok doxygen_ok graphviz_ok Kernel_ok" - -for var in $variables -do - printf " %10s : " `echo \$var | sed -e "s,_ok,,"` - eval echo \$$var -done - -echo -echo "Default ORB : $DEFAULT_ORB" -echo - -dnl generals files which could be included in every makefile - -AC_SUBST_FILE(COMMENCE) COMMENCE=adm_local/unix/make_commence -AC_SUBST_FILE(CONCLUDE) CONCLUDE=salome_adm/unix/make_conclude -AC_SUBST_FILE(MODULE) MODULE=salome_adm/unix/make_module - -dnl les dependences -AC_SUBST_FILE(DEPEND) DEPEND=salome_adm/unix/depend - -dnl We don t need to say when we re entering directories if we re using -dnl GNU make becuase make does it for us. -if test "X$GMAKE" = "Xyes"; then - AC_SUBST(SETX) SETX=":" -else - AC_SUBST(SETX) SETX="set -x" -fi - -# make other build directories -for rep in salome_adm adm_local doc bin/salome include/salome lib/salome share/salome/resources idl -do -# if test ! -d $rep ; then -# eval mkdir $rep -# fi - $INSTALL -d $rep -done - -echo -echo --------------------------------------------- -echo copying resource files, shell scripts, and -echo xml files -echo --------------------------------------------- -echo - - -dnl copy resources directories - -#for i in `find $ROOT_SRCDIR -name 'resources' -print` -#do -# local_res=`echo $i | sed -e "s,$ROOT_SRCDIR,.,"` -# local_res_dir=`echo $local_res | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"` -# mkdir -p $local_res_dir -# cd $local_res_dir -# ln -fs $i -# echo $local_res -# cd $ROOT_BUILDDIR -#done - -dnl copy shells and utilities contained in the bin directory -dnl excluding .in files (treated in AC-OUTPUT below) and CVS -dnl directory - -mkdir -p bin/salome -cd bin/salome - -for i in $ROOT_SRCDIR/bin/* -do - local_bin=`echo $i | sed -e "s,$ROOT_SRCDIR,.,"` - case "$local_bin" in - *.in | *~) ;; - ./bin/CVS | ./bin/salome) ;; - *) /usr/bin/install $i .; echo $local_bin ;; - esac -done -cd $ROOT_BUILDDIR - -AC_SUBST_FILE(ENVSCRIPT) ENVSCRIPT=salome_adm/unix/envScript - -dnl copy xml files to the build tree (lib directory) -dnl pourquoi ???? - -#cd lib -#for i in `find $ROOT_SRCDIR -name "*.xml" -print` -#do -# ln -fs $i -# echo `echo $i | sed -e "s,$ROOT_SRCDIR,.,"` -#done -#cd $ROOT_BUILDDIR - - -echo -echo --------------------------------------------- -echo generating Makefiles and configure files -echo --------------------------------------------- -echo - -AC_OUTPUT_COMMANDS([ \ - chmod +x ./bin/* \ -]) - -## do not delete this line diff --git a/doc/Makefile.in b/doc/Makefile.in deleted file mode 100644 index 7295ede75..000000000 --- a/doc/Makefile.in +++ /dev/null @@ -1,40 +0,0 @@ - -# -* Makefile *- -# -# Author : Patrick GOLDBRONN (CEA) -# Date : 30/11/2001 -# $Header$ -# -# source path -top_srcdir=@top_srcdir@ -top_builddir=.. -srcdir=@srcdir@ -VPATH=.:@srcdir@ - -SUBDIRS= salome - -@COMMENCE@ - -docs: - @@SETX@; for d in $(SUBDIRS); do \ - (cd $$d && $(MAKE) $@) || exit 1; \ - done -clean: - @@SETX@; for d in $(SUBDIRS); do \ - (cd $$d && $(MAKE) $@) || exit 1; \ - done - -distclean: clean - @@SETX@; for d in $(SUBDIRS); do \ - (cd $$d && $(MAKE) $@) || exit 1; \ - done - -install: - @@SETX@; for d in $(SUBDIRS); do \ - (cd $$d && $(MAKE) $@) || exit 1; \ - done - -uninstall: - @@SETX@; for d in $(SUBDIRS); do \ - (cd $$d && $(MAKE) $@) || exit 1; \ - done diff --git a/doc/salome/GEOM_index.html b/doc/salome/GEOM_index.html deleted file mode 100644 index 7da877011..000000000 --- a/doc/salome/GEOM_index.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - Geometry Module Documentation - - - -
  -
-
                   -   
- - - - - - - - - -
- - - -
- -
-
-
-

Geometry MODULE Documentation

-
-
- - - - - -
-
- -
-

Application-About.png -     

-
- -
- - - - -
-
-
-
-
- -
- -
GUI Documentation
- -
- -
- -

-
- -
- -
TUI Documentation
- -
- -
- -

-
-
-
-
-
-
- - diff --git a/doc/salome/Makefile.in b/doc/salome/Makefile.in deleted file mode 100644 index 69c40d626..000000000 --- a/doc/salome/Makefile.in +++ /dev/null @@ -1,44 +0,0 @@ - -# -* Makefile *- -# -# Author : Patrick GOLDBRONN (CEA) -# Date : 30/11/2001 -# $Header$ -# -# source path -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@ - -SUBDIRS= tui gui - -@COMMENCE@ - -docs: - @@SETX@; for d in $(SUBDIRS); do \ - (cd $$d && $(MAKE) $@) || exit 1; \ - done; \ - cp -f $(srcdir)/GEOM_index.html GEOM_index.html - -clean: - @@SETX@; for d in $(SUBDIRS); do \ - (cd $$d && $(MAKE) $@) || exit 1; \ - done - -distclean: clean - @@SETX@; for d in $(SUBDIRS); do \ - (cd $$d && $(MAKE) $@) || exit 1; \ - done - -install: - $(MAKE) docs - (cd tui && $(MAKE) install); - (cd gui && $(MAKE) install); - cp -f GEOM_index.html $(docdir) - -uninstall: - @@SETX@; for d in $(SUBDIRS); do \ - (cd $$d && $(MAKE) $@) || exit 1; \ - done; \ - rm -fr $(docdir)/GEOM_index.html diff --git a/doc/salome/gui/GEOM/GEOM.log b/doc/salome/gui/GEOM/GEOM.log deleted file mode 100755 index e17a2ed87..000000000 --- a/doc/salome/gui/GEOM/GEOM.log +++ /dev/null @@ -1,454 +0,0 @@ -|SourceProjectName:GEOM.hpr -|DestinationProjectName:geom.html -whhost.js -whmsg.js -whmozemu.js -whproxy.js -whstub.js -whutils.js -whver.js -whform.js -whphost.js -whstart.js -whtopic.js -whframes.js -whlang.js -whskin_info.htm -whskin_blank.htm -whnjs.htm -whthost.js -whtdhtml.htm -whihost.js -whibody.htm -whiform.htm -whfhost.js -whfbody.htm -whfform.htm -whghost.js -whgbody.htm -whgdhtml.htm -whgdef.htm -whproj.js -whproj.xml -whproj.htm -whdata\whtoc.js -whdata\whtoc.xml -whdata\whtoc.htm -whdata\whtdata.js -whdata\whidx.js -whdata\whidx.xml -whdata\whidx.htm -whdata\whidata.js -whdata\whfts.js -whdata\whfts.xml -whdata\whfts.htm -whdata\whglo.js -whdata\whglo.xml -whdata\whglo.htm -whdata\whgdata.js -whdata\whftdata.js -whdata\whfwdata.js -whres.xml -webhelp.jar -webhelp.cab -whgdata\whnvp30.htm -whgdata\whnvp31.htm -whgdata\whnvp32.htm -whgdata\whnvp33.htm -whgdata\whnvt30.htm -whgdata\whnvt31.htm -whgdata\whnvt32.htm -whgdata\whnvt33.htm -whgdata\whnvf30.htm -whgdata\whnvf31.htm -whgdata\whnvf32.htm -whgdata\whnvf33.htm -whgdata\whnvl31.htm -whgdata\whnvl32.htm -whgdata\whnvl33.htm -whgdata\whexpbar.gif -cshdat_webhelp.htm -cshdat_robohelp.htm -wht_tab0.gif -wht_tab1.gif -wht_tab2.gif -wht_tab3.gif -wht_tab4.gif -wht_tab5.gif -wht_tab6.gif -wht_tab7.gif -wht_tab8.gif -wht_glo_h.gif -wht_glo_n.gif -wht_fts_h.gif -wht_fts_n.gif -wht_idx_h.gif -wht_idx_n.gif -wht_toc_h.gif -wht_toc_n.gif -wht_ws.gif -wht_ws_g.gif -wht_logo1.gif -wht_logo2.gif -wht_abgw.jpg -wht_abgi.jpg -wht_abge.jpg -wht_abtw.jpg -wht_abte.jpg -wht_abti.jpg -wht_spac.gif -wht_next.gif -wht_next_g.gif -wht_prev.gif -wht_prev_g.gif -wht_sync.gif -wht_hide.gif -wht_go.gif -whstart.ico -whestart.ico -whrstart.ico -whidhtml.htm -whfdhtml.htm -whskin_banner.htm -whtbar.js -default.skn -whskin_pdhtml.htm -whskin_papplet.htm -whskin_plist.htm -whskin_tbars.htm -whskin_mbars.htm -wht_toc4.gif -wht_toc1.gif -wht_toc2.gif -wht_toc3.gif -whskin_frmset010.htm -whst_topics.xml -whskin_frmset01.htm -geom_hha.hhk -geom.hhc -geom.hhk -blocks.htm -changing_displaying_parameters.htm -files\introduction_to_geom.htm -files\salome2_sp3_basicgui_functions.htm -files\salome2_sp3_booleangui_functions.htm -files\salome2_sp3_buildgui_functions.htm -files\salome2_sp3_displaygui_functions.htm -files\salome2_sp3_generationgui_functions.htm -files\salome2_sp3_geomtoolsgui_functions.htm -files\salome2_sp3_measuregui_functions.htm -files\salome2_sp3_operationgui_functions.htm -files\salome2_sp3_primitivegui_functions.htm -files\salome2_sp3_repairgui_functions.htm -files\salome2_sp3_transformationgui_functions.htm -newentity_blocks.htm -sketcher.htm -working_with_groups.htm -geom.glo -default.css -image61.gif -image191.jpg -image180.jpg -image109.jpg -image97.jpg -image86.jpg -image75.jpg -image53.jpg -image20.jpg -files\salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image131.gif -files\salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image31.gif -image192.jpg -image181.jpg -image51.gif -image170.jpg -image98.jpg -image87.jpg -image76.jpg -image65.jpg -image54.jpg -image21.jpg -image10.jpg -files\salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image132.gif -files\salome2_sp3_repairgui_functions_salome2_sp3_repairgui_functions_image121.gif -files\salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image32.gif -image193.jpg -image182.jpg -image52.gif -image171.jpg -image160.jpg -image41.gif -image99.jpg -image88.jpg -image66.jpg -image55.jpg -image22.jpg -image11.jpg -files\salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image133.gif -files\salome2_sp3_repairgui_functions_salome2_sp3_repairgui_functions_image122.gif -files\salome2_sp3_operationgui_functions_salome2_sp3_operationgui_functions_image87.gif -image3.jpg -files\salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image33.gif -image194.jpg -image183.jpg -image53.gif -image172.jpg -image42.gif -image161.jpg -image150.jpg -image89.jpg -image78.jpg -image20.gif -image67.jpg -image56.jpg -image23.jpg -image12.jpg -files\salome2_sp3_operationgui_functions_salome2_sp3_operationgui_functions_image88.gif -files\salome2_sp3_booleangui_functions_salome2_sp3_booleangui_functions_image1.gif -files\salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image34.gif -image184.jpg -image173.jpg -image151.jpg -image32.gif -image140.jpg -image79.jpg -image21.gif -image68.jpg -image57.jpg -image24.jpg -image13.jpg -image2.gif -image5.jpg -files\salome2_sp3_operationgui_functions_salome2_sp3_operationgui_functions_image89.gif -files\salome2_sp3_booleangui_functions_salome2_sp3_booleangui_functions_image2.gif -image196.jpg -image185.jpg -image44.gif -image163.jpg -image152.jpg -image141.jpg -image130.jpg -image22.gif -image69.jpg -image58.jpg -files\salome2_sp3_displaygui_functions_salome2_sp3_displaygui_functions_image51.gif -image11.gif -image14.jpg -files\salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image56.gif -files\salome2_sp3_booleangui_functions_salome2_sp3_booleangui_functions_image3.gif -image197.jpg -image56.gif -image186.jpg -image175.jpg -image164.jpg -image142.jpg -image131.jpg -image23.gif -image120.jpg -image59.jpg -image26.jpg -image12.gif -image15.jpg -image7.jpg -image4.gif -files\salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image57.gif -files\salome2_sp3_displaygui_functions_salome2_sp3_displaygui_functions_image52.gif -files\salome2_sp3_booleangui_functions_salome2_sp3_booleangui_functions_image4.gif -salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image13.gif -image57.gif -image187.jpg -image176.jpg -image165.jpg -image154.jpg -image35.gif -image132.jpg -image24.gif -image121.jpg -image110.jpg -image27.jpg -image13.gif -image16.jpg -image8.jpg -image5.gif -files\salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image71.gif -files\salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image58.gif -files\salome2_sp3_displaygui_functions_salome2_sp3_displaygui_functions_image53.gif -files\salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image27.gif -salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image14.gif -image199.jpg -image188.jpg -image166.jpg -image144.jpg -image133.jpg -image25.gif -image122.jpg -image111.jpg -image100.jpg -image28.jpg -image14.gif -image17.jpg -image9.jpg -image6.gif -files\salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image128.gif -files\salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image72.gif -files\salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image59.gif -files\salome2_sp3_displaygui_functions_salome2_sp3_displaygui_functions_image54.gif -files\salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image28.gif -salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image15.gif -i_blue.jpg -image200.jpg -image59.gif -image189.jpg -image167.jpg -image156.jpg -image37.gif -image145.jpg -image134.jpg -image123.jpg -image112.jpg -image101.jpg -image15.gif -image29.jpg -image18.jpg -image7.gif -files\salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image129.gif -files\salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image73.gif -files\salome2_sp3_displaygui_functions_salome2_sp3_displaygui_functions_image55.gif -files\salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image29.gif -salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image16.gif -image201.jpg -image179.jpg -image49.gif -image168.jpg -image146.jpg -image135.jpg -image124.jpg -image113.jpg -image102.jpg -image90.jpg -image16.gif -image19.jpg -image8.gif -files\salome2_sp3_repairgui_functions_salome2_sp3_repairgui_functions_image119.gif -files\salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image100.gif -files\salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image74.gif -salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image17.gif -image202.jpg -image169.jpg -image158.jpg -image147.jpg -image136.jpg -image125.jpg -image103.jpg -image91.jpg -image80.jpg -image17.gif -image9.gif -files\salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image101.gif -files\salome2_sp3_operationgui_functions_salome2_sp3_operationgui_functions_image90.gif -files\salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image75.gif -salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image18.gif -image203.jpg -image29.gif -image137.jpg -image126.jpg -image115.jpg -image104.jpg -image92.jpg -image81.jpg -image70.jpg -files\salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image102.gif -files\salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image99.gif -files\salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image76.gif -salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image19.gif -image204.jpg -image149.jpg -image138.jpg -image127.jpg -image116.jpg -image105.jpg -image93.jpg -image82.jpg -image71.jpg -image19.gif -image60.jpg -files\salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image103.gif -files\salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image77.gif -image205.jpg -image139.jpg -image128.jpg -image117.jpg -image106.jpg -image94.jpg -image83.jpg -image72.jpg -image61.jpg -files\salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image78.gif -image206.jpg -image129.jpg -image118.jpg -image107.jpg -image95.jpg -image84.jpg -image73.jpg -image62.jpg -image51.jpg -image190.jpg -image119.jpg -image108.jpg -image96.jpg -image85.jpg -image74.jpg -image63.jpg -image52.jpg -files\salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image130.gif -files\salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image30.gif -ehlpdhtm.js -geom.ppf -default_ns.css -whdata\whtdata0.xml -whdata\whtdata0.htm -whdata\whftdata0.xml -whdata\whftdata0.htm -whdata\whfwdata0.xml -whdata\whfwdata0.htm -whdata\whgdata0.xml -whdata\whgdata0.htm -whgdata\whlstt0.htm -whgdata\whlstt1.htm -whgdata\whlstt2.htm -whgdata\whlstt3.htm -whgdata\whlstt4.htm -whgdata\whlsti0.htm -whgdata\whlstfl0.htm -whgdata\whlstfl1.htm -whgdata\whlstfl2.htm -whgdata\whlstfl3.htm -whgdata\whlstfl4.htm -whgdata\whlstfl5.htm -whgdata\whlstfl6.htm -whgdata\whlstfl7.htm -whgdata\whlstfl8.htm -whgdata\whlstfl9.htm -whgdata\whlstfl10.htm -whgdata\whlstfl11.htm -whgdata\whlstfl12.htm -whgdata\whlstfl13.htm -whgdata\whlstfl14.htm -whgdata\whlstfl15.htm -whgdata\whlstfl16.htm -whgdata\whlstfl17.htm -whgdata\whlstfl18.htm -whgdata\whlstfl19.htm -whgdata\whlstfl20.htm -whgdata\whlstfl21.htm -whgdata\whlstfl22.htm -whgdata\whlstf0.htm -whgdata\whlstf1.htm -whgdata\whlstf2.htm -whgdata\whlstf3.htm -whgdata\whlstf4.htm -whgdata\whlstf5.htm -whgdata\whlstg0.htm -geom.html -geom_csh.html -geom_rhc.html diff --git a/doc/salome/gui/GEOM/blocks.htm b/doc/salome/gui/GEOM/blocks.htm deleted file mode 100755 index f3b20495e..000000000 --- a/doc/salome/gui/GEOM/blocks.htm +++ /dev/null @@ -1,116 +0,0 @@ - - - - - -Building of blocks - - - - - - - - - - - -

Building of blocks

- -

 

- - - -

 

- -

 

- -

To use these options:

- -

 

- -

In the main menu select Blocks - submenu.

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- - - - diff --git a/doc/salome/gui/GEOM/changing_displaying_parameters.htm b/doc/salome/gui/GEOM/changing_displaying_parameters.htm deleted file mode 100755 index 05c0c3cb5..000000000 --- a/doc/salome/gui/GEOM/changing_displaying_parameters.htm +++ /dev/null @@ -1,246 +0,0 @@ - - - - - -Changing displaying parameters - - - - - - - - - - - -

Changing displaying parameters

- -

In GEOM you can set different - displaying parameters for visualization of geometrical objects in the - viewer:

- -

 

- - - -

 

- -

To set displaying parameters of a geometrical object:

- -

 

- -

Right-click on this geometrical object in - the viewer and from the pop-up menu select Properties.

- -

 

- -

 

- -

Wireframe/Shading

- -

 

- -

Description: - Set the display mode of the selected shape.

- -

 

- -

TUI - Command: gg.setDisplayMode(ID, Short)

- -

 

- -

Example:

- -

 

- -

 

- -

 

- -

 

- -

Color

- -

 

- -

Description: - Change the color of a shape.

- -

 

- -

TUI Command: - gg.setColor(ID, Short, Short, Short)

- -

 

- -

Example:

- -

 

- -

 

- -

 

- -

 

- -

 

- -

Transparency

- -

 

- -

Description: - Change the transparency (between 0 & 1) of a shape.

- -

 

- -

TUI Command: - gg.setTransparency(ID, Double)

- -

 

- -

Dialog Box:

- -

 

- -

- -

 

- -

Example:

- -

 

- -

 

- -

 

- -

Isos

- -

 

- -

Description: - Changes the number of isolines displayed within a shape.

- -

 

- -

Arguments: - 2 values (number of isolines).

- -

 

- -

Dialog Box:

- -

 

- -

- -

 

- -

Example:

- -

 

- -

 

- -

 

- - - - diff --git a/doc/salome/gui/GEOM/cshdat_robohelp.htm b/doc/salome/gui/GEOM/cshdat_robohelp.htm deleted file mode 100755 index afb68b6ee..000000000 --- a/doc/salome/gui/GEOM/cshdat_robohelp.htm +++ /dev/null @@ -1,258 +0,0 @@ - - -GEOM reference manual - - - - - - - - - - - - - - - - - diff --git a/doc/salome/gui/GEOM/cshdat_webhelp.htm b/doc/salome/gui/GEOM/cshdat_webhelp.htm deleted file mode 100755 index 2d66f403c..000000000 --- a/doc/salome/gui/GEOM/cshdat_webhelp.htm +++ /dev/null @@ -1,251 +0,0 @@ - - -GEOM reference manual - - - - - - - - - - - - - - - - - diff --git a/doc/salome/gui/GEOM/default.css b/doc/salome/gui/GEOM/default.css deleted file mode 100755 index de2e5d955..000000000 --- a/doc/salome/gui/GEOM/default.css +++ /dev/null @@ -1,101 +0,0 @@ -BODY { - background-color:#ffffff; - font-family:"Times New Roman" , serif; } -H1 { - font-weight:bold; - font-size:24.0pt; } -LI.kadov-H1 { - font-weight:bold; - font-size:24.0pt; } -H2 { - font-weight:bold; - font-size:18.0pt; } -LI.kadov-H2 { - font-weight:bold; - font-size:18.0pt; } -H3 { - font-weight:bold; - font-size:14.0pt; } -LI.kadov-H3 { - font-weight:bold; - font-size:14.0pt; } -H4 { - font-weight:bold; - font-size:12.0pt; } -LI.kadov-H4 { - font-weight:bold; - font-size:12.0pt; } -H5 { - font-weight:bold; - font-size:10.0pt; } -LI.kadov-H5 { - font-weight:bold; - font-size:10.0pt; } -H6 { - font-weight:bold; - font-size:8.0pt; } -LI.kadov-H6 { - font-weight:bold; - font-size:8.0pt; } -P { - font-size:12.0pt; - margin-top:0pt; - margin-bottom:0pt; } -LI.kadov-P { - font-size:12.0pt; } -A.expandspot { - color:#008000; - cursor:hand; - font-style:italic; - x-text-underline:off; - x-text-overline:off; - x-text-line-through:off; - text-decoration:none none none; } -SPAN.expandtext { - font-style:italic; - font-weight:normal; - color:#ff0000; } -A.dropspot { - cursor:hand; - color:#008000; - font-style:italic; - x-text-underline:off; - x-text-overline:off; - x-text-line-through:off; - text-decoration:none none none; } -A.glossterm { - color:#800000; - cursor:hand; - font-style:italic; - x-text-underline:off; - x-text-overline:off; - x-text-line-through:off; - text-decoration:none none none; } -SPAN.glosstext { - font-style:italic; - font-weight:normal; - color:#0000ff; } -OL { - margin-top:0px; - margin-bottom:0px; } -UL { - margin-top:0px; - margin-bottom:0px; } -A:active { } -A:hover { - x-text-underline:Off; - text-decoration:none; } -A:link { - x-text-underline:Off; - text-decoration:none; } -A:visited { - x-text-underline:Off; - text-decoration:none; } -P.TODO { - font-weight:normal; - font-style:italic; - font-family:"Arial Black" , sans-serif; } -LI.kadov-P-CTODO { - font-weight:normal; - font-style:italic; - font-family:"Arial Black" , sans-serif; } diff --git a/doc/salome/gui/GEOM/default.skn b/doc/salome/gui/GEOM/default.skn deleted file mode 100755 index f162a6624..000000000 --- a/doc/salome/gui/GEOM/default.skn +++ /dev/null @@ -1,262 +0,0 @@ - - - - Default - Contents - font-family:Arial font-size:8pt font-weight:normal font-style:normal text-decoration:none font-sizeadjust:none font-stretch:normal font-variant:normal - - - - - - - - - - - - - -]]> - - - - - - - - - - - - - - background:#99ccff - font-family:Tahoma font-size:8pt font-weight:Normal font-style:Normal text-decoration:none font-sizeadjust:none font-stretch:normal font-variant:normal font-color:Black - - background:#639ace - font-family:Tahoma font-size:8pt font-weight:Normal font-style:Normal text-decoration:none font-sizeadjust:none font-stretch:normal font-variant:normal font-color:White - - left - - Contents - ::??DefaultWebSkinText??:: - - - default - - - - default - - - - - Index - ::??DefaultWebSkinText??:: - - - default - - - - default - - - - - Search - ::??DefaultWebSkinText??:: - - - default - - - - default - - - - - Glossary - ::??DefaultWebSkinText??:: - - - default - - - - default - - - - - WebSearch - ::??DefaultWebSkinText??:: - - - default - - - - default - - - - - Search Input - - - - - <text></text> - - - - - Logo - - eHelp Corporation - - - - - background:#99ccff - font-family:Tahoma font-size:8pt font-weight:Normal font-style:Normal text-decoration:none font-sizeadjust:none font-stretch:normal font-variant:normal font-color:Black - - background:#639ace - font-family:Tahoma font-size:8pt font-weight:Normal font-style:Normal text-decoration:none font-sizeadjust:none font-stretch:normal font-variant:normal font-color:White - - - Previous - ::??DefaultWebSkinText??:: - - - default - - - - default - - - - - Next - ::??DefaultWebSkinText??:: - - - default - - - - default - - - - - Sync TOC - ::??DefaultWebSkinText??:: - - - default - - - - default - - - - - Hide - ::??DefaultWebSkinText??:: - - - default - - - - default - - - - - - - - - - - background:White alink:Silver hover-color:Navy - font-family:Tahoma font-size:8pt font-weight:Normal font-style:Normal text-decoration:none font-sizeadjust:none font-stretch:normal font-variant:normal font-color:Black - - - - background:White alink:Silver hover-color:Navy - font-family:Tahoma font-size:8pt font-weight:Normal font-style:Normal text-decoration:none font-sizeadjust:none font-stretch:normal font-variant:normal font-color:Black - - - background:White - - - <text>::??DefaultWebSkinText??::</text> - <font>font-family:Tahoma font-size:8pt font-weight:Normal font-style:Normal text-decoration:none font-sizeadjust:none font-stretch:normal font-variant:normal font-color:Navy</font> - - - - - - - background:White alink:Silver hover-color:Navy - font-family:Tahoma font-size:8pt font-weight:Normal font-style:Normal text-decoration:none font-sizeadjust:none font-stretch:normal font-variant:normal font-color:Black - - - background:White - - - <text>::??DefaultWebSkinText??::</text> - <font>font-family:Tahoma font-size:8pt font-weight:Normal font-style:Normal text-decoration:none font-sizeadjust:none font-stretch:normal font-variant:normal font-color:Navy</font> - - - - - - - background:White alink:Silver hover-color:Navy - font-family:Tahoma font-size:8pt font-weight:Normal font-style:Normal text-decoration:none font-sizeadjust:none font-stretch:normal font-variant:normal font-color:Black - - ::??DefaultWebSkinText??:: - font-family:Tahoma font-size:8pt font-weight:Normal font-style:Normal text-decoration:none font-sizeadjust:none font-stretch:normal font-variant:normal font-color:Navy - background:White - - - - ::??DefaultWebSkinText??:: - - - - - ::??DefaultWebSkinText??:: - font-family:Tahoma font-size:8pt font-weight:Normal font-style:Normal text-decoration:none font-sizeadjust:none font-stretch:normal font-variant:normal font-color:Navy - background:White - - - - ::??DefaultWebSkinText??:: - - - - - - - - none - - - diff --git a/doc/salome/gui/GEOM/default_ns.css b/doc/salome/gui/GEOM/default_ns.css deleted file mode 100755 index 3eeb3c496..000000000 --- a/doc/salome/gui/GEOM/default_ns.css +++ /dev/null @@ -1,118 +0,0 @@ -BODY { - background-color:#ffffff; - font-family:"Times New Roman" , serif; } -H1 { - font-weight:bold; - font-size:24.0pt; - font-family:"Times New Roman" , serif; } -LI.kadov-H1 { - font-weight:bold; - font-size:24.0pt; } -H2 { - font-weight:bold; - font-size:18.0pt; - font-family:"Times New Roman" , serif; } -LI.kadov-H2 { - font-weight:bold; - font-size:18.0pt; } -H3 { - font-weight:bold; - font-size:14.0pt; - font-family:"Times New Roman" , serif; } -LI.kadov-H3 { - font-weight:bold; - font-size:14.0pt; } -H4 { - font-weight:bold; - font-size:12.0pt; - font-family:"Times New Roman" , serif; } -LI.kadov-H4 { - font-weight:bold; - font-size:12.0pt; } -H5 { - font-weight:bold; - font-size:10.0pt; - font-family:"Times New Roman" , serif; } -LI.kadov-H5 { - font-weight:bold; - font-size:10.0pt; } -H6 { - font-weight:bold; - font-size:8.0pt; - font-family:"Times New Roman" , serif; } -LI.kadov-H6 { - font-weight:bold; - font-size:8.0pt; } -P { - font-size:12.0pt; - margin-top:1pt; - margin-bottom:1pt; - font-family:"Times New Roman" , serif; } -LI.kadov-P { - font-size:12.0pt; } -A.expandspot { - color:#008000; - cursor:hand; - font-style:italic; - x-text-underline:off; - x-text-overline:off; - x-text-line-through:off; - text-decoration:none none none; } -SPAN.expandtext { - font-style:italic; - font-weight:normal; - color:#ff0000; } -A.dropspot { - cursor:hand; - color:#008000; - font-style:italic; - x-text-underline:off; - x-text-overline:off; - x-text-line-through:off; - text-decoration:none none none; } -A.glossterm { - color:#800000; - cursor:hand; - font-style:italic; - x-text-underline:off; - x-text-overline:off; - x-text-line-through:off; - text-decoration:none none none; } -SPAN.glosstext { - font-style:italic; - font-weight:normal; - color:#0000ff; } -OL { - margin-top:0px; - margin-bottom:0px; - font-family:"Times New Roman" , serif; } -UL { - margin-top:0px; - margin-bottom:0px; - font-family:"Times New Roman" , serif; } -A:active { } -A:hover { - x-text-underline:Off; - text-decoration:none; } -A:link { - x-text-underline:Off; - text-decoration:none; } -A:visited { - x-text-underline:Off; - text-decoration:none; } -P.TODO { - font-weight:normal; - font-style:italic; - font-family:"Arial Black" , sans-serif; } -LI.kadov-P-CTODO { - font-weight:normal; - font-style:italic; - font-family:"Arial Black" , sans-serif; } -ol ol { - margin-top:1px; } -ol ul { - margin-top:1px; } -ul ul { - margin-top:1px; } -ul ol { - margin-top:1px; } diff --git a/doc/salome/gui/GEOM/ehelp.xml b/doc/salome/gui/GEOM/ehelp.xml deleted file mode 100755 index 190aa2369..000000000 --- a/doc/salome/gui/GEOM/ehelp.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - WebSearch - - \ No newline at end of file diff --git a/doc/salome/gui/GEOM/ehlpdhtm.js b/doc/salome/gui/GEOM/ehlpdhtm.js deleted file mode 100755 index 6cfd2e463..000000000 --- a/doc/salome/gui/GEOM/ehlpdhtm.js +++ /dev/null @@ -1,4239 +0,0 @@ -// eHelp® Corporation Dynamic HTML JavaScript -// Copyright© 1998-2003 eHelp® Corporation.All rights reserved. -// Version=4.82 - -// Warning:Do not modify this file.It is generated by RoboHELP® and changes will be overwritten. - -//// Segment Begin -- (JavaScript 1.0) - -/// Section Begin - General and relative topics(JavaScript 1.0) - -//{{HH_SYMBOL_SECTION -var HH_ChmFilename = ""; -var HH_WindowName = ""; -var HH_GlossaryFont = ""; -var HH_Glossary = ""; -var HH_Avenue = ""; -var HH_ActiveX = false; -//}}HH_SYMBOL_SECTION - -//Begin to support previous generic parameters -//Get the information about the browser. -var gstrBsAgent = navigator.userAgent.toLowerCase(); -var gnBsVer = parseInt(navigator.appVersion); - -var gbBsOpera = (gstrBsAgent.indexOf('opera') != -1); -var gbBsKonqueror = (gstrBsAgent.indexOf('konqueror') != -1); -var gbBsSafari = (gstrBsAgent.indexOf('safari') != -1); -var gbBsIE = (gstrBsAgent.indexOf('msie') != -1) && !gbBsOpera && !gbBsKonqueror && !gbBsSafari; -var gbBsNS = (gstrBsAgent.indexOf('mozilla') != -1) && ((gstrBsAgent.indexOf('spoofer') == -1) && (gstrBsAgent.indexOf('compatible') == -1)) && !gbBsOpera && !gbBsKonqueror && !gbBsSafari; - -var gbBsMac = (gstrBsAgent.indexOf('mac') != -1); -var gbBsWindows = ((gstrBsAgent.indexOf('win') != -1) || (gstrBsAgent.indexOf('16bit') != -1)); -var gbBsSunOS = (gstrBsAgent.indexOf("sunos") != -1); - -var gbBsIE3Before = ((gbBsIE) && (gnBsVer <= 2)); -var gbBsNS3Before = ((gbBsNS) && (gnBsVer <= 3)); - -var gbBsNS2 = ((gbBsNS) && (gnBsVer <= 2)); -var gbBsNS3 = ((gbBsNS) && (gnBsVer == 3)); -var gbBsIE300301 = ((gbBsIE) && (gnBsVer == 2) && ((gstrBsAgent.indexOf("3.00") != -1)||(gstrBsAgent.indexOf("3.0a") != -1)||(gstrBsAgent.indexOf("3.0b")!=-1)||(gstrBsAgent.indexOf("3.01")!=-1))); -var gbBsIE302 = ((gbBsIE) && (gnBsVer == 2) && (gstrBsAgent.indexOf("3.02") != -1)); - -var gbBsNS4 = ((gbBsNS) && (gnBsVer >= 4)); -var gbBsNS6 = ((gbBsNS) && (gnBsVer >= 5)); -var gbBsNS7 = false; - -var gbBsIE4 = ((gbBsIE) && (gnBsVer >= 4)); -var gbBsIE5 = false; -var gbBsIE55 = false; - -var gbBsOpera6 = false; -var gbBsOpera7 = false; - -var gbBsKonqueror3 = false; - - - -gbBsIE = (navigator.appName.indexOf("Microsoft") != -1) && !gbBsOpera && !gbBsKonqueror && !gbBsSafari;; -if (gbBsIE) -{ - if (parseInt(navigator.appVersion) >= 4) { - gbBsIE4 = true; - if (gbBsIE4) { - var nPos = gstrBsAgent.indexOf("msie"); - var strIEversion = gstrBsAgent.substring(nPos + 5); - var nVersion = parseFloat(strIEversion); - if (nVersion >= 5) - gbBsIE5 = true; - if (nVersion >= 5.5) - gbBsIE55 = true; - } - } -} -if (gbBsNS6) -{ - var nPos=gstrBsAgent.indexOf("gecko"); - if(nPos!=-1) - { - var nPos2=gstrBsAgent.indexOf("/", nPos); - if(nPos2!=-1) - { - var nVersion=parseFloat(gstrBsAgent.substring(nPos2+1)); - if (nVersion>=20020823) - gbBsNS7=true; - } - } -} -if (gbBsOpera) -{ - var nPos = gstrBsAgent.indexOf("opera"); - if(nPos!=-1) - { - var nVersion = parseFloat(gstrBsAgent.substring(nPos+6)); - if (nVersion >= 6) - { - gbBsOpera6=true; - if (nVersion >=7) - gbBsOpera7=true; - } - } -} -if (gbBsKonqueror) -{ - var nPos = gstrBsAgent.indexOf("konqueror"); - if(nPos!=-1) - { - var nVersion = parseFloat(gstrBsAgent.substring(nPos+10)); - if (nVersion >= 3) - { - gbBsKonqueror3=true; - } - } -} - -function insertAdjacentHTML(obj, where, htmlStr) -{ - if (gbBsIE || gbBsOpera7) - { - obj.insertAdjacentHTML(where, htmlStr); - } - else if (gbBsNS6 || gbBsSafari) - { - var r = obj.ownerDocument.createRange(); - r.setStartBefore(obj); - var parsedHTML = r.createContextualFragment(htmlStr); - - switch (where){ - case 'beforeBegin': - obj.parentNode.insertBefore(parsedHTML,obj); - break; - case 'afterBegin': - obj.insertBefore(parsedHTML,obj.firstChild); - break; - case 'beforeEnd': - obj.appendChild(parsedHTML); - break; - case 'afterEnd': - if (obj.nextSibling){ - obj.parentNode.insertBefore(parsedHTML,obj.nextSibling); - } else { - obj.parentNode.appendChild(parsedHTML); - } - break; - } - } -} - -// Utilities functions. -function BsscHasExtJs() -{ - if( gbBsIE3Before || gbBsNS3Before) - return false; - return true; -} - -// Register event handler -var gBsOnLoads = new Array(); // An array holds all the onload event handler. -var gBsOnClicks = new Array(); // An array holds all the onClick event handler. -var gBsOnUnLoads = new Array(); // An array holds all the OnUnLoad event handler. -var gBsOnMouseOvers = new Array(); // An array holds all the OnMouseOver event handler. -var gBsOnMouseOuts = new Array(); // An array holds all the OnMouseOut event handler. - -var gbOrignalOnMouseDown = null; - -function BsscRegisterOnLoad(funcHandler) -{ - var nLength = gBsOnLoads.length; - gBsOnLoads[nLength] = funcHandler; -} - -function BsscRegisterOnClick(funcHandler) -{ - var nLength = gBsOnClicks.length; - gBsOnClicks[nLength] = funcHandler; -} - -function BsscRegisterOnUnLoad(funcHandler) -{ - var nLength = gBsOnUnLoads.length; - gBsOnUnLoads[nLength] = funcHandler; -} - -function BsscRegisterOnMouseOver(funcHandler) -{ - var nLength = gBsOnMouseOvers.length; - gBsOnMouseOvers[nLength] = funcHandler; -} - -function BsscRegisterOnMouseOut(funcHandler) -{ - var nLength = gBsOnMouseOuts.length; - gBsOnMouseOuts[nLength] = funcHandler; -} - -function BsGeneralOnLoad() -{ - if (!gbBsIE4 && !gbBsNS4) - return; - - // Make everything visible in navigator - if (gbBsNS4 && !gbBsNS6) { - // Make some special effects items visible - for (var iLayer = 0; iLayer < document.layers.length; iLayer++) { - document.layers[iLayer].visibility = "show"; - document.layers[iLayer].left = 0; - } - } -} - -// If resize the netscape browser, need to reload it. -function BsReDo() -{ - if (innerWidth != origWidth || innerHeight != origHeight) - location.reload(); -} -// End of the local functions. - -// The following functions are used by the html files. -function BSSCOnLoad() -{ - if( !BsscHasExtJs() ) - return; - for (var nElement = gBsOnLoads.length - 1; nElement >= 0; nElement--) - gBsOnLoads[nElement](); -} - -function BSSCOnClick() -{ - if (!BsscHasExtJs()) return; - - for (var nElement = gBsOnClicks.length - 1; nElement >= 0; nElement--) - gBsOnClicks[nElement](); -} - -function BSSCOnUnload() -{ - if (!BsscHasExtJs()) return; - for (var nElement = gBsOnUnLoads.length - 1; nElement >= 0; nElement--) - gBsOnUnLoads[nElement](); -} - -function BSSCOnMouseOver() -{ - if (!BsscHasExtJs()) return; - for (var nElement = gBsOnMouseOvers.length - 1; nElement >= 0; nElement--) - gBsOnMouseOvers[nElement](); -} - -function BSSCOnMouseOut() -{ - if (!BsscHasExtJs()) return; - for (var nElement = gBsOnMouseOuts.length - 1; nElement >= 0; nElement--) - { - gBsOnMouseOuts[nElement](); - } -} -// End of invocation of the event handle functions. - -// Add the GereralOnLoad to the onload array. -if (typeof(BsscRegisterOnLoad) != "undefined") -{ - BsscRegisterOnLoad(BsGeneralOnLoad); -} -if (gbBsNS4&&!gbBsNS6) { - origWidth = innerWidth; - origHeight = innerHeight; - onresize = BsReDo; -} -//End to support previous generic parameters - -//Begin to support previous HHActiveX invoking -function BsHHActivateComponents() -{ - if( HH_ActiveX && (HH_ChmFilename != "") && ((self == top) || (self == top.frames[0]))) - { - var objBody = getElementsByTag(document,"BODY")[0]; - if( typeof(objBody) == "object" ) - { - insertAdjacentHTML(objBody, "beforeEnd", ''); - if (HHComponentActivator.object) - HHComponentActivator.Activate(HH_ChmFilename, HH_WindowName, HH_GlossaryFont, HH_Glossary, HH_Avenue); - } - } -} - -function BsHHActivXOnLoad() -{ - if( gbBsIE4 ) - BsHHActivateComponents(); -} - -if( typeof(BsscRegisterOnLoad) != "undefined" ) -{ - BsscRegisterOnLoad(BsHHActivXOnLoad); -} -//End to support previous HHActiveX invoking - -//Begin to support previous relative topics -//If webHelp needs Related Topics DHTMLcode, it's supposed to add it here -var gbPopupMenuTimeoutExpired = false; -var gbInPopupMenu = false; -var gbPopupMenuTopicList = null; -var gOlddocumentClick = null; - -////////////////////////////////////////////////////////////////////////////////////////// -// -// Popup Menu code -// -////////////////////////////////////////////////////////////////////////////////////////// - -var g_bIsPopupMenuInit = false; -function _WritePopupMenuLayer() -{ - if (!g_bIsPopupMenuInit) - { - if (gbBsNS4&&!gbBsNS6) { -//Do not try to write ininle styles for NS! NS can not handle it and will not stop downloading the html page... - document.write("
"); - } else{ - document.write(""); - if (!(gbBsNS4&&!gbBsNS6)) { - document.write(""); - } - } - g_bIsPopupMenuInit = true; - } -} - -//Seek for the bsscright frame -function _SeekFrameByName( cRoot, strName ) -{ - if( cRoot == null ) return null; - if( cRoot.frames == null ) return null; - if( cRoot.frames[strName] != null ) return cRoot.frames[strName]; - for (var i=0; i'; - } else { - strMenu += '' + gbPopupMenuTopicList[fn_arguments[i]].strTitle + ''; - } - strMenu += ''; - - if (isNaN(fn_arguments[i]) || (gbPopupMenuTopicList == null)) { - i += 2; - } else { - i += 1; - } - } - strMenu += ""; - - if (gbBsMac) { - // totally hack. because ie5 in mac need something. is one of them. mac is mad. - strMenu +="
"; - } - - var layerPopup = null; - var stylePopup = null; - var nEventX = 0; - var nEventY = 0; - var nWindowWidth = 0; - if (gbBsIE4 || gbBsOpera7) { - - layerPopup = getElement("PopupMenu"); - layerPopup.innerHTML = strMenu; - stylePopup = layerPopup.style; - - _BSPSGetClientSize(); - - // Get the position of the item causing the event (relative to its parent) - nEventX = window.event.clientX; - nEventY = window.event.clientY; - - if (nEventY + layerPopup.scrollHeight + 10 < gBsClientHeight) { - nEventY += document.body.scrollTop + 10; - } else { - nEventY = (document.body.scrollTop + gBsClientHeight) - layerPopup.scrollHeight - 20; - } - stylePopup.top = nEventY; - - var nPopupWidth = layerPopup.scrollWidth; - if (gbBsMac) { - nPopupWidth = 80; // we have no idea how to get the dynamic width of the popup. - } - if (nEventX + nPopupWidth + 20 > gBsClientWidth) { - if (gBsClientWidth - nPopupWidth < 5) { - stylePopup.left = 5; - } else { - stylePopup.left = gBsClientWidth - nPopupWidth - 5; - } - } else { - stylePopup.left = nEventX + document.body.scrollLeft + 20; - } - - stylePopup.visibility = "visible"; - if (!gOlddocumentClick && document.onclick) - gOlddocumentClick = document.onclick; - document.onclick = PopupMenu_HandleClick; - - } else if (gbBsNS6 || gbBsKonqueror3||gbBsSafari) { - layerPopup = getElement("PopupMenu"); - layerPopup.style.visibility = "hidden"; - - if (gbBsNS6) - { - var e = fn_arguments[0]; - nEventX = e.pageX; - nEventY = e.pageY; - } - else - { - nEventX = window.event.clientX; - nEventY = window.event.clientY; - } - _BSPSGetClientSize(); - layerPopup.innerHTML = strMenu; - - if (nEventY + layerPopup.offsetHeight + 20 < window.pageYOffset + gBsClientHeight) { - nEventY += 20; - } else { - nEventY = gBsClientHeight + window.pageYOffset - layerPopup.offsetHeight - 20; - } - - if (nEventX + layerPopup.offsetWidth + 20 > gBsClientWidth + window.pageXOffset) { - if (gBsClientWidth + window.pageXOffset - layerPopup.offsetWidth < 20) { - nEventX = 5; - } else { - nEventX = gBsClientWidth + window.pageXOffset - layerPopup.offsetWidth - 20; - } - } else { - nEventX += 20; - } - layerPopup.style.top = nEventY; - layerPopup.style.left = nEventX; - // set again to avoid the stupid frash in netscape 6. - layerPopup.innerHTML = strMenu; - layerPopup.style.visibility = "visible"; - //window.captureEvents(Event.MOUSEDOWN); - if (!gOlddocumentClick && document.onclick) - gOlddocumentClick = document.onclick; - window.onclick = PopupMenu_HandleClick; - } - else if (gbBsNS4) { - layerPopup = document.layers.PopupMenu; - layerPopup.visibility = "hide"; - stylePopup = layerPopup.document; - stylePopup.write(strMenu); - stylePopup.close(); - var e = fn_arguments[0]; - nEventX = e.pageX; - nEventY = e.pageY; - _BSPSGetClientSize(); - if (nEventY + layerPopup.clip.height + 20 < window.pageYOffset + gBsClientHeight) { - nEventY += 20; - } else { - nEventY = gBsClientHeight + window.pageYOffset- layerPopup.clip.height - 20; - } - layerPopup.top = nEventY; - - if (nEventX + layerPopup.clip.width + 20 > gBsClientWidth + window.pageXOffset) { - if (gBsClientWidth + window.pageXOffset - layerPopup.clip.width < 20) { - nEventX = 5; - } else { - nEventX = gBsClientWidth + window.pageXOffset - layerPopup.clip.width - 20; - } - } else { - nEventX += 20; - } - - layerPopup.left = nEventX; - - layerPopup.visibility = "show"; - - window.captureEvents(Event.MOUSEDOWN); - if (!gOlddocumentClick && document.onmousedown) - gOlddocumentClick = document.onmousedown; - window.onmousedown = PopupMenu_HandleClick; - } - - window.gbInPopupMenu = true; - window.gbPopupMenuTimeoutExpired = false; - setTimeout("PopupMenu_Timeout();", 100); - return false; -} - -function PopupMenu_Timeout() -{ - window.gbPopupMenuTimeoutExpired = true; -} - -function PopupMenu_Over(e) -{ - if (gbBsIE4||gbBsOpera7) - e.srcElement.className = "PopupOver"; - else if (gbBsNS6) - e.target.parentNode.className = "PopupOver"; - return; -} - -function PopupMenu_Out(e) -{ - if (gbBsIE4||gbBsOpera7) - e.srcElement.className = "PopupNotOver"; - else if (gbBsNS6) - e.target.parentNode.className = "PopupNotOver"; - return; -} - -function PopupMenu_HandleClick(e) -{ - if (window.gbPopupMenuTimeoutExpired) { - window.gbInPopupMenu = false; - if (gbBsNS4 && !gbBsNS6) { - window.releaseEvents(Event.MOUSEDOWN); - } - - var layerPopup = null; - if (gbBsNS4&&!gbBsNS6) { - layerPopup = document.layers.PopupMenu; - layerPopup.visibility = "hide"; - } else { - layerPopup = getElement("PopupMenu"); - layerPopup.style.visibility = "hidden"; - } - - if (gOlddocumentClick) - { - if (gbBsNS4 && !gbBsNS6) - document.onmousedown = gOlddocumentClick; - else - document.onclick = gOlddocumentClick; - } - } - return; -} - -function BSSCPopup_ClickMac() -{ - if ((!DHTMLPopupSupport()) && (gbBsIE4 || gbBsOpera7)) - { - var bClickOnAnchor = false; - var el; - if ((window.event != null) && - (window.event.srcElement != null)) - { - el = window.event.srcElement; - while (el != null) - { - if ((el.tagName == "A") || (el.tagName == "AREA")) { - bClickOnAnchor = true; - break; - } - if (el.tagName == "BODY") { - break; - } - el = getParentNode(el); - } - } - if (BSSCPopup_IsPopup()) - { - if (!bClickOnAnchor) { - parent.window.gPopupWindow = null; - self.close(); - } - } - else - { - bClosePopupWindow = true; - if ((bClickOnAnchor) && - (el.href) && - ((el.href.indexOf("javascript:BSSCPopup") != -1) || (el.href.indexOf("javascript:null") != -1) || (el.href.indexOf("javascript:void(0)") != -1))) - { - bClosePopupWindow = false; - } - if (bClosePopupWindow) - { - if (window.gPopupWindow != null && !window.gPopupWindow.closed ) - { - window.gPopupWindow.close(); - } - } - } - } -} - -function BsPopupOnClick() -{ - if (!gbBsIE4 && !gbBsOpera7) - return; - - BSSCPopup_ClickMac(); -} - -function _BSSCOnError(message) -{ - if(-1 != message.indexOf("denied") - || -1 != message.indexOf("Object required")) - return true; -} - -//End to support previous relative topics - -/// Section End - General and relative topics (JavaScript 1.0) - -/// Section Begin - Popup (JavaScript 1.0) -//Begin to support previous popup functions - -//variables used to isolate the browser type -var gBsStyVisShow = null; -var gBsStyVisHide = null; -var gBsClientWidth = 640; -var gBsClientHeight = 480; - -// here is the varible for judge popup windows size. these parameter is for IE5.0, it may need adjust for others. -var gBRateH_W = 0.618; // 1.618 Golden cut. -var gBMaxXOfParent = 0.8; -var gBMaxYOfParent = 0.8; -var gBscrollHeight = 16; -var gBscrollWidth = 16; -var gBpermitXDelta = 3; -var gBpermitYDelta = 3; - - -var arrayPopupURL = new Array(); -var arrayAbsPopupURL = new Array(); - -var arrayDirty = new Array(); - -function setAbsPopupURL(nIndex, strURL) -{ - arrayAbsPopupURL[nIndex] = strURL; -} - -function getAbsPopupURL(nIndex) -{ - if (nIndex == -1 || arrayAbsPopupURL.length <= nIndex) return null; - else - return arrayAbsPopupURL[nIndex]; -} - -function getPopupURL(nIndex) -{ - if (nIndex == -1 || arrayPopupURL.length <= nIndex) return null; - else - return arrayPopupURL[nIndex]; -} - -function getPopupID(nIndex) -{ - return gstrPopupID + nIndex; -} - -function getPopupShadowID(nIndex) -{ - return gstrPopupShadowID + nIndex; -} - -function getPopupTopicID(nIndex) -{ - return gstrPopupTopicID + nIndex; -} - -function getPopupIFrameID(nIndex) -{ - return gstrPopupIFrameID + nIndex; -} - -function getPopupIFrameName(nIndex) -{ - return gstrPopupIFrameName + nIndex; -} - - -function getPopupTopicStyle(nIndex) -{ - return getElement(getPopupTopicID(nIndex)).style; -} - -function getPopupShadowStyle(nIndex) -{ - return getElement(getPopupShadowID(nIndex)).style; -} - -function getPopupIFrame(nIndex) -{ - if (gbBsNS6) - return eval("window.frames['" + getPopupIFrameName(nIndex) + "']"); - else - return eval("document.frames['" + getPopupIFrameName(nIndex) + "']"); -} - -function getPopupDivStyle(nIndex) -{ - return getElement(getPopupID(nIndex)).style; -} - -function getPopupIFrameStyle(nIndex) -{ - return getElement(getPopupIFrameID(nIndex)).style; -} - - -function findDiv(strURL) -{ - for (var i = 0; i < arrayPopupURL.length; i ++ ) { - if (arrayPopupURL[i] == strURL) { - return i; - } - } - return -1; -} - -var gnToken = -1; -function takeToken() -{ - gnToken ++; - if (gnToken > 10000) gnToken = 0; - return gnToken; -} - -function IsValidToken(nToken) -{ - return (gnToken == nToken); -} - -function addDiv(strURL) -{ - for (var i = 0; i < arrayPopupURL.length; i ++) { - if (arrayPopupURL[i] == null) { - arrayPopupURL[i] = strURL; - return i; - } - } - arrayPopupURL[i] = strURL; - arrayDirty[i] = true; - return i; -} - -function setDirty() -{ - for (var i = 0; i < arrayPopupURL.length; i ++ ) - arrayDirty[i] = true; -} - -function IsDirty(nIndex) -{ - if (nIndex == -1) - return true; - else - if (arrayDirty.length > nIndex) - return arrayDirty[nIndex]; - else - return true; -} - -function hideAll() -{ - for (var i = 0; i < arrayPopupURL.length; i ++ ) - { - getPopupDivStyle(i).visibility = gBsStyVisHide; - getPopupIFrameStyle(i).visibility = gBsStyVisHide; - } -} - -function getCurrentPopupIFrame() -{ - for (var i = 0; i < arrayPopupURL.length; i ++) - if (getPopupDivStyle(i).visibility == gBsStyVisShow) - return getPopupIFrame(i); - return null; -} - -function setClear(nIndex) -{ - if (nIndex != -1) - arrayDirty[nIndex] = false; -} - -function _BSSCCreatePopupDiv(strURL) -{ - var nIndex = findDiv(strURL); - if (nIndex == -1 ) { - nIndex = addDiv(strURL); - BsPopup_CreateDiv(nIndex); - } - else { - if (IsDirty(nIndex)) { - if("object" == typeof(getPopupIFrame(nIndex).document)) - getPopupIFrame(nIndex).document.location.href = strURL; - } - } - return nIndex; -} - -//Here is the browser type -function _BSPSGetBrowserInfo() -{ - if (gbBsNS4&&!gbBsNS6) - { - gBsStyVisShow = "show"; - gBsStyVisHide = "hide"; - } - else - { - gBsStyVisShow = "visible"; - gBsStyVisHide = "hidden"; - } -} - -_BSPSGetBrowserInfo(); - -//Get client size info -function _BSPSGetClientSize() -{ - if (gbBsNS4||gbBsKonqueror3||gbBsSafari) - { - gBsClientWidth = innerWidth; - gBsClientHeight = innerHeight; - } - else if (gbBsIE4 || gbBsOpera7) - { - gBsClientWidth = document.body.clientWidth; - gBsClientHeight = document.body.clientHeight; - } -} - -var gstrPopupID = 'BSSCPopup'; -var gstrPopupShadowID = 'BSSCPopupShadow'; -var gstrPopupTopicID = 'BSSCPopupTopic'; -var gstrPopupIFrameID = 'BSSCPopupIFrame'; -var gstrPopupIFrameName = 'BSSCPopupIFrameName'; - -var gstrPopupSecondWindowName = 'BSSCPopup'; - -var gPopupWindow = null; -var gnPopupClickX = 0; -var gnPopupClickY = 0; - -var gnPopupScreenClickX = 0; -var gnPopupScreenClickY = 0; - -var gbPopupTimeoutExpired = false; - -function DHTMLPopupSupport() -{ - if (((gbBsIE4) && (!gbBsMac))||gbBsOpera7|| gbBsNS7) { - return true; - } - return false; -} - -function BSSCPopup_IsPopup() -{ - if (DHTMLPopupSupport() && (this.name.indexOf(gstrPopupIFrameName) != -1)) { - return true; - } else if ((gbBsNS4 || gbBsIE4 || gbBsOpera7) && (this.name.indexOf(gstrPopupID) != -1)) { - return true; - } else { - return false; - } -} - -// If there is a hyperlink in a popup window, display the hyperlink in -// the original window. (bsscright) -if (BSSCPopup_IsPopup() && !gbBsIE4 && !gbBsOpera7) { - document.write(""); -} - -// Local functions. -function BsPopup_CreateDiv(nIndex) -{ - if(!DHTMLPopupSupport()) - return; - // DO NOT SET Width and height for the div, otherwize it will make IE4 popup do not work when view the topic alone. - var strPopupDiv = ""; - - var objBody = getElementsByTag(document, "BODY")[0]; - if( typeof(objBody) != "object" ) - return; - - insertAdjacentHTML(objBody, "beforeEnd", strPopupDiv); -} - -function handleLoadNS() -{ - if (this.id) - { - var nIndex = parseInt(this.id.substring(gstrPopupIFrameID.length)); - BSSCPopup_PostWork(nIndex); - } -} - -function BSSCPopup_PostWork(nIndex) -{ - getPopupDivStyle(nIndex).visibility = gBsStyVisShow; - getPopupIFrameStyle(nIndex).visibility =gBsStyVisShow; - - setClear(nIndex); - window.gbPopupTimeoutExpired = true; - - BSSCPopup_ChangeTargettoParent(getPopupIFrame(nIndex).document); - if (gbBsNS6) - getPopupIFrame(nIndex).document.body.addEventListener("click",BSSCPopupClicked,false); - else - getPopupIFrame(nIndex).document.body.onclick = BSSCPopupClicked; - - if (!gbOrignalOnMouseDown && document.onmousedown) - gbOrignalOnMouseDown = document.onmousedown; - - if (gbBsNS6) - document.addEventListener("mousedown", BSSCPopupParentClicked,false); - else - document.onmousedown = BSSCPopupParentClicked; -} - -function BSSCPopup_Timeout(nIndex, nToken) -{ - if (!IsValidToken(nToken)) return; - - if (gbBsNS6||((getPopupIFrame(nIndex).document.readyState == "complete") && - (getPopupIFrame(nIndex).document.body != null))) { - BSSCPopup_PostWork(nIndex); - } else { - setTimeout("BSSCPopup_Timeout(" + nIndex + "," + nToken + ")", 100); - } -} - -// VH 08/10/00 -// do not change target to parent if the href is using javascript -function BSSCPopup_ChangeTargettoParent(tagsObject) -{ - var collA = getElementsByTag(tagsObject, "A"); - BSSCPopup_ChangeTargettoParent2(collA); - - var collIMG = getElementsByTag(tagsObject,"IMG"); - BSSCPopup_ChangeTargettoParent2(collIMG); -} - -function BSSCPopup_ChangeTargettoParent2(colls) -{ - if (colls != null) { - for (var j = 0; j < colls.length; j ++ ) - { - var strtemp = colls[j].href; - if (strtemp) - { - strtemp = strtemp.toLowerCase(); - if (strtemp.indexOf("javascript:") == -1) - if (colls[j].target == "") - colls[j].target = "_parent"; - } - } - } -} - -function BSPSPopupTopicWinHelp(strURL) -{ - _BSSCPopup(strURL); - return; -} - -function _BSSCPopup(strURL, width, height) -{ - var cuswidth = 0; - var cusheight = 0; - if ("undefined" != typeof(width) && "undefined" != typeof(height)) { - cuswidth = width; - cusheight= height; - } - - if (DHTMLPopupSupport()) { - var nToken = takeToken(); // take token first. - var nIndex = _BSSCCreatePopupDiv(strURL); - window.gbPopupTimeoutExpired = false; - var ntWidth = gBsClientWidth; - var ntHeight = gBsClientHeight; - _BSPSGetClientSize(); - if (ntWidth != gBsClientWidth || ntHeight != gBsClientHeight) { - setDirty(); - } - - if (IsDirty(nIndex)) { - if (gbBsMac) { - setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight +")", 400); - } else { - setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")", 100); - } - } - else { - MoveDivAndShow(nIndex ,nToken, cuswidth, cusheight); - } - } else { - _BSSCPopup2(strURL, cuswidth, cusheight); - } - return; -} - -if (gbBsIE55) -{ - var ehlpdhtm_fOldBefureUnload = window.onbeforeunload; - var gnBsUnload=0; - window.onbeforeunload = window_BUnload; -} - -function window_BUnload() -{ - gnBsUnload++; - if (gnBsUnload>1) - return; - for (var i = 0; i < arrayPopupURL.length; i ++) - removeThis(document.all(getPopupID(i))); - arrayPopupURL.length = 0; - if (ehlpdhtm_fOldBefureUnload) - ehlpdhtm_fOldBefureUnload(); -} - -function _BSSCPopup2(strURL, width, height) -{ - if (gbBsOpera6&&gbBsMac) - { - var wmTemp = window.open(document.location.href, gstrPopupSecondWindowName); - wmTemp.close(); - setTimeout("_BSSCPopup3(\""+strURL+"\","+width+","+height+");",100); - } - else - _BSSCPopup3(strURL, width, height); -} - -function _BSSCPopup3(strURL, width, height) -{ - if (window.name == gstrPopupSecondWindowName) { - window.location = strURL; - } else { - if (!gbBsMac || !gbBsNS4) { - BSSCHidePopupWindow(); - } - var nX = 0; - var nY = 0; - var nHeight = 300; - var nWidth = 400; - if (width > 0 && height > 0) { - nHeight = height; - nWidth = width; - } - _BSPSGetClientSize(); - - nX = window.gnPopupScreenClickX; - nY = window.gnPopupScreenClickY; - - if (nY + nHeight + 40 > screen.availHeight) { - nY = screen.availHeight - nHeight - 40; - } - if (nX + nWidth + 40 > screen.availWidth) { - nX = screen.availWidth - nWidth - 40; - } - - // Launch a separate window - var strParam="titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes"; - if (gbBsNS) { - if (gbBsNS6) { - strParam += ",Height=" + nHeight + ",Width=" + nWidth; - strParam += ",screenX=" + nX + ",screenY=" + nY; - strParam += ",dependent=yes"; - } - else { - strParam += ",OuterHeight=" + nHeight + ",OuterWidth=" + nWidth; - strParam += ",screenX=" + nX + ",screenY=" + nY; - strParam += ",dependent=yes"; - } - } - else { - strParam += ",height=" + nHeight + ",width=" + nWidth; - strParam += ",left=" + nX + ",top=" + nY; - } - if (gbBsSafari) - { - if (window.gPopupWindow) - window.gPopupWindow.close(); - window.gPopupWindow = window.open(strURL, "", strParam); - window.gPopupWindow.name = gstrPopupSecondWindowName; - window.gPopupWindow.moveTo(nX, nY); - widnow.gPopupWindow.document.location.reload(); - } - else - { - var wmTemp=null; - if (gbBsKonqueror3) - { - if (window.gPopupWindow) - window.gPopupWindow.close(); - } - if (gbBsOpera&&gbBsMac) - { - wmTemp= window.open(document.location.href, "Temp", strParam); - } - window.gPopupWindow = window.open(strURL, gstrPopupSecondWindowName, strParam); - if (!gbBsIE) - window.gPopupWindow.focus(); - - if (wmTemp) - wmTemp.close(); - } - - if (gbBsNS4) - setEventHandle(); - else if (gbBsIE4 || gbBsOpera7||gbBsKonqueror3) - setTimeout("setPopupFocus();", 100); - } - return; -} - -function setEventHandle() -{ - window.gPopupWindow.captureEvents(Event.CLICK | Event.BLUR); - window.gPopupWindow.onclick = NonIEPopup_HandleClick; - window.gPopupWindow.onblur = NonIEPopup_HandleBlur; -} - -function setPopupFocus() -{ - window.gPopupWindow.focus(); -} - -function NonIEPopup_HandleBlur(e) -{ - window.gPopupWindow.focus(); -} - -function NonIEPopup_HandleClick(e) -{ - // Because navigator will give the event to the handler before the hyperlink, let's - // first route the event to see if we are clicking on a Popup menu in a popup. - document.routeEvent(e); - - // If a popup menu is active then don't do anything with the click - if (window.gPopupWindow.gbInPopupMenu) { - window.gPopupWindow.captureEvents(Event.CLICK); - window.gPopupWindow.onclick = NonIEPopup_HandleClick; - return false; - } - - // Close the popup window - if(e.target.href) - { - if(e.target.href.indexOf("javascript:")==-1) - { - if (e.target.target=="") - window.location.href = e.target.href; - else - window.open(e.target.href, e.target.target); - this.close(); - } - } - else - this.close(); - return false; -} - -function BSSCPopup_AfterLoad(nIndex, nToken, cuswidth, cusheight) -{ - if (!window.getPopupIFrame(nIndex).document) { - _BSSCPopup2(getPopupURL(nIndex), cuswidth, cusheight); - return; - } - - if (!IsValidToken(nToken)) return; - - if (gbBsNS6) - { - setAbsPopupURL(nIndex, window.getPopupIFrame(nIndex).document.location.href); // change URL to abs url. - BSSCPopup_ResizeAfterLoad(nIndex, nToken, cuswidth, cusheight); - return; - } - - if ((window.getPopupIFrame(nIndex).document.readyState == "complete") && - (window.getPopupIFrame(nIndex).document.body != null)) { - if (window.getPopupIFrame(nIndex).document.location.href.indexOf("about:blank") != -1) { // add this check. IE will use about:blank" as the default vaule for Iframe. - window.getPopupIFrame(nIndex).document.location = getPopupURL(nIndex); - setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")", 200); - } - else - { - setAbsPopupURL(nIndex, window.getPopupIFrame(nIndex).document.location.href); // change URL to abs url. - BSSCPopup_ResizeAfterLoad(nIndex, nToken, cuswidth, cusheight); - } - } else { - setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")", 200); - } -} - -function BSSCPopup_ResizeAfterLoad(nIndex, nToken, cuswidth, cusheight) -{ - if (window.gbPopupTimeoutExpired) return; - - if (!IsValidToken(nToken)) return; - - getPopupDivStyle(nIndex).visibility = gBsStyVisHide; - getPopupIFrameStyle(nIndex).visibility = gBsStyVisHide; - - // Determine the width and height for the window - _BSPSGetClientSize(); - - var size = new BSSCSize(0, 0); - - if (cuswidth <= 0 || cusheight <= 0) - BSSCGetContentSize(window.getPopupIFrame(nIndex), size); - else { - size.x = cuswidth; - size.y = cusheight; - } - - // Determine the width and height for the window - var nWidth = size.x; - var nHeight = size.y; - - // for small popup size, we should allow any size. - // The popup size should be ok if bigger than 0 - if (nWidth < 0 || nHeight < 0) return; // there must be something terribly wrong. - - getPopupDivStyle(nIndex).width = nWidth; - getPopupDivStyle(nIndex).height = nHeight; - - getPopupShadowStyle(nIndex).width = nWidth; - getPopupShadowStyle(nIndex).height = nHeight; - getPopupTopicStyle(nIndex).width = nWidth; - getPopupTopicStyle(nIndex).height = nHeight; - if (gbBsIE55) - { - getPopupShadowStyle(nIndex).width = nWidth + 2; - getPopupShadowStyle(nIndex).height = nHeight + 2; - getPopupTopicStyle(nIndex).width = nWidth + 2; - getPopupTopicStyle(nIndex).height = nHeight + 2; - } - - getPopupIFrameStyle(nIndex).width = nWidth; - getPopupIFrameStyle(nIndex).height = nHeight; - if (gbBsIE55 || gbBsNS6) - { - getPopupIFrameStyle(nIndex).top = 0; - getPopupIFrameStyle(nIndex).left = 0; - } - - var strURL = getPopupURL(nIndex); - if (strURL.indexOf("#") != -1&&gbBsNS6) - getPopupIFrame(nIndex).location.reload(); - else if (strURL.indexOf("#") != -1||gbBsNS6) - getPopupIFrame(nIndex).location.href = strURL; // reload again, this will fix the bookmark misunderstand in IE5. - - MoveDivAndShow(nIndex, nToken, cuswidth, cusheight); -} - -function getScrollLeft() -{ - if (document.body.scrollLeft) - return document.body.scrollLeft; - else if (window.pageXOffset) - return window.pageXOffset; - else - return 0; -} - -function getScrollTop() -{ - if (document.body.scrollTop) - return document.body.scrollTop; - else if (window.pageYOffset) - return window.pageYOffset; - else - return 0; -} - - -function MoveDivAndShow(nIndex, nToken, cuswidth, cusheight) -{ - if (window.getPopupIFrame(nIndex).document.location.href != getAbsPopupURL(nIndex)) { // if redirect, reload again. - window.getPopupIFrame(nIndex).document.location = getPopupURL(nIndex); - setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")", 200); - return; - } - - // Determine the position of the window - var nClickX = window.gnPopupClickX; - var nClickY = window.gnPopupClickY; - var nTop = 0; - var nLeft = 0; - - var nWidth = parseInt(getPopupDivStyle(nIndex).width); - var nHeight = parseInt(getPopupDivStyle(nIndex).height); - - if (nClickY + nHeight + 20 < gBsClientHeight + getScrollTop()) { - nTop = nClickY + 10; - } else { - nTop = (getScrollTop() + gBsClientHeight) - nHeight - 20; - } - if (nClickX + nWidth < gBsClientWidth + getScrollLeft()) { - nLeft = nClickX; - } else { - nLeft = (getScrollLeft() + gBsClientWidth) - nWidth - 8; - } - - if (nTop < getScrollTop()) nTop = getScrollTop() + 1; - if (nLeft< getScrollLeft()) nLeft = getScrollLeft() + 1; - - getPopupDivStyle(nIndex).left = nLeft; - getPopupDivStyle(nIndex).top = nTop; - - // Set the location of the background blocks - getPopupShadowStyle(nIndex).left = 6; - getPopupShadowStyle(nIndex).top = 6; - if (gbBsIE55) - { - getPopupShadowStyle(nIndex).left = 4; - getPopupShadowStyle(nIndex).top = 4; - } - - if (gbBsMac&&gbBsIE4) { - // Total hack on the iMac to get the IFrame to position properly - getPopupIFrameStyle(nIndex).pixelLeft = 100; - getPopupIFrameStyle(nIndex).pixelLeft = 0; - // Explicitly call BSSCOnLoad because the Mac doesn't seem to do it - getPopupIFrame(nIndex).window.BSSCOnLoad(); - } - - if (gbBsNS6&&IsDirty(nIndex)) - getElement(getPopupIFrameID(nIndex)).addEventListener("load", handleLoadNS, false); - else - BSSCPopup_Timeout(nIndex , nToken ); - return; -} - -function BSSCSize(x, y) -{ - this.x = x; - this.y = y; -} - -function BSSCGetContentSize(thisWindow, size) -{ - if (!gbBsIE4 && !gbBsOpera7 && !gbBsNS4) - return; - - if ((gbBsMac&&gbBsIE4)||gbBsNS4||gbBsOpera7) { - size.x = 320; - size.y = 180; - return; - } - - // Resize the width until it is wide enough to handle the content - // The trick is to start wide and determine when the scrollHeight changes - // because then we know a scrollbar is necessary. We can then go back - // to the next widest size (for no scrollbar) - - var ClientRate = gBsClientHeight / gBsClientWidth; - - - var GoldenSize = new BSSCSize(0,0); - GoldenSize.x = gBsClientWidth * gBMaxXOfParent; - GoldenSize.y = gBsClientHeight *gBMaxYOfParent ; - - if (ClientRate > gBRateH_W) { - GoldenSize.y = GoldenSize.x * gBRateH_W; - } - else { - GoldenSize.x = GoldenSize.y / gBRateH_W; - } - - // Try to using parent specified max x. - var x = 0; - var maxgoldx = GoldenSize.x; - var maxx = gBsClientWidth * gBMaxXOfParent; - - // This double resize causes the document to re-render (and we need it to) - if (!gbBsIE5) - thisWindow.moveTo(10000,10000); // this is used to fix the flash on IE4. - - thisWindow.resizeTo(1, 1); - thisWindow.resizeTo(1, 1); - thisWindow.resizeTo(maxgoldx, thisWindow.document.body.scrollHeight + gBscrollHeight); - thisWindow.resizeTo(maxgoldx, thisWindow.document.body.scrollHeight + gBscrollHeight); - - var miny = thisWindow.document.body.scrollHeight + gBscrollHeight; - - if (miny > GoldenSize.y) // the popup does not fix in the parent wanted golden area. so try to expand itself as large as it can - { - thisWindow.resizeTo(maxx , thisWindow.document.body.scrollHeight + gBscrollHeight); - thisWindow.resizeTo(maxx , thisWindow.document.body.scrollHeight + gBscrollHeight); - - miny = thisWindow.document.body.scrollHeight + gBscrollHeight; - maxy = gBsClientHeight * gBMaxYOfParent; - - if (miny > maxy) { // the popup must have a scroll, OK let it be. - miny = maxy; - size.x = maxx; - size.y = maxy; - thisWindow.document.body.scroll = 'yes'; // At this time we do want to show scroll any more. so it will looks better a little. - } - else { // popup still can fit in the parent area by someway. now we choose the same h/w rate as parent. - size.y = miny; - - // downsize from maxx , now I try to using binary divide. - x = maxx; - deltax = -maxx/2; - //j = 0; - while (true) { - x = x + deltax; - thisWindow.resizeTo(x, miny); - thisWindow.resizeTo(x, miny); - diffy = thisWindow.document.body.scrollHeight + gBscrollHeight - x * ClientRate; - if (diffy > gBpermitYDelta ) // it is higher than wanted, so x need to be wide a little bitter - deltax = Math.abs(deltax) /2; - else if (diffy < -gBpermitYDelta) // it is shorter than wanted, so x need to be narrow a little bitter - deltax = -Math.abs(deltax) /2; - else - // the y is close enough to wanted. - break; - if (Math.abs(deltax) < gBpermitXDelta) // the next change is too slight and it can be ignore. - break; - } - size.x = thisWindow.document.body.scrollWidth; //+ gBscrollWidth; - size.y = thisWindow.document.body.scrollHeight;// + gBscrollHeight; - thisWindow.document.body.scroll = 'no'; - } - } - else { - if (thisWindow.document.body.scrollWidth > maxgoldx) { - size.x = maxx; - size.y = miny; - thisWindow.document.body.scroll = 'yes'; - } - else { - // downsize from maxgoldx , now I try to using binary divide. - x = maxgoldx; - deltax = -maxgoldx/2; - while (true) { - x = x + deltax; - thisWindow.resizeTo(x, miny); - thisWindow.resizeTo(x, miny); - diffy = thisWindow.document.body.scrollHeight + gBscrollHeight - x * gBRateH_W; - if (diffy > gBpermitYDelta ) // it is higher than wanted, so x need to be wide a little bitter - deltax = Math.abs(deltax) /2; - else if (diffy < -gBpermitYDelta) // it is shorter than wanted, so x need to be narrow a little bitter - deltax = -Math.abs(deltax) /2; - else - // the y is close enough to wanted. - break; - if (Math.abs(deltax) < gBpermitXDelta) // the next change is too slight and it can be ignore. - break; - } - size.x = thisWindow.document.body.scrollWidth; //+ gBscrollWidth; - size.y = thisWindow.document.body.scrollHeight ; - thisWindow.document.body.scroll = 'no'; // At this time we do not want to show scroll any more. so it will looks better a little. - thisWindow.resizeTo(size.x, size.y); - if (thisWindow.document.body.scrollWidth > size.x) - { - size.x = thisWindow.document.body.scrollWidth; - } - if (thisWindow.document.body.scrollHeight > size.y) - { - size.y = thisWindow.document.body.scrollHeight; - } - } - } - thisWindow.resizeTo(size.x, size.y); - thisWindow.resizeTo(size.x, size.y); - return; -} - -function BSSCPopupParentClicked() -{ - if (!window.gbPopupTimeoutExpired) { - return false; - } - - document.onmousedown = gbOrignalOnMouseDown; - - // Simply hide the popup - hideAll(); - - window.gbPopupTimeoutExpired = false; - - return true; -} - -function isInsideHyperLink(obj) -{ - if (obj&&obj!=getParentNode(obj)) - { - if (obj.tagName=="A"||obj.tagName=="IMG") - return true; - else - return isInsideHyperLink(getParentNode(obj)); - } - else - return false; -} - -function BSSCPopupClicked(e) -{ - if (!window.gbPopupTimeoutExpired) { - return false; - } - - var popupIFrame = getCurrentPopupIFrame(); - if (popupIFrame == null) { - return true; - } - - if (gbBsIE4 && (!((popupIFrame.window.event != null) && - (popupIFrame.window.event.srcElement != null) && - isInsideHyperLink(popupIFrame.window.event.srcElement)))) { - document.onmousedown = gbOrignalOnMouseDown; - - // Simply hide the popup - hideAll(); - window.gbPopupTimeoutExpired = false; - return true; - } - else if (gbBsNS6 && (!((e != null) && - (e.target!= null) && isInsideHyperLink(e.target)))) - { - document.addEventListener("mousedown", gbOrignalOnMouseDown,false); - // Simply hide the popup - hideAll(); - window.gbPopupTimeoutExpired = false; - return true; - } -} - -//trace the mouse over's position for hotspot -function BSPSPopupOnMouseOver(event) -{ - if (gbBsIE4 || gbBsOpera7||gbBsKonqueror3) { - window.gnPopupClickX = event.clientX + getScrollLeft(); - window.gnPopupClickY = event.clientY + getScrollTop(); - window.gnPopupScreenClickX = event.screenX; - window.gnPopupScreenClickY = event.screenY; - } else if (gbBsSafari) { - window.gnPopupClickX = event.clientX + getScrollLeft(); - window.gnPopupClickY = event.clientY + getScrollTop(); - window.gnPopupScreenClickX = event.screenX + window.screenX; - window.gnPopupScreenClickY = event.screenY + window.screenY; - } else if (gbBsNS4) { - window.gnPopupClickX = event.pageX - window.pageXOffset; - window.gnPopupClickY = event.pageY - window.pageYOffset; - window.gnPopupScreenClickX = event.screenX - window.pageXOffset; - window.gnPopupScreenClickY = event.screenY - window.pageYOffset; - } -} - -function BSSCHidePopupWindow() -{ - if (window.gPopupWindow != null) { - if (gbBsNS4) { - if ((typeof window.gPopupWindow != "undefined") && (!window.gPopupWindow.closed)) { - window.gPopupWindow.close(); - window.gPopupWindow = null; - } - } - } - return; -} - -// Add the PopupOnClick to the onclick array. -if (typeof(BsscRegisterOnClick) != "undefined") -{ - BsscRegisterOnClick(BsPopupOnClick); -} -//End to support previous popup functions - -/// Section End - Popup (JavaScript 1.0) - -/// Section Begin - Embedded Stub (JavaScript 1.0) - -function BSSCCreatePopupDiv() -{ - return; -} - -function WritePopupMenuLayer() -{ - if (BsscHasExtJs()) {_WritePopupMenuLayer();} -} - -function BSSCPopup(strURL, width, height) -{ - var re = new RegExp("'", 'g'); - strURL = strURL.replace(re, "%27"); - - if (BsscHasExtJs()) { - _BSSCPopup(strURL, width, height); - }else{ - //Create a temporary window first to ensure the real popup comes up on top - var wndTemp = null; - if (!gbBsNS3) { - wndTemp = window.open("", "temp", "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes,height=3,width=4"); - } - // Create the real popup window - var wndPopup = window.open(strURL, "BSSCPopup", "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes,height=300,width=400"); - // Close the temporary - if (!gbBsNS3) { - wndTemp.close(); - } else { - wndPopup.focus(); - } - } -} - -var gbWndTemp = null, gbWndPopupLinks = null; -var gbstrParaTotal = ""; - -function PopupMenu_Invoke() -{ - if (typeof(wfRelatedTopic) == 'function' && typeof(IsFlashSupported) == 'function') - { - if (Number(gsSkinVersion) > 2 && IsFlashSupported()) - { - return wfRelatedTopic(PopupMenu_Invoke.arguments); - } - } - if (BsscHasExtJs()) { - return _PopupMenu_Invoke(PopupMenu_Invoke.arguments); - } - if (gbBsNS3Before || gbBsIE3Before ) { - var argLen = PopupMenu_Invoke.arguments.length; - if (argLen < 5) { - window.document.location.href = PopupMenu_Invoke.arguments[3]; - return false; - } - gbWndTemp = null; - gbWndPopupLinks = null; - gbstrParaTotal = ""; - for (var i = 0; i < (argLen - 2) / 2; i++) { - var strParaLine = ""; - if (gbBsNS2){ - strParaLine += "" - strParaLine += PopupMenu_Invoke.arguments[2 * i + 2]; - strParaLine += ""; - } else { - strParaLine += ""); - if (gbBsNS2) { - gbWndPopupLinks.document.write(""); - } else { - //YJ: IE301,302 and NS3.x works fine - gbWndPopupLinks.document.write("<"); - gbWndPopupLinks.document.write("script>"); - gbWndPopupLinks.document.write("function gotoUrl(aUrl) {opener.window.location=aUrl; close();}"); - gbWndPopupLinks.document.write("<"); - gbWndPopupLinks.document.write("/script>"); - } - gbWndPopupLinks.document.write(""); - gbWndPopupLinks.document.write(gbstrParaTotal); - gbWndPopupLinks.document.write(""); - gbWndPopupLinks.document.close(); - - // Close the temporary - if (!gbBsNS3 && gbWndTemp != null) { - gbWndTemp.close(); - }else { - gbWndPopupLinks.focus(); - } - - return true; - } - return false; -} - -/// Section End - Embedded Stub (JavaScript 1.0) - -//// Segment End -- (JavaScript 1.0) - -//// Segment Begin -- (JavaScript 1.2) -/// Section Begin - kadov DHTM (JavaScript 1.2) - -//Begin to support extended and dropdown text effects. -function kadovIsParagraph(el) -{ - return( el.tagName == "P" || el.tagName.indexOf("H") == 0 ) ? true : false; -} - -function kadovInitEachChild(el) -{ - for(var i=0; i "") ) - child.style.setAttribute( "x-on-pageload", "" ); - } - - var href = child.getAttribute("href") - if( href != null && href > "" && href.indexOf( "BSSCPopup" ) >= 0 ) - kadovFilePopupInit(child.id); // Init for Popup - else if( child.className == "dropspot" || child.className == "expandspot" || - child.className == "glossterm" ) - kadovTextPopupInit(child.id);// Init for Expanding/Glossary or DropDown text - else if( child.className == "trigger") - kadovInitTrigger(child.id);// Init for Trigger - else - { - kadovInitEffects(child.id);// Init for DHTML effects - CEngine.SetOneTargetInitialState( child.id ); - } - } - - if( (child.tagName == "IMG") && (child.getAttribute("dynsrc") > "") ) - child.start = "mouseover";// to start a AVI file. fileopen doesn't work - - kadovInitEachChild(child); - } -} - -function kadovRetrieveTextInner(el) -{ - var x = ""; - if( (!el) || (el.tagName == "!") || (el.tagName == "SCRIPT" )) - return x; - - if( kadovIsParagraph(el) ) - { - var strNewID = " "; - if( el.id != "" ) - strNewID += "id=" + el.id + "_NewSpan "; - x = "" + el.innerHTML + ""; - } - else - { - for(var i=0; i 0 ) - if( (nTagClose - nTagOpen) != nDistance ) - return strRawHTML; - - var strCleanOnce = strRawHTML.substring(0, nTagOpen) + strRawHTML.substr(nTagClose + strTagClose.length) ; - return kadovRetrieveCleanHTML( strCleanOnce, strTagOpen, strTagClose ); -} - -function kadovAdjustObjectTag(strRawHTML, nStartPos) -{// adjust object tag for related topics HTML control, because innerHTML misses out the item settings - - //Is there any DTC? - var strDTCTagOpen = ''; - var nDTCTagOpen = strRawHTML.indexOf( strDTCTagOpen, nStartPos ); - if( nDTCTagOpen < 0 ) - return strRawHTML; - var nDTCTagClose = strRawHTML.indexOf( strDTCTagClose, nDTCTagOpen ); - if( nDTCTagClose < nDTCTagOpen) - return strRawHTML; // no Design Time Controls; - - //Is the DTC HTML Help Control? - var strRTObjTagOpen = 'classid=clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11'; - var strRTObjTagClose = ''; - var nRTObjTagOpen = strRawHTML.indexOf( strRTObjTagOpen, nDTCTagOpen ); - if( nRTObjTagOpen < nDTCTagOpen ) - return strRawHTML; - var nRTObjTagClose = strRawHTML.indexOf( strRTObjTagClose, nRTObjTagOpen ); - if( nRTObjTagClose < nRTObjTagOpen ) - return strRawHTML; // is not a HTML help control - - // Is it a related Topics html help control? - var strRTObjLabel = ''; - } - - // to insert the reconstructed item params into runtime object tag - var strAdjustedHTML = strRawHTML.substring(0,nRTObjTagClose) + strRunTimeItemParam + strRawHTML.substring(nRTObjTagClose, strRawHTML.length); - return kadovAdjustObjectTag(strAdjustedHTML, nDTCTagClose + strDTCTagClose.length); -} - -function kadovTextPopupOnLoad( el ) -{ - if( typeof(el) == "string" ) - el = getElement(el); - - var src = el.getAttribute( "x-use-popup" ); - var bNeedMove=true; - if(!src&&el.id) - { - for (var i=0;i"); - strCleanHTML = kadovRetrieveCleanHTML(strCleanHTML, ""); - - //work around the bug in HH.exe that highlight the phrases when use Search tab - //this approach is just removing the tag inserted by Microsoft in the runtime - strCleanHTML = kadovRetrieveCleanHTML(strCleanHTML, "", 52); - - var strStyle = " style='display:none; position:relative;"; - var newDiv = "
" + strCleanHTML + "
"; - - removeThis(srcDiv); // empty the original DIV tag - var elParentPra = kadovFindParentParagraph(el); - if( elParentPra ) - insertAdjacentHTML(elParentPra, "afterEnd", newDiv ); - } - else if( type == "expanding" ) - { - var inner = kadovRetrieveTextInner(srcDiv); - if( inner == "" ) - inner = srcDiv.innerHTML; - var strAdjust = kadovAdjustObjectTag(inner,0); - var strCleanHTML = kadovRetrieveCleanHTML(strAdjust, ""); - strCleanHTML = kadovRetrieveCleanHTML(strCleanHTML, ""); - var strClassName = (el.className == "glossterm") ? "glosstext" : "expandtext"; - var newSpan = ""; - removeThis(srcDiv); // empty the original DIV tag - insertAdjacentHTML(el, "afterEnd", newSpan ); - } - } - } - else - { - srcDiv.style.display = "none"; - } - return 0; -} - -function getElementsByTag(obj,sTagName) -{ - if(obj.getElementsByTagName) - return obj.getElementsByTagName(sTagName); - else if(obj.all) - return obj.all.tags(sTagName); - return null; -} - -function getElement(sID) -{ - if(document.getElementById) - return document.getElementById(sID); - else if(document.all) - return document.all(sID); - return null; -} - -function getParentNode(obj) -{ - if(obj.parentNode) - return obj.parentNode; - else if(obj.parentElement) - return obj.parentElement; - return null; -} - -function getChildNodes(obj) -{ - if(obj.childNodes) - { - var children = new Array(); - for (var i = 0; i < obj.childNodes.length; i++) - { - if (obj.childNodes[i].nodeType == 1) - children[children.length] = obj.childNodes[i]; - } - return children; - } - else if(obj.children) - return obj.children; - return null; -} - -function removeThis(obj) -{ - if(obj.parentNode) - obj.parentNode.removeChild(obj); - else - obj.outerHTML=""; -} - -function kadovTextPopup( el ) -{ - if (!gbBsIE4 && !gbBsOpera7 && !gbBsSafari && !gbBsNS6 && !gbBsKonqueror3 ) - return; - - var bNeedMove=true; - - if (window.event) - window.event.cancelBubble = true; - - if( typeof(el) == "string" ) - el = getElement(el); - - if (!el||el==window) - return; - - var src = el.getAttribute( "x-use-popup" ); - if(!src&&el.id) - { - for (var i=0;i= 0 && nNext < values.length ) - { - functions[nIdx] = values.substr( nStart, nNext-nStart+1); - nStart = nNext + 1; - nIdx++; - nNext = values.indexOf( "\)", nStart); - } - - for( var i=0; i= 0 ) - { - nPageClick = arrForClickCount[j].indexOf("="); - if( nPageClick > 0 ) - { - nClickTimes = arrForClickCount[j].substring( nPageClick + 1, arrForClickCount[j].length) * 1; - break; - } - } - } - var args = srcargs; - if( j < arrForClickCount.length ) - {// to strip out the "clicks=99" from the arguments string - args = ""; - for( var k = 0; k < arrForClickCount.length; k ++ ) - { - if( k != j ) - { - args += arrForClickCount[k]; - if( k < arrForClickCount.length - 1 ) - args += ","; - } - } - } - bsscFXInit( null, id, translatedProp, fnname, args, nClickTimes ); - } -} - -function kadovTranslateProp( prop ) -{ - switch( prop ) - { - case "x-on-hover" : return "bsschover"; - case "x-on-pageclick" : return "bsscpageclick"; - case "x-on-pageload" : return "bsscpageload"; - case "x-on-trigger-1" : return "bssctrigger1"; - case "x-on-trigger-2" : return "bssctrigger2"; - } - return null; -} -//End to convert iWrite format to RoboEditor Format for DHTML effects - -//Begin the definition of one entry to DHTML effects -function bsscFXInit( trigger_ID, target_ID, event_type, - action_type, action_setting, event_addional ) -{ - if( (!gbBsWindows && !gbBsSunOS && !(gbBsMac&&gbBsIE5)) || typeof(target_ID) != "string" )//MUST have a target_ID - return; // we don't support Navigator yet - - if( typeof(event_type) == "string" ) - event_type = event_type.toLowerCase(); - if( typeof(action_type) == "string" ) - action_type = action_type.toLowerCase(); - if( typeof(action_setting) == "string" ) - action_setting = action_setting.toLowerCase(); - - // to get the target element then add it to the target list - var eleTarget = CCSSP.GetObject( target_ID ); - if( (eleTarget != null) && (event_type != null) && (action_type != null) ) - { - CEngine.AddOneTarget( target_ID, eleTarget ); - CEngine.BuildTargetObject(target_ID, event_type, action_type, action_setting, event_addional); - } - - // to validate the trigger_ID parameter - if( typeof(trigger_ID) == "string" && trigger_ID != "" ) - CEngine.BuildTriggerObject( trigger_ID, target_ID ); -} -//End the definition of one entry to DHTML effects - -/// Section End - kadov DHTM (JavaScript 1.2) - -/// Section Begin - CCSSP DHTM (JavaScript 1.2) - -//Begin JavaScript libary for cross-platform positioning object. -function CCSSP(){} // constructor of CCSSP class - -CCSSP.GetObject = function( obj ) -{//convert object name string or reference into a valid object reference - if( typeof(obj) == "object" ) - return obj; - else if( typeof(obj) == "string" && obj != "") - { - if( gbBsNS4 ) - return eval("document." + obj); - else - return eval("document.all(\"" + obj + "\")"); - } - else - return null; -} - -CCSSP.MoveObjectTo = function(obj, x, y) -{//positioning an object at a specific pixel coordinate - if( gbBsNS4 ) - obj.moveTo(x,y); - else - { - obj.style.pixelLeft = x; - obj.style.pixelTop = y; - } -} - -CCSSP.MoveObjectBy = function(obj, dx, dy) -{//moveing a object by x and/or y pixel - if( gbBsNS4 ) - obj.moveBy(dx,dy); - else - { - obj.style.pixelLeft += dx; - obj.style.pixelTop += dy; - } -} - -CCSSP.SetObjectBGColor = function(obj, color) -{//set the background color of an object - if( gbBsNS4 ) - obj.bgColor = color; - else - obj.style.backgroundColor = color; -} - -CCSSP.ShowObject = function(obj, bShow) -{// set the object to be visible or invisible - if( gbBsNS4 ) - obj.visibility = (bShow == true) ? 'show' : 'hide'; - else - obj.style.visibility = (bShow == true) ? 'visible' : 'hidden';// when hidden, it still occupy some space. -} - -CCSSP.GetObjectLeft = function(obj) -{// retrieve the x coordinate of a posionable object - if( gbBsNS4 ) - return obj.left; - else - return obj.style.pixelLeft; -} - -CCSSP.GetObjectTop = function(obj) -{// retrieve the y coordinate of a posionable object - if( gbBsNS4 ) - return obj.top; - else - return obj.style.pixelTop; -} - -CCSSP.GetObjectContainLeft = function(obj) -{// retrieve the x coordinate of a posionable object relative to it's parent element - if( gbBsNS4 ) - return obj.pageX; - else - { - if( obj == document.body ) - return obj.clientLeft; - else - return obj.offsetLeft; - } -} - -CCSSP.GetObjectWindowLeft = function(obj) -{// retrieve the x coordinate of a posionable object relative to browser window - if( gbBsNS4 ) - return obj.pageX; - else - { - var nOffsetWindowLeft = 0; - for(var element = obj; element; element = element.offsetParent) - nOffsetWindowLeft += CCSSP.GetObjectContainLeft(element); - return nOffsetWindowLeft; - } -} - -CCSSP.GetObjectContainTop = function(obj) -{// retrieve the y coordinate of a posionable object relative to it's parent element - if( gbBsNS4 ) - return obj.pageY; - else - { - if( obj == document.body ) - return obj.clientTop; - else - return obj.offsetTop; - } -} - -CCSSP.GetObjectWindowTop = function(obj) -{// retrieve the y coordinate of a posionable object relative to browser window - if( gbBsNS4 ) - return obj.pageY; - else - { - var nOffsetWindowTop = 0; - for(var element = obj; element; element = element.offsetParent) - nOffsetWindowTop += CCSSP.GetObjectContainTop(element); - return nOffsetWindowTop; - } -} - -CCSSP.GetObjectHeight = function(obj) -{// retrieve the height of a posionable object - if( gbBsNS4 ) - return obj.clip.height; - else - return obj.offsetHeight; -} - -CCSSP.GetObjectWidth = function(obj) -{// retrieve the width of a posionable object - if( gbBsNS4 ) - return obj.clip.width; - else - return obj.offsetWidth; -} - -CCSSP.RegisterEventHandler = function( srcObj, rawEventName, funcHandler ) -{ // to add the "funcHandler" as the "rawEventName" 's handler to the "srcObj" object,the original event handler will be combined - if (gbBsNS4 && !gbBsNS6) - return ; - - var oldHandler = ""; - - if (gbBsMac &&gbBsIE4&&!gbBsIE5) - { - if (typeof(srcObj[rawEventName.toLowerCase()])=="unknown") - { //search for - - - - - - - - -

Introduction to GEOM

- -

GEOM module of - SALOME is destined for:

- -

 

- -
    - -
  • Import and export of geometrical models in IGES, - BREP and STEP formats.

  • - -
  • Construction and optimization of geometrical models - using a wide range of  CAD - functions:

  • -
- -

 

- - --- - - - -
-
    - -
  • Creation of basic geometrical objects

  • - -
  • Construction of primitives

  • - -
  • Building shapes

  • - -
  • Generation of complex shapes

  • - -
  • Geometrical repairing of objects

  • - -
  • Geometrical boolean operations

  • - -
  • Geometrical transformations

  • - -
  • Generation of complex objects

  • -
-

 

-

- -

 

- - - - diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_basicgui_functions.htm b/doc/salome/gui/GEOM/files/salome2_sp3_basicgui_functions.htm deleted file mode 100755 index d6dca9850..000000000 --- a/doc/salome/gui/GEOM/files/salome2_sp3_basicgui_functions.htm +++ /dev/null @@ -1,869 +0,0 @@ - - - - - -Titre - - - - - - - - - - - - -
- -

In GEOM you can create basic geometrical objects (1D - & 2D elements) such as:

- -

- - - - - - -

 

- -

 

- -

To create basic geometrical objects:

- -

 

- -

In the main menu select New - Entity > Basic.

- -

 

- -  - -

Point

- -

 

- -

Description: - Creates a point.

- -

 

- -

Result: GEOM_Object - (vertex).

- -

 

- -

TUI Command : - geompy.MakeVertex(X, Y, X), where - X, Y, Z are coordinates of the point.

- -

 

- -

Arguments:

- -
    - -
  • 1st - Constructor: Name + 3 coordinates.

  • - -
  • 2nd - Constructor: Name + 1 reference point + 3 coordinates defining - the position of this point regarding the reference one

  • - -
  • 2nd Constructor: - Name + 1 edge  + - 1 Parameter defining the position of the point on the given edge.

  • -
- -

 

- -

Dialog Box:

- -

 

- - ---- - - - - -
-

-

-

- -

 

- -

 

- -

   

- -

 

- -

Example:

- -

 

- -

- -

 

- -

 

- -

Line

- -

 

- -

Description: - Creates a line.

- -

 

- -

Result: GEOM_Object - (edge).

- -

 

- -

TUI Command: - geompy.MakeLine(Point1, Point2), - where Point1 and Point2 are points through  which - the line passes.

- -

 

- -

Arguments: Name + 2 vertices.

- -

 

- -

Dialog Box:

- -

 

- -

- -

 

- -

Example:

- -

 

- -

- -

 

- -

 

- -

Circle

- -

 

- -

Description: - Creates a circle.

- -

 

- -

Result: GEOM_Object - (edge).

- -

 

- -

TUI Command: - geompy.MakeCircle(Point, Vector, Radius), - where Point defines the center of the circle, Vector gives the circleÂ’s - normal and Radius is the circleÂ’s  radius.

- -

 

- -

Arguments: -

- -
    - -
  • 1st Constructor: - Name + 1 vertex (for the center) + 1 edge (for the direction) + Radius.

  • - -
  • 2nd - Constructor: Name + 3 points which will form the circle.

  • -
- -

 

- -

 

- -

 

- -

Dialog Box:

- -

 

- - --- - - - -
-

-

- -

 

- -

 

- -

 

- -

 

- -

Example:

- -

 

- -

- -

 

- -

Ellipse

- -

 

- -

Description: - Creates an ellipse.

- -

 

- -

Result: GEOM_Object - (edge).

- -

 

- -

TUI Command: geompy.MakeEllipse(Point, Vector, RadiusMajor, - RadiusMinor), where Point defines the center of the ellipse, Vector - gives the ellipseÂ’s normal, RadiusMajor and RadiusMinor  are - correspondingly a major and minor radiuses of the ellipse.

- -

 

- -

Arguments: Name + 1 vertex (for the - center) + 1 edge (for the direction) + 1 X Radius + 1 Y Radius.

- -

 

- -

Dialog Box:

- -

 

- -

- -

 

- -

Example:

- -

 

- -

- -

 

- -

 

- -

Arc

- -

 

- -

Description: - Creates an arc.

- -

 

- -

Result: GEOM_Object - (edge).

- -

 

- -

TUI Command: - geompy.MakeArc(Point1, Point2, Point3), - where Point1 is the starting point of the arc, Point2 is a middle point - of the arc and Point3 is the ending point of the arc.

- -

 

- -

Arguments: Name + 3 vertices.

- -

 

- -

Dialog Box:

- -

 

- -

- -

 

- -

Example:

- -

 

- -

- -

 

- -

 

- -

Curve

- -

 

- -

Description: - Creates a curve in 3D space.

- -

 

- -

Result: - GEOM_Object (edge).

- -

 

- -

TUI Command: -

- -
    - -
  • geompy.MakePolyline(ListOfShapes), - where ListOfShape is a list of points through which the curve passes .

  • - -
  • geompy.MakeInterpol(ListOfShapes), - where ListOfShape is a list of points through which the curve passes .

  • - -
  • geompy.MakeBezier(ListOfShapes), - where ListOfShape is a list of points through which the curve passes .

  • -
- -

 

- -

Arguments: Name + at least 2 points - which will serve as nodes on the curve.

- -

 

- -

Dialog Box:

- -

 

- -

- -

 

- -

Example:

- -

 

- -

Polyline -                                          Bezier -                                      B-Spline

- -

          

- -

 

- -

 

- -

Vector

- -

 

- -

Description: - Creates a vector.

- -

 

- -

Result: GEOM_Object - (edge).

- -

 

- -

TUI Command: - geompy.MakeVector(Point1, Point2), - where Point1 is the first point of the vector and the Point2 is the last - point of the vector.

- -

 

- -

Arguments :

- -
    - -
  • 1st - Constructor : Name + 2 vertices.

  • - -
  • 2nd - Constructor : Name + 3 values (Coordinates of the 2nd vertex. The - first vertex is in the origin).

  • -
- -

 

- -

Dialog Box:

- -

 

- -

      

- -

 

- -

Example:

- -

 

- -

- -

 

- -

Plane

- -

 

- -

Description: - Creates a plane.

- -

 

- -

Result: GEOM_Object - (face).

- -

 

- -

TUI Command: - geompy.MakePlane(Point, Vector, TrimSize), - where Point is a point through which  the - plane passes, Vector gives a normal of the plane and TrimSize is a half - size of a side of quadrangle face, representing the plane.

- -

 

- -

Arguments:

- -
    - -
  • 1st Constructor : - Name + 1 vertex + 1 vector  + - 1 value (to define the size of the plane).

  • - -
  • 2nd Constructor : - Name + 1 vertex + 3 points (for the direction) + 1 value (to define the - size of the plane).

  • - -
  • 3rd Constructor : - Name + 1 selection + 1 value (to define the size of the plane).

  • -
- -

 

- -

Dialog Box:

- -

 

- - ---- - - - - -
-

-

-

- -

 

- -

 

- -

         

- -

 

- -

Example:

- -

 

- -

- -

 

- -

 

- -

Working - Plane

- -

 

- -

Description: - Sets the working plane (and the camera position).

- -

 

- -

Arguments: -

- -
    - -
  • Name + 1 selection (face - or planar face),

  • - -
  • Name +  2 - vectors,

  • - -
  • Name + XYZ coordinate - system

  • -
- -

 

- -

 

- -

Dialog Box:

- -

 

- - ---- - - - - -
-

-

-

- -

 

- -

 

- -

 

- -

 

- -

 

- -

Local - coordinate system

- -

 

- -

Description: -  The user - may manually enter values of X, Y, and Z coordinates of origin in the - corresponding fields of the dialog box, or select a point in the object - browser or 3D viewer, in this case coordinates of origin are automatically - filled in with the coordinates of the selected point.

- -

The user then specifies components of X and - Y axes direction.

- -

Preview of the new LCS (small trihedron located - and oriented according to parameters of LCS) is displayed in the 3D viewer - and updated as soon as the user modifies some parameter.

- -

Then the user presses «OK» or «Apply» button - to create an LCS at the location with the specified coordinates. The new - object is shown in the Object Browser and in 3D viewer.

- -

 

- -

 

- -

TUI command: - geompy.MakeMarker(OX, OY, OZ, XDX, XDY, - XDZ, YDX, YDY, YDZ), where OX, OY, OZ are coordinates of the origin - of LCS, XDX, XDY, XDZ is a vector of OX  direction - of the LCS and YDX, YDY, YDZ is a a vector of OY direction of the LCS.

- -

 

- -

 

- -

Arguments: -

- -
    - -
  • 1st Constructor : - Name + Coordinates of origin, X axis direction, Y axis direction

  • - -
  • 2nd Constructor : - Name + reference object.

  • - -
  • 3rd Constructor : - Name + 1 point of origin + X axis direction, Y axis direction.

  • -
- -

 

- -

.

- -

 

- -

Dialog Box:

- -

 

- - ---- - - - - -
-

-

-

 

- -

 

- -

  

- -

 

- -

Example:

- -

 

- -

- - - - diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image27.gif b/doc/salome/gui/GEOM/files/salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image27.gif deleted file mode 100755 index 216da7531c545cbe281a379c8d97b8b634be793c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 880 zcmZ?wbhEHb6k!ly_|Cw<@SkDnqNQust=+n5>)u^^o2Oj@ij9KN5Euy|z{tR;_>+YZ zlnHb|{srX;2M%9`|C}-&8x|aF{?Ek|(XnCS;dTK|A&CHm23JOA4wpL_8yMUhg|*|( t>?nNL(614^D(2?IhSMFaNvFO@7%n-=AYtkzazJ>g_gtN3E*=gBYXJ3LFE{`I diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image28.gif b/doc/salome/gui/GEOM/files/salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image28.gif deleted file mode 100755 index 0667288b69cbf0bee91f3b101cf2d87c2e3bd751..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 904 zcmZ?wbhEHb6k!ly_|5(lNgTy1P62||G85StHbn?j7 zUGexN&(Ov1Y4)W;@Ud670yoo)lSa=D%~CBEbD3G3=H9Iu-*-i0OX{&jX1q#QITBVL TW3q2gbI}Y{_M6Md$Y2csO0_n= diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image29.gif b/doc/salome/gui/GEOM/files/salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image29.gif deleted file mode 100755 index 5ee22f3911cb80db08055f610f07a5f8c747cddc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 945 zcmZ?wbhEHb6k!ly_|5e857#SE9f3h$# zF#KoG0r?b^CmcBX82)q0cx+g3u%4BJL%_g6fuWgIOh~~ap`n3E!cc0(j)DU&O{`{7 zF&>*5+&j4Wxp+K3CAjryv8%~c1|=NrFcsWZ(qXjJca9!!&mWIMm6Lrg$y%)vlO7*! z(V8t~TV<&3v{2~3?GlcXrvVHJ2bBOU&+obuqrR999d-%}ekT$xN% tja(!?CtaCk9{g{&q~X&`(*@aiWE>_wxV(Wcm2Iu%7ljMkn3$OutO3SGKf?e3 diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image31.gif b/doc/salome/gui/GEOM/files/salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image31.gif deleted file mode 100755 index 82a696852cdd68c3b12720ff131f533098596202..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 938 zcmZ?wbhEHb6k!ly_|5{%EDt2A<%HNo<+h>CqhB7v6aEf%7mj~ zAww6FvXP6X0E2gng!rsEkqHM*Ofz!d^<+h%LgRc5?vyD%f*!bcns;lt-njVa+ycXN zqct;4o(3+lV|UqN8Ia-Mr6p?>D|zL~0mh7lvua-&C7xTvu&yZdSK+(;4Gh)*NyJ5) diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image32.gif b/doc/salome/gui/GEOM/files/salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image32.gif deleted file mode 100755 index f74b5f0365cf714c4bcbbcdaf66b556ab9be0f06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 900 zcmZ?wbhEHb6k!ly_|5!z)HckOMSb_pUmN{)uWa18+_ z1}4RyEQ|~c{~2^Zegx$S2aZIB|C}-&8x|aFW)}Qo?BH;qfr*V##vtIp0mc>yl5LP_~RkK;5Au+|AdI==4EFms^n_97&J66PSEEJx$|TF;-iyY WgE!f5ELeGQsieBxUQQzg25SJ!^*QqZ diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image33.gif b/doc/salome/gui/GEOM/files/salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image33.gif deleted file mode 100755 index 72dd5f5ccf968cfa7fb6c383c5d7193ff2cddddd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 918 zcmZ?wbhEHb6k!ly_|5}TQNdvWJvu{u+qcC(zy v&7c(r7P$pWm2w!TotSRK`e(MJuySa-DZhh>!-Cb<*T-?^_+%L - - - - -Titre - - - - - - - - - - - - -

Using boolean operations

- -

 

- -

In GEOM for construction of more complex geometrical objects - (2D & 3D elements) you can use the following boolean operations:

- -

 

- - - - - -

 

- -

TUI command:

- -

geompy.MakeBoolean(Shape1, - Shape2, Operation), where Shape1 is the first argument and Shape2 - is the second argument of Boolean operation, Operation is a type of the - Boolean operation (1 – Common, 2 – Cut, 3 – Fuse, 4 – Section).

- -

 

- -

To use boolean operations:

- -

 

- -

In the - main menu select Operations > Boolean.

- -

 

- -

 

- -

Fuse -

- -

 

- -

Description: - Fuses 2 shapes.

- -

 

- -

Result: - GEOM_Object (COMPOUND).

- -

 

- -

Arguments: - Name + 2 shapes.

- -

 

- -

Dialog Box:

- -

 

- -

- -

 

- -

Example:

- -

 

- -

 

- -

 

- -

 

- -

Common

- -

 

- -

Description: - The common part of two shapes is cut and transformed into an independent - geometrical object.

- -

 

- -

Result: - GEOM_Object (COMPOUND).

- -

 

- -

Arguments: - Name + 2 shapes.

- -

 

- -

Dialog Box:

- -

 

- -

- -

 

- -

Example:

- -

 

- -

 

- -

 

- -

 

- -

Cut

- -

 

- -

Description: - Cuts a shape with another one.

- -

 

- -

Result: - GEOM_Object (COMPOUND).

- -

 

- -

Arguments: - Name + 2 shapes.

- -

 

- -

Dialog Box:

- -

 

- -

- -

 

- -

Example:

- -

 

- -

 

- -

 

- -

 

- -

Section

- -

 

- -

Description: - Gets the section between 2 shapes.

- -

 

- -

Result: - GEOM_Object (COMPOUND).

- -

 

- -

Arguments: - Name + 2 shapes.

- -

 

- -

Dialog Box:

- -

 

- -

- -

 

- -

 

- -

Example:

- -

 

- -

 

- -

 

- -

  

- - - - diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_booleangui_functions_salome2_sp3_booleangui_functions_image1.gif b/doc/salome/gui/GEOM/files/salome2_sp3_booleangui_functions_salome2_sp3_booleangui_functions_image1.gif deleted file mode 100755 index 129d17d63ccf1d079c34488723707ab81cdd51b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 943 zcmZ?wbhEHb6k!ly_|5Yy-L!S@uD#9EEg^_{bKZ6d)kDxr^z|q6-pHs$T!vaSJW=4gG69SA*jSMV20u=`w8r#`~z5cWt zD!X^GawLV^D0q0HSJs$GBjG{Ai568~wUm>BX=f%2{}+`|PXvE`M=Y*lxswVZ~_oO^}ctB#($_$p`v6R&{8gUty?=5U_XV)Y7m O+pxRhvlA}|gEatE4oYwU diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_booleangui_functions_salome2_sp3_booleangui_functions_image2.gif b/doc/salome/gui/GEOM/files/salome2_sp3_booleangui_functions_salome2_sp3_booleangui_functions_image2.gif deleted file mode 100755 index 56ec71d4086319d7ec4d432a6365709d32408c6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 952 zcmZ?wbhEHb6k!ly_|5(*}Fv~};Uz0K1uLF7lt(GVDx zA;84Ir1+DCk%8eqgAT}ppgiHgF_qyzr;Nvj1&$1yLQDof{0}%VFmrIY6dX9<)W)y; z&w0j%#m89$I3*NL2&y=@Gdbt|IU&^0$jsqUwkJa1>9OhBqVvvZe4Nk7#GH{768YhI z!(xxgSu6*(th~I8$9q$V$ASZlGr8txEsYF%;V_$F)iaY!fj5_CS_kWuYAslMdz%fb coQA`J*N(j^+wG2e7w9$aZ(t7R(*}Fv~};Uz0K1uLF7lt(GVDx zA;8GMsQ8nGk%8eqgAT}ppgiHgF_qyzr;Nvj1&$1yLR=mv0u-GYm^nCH3Jx$FYLgIl zm{MW*_;3dsM_J5_iA#=k{I{yQlJS6nX(ErWnF;5D)KfF$G8g?xZ#cj(RnA=Mjpc$B z7Z+Yy-L!S@uD#9EE zKbf&fT3SqG=0;`rc2*u4hM5J5C#R^fcByy>Ejqx&%#yPwVv~X&qeC;-R?Y=0E-rQx ze-~oa(7-s&NYG<$7lY=pX>6Wmy(cfIx-E)uue(|?MeFKDCSC!F4PO@cPVjjAO=U${ N!` - - - - -Titre - - - - - - - - - - - -

Building - geometrical objects

- -

In GEOM you can create basic and advanced geometrical objects - (2D & 3D elements) using the following building functions:

- -

 

- - - -

 

- -

 

- -

 

- -

To use Explode:

- -

 

- -

In the main menu select New - Entity > Explode.

- -

 

- -

Explode

- -

 

- -

Description: - Returns a list of subshapes (vertices, edges, wires etc.) of the given - shape.

- -

 

- -

Result : - List of GEOM_Objects.

- -

 

- -

TUI Command: -

- -
    - -
  • geompy.SubShape(Shape, - ListOfID), where Shape is a shape whose subshape(s) is (are) retrieved, - ListOfID is a list of requested sub shapes IDs. To get a subshape ID use - method GetSubShapeID().

  • - -
  • geompy.SubShapeAll(Shape, - TypeOfShape), where Shape is a shape to be exploded on sub shapes - of type TypeOfShape.

  • -
- -

 

- -

Arguments: - 1 SHAPE + 1 type of SubShape.

- -

 

- -

Dialog Box:

- -

 

- -

- -

 

- -

 

- -

To use building functions:

- -

 

- -

In the main menu select - New Entity > Build - submenu.

- -

 

- -

Edge

- -

 

- -

Description: - Creates an edge.

- -

 

- -

Result: GEOM_Object - (EDGE).

- -

 

- -

TUI Command: - geompy.MakeEdge(Vertex1, Vertex2), - where Vertex1 and Vertex2 are correspondingly the first and the last vertex - of the edge.

- -

 

- -

Arguments: - Name + 2 vertices.

- -

 

- -

Dialog Box:

- -

 

- -

- -

 

- -

Example:

- -

 

- -

- -

 

- -

Wire

- -

 

- -

Description: - Creates a wire.

- -

 

- -

Result: GEOM_Object - (WIRE).

- -

 

- -

TUI Command : - geompy.MakeWire(ListOfShape), - where ListOfShape is a list of edges and/or wires from which the wire - to be constructed.

- -

 

- -

Arguments: - Name + List of connected wires or edges..

- -

 

- -

Dialog Box:

- -

 

- -

- -

 

- -

Example:

- -

 

- -

- -

 

- -

Face

- -

 

- -

Description: - Creates a face.

- -

 

- -

Result: GEOM_Object - (FACE).

- -

 

- -

TUI Command: - geompy.MakeFace(Wire, WantPlanarFace), - where Wire is a wire and if boolean parameter WantPlanarFace is planar - then only a planar face or no face is constructed.

- -

 

- -

Arguments: - Name + 1 wire.

- -

 

- -

Dialog Box:

- -

 

- -

- -

 

- -

Example:

- -

 

- -

- -

 

- -

Shell

- -

 

- -

Description: - Creates a shell.

- -

 

- -

Result: GEOM_Object - (SHELL).

- -

 

- -

TUI Command: - geompy.MakeShell(ListOfShape), - where ListOfShape is a list of faces and (or) shells from which the shell - is constructed.

- -

 

- -

Arguments: - Name + List of faces having connected edges.

- -

 

- -

Dialog Box:

- -

 

- -

- -

 

- -

Example:

- -

 

- -

- -

 

- -

Solid

- -

 

- -

Description: - Creates a solid - closed geometrical 3D element.

- -

 

- -

Result: GEOM_Object - (SOLID).

- -

 

- -

TUI Command: - geompy.MakeSolid(ListOfShape), - where ListOfShape is a list of shells from which the solid is constructed.

- -

 

- -

Arguments: - Name + A closed shell or a list of shells.

- -

 

- -

Dialog Box:

- -

 

- -

- -

 

- -

 

- -

Compound

- -

 

- -

Description: - Creates a compound.

- -

 

- -

Result: GEOM_Object - (COMPOUND).

- -

 

- -

TUI Command: - geompy.MakeCompound(ListOfShape), - where ListOfShape is a list of shapes from which the compound is constructed.

- -

 

- -

Arguments: - Name + List of shapes.

- -

 

- -

Dialog Box:

- -

 

- -

- -

 

- -

Example:

- -

 

- -

- -

 

- -

 

- -

 

- - - - diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_displaygui_functions.htm b/doc/salome/gui/GEOM/files/salome2_sp3_displaygui_functions.htm deleted file mode 100755 index 54d59fb05..000000000 --- a/doc/salome/gui/GEOM/files/salome2_sp3_displaygui_functions.htm +++ /dev/null @@ -1,226 +0,0 @@ - - - - - -Titre - - - - - - - - - - - -

Displaying\hiding objects

- -

Visualization is available in both, OCC and VTK viewers. - These viewers work independently, i.e. visibility of objects and their - graphic attributes may differ in OCC and VTK viewer. It is reasonable to use the OCC viewer for - GEOM module.

- -

 

- -

Displaying\hiding - different geometrical objects in the viewer is possible using the following - operations:

- -

 

- - - -

 

- -

To display\hide one or several objects in the viewer:

- -

 

- -

In the main menu select View - or right-click on the necessary object in the Object Browser and - from the associated pop-up menu choose the required operation.

- -

 

- -

 

- -

DisplayAll -

- -

 

- -

Description: - Displays all geometrical objects which have been created or imported in - the current study.

- -

 

- -

TUI - Command: sg.DisplayAll()

- -

 

- -

 

- -

EraseAll

- -

 

- -

Description: - Erases all shapes displayed in the viewer.

- -

 

- -

TUI - Command: sg.EraseAll()

- -

 

- -

 

- -

Display

- -

 

- -

Description: - Displays an object in 3D viewer.

- -

 

- -

TUI - Command:

- -

 

- -

 

- -

DisplayOnly

- -

 

- -

Description: - Displays only the selected geometrical element.

- -

 

- -

TUI - Command: sg.DisplayOnly(ID)

- -

 

- -

 

- -

Erase

- -

 

- -

Description - : Erases only the selected shape.

- -

 

- -

TUI - Command : sg.EraseOnly(ID)

- -

 

- -

 

- - - - diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_displaygui_functions_salome2_sp3_displaygui_functions_image51.gif b/doc/salome/gui/GEOM/files/salome2_sp3_displaygui_functions_salome2_sp3_displaygui_functions_image51.gif deleted file mode 100755 index 83388cc3d2f2ed2d18e837c5036474f8d0c611aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 946 zcmZ?wbhEHb6k!ly_|5gdEz_<+l#G(2 zAu#+xfRTYw@h1x-1H*p?9gy!pdBTCCpW#2JjK_ur2OAmqm;x9Q92%L~1sP^|Y<$ST z#3mr&Q}IE*ftgc8OTb~%5{5QDMXfa!8%XM_|+^D z7BmDdW^>pT^J>y!Ulzsibu|)G7X;6C2#pdwA(Vctm%Fygcjw0?5sdNGU0Wr#Jh;Hb Y!ggY+cf+dFEF63DqN`w{F_Hch}yQY1fV%IRcg+B}PMF z*oJ`OPZqG>bU-91PdIQ)W)S9(@z}87AOjPlfdc|=Sc7A!o>z{IAK!LeZR z@qPvwF^L5e79MVwG@o}z;^TpXE!@ecSPU8(jG`KVvmVg zJO{R{3|`2(P>3hs^Rp{+jFOo$EGIlZv^-(=vnjW>K66{9dUDYlPs6uf^H|+i-SsGW V;J?BDwV#T?g7xwHS(um@tN|h@RNMdn diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_displaygui_functions_salome2_sp3_displaygui_functions_image54.gif b/doc/salome/gui/GEOM/files/salome2_sp3_displaygui_functions_salome2_sp3_displaygui_functions_image54.gif deleted file mode 100755 index 5bed6049e63531ef48cf5b7edb4b72d8fa2acce8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 994 zcmZ?wbh9u|6k!ly_|5DqN`w{F_H zch}yQY1a-MIB?|1kz>b?{r?ZtF$zXQU^s+;;!hT^H*`QGC{H+W>}QbYknspmXkg>z zQMn(o}0Ne&^DF6Tf diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_displaygui_functions_salome2_sp3_displaygui_functions_image55.gif b/doc/salome/gui/GEOM/files/salome2_sp3_displaygui_functions_salome2_sp3_displaygui_functions_image55.gif deleted file mode 100755 index 4890bda6c1cb65cd1262ceba43e392b484df9506..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 987 zcmZ?wbh9u|6k!ly_|5)u^^o2OlB znRe~Skt4^BAN&6wsCE>LhQRO%0mYvzV9)4)NKl?|;Ml<+%^~AapuoV!!>5+RkZ_QR ziAkEN;K2e1=XM4G6^$7W4!E`}7>XGjxS-fLS)I`)f>WUZsGCE{fMH|Gi3tpDxAt@z zIxw^{upQYGG5O)CsiKTBHzY2m1kY3QGz*x(@YH>tqEH&+j{$`QShtgX#KpS8pyzPFfMjeJ-SD Y@<)eNsm9UIDh@O}KR=(Jg@wTy0I>FIp8x;= diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_generationgui_functions.htm b/doc/salome/gui/GEOM/files/salome2_sp3_generationgui_functions.htm deleted file mode 100755 index c944e7b4a..000000000 --- a/doc/salome/gui/GEOM/files/salome2_sp3_generationgui_functions.htm +++ /dev/null @@ -1,309 +0,0 @@ - - - - - -Titre - - - - - - - - - - - -

Generating complex objects

- -

Generation operations in GEOM are used to create advanced - geometrical objects (3D elements). They are:

- -

 

- - - -

 

- -

To use generation operations:

- -

 

- -

In the main menu select New - Entity > Generation.

- -

 

- -

Extrusion

- -

Description: - Creates an extruded shape.

- -

 

- -

Result: GEOM_Object - (edge, face, solid or compsolid).

- -

 

- -

TUI Command : - geompy.MakePrism(baseShape, Vector, - Height), where baseShape is a basis of the prism, Vector is a normal - of the prism and Height is a height of the prism.

- -

 

- -

Arguments: - Name + 1 shape (vertex, edge, wire, face or shell) serving as base object - + 1 vector (for direction) + 1 value (dimension).

- -

 

- -

Dialog Box:

- -

 

- -

- -

 

- -

Example:

- -

 

- -

 

- -

 

- -

Revolution

- -

- -

Description: - Creates an extruded shape by revolution.

- -

 

- -

Result: GEOM_Object - (edge, face, solid or compsolid).

- -

 

- -

TUI Command: - geompy.MakeRevolution(Shape, Axis, - Angle), where Shape is a shape to rotate, Axis is the axis of the - revolution and Angle is an angle by which Shape has to be rotated around - Axis.

- -

 

- -

Arguments: Name + 1 shape (vertex, edge, - wire, face or shell) serving as base object + 1 vector (for direction) - + 1 value (angle).

- -

 

- -

Dialog Box:

- -

 

- -

- -

 

- -

Example:

- -

 

- -

 

- -

 

- -

Filling

- -

 

- -

Description: - Creates a curving face using several curves.

- -

 

- -

Result: GEOM_Object - (face).

- -

 

- -

TUI Command: - geompy.MakeFilling(Shape, MinDegree, - MaxDegree, Tol2D, Tol3D, NbIter), where Shape is a shape to fill, - MinDegree and MaxDegree are correspondingly maximal and minimal degree, - Tol2D is a tolerance for 2D and Tol3D is a tolerance for 3D, NbIter is - a number of iterations.

- -

 

- -

Arguments: Name + 1 List of edges + - 5 Parameters (Min. degree, Max. degree, Number of iterations, 2D tolerance, - 3D tolerance).

- -

 

- -

Dialog Box:

- -

 

- -

- -

 

- -

 

- -

Example:

- -

 

- -

 

- -

 

- -

Pipe

- -

- -

Description: - Creates an extruded shape.

- -

 

- -

Result: GEOM_Object - (edge, face, solid or compsolid).

- -

 

- -

TUI Command: - geompy.MakePipe(baseShape, pathShape), - where baseShape is a shape to be extruded, pathShape is a path along which - baseShape is extruded.

- -

 

- -

Arguments: Name + 1 shape (vertex, edge, - wire, face or shell) serving as base object + 1 shape (edge, face or shell) - for definition of the path.

- -

 

- -

Dialog Box:

- -

 

- -

- -

 

- -

Example:

- -

 

- -

 

- -

 

- - - - diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image56.gif b/doc/salome/gui/GEOM/files/salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image56.gif deleted file mode 100755 index d7adb4c4eeb96e18a93553424f35aa802a820797..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 961 zcmZ?wbhEHb6k!ly_|5+YZlm&D^9s}hG2ab6R|2btmHY_+;&&b9Up;6G_)X2agz;a;0 zqN82hoB|pN3XF#sIQjKtP6i}6F|e`oEXXi?bZ|Pmvy_XaU<2di{~oWFa0Whdp31DZ zsb|N=1SV#w$!bq$Bru*?&XVdR%dzQ|&pZKJB^{5VB)|EJ8~+v02v)qYiB*<~Vb>=e q|7|=G$F5o!zHsd+Hoq6Lqj-tiGCxi&hlB+i9v)(!#l^$HU=0AaSyhYx diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image57.gif b/doc/salome/gui/GEOM/files/salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image57.gif deleted file mode 100755 index 4f79860421f20bff5bd4ec16348fb7be64a7b79f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 981 zcmZ?wbhEHb6k!ly_|5@tK~Eef$y(nNi8NF_+{abS zg|YXU}&5nC@!tgu+hMAg#fpc K?*vN)25SI;0bLUS diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image58.gif b/doc/salome/gui/GEOM/files/salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image58.gif deleted file mode 100755 index 178eb64031e4f2d70e095cd00ca938a0efcdf257..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 965 zcmZ?wbhEHb6k!ly_|5Cdn9ES-LY7}aAE=vgMvrGr=UkOXI&5mFqn;?2phLub$CFtqA3mph tZRN8R^PMHAeymqkQ_UjaK(5y`HX)HU5~k}euVEJ7l6ul`!^s8)YXHGHRfx#L84f#{# diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_geomtoolsgui_functions.htm b/doc/salome/gui/GEOM/files/salome2_sp3_geomtoolsgui_functions.htm deleted file mode 100755 index bcbaab051..000000000 --- a/doc/salome/gui/GEOM/files/salome2_sp3_geomtoolsgui_functions.htm +++ /dev/null @@ -1,156 +0,0 @@ - - - - - -Titre - - - - - - - - - - - -

Importing\exporting geometrical objects

- -

In GEOM you can import - and export geometrical objects from\into BREP, IGES, STEP files.

- -  - -

To import geometrical objects from a BREP, IGES, STEP file:

- -

 

- -

From the File - menu choose Import and - select the required format of the file for importation. Then you will - see a standard dialog box allowing to search for and choose *.brep, *.iges - or *.step  file:

- -

 

- -

- -

 

- -

Select the required file and click OK. You file will be imported into GEOM - and its contents (geometrical objects) will be displayed in the Object Browser.

- -

 

- -

TUI command: - geompy.Import(FileName, FormatName), - where FileName is a name of file which contains a shape, FormatName is - a string which describes a format of the file.

- -

 

- -

To export geometrical objects into a BREP, IGES, STEP file:

- -

 

- -

Select the object you wish to export, then - from the File menu choose Export and select the required format - of the file for exportation. You will see a standard dialog box allowing - to enter the name and select the location for the file which will be exported:

- -

 

- -

- -

 

- -

Click OK - to confirm your exportation.  

- -

 

- -

TUI command: - geompy.Export(Shape, FileName, FormatName), - where Shape is a shape to be exported, FileName is a name of a file to - which the shape is exported, FormatName is a string which describes the - file format.

- -

 

- -
  •  

  • - -

     

    - - - - diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_measuregui_functions.htm b/doc/salome/gui/GEOM/files/salome2_sp3_measuregui_functions.htm deleted file mode 100755 index 7242d8a04..000000000 --- a/doc/salome/gui/GEOM/files/salome2_sp3_measuregui_functions.htm +++ /dev/null @@ -1,589 +0,0 @@ - - - - - -Titre - - - - - - - - - - - - -

    Using measurement tools

    - -

    Measurement tools in GEOM are necessary for getting different - data concerning created or imported geometrical objects. They are:

    - -

     

    - - - -

     

    - -

    To use measurement tools:

    - -

     

    - -

    In the main menu select Measures - submenu.

    - -

     

    - -

     

    - -

      Point coordinates

    - -

     

    - -

    Description: - Returns the coordinates of a point.

    - -

     

    - -

    Result: Point - coordinates (X, Y, Z) in 3D space in the form of Python Tuple.

    - -

     

    - -

    TUI command: - geompy.PointCoordinates(Point), - where Point is a point whose coordinates are inquired.

    - -

     

    - -

     

    - -

    Arguments: - 1 point.

    - -

     

    - -

    Dialog Box:

    - -

     

    - -

    - -

     

    - -

     

    - -

    Basic properties -

    - -

     

    - -

    Description: - Return the properties (Length, Surface & Volume) of a definite geometrical - object.

    - -

     

    - -

    Result: Display - Length, Surface & Volume in the form of Python Tuple.

    - -

     

    - -

    TUI command: - geompy.BasicProperties(Shape), - where Shape is a shape whose properties are inquired.

    - -

     

    - -

    Arguments: - 1 shape.

    - -

     

    - -

    Dialog Box:

    - -

     

    - -

    - -

     

    - -

     

    - -

    - Center of mass

    - -

     

    - -

    Description: - Creates a gravity center of a shape and returns its coordinates.

    - -

     

    - -

    Result: GEOM_Object - (vertex).

    - -

     

    - -

    TUI Command: - geompy.MakeCDG(Shape), where - Shape is the shape for which a center of gravity is computed.

    - -

     

    - -

    Arguments: - 1 shape.

    - -

     

    - -

    Dialog Box:

    - -

     

    - -

    - -

     

    - -

     

    - -

    Inertia -

    - -

     

    - -

    Description: - Returns the inertia axis of a geometrical object.

    - -

     

    - -

    Result: Display - the matrix and moments of inretia in the form of Python Tuple (I11, I12, - I13,

    - -

     I21, - I22, I23,

    - -

     I31, - I32, I33,

    - -

     Ix, - Iy, Iz).

    - -

     

    - -

    TUI command: - geompy.Inertia(Shape), where - Shape is a shape for which a matrix of inertia and moment of inertia are - returned.

    - -

     

    - -

    Arguments: - 1 shape.

    - -

     

    - -

    Dialog Box:

    - -

     

    - -

    - -

     

    - -

     

    - -

    Bounding - box

    - -

     

    - -

    Description: - Returns the dimensions of the bounding box of a geometrical object.

    - -

     

    - -

    Result: Displays - the dimensions of the bounding box of a geometrical object in the form - of Python Tuple (Xmin, Xmax, Ymin, Ymax, Zmin, Zmax).

    - -

     

    - -

    TUI command: geompy.BoundingBox(Shape), where Shape is a shape for which a bounding - box is computed.

    - -

     

    - -

    Arguments: - 1 shape.

    - -

     

    - -

    Dialog Box:

    - -

     

    - -

    - -

     

    - -

     

    - -

    Min. distance

    - -

     

    - -

    Description: - Returns the min. distance between 2 geometrical objects.

    - -

     

    - -

    Result: Displays - the min. distance.

    - -

     

    - -

    TUI command: geompy.MinDistance(Shape1, - Shape2), where Shape1 and Shape2 - are shapes between which the minimal distance computed.

    - -

     

    - -

    Arguments: - 2 shapes.

    - -

     

    - -

    Dialog Box:

    - -

     

    - -

    - -

     

    - -

     

    - -

    - Tolerance

    - -

     

    - -

    Description: - Returns the tolerance of a geometrical object.

    - -

     

    - -

    Result: Displays - the tolerance values (FaceMinTol, FaceMaxTol, EgdeMinTol, EgdeMaxTol, - VertexMinTol, VertexMaxTol).

    - -

     

    - -

    TUI command: geompy.Tolerance(Shape), where Shape is a shape for which minimal - and maximal tolerances are returned.

    - -

     

    - -

    Arguments: - 1 shape.

    - -

     

    - -

    Dialog Box:

    - -

     

    - -

    - -

     

    - -

     

    - -

    WhatIs -

    - -

     

    - -

    Description: - Returns the type of a geometrical object.

    - -

     

    - -

    Result: Displays - all elements composing your geometrical object.

    - -

     

    - -

    TUI command: - geompy.WhatIs(Shape), where Shape - is a shape from which a description is returned.

    - -

     

    - -

    Arguments: - 1 shape.

    - -

     

    - -

    Dialog Box:

    - -

     

    - -

    - -

     

    - -

     

    - -

    Check -

    - -

     

    - -

    Description: - Returns True if this geometrical object is valid.

    - -

     

    - -

    Result: Boolean.

    - -

     

    - -

    TUI Command: - geompy.CheckShape(Shape), - where is shape which is checked for validity.

    - -

     

    - -

    Arguments: - 1 shape.

    - -

     

    - -

    Dialog Box:

    - -

     

    - -

    - -

     

    - -

     

    - -

     

    - -

    Check compound - of blocks

    - -

     

    - -

    Description: - Checks whether a shape is a compound of glued blocks. To be considered - as a compound of blocks, the given shape must satisfy the following conditions:

    - -
      - -
    •  Each - element of the compound should be a Block (6 faces and 12 edges);

    • - -
    •  A - connection between two Blocks should be an entire quadrangle face or an - entire edge;

    • - -
    •  The - compound should be connected;

    • - -
    •  Two - quadrangle faces should be glued.

    • -
    - -

     

    - -

    Informs of the following possible errors:

    - -
      - -
    • not a block,

    • - -
    • not glued,

    • - -
    • not connected,

    • - -
    • extra - or degenerated edge.

    • -
    - -

     

    - -

    Result: Boolean; - highlight in the viewer.

    - -

     

    - -

    TUI Command: geompy.CheckCompoundOfBlocks(Compound), - where the Compound is a shape, investigated in order to see, if it is - a valid compound of blocks. Validity flag is returned, encountered errors - are printed in the python console.

    - -

     

    - -

    Arguments: - 1 shape.

    - -

     

    - -

    Dialog Box:

    - -

     

    - -

    - -

     

    - - - - diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image71.gif b/doc/salome/gui/GEOM/files/salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image71.gif deleted file mode 100755 index 02e4c8ff85be6be18b96850984173e3537617f66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 934 zcmZ?wbhEHb6k!ly_|5Yy-L!S@uDvbOu0bS6$g^_{bKZ6d)kDxr^z|qX`pHs$T!ve=f20lI(g#?GjCI%(1IT9NmIyVXP8W_vLNLjxnSo2f;(}qyiHTy?S}i99lN~2=B#W6iBs83#@4zV$;9;nIaiW}~ zl8i!#THsvn^h-LO2Abzu16H3?c^Q%%wj_H0KWzhthMSu+vW09C7Bt-6UJ%a3!@*z; E0G3rm$^ZZW diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image72.gif b/doc/salome/gui/GEOM/files/salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image72.gif deleted file mode 100755 index 1aebb4f080981edfb2ef0b00d1444427eb20e2b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 962 zcmZ?wbhEHb6k!ly_|5FMj4Gi%P$MN5}1Te^1L+O3Liu51U%}*+m=- z1R9QZOEB_CI3z4;YLb$*+R~wL(7lCAva4l9;iH4o^^H%3+?b?vs+F7N#S+ipMQ7_d zL)Z1Zn4HkW%sNRcG>hS&=ZpaUQ)e_pm!D|o=a%sZFnk(1%{70O$OVBl-W$12e(I?Z s%Q)3rz@9NhT5QFIsl}WU53B?n8+SBVTj{P)U~D?vAvjw`LV&><0GCWzB>(^b diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image73.gif b/doc/salome/gui/GEOM/files/salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image73.gif deleted file mode 100755 index f11323ae39d49a13ed1daebb5022391bfc9a004a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 960 zcmZ?wbhEHb6k!ly_|5FMj4Gi%P$MN8MNTf24B*1fy-woJPQQ8G%7 zhQRO(0Y(N!#h)yU3=IDnbU?lXfa^*Rf zj!(}|b+8M|7$_`gxXi@HHzmiiKqIt8L0ZWpL3E-2LFMj4GHJ@3S#y>yTDo@K+O3Q&oh6TyT8JSrG1R5L|9a}Vb)eJfXA3Jpjure@s1|@hm%31S;RD4$T zX*c3k*uk0Lcziwsiv+J_$O5J|du6#jGmM^|nrjxDbTsP1va^f%t>eDD63PmhsoLqr zYW0yJaI<|Xlf+C0<&ede)_M~xCa2uoDwuw$R8xU5qFt7iXF+w*f@93A91Srs8=hR7 P%O#|6qoy?7fx#L8t-f0> diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image75.gif b/doc/salome/gui/GEOM/files/salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image75.gif deleted file mode 100755 index 1c8dd915f67df189f05cfea3e0ccf185f30dc767..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 938 zcmZ?wbhEHb6k!ly_|5@d$EKqD{<7D7bNN{-I+`;>w z^Tvsdi`|<9SYxJm2tIV}U>4R2shqIXaXOQ;6-&YchNjm4eoi)?o09x`94h_3tTbMH zXfcbqT<9;Mw4mh{(NZi9p(>#atdVh3e+n=(GO>%j+M~54#cxwc`8$~`L5*XZT<)$a MJ@HNbLIZ;}0A+7WTL1t6 diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image76.gif b/doc/salome/gui/GEOM/files/salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image76.gif deleted file mode 100755 index 7968c6143466a08126d2bb9d949485375c7f844e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 949 zcmZ?wbhEHb6k!ly_|5UAA=Xy0u$3ZQZ+TFGPNn91VeC z83IfUOo~5Q7#SG;Gw6Uk2+9)<9FrLSbIN!GC^R&)ax2+zEMRDAzH#FE*>4 zp5`$*Yl`K^7nkNa${&-76w+v5R1juUWiVE{KG!C_%Elrjp=mQ)^}jh82@dBrWp*F> YGkrnQFMj4GHJ@3S#y>yTDo-E(zWZ>Zr!wX@2gd4?N2v%xX&a}ub^rhiK=T^StxRO&3)XuD9;mNuBL*)6D4avMg ZDHaV37q>_{3iZyIl6iRvJ2Ml5H2?|5O!xo* diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image78.gif b/doc/salome/gui/GEOM/files/salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image78.gif deleted file mode 100755 index 8de970b298e57460f8abd44b479e4f02b9b303c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1005 zcmZ?wbhEHb6k!ly_|CwBaD$fq`LZOIu4%U(b|DQ|8Q?vvkqYrOTGCUAK1Y zrmcH-?QNNMZRzRv#||Gm_xe8&09B8I(GVEwA;84Ir1+DCkpYhB=U}#|F;8Tg%z`)SN!Yr<`V@1N_qpUo9NUkbY!icmMMlELrH7|VbFxG@2skh?v+}4^NEkLcGYJTCl&o+#$jrbZBBN2j z(0IL5k<%z5Ae8aM?2OB+j!HT{KfJ+Sd=~F-{sZS28MqW81Qb?>v+$|&l|&>wWL(3! zOK*qQ0qsNVT(g2$YlL38^^~66w&&LN*T - - - - -Titre - - - - - - - - - - - - -

    Basic operations

    - -

    In GEOM you can perform - basic operations with geometrical objects aimed at creation of more complex - shapes. These operations are:

    - -

     

    - - - -

     

    - -

    To perform basic operations on geometrical objects:

    - -

     

    - -

    In the main menu select Operations.

    - -

     

    - -

     

    - -

    Partition

    - -

     

    - -

    Description: - Builds a shape by intersection.

    - -

     

    - -

    Result: GEOM_Object.

    - -

     

    - -

    TUI Command: - geompy.MakePartition(ListOfShapes, - ListOfTools, ListOfKeepInside, ListOfRemoveInside, Limit, RemoveWebs, - ListOfMaterials), where ListOfShapes is a list of shapes to be - intersected, ListOfTools is a list of shapes to intersect the shapes from - ListOfShapes, ListOfKeepInside is a list of shapes outside which the results - will be deleted, ListOfRemoveInside is a list of shapes inside which the - results will be deleted, Limit is a type of the result shapes, if RemoveWebs - is True the Glue 3D algorithm will be performed on the results, ListOfMaterials - is a list of materials indices for each shape, it makes sense only if - RemoveWebs is True.

    - -

     

    - -

    Arguments: - Up to 4 shapes + reconstruction limit.

    - -
      - -
    • 1st - Constructor: Name + 2 shapes (first shape will be intersected by the - second shape) + reconstruction limit.

    • - -
    • 2nd - Constructor: Name + 1 shape which will be intersected + 1 cutting - face.

    • -
    - -

     

    - -

     

    - -

    Dialog Box:

    - -

     

    - -

    - -

     

    - -

    - -

     

    - -

    Example:

    - -

     

    - -

     

    - -

     

    - -

    Archimede

    - -

     

    - -

    Description: - Creates a plane corresponding to the modeled water-line of the object - plunged into the water (in Z direction).

    - -

     

    - -

    Result: GEOM_Object.

    - -

     

    - -

    TUI Command: - geompy.Archimede(Shape,Weight,WaterDensity,MeshingDeflection), - where Shape is a shape to put into the water, Weight is a weight of the - shape, WaterDensity  is - density of water, MeshingDeflection is a deflection of the mesh, using - to compute the section.

    - -

     

    - -

    GUI Arguments: - Name + 1 shape  + - 3 values (Weight, Water Density & Meshing Deflection).

    - -

     

    - -

    Dialog Box:

    - -

     

    - -

    - -

     

    - -

    Example:

    - -

     

    - -

       

    - -

     

    - -

     

    - -

    Fillet

    - -

     

    - -

    Description: - Make fillets of the edges of a shape.

    - -

     

    - -

    Result: GEOM_Object.

    - -

     

    - -

    TUI Command: - geompy.MakeFillet(Shape, Radius, - ShapeType, ListOfShapeID), where Shape is a shape to create a fillet - on, Radius is a radius of the fillet, ShapeType is a type of shapes to - be processed, ListOfShapeID is a list of subshapeÂ’s Ids to be processed.

    - -

     

    - -

    Arguments:

    - -
      - -
    • 1st - Constructor: Name + 1 shape + 1 value (fillet radius).

    • - -
    • 2nd - Constructor: Name + 1 shape + 1 Selection of edges + 1 value (Fillet - radius).

    • - -
    • 3rd - Constructor: Name + 1 shape + 1 Selection of faces + 1 value (Fillet - radius).

    • -
    - -

     

    - -

    Dialog Box:

    - -

     

    - -

       

    - -

     

    - -

    Example:

    - -

     

    - -

     

    - -

     

    - -

     

    - -

    Chamfer

    - -

     

    - -

    Description: - Makes chamfer of the edges of a Shape.

    - -

     

    - -

    Result: GEOM_Object.

    - -

     

    - -

    TUI Command: -

    - -
      - -
    • geompy.MakeChamferEdge(Shape, - D1, D2, Face1, Face2), where Shape is a shape to create a chamfer - on, D1 is a chamfer size along Face1, D2 is a chamfer size along Face2, - Face1 and Face2 are indices of faces in Shape.

    • - -
    • geompy.MakeChamferFace(Shape, - D1, D2, ListOfFaceID), where Shape is a shape to create chamfer - on, D1 is a chamfer size along a face from  ListOfFaceID, -  D2 is a - chamfer size along two faces connected to the edge to which the chamfer - is applied, ListOfFaceID is a list of indices of faces in Shape.

    • -
    - -

     

    - -

    Arguments:

    - -

     

    - -
      - -
    • 1st - Constructor : Name + 1 SHAPE + 1 value (Chamfer dimension).

    • - -
    • 2nd - Constructor : Name + 1 SHAPE + 2 faces + 2 values (Chamfer dimensions).

    • - -
    • 3rd - Constructor : Name + 1 SHAPE + 1 Selection of faces + 2 values (Chamfer - dimensions).

    • -
    - -

     

    - -

    Dialog Box:

    - -

     

    - -

       

    - -

     

    - -

    Example:

    - -

     

    - -

     

    - -

     

    - -

     

    - -

     

    - -

     

    - -

     

    - -

    Block - multi-transformation

    - -

     

    - -

    Description: - Makes several translations of a block (solid) in one - or two directions depending on - the arguments specified by the user.

    - -

     

    - -

    Result: GEOM_Object.

    - -

     

    - -

    TUI Command: -

    - -
      - -
    • geompy. - MakeMultiTransformation1D(Block, DirFaceID1, DirFaceID2, NbTimes), - where Block is a block to be transformed, DirFaceID1 is an ID of the face - which defines the first direction of transformation, DirFaceID2 is an - ID of the face which defines the second direction of transformation, NbTimes - is a numeber of transformations.

    • - -
    • geompy. - MakeMultiTransformation2D(Block, DirFaceID1U, DirFaceID2U, NbTimesU, DirFaceID1V, - DirFaceID2V, NbTimesV), where Block is a block to be transformed, - DirFaceID1U and DirFace1V are IDÂ’s of the faces, which define directions - of the first transformation, DirFaceID1V and DirFaceID2V are IDÂ’s of the - faces which define directions of the second transformation, NbTimesU and - NbTimesV are numbers of transformations.

    • -
    - -

     

    - -

    Arguments:

    - -

     

    - -
      - -
    • 1D - transformation: Name + 1 hexahedral - solid + 1 or 2 faces + 1 integer (number of blocks)

    • - -
    • 2D - transformation: Name + 1 hexahedral - solid +

    • - -
        - -
      • 2 - faces and 1 integer, or

      • - -
      • 3 or 4 faces and 2 integers

      • -
      -
    - -

     

    - -

    Dialog Box:

    - - --- - - - -
    -

    -

    - -

     

    - -

    Example:

    - -

     

    - -

        

    - -

     

    - -

     

    - -

    Explode - on Blocks

    - -

     

    - -

    Description: - Returns blocks of the given compound. The user may define the type blocks - to be extracted by setting the minimum and maximum number of faces in - the target block. By checking the corresponding box the user may also - interactively choose the blocks from a compound .

    - -

     

    - -

    Result: GEOM_Object.

    - -

     

    - -

    TUI Command: - geompy.MakeBlockExplode(Compound, - MinNbFaces, MaxNbFaces), where Compound is a compound to be exploded - into the blocks, MinNbFaces, MaxNbFaces are correspondingly the minimal - and  the - maximal number of faces of the resulting blocks.

    - -

     

    - -

    Arguments: 1 compound + 1 integer (min. and max. number - of faces in the block to be extracted).

    - -

     

    - -

     

    - -

    Dialog Box:

    - -

     

    - -

    - -

     

    - -

    Example:

    - -

     

    - -

    - -

     

    - -

     

    - -

     

    - -

    Propagate

    - -

     

    - -

    Description: - Breaks a multitude of edges of a shape into groups (builds all possible - propagation groups).

    - -

     

    - -

    Result: List - of GEOM_Objects. Each Geom Object will contain a group of edges.

    - -

     

    - -

    TUI Command: geompy.Propagate(Shape), - where Shape is a shape to build propagation groups on.

    - -

     

    - -

    Arguments: 1 Shape.

    - -

     

    - -

     

    - -

    Dialog Box:

    - -

     

    - -

    - -

     

    - -

    Example:

    - -

     

    - -

         

    - - - - diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_operationgui_functions_salome2_sp3_operationgui_functions_image87.gif b/doc/salome/gui/GEOM/files/salome2_sp3_operationgui_functions_salome2_sp3_operationgui_functions_image87.gif deleted file mode 100755 index 03b8391c331adaacdbd4bb6bd1652b7bf15cf637..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 967 zcmZ?wbhEHb6k!ly_|5$YhORw<|X`E^uz+WmE}Z5K{DM<5TpCsWg6eviHA` zL`9|X!efkboLUYE3swd%XSb94qi*!ragjl&i9IhLL4uE&l7_mwP~Y7u8<7@lopWMr@g0HLl~{{R30 diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_operationgui_functions_salome2_sp3_operationgui_functions_image88.gif b/doc/salome/gui/GEOM/files/salome2_sp3_operationgui_functions_salome2_sp3_operationgui_functions_image88.gif deleted file mode 100755 index e38dcabd8320e670296bdb0abe2e835f99194647..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 955 zcmZ?wbhEHb6k!ly_|5Mmabj5cI&3Cdw1<^nRX4L zYLpxefngQ`ObkqlKUo+V82&TpfV>9E6Am0R82)q0cx*^G$i&Q`6LDg~LMH}hHW3Gd zfQExz|8=BT4s2ZP-pZ}u_a}V8l9Q9wc{u_K1XG;b83a@kIvE;IPgfN0TGH`h@%auG zwM`-`J}x@8NR(A0_SBao$NBQnk4hvq9cW}>%JsXtGFa(6lX-m89Z#c&*Cq(C3m7zr lCLY;daDSbv!IourcUK52sJ=2$zTZ^MsrAKv{O6SM*pT4J#=*!EabkjE12d->kBi5~ zMNSMNj64Pt9>_QJE7(h!L|jZd+{$3l7h}0;$)PrRRXLv@AD0|v;z*fh(m9Edfr(w@ z&+W{MkB;@}OxE(<^?A{WsW!Px0Sdti9<$ZuxkPV#QT166-TCVb7sGOwjmgXjUn)y9 RZf)hfz36LZNU8&aH2{&^Pt^bb diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_operationgui_functions_salome2_sp3_operationgui_functions_image90.gif b/doc/salome/gui/GEOM/files/salome2_sp3_operationgui_functions_salome2_sp3_operationgui_functions_image90.gif deleted file mode 100755 index 716e51b9f87a00850665e06230bad4a0a489952e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 927 zcmZ?wbhEHb6k!ly_|59#A;Jza#KBRa}Q;l{~@eoY&W@X@zaQLu3?QFM%X;Fyh7LCC9 zVuA}qJU1=$ZkA6z6{EFb<(1{O^>M5l3>TemF)!pg`%5(a=*Cpxd3S&4D==6C00hZL A&Hw-a diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_primitivegui_functions.htm b/doc/salome/gui/GEOM/files/salome2_sp3_primitivegui_functions.htm deleted file mode 100755 index 350d4b5f3..000000000 --- a/doc/salome/gui/GEOM/files/salome2_sp3_primitivegui_functions.htm +++ /dev/null @@ -1,389 +0,0 @@ - - - - - -Titre - - - - - - - - - - - -

    Constructing primitives

    - -

    In - GEOM you can create different types of primitive geometrical objects (3D - elements):

    - -

     

    - - - -

     

    - -

    To construct primitive geometrical objects:

    - -

     

    - -

    In the main menu select New - Entity > Primitives.

    - -

     

    - -

    Box

    - -

     

    - -

    Description: Creates a box.

    - -

     

    - -

    Result: GEOM_Object (SOLID).

    - -

     

    - -

    TUI Command : geompy.MakeBox(X1, - Y1, Z1, X2, Y2, Z2),  where - (X1, Y1, X2) and (X2, Y2, Z2) are coordinates of two points which define - a diagonal of the box.

    - -

     

    - -

    Arguments:

    - -
      - -
    • 1st Constructor : Name - + 2 vertices (opposite corners of the box).

    • - -
    • 2nd Constructor : Name - + 3 values (dimensions at origin).

    • -
    - -

     

    - -

    Dialog Box:

    - -

     

    - -

     

    - -

     

    - -

    Example:

    - -

     

    - -

    - -

     

    - -

     

    - -

    Cylinder

    - -

     

    - -

    Description: Creates a cylinder.

    - -

     

    - -

    Result: GEOM_Object (solid).

    - -

     

    - -

    TUI Command: geompy.MakeCylinder(Point, - Axis, Radius, Height), where Point is a central point of the cylinder - base, Axis (vector value) is an axis of the cylinder, Radius and Height - are correspondingly a radius and a height of the cylinder.

    - -

     

    - -

    Arguments:

    - -
      - -
    • 1st Constructor: Name - + 1 vertex + 1 vector + 2 values (Dimensions: radius and height).

    • - -
    • 2nd Constructor: Name - + 2 values (Dimensions at origin: radius and height).

    • -
    - -

     

    - -

    Dialog Box:

    - -

     

    - -

     

    - -

     

    - -

    Example:

    - -

     

    - -

    - -

     

    - -

     

    - -

    Sphere

    - -

     

    - -

    Description: Creates a sphere.

    - -

     

    - -

    Result: GEOM_Object (solid).

    - -

     

    - -

    TUI Command: geompy.MakeSphere(Point, - Radius), where Point is a center of the sphere and Radius is a - radius of the sphere.

    - -

     

    - -

    Arguments:

    - -
      - -
    • 1st Constructor : Name - + 1 vertex + 1 value (Radius).

    • - -
    • 2nd Constructor : Name - + 1  value - (Radius from the origin).

    • -
    - -

     

    - -

    Dialog Box:

    - -

     

    - -

     

    - -

     

    - -

    Example:

    - -

     

    - -

    - -

     

    - -

     

    - -

    Torus

    - -

     

    - -

    Description: Creates a torus.

    - -

     

    - -

    Result: GEOM_Object (solid).

    - -

     

    - -

    TUI Command: geompy.MakeTorus(Point, - Vector, RadiusMajor, RadiusMinor), where Point is a central point - of the torus, Vector is an axis of symmetry, RadiusMajor and RadiusMinor -  are correspondingly - a major and minor radiuses of the torus.

    - -

     

    - -

    Arguments:

    - -
      - -
    • 1st Constructor: Name - + 1 vertex + 1 vector (for direction) + 2 values (1 & 2 Radius).

    • - -
    • 2nd Constructor: Name - + 2 values (1 & 2 Radius from the origin).

    • -
    - -

     

    - -

    Dialog Box:

    - -

     

    - -

     

    - -

     

    - -

    Example:

    - -

     

    - -

    - -

     

    - -

     

    - -

    Cone

    - -

     

    - -

    Description: Creates a cone.

    - -

     

    - -

    Result: GEOM_Object (SOLID).

    - -

     

    - -

    TUI Command: geompy.MakeCone(Point, - Axis, Radius1, Radius2), where Point is a central point of the - cone base, Axis (vector value) is an axis of the cone, Radius1 and Radius2 - are correspondingly the first and the second radiuses of the cone

    - -

     

    - -

    Arguments:

    - -
      - -
    • 1st Constructor: Name - + 1 vertex + 1 vector (for direction) + 3 values (Radius of the - base part, radius of the upper part, height).

    • - -
    • 2nd Constructor: Name - + 3 values (Radius of the base part, radius of the upper part, - height).

    • -
    - -

     

    - -

    Dialog Box:

    - -

     

    - -

     

    - -

     

    - -

    Example:

    - -

     

    - -

    - - - - diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image100.gif b/doc/salome/gui/GEOM/files/salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image100.gif deleted file mode 100755 index 871c6f09bf2a4ceb70dd224813f112d1aeab7dcf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 945 zcmZ?wbhEHb6k!ly_|5gdEz_<+l#G(2 zAu#+xfQf-g@h1x-1H*p?9gy!pdBTCCkKsS3jK_ur2OAkgG-7rL9B5!-=Tl;E*tqC0 zBMXm$!Hfxt&J65AGCmp$mUuF9$vD~kIG^M?jU#xM4~N3zV@&Tj9gCmlh{8#cz4#>H5EabRR( WesoN=Ks1esh5ggBUM~X$25SJs=uLV6 diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image101.gif b/doc/salome/gui/GEOM/files/salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image101.gif deleted file mode 100755 index ffdbac7e8012062f024914322f7676c04fe66c4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 967 zcmZ?wbhEHb6k!ly_|5X4GRv|Ge~g=Tv)Ks zxs``e#9>3jgC-U>hKwr~3zQj|Ikkj*etb}5U{!LT7Q?wf`9!m{sa(j;ODZR(Fi2#q zSsD1eVLFregeNx(lTI~qizrwmEO^PtqLJ=3x2qt-xz|1O+8(K(*N4_~%Q9IkNO*8= zZ8)QVg7$+|!0?|z2jn$So^aq;&G4U7#$&^RgY^t791#-&7CJF-%ZWKG zNLawc!p6aHW5>mZ3`}eqa!+=Ad~l$RJE+JHfdk<0AXnwxX4GRu7GDsOjoS5Lq z%)luo6Eop~10xf&QJPA?1BWBcOu|eN3W6zz*ffGyxo|cdU}RNDK4vphDCuMqg9L}b z2BD{ZY-XHV3=YAn7kl;9wLA_?S=lt(Xz{rzU7Me|&vaeu)W2(3|`8> pz;-0Mmabj5cI&3Cdw1<^o^}bM zYLpxefngQ`j0}v5KUo+V82&TpfV>9E6Am168UAz1cx+hU*vKHJBd}n@!=@H~b`b{y zfrg{q5{x_&4hf5zniwRkaxw%RoBBCKyGl3$A0KHpNKBiv@`CEoDctUMYcxMT+ux!c z>GsCc;9w(@$7D6r2gb`THyax}on2|H*ucat6cQ3S^||*P$Ly-FoQ7}Cb;Q@N5;?Ff p*Mread)C^O6BjeCWfl~ - - - - -Titre - - - - - - - - - - - - -

    Repairing geometrical objects

    - -

    Repairing operations are - used for adjustment and modification of created geometrical shapes. The - are:

    - -

     

    - - - -

     

    - -

    The operations Suppress - faces, Close contour, Suppress internal wires, Suppress holes and - Add point on edge are - available only if you are using OCC - viewer.

    - -

     

    - -

    To apply repairing operations:

    - -

     

    - -

    In the main menu select Repair - submenu.

    - -

     

    - -

    Shape - processing

    - -

     

    - -

    Description: - Processes a shape using various operators.

    - -

     

    - -

    Result: GEOM_Object.

    - -

     

    - -

    TUI Command: - geompy.ProcessShape(Shape, Operators, - Parameters, Values), where Shape is a processed shape, Operators - is a list of names of operators ("FixShape", "SplitClosedFaces", - etc.), Parameters is a list of names of parameters (“FixShape.Tolerance3d”, - etc), Values is a list of values of parameters in the same order as the - Parameters list.

    - -

     

    - -

    Arguments: - 1 or more shapes.

    - - - --- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    1

    -

    SplitAngle – - this operator is intended for splitting faces based on conical surfaces, - surfaces of revolution and cylindrical surfaces by angle

    -

    SplitAngle.Angle – angle (in radians) defining - size of result segments.

    -

    SplitAngle.MaxTolerance – maximal possible - tolerance on result shape

    -

    2

    -

    SplitClosedFaces - – this operator is intended for dividing all closed faces in the shape - according to the number of points.

    -

    SplitClosedFaces.NbSplitPoints – number of - points for cutting each closed faces.

    -

    3

    -

    FixFaceSize - – this operator is intended for removing small faces (case of the spot - face and strip face)

    -

    FixFaceSize.Tolerance – work tolerance defining - which faces will be removed.

    -

    4

    -

    DropSmallEdges - – this operator is intended for removing small edges or merging with neigbour. -  

    -

    DropSmallEdges.Tolerance3d – work tolerance - for detection and removing small edges.

    -

    5

    -

    BsplineRestriction - –this operator is intended for re-approximation BSplines curves and surfaces - or conversion of the curves and surfaces to BSplines with specified parameters. -

    -

    BSplineRestriction.SurfaceMode - mode of approximation - of surfaces if restriction is necessary

    -

    BSplineRestriction.Curve3dMode -mode of conversion - of any 3D curve to BSpline and approximation.

    -

    BSplineRestriction.Curve2dMode - mode of conversion - of any 2D curve to BSpline and approximation

    -

    BSplineRestriction.Tolerance3d – work tolerance - for definition of the possibility of the approximation of the surfaces - and 3D curves with specified parameters.

    -

    BSplineRestriction.Tolerance2d - work tolerance - for definition of the possibility of the approximation of the 2D curves - with specified parameters.

    -

    BSplineRestriction.Continuity3d – desired continuity - of the resultant surfaces and 3D curves.

    -

    BSplineRestriction.Continuity2d – desired continuity - of the resultant 2D curves.

    -

    BSplineRestriction.RequiredDegree - required - degree of the resultant BSplines

    -

    BSplineRestriction.RequiredNbSegments - required - maximum number of segments of resultant BSplines.

    -

    6

    -

    SplitContinuity - – this operator is intended for splitting shapes to achieve continuities - of curves and surfaces less than specified ones.

    -

    SplitContinuity.Tolerance3d - 3D tolerance - for correction of geometry.

    -

    SplitContinuity.SurfaceContinuity - required - continuity for surfaces.

    -

    SplitContinuity.CurveContinuity - required - continuity for curves.

    -

    7

    -

    ToBezier - this - operator is intended for conversion of the curves and surfaces of the - all types into Bezier curves and surfaces.

    -

    ToBezier.SurfaceMode - mode of conversion of - the surfaces.

    -

    ToBezier.Curve3dMode – mode for conversion - of the 3D curves.

    -

    ToBezier.Curve2dMode – mode for conversion - of the 2D curves.

    -

    ToBezier.MaxTolerance – max possible tolerance - on the resultant shape.

    -

    8

    -

    FixShape – this - operator is intended for correction of the invalid shapes

    -

    FixShape.Tolerance3d – work tolerance for detection - of the problems and correction of them.

    -

    FixShape.MaxTolerance3d - maximal possible - tolerance of the shape after correction.

    -

    9

    -

    SameParameter - – this operator is intended for fixing edges having not same parameter - 2D and 3D curves.

    -

    SameParameter.Tolerance3d – tolerance for detection - and fix problems.

    - -

     

    - -

     

    - -

    Dialog Box:

    - -

     

    - -

     

    - -

     

    - -

    Example:

    - -

     

    - -

    Shape before applying Shape Processing (FixShape - operator).

    - -

     

    - -

       

    - -

     

    - -

    The - same shape after applying Shape Processing.

    - -

     

    - -

    - -

     

    - -

     

    - -

    Suppress faces

    - -

     

    - -

    Description: - Suppresses a face of a shape.

    - -

     

    - -

    Result: GEOM_Object - (ListOfGeomShapes).

    - -

     

    - -

    TUI Command: - geompy.SuppressFaces(Shape, ListOfID), - where Shape is a shape to be processed, ListOfID is a list of faces ID's - to be removed.

    - -

     

    - -

    Arguments: - Name + Faces which should be removed (you can select them in the 3D viewer).

    - -

     

    - -

    Dialog Box:

    - -

     

    - -

    - -

     

    - -

    Example:

    - -

     

    - -

     

    - -

     

    - -

    Close contour

    - -

     

    - -

    Description : - Closes an open contour and modifies the underlying face (if needed) in - accordance with user specified mode:

    - -
      - -
    • By common vertex – a - vertex is created between the end points of the contour and its tolerance - is increased to a value of the gap between the ends of the contour;

    • - -
    • By new edge – a new edge - is inserted between the end points of the contour.

    • -
    - -

     

    - -

    Result: GEOM_Object.

    - -

     

    - -

    TUI Command: - geompy.CloseContour(Shape, Wires, - IsCommonVertex), where Shape is a shape to be processed, Wires - is a list of edges or wires IDÂ’s which has to be closed within the shape - (if the list contains only one element = -1, the shape itself is considered - as a wire),  IsCommonVertex - if this parameter is True a closure has to be done by creation of a common - vertex, otherwise an edge is added between the end vertices.

    - -

     

    - -

    Arguments: Name + 1 shape + contour (Wire, - or a set of Edges) + mode of closure (by vertex or by edge)

    - -

     

    - -

    Dialog Box:

    - -

     

    - -

    - -

     

    - -

    Example:

    - -

     

    - -

    Suppress - internal wires

    - -

     

    - -

    Description : - Removes all internal wires or specified internal wires from user specified - faces.

    - -

     

    - -

    Result: GEOM_Object.

    - -

     

    - -

    TUI Command: - geompy.SuppressInternalWires(Shape, - Wires), where Shape is a shape where wires are to be removed, Wires - is a list of wires IDÂ’s to be removed; if the list is empty then all internal - wires are removed.

    - -

     

    - -

     

    - -

    Arguments:

    - -
      - -
    • Name of the resulting - object

    • - -
    • User specified face

    • - -
    • User specified internal - wires (lying on this face except for its boundary), or, in case the Remove all internal wires box is checked, - all internal wires

    • -
    - -

     

    - -

    Dialog Box:

    - -

     

    - -

    - -

     

    - -

    Example:

    - -

     

    - -

       

    - -

     

    - -

     

    - -

    Suppress - holes

    - -

     

    - -

    Description : -

    - -
      - -
    • 1st - Constructor : Suppresses a hole in a shape.

    • - -
    • 2nd - Constructor : Suppresses a hole in a face.

    • -
    - -

     

    - -

    Result: GEOM_Object.

    - -

     

    - -

    TUI Command: - geompy.SuppressHoles(Shape, - ListOfWireID), where Shape is a - shape where holes must be removed, ListOfWireID is a list of wire sub - shapes IDÂ’s. If it is empty, then all holes are removed.

    - -

     

    - -

    Arguments: Name - + 1 shape + Wires which should be removed.

    - -

    Remove all - holes checkbox allows to fill all holes of a definite shape.

    - -

    Detect button - allows to display the number of free boundaries in your shape:

    - -

     

    - -

    - -

     

    - -

    Dialog Box:

    - -

     

    - -

     

    - -

      

    - -

    Example:

    - -

     

    - -

       

    - -

     

    - -

     

    - -

     

    - -

    Sewing

    - -

     

    - -

    Description: - Sew several  shapes.

    - -

     

    - -

    Result: GEOM_Object.

    - -

     

    - -

    TUI Command : - geompy.MakeSewing(ListOfShape, Precision), - where ListOfShape is list of shapes to be sewed, Precision is a precision - for sewing.

    - -

     

    - -

    Arguments: - Name + 1 or more shapes + 1 value (sew precision).

    - -

    Detect - button allows to display the number of free boundaries in your - shape:

    - -

     

    - -

    - -

     

    - -

     

    - -

    Dialog Box:

    - -

     

    - -

    - -

     

    - -

    Example:

    - -

     

    - -

     

    - -

     

    - -

     

    - -

     

    - -

    Add point on edge

    - -

     

    - -

    Description: - Splits an edge in two in accordance with the specified mode (by length - or by parameter) and a value specifying the position of the point on edge - (for example val =0.5; mode = Length).

    - -

     

    - -

    Result: GEOM_Object.

    - -

     

    - -

    TUI Command : - geompy.DivideEdge(Shape, EdgeID, - Value, IsByParameter), where Shape is a shape which contains an - edge to be divided, EdgeID is the ID of the edge to be divided, if it - = -1, then Shape is an edge, Value is a paramter on the edge or a length. - IsByParameter if it is True then Value is the edge parameter in the range - [0:1] otherwise it is a length of the edge in the range [0:1]

    - -

     

    - -

    Arguments: - Name + 1 Edge + 1 value setting the position of the point according one - of the selected modes

    - -

     

    - -

    Dialog - Box:

    - -

     

    - -

    - -

     

    - -

    Example:

    - -

     

    - -

         

    - -

     

    - -

     

    - -

     

    - -

    Glue faces

    - -

     

    - -

    Description: - Glues faces that are coincident with respect to the given tolerance

    - -

    value.

    - -

     

    - -

    Result: - GEOM_Object.

    - -

     

    - -

    TUI Command - : geompy.MakeGlueFaces(theShape, - theTolerance), where theShape is a compound of shapesto be glued, - theTolerance is a maximum distance between two faces, which can be considered - as coincident.

    - -

     

    - -

    Arguments: - Name + 1 Compound - + Tolerance value

    - -

     

    - -

    Dialog Box:

    - -

     

    - -

    - -

     

    - -

    Example:

    - -

     

    - -

      

    - -

     

    - -

     

    - -

     

    - -

    Check free boundaries

    - -

     

    - -

    Description: - Detects wires and edges that correspond to the shape's boundary, and highlights - it

    - -

     

    - -

    Result: GEOM_Object.

    - -

     

    - -

    TUI Command : (NoError, ClosedWires, OpenWires) = geompy.GetFreeBoundary(Shape), - where Shape is a shape to be checked, NoError is false if an error occurred - while checking free boundaries, ClosedWires is a list of closed free boundary - wires, OpenWires is a list of open free boundary wires.

    - -

     

    - -

    Arguments: - Shape

    - -

     

    - -

    Dialog - Box:

    - -

     

    - -

    - -

     

    - -

    Example:

    - -

     

    - -

      

    - -

     

    - -

     

    - -

     

    - -

    Check free - faces

    - -

     

    - -

    Description: Retrieves all free faces - from a given shape. A free face is a face not shared between two - shells of the shape.

    - -

     

    - -

    Result: GEOM_Object. Returns a list - of IDs of all free faces, contained in the shape.

    - -

     

    - -

    TUI Command : - GetFreeFacesIDs(Shape), where Shape is a shape to be checked.

    - -

     

    - -

    Arguments: - Shape

    - -

     

    - -

    Dialog - Box:

    - -

     

    - -

    - -

     

    - -

     

    - - - - diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_repairgui_functions_salome2_sp3_repairgui_functions_image119.gif b/doc/salome/gui/GEOM/files/salome2_sp3_repairgui_functions_salome2_sp3_repairgui_functions_image119.gif deleted file mode 100755 index d4b54ec3ceb26a70b65e769f26779a0c5a6c0271..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 970 zcmZ?wbhEHb6k!ly_|515W8VBOZcTb19N}X*Pp^b y8)8MLwMv@k9qG<${M^boZO+@AZo>ZZ7?=YO!GAhG13>iT%7B4AubeIbY6@>{*%q$9Q4H6p}m{^%Dg?J8ZT70mDQO1g;L4nb$#VD1j!9(G|$zEnr6$gha z>VdO0W0T&j2+9mv&ceu&;4yXKu@>&6S2_U?7>+hZ6x;Qjn3Q~Vvkf=Pj+2H58P{b! Ul=_h=nC#u`yYSUj2>}Lc0PDX^vj6}9 diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_repairgui_functions_salome2_sp3_repairgui_functions_image121.gif b/doc/salome/gui/GEOM/files/salome2_sp3_repairgui_functions_salome2_sp3_repairgui_functions_image121.gif deleted file mode 100755 index b39eb2034c1b3d56c1298c964a3124b4c09abb8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 972 zcmZ?wbhEHb6k!ly_|5+YZlm&D^9s}hG2ac5t|2btmHY{*#WRPHyIIv)$6C0Eq{dEUPI6=Ya82>%VphHy*%=2Ijvwx@Rr9bcXl!DcpzQ8uX`sMh4FH|} BSvLRx diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_repairgui_functions_salome2_sp3_repairgui_functions_image122.gif b/doc/salome/gui/GEOM/files/salome2_sp3_repairgui_functions_salome2_sp3_repairgui_functions_image122.gif deleted file mode 100755 index 3917bf3e26d4317b74e3449002c8b6d407c27efc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 971 zcmZ?wbhEHb6k!ly_|5+YZlm&D^9s}hG2aXjC|2btmHY{*#WRNgmI51)1p%!jV2@it} z3thWeI7DXbSfJ3r$mQIYGQ+{qy@i{dC1Hb+q6>qNrrey$4~x#W8)`3$xml!muG5M= zrbfc>xdST)k4EgSFAYAk0@82oiI~jjG0}xl!eN2K^3XMQ%1o}D2}=(#=+)bma$d@b z+L$fQCgC8yHei>*@qfQLzA5_jvhU*aNl;k)@UXP-9GM*sj!nlWD9)CV5MZzd0Gt6> A*Z=?k diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_transformationgui_functions.htm b/doc/salome/gui/GEOM/files/salome2_sp3_transformationgui_functions.htm deleted file mode 100755 index 2ad3f56b2..000000000 --- a/doc/salome/gui/GEOM/files/salome2_sp3_transformationgui_functions.htm +++ /dev/null @@ -1,676 +0,0 @@ - - - - - -Titre - - - - - - - - - - - - -

    Using transformation operations

    - -

    In GEOM there is a set - of operations allowing to transform the initial geometrical object into - other objects, which will be also created. These operations are

    - -

     

    - - - -

     

    - -

    All these operations are accessible in the - main menu, via Operations / Transformation.

    - -

     

    - -

    Translation

    - -

     

    - -

    Description: - Makes a translation of a shape.

    - -

     

    - -

    Result: GEOM_Object.

    - -

     

    - -

    TUI Command: - geompy.MakeTranslation(Shape, DX, - DY, DZ), where Shape is a shape to be translated, DX, DY, DZ are - components of translation vector.

    - -

     

    - -

    Arguments: -

    - -
      - -
    • 1st - Constructor: Name + 1 shape - + 3 values (coordinates).

    • - -
    • 2st - Constructor: Name + 1 shape - + 2 vertices.

    • - -
    • 3st - Constructor: Name + 1 shape - + 1 vector.

    • -
    - -

     

    - -

    Create a copy - checkbox allows to keep the initial object, otherwise it will be - removed.

    - -

     

    - -

    Dialog Box:

    - -

     

    - -

       

    - -

     

    - -

    Example:

    - -

     

    - -

     

    - -

     

    - -

    Rotation -

    - -

     

    - -

    Description: - Rotates the initial shape.

    - -

     

    - -

    Result: GEOM_Object.

    - -

     

    - -

    TUI Command: - geompy.MakeRotation(Shape, Axis, - Angle), where Shape is a shape to be rotated, Axis is an axis of - rotation, Angle is an angle of rotation.

    - -

     

    - -

    Arguments: - 1 shape + 1 vector for direction of rotation + 1 angle.

    - -

    Reverse checkbox - allows to specify the direction of rotation.

    - -

    Create a copy - checkbox allows to keep the initial object, otherwise it will be - removed.

    - -

     

    - -

    Dialog Box:

    - -

     

    - -

    - -

     

    - -

    Example:

    - -

     

    - -

     

    - -

     

    - -

     

    - -

    Modify the Location

    - -

     

    - -

    Description: - Modification of location of an object.

    - -

     

    - -

    Result: GEOM_Object.

    - -

     

    - -

    TUI Command: - geompy.MakePosition(theObject, theStartLCS, theEndLCS), where theObject - is a shape, location of which is modified, theStartLCS is a location to - move the shape from, theEndLCS is a location to move the shape to.

    - -

     

    - -

    Arguments: - Name + 1 GEOM_Object + [Starting Coordinate System] + End Coordinate System.

    - -

    Create a copy - checkbox allows to keep the initial object, otherwise it will be - removed.

    - -

     

    - -

    Dialog Box:

    - -

     

    - -

      

    - -

     

    - -

    Example:

    - -

     

    - -

    - -

     

    - -

     

    - -

     

    - -

    Mirror -

    - -

     

    - -

    Description: - Symmetrical copy of a shape.

    - -

     

    - -

    Result: GEOM_Object.

    - -

     

    - -

    TUI Command: - geompy.MakeMirrorByPlane(Shape, - Plane), where Shape is a shape to be mirrored, Plane is a plane - of symmetry.

    - -

     

    - -

    Arguments: -

    - -
      - -
    • 1st - Constructor: Name + 1 shape - + 1 vertex.

    • - -
    • 2st - Constructor: Name + 1 shape - + 1 vector.

    • - -
    • 3st - Constructor: Name + 1 shape - + 1 plane.

    • -
    - -

    Create a copy - checkbox allows to keep the initial object, otherwise it - will be removed.

    - -

     

    - -

    Dialog Box:

    - -

     

    - -

    - -

     

    - -

    Example:

    - -

     

    - -

     

    - -

     

    - -

    Scale transform -

    - -

     

    - -

    Description: - Creates a scaled shape basing on the initial shape.

    - -

     

    - -

    Result: GEOM_Object.

    - -

     

    - -

    TUI Command: - geompy.MakeScaleTransform(Shape, - CenterOfScale, Factor), where Shape is a shape to be scaled, CenterOfScale - is a center point of scale, Factor is a factor of the scale.

    - -

     

    - -

    Arguments: - Name + 1 shape(s) + 1 vertex + 1 Scale Factor.

    - -

     

    - -

    Dialog Box:

    - -

     

    - -

    - -

     

    - -

    Example:

    - -

     

    - -

     

    - -

     

    - -

    Offset surface

    - -

     

    - -

    Description: - Each point is translated along a local normal by a given distance (signed - number, negative value meaning inner offset). Offset operation is applicable - to faces, shells and solids.

    - -

     

    - -

    Result: GEOM_Object -

    - -

     

    - -

    TUI Command: - geompy.MakeOffset(Shape, Offset), - where Shape is a shape which has to be an offset, Offset is a value of - the offset.

    - -

     

    - -

    Arguments:

    - -
      - -
    • Name of the resulting - object

    • - -
    • GEOM_Object (face, shell, - solid, compound)

    • - -
    • offset value

    • -
    - -

     

    - -

    Dialog Box:

    - -

     

    - -

    - -

     

    - -

    Example:

    - -

    - -

     

    - -

     

    - -

    Multi-Translation

    - -

     

    - -

    Description: - Makes several translations of a shape in one - or two directions.

    - -

     

    - -

    Result: GEOM_Object - (compound).

    - -

     

    - -

    TUI Command:

    - -
      - -
    • geompy.MakeMultiTranslation1D(Shape, - Dir, Step, NbTimes), where Shape is a shape to be translated, Dir - is a direction of translation, Step is a step of the translation, NbTimes - is a number of times the shape must be moved.

    • - -
    • geompy.MakeMultiTranslation2D(Shape, - Dir1, Step1, NbTimes1, Dir2, Step2, NbTimes2), where Shape is a - shape to be translated, Dir1 is the first direction of translation, Step1 - of the first translation, NbTimes1 is a number of translations to be done - along, Dir2 is the second direction of translation, Step2 of the second - translation, NbTimes2 is a number of translations to be done along Dir2.

    • -
    - -

     

    - -

    Arguments:

    - -
      - -
    • 1st - Constructor (in one direction): - Name + 1 shape + 1 vector (for direction) + 1 step value + 1 value (repetition).

    • - -
    • 2nd - Constructor (in two directions): - Name + 1 shape + 2 vectors defining the direction + 2 step values + 2 - values (repetitions).

    • -
    - -

     

    - -

    Dialog Box:

    - -

     

    - -

     

    - -

     

    - -

    Example:

    - -

     

    - -

    One direction:

    - -

     

    - -

     

    - -

     

    - -

    Two directions:

    - -

     

    - -

     

    - -

     

    - -

     

    - -

    Multi-Rotation

    - -

     

    - -

    Description: - Creates several rotated geometrical objects in one - or two directions - basing on the initial geometrical object.

    - -

     

    - -

    Result: GEOM_Object - (compound).

    - -

     

    - -

    TUI Command:

    - -
      - -
    • geompy.MakeMultiRotation1D(Shape, - Axis, NbTimes), where Shape is a shape to be rotated, Axis is an - Axis of rotation, NbTimes is a number of the shape must be rotated.

    • - -
    • geompy.MakeMultiRotation2D(Shape, - Axis, Angle, NbTimes1, Step, NbTimes2), where Shape is a shape - to be rotated, Axis is an axis of rotation, Angle is an angle of rotation, - NbTimes1 is a number of rotation, Step is a step of translation, NbTimes2 - is a number of translation.

    • -
    - -

     

    - -

    Arguments:

    - -
      - -
    • 1st - Constructor (in one direction): - Name + 1 shape + 1 vector for direction + 1 value (repetition).

    • - -
    • 2nd - Constructor (in two directions): - Name + 1 shape + 1 vector for direction + 1 angle + 1 value (repetition) - + 1 step value + 1 value (repetition); Reverse - checkbox allows to set the direction of rotation.

    • -
    - -

     

    - -

    Dialog Box:

    - -

     

    - -

     

    - -

     

    - -

    Example:

    - -

     

    - -

    One direction:

    - -

     

    - -

     

    - -

     

    - -

    Two directions:

    - -

     

    - -

     

    - -

     

    - -

     

    - - - - diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image128.gif b/doc/salome/gui/GEOM/files/salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image128.gif deleted file mode 100755 index 7a140ed931bf6dd7cc61f0a7d974995dd151cade..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 929 zcmZ?wbhEHb6k!ly_|5|vf=!EAfPWM@t%m+=O-taIJ9QXy=na9 l?1K2iOa=xUo-?j@=}x*LVY=-84C%#M4hahi9yTyo0|1U4RK5TJ diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image130.gif b/doc/salome/gui/GEOM/files/salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image130.gif deleted file mode 100755 index 980336276f002e4f2cf9d0fcb143de5b6284b1be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 935 zcmZ?wbhEHb6k!ly_|5y)HW1X7zawZj< zmzf+*y6HL3O`8b#?YMjBzoN@Qm*4JT+Sqo=f;b>Uovy5fksuZoSiw`pv MJhT#(5MZzd05OzH&Hw-a diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image131.gif b/doc/salome/gui/GEOM/files/salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image131.gif deleted file mode 100755 index 2059e9d9dbbba89b372320b13675053772a69ec5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 945 zcmZ?wbhEHb6k!ly_|5|(Oof=Uc5YX4O&0v4>j&1B6e VVDMne>YIzb0yiCbZKS|p4FJFxOkn^3 diff --git a/doc/salome/gui/GEOM/files/salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image132.gif b/doc/salome/gui/GEOM/files/salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image132.gif deleted file mode 100755 index 29aaddb0a936b2e945e0a950e0f6d37e66e4bc2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 949 zcmZ?wbhEHb6k!ly_|5||%x8p}(O2b4IUo{C1;nbs(*}S8UtSEeJ-^C;A zG(}_LQ-`?>VM-Y%zbG@zVT*s}!x@_5y+ondsrJ;?SAnZIL{uyS7Oe4|%))a|AD;!3@vRfJ$*e>CQX?$YtGU|OP4NNx^~^# zt(&&)-L - - GEOM reference manual - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/doc/salome/gui/GEOM/geom.html b/doc/salome/gui/GEOM/geom.html deleted file mode 100755 index 34511ae73..000000000 --- a/doc/salome/gui/GEOM/geom.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - GEOM reference manual - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/doc/salome/gui/GEOM/geom.log b/doc/salome/gui/GEOM/geom.log deleted file mode 100755 index f9810dcef..000000000 --- a/doc/salome/gui/GEOM/geom.log +++ /dev/null @@ -1,476 +0,0 @@ -|SourceProjectName:GEOM.hpr -|DestinationProjectName:geom.htm -whhost.js -whmsg.js -whmozemu.js -whproxy.js -whstub.js -whutils.js -whver.js -whform.js -whphost.js -whstart.js -whtopic.js -whframes.js -whlang.js -whskin_info.htm -whskin_blank.htm -whskin_pickup.htm -whskin_homepage.htm -whskin_tw.htm -whnjs.htm -whthost.js -whtdhtml.htm -whihost.js -whibody.htm -whiform.htm -whfhost.js -whfbody.htm -whfform.htm -whghost.js -whgbody.htm -whgdhtml.htm -whgdef.htm -whproj.js -whproj.xml -whproj.htm -whxdata\whtoc.xml -whxdata\whidx.xml -whxdata\whfts.xml -whxdata\whglo.xml -whdata\whtoc.js -whdata\whtoc.htm -whdata\whtdata.js -whdata\whidx.js -whdata\whidx.htm -whdata\whidata.js -whdata\whfts.js -whdata\whfts.htm -whdata\whglo.js -whdata\whglo.htm -whdata\whgdata.js -whdata\whftdata.js -whdata\whfwdata.js -whres.xml -webhelp.jar -webhelp.cab -whgdata\whnvp30.htm -whgdata\whnvp31.htm -whgdata\whnvp32.htm -whgdata\whnvp33.htm -whgdata\whnvt30.htm -whgdata\whnvt31.htm -whgdata\whnvt32.htm -whgdata\whnvt33.htm -whgdata\whnvf30.htm -whgdata\whnvf31.htm -whgdata\whnvf32.htm -whgdata\whnvf33.htm -whgdata\whnvl31.htm -whgdata\whnvl32.htm -whgdata\whnvl33.htm -whgdata\whexpbar.gif -cshdat_webhelp.htm -whcsh_home.htm -whcshdata.htm -cshdat_robohelp.htm -wht_tab0.gif -wht_tab1.gif -wht_tab2.gif -wht_tab3.gif -wht_tab4.gif -wht_tab5.gif -wht_tab6.gif -wht_tab7.gif -wht_tab8.gif -wht_glo_h.gif -wht_glo_n.gif -wht_fts_h.gif -wht_fts_n.gif -wht_idx_h.gif -wht_idx_n.gif -wht_toc_h.gif -wht_toc_n.gif -wht_ws.gif -wht_ws_g.gif -wht_logo1.gif -wht_logo2.gif -wht_abgw.jpg -wht_abgi.jpg -wht_abge.jpg -wht_abtw.jpg -wht_abte.jpg -wht_abti.jpg -wht_spac.gif -wht_next.gif -wht_next_g.gif -wht_prev.gif -wht_prev_g.gif -wht_sync.gif -wht_hide.gif -wht_go.gif -whstart.ico -whestart.ico -whrstart.ico -whidhtml.htm -whfdhtml.htm -whskin_banner.htm -whtbar.js -whskin_pdhtml.htm -whskin_papplet.htm -whskin_plist.htm -whskin_tbars.htm -whskin_mbars.htm -wht_toc4.gif -wht_toc1.gif -wht_toc2.gif -wht_toc3.gif -whskin_frmset010.htm -whst_topics.xml -whskin_frmset01.htm -geom_hha.hhk -geom.hhc -geom.hhk -blocks.htm -changing_displaying_parameters.htm -files\introduction_to_geom.htm -files\salome2_sp3_basicgui_functions.htm -files\salome2_sp3_booleangui_functions.htm -files\salome2_sp3_buildgui_functions.htm -files\salome2_sp3_displaygui_functions.htm -files\salome2_sp3_generationgui_functions.htm -files\salome2_sp3_geomtoolsgui_functions.htm -files\salome2_sp3_measuregui_functions.htm -files\salome2_sp3_operationgui_functions.htm -files\salome2_sp3_primitivegui_functions.htm -files\salome2_sp3_repairgui_functions.htm -files\salome2_sp3_transformationgui_functions.htm -newentity_blocks.htm -sketcher.htm -working_with_groups.htm -ehelp.xml -geom.glo -default.css -image290.jpg -image219.jpg -image208.jpg -image61.gif -image191.jpg -image180.jpg -image109.jpg -image97.jpg -image53.jpg -files\salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image131.gif -files\salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image31.gif -image291.jpg -image280.jpg -image209.jpg -image192.jpg -image181.jpg -image51.gif -image170.jpg -image98.jpg -image76.jpg -image54.jpg -image10.jpg -files\salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image132.gif -files\salome2_sp3_repairgui_functions_salome2_sp3_repairgui_functions_image121.gif -files\salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image32.gif -image292.jpg -image281.jpg -image270.jpg -image193.jpg -image52.gif -image171.jpg -image160.jpg -image41.gif -image11.jpg -files\salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image133.gif -files\salome2_sp3_repairgui_functions_salome2_sp3_repairgui_functions_image122.gif -files\salome2_sp3_operationgui_functions_salome2_sp3_operationgui_functions_image87.gif -image3.jpg -files\salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image33.gif -image293.jpg -image64.gif -image282.jpg -image271.jpg -image260.jpg -image194.jpg -image53.gif -image172.jpg -image42.gif -image150.jpg -image78.jpg -image20.gif -image67.jpg -image12.jpg -files\salome2_sp3_operationgui_functions_salome2_sp3_operationgui_functions_image88.gif -files\salome2_sp3_booleangui_functions_salome2_sp3_booleangui_functions_image1.gif -files\salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image34.gif -image294.jpg -image283.jpg -image261.jpg -image272.jpg -image250.jpg -image151.jpg -image32.gif -image140.jpg -image79.jpg -image21.gif -image2.gif -image5.jpg -files\salome2_sp3_operationgui_functions_salome2_sp3_operationgui_functions_image89.gif -files\salome2_sp3_booleangui_functions_salome2_sp3_booleangui_functions_image2.gif -image295.jpg -image284.jpg -image262.jpg -image273.jpg -image251.jpg -image240.jpg -image196.jpg -image185.jpg -image44.gif -image163.jpg -image141.jpg -image130.jpg -image22.gif -files\salome2_sp3_displaygui_functions_salome2_sp3_displaygui_functions_image51.gif -image11.gif -files\salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image56.gif -files\salome2_sp3_booleangui_functions_salome2_sp3_booleangui_functions_image3.gif -image296.jpg -image285.jpg -image274.jpg -image263.jpg -image252.jpg -image241.jpg -image230.jpg -image197.jpg -image56.gif -image164.jpg -image142.jpg -image23.gif -image12.gif -image7.jpg -image4.gif -files\salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image57.gif -files\salome2_sp3_displaygui_functions_salome2_sp3_displaygui_functions_image52.gif -files\salome2_sp3_booleangui_functions_salome2_sp3_booleangui_functions_image4.gif -salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image13.gif -image297.jpg -image286.jpg -image275.jpg -image264.jpg -image253.jpg -image242.jpg -image231.jpg -image220.jpg -image57.gif -image154.jpg -image35.gif -image24.gif -image121.jpg -image110.jpg -image27.jpg -image13.gif -image8.jpg -image5.gif -files\salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image71.gif -files\salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image58.gif -files\salome2_sp3_displaygui_functions_salome2_sp3_displaygui_functions_image53.gif -files\salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image27.gif -salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image14.gif -image298.jpg -image287.jpg -image276.jpg -image265.jpg -image254.jpg -image243.jpg -image221.jpg -image210.jpg -image199.jpg -image188.jpg -image133.jpg -image25.gif -image122.jpg -image14.gif -image9.jpg -image6.gif -files\salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image128.gif -files\salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image72.gif -files\salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image59.gif -files\salome2_sp3_displaygui_functions_salome2_sp3_displaygui_functions_image54.gif -files\salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image28.gif -salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image15.gif -i_blue.jpg -image299.jpg -image288.jpg -image277.jpg -image266.jpg -image255.jpg -image244.jpg -image233.jpg -image222.jpg -image211.jpg -image59.gif -image189.jpg -image167.jpg -image156.jpg -image37.gif -image145.jpg -image134.jpg -image112.jpg -image15.gif -image18.jpg -image7.gif -files\salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image129.gif -files\salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image73.gif -files\salome2_sp3_displaygui_functions_salome2_sp3_displaygui_functions_image55.gif -files\salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image29.gif -salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image16.gif -image300.jpg -image289.jpg -image278.jpg -image267.jpg -image256.jpg -image245.jpg -image234.jpg -image223.jpg -image212.jpg -image201.jpg -image49.gif -image168.jpg -image135.jpg -image124.jpg -image113.jpg -image16.gif -image8.gif -files\salome2_sp3_repairgui_functions_salome2_sp3_repairgui_functions_image119.gif -files\salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image100.gif -files\salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image74.gif -salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image17.gif -image279.jpg -image268.jpg -image257.jpg -image246.jpg -image235.jpg -image224.jpg -image213.jpg -image202.jpg -image158.jpg -image147.jpg -image136.jpg -image80.jpg -image17.gif -image9.gif -files\salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image101.gif -files\salome2_sp3_operationgui_functions_salome2_sp3_operationgui_functions_image90.gif -files\salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image75.gif -salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image18.gif -image269.jpg -image258.jpg -image247.jpg -image236.jpg -image225.jpg -image214.jpg -image203.jpg -image29.gif -image137.jpg -image81.jpg -files\salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image102.gif -files\salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image99.gif -files\salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image76.gif -salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image19.gif -image259.jpg -image248.jpg -image237.jpg -image226.jpg -image215.jpg -image204.jpg -image149.jpg -image138.jpg -image127.jpg -image82.jpg -image19.gif -files\salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image103.gif -files\salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image77.gif -image249.jpg -image238.jpg -image227.jpg -image216.jpg -image205.jpg -image139.jpg -image128.jpg -image94.jpg -image83.jpg -files\salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image78.gif -image239.jpg -image228.jpg -image217.jpg -image206.jpg -image129.jpg -image95.jpg -image84.jpg -image229.jpg -image218.jpg -image207.jpg -image96.jpg -image85.jpg -image52.jpg -files\salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image130.gif -files\salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image30.gif -ehlpdhtm.js -geom.ppf -default_ns.css -whxdata\whtdata0.xml -whxdata\whftdata0.xml -whxdata\whfwdata0.xml -whxdata\whfwdata1.xml -whxdata\whfwdata2.xml -whxdata\whgdata0.xml -whdata\whtdata0.htm -whdata\whftdata0.htm -whdata\whfwdata0.htm -whdata\whfwdata1.htm -whdata\whfwdata2.htm -whdata\whgdata0.htm -whgdata\whlstt0.htm -whgdata\whlstt1.htm -whgdata\whlstt2.htm -whgdata\whlstt3.htm -whgdata\whlstt4.htm -whgdata\whlsti0.htm -whgdata\whlstfl0.htm -whgdata\whlstfl1.htm -whgdata\whlstfl2.htm -whgdata\whlstfl3.htm -whgdata\whlstfl4.htm -whgdata\whlstfl5.htm -whgdata\whlstfl6.htm -whgdata\whlstfl7.htm -whgdata\whlstfl8.htm -whgdata\whlstfl9.htm -whgdata\whlstfl10.htm -whgdata\whlstfl11.htm -whgdata\whlstfl12.htm -whgdata\whlstfl13.htm -whgdata\whlstfl14.htm -whgdata\whlstfl15.htm -whgdata\whlstfl16.htm -whgdata\whlstfl17.htm -whgdata\whlstfl18.htm -whgdata\whlstfl19.htm -whgdata\whlstfl20.htm -whgdata\whlstfl21.htm -whgdata\whlstfl22.htm -whgdata\whlstfl23.htm -whgdata\whlstf0.htm -whgdata\whlstf1.htm -whgdata\whlstf2.htm -whgdata\whlstf3.htm -whgdata\whlstf4.htm -whgdata\whlstf5.htm -whgdata\whlstg0.htm -geom.htm -geom_csh.htm -geom_rhc.htm diff --git a/doc/salome/gui/GEOM/geom_csh.htm b/doc/salome/gui/GEOM/geom_csh.htm deleted file mode 100755 index 24b1d19ff..000000000 --- a/doc/salome/gui/GEOM/geom_csh.htm +++ /dev/null @@ -1,106 +0,0 @@ - - -GEOM reference manual - - - - - - - - - - - - - \ No newline at end of file diff --git a/doc/salome/gui/GEOM/geom_csh.html b/doc/salome/gui/GEOM/geom_csh.html deleted file mode 100755 index e5123bbd5..000000000 --- a/doc/salome/gui/GEOM/geom_csh.html +++ /dev/null @@ -1,100 +0,0 @@ - - -GEOM reference manual - - - - - - - - - - - - - \ No newline at end of file diff --git a/doc/salome/gui/GEOM/geom_help.html b/doc/salome/gui/GEOM/geom_help.html deleted file mode 100755 index 34511ae73..000000000 --- a/doc/salome/gui/GEOM/geom_help.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - GEOM reference manual - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/doc/salome/gui/GEOM/geom_help_csh.html b/doc/salome/gui/GEOM/geom_help_csh.html deleted file mode 100755 index e5123bbd5..000000000 --- a/doc/salome/gui/GEOM/geom_help_csh.html +++ /dev/null @@ -1,100 +0,0 @@ - - -GEOM reference manual - - - - - - - - - - - - - \ No newline at end of file diff --git a/doc/salome/gui/GEOM/geom_help_rhc.html b/doc/salome/gui/GEOM/geom_help_rhc.html deleted file mode 100755 index 26441d7b5..000000000 --- a/doc/salome/gui/GEOM/geom_help_rhc.html +++ /dev/null @@ -1,100 +0,0 @@ - - -GEOM reference manual - - - - - - - - - - - - - \ No newline at end of file diff --git a/doc/salome/gui/GEOM/geom_rhc.htm b/doc/salome/gui/GEOM/geom_rhc.htm deleted file mode 100755 index 3f33cfe19..000000000 --- a/doc/salome/gui/GEOM/geom_rhc.htm +++ /dev/null @@ -1,106 +0,0 @@ - - -GEOM reference manual - - - - - - - - - - - - - \ No newline at end of file diff --git a/doc/salome/gui/GEOM/geom_rhc.html b/doc/salome/gui/GEOM/geom_rhc.html deleted file mode 100755 index 26441d7b5..000000000 --- a/doc/salome/gui/GEOM/geom_rhc.html +++ /dev/null @@ -1,100 +0,0 @@ - - -GEOM reference manual - - - - - - - - - - - - - \ No newline at end of file diff --git a/doc/salome/gui/GEOM/i_blue.jpg b/doc/salome/gui/GEOM/i_blue.jpg deleted file mode 100755 index ed3acfac2eb212d536dbbfc2b4d47c959747109a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1337 zcmaKodo-CSk zj7%T`3dul2X$#ZEkV8G0ltU*gehncg)*}8p1R}!#K@GMrDHws1q(OBN+#sIJxo6n( z+Tur7x+dNaR1`B|GC~GFfD$j;xSwmXa&I3Wuz00I>AhjwxFIb&zn(SSKEKIz_U5hH z$Z8yPI%={7Pu$)ZVh%U(mWG|M_AHNH7VT6BnZFpx9E=en$p|1APcm z@qG9k8ejTuRDy$@gTLl!%EfX*57!`EA{i8FuwdQ7bAzGlO+2{O2S_&UyWRqzJlW_y z(LgXxaC~pwk$R^J(#W`8ENwQNuVeAZr+({bMA7W3 zMoHR6xTnO((?!{>B>ZwBtiNq@@b-o7S8p%L-JGpk;?JrR4kj8|OsC<@=$eg9dP z6*;$Q=>`9?L)+lS>yA~n9j|-um>8NG<(NG#R}Kz1ZD0IHMP5Mq5gGAb$;iCPxDso~ z>wTj!Xen&T(rU<+II%C%=Zkh+$StVT$q~m*SZ5o`&rfP*9dbx7H8M6$e@CGToG%MK zSD$VZZ3|JWvk!H(5lI$a2BA#e*e9RJZfT&IU&pJxSjU5-ArHi(gpp%4ygr1wYwusu z(y-sJv6_)ylu>Zlvf_eUM?`E#P3!boUw$jK*OxYtEEHtcaM6Sz-$T87b@FRJS2w-6 zG^KX1GwOripJ`*nGX1#X=+XQ(>-Le`=8-9us$DaI4KJnUOrkUD{8H35Fw3Sj7h5h! z>HVyE^NZrNr10uKjw+{d0(PEwuJ!vef zuvoWW#$hPkwQ?;;nvEB3Vpm-|p6$i;@5tD08b~YAA&{RxEVXPUZ-JG+QPUr|V_F$@I zXS;1p=(tK8FGE-@oN>#YkwF_a1tYA7egj zW^n6ief`ATK1SFn+ag+w|Mfht$g_4nx(AM=>_}YPPhzXae;aiDO3h>4b)9F{f3T?% zo#IdMPb9KtvZ9;I)c()C6Dqm=1DdZu@k`x^exwvg}d zoC|z$oF{fzlv{Tlz2o%x$(;6>oL)xZGz)qR2<7%s?>*6}l!k_=7}1b~)FhaZe!Mi* ntsV1Q$ocz}1}2fD+RUKR+?970I}4cV<-EX|YKN=(__MzOO5YZJ diff --git a/doc/salome/gui/GEOM/image10.jpg b/doc/salome/gui/GEOM/image10.jpg deleted file mode 100755 index 89009bc1c510848145b810ba9c12b24662111ab0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3449 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 bY%f^f++3d>zFpMuZ-9Tdm;ZMgnEv)(dl2J; diff --git a/doc/salome/gui/GEOM/image100.jpg b/doc/salome/gui/GEOM/image100.jpg deleted file mode 100755 index 614786487c1a72233a6f7368905602d5fd5c04cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9555 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 diff --git a/doc/salome/gui/GEOM/image101.jpg b/doc/salome/gui/GEOM/image101.jpg deleted file mode 100755 index f1e23edc1701a498b9b9faff28332f4812feff07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10879 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 KhD_QSeg6Z+*afiw diff --git a/doc/salome/gui/GEOM/image105.jpg b/doc/salome/gui/GEOM/image105.jpg deleted file mode 100755 index 38b31e89fbfa721439d4b6bf5e8579a0979e2a0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10760 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 JQ+brW{{X0q;!pqp diff --git a/doc/salome/gui/GEOM/image106.jpg b/doc/salome/gui/GEOM/image106.jpg deleted file mode 100755 index 5d62a228a86cdb39fb83e098a4341b47bdf31e9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11193 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 diff --git a/doc/salome/gui/GEOM/image11.gif b/doc/salome/gui/GEOM/image11.gif deleted file mode 100755 index 4a07b5e838f6c3263ea00c5d7490d2d2321f2539..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1646 zcmeH`=~EMT0ET}Wgbhb?B8MP^V=#`WNDz_!lan!ypy0D zIKX>g03m=Y2MBl&33V#py&o;O6H;5*U}jgajca zR*f7)$T3uIz~y#S?m!fPu80sT((@H|OhM{Y8nwz`S1S-TVpZ#`YMfM)xCZjpaDc{Y z(^yH^TLjxln6x4362##^93-kzp)ibM7)lVR&4$|TsKbGhBnAM+;b2@YmM_5w0<&5% zn+>zubpX=6$6(OmxQ-wUu_6P47*N!JVFsNJSF3T228UrBK?sF{P^k#D`orjtd@S&P zfh8aO;R^sFfei8!be!+4hFFWUj2#zl)zE`Qu%Pqe?ON~1?IXs{OMS-!`A7YPyB^Xx zp&4!LCm}}~!cwH|u(09ciGaB~W-1>QP+4$PwQIOw+{g=9b8>n*Ld!LUx$j>dF{zz2 zhQ|9a_bT;mmSbxZ7_bX%9cq{+%0qwq<+kUH0eYfWm-%|xo%%9ejh7T4%la1-0 zFU)(nDzxz4MM?EDb4zRPXh6laL?v_P@kpd>!8N0z=+z&-XJS&BPOA*JHZ*RQ&5RV& zhK9pLq+@Zx?wJ}vR)v4XS%v-j&@f9~yAgYLFuDJd=Yey%wBWKv%L88KsONB{lRr7@t*o#FxT96O)j zk)bTiJ|1lDsB)$?gG9IB_7X-TF=edxSTRvYaiX$cR6(qkl6sHz(n7s5$OQQAxk1Y- z=Xgm&Y()jF{d1h>Cyo`tcjLbDfxC;lGd+%N?S_^2_PRFL^n7#FLQ9c;JDJ_`1t~tA z6LOSVd}a8{p-t_?6W>iO_x|p_f4H0KmU&<*G;L&S&z+$`)`~MO6Gg`FY8L03#4hui zn@mNc+NQL!02;_~p4vZePwhxo)t)yLmibWf)2#`CJ~`c&c#LJGLBvK``I~{26J5SP z8rpW>@$I{^bNnT=tYjtIJ*x*}bY)|gO>X{%GeY;#-u_9ig~s|~zlE2Z81;?&qO@-J znWtX6EX|3IZEm=`b3ppaB;)o@;jwX@?HkrmvgF>^*e@ar< z#rzdHkQ~m467m=Ed@Rr=olKAy+!;0K`WmcdZINl-3`ryVt5ZtkAu8r}ONPnMI*>L^ zVG3TPc0FK?P9?Hb$9L4xRIjvpI^XZujkR$Q?<5N@!xNdp&&&;f7H&Cvf_Cck)wh%F gUC-Y>?dV%N`%G)uIXiX3c6Ijo4~~D+;=$_w02cKbi2wiq diff --git a/doc/salome/gui/GEOM/image11.jpg b/doc/salome/gui/GEOM/image11.jpg deleted file mode 100755 index 4f666fd34c0ee07426dd8c55a3935b59a40629a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2844 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 q^T2z#09f@sm}Ao{3R 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 diff --git a/doc/salome/gui/GEOM/image113.jpg b/doc/salome/gui/GEOM/image113.jpg deleted file mode 100755 index fa01cfb36e2356e20d728b5f7d0ad22ec1cbd758..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2827 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 Zd++K!nen|pVn?)!m%ecEgdwH>e*j+%$%+5~ diff --git a/doc/salome/gui/GEOM/image115.jpg b/doc/salome/gui/GEOM/image115.jpg deleted file mode 100755 index da0f7cce7c57ceba491e55c273cba03b6e2d78d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9009 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 D=$t2C diff --git a/doc/salome/gui/GEOM/image116.jpg b/doc/salome/gui/GEOM/image116.jpg deleted file mode 100755 index 25e154faa7d179597e680d306dd1baf4d4718da4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9081 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 diff --git a/doc/salome/gui/GEOM/image117.jpg b/doc/salome/gui/GEOM/image117.jpg deleted file mode 100755 index bd1971467cf6e8fb1acb3ba181d09b3cd83456af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9509 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 diff --git a/doc/salome/gui/GEOM/image12.gif b/doc/salome/gui/GEOM/image12.gif deleted file mode 100755 index 9e872c81670a28055f02a744208c390a3b78d5b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1604 zcmeH`{ZA8j0LH(tss~~zh|oFIR_Uq;($b&^b6L+9pi?KO6WYO08U~ZC0qY#5GDTZ3 zP_^ozFsne}RMcaDbS&tZ8Q^Apslb*B2q((R6$hS1=Yi4O;NMvG$>)dX*XK!|xP%SS zt9G6SdjJcjzyYAaRD_&BfP&R>2w)HlK`h67 z%xI@+J2xd`=U4*B2?!8VkR-vm2#z8+ngoDUsYo0rS(0R(B*pX5)G?rR6wUE62zy}rSm2_hj8B08eBkFd zCo}-F?*c)AE3SlR9(eN_W~1Hx0-_aQr@?Y1t(IALcC{H zC3cryvgN3ob_DE8zPhwJXN}K4)K7{LNE0A^h6<0x%$)pi?kB^t%Kh-i%O3eehaagq zxn-AfXrttwg=b3qW;8iaMW9a#HHDMvw1{x=NO?t+$JU^%U)6zuvZyB`)~J@hTCKYI zFT2j=+4i-c&wo3K@V}TDI#dzSo^|Q;SC$?`P*UhiGt1XLv-K~HlMFsW8 zkOA52bz#s>G}U_&wX7N8>EDpItW2K0Y{W#l(OyNH_81h_r6vsd?4&i9t);ipe1~NjEuMmRUDB K0?*)q*na_i@h;N< diff --git a/doc/salome/gui/GEOM/image12.jpg b/doc/salome/gui/GEOM/image12.jpg deleted file mode 100755 index fac5c12748a7524fe189b08737bee0c0e7f8b8ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3830 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 EFQmuiw*UYD diff --git a/doc/salome/gui/GEOM/image120.jpg b/doc/salome/gui/GEOM/image120.jpg deleted file mode 100755 index 01a35bb95c5279e79880e1a3a148e3413ef58fd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8570 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 Z zPXX}nH?Q6hG_ zE^Z!P(ci?xB_!n)6qPP1t6aZvQ$zEX)@=hrBV!X&GjrRAcJ>aAPR>5Qe*OWE9tVa; zJdJ$z{6$n^QgTXaT6zW|zn~CVR9sS8R$Eu!(Ad=crsZ8%cTX?seP93R*!aXG=Ht}# z=f$PvmDMk6>l?e+z5RplheyXa77}D~N=gb!njetK$OA|(1q&tBIS4iDRXrLTFE$~$ zFcAB-guI%!w89tlcQ_t+kI-?7$bS~y{ek)?=>Hw&C;utP`>#sZNA>X{1Kl@u zc0=^>FF&T&2G2k8gf+~F+WU+qCHsAH>~1CkCOH}gxG2wA1QDPaf;lGU&WZz-3PsY# zJupThkkN#1vC_ripR_Vu3#I$D107&+h5ia7X|EqYDpl1}B&)XJUu)pmMHA}WI9Nr@ z>9_kqQ1EjiunCvko>PCub|^Vt*r`ASD6pJfEj;W2`q0~YqqoX7_6yt6S1u>B%-ScR zM`hL_P7G3UmFZF5M1U2av*rf=+!qM9er{s({4UuQDpF$ob28zV@6p9W@XM}5AfnxR zP0?^Jf{FQV2($CI=sIQRu53nWT;M(jzX~;fP@ul^hpvd@#X`9m!VO!rEw(JDdvJ#c zyo=iE6uKSmS*dCqm({8TlRzCP7JpAm!-LUM)!iQ^g0B}jmS}&S77k0`R`xk!a*1b& z&5N{dOKEE%pxpT=p7%gMX>4}twl&!LeV;L{R4slsX!%y8cj2-F$J@{k)gLz!k&L|C z81!1NT}pL=erowZo?4JY@_)y&-*f$g9Da!qJe0PRQ%1Pf%5V#F=$*VZe*t$$1fb?k zWp5%v`s36D$`43pCg_r}K-~PW{4H@u#2)-rpGuG+UwU9#Ont1nQ4<&WqQ6`IC73JN z2W=9Duz%z%k7!@6*lI%r5>QP~`fC(&l%xwj9cKyD?6Mh;2WYz9j8R_dhpMa1;2~C= zVk+InqXHY)`EB(a`UIPjP3Ys}uZQsTY!KS|-UQ=Uw4B9ER zno@&l4D+j{ADsUAapFSgV6HD@9F8~Wie))(&jmOLL2Ni5-<&PD$j6Z!^o0fot zlt8TxASLaH%q_0kH(Lmq6sG8+E;|rd@Hq2iXciN%@9w?oAQccGYy5z&S;ug>n8yA^ zvaNV?pQYSQSIowgq8CH3vMBOq%l2yLYv%Al?{yo|p|kgiKsm%^jal$#+WwVWOT9#Z zj*tbX6?TSl^_~7sBB43Zg=r|kE4g@iE^taxio;*jdO{73OcbG9{4#vg?cc2m`gaVv zZC_C}RIODKfnltw_u^ys;>5>UZM6`4+gSwugHQ7EikSZ}#s)MN6=9UfbJuKrj&=w4 z2X@n-L~b?|eK-vo0C(^13mh!zR5h1YB0{G5_tLIcR{C5Zh<$d z9R;D!3ch_Db=GCeQ-hG50`d&a>owSBu{1N93Gw$tnL&YC)rx86Yxx1y6T{K@MMsQVng1@NppU4?eL_j$@hW9 zjJBU(6bPZI#-ZWz#X`@-VbpZpH=ardt0|NF?ot;yIy}{8J$s_hfHgHicB)k%k3#rH zks!G(z%)0pbX^0Jg9ncT41&f=D)?eqx#mZ_$>^uSa!L2h?>Wr+=7h$0 zm13~du7$P1o=R5Rc9MITdB)TK6e_xG#xyYn&v_r80}blv=+q*4MsYu z2GFX~3+rE+xDexvuHOQrOVYgb!VcqYx1cKc#tzY&*s*{;^^HQ?LJ!}z3V-9&YO`}u zpu}_8{xJ@7)!j{sWkf*f%LJ@(YvgVCAzSWYWOjK0L3W}@_uexv`?;0Z?-Kg4pdaO? zPZoA(v0Pb9XZt0y9k7hmcsF4U5IJXurcS>>3NyO`) ze%PyzHg$I|xF1|fOO@74gW0sQdYnq|kMfLN?KtsQseW7}COa9`5>$+PoMG;UH-D8s zdxJ+;Gd7Y}@vLE7x5>(cM1NM+!-^3cjGpHX-!+9&HSofTTo+@Z(t?Y#6<+ktYKH}3 z6MF+gm@qY7-|5U8!RO3o+Sc4F_S}MPufd1072iuYI%SW%{6rd?T^!!8=;|4da7dIE zSSe}URpAf6`xqM?U3WH$mR&|iYOH^U6}4z2+PIBgL_J7ljV?J{-_Q!Pt{IDP>bXYO z=L++YQ10uusO~WnLjSFCiF%<&8;n+S7Sh(-pig9R^QWMOj}P=(Mi){Fv*it6h0b;z z)r=`DtWK$^1}hg7P7Ze_sb!U4d_)(A>-pAc_)u>52_(TfUFX$3X?L^o+vf>FYy~l0 zdspY!tixGoXTrxl9jmB#<}Rz56yq5?uDvr%F2xQn#>G$g9hXBj)L@&;z0E6y`KQ*H zSwA&&N^YN9rTG+A*moQ*!_o@ou#4mPI6M@@Q0^N#%pVB{3;ykysOZ-de!!?D%IlZmlCEhe49z;G)&ZPpNyf)O5lU>q(I zIc+xl4V|z#-MW+EFUCy-eCR6)>U+;P;=63Pwviq(onGa34=4ZlmZW^jf;O48Yg1xS zxHVZN<0KR9a@rZTYnB?gtLM9}(RUCuvyZ>ycYqrBTT=fNA!30`PaTOp2yv@?e&X?U zORP4!eHkYcUkCfWlRAUJRQ9B6dkkAu_tx_p>rqldUT&Y9= zer(zZPyqK$Mho*R;$OKn`Ab9oTTG>(qDIDYoMd}<3EHIu~q++2P#rnbyB0&U3M&`($9=(SO2|NdbGUQ66SJBv)o5> zd-a|6Ff;8P|Fn7AvNFBQJIxKF_Wx7*kj@k263>UEkzJ`fLBR7Gz_Bv85FEW_ zAu|c_i#l)$B7jkVKkRZI7=r1Z(uYyyTZoI$3B6g`|0&X3;eE&U9 zpg>Ab_`Ui!(3HNAA>@(idRFo@Vk7AUy|H=mpN#!w)l_L4AtgP^T()IcR}$0i7clEh zAbI1rmy-H zLC_(wlp>)SdM=efv8FN+*VqiILz1n$$lr)hfxhw6@{UF5~f>FF66 z7#Nw)u`n|+F`s8+J9CbQlb4s9lbf4QP*Q|XKwN;ETU1t5{G!yQOP6?s<*r_qzA7nw zNeaZk$jHpZ%)!FKA;r(lFZF*GN*m}M0D$O0rvm&VAR1aadIm-&W|lJ`fc9@2_4&8; zKaA%98W1fl4IM2#H45r7;Zz$y2d3u`Q@Fu!-rR{%+=o-~X<`nO#LdbUu6u)9l1dMJ zBbZsZd3gEwFI<$8z9gfpqN=8@aZUHuZ9V-v28I@vR@RXFHnz@xz+7D2;O>6@0f9lm zA)%4aqM~D-zlcprewC7%_BuV|U2a}}L19sGNmX@C?T3$b_1G`1ZS7w>I=i}uhDS!n zaN~bX{Fs}^FD(9CT3*@SA?)t$9~>SL!BogJbab?IjK3g*Xo9FWEtrm8Oo4&phB>2? z&v|jhr%aqT6LTtCm?f0%ZE-#D9c1B_RQ_>c`xoj{(EmHk5&tjH|Hk}p$du0jmu6v24vgifGP}yHRIG1L0zo9YtjzBcM4oWTxg-9Hy!I2MUbAQ1)Q4mZtko5{ul z>*W4L)!&W~E>;^p1Blw4x@obDxP6(Ph8f~ClWT~5ambDx5{(bKO3Ml73k=T{ zc#TK<*=y*4O;of}2cf4$P+o z;Q+d3SycIr8^lrjiy0TMHsO6b*;G3NMaFV0<5v88m>mV$( z<1?5u+VN~SODK;5h=lDam+nK8D8Q8g+4pUcPCE-vyuAZY*bRq>#e$D9N&b+Y!ReX6 zw#vHT(GEQzeniF9xghh^Y#ufpA-b&<6C-Zn-@8+HBz7a!3+d#DP!iE+6hQ`6Y29UW zuoIBA7?k_2ZbSi|^JkU+)O|=FkFem{`DQ1PoJyoo@31{AYt_Kmw6snc?9Nz@Q2?bi z@AQizY#5!8qxA#9$cE1LsW^p|`}hokfag@!ilI#BE(HLB!;TeO*Ktg@`#NVuW=&eR zSC1gcv88?TR#gg_6>9-0UtKipDlyfa)iX{HRWBSjiFipZ9EExkLJA=3Ube9Z*ot5I zRM;abY`0L;C@&4P1H9QR2T7jL%K=&*Sv70*rp|J$1fz+j#DwByZfu#h!xvx1?)l9t zL-p)A>ItT|ng(WqT@=pm^zca#c9og)4g|dBj2(whtaH>zXE(?pCGnY$a28p?wo21d z=GnpPFek5)^#ttY+22JDV!X=zZ+sb^a>p&ka1t=@(v=4Im7QuAkvyYrk4SvI}u$G5}7?!R#u zS!jIo!~~4Q=4NAhw_g`OD7}_+6e?2o`}@Q%=9amHJ=x`XH8(V2fVZRacL)*p25RWJ zkJ}hobLo$0)H?ZC!jSF<_liy)M8QbNd=qg@^~*O^QnC_bTe2M*t(?GvC&K09xamJM z*2|;Xn)Qh~gJ{`|1v^}J6J#ak!KdA$>+OIXbx6dwSSEkwd{b5L9hv#cxk1UHr`~zG z@yMWS@|a&aSC0j}q?$M4@vbvUNLThOm(!naw8>+Q!VrI=w`9Oo^zwDVYFP;`m`rN~ zQwt}kI{UC-RZpDz(RG5Qzhf;GlemzrJlNhs6rQG#H*JZHj7J8=mXwoUaW&`XFSPyUsDD zllY0dG~dDDxN7+4FsX4Pjz1_WK$fI{TH6M{-PuNGuR?jQZN;STy0gBGj{MPM%=SY* z+O^L7U?!W$Hris{SR(5$H)MQ&EjJ*M_R?%DVHr->06!3ZoE%pzWc&OyDnQfvF!X$z zRf3HBdb(99zw(s9+KcO-+YzJD@0QFHE^fj+&>3UJ>+Xhd+cn!I1p$fY1C{F*Qr#6E zdT&Zq=tufoF1MpB9K(Www7+I@sTXzpaY6jcuK`Wdv^P-w0j?AG4iyS4bV=efGl1}B z;$esBYlys}eO+kM8hYUuimrO>F^R8eL7^y+GB@(zi@|7xb_wIYCoAdzPPxQzp}F`+h2nry;ZudL1Bc0 znswR%pNtcMXx|x_>1qIX)%W4%{+&H-P0g=_{&8JcGlm4(+js4Y0xTNSE=ve8+TzRQ zLQHddquj= zbTFTde2qL(KRkYExyO}z%d(&#AsBCCc1DJ)Yu00=-`qNs3>t5tR;F@_V_w(78 zn*4K_f@Nx(!W#DZ%mS!^fh;Tm6*l54F} z{53DoeVzg=pa*c;qgs#!3cv;*@pM!4_$Nrt45eaYWBx&G=hFc^zj<7;xn0)7lOBS< zl=)NWdl;YZXQvdkZ7nE-iw;(7xSppfq>Gy25Xq1z4=rY_7FWD#SbTklbkUsR8G|yZuy6D%7`VIxhI38Hd^o5WS zg)T;!#{y2<>{Cm}$j_vvvr$L)F(z}L_%Y2UD%Z+ImJi`O+Mi-JN)1u^n^(~7hpQC8 zivu(1w5#)zfYG)!x$=u@O&;iam?yP*C{uuyfy9+iNPc9G!u^ip*YKG?LJk`{Sf7zE z*RD6HJS>|S5gK~b?=%3JT*%ZkWi+=gm4{!cN1|sR>%p>&cz8@QL!1w*M#IesPN$6E zl%naXRCRS8*&U5pg{b#uSE%s_@$LGT-YoNC@JqRv zbDgE+TZ<(}+bn4MscKS#X1J!Qoz`!5yDrd7>ZVRm=}g?Nn?T#V!c-6AZKDppywp?7 z9!s+J6nq8iH&NV3L>G_4jN5bFdirazggbUE8}mvgzw;qc@W5@v+>kiknvA>Mr@ zrv%{unF4+w@#u`DFE{5ehq`VAY?EvsY*Ni z!_;_9+y7*&VrH#$G+L~*#^te9%YjPa$M>7*J9dh^5U)y%F5QDzbVoQUUDSY4)V*$<8i$(>o-y5 zel8z>tCD>rMthux!TUh8dan{KjB0U{Yer^|ZnJk`uWa}e11SLemwG?;1Guq2Q20JEqNv2=4sUxDm4}L2@T| rMGj#J&}8T$)g31gQTHBem=|V5Fd!Fbb5fG4NvIjz44<*$DM+m(to diff --git a/doc/salome/gui/GEOM/image123.jpg b/doc/salome/gui/GEOM/image123.jpg deleted file mode 100755 index ff5ef33f6e199b8d7bf0dafd9e162cd758ae4455..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9483 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 diff --git a/doc/salome/gui/GEOM/image124.jpg b/doc/salome/gui/GEOM/image124.jpg deleted file mode 100755 index 2bc4bf34253b6dab9788bcf0f9ef1b76f14ce1e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6196 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 diff --git a/doc/salome/gui/GEOM/image125.jpg b/doc/salome/gui/GEOM/image125.jpg deleted file mode 100755 index d3cc1e010ddc056de13228bdb0640576e5614e17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11230 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 diff --git a/doc/salome/gui/GEOM/image129.jpg b/doc/salome/gui/GEOM/image129.jpg deleted file mode 100755 index d8fcb94a67a55d94a2d8db2f466eeb415a4ab3e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1964 zcmex=wkpZH5*GHWn6E78W*ER#tX4Hg-+{E=~>(PGLSiZUJ!-2?;R~F)>LQ6?sW%C227+ z1#JZ-HFZr*O$j+&104+m6%9>wMmBbKP7Y2XE-oQ;DKRN^lEMEYjEfi;7+D#?fB^~^ znV4Bv+1NQaxwsh_m?3gN5+aKvDZs$Q$jr>d!psWv1<;sUpd15>Aghp~p(C4cU?RIx zp@>oA#DyHnP8$!323`E1Vw_ae#K|QlE+HwUs-~`?sbyknW^Q3==I-I?6&w;8 z79J59m7J2AmY$KBRa{b9R$ftA)!fqB*51+CHEHscsne#9glAUcUPH>GPMb-@gC&`AZP! zWF{6CW)^mklNp)HftXp4g;mjzO~^5jJ+V+&$*7S-#A)KfjR!fEje|ajCKX-e5>qjG zsQMA)YOte;b8{0}j)uD#?&SXm7z8;O8W^TAGXh;N$jB_n`2Q9I4>Kc>!z{>P&+tob zukpi{1*{?rTNnZu9aw?s4-2Krpvs`JfOP>=0~dn^12&3L0|;Fibg}CP8_Max>AWg<}Lk*^`4C>8vzdP;B_E>ifG|!ke)!uNRjam2T#XH?ul(5? zVO6Tie({EOu>x|EL5XDcxqtk-vSZy22ei)g>^Z)pOyT*j>&FX4wa*Dxo94fMZ+E@z z)xUQozn0g(ey8;#Kg2idm9(az?BNY^XRIgw6a6Tfxhs2SPHpq5DbeZ6dov+NQ2>9FeaJ!qsL;lkL4E$Mt{xg^!*kc;5vA*=}(1a>2`QKhP{uDXLSHF9=ZvS!Sf6Q^m`4dAFt=?B=ev1F#FW#}y=Blz| z&epp1|Ja|EP5sJ#3blkl%hOEKtG%mlNZorTGE4ncpAm0*&>XF!hq7K=nj3j((p>Yj z)~#FHPTkdg`#54zPhwydqu*SM%Uvy^leng;2l*A3=S*932DNxWNh?^3C)6B_9E0$} gN~l4oK_r0b0#^MH!6^(=7#1~%;Vj;Oq5S_Q0K6i|#sB~S diff --git a/doc/salome/gui/GEOM/image13.gif b/doc/salome/gui/GEOM/image13.gif deleted file mode 100755 index 83f73a54ac1439ce2e54797508c0667b7b5374cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1499 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 diff --git a/doc/salome/gui/GEOM/image130.jpg b/doc/salome/gui/GEOM/image130.jpg deleted file mode 100755 index 8874e8ea6baa8d3a2aeeb11c3e13d00931d6e4a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3272 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 aIY(;)`X%-LMaM&eewTv(qxb`p2mb>ypThS5 diff --git a/doc/salome/gui/GEOM/image131.jpg b/doc/salome/gui/GEOM/image131.jpg deleted file mode 100755 index c4c47295cbd2495be4a76a29e8be04f70a325f18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9984 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 Nz!fLs?RZN6{{rc#?M?sy diff --git a/doc/salome/gui/GEOM/image132.jpg b/doc/salome/gui/GEOM/image132.jpg deleted file mode 100755 index 9fb153fdc0c1f23bf1ed482ee01cee7ec51a6fb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10001 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 PVuv_|vvWOx{`r3aFgZ2p diff --git a/doc/salome/gui/GEOM/image133.jpg b/doc/salome/gui/GEOM/image133.jpg deleted file mode 100755 index 0bc42a6804b8ef4fe1dfd7d9d0495aba03b572a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3685 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 HC}-fG=dz8N diff --git a/doc/salome/gui/GEOM/image134.jpg b/doc/salome/gui/GEOM/image134.jpg deleted file mode 100755 index acdc2bc641fc50b2b24dea91744af039399008b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11106 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 diff --git a/doc/salome/gui/GEOM/image135.jpg b/doc/salome/gui/GEOM/image135.jpg deleted file mode 100755 index e11982864c7fce40db7e00b84d621f8b59c2f71e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3633 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 pHWtey$m=b{{f{2sV4vc diff --git a/doc/salome/gui/GEOM/image136.jpg b/doc/salome/gui/GEOM/image136.jpg deleted file mode 100755 index 196790a61ba401bff384ba3a6a5b241b669d1038..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2945 zcmbW3c{r5o8^_-fJy6Wd*G)mpPD$a25;3J?<*0)@d5Nah0|0Q_BJJin_yiR=Iq2n=R| zfT4`PU`!Lj&;SSrl=G010gTJq1%B9{TlrR8CPLh>xPb@PyDXvN8W4_T=H=rTKuJnT z%b;ad)zpt_XlfZ5A2%^QVTQG_J#BZ!{w&_@y!!UHQ7Yw!ZP_<`#{Efy@MffFbZbWDwI;#tr6xKo2RwI1Q}fF8*AHm2V-q4dXJ4 z8<65ExMd#KfL>-^3Drr-l|AZx=>Ls5{QrXfhxs35dOg5_0D^&JFo;3V0RnS?=pz6N z7{vGha{zh(O{7j`GCYhKkO9a{KZe%>W#6>TwtS^UJUnB412=&1wM&EQT%Rs zx^_if(G5Zpgvx!WQ!Tm$anZd5y0K^Ds$n^71PIy_rJ=o|gC{!6OueI=DylTt~MR`$tp@RJ~QH!fX)X1qfKE7J_ zTpiLXLn5loWRGxeR|^uGj4pf=q3N~lbct$p_+9C zPiu%k6_i|G-vZzr9D~U4Zz-U@FpRn1lD@#ZAaXuGnWg4HYmb_3wE+9kPUV<|g>_+X zY~YNCl;XjHe($G4Yp2}_EZNF&u?7>7Uv$k1Jms18s|$vWoUj3~rldyA>= ziB(Tmb??A3Cn!?ea&dxZ)*~ivI$@$|HYo!-;C%cH#Yv$jNECC^bjK6?sIn~mwUKbM z;sMemL97R23%byWtL@JS$?1yC*l_rDU6>V@5Yu`ZZTPr!u-jXExGbu?syfk36A)3V zpYS)%p8njJB!eT#@!qv?M*#k~i{3_jOkwhJH>|+XM%*CCA29=Kl36Ur@!dQAC+@z4Siz05H)~$K7hb#maF;0U+-wE+cydvl817qEX{Iy) zenpFU9H!c11-?f{oENf!g|si|^W*PtSpfKDu1D1oArX<|DSDGmSJXXjr9QhUw}2t9 z7&2P?RAO35)#a$)6VF&D%^tlPxO9jIkymu<1o^uGFqM5y^T?CxtnvILT%jmFM~nnM zm5JU>j-M&?6@e|1Ruwl%Z^JYnm^Y;sMX)yCGxpC|U#VDDkx_{BWP&Mk%Ods155=(2T~Wwb?-AY zQ?cu|*Tr)wZzLFg1gkh{rRT8ab9zegt>Kff}rrPi6(H0S0m(!&HijU~H!(q|Y^ zi{!rPtnN{4^IGE%&y)do-7pJK3*|>VPkBtZyDWNry&E8ee-WMoS$x*+fd)UT7xn}n z-o~A_=>{%cv(yh&B6ttVZt5BvhxCNr+x}QRZ&OkG27IIyeUmCk(CV1evD!AU+1d{E$`jfTkXN48={YZU|5xc9aj<(0ckE5>T=6wNA~u!)LUuD~^(<`_QEo zat66nTG~>0hyA-<;z?$i9ojBWwpaU_=0!Id8+^xZ>LaPBiR}5ZatLAz-Z;h13! zTPljfc3K8LWTjm^fcSesKo8zlE?~bFuT{A#V0Fft3)!sxmiBU}liNxoz27lV&hHAE zFn)R0c_0;7d?7MF?%H#^NkL@3lMd9If@vA8HJ+`#RjZmw=ZK>PnFDrhDSvH6`vXEh zFHu~+x8IxxPikD_^2>3N75z^;vY2;|u%Hl3F^Tv$xvaBIXo(=UUUn4Jx)+h;I%~ zwb);8jB;U?`EYK*4#}dZ>C?{z|MQUnmKIgb(s&f+Vc>+ABi>7~}TE~!Q5wO=A8 zK9^PL!wa=$P6q23Ju4erQ5tf{i_vIkG9S%wiN9Hy%PhYju4CuIuYkwDn6>cp@Ca_nA1{MT9K=j8rNjg3D1A2KlhIRF3v diff --git a/doc/salome/gui/GEOM/image137.jpg b/doc/salome/gui/GEOM/image137.jpg deleted file mode 100755 index 68cbee2bedd6e7c1098883b0a5579e39096c57f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4060 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 diff --git a/doc/salome/gui/GEOM/image138.jpg b/doc/salome/gui/GEOM/image138.jpg deleted file mode 100755 index 9f2a0dfa05cf230430c05297e94f6ec0749045d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5792 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 diff --git a/doc/salome/gui/GEOM/image139.jpg b/doc/salome/gui/GEOM/image139.jpg deleted file mode 100755 index 9a203959ad4e75a2790c2fce02ff152660775ca0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7526 zcmds52{e`8+TX`9lX=Q?WR`>|R2)=>PNKmSIc1ilL7Ba%h)9S^gCWv{e^RD&44D%} z$dEBp$q{jI&ij7b|K9t*-TU?3b?;qwecxK&d)BeMYoGl*zx{ij{rsN2v2JV-@a;A+ zHvu^K5eGs5U??E$*=4j-=AfI4=Lz5Az8+p~XJpJzxNMZM(cGw^39w#p0kASNvoJHW zvaqnQv9hvp@NsgmvvUaY@Nn^o3W@_Y602~YM_Xqs>!7<^PSyDWOdfiJ9zj#!st+_rIgc zYdN2e(<%-*t^HJC=hN>vMdY=I6lPaZ{|@?}!yNf-u$7kBeKx0yfJR+qDP=YUI`Z;#F}lSMF|7EHQAVo~=iIMF;BF-3Bj{Bl?8 z@ct^d*#xcI6t059Ji8LIM>tdzbF)JjM5lgI7=bo7t6Iz7sF*y|B0D7O7k~5K_pab^ zXQsC}m-81TZ=Y1Xx1!3Nm7~%~CSUJ6d#0hqvd6cs)lZEzKAWR?$yw_}<+rz*%_q+s zCUo0*lkfC?MvWJqT(@Rqhxlh5vpwXVndK$2n3_~{U}u}azK+2w5>j3}UcORfj+Xo9?>lk@#I=j%Nxdwo0_8_btjtDd8*(>X=8|yoA-B`d_cXM% zzuHbGeJE;w*d5@qr=(ES%iW!H+S&~%$sHTf!z;yI)oStBp3cT`diTA(U6X}Nygj6+ zJFFNvFHhx=`z9C5HYTk3@Fb7>-3_s8XXQ19%K5y_TtlqTM-{}QL(iP2bv#G{#_Di$AukgLHq3NzDMBR*Td2dm~un8pr& zGKsZ&vnIt&S8nE~-)-ZKiPbt(0YwekP<%EIgBMV6t zPh60i{WJ<15v0SQ`J(HK(aIVOXwiucP9LKG4&Z}7#`GWa(vFcuG0>)Nf&t1J4Akyp zL`0(=v{eQO)Q(r`7|3vn$3U0_24e56;Cbn-)YY&)Ar3tZA!ER>LIS1hU_jV(ft9e7 zJ_HG|`&%RlU%82M#2Ogg-!KrBGm9{o=6zSF19WRbw-_>pL@%*DKZ=1hq+tv!vrG&u z4pC^2h(A$SgNk3T#lSq*JIYKAGJ6m?0)KuJC5%dcNV_Y-$PDowF5v6-JlDBZNYJTC z)?T4F^pWM6s1_HpV$HtX^;h;6!bDv6D85`ed1J*$fWYU^vuu%a4#q51p7)sqOiX6J zQBBE*sFZFZg(e3zP;bYj6nZ)KNh4rx}$^zgC3q4v64Yj5;sc(M2OaZ@=aliS<69;Y_FJbB=tT#Mp# ze)F!!hsf;(XG>dS&cr!HmcO{{6KbjUA!L_J{-MJ?&A$5APD%BIedLaIW^}tXE>$-6 z)TcB`UP-aUUAliy&or%Hdvd^S(x=>R_QBwzp+|L3#QkY0Pm+V1Bzjvy^A-mV4AsXJ z-v_yq8NNbv9!IX(Svl&*q?h`nI_MqZz)^Rw`*(4{@Ze1_CKE4(p%lMuO#oH zT^wxDs(R;@=p{n!yZ6?0?rWNtYyYOAJ%t=XDm#H|l%5l=F+b>rM$0f~}_@!CRoVSdKZH|`|k>$}z zZ9MzV-hRGoU#V<-{p*1>RS#)VB-QI8J^AUOUY?1QiM0y~Detn3jhe#+eP5j3)_IxD zx{i}%S5ln6P{Ck%6N_-7s$K?c)Ti%$aJiR}@=iCasnHhf$9|d!gyH$T zR4#$6q;rS7!kSuVMK|dd#7JwjZ8y#FvME!zZBuA;HgI!8)EmPm(tBznO0O`DN7k>+ z|Ej=Ql%uq7V3&_?VaHAFg{}GrhW(>AiaNfEa!4)dJU-t{ekP_lD&fL$PVF{d$i29r z*w0Zsk47)|Y_y!AEG67rdo{%5Ju>7!byw?7?pC+vPfM;lb*7Uz1P|y1UQR-u7?N5Khx$($iCDDpw8Cz{~KzIauQ? zIi*`6mG}4?#n8gj{LC!AYJc|>Rjov@HK(`t^2K(!e*Gq6>(6V6%I@1A;-4{b4(42Z zt+H!iXK(*RLGh0XQPYI3LU$oxg)?M$D+~qDz*A=5@+Zm+$wKH6D_EkT)X{_^7`W&%SgDuD%Qdzy<3M3^o_siI-TmwIyD#34JHDta+~8%pOS7HN{_W*I|` z(p4DXtgj-^Z}1ve9NfpqjKx5D!VHhu0`K3zOqk}jrPGms)26>6)laFm3@&kh22BX@ zbf%1ttknD);ECKJP$rDu{@tREuEJDDFW&hTOk{q;pXY=o1k{MiEe*qIp ztNpJ?{uQ1-kxW?@@%shIQ0AWfg601J{HM2uDeM7A%_r_z;kxAPL)~wd{T{S(A2oOM zAlwj+ceFm%oSJ=W$3BuvTS5J@IR;J<=lLB+v=ns&26A57GBNXM$A#pLUTp$Xnv3yZ z+t*_9yZ{Coq0rS@;T9YUmN}47D4)X*z=~QIgPHQ(4hkU%P5pvKl9x6RX^((G^H~fS zsnb&lbZbCxD}%ay9VPLi>%(~q`;j&h1{9*9OdGO&JVBXIz(5jg4`MU$|D>n%-wh^W zpz&33fwEoupb$mG;@=D#h}r9q1#Mg>Y)$GL zAzv0@)Q2&t?KZLPX3fN~bg>wRBJfZebMQ2Pl<9?HvduiZsr1s6&`-eZUnlVSr z1&M>yFFR<-Zf87vHd8KiI(+1|N+|A^dc%J^;fG|%BTuGQx-3zMGTvTIrfHO7U_=NY z)pD~WG;}*;_B>ZQs%g0P)w=dqinKE%ALGO7HMWK%A=NdnGPf)S%G-6UdAFW1E@d_x zt|v0vn&3?O=tiwe`0O?Pf?E5yUe2g;`vX0wOkn=YC5xAN{M%wB1+Nt0gjXvi2(n`3 zy*M2vODi{e)}_5d;I8)y$jNfJJlSc8=WpQW+ZvPxIxuj-bU1;&OtZuQt0#nE}s*X;hJ>QJhXrgtP}@rk>h_$IvnXG_`e4Id%xuvcT8BQtQGc!^;p`lU4Z z8qf^WF%5iy-Q>t921+Q)>>1o2FmRQ^C?leASHiVItbK#G2L*R$$II)et|(O6XP9{ixe}DzO9L9%ku(ndsSZ%pmBKwwZ^7;kE_InfbMhQ-(qz{;-=3 zCa-YV!!iR`I6PpHZZWHPyRd%!22{2zO-?R#L!O6{Oj5wxliU0xt=KZ4Xh|m2n&szG zk0;vo<>j>xbU)F08FnP5rEi;EzR4gD&n7KH0&&WKtF!2i`k`|1{@doi-Ad$*c8o7pBD|N8j(6DK)v zOZeMo+N{_fx2cpIqdTemL*Rul@{Q^##}|EfO25S24r*grA<}3R4CJo{Uk$i~?8HE#Al#S* zYms?DLn${5&_mJ}VHr0P!lhBZ!+(lRG4L+2jU^2z1GrDul|6kJ5%hc zjw9m10G`1v6s|DR z;gK&M5U8nSv`}qaqt3;Ut@TRga@|gQ!2%%Sd&0HV@}`e($b9k=d>1ye>PK}3Vc_Mx;Z?^3?-Gs#0A-p+2XJtDS zyaW3&@G1jtJ8gh?q%U(GBQJIk=A8Z&{n}Pp_ zKJmF2==cdxI;<8yezNp``DX6pEtS_EYP&b@~AKSW7*?bN#~#7L#|R>_g%S zS$k`>!zqrg_zKojhETTMyf82~;){V0PCzUy!obpOF^mEWBDmJ;-c;eO}%p}Y+~m|boC}HD_Jl=GkW=l=MR7J{OJ$RQ@?xW z+!}UquwuWx?9?IZ0y;Tu=2^A@eNv9etDoqbV+ zOxCr+qs`rL9c7>muHlS3MuvIfLbai6F)|Is5wFDzR*L}HD06mq_Ux;%=DJehQ=a(N zyz2)#wYhwG3~ospzx||pFKw8EEsYO%yOF266^!ss_G;r4iX)!~_|bM=KiLvGu64M) z&#d~J{?yJrW(_u+JGl9Dp4PaIGPzUF-Cut2Qs>mA*QxnW1Ham6UopE;hjYBTy;vr- zj{L1aKHQ%SG2kIFxYkLv@>*#b11d7X8m|2n)^&JmhL)?N;YGOkSwVEC1%kd@jerF> zdmRI_-;q8tgV~Dp7zP^1Xg>i1CZ>k`$AWeSB^xQ1mKK#1%h&1`-ICg*VYvN=5Dr!j z_M31oqE9h^bYUO{iWt8Z6bgn53UwO;f`)8#Sr7F5ayRt8et11( zJysI>#`?_j0B}Ua1x|gJ0os_XSk{nC6ZWNYT`VhmRvKY15Ny9i*QW0CM8G!N?-`r~ zYOK!BuK)9IPVfEfv=j7_yuK;kJ}=+?YWz4iu2M>wDfl1D^Wh~7m=nJ#p^?f=7hWVb z>!h{Hrf;ZUDekS3fol(s1s)3_#JQdscm*R4t1k^1e?EXRZ-)8+?^avADRlN@P=kjs zaJLJg@pVAuuEBtQK5X6BJ%I8XjRqfvm1hT(hjd>0LODE@MZv;tKvkJ z!+zQ~esku-0NdA^M$dh&?@4J__HSYzYF#`yS0wF_+{Ovi!}MqZq$t%#yA6TI*TQoE z@$U(jffp)6gTBk0uylnNA{Sxyz1$A3u#L_raaM$2m;Vlcy-hcoJG%^V?y&-)F=Dj*E z9%epMj1Ur|2 z(J02FSP*q6P(CFE)22|EmBZ|~fDwYjsdrL>Q()XouvCu>7vRG{h!X_P3OFY~=!PT- zDGE|ukftHSK!%5YKjZ}{@I+S^!LkI$5j;->gG5juS(fBDlIO`_kQ4+80hHTG4Z|>$ z-%qhDjpH=KFaTjtjIml7yWOwXvm-PA^WVTf3`C7&BVPbg0UVG<7-}n9T+*<4wuiMB zyhX?i6dF7iTaPLhW%WJuRJEN@C6+`OZ(V9Ho4c;s)_#ldosPD5Kx5tI$LDm8kA3ZR zS2`==TrwqEfAwjVp=@4SNByx+KzR`T8>OkyI4OMxVo+;BVOFLDPlopg<;j5hU~x`TLm5OVoG|OUES$g^WIY5 zZ1?=l>1Xr0J7X-rx34~MyLjp*>~6+ddg;DT8?&DXIdAA?j%gcq_vp^|-Tl=&+xFr3 z%PPsyZ~Rao_RHI({6FAX*L3sZ*Hd0QqbeIuhDstW$`I{$F5D$wxa0n~n7In`p>Rpj z1^2c+J?gCAbo1oH%9}~v&>_#P%!8*%RchLT{33Oz^SPo==4nL~CD+QMU+z%J_a|;Y zXEe{;njAa$zRZ-Q8Nk<@cMY7h{LFBVSLP13WG?v{ZIY<#D-VfOg{cqZqQ}jnkdRC5 z7G#E0Z5ln+_W6uVT3~7clDro^a>dNJX7M!DD6y<`KqV57(d9gtuv`}#4?tX;C@eXu gCDA?+s0zoRxj!xPNiixfVl2qdlBGt9!V$3aFJ?`1WdHyG diff --git a/doc/salome/gui/GEOM/image14.jpg b/doc/salome/gui/GEOM/image14.jpg deleted file mode 100755 index a7e280c179bc59a6fa1c7ec8a6e94c891feb214c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8265 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 diff --git a/doc/salome/gui/GEOM/image140.jpg b/doc/salome/gui/GEOM/image140.jpg deleted file mode 100755 index bdc91c0415e59135c91ec5d42798975ffe1f083e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4364 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 diff --git a/doc/salome/gui/GEOM/image141.jpg b/doc/salome/gui/GEOM/image141.jpg deleted file mode 100755 index 54cceb081a300117843588918595b35de651a47a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5916 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 diff --git a/doc/salome/gui/GEOM/image142.jpg b/doc/salome/gui/GEOM/image142.jpg deleted file mode 100755 index 1bb5ba7437080d1ed0ddac1f1b8f3f0adfd599f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3170 zcmbW3c{o&k8^_NWV^Fs2ONbFevP+iiGxlLHleG|8qB7RRBOXL3GFd`d#?B;KR48ky zH)HIQSN453OtyEZ>v^B+{p)?--?`5DUFY1_b)V1g{(kS@IR^s=qX4@J!WaR7Xomp6 z1po*8fQXr)u7RkHyPK!q^=sF!db#67js4utieePb$}0c|-+(^>26}o3Jv{>i0)a9x zK$+N?nHU+FI9XYbvGa2A@$qo+@bC-4MEC{81bKKwWkkhJOTyuBK4Dq;Gg9&}DYztv z0SaYeWIDmjd_q!yM?ms_9tSO;d;kDJKt}`kJwS9|dI$rQk%{>j2mt?z(XPLue+#k$ zbRaO8jvfr5t%8;&oE8JM!ou5Vz7KpGjFSlifQuovy@-LANMT=n$w#svfh1&4&*ivBYu zHtueGLh8db{G;@Y%&h!^LPAk-Nom>hn%WmHU%jq-)70G3+SdN@QwO=br?;7;e@Ug)a53pnBpBq zF1?hz>JLofO6V1CSN|?%9+>hEiPb~uBk2E*IqLs{{)_o99+DiiakG)Cz2VE0-n+xO@%`a>3k**r-}?tIw8mH)He#= zrBVxQV=HCs*_PbQTVy`qp}UM2blVTNdc&;(_sCW)t;ahR=N2CXrHK$+*UbbDfb_dv z?jdc&Pt+61I%=X}iI@$AGzFG2bbX@C=)6nsoXqX+-I%I^2S+dER0h(3zaZ#6Z1`Qd z!g?$U;pP7r6d)I%%O{I@{+WVtLco52a8%~i`DtYrg36cuiLf+9b#h<%pdO9_C^Eist@!L>!%?<&Vn%0{Bo6>AKX|A8 zj-Aw}#XQAQKEH)a(Fm((l9`wp;BVV`v?0NoNVt0iHshf{S0U6jpUu`3D(AnGU#( zN1&b(6<>PA67qv1ki@u8t15x1lg@uk*gUjMiTg;$_N71GL9J2?zSEewZ29TN#^#fE z2LRjr6vpGsV6g16v%xgHV;$e=!S%!3ztt|3HFm`At5{OT4s&aV0`?Y9x*LLp0nv;S z)g5Lv$9?8JHl&X4xYum@^3{E~@RUf)a8?udBz!Of`zB_LyC+nS1k!;p4Sr{gOccV- z@_Bc>;OlX+THVfa?x=XmO~M^51*F4ajN{S{Z3~Cmj}w!dN!yb|x30W&SD$&l!Qflm zS9klsglG6ZmybJAjf{A8E3 z@8mqUGNS==wzUzo)w?smJmvc;NWlxp=osCT&P|?yJ;cCMYEx#Nvx2djsuc@dEi@VE z(Z_}Q`>)v6m3BOwC60uguhdZMagO$xxzA2B9m890w9Z$VbY6QKsg6S1g`iPSz50;u zl7&nQy|o)xE^F~7Y?o09w}y-dgX~3c`kmr{@)u!kO2r`a3Iw zNceHTc6@wNal}L*2?wEBr(Z;lT(4QxSlx=)(b6VnwkHx6rHq66m&Azm7mR2L=*7jk zm7=m8g};!qzn?E{53m+36(=_;mYb7HMz<{5X9MP>A6O@MT2>^{Jr-ovQ?4zIK-{HF zV6{SK3hf6P9iP$)1JYp(4~Mru>k^tz>m>NhDiK|0qpWv zqfv7&rKiC9%>@k((}CVJ4T#^NFF^Kz&C`7ik{Wpnt3vZ$a;+jaQ~N0ye#mzL)BtfJ zJ*DZ14zmu*O%CrLS3TPE31^sJFfc^abkR9XZ}p5Rv5JjcM!}N`ADVN0{2)%QS6-?L zNwOP^&#J=q+$L7t=_Dtyhn0U(FdWFvZSiNtU2;glP7$P0#dEj!y)4K{hBK-ScUSdj zyH#>v$5rw>$GN!LW}NIek(xVY>@YYMDoi%?-nL$B%A)6rRJR^r`4*})xYD*e5EEUgVLj4?0XJ*w`R(;awR1r8bd}HZ7}K`TrozsrS9AKU@YNq_6$3lo zZZz3cEE{R(7F^iaZ@4O~nqHeH(d)CtfgKTn9rip&N%lCiv* zMA=|ghw2cXdZOGV({JS586`ie_HH%YP}KnwLcf|XY1}i?J=9GWFmt~VfyYkbNd&HL zLq++UzuFB^vCxzeMN=X{H#+O*ZgQgv938HGI)tAfW1_5!SocgM!#Xlf*H=%c>{ToDCnd?t*ayCt=0ob|=a#N`P30m_xO(`43-+fayb0H?Q z-)Fk-t(3{?E4Pl8_D8`>NGGT~Eji1BLw)?SzCMzcDIkrtTT{{m7Ky`#mx69*q|w9? z&L}B`pjp{Gd`t=mXr<)Y;UZl$k`UpJX3ZWJp4Z=aZEhibb1>$&HXEflK?LgidG1bU zbvVyUIjq#7Z)2i1)r#^*S~{$f7vigcodT8a;~HVvo!lq$4c3%47oFIP@~WHB6=i;k zwMy)-PtG^QI>i%L+CIM}O_tv)K#tu?Qp_F3*6WKEpY$==H$}~_XqMF#=BD-5BTk^K zohOB~q@{btQYL#U(dAp;n_elLIQ$yZy_=8gth{|8Sf6I=KJta>)0K;t~nr7lJ3(Ylz zp`V>N^0*s{VXI1Eo(SV*hr&ngO1^U~FxF!3ZX}C+&EBwsVvZ-e&!YKwZdCmcKUeMx z!gY!LtCAy%q++dXT*mhM?1bvuWclB}541@<$3Js}$fl9E zC_g+OvX87!#Zp4s8my$J&SFtdMxuGpk7&(-8iFFS0GbG3zE>-?%kVO&Hokc0R@?yFY z+0j4=?ZrvUlhvzZI>|I{3xVWHoVNBFt;$JWGquio*s@fUkL%xjzsH*$S^97*JXF>a zKpv4HFZ-c@*5tjvo*V{!CB~89yPDe zBl=X#JxQml+x+kPv`%dw0PkgW8Vp=jV0Y&2k&?~pIE#h0A}@@wluU$pJQ0&4g?4;~ dL1wByELlExQ%3)975>}r+P};GpAQcP{{^YzmpT9d diff --git a/doc/salome/gui/GEOM/image144.jpg b/doc/salome/gui/GEOM/image144.jpg deleted file mode 100755 index cecf915edd5bc89713cb52082ffd0034b6929b0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22434 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 diff --git a/doc/salome/gui/GEOM/image145.jpg b/doc/salome/gui/GEOM/image145.jpg deleted file mode 100755 index a035c8d89190feca1f65546028452e071e92c63b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10447 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 VB&}(X^+Bch${O?ZOeLH${BL6%3orlx diff --git a/doc/salome/gui/GEOM/image147.jpg b/doc/salome/gui/GEOM/image147.jpg deleted file mode 100755 index e38c1dad25f83880f43beea80e0b4097b5db5361..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4258 zcmb_e2UJtrwml()5b%Pu(3=J+!bL=+6N-eQNRuM5QKX0vQHp>N5dlS|7eysPz|iyQ zDhP@qO{52@p@<;8g@}aYpnVAIw zfk0VUps<~6FjiI=4+jVPPJUhi0XQ!lE+~Q!7Zlzl42MhXmDsgMT2@w8Kulquyv#m? zjI1<>1qy|+!noPkxTS^QLel^1#&`|N1ON~O^sNDZG!PS*8Nvc(g|V@N0Py#@t>^dI zZIe3zCJ-3R#0-XPonmX5kgYj@nG3=#sieokW9bOp<-@x_EIxyEw|?+0t2aqg0@pMSvR zz@YH!5s^_hZbm00CMBn&-o2NWiOn1!gecLE%G^C>|lc<4vb1IeMS8Z^nZu>+W!gkPs~3dGhP5(tUx)? z2nKDT=K_JbK#YE12N<+90CNFI;05stZA1om#B`Mn`2X(|r_#=y>%ZpEq#7?q3P=QI z0hb5d%B!t`eJQ_R)>1A!D$;sfs;JU`>fv)Q7vIsGydGZRl7%VDGkiA$U#NY2&RUiA z&JE9f7Xt7C79ic9osPZB^+)k+7~Prl=|JdG=D0`U8w-hlIK<$hEon(1iyKv9ctK2% zFUrP6f+TP&&#NfP|1_omrQkkavwEy|)x%fR%2P0qeFa4xHfU!6=_5UzIeCUA0%Pu4 z+D2v!!1!Gu$Aw?k2Q3*pCL=7eTu!9w7Vo|eVM@} znTTlu7@4gt>N3ero$5$KA>khAbo-H+-U@M^_0!#azuL_}=L}&cviB;7xrmbS9kY_;RtI0cchUTBG81-p_N7Uf{eN-OMR= z8?-5lkH~tM_*7Ks4~M|Z^1B{S`&T|vT9&etJPHGrl~;2f1ZIwTq6j6qf@`k5x2tt) zB!dMzJI?6woJnaBzk3b#DeN{~B~mQ4L->DC*Cqwc3BNGw_HVPS&!1 zHGRK#x|#tfboV+JMLmag%@bE*YLlB+V|2fN4$_nOz|A^k2uN+?3Z!gv?fx!mWt`fU zWooRD`v@yJ{ih!1J9znTVzZ9r@Bb_56NWLRZxhBfg%Lq93?Tc!Y^!_En#ykLQU(x3 zV;U1LZ9^Eu-3eQr`{EQ?Fw6HTSSW$eM;AphX`uA}q~{N^f;^8%3>7HUodC0AUpx^n z;vBWqCcY=d*0+$&Yw0liYgyqhMTANv|0XP90c{Xg}5JCGA0@TzURRRWyb@ zg8k}#qZV94bSt41-~P1wQSL?kg;T`B%94T3h3@)%wQK(rN7%hK=2Xm=&?aRJ;Mrho zQy2rNi9mHyREBYc4-8-=S?=x6{}9nIH-w?^L5(;yaqIpx^Nd0b6}c+CQ)CkH>SOaC&n?sRKSoRs~W zOws8r4KFItXLdc+N(f3Pkm8$2qks3;_ZWljstrV>5VGrd1?h_uSj*TqnL(cKNhyV| zYA4%szu4USW_@rbtBc-lUVYR@_5^5=S}WML<}s<*Guva)-o(A_lKfh6W1Vq@^p#4E zz{Ux)Bf`_Ms4REO>j?bY55%G&+opxbxp$Wb5AS1}TaJka*pQ%lw410YMK0fD>e>04 zi44)*JO84C?I9Y}VY+CV@aDqQ%hYKO!#za>YL)P`Df65|@h5AOlz7IB8NiTZ9CF9_ zVm8z-*U!qze*jxuc+B-1U*P=Il;1V$Mx#2OAahQ?!xY=`egI!+SaJi1&gvoR0%09q-@jDs-W>3pXKf2*TT3)U0IYruWtI7 zdHXpE`2~t~QbRXuh4~sKMiz}6jP{zj*KH#V6B>P-=hd5`=%$COr@4&`^>j+@$74Sz0l=UV zBWpTIOwZmI2Z8Rlg4y@qgjNL6A9V#kv@Z`z@9>hs)?(jG1R2Tvk<3DqKpy8ER5*Rd z`Zy)_wN!Ql(WSw|`1=))^X@yenYYdJVN$xoods`3nc#kt9__<&giKA;zDBxd&{Qxw zwTrNFFRTTrIwL^c<)*H21KU2O2SGRoi)etFZ?13XnfcwW-n9%$>mM%Nh>t(TJZ&Jfw2y8`~k_8v|0vdhi@_ zzH&DOx8xHPk8!%=7xxBI7{FB80FZ0z@}1)HbpOl9$r3*C1r9rk z0L`PQ;S~Sy#cWzLStXBVQ*$=RNWub=U99vKZS${aZ8SYqF>UkwbGexMq*In#)c|qD zsE6Ujqt!4jb&|2l|l1BSE!}WB?83 zQ*vT=l}CyuEP?hjq8BT+kaGVerRA5xcX@FNbMe9}b{y!SBGYkOy!3L2cZ-RJ`aMUD!Kle7#{k8Uk&AOt48?&yQABt+Dn*a8N$6CtI=~GLJ zM{!~usjCU>=6l{^^8Hv^fE_QsMVh}o=ANW3JmTgJmMWj~SuT5bG?ESJ1Sb6bbw8Cg zf08#DH$?a6pUeMhOOq{I76ce$w`>{eyWR6)%fd>^4)wB#5*}ghAgcIVx((rwmo+&9 zMzOm^>-|U{E8iXWw=B6mAa0cj0SurTPSrlr0gx9Io3XltrJR^lRJlr76|qGR@)ckl zT2_z^<$}p%0M^m!wW$_A06J}!dwnj6Z9=Z}#C+l$@4#}ti$T-$=F~$WUuC9aXk~&( zFwsf~?zsokg)4+!o(!*gJn@ByY&p>DOypcZ`Bvo8Aa+VciwrrXu7go1IMF@C+eYswoMU(VS|M9QHAF6d3my{*3f2&OQxp|#X< zd-jaajG3mggNk;tarf*zKUYY4zzvZIEpf~Dbo-2aO^)ZtvsM;!>%KJBPXZC!il^-% z|7Z0LaIiYQ6bT=+fMn#J;DgDcuZws+1k(vP5UTxk)kp>d>z1c@QGKd8}h^GP_y2}Ju#l%;eF&$54!lhJ$T1U z7*CH&KH%3P2afygmSUyfuBOuDl9DP^U!zXMB_%&Bprb?KGS+I_lgD3qyv^vE&gH;4 z)tlw6C6RB*g9j}6M<-l&2xFS{5NEtbg45di-cXA>C~4JsT5bB3{UeE+AxSO_AP77m z-gp*k{tmYnyeL>@R)>cOs?)H^&P&lgTS#gqnzAMLzJmk^__)1>QBRj4kWF21@xiYPBH-VQ>m|s=U4vAWAD?3 WFzo=fJB9s6ul}Q}zrMsW`u+v8Z5C<( diff --git a/doc/salome/gui/GEOM/image149.jpg b/doc/salome/gui/GEOM/image149.jpg deleted file mode 100755 index 2332885cd10ed48e41c341904d84773434e51afc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3666 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 diff --git a/doc/salome/gui/GEOM/image15.jpg b/doc/salome/gui/GEOM/image15.jpg deleted file mode 100755 index 50a9c9eceb8622eddcc21896ca3244ac8fffb9e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12330 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 CFiz3{ diff --git a/doc/salome/gui/GEOM/image150.jpg b/doc/salome/gui/GEOM/image150.jpg deleted file mode 100755 index 31fceea62a1ae30aced678c741ad05cce81b3d0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4622 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 Jc9UMu{U1pY^eg}X diff --git a/doc/salome/gui/GEOM/image152.jpg b/doc/salome/gui/GEOM/image152.jpg deleted file mode 100755 index 27ae4585cc5e033798ec8c41a579f3b586df17f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9107 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 diff --git a/doc/salome/gui/GEOM/image154.jpg b/doc/salome/gui/GEOM/image154.jpg deleted file mode 100755 index 5129007a9ec5e782ad6e438783135a7d72e3ff94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15519 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 diff --git a/doc/salome/gui/GEOM/image156.jpg b/doc/salome/gui/GEOM/image156.jpg deleted file mode 100755 index f2d718579efefbc8e411fc251f63e03928938e3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13889 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

    L5A61% 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 diff --git a/doc/salome/gui/GEOM/image16.gif b/doc/salome/gui/GEOM/image16.gif deleted file mode 100755 index 44f8616a625c9eeddf7cbec9df96d7996f841438..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1442 zcmeH`|4$QV7{K2`fyyczidpFjv*=J5aWKENFm%js4~&x33nvK@hJhioMjt3+63hZP8%1l&*J;K6}(c)>w| z1H2BP2!sd>BPbwfAi^ooE=F}R;9^x53oc+>zqOiY*-I`u?nid^9&X(EUSO&hgk}e6Z(chrKyt z&(z@gTiwMS_?I|;VYc_(f%1D(eD9B6JICsh-~6WU?!f+ADcr_&ai(qMJ7<<9%EfJ0 z(q<8UJ?7)dEtV%)GxLYbj3!I;>@HjP0sDr`K~y*3ZkTV_SC#nTL2IWmt%N9ks9$k{ z%__3jYS$Lfj~XhUU5$R){dnQzp}*(;u=fbRo;-Gx)Nd%AKbt$gIquVDlWXB;gD3y8 z-TmaZx~huzPyc!3FWWM~ac<84KTnJSlg*D zDu4L$!E)sqipg9Y(Y{!*II3IMw;0rKU058$3NjyGPkg81@wma=*YDM6(6)a7<9Zy5 diff --git a/doc/salome/gui/GEOM/image16.jpg b/doc/salome/gui/GEOM/image16.jpg deleted file mode 100755 index 42f79d392974a949236f10612763688e363f7fa4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6259 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%0AMMtYQ(5@yT|0M)ZaLSD89)5iux?5uS85v7 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 diff --git a/doc/salome/gui/GEOM/image163.jpg b/doc/salome/gui/GEOM/image163.jpg deleted file mode 100755 index 8f87e356ba1b35bea8269e0b66ede4fc381c6b90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6781 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 V{E@2S{}HYK`pciKen#TNe*q1-TLb_A diff --git a/doc/salome/gui/GEOM/image164.jpg b/doc/salome/gui/GEOM/image164.jpg deleted file mode 100755 index a180e04d1e35a7e4751bccc2e9947625475ac6da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5424 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 WW~d?ddZ_5%g!-?t{r^6qPy7#f%8xPt diff --git a/doc/salome/gui/GEOM/image165.jpg b/doc/salome/gui/GEOM/image165.jpg deleted file mode 100755 index 330b038b8ef0e9d86ade8ae7b8fef83a4e7a0428..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9596 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 XI<2lO%=0cIv3tZQVhfp<`SpJQb@kxg diff --git a/doc/salome/gui/GEOM/image167.jpg b/doc/salome/gui/GEOM/image167.jpg deleted file mode 100755 index 775496ffc13ac02b1505376328b41a25b658e867..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5505 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 a2+dB^v0qx!tVK>2KFV?MD`m+sU;i5`{J%>8 diff --git a/doc/salome/gui/GEOM/image17.gif b/doc/salome/gui/GEOM/image17.gif deleted file mode 100755 index 4436895a495ba5f8e1a9749768b235862d0bcc3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1721 zcmeH`|1*?%0LPzaH>_RDqM+?S!_)m8DU+nG@Mp-U3&;M6kRk+&3Sejz32U&_sly&6dvH8 zQ~~8eI0QiehX5b}oCE*@a0CDp$5CKJ!8!pK$GKqA4aeMY+zpKR;Fu4N`v3zU!}$0l zAIJG%K!6zq7$yKcV$3MUFfl$R20965lwg?DXq2uKT#*@#GRzZJsG@=Y?qmh3^0U z7`r(d+1a$;)6~ZkYN*8Q*jCRMnyH)fGXNt2Wggvlp~G z>*-a}#gviih6OzgZF~O&f_5>w{!_q5phY}m=A zKEcT)`oNCmxsexn8x|v`vMt*E#;hQEwkE+&fQG1osOq}>Z<9z#@$$X5UhbDaw&WH{ zuP12WcO?sXHfStDgplrAoO9@=HWkG6?7b9Esdl_balPhUnn)Rr9EO9@x$-QSP#9xJ zh(6wzXtCYuGs4De(f#E3Bsu#$I|sTdO#F&89X=8_lBA?Yn(V8b{B-OZ=BRwA?tNjm zeLZ8P`>KY{HNgaC1Ny}os&!f@*{7F-RBhy>!CJ=3GOvkZ{gMC$GZBbbXB*}&6psU5 z;|@v-L?p6{UaUE(44hHgIUiOc@J5%ExQ24~Lm{?2j>b(;Pu3Es%rJ;(wd;d; ze;cJ#8A|qera{s@HNSWX8-3r}!+tD{%9{4N`&Bc&kD(Lw~5>%PcEI z)_4_vJ&Ng~=~+cl>VnpyOXkz82-l{9fXWfy!TA!Kg^<7qi;PU6gYexGc)4ZwXcX~| z-^B#0kl9@^1&;!=(TTU0soN$p8J+&3oPPg+ z1G((ZPSKf(EWhbO=X@-p1mopB<;LBen&x^jSGv_%$Cr)lS+|Rpb2+VpuQtg~H_ow6 zv<8M!_stItb$DzLykWSiZ-=sae~uaM@G!yH+8V3Wsw+PKceBHZ=%z5sTAQ9Q@;T+H u(BZ^m_V32GmVa29+rrtbP|$y0Pa*06 diff --git a/doc/salome/gui/GEOM/image17.jpg b/doc/salome/gui/GEOM/image17.jpg deleted file mode 100755 index 448583976055889ec8a428997d039a79f8d50ff2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7792 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 LMu#89GyDGw{XY~u diff --git a/doc/salome/gui/GEOM/image170.jpg b/doc/salome/gui/GEOM/image170.jpg deleted file mode 100755 index 4e24375fa53c5d212c301f8b265470c93e5358a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8878 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 diff --git a/doc/salome/gui/GEOM/image171.jpg b/doc/salome/gui/GEOM/image171.jpg deleted file mode 100755 index 9e055888a111664e5d7f32e863062d25da56bebb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8023 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 H+v)!RjKc%9 diff --git a/doc/salome/gui/GEOM/image173.jpg b/doc/salome/gui/GEOM/image173.jpg deleted file mode 100755 index c8f9126b5955a2dab490a4626db0635d36b3311e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9979 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 diff --git a/doc/salome/gui/GEOM/image18.jpg b/doc/salome/gui/GEOM/image18.jpg deleted file mode 100755 index 7b7d6f4dc22e23a4e2e7b9df831cfaac707b206c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3378 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 C!u*l| diff --git a/doc/salome/gui/GEOM/image180.jpg b/doc/salome/gui/GEOM/image180.jpg deleted file mode 100755 index 1c57ef013c07cff2a1794f19f08a1fed6fce3326..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10039 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 CUU1U@ diff --git a/doc/salome/gui/GEOM/image181.jpg b/doc/salome/gui/GEOM/image181.jpg deleted file mode 100755 index d0171dfc9fee2ffb9aa07eab03360ff480e03fbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8500 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 BrTPE> diff --git a/doc/salome/gui/GEOM/image182.jpg b/doc/salome/gui/GEOM/image182.jpg deleted file mode 100755 index 3dcf6407ea55785399f6540c84683fe92ef577fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16425 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 bt}*NI#RQ`fX6E~)<-@T`($`V}%=rHR2pH>9 diff --git a/doc/salome/gui/GEOM/image183.jpg b/doc/salome/gui/GEOM/image183.jpg deleted file mode 100755 index 4b5903a2d45bf1ffae1c19221ab183b92426ab66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14260 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 S9Vp~Cm%_KoV8l@1hW`(E60V8> diff --git a/doc/salome/gui/GEOM/image184.jpg b/doc/salome/gui/GEOM/image184.jpg deleted file mode 100755 index 5bf046de2599294e5a8e5295bc518519bb8bfb23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16038 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 diff --git a/doc/salome/gui/GEOM/image185.jpg b/doc/salome/gui/GEOM/image185.jpg deleted file mode 100755 index 7fb6ef62a95cca8a7dba1620c7be54a6730d7ef5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6145 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 diff --git a/doc/salome/gui/GEOM/image186.jpg b/doc/salome/gui/GEOM/image186.jpg deleted file mode 100755 index 1de5f1d37bb311ac3108c886b36a9949f47abf66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16278 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%0Dtj!}2CU($4`{mK(_WvT9r;|4}8Oz+l`M@%Xv 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 T4pi8Oa5P`VBs;Q(qR0O)X>{wC diff --git a/doc/salome/gui/GEOM/image188.jpg b/doc/salome/gui/GEOM/image188.jpg deleted file mode 100755 index 00f58a0457b8420f9c81d30aa778fa7f1dd60e10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18274 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�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 diff --git a/doc/salome/gui/GEOM/image19.jpg b/doc/salome/gui/GEOM/image19.jpg deleted file mode 100755 index 3510f71aa8a2333f8da747e0c05b62f3912b9ee9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7809 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 diff --git a/doc/salome/gui/GEOM/image191.jpg b/doc/salome/gui/GEOM/image191.jpg deleted file mode 100755 index 92144cc517158c8c062697da841e69212c01fd13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20633 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 diff --git a/doc/salome/gui/GEOM/image192.jpg b/doc/salome/gui/GEOM/image192.jpg deleted file mode 100755 index 57493b9c3c3afcf3d8e67e07daac6b8da7342a45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13112 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 diff --git a/doc/salome/gui/GEOM/image193.jpg b/doc/salome/gui/GEOM/image193.jpg deleted file mode 100755 index dc184f5fbd70e311606f153b6ee647e07711ca72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9769 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 T z`Ses1$#{%mw%5#&bzmvmLX|>A! zXD9fTA?#2gVV(BgUlsQs-Isr3e@w`w9}2wx2okaYT9h9?vYFn6T{I$q)^kRCSQaEI z=BQ&RxY|uX!8GIv2h05-uVnvKSp@K21JqkQ(Bn@@Hy6F(Hh+?N`X(x;F|NdmS{J2u zAsO#ss~|eJXt5kehp3S4i@?S2re-*rL$O&Gok{nbioB>jvECQ;>9xdo$bNIm1_arZ3mwxm_RX)*nTz#9K!3B%lQ7n z?2I|np*eT36b*;IS!PUF^%Bja7q9UP(C~S0xwh&OnaQ@=hOkW$aCp7$Ngdoz*(k7N z6y^&VgX(lar{13Xms~c8AR9f!o9DNV)-&$>Puu?^3*14|K3_uslxN&br{4>C`7JLS zA1Ker*Qzy+d27FV!MQR!%ABpI;aoJ_#nGpVz7hz)1$549m>Y()Su+BdL;!F4)lWyI z&10gFP%YbT18I6FfjAH3n#1xKssbL2g}jJg44Xh&{SayOw{KK(ILo+7A7o`kklx?p<|q#dbsj74BgXPI^j^aK ztE>BWTN^D55dBj~{g6~9L)BvL&rZM5-H9-RF57|1+xR=T; z>fXE)zuSCDIi0#w@I6HpHwIVQN>weP|b%P&MMkF0gI7wn#iA^<~ zHr!Two2`Fln3McO+87ng(!Q?Dno4M2|Jfh3LhGN10B*leA-X!<@qB+tZV|2xoueMf zNGnA)oqI8RS+q!>br7E9N1D(%-o^~?b(gj0v4(YmI;5LzSkKdSiK0IGYLhKTj$g5@ z#LnE>nmbN8D}eTxZ-q`KTUWo45TD9RZx@v=$HXnzyKh#rlbhC zi@QWODi*XJyB1M3m@G}svSsi;2IlJ)(SYlsWj?j`28NsqDH282^=+6s@wa$#$zGB%eK#}IHrgp!$ zIXiDAF|VP00BL|@BPp#U8MFx}x2xZsOE-|zdo&Pppz_B$WN&70Wps}_4A zfaeGRJ-@|^%KqpK0mR_%yqyo{e=aHKe1aC|^kCHm=4w7XR1=MDL3i1xzJvgJ+I+PG zqdKA5r^5VYjfS};x?H8zm$6aAs+2-X()q5hr7BalO>WT|_|%`hE1rN3Zr=?;nfN6dzt`!4$Rich0PX<6 zMpBBVjhhIdo6rqDn+2zXpn;-?4@BT(r%;|#P|{m<$)$b2jULqGzndn1uJip|1}Wr! zwT=F0tpuPU`Og%v^I`%Q9N~bMgX@q9X!6v*N#OJf1Ukh;0ACOQ8M3E}wSP2`=-s(= zF`A6Qi}S1T`@2o>Yw7=R?0OS;SF%H-UwI<{=wuywJ@hf8VTC)cvZ2^)r=!+6pinPO8@$-|ME!oVhMCb&Xxdxg6UkB z(r}QBrY(h%Etx8Zk15P6#M40fW8p4MXLPt>d8K_uIJmphAF>o?)*LqQ2`P+zB!%Bf z>37fj#{t|Qy6Mi}uZzSW{RRC$AD33ZmMk<#^(aP5!Lt7C(Ge(MN5j{sDKhog9(joM zkLS(&d|SUyQ-1>Z?RI}8C#29pCa0eo2Q$4USV+A=p+0Q#L>K&SYK{UtO@jdX^DQ=I zC4`^KvMjwsUDm5CQ%VtzaIC8uKLG!NEP5F^Xt!k70YYB_yu1b#9_xyN5xv)3=eM< z^X{kNz3_P7b<{sU^wB1iPqdL1ck|x;{e8ius*{}QlCt#tXU0bZNBmua#js-o#%G02 zhhUZ}2_Dj!wF%DGWZFIVL|wr zyV~~CXS3agn~SS*feB)E&Y5Gg5WOC5s|&@RN=NJ!3F*PXC#vn6=2{7{%H3)vLoRhR zI`p>4e-}WWXZ(26|6=?fzJPoc|K`}&`28sNVQVdES?F=Y;Y0!VSi0lnT8T^ zBEy{o^^2&D-csLfXn)U4g7={AosE*iHSXf#=}m#WlTs>`5Jn6}{WE3RPpc$}Xxz=q zhtr(mcEU5IO=cH0P#su{K7^S)b-ThmMym-e?I#@|Bl(Bp{~rSV#|Hj)uFVX95##?4 D3*vZp diff --git a/doc/salome/gui/GEOM/image194.jpg b/doc/salome/gui/GEOM/image194.jpg deleted file mode 100755 index 3d374bf0e2714c6c106057400849945ed70d9298..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12744 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 diff --git a/doc/salome/gui/GEOM/image196.jpg b/doc/salome/gui/GEOM/image196.jpg deleted file mode 100755 index 1f6dba3e623a6f74123fd5ec92c13d7376d4f9b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12763 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 VZC4y>mG`C8uN~2tae$M1{ukk4`gQ;S diff --git a/doc/salome/gui/GEOM/image197.jpg b/doc/salome/gui/GEOM/image197.jpg deleted file mode 100755 index 11eb06e4ab3d4dea89f062ff169cc52578f80a8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9273 zcmbVx2Q-{(+wO=iL;*2&qy*#=_e{z%!$g6EMQKMx;205cB=0pQ`_;Nsxm;o{=r~3{v3VbG z2MZhf4h}Z%?OWXbO~CCQ0EY~h{4xJ?ya$?Q_)M-80`KCo2$M)?3~=Z{DN+0J(I=i}idi(mv#wRAHre|j7 zR#w-3t#52@ZSNc%pPZhZBQGwm$Zk!(gM)*Oga0p+vF>=^Uf5(fxR3eq$e(NCo4Gz< z5_m^IAs3fb-bTnQsC7tb?lww9#UixAdh{==|1kRh&gS6%FQfmq`EQdktpG9tz$l;> z8|&73GAwK|EX*8$7#r*M0hXO}h+=O;|Bp?&vzQWhoJSR1}0h)YEoALN?&4|WnAGd6LMVq!a7G0Ku!?G4VsDEGZ zN5qj^)Q0d|TfL3*?-dZl2W4>F9zsRaND>$n&EbjehAgDeO zzWO^j!lxwU+zyM1HZbw8vBUaf(o5#pCuxR5sL`qKem9 zDkC7w<2~*7*EKaw_8pO1OOcjKB@3HeJ0nm2a358Wq%4*X`>P{zWk2{%{_qt2;Aqjl zc?6zugUiDj8gab3qA6GZa*$2I`?mJ)n}uAwyM<{bKEZP&@_mPcavkb5uD@!H2l(k( zyv)+C?g8lGv@^6~pXVPiIMVLgOHaiXCLGBOdv#nF1{^FJj5Jin3~xT|gas&<&UDFf z^3MX*st>v+3H}*MZUbX^8r#ww2=_1GzL=%caP!)D?bS-a-A}FavY7gagrC} z#m05Guc(`xL#ny2^QAYz*qe@4D9nz-V&BwSP`KmGX?p23HwN&NA%m2o%ls_Fk>R%j z27uFWFIFnkXa5S+zbclIGZv+FHi-emoryuIbLj1r2gVi9R=p_cok9D)%=;F(zxTPf zEha-1f+A`vT1qg0!A}>Sfpe%`+5J6l)JAPgW=^#}tHAe55Ykx?=`+o&&e zWfP!kj6YKnHl=SoTPN!bC76LpN;h@<#J%_1t*a#p3I;SP zZt;yNl$!r*gTYs~OPbJK`bbG#CzM?}M5pQ(Ib$BG$VM>pont?v_7tCEepQF8Gga!Ne5%!8#1o0S5fODb?fm$R2u~WmTA*98yM_}@U6Sb2&4thWB2v@n zaceInNlbT1Ml?w;2B43>rmEq{bmBv6z|8v~^vYc?hkG=#1ZQtB0MwC8r3b&;`SPhr zIAhR_;N{ftYckEt+qkNXO#(BrvT}ny)jD;0Qciy8p3D-KaH~*~VZN)<2;@}U+AMWs zt#m9EkQ9bSC)&7l%_XX_U&vm_C~el2DoHVULhMPq0$We6d%3nrQ=b~mR`yzX-JdV) zQ0ZWn3G!s0fhLkCRvM+Yr@=OSc`$&fwe^M<(O)a0y6A`ntBGL&>Sni|9%6my*X#BT zwjTT)1wNbgKhP;5miu#-;O5@Z{(GX_H4G@2%lqXY5hw^I>!it1TY)smOkW13Ac3-p zxk;SalPK9uw305wuKXLoyqU-2`=@AbIY-uJCB}kscY(LRiyd% zcFc(F;#u1JT2%&(*vfO9mioBWXHaRf>;ygwmA*GfMYpRTu6cj~+$&Jaog>KBz~egFIRpM$ zXNSvz^Kc2ibr~=llSCR@uN%R$sHIk`LU`o8_^l=~R+gR+2ym{0u6us?UHgHWg8I44 z&mz7boJ;vTL6it{zpT$XSye4|oF&BO1q3kAwYNc!>SSv#i58SU#@|fnfR==v*t9!G zE>af{&+#j+2OpAIG$3jx$|rfA?y-LvUVD6BY37_KkUIyBYpTc`I#%D&f3O%hGI;K? zpnOme{vmO{;PS1l?e^T<(7Og=NruUz&&8C+QVX1lgI5bOoJmYX9(f)fRQ2(Wtxl5D z>1!6{{7xeM0-Sp9#cxbIRq2R9P}<5uH5HyA;AEj~PZUa2xTiH( z^#Pin9p&?oDJLq)Sc~&WA5Hk#Ono@mI_E$inK)06jG)lRUu?}yCNKbZ7Crgc@A=)> zXx|6PH?L)XGJP*7a{GPhA;EQBqK!6@2?(T@k;`lJVzp|pCXdluyhn$|2@LV`lv%Wo zrwq-D4y#D5|2;o`RX!cksne=H$8IyhJoA8l;nx$6F@POu?hlQxy1QJ_gaT#b>H{bEl7x-AevU9)LS@74oaIq zDC||SG!kEz(xk%KE7=QH&g+Vmzv_u3;I5_!hX`4S5@&r(n1*I7sR#qC}T|{n|V#P|0M1ns6u z)3@#zs5W$FJMZKO-87Ge219+7agOIz;^mnYn1JxYHoUyt$rR1_NUg{U#nKcA$zY#v zG*LLVst}J?2p3XaS|{B_9C)oq$uhQn;H6POqpYJhuGb`TDT<_|-RCB}7JM6@+2YXw z^V`EOm^j&v7*8Bnov*na2YP4xo)j`9;K1Yk-IlDEFl82)I!pXiB_C^5LWfI;x0vuT zN;yosqr0RkvZfCMXp@15mfxdXSG-aNZ?ycR_l#=z1lsVVOu1q)aC)uxT_JtAiJFLR z6uxz=lKy$lvAHE>)kf&@P*=-Dmiv|6jXvrtN6;TWGfYELxwOliwloJ8C@?0eqlmKX z=7p0Ra2j^e;OP{-|Df4BU6GgGni)M2m#^9K*TX`Rl`at%_){)j3cwdXk@m-dhp&hG zz6ZAmrcT^Yv3^|ZpK`SlOq%81YfWHf`vF~q0%X<<*mbP>AP ze0rDgmM!$nL1sVjlSY6(bYyjqYQ~*1*XB;1(mG0J8?4GT`(u-lV;P^&oXRYPU5%;d z@F@Fh&L4A4(!{8rh2wisuG++Fv<}HsgJV(H3%!uKwd`rtmiFbsDM)Jw<)wn!$V9fS z=wdNh*6{8oQi&nEsWG2>bvtj7LC=O2$f}0{B%&2rp^eZNtpDOEIMrnV`Kw~yj>IlT z*Ew}4JT+A>5D(b~Om0#AJS{ANXVT&rfdrMI@Sa3`FMDk~<`DWV=-)I0S4$_9{&{aH z5K6Zz1{vF#%4oW`*Ye=Z_!Z}=I{0;gQLYK0xfZD%%B>P;^y&th9uHDHb^VyLT6-=k zh}f$s#L=7BG-sttk4C4T$EXx??9VkLSx1;(6NNtBst#z(OinoxA6Dl4?s>Qis{g&w zh^kKrdlhjV-lxn~ZPTH`!`-bigsaI?_Uet>GhzbHeqTOm1yvBIz`FSeQ8)algW<#B zG2dW`_Xo13m31{Oa_J)LyEpoouPPyV?z>KdL+9fmsLvqs716Wxm7fx;92=O)^1 zD$-V#R@2)y8_)k>K~?w%Pd7iG#UnW`j(d(L=*N{wnL||6qz( zIk~23Z(mrhsH>n(!reAsBc>iT%{u?O#m<>ohv()+V^@vKO^mlFNK#s4?@oa@<4`&0$Kh{+=aSn%Txq?%o-UT3tE)jCSW`2F=Wb zC~?TVCz8QbkgLP|md()n?V(S^PyG_4-o*AdCnZxfN#_Y4+YC*v*kS+!_0hg?v>vTc z8q75a7or_ufdTMr-~2{JZ6DU4P=!d|6P`KS?*QG!2pFMh54{-TOZTRJlpZWG*(w_Y z2o9jS`=rB6IK=6?35+6*tFkvQ$9flWXrr}RmSeu95nL|xWZ9VD$4SIey3^pVJvUK7 zngjZip6B2K7c}9ItbMD-7Tyc?4U~MeF1(0uj_wKrXk|j=%e?u6s&IqR+c{OYxZiVb z`8R{nnHY+bdAY7cjr-nmrdEl;r+-p#-tCC)Dr&v_?FrDUxet&Z--@)oZ0E*=t+kjF zR>I_W!O7MsYR15-DPEf!hmi@lg|Q?Nh69)pV%NiqR;GqEH{z&;A@L-J=jnN>mY$6( zqzGcTU@n=U<8Q%KBn2BY1RhXw?BaXqH6IFT-#Lffk;WPlRYrVRU=BA@*55opF?%|v ze-(ZR6V-~Uw!$B^jQ#zHqHfkdN2Zf`H^O-Esc>+C3ZTH!6^Uav#iw(>Y}pPiVhyTSf_!Z^Wy{E$k(;W)M`0P&1qzvm5@@y z`%Mj7&1)NcC}BP4G%`tFJM{6Ktw0Tkd5fzD-Z@j~F9PO0k@htfeIM5K*0<%D5d$FD zeUGjhS=Z-b?k<2jx6zY^m2n%vmPHiU!XyHw@OQYXlPN%8pf>6rZ6kkJAWkYu(QtOi z*~L1QNefpX-Ge1y6axq_Z(5MOZw7~}iM2EZf|O0==T6TEqu>7DFKDe+PM!NEX_5*i%$W5(XLRX{md@;#VND2Z&1EFBgnej2<-QTqm+tx#U=m{@kDh7x zaGC}_T=xmTJ57yYvFrOJ?4#0fO^2Z&W}4E1iO~Ver9W2nqj?R5Z{bpWVDA_2&DT>8&~^PbKOE)`O86rET;reM(X_!hhSb z6b6M)qk7@XGX6<--||q0U=s-p_7LSvWVGj1MnoA`vz}yEuFfN27{G`%koWrQZQr{v zPfS~AwjvFKVgSE%;R1haM^CVH62-N2uHGB#r{ANaMCr3#pIr~{iO4?qfF_`C|8hun!_wb{3ZSTnv!ylMx5R{Alz>RYZ?s3xoAeDaj7!6hdFf6IO#^X}@y4i@yO z@26FN!HXPLr0m4K25~fTU~7>@`$f{;99Z@OJNbc`7E&j(f4LAR^~+#p=fiE&XoiQu z6@}UdVE8RC9WLo2hZO0ckypGY%)v{leZh6+60pf6>%%%r=_Fd2Yr`72Dr)(sb5el4 zKyr2Gz{0IMqlN*%P*5dx3(N9H01L{)Dz@44xaepWjo`Z3ula8(-9B{R)PXJvkNGy( z!azPFeUJY|CHr@b}{yWM;CoLle_AGz1PHqQY zuy4NY)&z2$ADXUh)d#ksBD9SgiE{od!<^uE}Y9pvN|Sf2wI zEkl5DlP0?)wT*z(#g0#f-WEyHjFcGmbc)2f1h%+7)(HGb;DZ4)M+bP`qsdSHZB=-z zd+}u%$u~Y2?XToPit>dNpciGYId4@v5Z?_3aIA~A5xp7!Up`zKqT?l#D^r#p3JSTy z462H&sNIz1f{D>c!-o+aV+G!-Ag5H>uBw`>?UjqrFRGmIMDQe(HkArFuwK&D*zV`Q zPyVj55WUN*E1R{a=I_LgE5S1a&GeNijbWnHa`hIiym=lX<1p+W-)emF_>^I(pk}Ie zQYcyI9EAatBF;qJw!#q`q9OdPM0`a#SW0Ez5|x#Av?5gHQz!SR^ygy&>}yC&J@O0i ztz&#o&Gha)0KHmIQQ_C4e)MyC_k!5i)yHSj#QRK^rDuhKl#El|s;1yMSMAUL)ZO0- z1quCQOa0$$3R*aFY%J;TnBTf%0ykiqjrKqXbh^;IP}$u0gaO=n2MYv{((g{RndO-lLwdYi&F#BCi0dTv zb~H6!8?TJ|*M4#gmAdJ|03J+a{F>hV>>w>A%&L+)$_QI6*X7s!VsOjYNgrF@IU1;AX@$;uiL2F6nMhM^rFPZXQ^KPG?1X_e#^3_x$9Ol?dPU zvX}LI;)R;!j#MrXtB*rfS@k3+z8ct4LI#Yy&PiSEezR@9GQf&}E>ByuU`N4&VX3}e zzi+%z!!R`!@lEBDl<4^Ar0Z@PN*AKCzF(d)btAs09^p215|g(5@gFz5yj>j+6m-JC zgDu4KNsS`KzL2=ZM^-|sd&FyJK2q?Y);FS*NPocyyW(#(IiP=G{jMVs8kHz})?$-p zbu^)3^Toyee}mq?wGkq~%$UoZRey|%ar-Y{p4o@8DcDDd_*F|Z0A)4z(JPW-wq=bf{6tpUSA&wbfW)zTFV!2dw@LqIIaw?@Mj8;cFG z(AQ!dMsRRS7&w0X&D&N*u>4clvq$c)ifm;<2k$af>JiIa8l^ts3ID!kp#l zISMYWny9~3fGf_Hj5wS9)F&a&{F26rNB;oAN5pZC|2x3f_ulDPa~cy6=Dmo<1$o8I zE=CFhlPqA+{1RKsd8fVc(RFU;w@&JWjB^^k0-xwk~^=%ba!T@E`1k#*qo`XsY8G>*yys#mU%zEO9d3)Th@fBIYu1z+svynbpT{x+w7aNEzA z_2pYZq81ZbrvECN9Z7oP0|D3jUXzTLB` zUr?3FO0!pgKy9q7?0CvfBsN;#NM%i$kgF2=jQeu6ad4`jqHO}IcRd1TD;S9>SVt^4 zZU===_=0}vddup)`v%>2I};W(P~Gu*t{6CGA$Cqoc!Pz|#(v28L)9-Qo{W{&&DkDU zTuckH64x_-enx|sjqO&{c=W#|%+u}Z%vt0Q6H1=)Y6E;d(7C8OKfE3}-0{@2*gO6#AEw*gLr?#*zw9cQ1S=J!eY)2Hr0ic~09qZ{iUglN9>UV#*&B4$p%}<*Y zRZ}--$#^o%=T;Ojv+w){zr-JOe}mtCXJQ#~$>`ZJ>t9&#@mulI(igP#dV(YcsP(nd zTo+ZYxMdUF6A4#q7oT)+@77Xk2T|m3vAN( z*>W?UIZyhJ{HP7&*X6h-Z1I(iKvxDbmySD84U6SD&{%5p7G(2U%WQr--yCb^)I3*K zh0hO+pqfv1wKvAI;5>TAX|-VH+I7U>g}UUFJ5521<0oI(ESU$z7=jz6oXMt( z(;GCwRIsZJmR60Fk zYu0pas@be7-_MbQi@ul~LVNny@-FZ*ila->&|%nnAF^L0D9ngeJ21~@wZBxPvx(J1 zhM)6ev(%s8lTb1XRU|$qs^>>B9J4*eBufMxjZM%rt0-D6_!85epp)mqr7rf&ZjDUD zVqt+L1!m3VNQd>9-l+L@mf6M*6e0q-2J9?2k4ut%*PtHs4!RTha2lU1XCJsDK_s58 zEQ3XP!*btRHD^fQ@W~S07=95O3l5=#$#TH;Jo9(d7Qb`;_@7Qd|I^*DMtcu?zrWZA zhP#zUhidN-Z0m!vUN?$!av^pta!A7qL%$Vic?C{w+{CmH&pbTf-n<==AJpS8fMs1E z<9Vq2f;Zy*;4z05a;50E^APWl|0wd($xof^Kz%XUe(Q#D3$1u6T49Kj=5joLphkzM zc*VDNxC?#^A`x?{M3ELmD=>TYbc2#EZVnXOuSaK`?k8{1_Yp*%Qc_vN7n?YIe-*!gM2sHJ z*!dXRC9+z^4)goe*VdQjDIwN>MVyVf{hv11}#w$L^OABOnFbZu33E2a;2niUfmSb%pM2xc$<=qxJ!B8n0fgh=mn8FNND zLcxjCKV$QBgLNNVu7MPo|RJ`e!-YCNZ$A)r_@c#n9|0nJK UfQUpzb_SpNM(Y|QNc0AZ=J`2YX_ diff --git a/doc/salome/gui/GEOM/image199.jpg b/doc/salome/gui/GEOM/image199.jpg deleted file mode 100755 index 277d5ed59f944683d5ca6d48fdda2b534ef9dd8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13440 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 diff --git a/doc/salome/gui/GEOM/image2.gif b/doc/salome/gui/GEOM/image2.gif deleted file mode 100755 index bc05cff9482d4e44bf9fcf16040cd7ec98fa4d37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1447 zcmeIx?@tp47zgkxNVyGB1``S^P-Dcx7^`tfJKZv-$tVS);tL3^SOcqFH45TjjOc(e zVAzdrb}c_{wum>&kBdS*1m&bZ;DD0dwh$@=JUg3t>FB(o#@i-Kcl-@|>*vLj=XvoY zPrk{MllzfGeB20p4ln=<0RedXZfrkXC##|go5&I!Rc0XTcGuOBu#N>m1{Pak*nl7g z6g6NN#DZZ6K_C=`*b&Def`B|8h$LYaj>7~2vpq$@Gz~Kh910;U6h#OEVHhM7LRmPD zdORpap$vnDLRd)&hTs^BATWl(Spi$e>>WhiED^tf7LcE}*<(3Po+ygizgnW5h4cEN!*e(vzq*-OGB z{fgOPc+Mm$b3?hdAAjnWRQ<6sYrFQdIa~W`vh1ey*IwzRjHB+Gee>52^~!#bq5TU3 z#Wu}-H#%_dy3*B_oHsJKWK+-gADtUPmTy(~@b&uN8o6VFebU7{riKR-@nKQTfWy_| zYW<+eeo{Z#I;~GV(~&>+gnPFmG2dcO+~kW(S6X-lx6k=!tViPa{<*^d`viwc3#&2CZ%&2-R`$Ws<=D*fx!XG+xuv0y?;LfNJji;*= zJ1x!fPte#FXLq%G%28@OY%D3C_@;WL?X&ZT8kF&ppy^o0_U-`J>VMvOAW12BJepkm zOMUp3d`nhDoK)|)m9j009)IRJNn?LK8ldm4KVPLMfXK|CeN)1zpaa}B7<6tH2ZFAc boXoY!*NaZAP4P|)uHpQeK&6z!0rvd|h#$*h diff --git a/doc/salome/gui/GEOM/image20.gif b/doc/salome/gui/GEOM/image20.gif deleted file mode 100755 index ef92fafeaab97ffc8c6ba773105e95fd68c7061b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1628 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 D9XoIe diff --git a/doc/salome/gui/GEOM/image201.jpg b/doc/salome/gui/GEOM/image201.jpg deleted file mode 100755 index 0a6a1b4d7241663d90e9f1cf08ab9b40fd528235..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5193 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 diff --git a/doc/salome/gui/GEOM/image202.jpg b/doc/salome/gui/GEOM/image202.jpg deleted file mode 100755 index 0674262238ca292df486ad3297e815d880b3e0b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6377 zcmbVQ2T)U6yFHPPg(6)bRH=eA0Rs#MCn>b0F18DE4X{rIB(-#N81OP+= z0M=GjzRd-FVCVGM?V+2a^8-&V&Bu0PTqY7?S0w=A4DbRVCnY5#B_$^#BcmWEr=X&x zrlO>zx_IHjSz2ZW78WK3CMH&PJ}~Pgo=Z$jTq0aNmj#4`gjhJQToo0($|oo!03xTL zprWLrr>3SCU}Itv_&*O~J183fKxCj_1NbvQXGloN$SEkPsLz4`lHYTupTB4SZITu^ z10o?gLrOw+`Y%pz6LdNUkkXOSb4w_bUo^N+!Q;Uo`8+m@lJ{153!~xiHlLL3lVB=p zCT12^HvY>3f%`>L z^!&o&((=mck2TcJ?%w{v;SmOVOm_dB`!wBah)Ao@@cG$9IpLs?N2m){a z*8`}#?z=vm?#yd`U)$xjHKV&4t(z#(ZunQrB0v#la&TCh8b)g{tq*^G@Ja4*k#Dr> z5#3o=6Cf}DQThcw^NaB_iCtg|^h^JcHyfp~9ZKNNE>{Q=8^dNlfE2bgFGn8u3I;r- zKkwZp*)rr3xht2Suz0^gc6ZG4M{RnL*GaG>xrt;OpS{E_m5`hDHUM3orospqpg>!{MSi=?p_ayaeT+DM|IofZ%vu zyMjWtSO!ZgRz%g6mOCx0y)MowhaN5;8mYaXxyW0mxAa7hySdNl(~qv8YHg1_v%9w^ z6}p~K4*Ja}tFC5`%e1-cMD)gq>0P;( zNz)-V9$iXo$jSGOPGk)^&y1kY*e~$K++I37dFOFZQsbB`|9Be9?m541?^A�?G4v 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 CnIz%> diff --git a/doc/salome/gui/GEOM/image203.jpg b/doc/salome/gui/GEOM/image203.jpg deleted file mode 100755 index 8ecfef5372216468606fd2242668f02c33ab4c9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14865 zcmd^l2UwF`w(d@W(2?Fd2uep(q?n-61OzJ}(xe5Ijz~`cK}CvyfFdP|fDHj@3L+rA zC`j*J0qMmMT5>=9XXf{xduHyOnK}2I``q}*ll|>4d#~Nrdf#_#N-t#;>^Z5erww4x zKLNlA0EG;M474;)2%odJ#k#m&b9HpG_Y~H1v6U0PpeU!H2q**KCZI+lsgOu&Dk>@z zH8qNM4;?KH4J{iJ6a5}8c5ZG?c1}(nesLilK2bhSPGMqlvR+CQV^Hg zCkdlQp=fDnS?TClC3!h{CI8bON)7A@05B@p&ky+12L?wVsi;vjv~=_^fcUKr`ukh$ zFO_=$9EL!^kq9bi6i_pPP#r+BP_c?AYErYEwn2%yvnvJ1KBf^nmS4qj=F5`!fy*8t zv~-+Y+&sJzdnKjz?N>f{=&;HW)#E3$v~_g#PM$q?{(_0A*+pABdk06X(-lvz>)tnf zeEmXihK1j{eJ3I={(eGY(u0S|PcoinW@SHn{^CtRVNr3(+jpfOt7~fO>KhuH+B-VC zx_f&2`p3p6Ccl20nx6T-yt2CXgSbxG*kplBh9i*(Bx=`W82kqGAHjm85>cdP)jW-| zac2`%3Z`K{7W+8AidO8vnI(?P9$)A<#g)e-mUpfGY4ks4bI3ns^j~cLi^-Hqz(ND# z01XHjWIYQE!2+Z70|o>PDj-+@8uS;nR}>YQKZp~PX}7q4sW}f8ez|6p0=!FYn;v@y zyx!OIJSt(ohyT;0gK_IFBbK#+o_gfQSb|TaNButSnzF9&w#sN~)$V(zla9C4ovXDO zkxq#}HNqCiX7t!rZ)xX4HowpeoAf&?h5gL;xCT-LbtwRA=NKAsrqGYiro8;R(8$S! zo}Q~^fy4e*$9U8adNP=>sxQg+t#GsY-5kbfki@c)YuO9l2kyJ)M?QMBGjh0}0+L4B zk|(OAU7uyXD?iPiBudkGyqx@PK@qRL-1B;$oVnHgcDI_3FK(51d%Woyn#ajyIQFj)@bOf%K-P`yTqlZFVX&vH->WC0zce5NOQCM01J=9d9ym6 zh{%$m32tHXc)fQ?05`XFqXh^Fvg2)~0Dfz}^n^WAvo+b}Uq@q43YkiY{_L-n^<-tnOVhq_x7#yvSF`pR_l~+@Y|gzif1@Mw^=`J|xm1Vv0h2y-V=~v# zJzl93Av1I`-@po7>BjzNl>*H{3AApfZ?K>_J;TfL_n1*?9{nQU(-4S$T*B{Jt;u9%wqKxFsO$qV%7pa8VQdR|7H zM(AvB?#70Ec^H4}oRDQLuC+06PHHm7`v1^;pQBNT+M`(h3QybojpDU4exnoFnFbl` z#fKk9)SU88&@;EpeNyqzd%UT-;UOW~^}b$y%R3bIlzZXzLEQcXjxK?-HRry%a7c6y zugS+7Zkz8{xjQ4G9?p-ynbR^j@uH*Xk>QmN zLuoJi5k{ZrHJd`;^O51&o`=493p2!-_vf6CP`NVM`=adaV&Fi}x0|=BKggGyh?c(k zw*A0;deNx&Q_+FGn_uQ_dQUegF6n7Mxv&~kUUr89Xh!Y^#1!nr%{C2`I6in=pKawA z)GZLU6BF}wk{B_ZyM2ohRfnYCuL$JuP0Ar@|N?8HC7wRWvntgMK{e@v4~ zh<%#()*;e{HrC^PeErd<>2>MFA=CCUF+6)8C3k$CQk}D?k`#a{Y zt-PvTJRi8YeUldzsqOCSb0CHM!#~alcgAQOOU#>-pG&DG2g#R1=jaiy`jPR`Sjj$@ zj~|a~t9NbCa3ei?-F1p?UB=}v6ZQLL4|UDB-pd_Zy23XG=l6L^3YGupcp{@ew#afa8lAsaX4;lvU4j@IIpOJl z=KSTWG8r7=J!LOSY9%*PN5asP3>80yU3a*P9hS~L&w-QqRhP0BXWD7oo{W$`eru423 zi_o!JnoE9On$}O$H-DZH#!|0atZVM}L;L`Pe;c&{n#tx&%VuOlP^SY+4UOUBbgYYq zDGK4OGsHb=j5>QX)yY#@Uq&LeG*;&BCN&%{My}6;{H!Mh;J#A8_%!&J%XRtn+x~}l zpmRwkBVy78&$D;KSI4QF%~zphb05Pok5Zj#Tz&!r?PMtsGXt!J=} zN{BX{bRRnF*>@_|Y>lbPg~*yqQ(G$(Fg-<}S7i#jDwpK^eB@v&F@B%#@z10C8k^=m z4`mQ02q?)MaJI*CK~~N?FTVLLcki%X5-B{$n06-3&AkW34*Q(WdG&%@VUj9;z9z>T z-HsuCR(+sH2PVYl$KLXL;z7f<`M7V+<+75crdIZQPa|G@=6UnXr=i|N!(W6z>#)of zVfZYL5w1`tFrw7tMgd2*-lDjT6?^2+dzjw;P?_n+v*PK16d+JHSzPvH4ZpWSh_ua@>_(0)622=usqqMA1aI9;4y+d65x(T2bkc~QV7%|+bkF0E19 zaGh&dJCIFkgHym2r;)Wig%nVElLB}Fx=4BPFRu#qm*RGivgjodbRC{~-U3Yy;Y=s( zNuR)=h_BNrK$G5Ro5pAv+N35%kc$t?CL<+DZLpn}*%Z)rtb+pJY};5s?t;Eei#Sn0 zFfCabWSivIbv(Z~(J{XdDy9Fi3q!SkM;Ev&GZgTLLH#-be;5^?+{^5ZGq{?M9ScGm zK1N14Krai|pj1yTzf1vNu3~sTFr7Dqa~M9lV1`+#ro;95WD1Z*AKc)b6 z6Y@^X5&_X9v|5W>?EQc3F_rjK+J`mRt_0e_96k}?mZRv73?SccBEH7z1IEQa&@+OGitTd)+{H)u03Ja4Yxo0%L zbGVwq>9B7FAP$X#fy&Q5>&jq?6qu?0xMkh^Je|1jv1bfvjtJLv{6r>D4C0->O8>EL z>`O3E+c$7;0(~QXH6J+{t%z5|2r!h|M^&TJnuZMHfmhx9aVnu6@&IEGWj65*kM}#R66?Q z6bngT0?0-cwA!=0FO8d*3^s^ub5fb!0bfg=9#J(*+|Ebx)%;vc*;ppK5A`zI( z%vCp%Hxh3vai{9Y>6nwC|BLeCp8laz*PYGe9%DJgR_-(AhEe62ygtr9h0>5h=+7M% zTH`3CfC|WWFSCQd@CkBAiPido5Lpz@oHvMTyD&@MsiuG$V;GSyW|M9RH}V!oiU3Ee z-61z+p1ZZqOaUwyRIdwqTKYN^zs8_oEd{n1>vyPJDi#OP+gd=#<}I{DIXydDw3pnMp|jc~J)!{ZB8faUQ(OZ(1(c!5k#P^0xX_o|&dl1xH{|ObV#>K4Tt9=M&osAE z)O%ed;wFCAJxb)fmP%`rj>={{hO@W${5iW6GCq9kD*wX%iRRd{NF$1vye!S15*txwecfqINNkvF2eoLR0tW!--- zwqm$p_=xzF?UEvfPnGy$)3B&8_O4sUkd6!Q_p|&?@6#W|&P0GI8M2g_KJQM(sZu@t z{VaPJ2>0Az;*M&jq0!oE$)Lc0ne}7COFq38s;ATz4Z3~8#|}{s(n{hnqjr(Jpe&2@ zx&CZLNE4rbg6|E+`Mf82t4A+|AEAJA+mX>Js~EmDU<|`h0jcj&@bFX$5Y8a4K~eJ1 zN$|*!0`A$z?D%U@z>{vg6v>3FDNO-ZY`E#}r^WEA%p36Zb?B^qi8~Ab6cV3(k%9H- zCoWeaCtlVyu+0B-`)Lf*)luC7Im<@&x>G8#j_6Kfl}Az#0v{;3`+qKH~CSStttIQ)i+8=#)j zca|BDL}uG!A;$Te5%37wgnLC<3z94LOyk`D_IV5s&|Dp z#wmcrc9;UVezv>4jN7J#Hux?&7Of}yRFILMD4-Ss9O!VCim&KN#u*(g1Ve|(nu+Ki^IYV+7eU6D)drRPP5`v=GA_pT(yo2m zml1ABcjxxDc-#Yyk&}VPt5*gd%_hYWtD9xjA9d;1uNUK?Gf)MwZnkq~S;-ydh6g@b z+T=&YiCaI?M2JP=br-Pk7BXwsYY~>_ocE6cp1f*rPLNKm2KdUUBVy{-lg4n(G1=>) z=i+NR;v#uY7DUzD5JQuuH+=X#u!yYW7DMRTBRvce=M48s=;4ut1p_wWN8j1CEFtQNvN|O>1LhmPn%LF(psD z0t#()5-?!aJgY`irm{3}yx@G4<{67Wi?nr+U_vtl09|AQ6 z{8RSPDUYR-{xU3T(*sA7TNcGqnhuD$sH;7jntlRdZrmgfw972N;HHZRbVnfp?cPZU zqSuUU9(*o~Pp&3ovUmC*^l5j$((0(bAxus*vRVAX{#kCas3?*SG%lqQ^8?2X{i==I ze_&+_Cu8RNQ>%0PiWsZaGK@2@3-AK>YU?(tR*tKOljV~4cDxcKFHgdR&&wu&f;0_w ze*ahuk4gHT(Sqo4@AlV*?|rdfXN^7?_y@;%}GJL%) zmHYFU!#@5{XK6JEZO5yg{4>{Rcn=wW<2HH}w`p)6=4oD<+-&&%UGNQkUe-{asvq?M z*SDqM8iM^^iLF)_rl}A&ebuxjaBoj(A1eX8~3iR${iA@jEfw%yY z^#};#p6#K491QEdbE8XIKmxD>V|erv2rG}Q(4iNht&m|ype_8B-N0kQaFeVRKb8-Z zqps*%?}bS9y?v0PjoaaoP>_M({0cLK!FGKW6@lJa`Bj-&Z;T&^QCW-t5#PIqe;{ud z>$pW!g)}|Ji+x}O26_v6+gRA2NfknLm8>}|3~f*fm{BsOZg!jE_r%b(H&ip!L;$R~ zmv|r};L%XRsRAW8YBv-{g@F7mvcYstW7w4!H>iZxvmuxN#u(ZE4~JX$=roNi4VRFO zm9)m;jpMGf5um%ItsBOkita!|_^cWtW+1nue#G1><<8zqME1zj|K&AnbgjcnXk$ zXC~&@JS)r09P})-mD#f<_+etun5y*82MTI}N;NR>DTsS=?lZdvA;n`ML% zjrcP@M=HQBv7-0TY-153?={8`Cp(ZwR>W3Y^6KeT&I!Qp;cf-5tP$uoUG9uG?lpV; zw1+r*;(IC%r8(>0W@`n;Ap#fS*97E{`-;=uMz%^{m*O`4!koefMMu0hRO?0 z#2dsGK7B#0GI%UeI0&RywozRT^fV|NBKl9;_eRdK$DKb1*Aob**_?`OgCDBM6mxby z1_B;S@s&OXAsRmRN8d+)ius>*L+0~vrLQn8qqZSdp%;fg#J4Dv^ZTy-IY2tq2=F)? z*C0g!QC)Z{UB;D<8nYp*R$JN(}Im|uO4%3tR}^(KRGA;!L{=Yv=FiI1D#dt%S(e1S$MQ9%(O zD$F#R@(nLixD@@!p6V5i`1Qi_t!vuHxNlX#`~usuu>yE@SjoS6kY|1mkNH`T14WG8 z%s-z__qEG{Aurxn&|)o$7K_^B!s-}?C~3zFMV;N+#C??o++FC3Z1R~l*uU`L#AaYk za!>|C+%bpuBQY`x=UYyO=Ax_9>+pMV^P+R-Umcp95H*+>#8FZy7c6yy2KtJ zTNkJCdM{Ln(z`}=+iUB#sOdzf<-s#GQYFW`9+sxzA|5brNsR1J*+F0#TLFm-Z!93` z;DXUM^<79g`2W3%<<;vx2!35@Y!D-BKyyk53XuA)NMjL+%TcyxhIG#Z#}xuYD_sof zJ{0-;HiM?xx&`Ku$>1Ip;tYmw^IBGn1sqbH(m$8Kbwc0A`G%!lg==Eib`dwX_~fWysuHYdl&|?^Io-v`=ooYRP68%(d)rk7$kaLzxSWR5Y^&MIwh;44)fP_kArGH$EiXhWG%W~P@jwWQ)0Lrr;Qc=N zi0xxh%4z4Uhb3EjC5684z_y>kT}j6$DBy8=jTMPUhywTsi2tqa=wR7uv+r(~E;V~y zTYT*tXLehz;laRLypk`3o4@>h+Ew%v*PzPJFVH?3JyPyxZI_EzMj|B&Be(-9PX;+u zQGLeU4sG0o5~3;}cxPPR1eTh;Hf^zsvFR1%22v<*ZR#VfXE6eo+-~3Q*EJ4?FXK^T z81|wl*&i1=Y%iSCJxJps;o$K$%CijVndSrShM6?JFUr2xqS7){bsS~hh#p9k3<^3n zC7b8CFonb$iQ-k!^ZMuwl2td9Hu;CYG*AE}DfcJhR+lPre*faTUSmbyIR25H_=A+2oHs))^4h6mB=*iHt{8LjOUe^t1QVlMcH|7r8=b4t%WCY zX7}>@3HHwrXw345;A|h)6Z!AD2qEJ=r$Tt11Xg8S$MERZBUvIq83oYOS6i*|LHy!F z49OTJ{h}oF2hW1s*_!32>mDx$9~vdcNnN)t<96mdHtHUI$`ivO*zwWwd|ynhBK@r+ z#Q_t|``xibx-@Q=uxT;aRckoOxYY$$I>RN;R{wn=g^T82Hz~5SjZIwS@j6dOP$n zVry4I@5w?a@A&I?Ap)a`N4)1}?|+_~7jxr5IaTp|W(0ytusn!eFe2(-*_|ABRq)Jt5CNM2p3Y`B@da2)MfjExh(Gx8$vUhz zaVqhXFfo%H?tkO+(jm#*_8rSH6+K4TG9hD-CWG_6cvYY~tp@trCy*7q-WYk1%; z*N|}d>*V!%i!y_p9}~*3cC1_9boXAwGl`lQ=}$5@sRkEnqrtS2pE30&DMxYib2D&#dd(^pr8rXZp8@4V$(QOit=zU#`+);p6-;M~i1p?t+^ z?yT#e9j#J=b@i1L&#+DCh<>yba%IFGKIG8f{rPZ8BS%hw_63p2C;2s3o@J(*AJ*%M`tCBx)9-Q&50i2bVLQbo3s z36KE1r^INDPkx8b9mCas&O7#jwq9MkX4Aw5)3!0<$vcIQ&pLQg>!$g_PC5BkBJUYV0j}UtG2t)auSZY>>rsNI{MN`q^o1KVx`N=RUW@ zPoj5H&AQa?y+x9Fgi?Y2JcdV5{9SnnJ&o5^LQ(RfaY)Z+?9E3UjmUX*wpws1O`t2K zhONH1#o^4C;Owf^;Leyw_tYS#Q?is;ex1(9bpreCPTl#54iS5sIn8f)C_2)Z+(A#f z3z7EUg|g>AFIJ_msl;q^XhHdM+((XaqfLGtG983=p>+Ki-Lm8klNbe1orZGz^3Y`~ zama1d;6`7_Lt5P5|MA3odkUbh7fcTr>XP8j{vv!-RYJPI`3{Ywv5A*o^7+L%QQ zXAvW{^j1k3S7}(vifFyG+2BUdmFJhs!kOI6@_#79%*iZTP>PON4heY>oPct4fBk^I zoA(m0R%9Ng{R1)1B+hYoMeVwSMypZNe@MR}=lW;iw&5|JM*E^ixRH%k7*#&W#s$)-BO;<6Tc1vC+s`gpw zo;d>>-rpt@Lj-PaRMi1FO#K6YwtA%9B;p39u=tA%WB!M5N8hIp`#{tUHBJ!|N$gaX zA#e&T9v}yaLZP}A2ssx+mym8(EaqcS1I`sw}orGIb-rZb*8Na`n4AggylY^I_1P}z@p=|H!59Uo&HMDm! ze(s%l-dj6}F(|%%f%3*}u&M7tYs|MG5fg&CP^P&5;O{TrAs|}+VhxmVF1+<85rl z`d`e^`p=lNrTx3*%D{K?7i*xki~7ZM>|dMyt2Mls8$peNS+aPKgjvLaXg z)qJ=^z8s5bP3LNWAQmO@%n8DbA1}Oo{JIb$Gyk#0z1(ot0QNjIZuL;MgkR6 zAO5MXqB3u8K~3(sq!`1aMDk;gX6ft%{AUe={bCEvWXDbHvYrqFA;)>DPvobzLgA zExvDV%Ke%y?4JJKuEDU*V)L&J0z1#(lVrgqj-pvJ{U+HWIQxZ7+eWnqlr-7Ya&3^`pnR zC%kJsxU-w(^r|+v(urE&QhfC=ZO7$y>-TNl`j1F$A{RX06+b^BQAw6dHL}LS@*!Bl zDA?!1`?+q~=iwwGTYB&KaDEsCn5Ue#5`tYEDm0jdrz+@cQ8YVzu8@=!6@hbm?rhwgr*N)8R$|6cW)~|L7yuWA}|P7=prc; z!N(!CR()EcC^6TG=>%tgLZ`yx%O|jkVLWrYIjXKduwjNp)F?LASw<&Sj-J(Mv+ldm zSqx|4ni6(^Yf&LpJJ2AG4otOAwJr@m%D7@Fu#C8Sl{+U}*SS|LAySOtWmIz&fhKN1 zH{z>{?NZSDxL2Q4q_Mrjy)y0<{9~T8g?`2$&*=`rJcf=G`LXhw7&6SmRxv(m=OjN{ zXB$=7Y_o;-w8bToxutLS(EQDiPYE}nyH?fYavhcLScLM79}hhRu;02Jy8k|t@I3|8 z5uVippTD(swjpyIpB^x<`e-TQs{Rery|Ty0Cen50mQ8d@8?v}LtFKhul5H7y+1oo5 zc?&;3R&GUDX@j*XE*+!@_K3Kw$}A$A5wiCQACdc`2o?DzVuHHqjt+7M+h{9&K|S+ZH1|- zuFSLHSEad~GZp(5&P)fN>L`nits>CA4$wLHsjy9mdA3PH+aOg%froqA95szaz?+Ri zq{j4jq-#}^`WjXkiX%gW6<6@$Rs0N&kRa(FxUc=(QPyRk7vG$qRS+z?jIYM2^wX@V zLs^dO@A*#H8K<$-AcZY`hlV(}L(w_YQt**&i37N{a!8;WWu^do4DDF2i&$P~*4yI5 z-XW_?m!5jc_0aUzjrA`15EwOnW$dj>;U*{Udb)@@dGyxddGQ`iIt6fn>WM9a&tP`!sqIiZY zxYcGTI#s;+c_qviiYjRraXUMZUI+n0-t_GiD66zMR{`DZ;)cS~R3el*!a;y{TneT` zd@v(`r-0($e)`~#)u0aQU%ik5wzlMVp#b&4f6}CkEd#IUO5A|i?ofcgP;HiYyNl!LysMtAgiNSpt-q-=OVKi zZMs1@jf$Ns5E=Pnb3HqV?45%YFl!9kwk5_+b5I3egOAhWJC+{}D z%Xd2N{o3^(jQXo4jnR zg#7N$k^SsCd-G35{xsQYjVXPtXZM$=?Y-%1V}F_*`N(w+A)C5W=#neBbx~U*GpV=Q`)Pp6j{JIrsV9_wWAw4rz?^3HVK4TTdGxJ3LMU zoB%)~0{nkysb3K=b8&L>@%8d`b$9U>(DQMU60ne!l92^S6F?+DML|JHK|w`HNl8sb zMNRt~9W4zFEgKUP{ck7PxwtslIXSs`h55Np37+EQ6p#=QJS!?DCdS1lDRcgujPN-z zQ8FrOYFZjvRysOXQ65en(f{)xy&=m505VFlzXtGQkewi>proRvp{1iI1IYj0JG}nA zdt~!B-~<^t`3VYg%EPZXd`$S^9zelD$$Casor=xafm+ayUGC1~92y~w$~F#@fpy^v zj*z>wbet!-xOqg*ik=e_zbLP8Nl{5z^NNvk@Zm|$LP2>(mWox~ znA*XQO;GL*4ZFtUoXR#@p$jJK9FC9yI!@t>vmzVcQU3+{e~0<*{|od_%s(NMUIQ#N zKo`(OPIic%g^Zkqj5H1~kdqxQ$XNgo@VX*^uzC)7b|Qif_-8s{^~u$4Aw_X3el>)k zlHDGAN+UM$i%(DUfpY6(wyKnIe9pKRUE17|@@)ilz}|I~I=!c}X9up4U8V&7{lq4CUROBDRY*K?PHk}l zH;`-TYM|_)0I~FSnOPf|LY87Qg$E5MqF=uy6MD8y{-P|j$aHofm;{Ir;eH<#2lJ%7 zG#9fsi*h$1Ht>l`T+LdfnfW|ZxRFiqP+Xwx?lQ!()4VLn`71}2jTTg-2n|~ebb}xj zxNC|gdEvnX2__vzhkD;lA`$}yS=|?%dea(~zY9xTYaxn!so}7anX5NmveEXqs+m$t z+n;ErAypc1)=TT>^=@?rv)da#BPM2L~k~- zHDA|tfvL}j?UR6e4!$0^tSJzh@M^0LY3%|9mCH&w0#TbQ4 zch_u`ruDm%w|jIBVAOWJSBp*>dZsZ4;)@1wgfusf#_4P8yxwV}7+z4IUVps0t7YkDc-Zlefr{1|_xi={=$?l2zSHi1=b0g$o4~%C8@-rFUuoDK6JEtUC0u9F1>+BGvUUAr7Mi zcMXI6swuc7@g<`yyA!=xK^fn)Q5iUmU{Tubsrl$1Jswvl@Qhl}H_$Ns0XqlHmYz;S zb$x2^tpn<(=6+*Llupc0lkCh_SBZ>h@I}P=9IXILSk=T@ObiLQ*8>~}MuhBGUIld^5(z`=dRi{8vPw#rn_G#M9OMwH(G|cEu z;Y5x{@6miYf={&a^BUWbrw^f#m^4(~ti0|Ad7~jaz2F8P7WIlF-X2w@^zdul2{-T; z6LS)WtY#we!-x0I3^y*`JCYLQw(}||qt7IOryVx8Xd6fZK!^nlR1yB|LAZ_W!NVJs z+Xy49E$->^*jD>L(LRod7Re;#xJqw-z)X!B47e{8iMaX;W0Wj+t`zE->UT9LPtjxOX?TKLTRd8kr+0eBqcULf5HC!~Ug)DJm3 zqNZP_#@ew(71hj8vET7KObC?hyj|R~yO;zzMB2`9fqRGSV0+GEfxNe|N=rNXlzI=;;-Mc)W zLoE^_p@d3PuqD1^YT*-IuAQ^Zo#|8M*^ji%U`{zxOPC_46LsiDtzG{X z&Sf_B+Q-jCPo+cH`W2L6zrz#@xC#QAmV?9GEhF8~xm7U40RHQO^A&Xybqba?>e>s@ zg_%#2BH3U6N`0!<>4&4i+w%8}V)$C~RC)Q5{20G>?=`-ismKWoXdbCK8SC|BvQ!2U z=b+0tQz^8?5sPxjvmH|^59g?TIW@jN7_{vwm}A^Aer~D!ReG|-i#K8sKLd6|>trfK zB1pzx@Q|Ue%vkutStI}F;FnRLaa&wD3CP2#&9f(5J6b2La#Fr5a|y)fCs%Q>J12&m zX#6r-6OTVj0yKwmI9~+X*mSo`Y&@w?tHND?TeotY&>!bgN3CP6!yi`Wbvi9B1M{Jsfmsn>a7R=V!kN z$)`5{MBk^@zPY@K$?a{3=hGf9j=C>Yr-%BaSfO0wVq$=-+i(3u)ERPEHtjGeGPIpY zJuD6r;RAYyQ}5f+iYF!`6~01f#QB0JpeYPU-L59Do02m`F(wA-Zs7G%qgJUsLZrSv zW$m*{h-E<4i!0afBtjt}Wu+GP=pd!WLVSq){k8r~^3yfd@I*~Si($~O&5#+GUaq?y{5ZbNU!qv@x|ue$r^UjIF)aCd>N zX-)fgdzr2_E}T_BH`?aY+lA$F!7S<2=~LDP-fMN^VE4ePaa0gfnUaWxjej7aVrd|` z_93+gUSTn1vhM^5=y8L&5Oj=jmIX#EhG7?Y_IN%7daN|btUQ}N?nk@{120?@1><8Q zC;2bx@yIMYKe(mjOk5-ZHkr*l@6yuz3u|o4XVyWI*};rL89!1$+smHGYP)Pv^fV_H zPhcvOr!;Of8)O-79SH4l*$M3vl$o(E+i|?GoKrDx+@!CYSyq*OZtbq}E~)@xUc4-- zpHwz=urSmI)*dxPsM5@aXQ(2*5r)JY;LNxKS2N<+OV4Vb7rG<>?wK;_kGc`TaE|<$ zvDHEYfAKXlc3k4b738jOaHztLcQu0n+*d8kngoE?d%D>r29*+?=x-pWvkT>up1Zn5 z;V<4xaQdc}hl5L5&(4YYOR8ig^WI(>nukvK3b7zZ?44_G-i8d+&w%0Iq8gA`Z|*mr zvnolzpCo_+Y2kca)k>%H?B4~w!033;#bxj$1z%}qom=xxFj`}~2hxCsgAUAgm6aT9 zX9w+?K-%B7p+Vs^sn%SjVkXLWWweB{jQxTRuH%#WBm z_3@b&F@jt`?i2W--rCREEK>F7SzdE{KQqx@D__LQ9#G4(yN6xGHr8F>_&RR<5fEU#aOt$}f?d4Ceu`Fs6W($eKCi{ucUd03+J1$AKt z@;i6s%9u2nuZ6|r4+$FkO(vwCIpT)EHHsd;WLi1g17-g$>3$Mmn1r3g#Cw+8#H?)G zc(^@G-rh{#DG+F!SahF!X=XitHMu8&dpPJBuB8sXuw^vT8Qu%~JU7*FAi)%R^%M9K z(Uzz^W09j{v(-$rS|&pFEPGOMbj9q8rNL**WsFCIXYhnL2}c)mad$|YH%EQx8VP9G z*|y0oq@~f>wXuOUvx?Kh96lKiMK~N-yj@|8`E?sG@S0_d_jY z?$T*xW`%A=Ne?}tC-jiHrGr`gzRAmaiR7zR;WHx(9@PRz3&39)DtwnS%Pg9PGC>Z? z4DUdmT`f0roL`Ny>#a8I<9cIH83#T03I1?SU%bmd5i;b+lS?ZQi9Y*UBSNkhdTvKv za;zAYIuGYz;$#@d>b61y83NF4D0u60mp>K5uHRvG z_hYSHG3fnb67bClXAghR47Y zF`wr*&3;M@CCHkdu9zGwe3%>{kf4w}%yRVtFQ77f$?0Nx(3L^m$}9HKfBK+O1&HT^ z_-4=*1;Vw>k~Ii%iDB-et@h70hhCQ+nPR7nG(7GSyztz zZv5`!`{u9m@H-{$a&w}rU_q5EZwP-2LnsM|$U02WRvSxCNTb;+{$@hVOo8#Er0+$W z-V)r9AYt65{>o?CE~_`TG5}Mx0&yR62a?m z!9(_caqvHOxty?m1i$3S)u2>uEBMO;>>}3K)628BVB>%UjF5m--VrQdq3AZT)>R}v za{%|L8ETY^jpi_>j1>l7>=Ed_#Vi|D&P=|c$iX_^HJE1E{E>Nb1ciRI)(B5kC-Ra2 zmfc06t?j&U&Q365I_xk=BmgmOUMkCatW`h$xA9{|>(G!mb4x>^ep;K`0w0s|L`u$Y z>`@0tS6^$lXo%Gg2?*H5^TBG8N8-xOrK1jwMtTJ+W#l!kRUES{BXxS0E4}|#{(hh$ z_A$nj$K1(IJZYv0pRUgo7kaaH^`=Tqg56j(TcQyZqmPpCZmz6(^WU`pQ&vZUw^xuz z&8j7&J(qW;jX(a%QhR>r%_nwQo!W*{8$r(agaZHPQ>uL*DugQM{Ml-t4ByJV_?Qxy f5(~7frG+cLth(FOtQfraSuM4@f8435Ngw|O_^bx- diff --git a/doc/salome/gui/GEOM/image205.jpg b/doc/salome/gui/GEOM/image205.jpg deleted file mode 100755 index 2e22430342ecd479938213de54d4cfd0b8705da2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13829 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 DwqlSE diff --git a/doc/salome/gui/GEOM/image206.jpg b/doc/salome/gui/GEOM/image206.jpg deleted file mode 100755 index 85e9e803d38d02f57ad70ce8533323994a784d0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4983 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 c;mgjimUH;w{^m0EfBl^PF2(oxc~qF diff --git a/doc/salome/gui/GEOM/image207.jpg b/doc/salome/gui/GEOM/image207.jpg deleted file mode 100755 index 8d9322977995ab8c3b2c0300655a4b4395494852..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13990 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 NZF*jFXd!C<{{i^3QAGd% diff --git a/doc/salome/gui/GEOM/image208.jpg b/doc/salome/gui/GEOM/image208.jpg deleted file mode 100755 index 5b912726d9cecb0609cc3c4f4f9444ba7cbabb2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10477 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 diff --git a/doc/salome/gui/GEOM/image21.gif b/doc/salome/gui/GEOM/image21.gif deleted file mode 100755 index 8fa295c52374fd1e184eb01a6c1f8f7d950e0928..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1407 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 diff --git a/doc/salome/gui/GEOM/image211.jpg b/doc/salome/gui/GEOM/image211.jpg deleted file mode 100755 index 8217b6b69598f7176db45b6bb97cfcc1ba1b0124..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12992 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 J0|B+~-vGM#-Y)X02~#*1O*I&PVB^jDkHU^$hd? z40`hc4ge@*AaF|en2z9CCkIzAvEP((?BeQn+1JlM zATTI6p&oJWtJ{Y)y(`2LYa*f4awQO1z zpQswsikHJ1R&K+)^Q_-QqAS`km0lwmWp(=m7i(7o=nhb<=7{;*9TxcZ@HSH z8gi<~15G%4>yU0;%@p7)nwg_{G<(=+bCr0!qp70T!fTok{A`sV5_%<{%Pt{XRhU3* zRl0B1(D+!XJ8-k|BD+^jJOx}+RZiXwhJRdztzz!H@1N_|=-SBEr2wZRgSf(qxzIq> zwmom=Zzevv-M7M1`h0+z9hksSG~jO^l7Jod$+~ZFFgjo+`26R-w{zmwK#A}YQRkSk z7^*1VeSN{$eQqhN=6=mJH)hg%@1h=q3+BF^@UF7B)-)RlMJKNL45hJ8<#`S|YGFqm zj%Qq}I%FUQXOiz(ZymQD{w#3jKzf;(^{4LBFT>JkT5tN_xpAsrFG_KMLzNbM3~HMo z45t^QYD=W;cPn2ygf^{Tj-AU$tIes3ktN&|?k=`L@M%tOe43Y@KcKs`z&WN_Ca|YM znVyB^TUzTDX{mcS-jlyYBc6RTe>*0r$#UX>cB8dmwQVd; zKkV-DndTQXiln~tJPcP4cU@G`h+wZP3*~sBakBi`!mMJLda;y}aIsPKeI|z|SAu4} zW612Gt{eN_mM~t%-DhQ)>-X9FI_arA6K=D5Q>)JPr&mYy>T5@O%$GN6BaaK`+16-` zDrJXn&4z@0TFB{h7iyN=Z&arPEmPpd?d3RST*hY8q*iWrW_Adn3-Y{?+}P~C`+=mZ zhPcH@D|B2BhAhhrg1+cD%6cdV@ zk>A)qw_4e?TA!#Tsgi^K*rh)7M?-zCCPqTDW?o=+-S%%bD4^r{It84sLu%FM*8Oob z3Yh8(p@0G#9L^S653iSqow{?|y<-B)w=a_lZ|1$f(@mJ$3H`Ltdx-+hJ);0MqBeQ2 zk!|^N{cXNW;4+9AvLG7o0|tMe#Wdr1*?@ z)SRLK2CikTwBr~{fbJV4W0o)~^;<(gzyZBY0d>SN3K;hT;j#5o)LIH24!7eYR^Z4Ifrs|&}335M4eV6f$-_3UMh|70V z(oz>z49^fULX0e?fVlx<5_KnSY(Lec{b>+D_Jf@qF)6FL+d}i+r;1x5h8dj4(_Qbe zbyvbErwbFbX5Prh)gc+Ooj$zl8SFFe4@H-TdKHInj7*-q9HaAdor^hgToi_N&dF-j z4_Q!m(%k<0hM=nI@%Yf%fBn6l$M_|?%$;yosupmz`m>~`)TPSghT!{o6LweRJ2d=q z->E-(I7Ezn+BJ1;GTr*A^2j+)t<`2O07gEWWRb4EH=De*O-Tg*H$lZx1rH~` z?oaSGk~H*BJBDJ);yEFr<5|#-vg;c!1jq2xYBv(b80+lkTK0XNk?+$*qwx-#N-xAO zeykmJara?on>^4-of;_MSdoa9eAFkmUthFn?_@w7_Pa>0bXwPhf!s~N#V*CBGC|U+ z&kB*?a?C*{7uBqXtgSj(+K_l#^+uFx26iNsQVkz>E%5QjDiHd&lTwbJUpOk8U~N96 zj2y}r7C(Gwi8G(75ex6;6Nf+SEH3b)0J=dp0^PNhmhz3!#fYW3D%}0ej)*nbhp$V1 zNo|d?AHT-YoIP+hDWx&6;${-^It7#|yy^9Ftf_Xh+dZT3T>G$K(Zb6Zu_xXOw-xfcU5NBgl_fAw0n9(NTx+0GA|A zBEfif!UUf8Uw9pWHvA4%a>mzc)uVDz-7+EZFZ9XmuxGbQ z9zGN|H^t&F!Ddj5(3=JvbJ;A$%*|1Nn=Xp26D}4hbt#cv&mrNY%ttx8*LYe37xd9s z;T#To11$N)t zXbh4m0J#O>*uTq+?fmX9H}LDlp&N9CcOM-txo{`jKxC9@Vi&e;0-vU0KK`v>Udqc< zTR~PH8?q0k0Iaor(R_^tR}zyg;P0+IpvE-Bg5Zi+|Ke$jy%!Y=CIh?19AlrP_$OCN zrwMz#={4~!^KY9N$1=YSGcKU_D^{Oh)%86b+fwV46?uhy6$M9Ry6}aV&>C&tTCcnO z<+I(56Geh2oSY2MdK%5D@(9(i%ElK2t zsz!Z^Q09UKnc%X-dioy32hMzfN&#jJ1=w_9rbV#|UiIU%=*v+{YOhi5O$2?&an%chfp&*L{VXd95P^lp}7{o(bK6^Bk%Q^1SwK zzHdxFQRnWep3?O*@fdB?zVkt;%}JNlJUBT%HL*wUO~@AIcav)08eI?sD6LobU|(kI zS0*td#v~>a8r}zE`B_xqUc7^YL4tKPoNQVTR~c_LFYyR92c6=}6+R%P`T?L>Z}(Pm zT3&yZouYh5q|(abiUS2)@SRY(!X0-`aP7?7_Elz})-e`Ps`dEE`L^7CJ!j7swTT7p zs+_Eh+g4u>&pK7p`SGuW4)kqg}lwyZ|}Pi+i5>HT7vlxb-L9j;#-jm2j=P5}9I zQ29--3eD{1ykrt@TD2<|oa!y(lveVNN-ZABRr$XccYmw#)Uc|?Jf!J}t2>ZO471u=4zD_n1mto4Kf!XSnYZvUXQR7Y-cOd=)Q7^@8id!ty_@GLoGHpBSs zO@Ylmh)e?HH-##QAbL|kc>FS+T1!4Niut+V@-aIorQmWeTYAOI8$Frk;4pi!AdP0w zYYuUgK1~B$Au8_%_0bw9?+ScFA&8=>0)$26QVE$IVE$jUFj4^h<5uFbz-H%M0=iW%2F|W-A?N zwNij_pzUTC1*|}+_1|d8_J4l6RE9zO`uWVW-o15n_Dwwf*`^`D6t&NU`dlj2$B&_j zkFUv=Ci5-J-v%a?re)DS&-E*XWlw&%x|N4#32X`}Y%}uolCqhbH=C4uU%0w$haJYl zvyD$dNyVwS*)ac>9c|+mRhQL%>mfDQnjP&LI3(eP{w%+?+XAbMe$ zMxbPJ1WBaBKot}%8Y-2Oab#*F1@PkG$`n9o@1OuGfuFTj1_f+?ccFkt)}KYq2dMul zR3J7$nFlJ%{yj#iCjatYv<3_u2|D?7vag!Ht1GJ@YU19DQ(1ysi1okafqK?GqJT~# z;5x**mKI6ghH5F(qlGz@p+WdK@ytDKJl7GLAtuyHHA*-qJANE<<`H);n1eXo=q0w< zpg9x=b78f}ec?lq2ysRWWWF0w0L7PNqTJq!Tk@k7Zr> zAWz2Np{Q*E0)y!;5T`u`h1_j`tW@aOCSN7*LQv)9h9i&=qz!RE{@RV4+F{+DH-V9= zpI|!HAbiBb|An!oHx~bH^Qh(Upv?`XZjlGFRS({B&k*xqN6G6;q;SlFcpg>AKg>F^ zd9%wc#H%ozA>YuQsax>Mi9=@-?y7sE4m`;kH!_eCw%XuYS9d%^{YnbDyjX;&rL_0HF<8ShMjS|L*Ami1j=2kv z6Pr*6FwM4HUm0IsRM+WQ^qeZsR2;XWxzrFR2v!|EqJS_wsR#Z^FIBltGGSkGnN?~S zXMuZ2YLp_k;FBL_NzZG7^ zGn}i@jC`94RMO8tE?;3Tx5NMKz~`_IR7_ zGPm-V?sIPooij`gaty58{B{)#t3qNM;`0<>t*!w(qS0dpOXn_>R6SRpsJ!s_{qqy^ z7gh$TlRB&~1+;zY@nYbM{(i2y$7ZWiFTH(CFC{9K3bm*fR22O5@-L|eTj*4496zRW2dqp0_Qr;s{d)3%I zR5dq!TU(z=*I+lJLnN|+7AqZo)tUkx_&_jxhXU?ExtV8*#0aJ7Ok3hbsLt#~PFvUi zP{qa|iHWwF0*-%&@SBqYIH9zw*s;S2Wnf4^tAT3GB1~sB=7$>90@a$#zU1rgC;$@8 zq@bGC9k(WBOZLXBK+@X3Y!4RER0Kim?_-8eAKP`#(oB(!l(o$$HhQ#ULgW5N1!(S9 z1&Dr}G1_D8qSqKg_5*X-VqBehR0(y20_;u8)46ok{-P;g=B!zflm17F6&=EhzPItg zfH?OoMuxUHzFgG6x$=4R`N8sTeQ)8gNYAmmc_5HLM+(n_yPRHOw05&x7%mRvtEI}OkB*?Gk%gi?TINmp#POPg7-AQh=a41?+4jK@hJ1%khI%-{;pO5T~j3J!^6^ z(SN`WJZu-^+p)}dqLgCzYyI)m40$ro*h63_F6UVaIF(_3Lz8E5!E4EEQuR_$#ljwa zZiMgE%m)iIDDHufuWr6WhHl>qPb14!0*@W#g*$M=-;Zm~RP=FpmGha64Y;0bs=>+~ zG%_+q3@X=5VVs_SG$wlr4 z`P7a3kIc%>EkWE_=~wRj-xSGk6n9Mo&b#p9?5aVL?Rj07fRq(ocXsMMcCl@TKE?S= z)jtNx=H=afvh+P+=zPoVc{9Nk%kOWw1zC?|!xXwa`)OY*rMz%`aoG}cr`+n=DpP04 z?OunKgf6Lj*i^%G3NVk?ztJzKY#Bv$s=$Kq5zcH^UKS_qD*FFqH=>9V= zZMU?;j3~gQm`De0)!0rN_d;H?uKEcf&to1Q9E%_3dIcRG1DF0k$cKi1k`FcP(2~Q^ zg@ebq6EAq?>Y(H<+2kyYj@~b3bWGECheT5^1dk3)5)?K%`6p4oT#tN)=aW(Q@k_O0F}?KOcfSe3cI zKvN!N+m&_Y-Kp(P>a#yiPhohb3!eV@21{RFAAKCP`rXSQTVGFa@6pg8GrDbgTnNbL zyHUrq+QFBSnD`-Hwt10p^pfLt*r*9rhx?epw?vMcM&|w!C#sTS;y1nZIrGFeSewSD__XoTi# z-dOEFcCfL{SLE1<0jmJ*Y?<7VL2d<@v-BQULIIki&`GF$Ql;JcAWPGhzDBk_JIsFE zq_i|eyvS=b${FGOw7(zAA>_~5ILiSofzgO6*BH*(~*PjRQAm^1ygQ5 zyyxhW`9RkqH2=*D0eqA04keyI|!ihCZzx(n+(mhPz&>v#ReFuq7_6o4(}tt&Prs_r++k$KHh3 zczVIkSDatJUU@W)?lv&qr@j5yn4B2BcGDydGKm!B*h8 zKN$)nAsUS??a)BXBeEMRO#L91_hdPcLew$4|PS4N?P3awZDtc5c4)|K%QBIP4gqlO3S*|*-H{<&(q9q z``Bo0SKK$PC^>ND{IZ$}Z5?j74mx`(COzH{j8W|C_1kb;C=r$6cIfepHTTfML;Ae8 zhVIbVzl_3J2jW>Yf*2e#hmJkdb@LGj2~X*8JUMI~{nB}y5J3=`%EH@YdFoluk@i1& z89B`L-i-BN%6&=KK1fIXr+s_JQwICw6|$u}*a<$73~ z@biXCsQ0;mUnyoP9ULX|zjmjV)ttH8EZG}$$9?}T8Mx{q4^|;e`kVjqhuXW3W|T~Y zFDS|QynAk`rBFnWKm8)z;v{SWQF-1q4O-0krKB>qji}9O>J3 zC#()ri&O*3#hW*$P_*mhW#Tj#t{)c20=&JuO$0n^O0Dnc&04F_Sm~yeg@W?0IcLJP zo4T!oBOiO55TOg)Q?(SOK9z?E9v$LSxX7|PFwkzLE?sezN;AWXmeh{0 z4iji|(${a@23q|Ta605B89+I%*#w|}Z8NUGbZ0++lr=WY3OfidC1RkC z$TCR%$mYS3VNgspcfv@y%EaX!NXTKp{Lt+dRO_d1K(U2|dO)HX#_a>7^C%*TR8T}h zLf-Ca^!B%>P$;oOp#;fo1HPCJW@sSrBOF};xjTa#bQ!Zn^RJkuqJYbWzl{$2IXZ0x zeyPdoveA0UZbNBo7gHI6MBm?}te3%`qTqy^)G9<`SG+AaA^*+CieqoB`{=7XsfY6g@v{hw0cp{ei-ioxIW7-kmgOVl$9{J`(yvD z1L+OgKYa;v$^F++xCoaw2Rw1NjNZNWS4u2s6Y=IsIi+*J$xulRI!E`wG-?**T_lTi zC*O|J->}MbbRmaA0#sxnR5`wbtd2sv6EY*v$1_4=s=<&MAaCML;I`Ud9Lze#!WGZ@ ziy2-)koEA0KiNh6*)iC0-uyXDW3%ohDZyH$l$Fy-+OS*DL9NWCr_M9q*E=Ha!IaV- z&(+*Wb%@v@<6ti<Fpm1wUBJR_U2;Nuoa7y}{aT#6d_!i`*6%K6W)*A6D{)RagO*H9A-4 z#q9jiAgsSYtSnAd?6~Omy>}(t)zfrL4eM}CSNNxhUKC$9G3nLK}ki^#4C0@t^7$FfWE;W9bR z&+zp|l9wl9kUEF%lhkT0xOgv-7R;(Bz(P&Fgy|QG<~zUgZS|RzIRk4Y!K7NBKjAfz|p}$cBrm~0~d);H9s$vd9 zVh92KT`sFc%?HIKZAl7PJCA3Gkf^QV=lQJFrZ)IB;{vsuLZni)8Rw*?YO4YaqT;SI zfhj4N<>;A_6}igfLkW<$a!`P`Vn2)vjhOBiydD8EW}NM@L9btFVANnwK> z#hGJdt@$%vcG4C_=WpG>?D?vnH+e+YjjGX3Jzyf(qllCHjSnNg@v+-rR;w4q^`dPu z=ndOUE|MH`5_JA`0k2h;Ta>&1bN&g3A<^$w)B6t}Ni`a*MuLi!G8z|q$E zlXAvH1}rxzwh+@9j9g~IKrq?bspz5_epyuONsBT01B#(Ww1jIQed4kvO=3JL9m}~Z zU>YPwXVOeyN|eY524n4~sjXdyuU(IcvGb)CcktLnui=AKQ{ zN2eNPutJLs@a%|ysTtHB(K`h#)Ep~w?Lw8&cDHyHMTBC+#Wa@HI;oWI6g-z0n0E}} zJ@n(oU~I=f=cpQ8KBV=qMIV|6mOtDmvSht@hgFOWi-(c~=PvKBQ$iK4tegFXIAUW< zDze)fExRX1B9VSvOd}G-S@5fn9XB~7Rrt6vN&V3A*tjZTc93|%%24?2jM9{SE2nQ{ z(!wifWwP8zP>x!b`$>=I=ZqJj)EWsDzCU=aizUVfLu7*B><%8xY~TnV|LcmH+))PQ zbYBSk9Dg!gf&O2c;k#Ph=-bs3D45=u zfrvN=4L1V5@kMi-Oiq<4u47)Nb`?=N@cyjV=pvbrIOrKcryq*zj|YQkvHSkn6OBI~ zbA-79Jd0I}W5rW;$M0J21lmKwdL;^5Ylyi$-Y6a|{!eA^7UUN=L;MSyKWMyul(OGh QCAncDt^u}Xf}r&O59iZ41^@s6 diff --git a/doc/salome/gui/GEOM/image214.jpg b/doc/salome/gui/GEOM/image214.jpg deleted file mode 100755 index ed92bdd6666d8b207d4779ba1f33874a7355b870..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12759 zcmeHt2UHVXxAugD-jUv$fE1A?(gP?E6+uu?P!L1M(0efv1*8Z93Q9*&P&(2&(pAbI#t+e)h8m--{mwXfA6YGyn+r!vQb? z03HW$UA?4wk^6=P(%RnPfrFKeg$p;r9(k7AK;rB<2>?F;JOPMcFhUrNh>(zwn23m& zl!lCygoN}I6%{!R6FoCCBRwM{3p+m-3mY#RBO|v6H?M%;nKNgYImOP23Z3H@IwJ@n zA|@s!A*CZDqZ4FhWEK3kKlnPx8vuY1LQX!wUp^25D2$MZn1qy!90EXp83X_RGWwfA z8h`)-g%ZG^gy2(vxA6nV02nPH9gl=6(W&cZ#Jo=Ql8+)&N%++AzcA?iSml?x@9a-X z#>m9X!g^XjQ0R=Xw9I+g3v%-67cXgOY9TJ`-?(XDcBpQ9rxyK+PnAZ86Q3td@3v|E-5W5|5{sD-_Y39+|r5d`q|yn z+t)ufJ~25pJu^EuzqY=yxwXBsySGmZnoIzLL1DzlCPN53z+WgWjF3lyh)(r7v6<5; zUdcx!^lFi*`Cmx+r1Vx9?mPb=W8{|}JH2*n^@-8{n$73#b4Kl`3O+VCh*?1d6O4W;Gpf_w{R+=%k;0a_h;b{A-RZ z=cKb@FAnv~9T`cm86V~oueWW`KyC%InuY8)sgzM#hJ^kIYGHWwPttb)ZXky`8oI;bst{t9;Oesb9=eWA4(pp z_fhNng9!|}Z)M@e{Owoz-;hEsaxyz;5x>JH(O>iG?JZ@W5WyPA!tg*Qb<@gDem&=p z;cohZ-UjwIljL2p*af7DPSN87d7nP+1N}x}4W2=GtyPlTQbfat5+C*#XKH&}G9#q4 zMZCAL%X@KlV?wv`?1FiFQxh+n=iIjemaz81N~wbdO%=o1#^{7Q)mLb$1MlCOI^)Dw z-f;RNssD|Xhcm=1lhCBy^d*WUQ~JcTfube*nCe5NqIskES|cZm*tVqMQ9ibMyLhUbNNKJc%FjGURXkw4xY*~l)vGsBXKqAHUx>cfxbgm@ow>fNlLeT z@QWT*(#t96Uf*=QtmU(Rdlf zNBf#M?%i_=XDIc1iKN{|nTVp`B~9V_#xw^z2eGP4cG==L%hzAnXj8vPGHT>>N{DGd zD5obZEhVgJ8-z%Fh#F6K2r$-WTX|TrEN$c6Qt3=$uNvkX4z)1s@?hUy7-61HE`B7! z-|#*z3X3w`qc*0ddE;frF#fFKJn_WQaA||W(TMNbmHyiND}s&hEMy!EacXF*g?JX< zifXYM%ALHH3$XC2-Uh$?R?cpYfTL&OpYAM}%Hq_yJBum|hX{+l>mePQ+!OGC2lvE? zTw|5z`vuiyA@f)L_N!4Q&+x!=JdkG>f7AW$o;B6T=K%c%_(Js6@rz^0>e7x!jNm^}AD+#0fGa)A3 z9HF?T@29Gjt8x#Y_FU~ohBf33W@++cmr_q&6X9iZvo7`Gc2xC>$(%!jJ;QjQDWFjMdT&MlwSn;QdIUe(rzd(K z_vBWm1fP!&RM@ScCk3~OGO>%NtlpoK-(i`Z4-% zxN|0k%Wp09bU|7puyGDdzkv*0dCyauKlBs2X1Y(*!)J*+Kgpj`gg-$e#-m# zKiF(g0H3%qSH1U-R&V`kb>;q_txi9&y7A$J(uJ*AA3D#s19d8S5_eA)TqVy~-wXOC(Ex$RjDpqRHwLHUB9 z7s!@XN<{V^5 zrx(M|LAuqH`)My5OJL&|7Qs651$Sec%@<70+VoCY&Qdx2!D%c!F3B&#AaIUri9Q~F z?*{J5yecV;RP_{aKF>M9%{2u-WnYa4k{GLZX+{n&0c^Q=U?w0J2b0AEv~Z#YJg_%r zhX)=};(u}9v`cpxPX=>CicBEWwa-lFA!G*Q&0PyM0Rmn!2+>hn;j z5g)$PwrhSaaE9vi%Gg_vZzV>Hf)cQSHp!AGJVa-mbEBS4Uyz`fSG6X4gdZYt%pDO^(-D*hm#%F ze!i3U(+bfd&+&?^a4aN3UfZr}Kys-#ALS-l%X!p_I^0L5a)7oUVG)Qej=iVuo^N;G*5AO8hbEFKhk1{+m|*ip9leX{gMhkW}bk2++3c zHO|JxzN_azYtw1VJ9O4)q@{}wJ{D`QB?Jho=h~Clf5u45p!CFe8;r~J5a-YEUU>eg zY!h&k$rjejSPXvg;`)sEgrB`O+@vu*4=vh|FU`b#FJW|AtZe7V?$f;Ec8EdeFnS7U z5sC-QUFA0f3l_T%4#Q`@dVg*xNfR6DY$#YUw+M^+s0ky0w^3<0^_Ph_yBHDCel9w1 zNB0%n{#@C^C$8=LOX9fbRyd;&K_D2o++v!z&*pfbLmRLKb5P?X9@zR(oe116={_s= zK(7JF|N59Lvx5vssmbHxKQ+=B_v6v`c@rAeG(F>?Jy{w#SlYJ=cPb4u?cH`ZfwDU{ z!~8<7?TF9CvE3dF4Yr_YIhU#dWQiCiTCFgV2tBatIax@V350Ii(*mCPEJ^BajP!ER zw{N8|NtG5N`8c4Z>}fl+AxAf_VQOA@u086qL1|oherp7&&bH|%zpM%7k+KpzFmk)i z?(Ks9wn_V1MfHeJypPUya+Y($&gU{iaU9gnxT&Yp^=&$_RkUwJBL|RW`}3ut7qf=2 z0;^1XWqgTWWbj-nJ4`*K^}G})@FtD z<)87^{4`EUU0Az&a@jiSKUWIpvhQ^=o-yYVQEEZyCv59E?fv*(Gry@VYTa*cpr&&! z)zXq2bNf|(&7$Nr;&tq42N2UKOpnK|pCHF>ez?T$~hy5xu?Yem2i!UAk0hSBJwK0={9<4&-crnz)5qle5 zDyya{$7oADpn14A&$TO_j0c{kK$qU)e7C3%nc7dFcl!q(Q1%YOk!U9T-RwgS`)ciTK zx4-IF|z&zVE^71!TWs0n11cWwex*^B_0}^JP0C;Xi-$(U`wczlaPimEQ@5J z2O|W1g!Prl?$b#hY-9E0sV<8|Ibv$s+6(SPR07DC?Q2%WLIg@Gh&9b^vF{!|{U3)4 zF0yO3-8p|Nb;HH~0?%b9ED=V)ZOwA_`U3~PjeCW}7Q<6d(!N_XTee+hXuq@BTo2q@ zH4R$XOtc@LULGEoj_I+DmJniVfBAHv0$4IvQu3Q6s5C-{h+ggCHXWAEze^ObLIshc z7IA1@PmIqGbqEN+wgad-5OqsjG4_mC-k1i*b5ohuIKGm4Si2{!i=Uee-IbojC}tP&BXK>$Tpv=% zP0dXA4l40LH3)Qd9guAX&{Heg4|b~$wE?dGFUMe()B@{m5-!ePZ8)^7?)c^_fR)Zq z;Lw_23eY`Cu^D*aFFDqDWcM%`S1!AeLSp@kQ`sjYv+N9a-1{FG7^C#gTb8}&w$R9O`^#mT~n4|#?~aMO_>;nD-cx*Sj$qgpfFk&ZYd13~9m2Lun0 zc!c1AvNZJQjp{>t4E3&hrQuO4A08k8lm3J&fd0xcUcGF?waXxm2iQ`eIGPo3{av*1 zK+OmA?hwGW8swRK5T}VFyn+WBW`X}|22jM-DsvYQ7>}ikm9|a5mRoBCF}hU4g^<{P zoc!!eev|w>w*xY4tGJ3+e-_PElov@Ld?;)57K!`P#7Z-%NTP@M5`>kOYS+ zZnnPz+)Y@j%eo3ZbL`)h#AsNuEhR{vqkzk?TQRpObifQtm?BNn&ZALCmyfsAMGXus zhY`B<&X-pxN?Cv{4k3c2_o>;t;&n{oS+>+PNkh+`eO{^^+9TW0cpBbE*yh2$JmD_& z2+laQo1a}3$+7h=FsXr!EwdtVxmWq(S4kRZ!>CL1g`E`2CGtk^_n*f5Hov^T#1SSd zIiMi*NYsMK(Iuvta+V3B+MGgZ%4y5U`Y`1E{`@p!oEbx*dkM;ZY(9sPxQ6W>z}VIbQNDpnpUY031BhXl7_tfTWpia^eMPJOdsB^)%w%C!j*Bv$NN{=CcAA?991E;5h_4Nsu+vxXXRF%1~kMXIBw zG#--$Gea~}*fPMNT8-1h1B%ADT|BUuaU2t!DtqH2JB@h20*pxkFdo|(@j#WzfiM`6 z(h)e%lA|>|(5DMtN}7h=sIOj$z_ozEs0{{Uk{BNFMQ`5#L(zuoaLwUh0uK~`fp`jx z!I@C>2-nd|Fbe;}2?_6N*3+6ADRLV7t2VaCk4Bh!15*Nj;{66)OG!K06-8kIUa6j4 zC2%diI3Q;BZmWyv2M@BhWfqjS2q1ZX4owky-&T5cyWZ?n3;v}Eap?g;Mf*;(-w;m!s-KLE5c26Of2ErHUq$*&SSS*nk;%vaM zxGT$nUt+*ypl#GV%Q=%q$&nJcXPqR?+IrYM<~sW}@b-1=fx24_Z4|kevAoklM+Z^t z;b|k;zNE=vOt8?C4;s{!VF7*5>LS~(y?_XNhFoH-O16nGaH}+aQikw-6yU@Xc33vapj_52mqM<)D=Ad; z>0|tpC!u+D~AttK&gUluY<@fC-?pEAOdBVVbrc@`cUY-f%!hhS%|=@ z++X2UcGAt;?+nb6_>5@v;r)=hUl9h(6S!nX>4!2UP~^EsH}n7e*qS;Eb2jgT<*| zax{D(jCk#AW{LVlPb(P1o`mjpXz;2B+~XAPo{zrYlM?#YKJZ>GO!-H}Rx2P|OSfl2 zm&aMcgx*)0g+}KkIdGYfF9cc_&azoQVV8`O)ZL->m*uQkGMO$fd&%6da%y3qqiwML zZg{SGL6B-^_U3?>Wy}Q#0pbb_cnB(CvOztf!y|^GHJ|C`7i3- z?~6;xLy&iHmnjE$NNFLsd^i`qP3 z8S}rLC}7v1Ha02VvIkO8P>}H_zw6z7`+bl)mM_YENJMOdU}j{;bVjfnBRDdS-Y2vH zH<5GX&=zxcwp`)%Y;m_NDi)#GvmT$iK|V^S2G?;7xB6-b4>;mL zhYUXEHEh+(T;I`a(x9IrJ&tPkB5(qre_yr71EpxtiNO*OWJ%9PcBrRScH=X=%|q6bx8fnIHW%)0)qDR?T^q<4y!C?Z!?xjda3l)&vv{G&kg2Y8opKu@fr z_h(1iFcPRrows*CWml!rR}hUG@*}y;IS(T{F*2aWN>&n=m>srVyrDp9pOB`NaVsAx zm@*0(T!S+r$Ve3-aGKuXFCT8J`q&A+c2K;pH3GBOlcbi0C>=Ko38{%ZHEK;)aS?7A zyI6ygt}SNYAGWcMAMCaEZlv-%t-#qntYS5zjGyW^>p&}sDn_gZuqo%m6r=A18$Nqo9RAld}vd0swt#iVVx-xG!%EdQ85@J{2}$~9trIFmA)NpY^5MTTIg`5NKNsjziX zOD@61^^`lAITJB#`>wMZ*3g1~x`p6_El-5u)=IagF^VGxOm*(t)88};tMc<`k&8RB z*UzbOTz>lcRvz=v^G4=bAxM<d+Wl@B@f*L4elx5!FaGcwE|Xi581i~?qFAPvX}Xaipvwn zLhQ0vU?@653U!V?$3~V5L>Ru(!k;ULR_JY=;wQzGn7xJx8c~zWvD)!v{K?A`3DX!6 z>vGu;QG026KV>bmyjy&)-U{P3%q;wQ`U^lQrAY@-q)nEN5Ff2*SB^y<;%zF2GPNMw2_a+)V4uc1 z(4enZx#Pqt`wMZup*ZACd9qXc^<>*vo7C3RP?(JI+yI>HEixuM6lv@ zRK{)qD!WKC#Ez2FI`W3FfJOg2LUAJ^M*>c@i?s9MI7)i!bG~5WIyT2hNai)ti}(7} z^BUfqp}tv{8V;dcAme8d-Z>{#b!=^v79sB;eD^MDnoVw?Af_S=t3M&0s>VG zn6wo~K{BSZdjeelm5+(#KG^hM%l4638h&|7M{bBuQ~F2Xg$6A{sPb+KA$C!^RTy!) z0DC{gDy)85x}d2gJ%ep?YA)EoCch4*tJ^A@r{Jt5 z)oXhyN3IStaGH)kzXoyAZ~EiA5r2}$|33QubwmEC==$%pJky-^|8d> zD0l=r3vxE56Yahi?7XA|jNsIMk>}ZyH)$%sB{e;k{E^W(eh(1;VFav-G*?vOz;9>6$( zX$+(*mNwO!WLQxBp;9@fEQ_tOxJO2490cShAZa;z{T@tmB06BEyZ|yJkh%O1Gy$e< zVL_Fe{ur9n?p=~*(@p3HL1{=-@@iHR=`<^4$Wt1v1%A4Q0n(a#+5Uz~jr0(Z z-jI0w_AV-8l&cO$Wc}#LkqJ1-Fy*RyCvm{$s?(SL!H0#A7NdwFPxY%MuVO>)YOs0e z>9n$xljt6xCOBU}dRj+wiRz^zBgp3_`DlMsaAgBhpnOgQdO>zNP8%l;(LwyE;<777 zKft#xRz*Ki%X| z(R*aSI2AaK;C`N%^Nm?pr?mNS7OIb<8TpNY#@9O(p=m}%Lpwo*y*zqE)0EAE03;zw z2M!9N@6u~41~SCVR$KF8oW~4|ZSJcG!6ucd)r6pizq<`c8`(xj_8Gw7X|8SnX{EX^ z8y-+APTrH()RD9*3^u^EbzpL1g~-$-dfWeaCg%%s8|FIqzleh;sI5QB9% zK~$_B7vJ9mm5vTpP;yD{?KtagTn`2(8IZl5>Vps z1kdW)#?Edqdt4F&Y>rQnOJ>&=D#6+>jYoMcIv7lGYw!RDVo>-&X((`L-?`7^> zP^2xD@~sS8gR`<4gk~D;W^a-AosOhvTM%{5X$^Zto2POfGAr*$oej8~f=f!F!`NE& z^}7}BzCrT7k`VOTKlFi)ZZV!JyM-$+Hna+p&<8BXUxU}e#ZsREWwY}ql`{IET7k#aDm%&HynmV z0*ARSG0$Q-$M_j(N zkQ&4cur=|&SN}_^CeKEGK``8NG`cmy{p*gt7X3@%Yb;H(b*?LL=KboY{llib_2YwK zH>W(!U(v~b{OIg-sNKO%m5!mD|65|!@1?6>kKX1qt% nZT#Eo&84#*1#wpluaxo{1ccBeTTvDwixC&*qO<`tzVH74V-8(I diff --git a/doc/salome/gui/GEOM/image215.jpg b/doc/salome/gui/GEOM/image215.jpg deleted file mode 100755 index 0cdc46dbe25b6ee88b3f1c7bb3f22f9667da38c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10568 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 diff --git a/doc/salome/gui/GEOM/image216.jpg b/doc/salome/gui/GEOM/image216.jpg deleted file mode 100755 index 8cf5671cf6fb283de50ee54ad40822c594c87c46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12504 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 diff --git a/doc/salome/gui/GEOM/image217.jpg b/doc/salome/gui/GEOM/image217.jpg deleted file mode 100755 index f9e5cd72cd72529c12b0e16625a39af555073019..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11989 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 diff --git a/doc/salome/gui/GEOM/image218.jpg b/doc/salome/gui/GEOM/image218.jpg deleted file mode 100755 index 96b49d861b40fc27c19f5ee9d4052fdc1acad442..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13752 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 W#<3$jHuP6X7zr3EL0B}o^M3)R52Ts^ diff --git a/doc/salome/gui/GEOM/image219.jpg b/doc/salome/gui/GEOM/image219.jpg deleted file mode 100755 index 62a5832b9680447187e22d7200ce874b638dbf1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12098 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 Il0X^$H^BAJBme*a diff --git a/doc/salome/gui/GEOM/image220.jpg b/doc/salome/gui/GEOM/image220.jpg deleted file mode 100755 index 616ddb732683d3aaa16813dca5df61fb05a3e710..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18424 zcmeIZ2UJtr);7FDfY1a{q(cx8klv(Af=U+wMNk1j0qMPinh1hOZ-VpyA}E3&T}l9@ ziFBleUPO@IYw~UMoO91P_r7FVjmH5Z2oy?03?%_q0S@y3Yy*gCNlu&=QzAX7dk4npOeg**DxHk$LSfyht6eMH z5_etv$SLR<7@3&Q@bL1T<(E7sB`qT>ckz<4imIBr#x=d``UW>{-ZC?{xMyi)ZR6_Z z?&0a>?c@JAAn-}h)8Ocs*k^I^&l3_eGGAo9%+7iB`dv|RNoiSm#rygX9~&B*np-|~ z_w;`0>mL{#nwXrLp7}caZEk*bZGB^NYkOyRj~0YXL`)1Nh8;nM5P5?Cp|r##r^QH5 zDCxrPIG^Mce?&%iAu7GFj+{&4>dL9RE?pG#+>#S#R*z8s0R7i6`~6#>f5ZG6WI`=K zO9t#gjzb|JdRhpS7D5;TsGtz=1WF4afO$zaxldbz0c|tY+41((p7oClhsVSOWuegE z#pFaEt_e}Sv)7+s&#?$BR93sIuzljP(Iv{E?c=P|zZ7K8Co16R8p@2jhIwSB=9ve<(ucBMojE*O0>gh@YenoS=D*7GaH>useDnT zxmB%kEJ4%&n+$u3&qij-&;;u-hU;~eXZpTZ8sHo&d;K&8&h#yrl4YF`Y+y2b@&NrP zd2hB_zQ!;?PBM;1NAps#@kr?zLxFoeOScWxOcPEub6(Y>4HdcO|Bc#pQDbT5wdBZI zS!JHL{XJS654Bx{#OwR!hrVbuUVax_{%nktWQy1Y=GrgYAS;!`MROrVP1!oP$aB!z zA?Mu?X(Gp{gSk3|gq`qEv&N!~~5`f3H8Ydo0zXL32BT~FcwwC8Q!%@`56*B|<`-o$04i8I5 zJWCGc@Y#YY(Ir<^${N>>HKM<7KC2L;c91rEFDq+ZQ=1%$YHLkZ5 zF)mo;nGw&<5}%2Qm{v_a=i|;ZukWz5ahSi|m&y6&shoXPPB=mnCG9?KlO5pBICUdl zC&Y#(_Ic5c83A~^qt8CLrTEmmcryB$j}Iz}YLu#~JhD}2!R|A#pFLAsySE}|s*`)J zv;F2Vrpix_D+J(l+KRsss$<#+_3okL%AxhXw+HXx?ev3Xu#E#;H}e!8#mPhf%nz_r zd%BA=1Bfs4@OA<~vqrO{lrMLfFD!4mzMMLi$3AN8|LcXPQ4^#Ub6W%0(E*eo%Bbs4 zmo51mzCMj_r(xe+-e~y!bw4JY&Bk#~)%2{Ro_tp=i#H_z201AC14J`o0#-o)(#pZF ze+Xs?HM<0YIT)MR`@@7M@yBh$)9gY~B?YUC;RN9C;m94nMr=Ew6bQiOzhB{lcZ%{0 z3j1bde}|_02u-7}Jwjv$AM5MwL9^-eWF7nAz#o6yH)3}`B4SIs4G;f=V17z88^^`8 zTzr6ig6fWN6t2U+)xmr2pdwNAG|v5tx~NM3jvCZUzOA(d`1~f#Eb7TF?0}=6O%Vs* z$I&Pb;43n5tp%vuUPKBWJ`G>-A9mk2x_G|ep-B^V?#~iC!q~iXB(Xn>g#i>x+U`M+ z@5jVHoSZ79`G>+h+AZ)!I|W}eY`^3mar&lW zZ9)!*;T?z`x<9snE3gX*-v@=c_{Y5h?&+g#bUGFHPmmnO{N3J+hQn^-3dKw=Wd)KC zT!Fom$H%5v4wRegVV0S|9r3twrGWqpTC6)vdDTaEao;az-DEt#-n#u|>s+`tanG!e zkJ~Pr{axS3(*2Qheb+{ZYnp|otj+CC2IxjRoeuyI9ijXuIdf2zF`=DA=RT8{ORna3 zRL8+Z`p}%Ey{46kON=ce)*Rs%R7f=hoEHP>ApFA@a2Gy5L5+N%Nt#0fpD^ zh|8Rg@AcIoeySiY)%%QbkCYS*|EUj;)S%Gs^yBZ;;>8CI&zd@B@N+e&rPV$()2kd? z@-JwPe6sTmfYKYQ0u!sD@Fd$))lpSt(QK>8*Q7HXCm5I-t)L9oR|2+*Iix+e(x(D2 zpA6y8Zln(cu-+gy4is$b4=>kDdBI!yZw(}u@Fgx>m1 zKl!k|cR4X|yYfbV8?EWFs0j0N6dTQTq_T6!+`42`c%Ur8o{Mq zX@|P+iNKR9J6@$>R+jGrl}qAyDdP4odONE<3ToNyNQfR=2uCdDZ_sBdj!D5bG9SqW59@hgUghw0fjYFZ=1_N(kaP?n= z&^5%CG&T#fn=!^{zi&uDyOypvcTaqQtoPLncKj_~0N z2)EYa$9xp%foaxArRlU=0QQ9!{g`U+M2(-C-pATSHKJ&RfY8v{3gfYeDI^=qjT;j5 z52PBNC&$^Uwea>vS9KDhEUgK^24xQcSfLid^Pp)K77_SIJ}5i{-2NXsA%`j11fWwy zn*h|xV0RJ$L{TvT*dv)E06Q=S0&o%u+ww>w0LW?t0RScmz@!xfRaCtEOAq)jJyL${ zF?G}fz_<5czcGLVkF%l>KBY4t{))(GXxaxvz~=ATMQS@l~T-6zKgPCAU@l)(n+#-RWx#> ziB97}Za@S8t*hPBA-)xH;MIm-1T@{n0$idJ%sp>Rg{hH@Jm=5XhH^h@1Fo)Y71~b9 z%U8B3;_LS))!VAx-Tbt0Lg~wuX%pS%X4&yXKug13U%r+04xP5$&6?i!3jXpb$IoIN zMGwyA)oL$NHdYjc3n05LlgC{cSSyU^kgX*En?2D**5r29dZBy(h6qgoXaIaf_6YSa zn*w~BeD-;Lb!&Q6O`rLxrR{N{&Z!k!7^=hTZ!>z9SgwR|SL-QisEKD)LYt>nF;rw# zcU;WMLiUBd9kM9PrU%}x`3T(Ia>XX`V`DGUW$=tI|!zJCGHcNdy zZ+F=wNv{##bJvT_8GY>nY2wgt3ReVifN)4aK=gfm`+7A}a&}_s;!R&GwNGDCZYNbE zo?h?tz>quG<=e4d^azT9tn*8aBbb4YWtCqtt1B5IF9|8k7+wttG#_%&{_NtqAhWmX z9Be&?NxRUP;_2ymrX$U+P?DN3?+4Ndsd)_T7K2I-;3ieaxNr*9OHtZ zP*!R8Mys(L(~QLDxGsKj?(;Vmp}dcf$Bnq(U@q0VHlJ@WGSBSPqFb=HFsuwrqzj{M zifk6W>D=!9J$W_!`DQKa^p_+`ZfiZNzug$9O6#q}4;orhB)Ahq49VjslONU;LlP$v zZV1@ll~D{#v_6lV?fKAg3=ax=-8NjI zclTEx8lruZ07RbOKJ;w?pX5ZKEZ1SsyCA?$v3mqEn+II<2|M#9$6rvD2u+$g>)eL17bF;LPU2l`8Z{yP^E?f%;f`S(Te zZ(j+yO#l`>^%Dw9>SB6b)3iUcVX zsiFdbr8b@CgG@EZ2{$L((Aqx>7P*Z zKuPiPE&(V7H)1PZ5=a{w@;o2_IMmn-0bm9Ye{4nBT92(00DA&}ia!7?VP6k+7LUUd z0FfQg*yd%UIu6SY@g}RF5i|siVA{UpJ{ZPdSng5Dd=pB(dN+bA?)k8piY$ePXtD??F$T z^%55WP(2PI3s(RbU^7a|_KYwN571(b)zQ;$iw%e5Hm1tnpWu2QZRji3(HgE<02=wB z_`nTZ?o$We_le{@v6>ZU$S#tF8nK$+e}iHMIzsAv=$y4_d(Sw_sYN7k!N1e$22o(3 zkKuWMCgO21(^3P@C_+YUNs}>|twG&LJSsG24)pchLUQW;DLsPE6Z?U8RE7Y|Zlac# z3Bc|DRc8$QR}j00Cj0vYpdZ|n|Eo^O&e^`Aj_{e2hi`bEeuf>CgqRt?TB|7@wZkcV zq;K;P)ua;u_G_q0uZ4AOn2_48hz9zQPaoO#a2wAhChn_R`G+B>|pP&K?E z<)(;P3WmebP;3IeRvt5lP*$tL{#4VsAYbX11-#N+< zN?FY|(#2sXkJ7%TuJT#-UdTfMoR+kqW+jenIaBk3-&ufzp}Z`VU1<(02^lu&7(W!b z8lqKMQW*Tz__;~pwD1;x(sN-3XX0ZY&B55CYzym$dWXACFPcR1-AOY0Y#Gy7nn-Mu zJboDr4{q9e+{({(&9Z)YvL`=(G4o8mx>8C7y?vIE~<18%PYObxnn2Q z(_1In_}kS6UfoQ&)bV(vf@|=}1Hp#lK-O2juXU?6`71_W*dfC4~Fz`F>* zx04p2vp$EX15ovdOwfY!v=RVF&jB9*5>hBt&`_s-| zjg@DDyYe&`0?_Wxl2=bNZHJ?!&-5HfyStzIvN&@%{Mt;M$=DeYH#0R#2Y3{6o3Za= zC_Ha7uY@fnP{%vF=d@Tjgwcr>*9J{l4Cz>w%CTqmp@oFwC!X^dCTX^*v@bA88`X&# zM9Mo@IDB-Nc5b{PmIx#+u`w^rvt)lMkvLPdTiVJU{GBREV;SH22k|+U5mXJjxv`k#s3wff(}HX#gX#U z?vOt(ly{8|qN)F-U!!Yzlcy{;M26jrikrfE*;}DB5koFkzqC6Bt;8sf$sKKJ3GtB#a8qmI^D}9^1T&0{95pP+08Jok&eHxPW_;b{2qC z7K?wl2 zB>>sJ5&LVsz=OB=lqJM+s}5ufyXOhg=U5>m?4S1}IxIkSR5u;&+5n0Jh}mC;w1clN zgM8D&TWFe6n%(VRM#8}k_J>hpaTw^LKmNfl6V(v_#clZZOb)Pb3VP|k0Qt*H90&k)(RRu~q_wF~LkwdP}7`aW&{FDKuoNqO3Js8`{Tsk#BGO5P!4^+fR z;@dN7mmeiNgPY4}Xvb&GBlQ7`t~ZlL+D@FY=?ulmu;=YPW#^qYFeGtfA9_x!c5Sj+ zgsUXDkqJ(;5c4PvW2QanfG&%P24qO)ybaN!@q70HfprE(d70BsIl@)0$aRtgjj4vu zQ@$;*S(b#-7RNC}l!aQ7sI`+beebvh1gqUg2(Dk*Q_Sd)@|?Z=zKQz;auBVq8!b0} z56x2*uY#=z{yMAK`yx)z-Yjc`YJ8fA=nk5TgLQlz$=V-uZVZad)K1-%Y|SCcF$|IQ zZ>$g`B_np{Rm2CP&sFhSPOv$uTXgx2;c%CP&OFb|S3*{*b5K1~>gm*h-2%%17(seO zJbhIt?Bm@VoV`4uhy4*+kne;kf$X|YdB5Od{&cZ`yWr~UqP*(lB72xji!z5LYz;$-a>SuJUcMp#ez|FQ zX)qQ%EIZhnobi%kgIAmyM?)vteB2;?HcQk2smX2A%d(gxhB{YgFBQUhO0ro-sDxFW2xj z&7*7A$MyI+A5;0*x@yzPgwI~GSuijXFw!IZI@_61e^``;wG*lUojg=&RqYnc2p$+f zZuNENa(Q=4F6~&z7Z9!1!DJj%_@I3`KS^3X=;w#xHrt7(@Xvg+2U@(HwS`u3Ju-J6sl`vcKSzOfb6zLpmE%974Le{t7E{Z1tC z!4=%!*Yj`RF0Hb&=0=huhO=T$%W^DCJ4o!H>TSUw zM}hZOZ}GP)*zKpZ$>;DA!T3*0^HM!;9cuba%X&eW_(@e8_AD}O^XIwwBFVpcXU3)DY)W$%;q0hK{LQOtFIOBrM*i7a!2@+ zh9bKYh-n1K742x*VP_wMZ0rv!jEJ>gRu3x_nL4Jct0?U7GA-`X{go0}R zO)r0yG>}PCE3>8$*PO|8x|MONuPA8E9~EYQ;!Bmmq$a%lUK*!6wHbQ+jH;~jhf zwzT}MC2f88XAAsZ3?9XM5c4Cew$Ke0jSzrn6qr!^E2tFPcn|Q}zfS%?O(F6>!h+w6 z$D=HNn;hIl3%|{7vU~WeO#Y*#|BrJ(*cwy&Mb(Mp<4L%$hM`l)>hR1!lHMJmJY2Db zKUcK>tMOGNxu=97PMx2_L%I3t0P&%dGw5Q|du`x8c=8ore~NwJFq0rNFP<5N%L7ck zP=;77u4|QjpQGmKt>52Jz&<-JeBIB#eInY)XBu@3&?{S=S%|{Hiz28~f>|mug$7}jK zaXJt#m@LR;2^jBmT#vu(w6Sny^z)>k`n*QU6yrGPsl!w=<{1)GBOEWgY7IO8pha!)mnr#dHt^HX|* zdNNfXyL|{IS%U!yUr-t5p_V~naFq_Yw~hC{1qPDa;O685+LjO2N(WHUeNK$6CG zXFzuyHAVn}Fi>gi`lo)7@Wv7VS|q6>YWCS%a6lBE6HPS=?hyf#eX#LB8DRP+vsKi9 zNThy4@&H6){~MBhycg*G|B7V$VD)!MmUpLqhh%KM@pnkDvthp>8AElj{08LTn~d0# zfx)A6t$hV&_mr}f*KVAO0JxxedQW8*R~R_62-;CnUr1)RB07H&uW%H3qXo-GL1Iw@ z$j&v<%pM{)En_%Q)pa2%et=T`HB~aJ%V;db7f%anaa1R169FJa9p2epdxqW8a;^OmQ&B0y-pG%wr9=wh~CQ%+hbMSl3y7P7Lhh z;&xG}k<%d=+fhBR2I)2y_yH3E*m{3NA+Ba00(PhsO9C+T?Z_^n8q+o)e_Pd`mkn}~ ze;lHzKVQK(-Dv0*s-C;7Us|0z>VtL8S^HPT5^SF`f%n@Tpk&)uW<$P z3unchs*+ySNSe~Wr*o1Q!R15a1I&Z|Bt=})tuOAHt;gV+e%}|I8`rA(9~z8}phQa7GdR|rV^XF4~50_tYQ#;8{2Lm%R zt7%Ucmu8ESYGaz59m&cQxnALx!^PD`4P={0(Q*$=crRAC=*1U_tVOGe&4!|V!8)L_ zT>qKT0OTx9z{a1pSbWB0 zVI#707pI>Nh7WuebE?3zOED;8#X65h7Q=(D) zqBldYatyfu&EvDF-oQ6SR@}(Y9D~m2;}c|gR06D5FP&i3F4SoLT=%4{cY|M4teKRg z`sFKoD%UxWGX3`{Rb^L=+Z5~yH4-8-Qic_^g{f;dK!x}qL_XA7;{47`Rn&|WI&9I_hYd~S~ z_pQsmm1-u#Rg6=YBJ>I)J#1q*c zoo;9=5OTj==;iG8J5d=Ue>Amo2P1|$rlIeek*)NM;M;pC8_nJIhHm#&6?eTyWiE(6 zjt2SqR};AEt5fS zGI_&wymFPCQq1d;;0OM9-Yo?MOX&q_jNInt?iiW`M?rVuov7FKi!amYI9r8!=U(0x zHme)Pectz=t({^cmDhn4%+DYS?uiAGAErtL%5r#L{Cjtu)&{XUb>yyF)U57x66rwA z{g^^;yIr^*t`~cj`&e^be0Dh}*DTcAL#4H~{0?VsdpDoBhgO#FAwVbZUx_wMDn zpKtr(&m_!pKSKZ)6qN*6+Nd$eK$AT%Fx;)dfe(WEaW%RL&t62$#u?aS(9&w3out{% zcjN&AjnQ0OIp%l#UYOI)A&FjR1n8VX)&g#rV_ICs@fUmSH*hRoW@TksIoZyLR4by{ z10Dkcu-;Cy5BgU}QA2_WXvt&{%P~K~hCi?L8ED_u{qehqBWC*#SDJs1*Y$ded7#oO zfeXAb$}|%YD9QO&ZXgxbVeO!t7IFiFZQWP$Q^!sD$kAZ9Mt{y8Cn9w`@5zuMMqv{}9DVK?m4kS;A0H8ukYJZ)3#(0L zbXzSQKq)WYa7i}~$_-LcSX0oRrwZ)q5S>X$$}xY+q|Fhogdwdi3ALl`J7d;N47w`^ z%?IB=LjOlkO0eg-l#H{MPfzKY$AE+V9N_FO$QM$Y?2cof0q|ct{$KqUF6+L~tXm^Y zYIVe*`t`^dwMglaOORG+h;?_Mp#$QVRtGJ`vvL8nJ1A2bjl_#yIGoE_YJY!9L|)(*i7TLteG2b~Hmk z_*`h+tX4Nt<9Oy*$LIHlV>)S5l`xd4tnXHjrKa16^cj@x^S`N_)`^nQ-M&!P7L)o~ zY~DwQgh|rzgjRl1%jw8xcT;UI2T-AG!qCbcj8Ct)K$`b-pbKtThB~R3+0kKfZdw-q z*!!9>U!UyubA&?B15MCgqU!dLN!t{;kwp2a997~uG2f48x%1dh`7JfJeLy1{ecUmW z0@+^gRil`FgPvuXNGXZmiSK}kMNAM0`cae1%zI;~Ba}<9#_XeP7be}_M>tvPU-&G| zR>6JTs{t_DX8~(4X7Lw(aBC03!14^RUgI=s^*x~2cvQOK4TjR#BeKxUahCv8f#qf< z2M%bO!ZNVvV-z(la>URL;P9wr#2NzuV8K8aK#mcyowiH)gHzm+I;!gEI0zsBjo*O( zt0yB9$@JA^2??mFycf*lL>>ZzBG%i{LN?aZIAf03{EyCG*)xH4B<=i9lK_0*$32i5 z)y%EXXXM&%AA!lhUtvgZ*m(H7us`#x{&Eh^(0WEYolOZtc5X1A^Ie!d@4iBju@Vq( zW&ddA5-%(~)C%g;UwiF#Rg3M^%W^BYdG4uVDlw3kRN%l z0E<_s&M{XoFRl9{as8%5WRGPDwL&3sly*K92ZqxZA9Ua$%0IH!?|QM{94o-AHXoQ4 zQ^;=Gds#C6{2a@E1e4(hYg->X%%hDi!ENeOOhJ^7&~Sx~rf#$xoYdHObZDf-JzpvB zCC)oW*Q}C0dudE**!m6g9P=RGIe;6j4i-p-Kj4F2K=Ta@w&u9NFIlbb)$uC{y=jpW*6QHj@e85nseHBJ=NysqinMOIQ11n^*w^jCdN8y$XK0N>_&^LGjVDDvOwi- zlGl*b)I%qUXcE9Jm8q=CU*%B=6rZGcubgQ=zv+x>!T3WuNZGgm<)DxPQ;t$LlThB9 zC9c$QIikv8Gd~yP5K0c%nEy%4QvhpeVSS~Zo<0hmiA8g#?Uvb@`gVpKV;Q9y%~=;^ zxg)len&==iU`lp6dii#b!_v|W1Ijw}%)59a>1mF#B=N;>RcNRW9E{AWlqL?fb+Nt7 zJqxINy^=HUJW_COUe@HM>1qz}UN;Q6g8anyJQ0JMs*1oteI2fV^n|Aaat>E94(Bz^ zx7hfgnrhu5?jm$H22%Q6qe=9o&lb6zGITnJn|fCxjo2R?1ANi~-CBxGsI7f0K4#o} zv&i{q*zN9X2p29G=mE0~pcf5|+etoEMe~X~-0W#pRy5Md>>@v@6Y6nJ%P}0&A`&iT z+yJcVXTHo1a^UWocsd=Tt0-W({zU#->(a+?)ytmKI)+&-M4APwuPq;2)k`$B<}U?UOdp zjHSxvm`%q}nykctyq}UZ=r*^3e&>JlL{+h-jPHc)I;VdmQ&AhBbeIVS?FjN+FfI1$ z5y|rdl{;Z(5xRUqM6YvA0XeW@0Sw+#wfD%ehg&}g=70AX!tycy)AbS_j?m*q>&R26 zVtd5w1VRo#{Cbc$W~_;@|N9~$yFDL-)A1j$vy(J8XTKM_yU2oQxA?_ri$HL%Xfz&n*G&wA9v2#xjx4_~9 z((lWAcfjI{GO+mK{XYIVYRn!qIu0PQ^b-F6y8h1+AU2RTh>KfmpF9zD+T%m16Di2N z8>>^?9N~WYm6nC{I$oF>i6Q;Pzksmko%_V1CUi#4qOvM@Kx3|oXRFaUDy<#OtH{>- zhzoxrb_$Eb1kay_}WmdejQIM!B=Y^I+yIxK8%-y6y>g-TJD%RcniATo^K@~)L?ZXy98L$ zNo#{zJp|KU1Gm5eCKU>xGkSSDtiu&~Y~Q3B@X8Jmnu*a_Rjw$styaM=Nf&(ag5SM9 zBo?zS-2LXEjw@I&><%XvtWr%^&B56^e=6QAQjSVmb_;gKHdpSKYTli z7FW3Aimgw4zc-}*<6VZ5m)Q78A?s?%R+B?EA;9=(KJS;<92+OEzpWbkF*9}n|b}Yt!W>B*BM8OmPeKBcakb*N+(U8hY#}NHId9ZUF@Ic>y zjCv-0h-pj{6IZ!>AHR7qSKRqUCZzEoyzYpJ8O*$L`j4w3G?|gJvQ@N@fEz4=2 zADYeKKhFo1+_7+t$+bc4&=P>YqmohZk-+3<6M#qXLmQAjW-{5MnEy+y#3%~G&w;Yb zo8%LBo&>9}<;(jwT}09^7h5e`O5}a{@+OQiT%|1D@i`_Mvo{_MR(I!u1*@MxRbg-q zj1402VCB(D=-WdQcfu-p7qboy#J(G%VJ_jaH)GS-yz>ZnLp6mlek?X{Cp1d z%1@T=hnw;9=~U+e-*O+exN%%H2SepN5la^IKL6z_=Euqmto)DAFg9Qk%m>Ooe9{(u4D_TI!f@zlnUeFdErh)2M5lrMv92FWb?8A3|Bx}fzA~MSXkV6AAGCN0A z!uyI%`1?nb9Yu2gZ?3;6!()oAT=Y^Ei$M$rd{F4^{^|E)j%IumK5a4k^{%0`?Zf^( zaU4?=OgYfw{D*O}qS6UcaZTJlI>dQ&cWocj=IC9{X`*oM_0fUqOX6%iM3!kfnnw5b zIsr3eJU1VyR6Xm1vFt2B-Ihu#ci>}JdbrwP3Pq?`(^dIS;)iFH%R2Ax=&6d}PHT&i zvRFS;V%n%v&>{UCr=Q{7X?W?BnP6^#DO?xHnwKs_<3IRR$Sq_xrq3kyaC!NmBt)hD zCX4RQPh{|fR;G81wVjJ<7NF62iKkqNndH)^u*{!AB-Wkm zT`(CviH)e<+{6GM9|@}|{}AG+FDT+ZvYIX;Z}pNM!AceKO-TrS!~W?Qt5I%TCF@i- zT5MBFY^SJRzgeU1T&_YP^(kEIwP?AMX}5svN$VN^+M%%Ct5u%R>sB9gKFVl|sSIy6 z$}|A(9!?*J0`?d?-{?n5n&#A>FmGXhJpS+kTBOC=zEE{=ayM@zX___V@$~*zv^bYC zs6x`NMOY0oD>gJy28J-Qy-)kx2}6tzvVZ^JK_g$B-+!6uh5S=ShYAe!Q#0+N`WXgS z^+1{Fh>J)X(MI-ZvR<-&KC$hGsj)x^oo}9M9JUIMfct(2-`)|!1Wx$zncqL##4pha Y-kK15pfZeD?D5(M`ynxK8HB3(0@bJ9qT{GxLAnKi@OoGZP+io|Apf-fOS3*Sp^J?nCM)eFYfLY3XVK z5b#e3;06E^5fHebseV@Q+HEU4XO}xJw)VH(1$CXRP6!&voRF3QNQ1y5fRdb?f}EU^ zf`S4@NeQE7q@kvwqGq9|r)A_|<>X{%WoPH&6%pX#In2Y(E+`>*_^7D3xHu=jr1Wty zX%R7TQ3xdrMomS{Ohdyg%FWI#`rrPLK0;ms0E7ba{R8~|fsjGTDJWr7)HJjZ0Q#d1 z{QlAUQzIil27yA!$e|SAEWmF3z&3!KiGo>3MxB!7vIXq08>?(UR2r4=nZi1@E1y?H z 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 Cj)p-1 diff --git a/doc/salome/gui/GEOM/image222.jpg b/doc/salome/gui/GEOM/image222.jpg deleted file mode 100755 index 570bafe22fe9fc5c644ed1c63ea0e843308bc27c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13381 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 L;XW*i-uu4**&A+g diff --git a/doc/salome/gui/GEOM/image223.jpg b/doc/salome/gui/GEOM/image223.jpg deleted file mode 100755 index f0ed47fb859c6f5e1b377a13ed7dc56f4f5075d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12992 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 MD+|yi1!DjI0#@)GEC2ui diff --git a/doc/salome/gui/GEOM/image227.jpg b/doc/salome/gui/GEOM/image227.jpg deleted file mode 100755 index 6764a27ca3e1a31dbf2f25ec41b2c0c59beb7b57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14432 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 KHd~RDp8o^a%ek%q diff --git a/doc/salome/gui/GEOM/image229.jpg b/doc/salome/gui/GEOM/image229.jpg deleted file mode 100755 index 3067b984f3382f2a8b5c96c11e3bf3f64350fd9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12042 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 diff --git a/doc/salome/gui/GEOM/image23.jpg b/doc/salome/gui/GEOM/image23.jpg deleted file mode 100755 index ad8c856f9c0c30abac1ec95c9e2c1eeb4a93bbc6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8722 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 AM8&R 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 F{|D(y04e|g diff --git a/doc/salome/gui/GEOM/image238.jpg b/doc/salome/gui/GEOM/image238.jpg deleted file mode 100755 index 70be93046ae2d828138f2160dfb685d303a338c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14133 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 N%?T#j2^d=2zXAMYi4*_; diff --git a/doc/salome/gui/GEOM/image239.jpg b/doc/salome/gui/GEOM/image239.jpg deleted file mode 100755 index 3d6ca91606038fd69af69a3de8301f32cba3a902..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16510 zcmeHtXINBQ((Y~=Xrf3GkSHJ^5+rB35lNyFMS_3`2uPBggl zP67ZP2e4mKQM$mPZ*6Jo1jktpP9EMfXU;IP37!++JIBp; zh8IE%gOQSu(vXqS@SZ$zlK0o(J`@c@d;0#CBA%>mY$KB_4>`b!lL4m(z5sEHMMp14UJ9BE!{o6 zef19S=jIm{*Ecq|ws&^-_7A8*l?ez5p@gt+Dnkgo!2eKcLZVY5#577e zFbfx2PSJZLbmya96jYOPiRrG<-*oLFJHahJaeDom*58%>YdQ!1uay2n=RZ`&e*~yW zfCFF?3IVmJhCrzy_#uD-3IV@BsR1~!Ebdd(!9O9PpgK7kJtTaF=9V@rUQ{32+;Mv; zI$=<)-ohqiCOS_i`?RC+e97j9OpbwS{G^nZjU|Q8Eg9Y!`XW#HOP7)|o_lo#s9mO? zjp51ks+yoarFGU#sJ8kOF}$Im=xv0j#GOw?U;E;6ia(h5kQc9EXPAaY!?y?p(h)?F zv?zbE^K<9l{d?Z zTwY>;pZK}@7e+%SB9FISjHttsTvpUR3<^oh>Q64G3kqj%zLyR;U-dr4 z_lvoNbFJELV#BIx^d;dz)%i{Wtfj-=0f9Djb+6wuVSC>z%nO`)OOGIAiIuEr-mX~UI9<0nbZl7{r+q{1I zMcB=VW;OftxaYGU16 zRoZez1L`ExIHiWUqf;%dYA}|*(zj62-M_FYTKq8QM%9^H^IeX58#D;%X%Bc?U&BuC z=DJSi$@q+|o`X@G!z+E)Ab<|gh9HQ3cq0mf7B`Z9TI_b& z1Hy|gOYG+TsijfupBc?oSIwu{*8_378Y@)ZKZKHx9xY+-zsVOWlL$c~KzJdk}P`}5>~-zl}y zNaPI*KTH)e5?MnIYLqbZZC(Dqu8VyGm&v}>k+<~I0J15ZdG8eNna7ds&IZ-bJN{qa z2Agih)Eu@iN=NsCzT&oVN_c=oAaxV_3OBg5^Rt@dyx?XE=N({r{=xkpFpGHL$}jsy zwI84tabPp>%kD=aTQ`z?8-M!w>Y99(k|}~9^Zv}#`jT2nWWREdai(w;GRg)=opTA< z=80^_z^n9D%&nY{Vzh7pT6loqT%P+g2d9*g#l(k$5!;d<^SI>M8`9fL-7>-n;u!f< zD!4FNa&^%v!IDv*dJ#sCmWcrC;k``F@)9W#jXO8USk(L9y~*d|2-GJKSwPU*`K|=N zBQ1&vi&T{W%Eev~Y$8vJG~ zv2_!azg~T=faNhDnkVye))|zuzTY{XgL2njzB_-vE z2FH#+VY4_CeG>1gzcSort<=m&9&QWmwkis|HOkpya`gPs@qmjTwW09B6=Ve*M|>F% z)OSLTlI@QM@xYp>GfoIawY+5hwF3{_i$Sit14tWVJm87MQar~4Ptedq#eu^@JTPuG zhBXD)2m3Ljsdxa&g9j$(0bEBhZW(klOj3A&0Rh|b$lJBS10S0)d*uMUFy}{ksXxg( z{1@_M|Ao9y|4VuQYJGoM9&ySW!4IajyU|pMssZ6GGB>ple9+|nNzXnWPD+iC);5|6 z#rb(YD7qIp^+~IC|1nS~|C&HUAe8?2iJN{91ZA+st?EP85%t#h-0{RJ7K@~8TOhQl z>A!oWTxH9JQEK=VUs)vW(_MECuSTXF#n0J6GFL>S2Tj&x72;kn?46~UV8vCmBHZbqOzPA~(hP#P6jVU>_uFQA(Y>xW;Nd`^g&Q7+#M&DPd`S$bJ zn5n6EI8t%)>?1Lj%bP5Gjh6}YC|=&+ogxoG#ZTd!*J6Wgx+S2XJFT#z2_X_vws5f{hWYaoy;9s{$ zfC7MHsH;rmKVgA?q6MfE#2oZ<5$1>X!niPBVAf;U-QU1dGG3HDVK(0XZGcX%Hq2oC z?PHw={T(z(`14E~Ud2%a6>~?jzNnRywL0L7> z$FxlKaeb*=>K&j-vQvc|zRKHQK(Gofzf-d3s?%48wHR7Kzl!n^u%2g5?-7p6G#dFh zL8wh9GlU#+=!B)(c@C|HINm*UJg4NwlR#Ww@~A~*a2(DPEiE%EaiVtcnfjO?~ zUJ^H*BEw@9C%9rL_xcW9f$c|tz-`xGEgjH)-zPEZ#O$Zx=rm=UGCG5NC%O`QeLPaV z8iG(vo`;$>%$X_DuPx@(HxB2rNw4yzj0xShKXLkwNFdP6mh9F|^?_O?^RpQW! z=KlFL=JV9|orr=NI06~uLv1qnAc>wiQw06G*AqOV9L)^F;zyWR<5hS|Iw9LkbK!hY zlj@-WAHH`Ix%U`=PcW`)9YNnB*TlbHM%IW-rXIiy!9xzZf=NEeuQ&WM zUTaTPUJrB=OYB%mI93G^#&WTp0sW9i1dccr$BCl)AsULKj-bN>owA_ggo6Hz8bSJ}dx-u+^ZZ#B?3V?fN^Cgz zxbOQwM@2GVS=X6y>H{nX&;?chDMYPs_Sq8z$75AnV9cBSOJEO8^{SFsUo!nM7G zdWM2Qc}*5(bjfC14kK=T)_bh1q4Pz-5g%mD`&C_-M`pG7@w(jXat%&vT6T#j)KbyP zRSsk^=$~vJBB!BQcwnFq1Qt9f2|=E|&<_Irr#CZ7dvcu&7;uASm+ze-emsS<0DjSDY5-JEFGH{)<&^F!a!RH~V;B{51?d@nQGWca)UUr{S>>hf2i@J&K; z!HO0rfzquuKee;TwLOH;s?kMQ0_k}KTaXRY03coK`uq6%|==>oJp9Tbh(_pq<^c#c%KSJvEYH{byL$*Mi zz5p8b5*~20#sghB2$nDJeJ%QUwN@;h!!Q+xJVzM5RdDwO{|pfL2*{UIKDf3HQ?`uGwquk#oH2Hb9JG#RH^o$2Pyh zWx<&xp5y!*=MXR~Pa(3S3_Jhr6!bgq@3JQY>}!ebctCM#6HWN{ABF$rjZhq|5oT^A zz#T~aWAL~0@TVF7ej~ERUJ82{@d-S>mv4dTy~}wjQb9wvq zfYoPYW8P750v=GU0^G_+TN~e8dbzW~A&HF|{;IPP9*mMTnxL)gq79u&Z9tuLc*Knd zY!{(8A}Ty^5>0qWb#%dl>Tr=ACxL){MlNz?A;+}AXZ8kAti=O5tjf595Ihj34cTEo zc(};E+Y86uMp5PCfnGK6whu4Bqooh{KL9Q))C>~b@}Pb|5mYop$L5IFKYFZ?E0TKg%%Ge{lz`{Q5Dh~ z_XI5rqo(hW({x7~J-XS5hGNnI*Ms4*J|4)nwxXHfREvLCH%iw2S^Zlo5mo>Da@Uv? zYo+OcR9o+!_`H z>|#_i(_sxt+Lq ztBi)p^bb39y+Wy+ihvlb(xIFH`{!L6GvcQjgcm+^(elZuv&2;1a2bmlfh1-|%oT?3 zRi{l4KM8s?^OPv+MZ+>ml$dH^uameTZt{$9vC-Dj6A?QBjrYpx8j%#%v5r8lmUaMI zn>Z?Eo=tqPwPfJ2pmBPcH(z;uG<*a9ead4Q3w84s*( z!LhC=sv=WlrzrC92(&Sl|L4Y%3eMV1ed#PR7r8EWX8umV0#_E-8v2-}iJEL$9nV`e z5c;xhSSZeef#ujM@Uv?Gdz&`Vlc${T!wq@DtR5q-b_FX#d#Mrhv)#+QiA*zv!5TLh z9}PnIM5$n<9PA&pi7#UU-J7=MS`Qy~&*Vl$O?g|AU41I@iOy;I*cD%G;y`ad^~b_z z#9OaMP*hyFNX!^myUszoMF%W}!7f%z`pXWPCpB-XQnmS}zW&$_$X;f?9A{*eUwUV_ zl{l1T^$_%HNMk_I-Cwq4BG>UPI@r@R;{t*)T)HC@x`8GK^KoMThEiu|kJE3e{oDi) zOhh?Jg@hfKV)X)TA(-LUpe>%#p-B|?FH6uJweYNo$1Ua!HL2f@RUJP`f3>Aao^)gjA+)RR@9cX~iZNK$MCDs9Me~8Q^|N`i+bTN^BlEc=ftQFx z8LN4nU~Oq`3k!&2NQU{SktYTp>MF36BuPPzGcwX2TL~b%g!d6AibiiYUJEyJNcZ7- z^tkY8vVNqxv;g3ww2%n2^~meE_+;`FyIB*Zgs(Hjd%fpDBrEaJLb>v9+Cnz><`5+h zG$ocFijKc7NpN)_Gk0BS85d1KjL)S50x2?`oDVMT<}$ct5EZ50Ly+ICa6>V&Ofkx! zDa+C|UTRq0Xc`yIpI4f>CFXbx>}#*M8ft$^!waJ6f-uS+!HUzcNd91p{f&iaBPI_ z<;&arS_u}}!+PwsU22k18TI@EQ6GxlG}WHES2az&per_roM7z4%#&w=$ebS;1OkCj zTk|a<@JX%F!)w0bY;oZO0ubx$k)=+6(1GhD!x6+COwNh4*1kdHFmfEK9El^y-1`op z8-hUdH3c(kh#r>jJIX!}qIRKgx%+Dz9RQ{QFOZ!KS|IAy#{*>F(uDt(aA@4RU|den zcyRa7S?}`YM+CWdqvU9QaV2u9aZab}vy{Jlprtn;gbu~^e8Y)TWubW>hYM-gq>?3iyGOX2#Xl{*$M&h*yaP1pYo7xqQKvqviAza!wNftc ztQ9;R;in(vefls+iDUex;>ZCtf_X>sj0Lj_U9`9nGxetnH~1jehC^{YD1N(`w^Avm ziE3gbav=&x&tAxr%mrPOz3^4-@@ToIsk`wTVt3aIc)3{Dq+$8v9unDE`*hU&vLo|~ zpD|_h$Ln_@g7SjTa>nO(>4=6MqZ6HCbT(KA4{|aA?`DRk~M#v73 znYx<_+T)>dE6y+Ca2gMQmi(U*0cqNMV>|bOiq=V28jb>)QP6z<#>U+SW{Za}#9U4O zlnh>KA`o8_(X-1LC`rDoo&COBe+}py!AbuBbB^l zE@G=W8g&*A)No+7G_Ak`rK$CewBNhHfP3VSx<_jFjnO9>%;wKn8WJ z!tgZ(L|R7ooDbt19ppAha(-t8#PC2-o{$9db4od7OmAB81)s#RRRMOk|)dWo3QA0o$+A8|)CzLi!0#sR606d=$uGI}Xm&4zUrKSTOCnaA> zB=d~vYWn27N-8s)gIJlq)&B}4u>_v;nMARJzU}u!q8M;9URL)oYJPIba${5eDY9Jl zF)+XVJFCsVS2F3RMR~htsI60r^=%l-8yQuyJF5PC(EEy_{g2e*HRuJzm!9T!sdmWD zo+iwf9=EiE9bs+*i$%ipX15b-jkIj&v}0U3qfQGnHpi-JFfx8}Lok+yL^$PaOTJg{ z99E+2JmhRXtg(#aqU307k>LehzrWffYk#uE++|B=iW;Wbqpdv+LTi9L6x--MRl)}? z(~E;;(n0i8Fl9Ys^}0s4X^g%|)Rzx)>u^W7@J4zzKnY~zQ=S4FvYoKEpPAzeN~PXB zalff|F5+v*$I%FfS(Jb_fi?k{*|LC42fe`>)uXFpt;*@wgB@&aH=ZYH!#Wf>3fDgr zPBFu2TGN-}8A>j`c65Y2bfn=+fbt)IF;Ov>H_iv`l$U2il799LiLdwima3+4I`_ zxEm46H4+i+ZH^o%7g}s`S6;Es6U=7&&eiRlFffi$yOVBJR%)Ze7&6N$65Zx&*#p<6 z0H4WjE{-kA!^b(Zmm+YZU)6vbZJ>DLW6MNfgjOO-?x~fR&wa)wwVGvz$a9LjU>*kM z&w?<$s-pEUT&lIpj%4p_VX0r$;|6-_>&+h>LZk1gDlH*c^%VvCB;b_Z7TuF_a_zUK zl@xkyNgfhLmGYOUwa<*(aLukF7>$v2&c{s~>6e<1n;1Ea`x#EKFMM#%VOCGukOp#( zNy~KHAUF03y{qi;(rhI8{D~ATs@y_aau3eFPa8KIT{cisR@0Jhoq(@U+?`!t)8x7| zrqlOWA2Lp7@u0-8PEnY^?X7q%e#ssus79%rTKu3is|$i%#Jkq8e-&$yxmX@rS}v5H zp&HoV0;e~u$tSqat-6$&bR%gS#wvnfOP{dgPN?Y@Z9g7t$6MjUNx|G|>2m69RCRSz z)A%Gx0F2&$Fcos> z+)gAjO5@vTB16uwQf~FPVolmqyu6#@K(&nnw+~UJ(pZS&eZg&od8nN3TFLV_Ds(gr zH%mj4s*h1KE4Yea3lJx#!ifN(sI+-<#TSzAEskXfWro|nOdP#_-az3Q;Vwt&$4;0f z!;`Jgmg+A{pA8_ze` zr@m1dp76~U=O$zrpgpiXDreqVEXb*)NQWto9!$GRi1y%DXIe=Frj2{9`W06=A2)i| z<(ZAVnIdO{Qdyj0*Y?E}X>_e1)in=oYzDd5%qAMN< z=7aj0fS&HUGPme_WTh^r>U{saGQZ6Yt}a&>5S8BPtrQhZ4 zA*36{DWynrC^4G1Ly3vg@_wPtmZSc$s~ITD;L|5g&_04W>^FyimbKTLM8iP64^{ z7IPpm4^13!qERsLkn$9XDxHa^1PRLCPMF#sXbU*Hh#S86?meb5rlq7LEIn=~rdZ!9 z>6jL@7|;)?Gd8X73ro9pd((XQ`EzTsvC2@(*-z&b*Om|`^&#fkn9}a$jH+^^5D9}@ zKH<1O5nu?`>_y!V1=$Yu`!m*wtB{#WglkGp`KFA$@lRX;z}1^~O&s!BWi4ARkvm?& z+0@E|B6DRf($^CWhTxj?Zp^$`E{KbLeuJvI3+7u)1IRV7`tS`Wzjn_%pjaB)WBUe3 z_VmlI9T9u1VyQq7!=xy<=VtL@PtT~&u{g}3!_rcs&SLeEZZq?_4pvbxsd;mXm|sR_t~k0_%z-KOy+iBC3)$)SwY}0bllzU6Z|=?Q@Ct&n%@#1wLt3ez?BD zv+UMPBF!EI@Wf1Bh8ri^I)t^#Q|M|*b{hufH>jE-I=CJKMdc4DUn?d_`7DsNc~9AK z9}7Tt5_%c8C&w+H(5sAUy>q_dZUUdiCt|E4>^{gJ>Rn!UipbWYI8jQ&kR+x&JKTIc zR@gK>mbkGPaL^_;OU+y;PbtmS$hG$>_ec))d@0O1UssW~Dc0!f2?o#HyF?TA3L+93 zSgq{zn4mN8ohbgp4_~F{WTxmK$Jd-8Fe5K9I#WN}L(PnKT|QH$DZDlU(Lx z-e*?6e!bQp`z*K>r^tS&^>CjnMb?VVKMb%}S<6&Q6#xEM?l2kNh7q!bqyskIsS_Vk zU+y^@^p5v!mn61)GU_tJj=wu~gX-JPHeyvMzA&#VK7Y|MMRj6Cu!gvzva~>$K4XSR zRPDQY=pb9ceogj`_C@@vdG_Lm-?eL6z*})$QyF)w)a{$BmV}K80 z3-+Ny*kU>REUR>Iq6CxspWJzos*_Mx3Ji}^ zR>x{K&xLyIRHLbk*2>k`gT%{T$e|-vNXczH=j-cU978_ghm5#t>0WU|FfpXim#1Fo zbBs4M{BrxOcfkiwSty%jfGq0+7Mr|)SO|MarSNOpYv(WPP6m7a&9 zWZhQ~Cr>s+_+%}ebZj%bq+`@_T8xR=XOW4((yj^aofPhkrWj?Y8A>C6WwJJ*i-@`$yJZ>=luT>exsSS-pX11Ut5{0lv?L{O`J$8ak1bl`63qykj^-MVC|#Y+tvzjV`=&xAA91wTrr@d;Lv z`pii;_JkKf7IC!UjCZ**l^upxUdAt+@*ghcD2qHZ;^PqNs==Fk88H5V#4$t3v^%X& z^zkUY)&js25KQte%mz#KrmV?c%s zjFjK{5o#=QK$4!hE_LrLSStWq7I3tb&N$Q;upCf*9Rqe0sJToz8Vr%%D(kLPp%Zyw z$97p%`wf^;TwD`DuykOB@{S=pddK$2@jyTNSVpTM?n{rO1YcY57k3_7&Xv%0zhyBhb`M&rRFKbVq4x zmku&C?^|wf?0(IjDd_3DB9(jmE%jOo4f^A|=ws(wCn=9AWvU7_gEo4z8|vibMl@&w zUt9r5WSA5i#UY(`ioDPDdruY0>i5^@RPJADFKXN@hZKb-#WpQecN7DTH5-y(D=UGc zD+6Uxgt>D%px0GwYNJ}dPX8&2&VgtJGn5wHmn)y8QbAKq-P=Gut)Mn zS>7!jW+nOSx1O;+CYk6lXc(!}zgH%`8NBj&X*kr92~DN4*7NMHaOTCPuA&^bQ(?F* z>s;%bVYu!&SXPsKN)aUB_muW;neE@+&i)9T!4ltW3G<<@1Jc2A1|$G(%45o9k>KFY zKazdJ_km}hP6vAT8>SJNvRIu{P@;qAE-81fTGt4ACn z_#xTGc5!DXzowP(AsvDQp+VkwLu2X->Xai?!~OG+b+%9~8^zhM^it}cjIRMj5W(E% z);E=ki-HMW&qN3kOt@Z=UWwM4v?Z{85zdOce*5|7LPy4Cg^nsf3%!tN{Gsru@N6Z+ zrs@)fXe(1qV}1yqs#5d54@SY( zg1PuNeomkpWR0_tW3b=oyh2TossWGNUG{J6A5FU$&bRbv4MadF^;rivH5BGUq+(uKyJ4RE7y&Vvik zpiiL#{{N-_^lnfU1+A>~aa#$$A1twfx)t8AqA~_s*(!Jw^q)066CYnWnjCe2eWzcQ zv!VskhuYFmqG^FL%W4+^pB{&MT&<}Q2mT-#2=Ya#gC)q#Pe?4~Z(otOz@F6(8IZA- zoWcX)AXWI>2Fw!YKu&Bp0wmAC4%Afa21r3eoxU?sgZ29WFe|lWY6&0yI z)sK?kUGoZlk)j?H*7dpG?I_*lGgv)EP=iU@>507kwfA78k8AwaZOoL|hq)&&&w=aK ze0Xx=aV;aJ+$%EtN}mDu)B@tTo!edcerJxtp3ni&5kyY|t z??NR=Fe);@_e4SC09%8;bd~?DL58OW+0rIP&FN;dLu|}tpQSoQ56&PL8l55>` z=8|#Mx(FoHnz3{hQ&B7!2frZdtDl*{B#WmyKa&#SeU}f-ybXZG-d`p=GiYZ<-s>bR zn8TT3_cm=Km)_%S#Au1w{mp}u0JtWSgka2E4QR*2U@g!TFzDG5CcW)BJ2}*{@`^^@ zM>g!^jNxk>T-%nQ1IuX!Ch)1`saU4#V7oRXW|EctQrD~e^6ts9lGK$o)wY2cb+STK zEk&Ix=?a2b|F@PFI>_@kCOJFl=!H%3z@bfT>MI3JO{RBWGc)OaV|;edTRIwPwNNC>i==Sx3VnX4R}0Zw&WZ-Z(;k&$N2K|*tvM_oozHF z*!24O0t+ar#z^0>sbiM zPhf_Q=ApssMY0b9_`BqlGK`8>>L2LVb;?S`x9m-e-Y>qVGaP9Peb}wY;vI-QKJ5KK zoci5$`CS7qV)dxOw9(=K^KxPm_!pK?ZCDxk2L-SUYF-6czD=JyX#6^4HcvMaptQmcle;Kr#rX31&thO4i-&{ADE@L1zaqA z@*sx4>3w6nkfzmm#6_SIN8OkBmHb@(8*YjP=@dk~gN+a&Qn;<9l450Q_%TqGF)tew z@^EF`PRxc&!^c(6v%6KS2*Co0nI%9jB?Dea`&~4JGi}GLi6Pa&!(rrnADXiK_t2US zK3*>NAj~pYQz+s=lYhJUm|Oj-r&V{J1Bd;S=gcvpb^5V4bRq*)FD6MURWBfzq!I%P zC+(jWpUKHtsVp{}ewV05e(u_6ad=0$($=C#s5S%^Bw@?jGpqT;Mc{am)>(D)7Tr(h z8`4F|f&s~yCY?xd<$Be|f&;-TbKzfAyrQ&EXq0Bh5i&H?4_)y&tlO2>hH36#e1XR9 zG33MTlAZftSBf|!-2$xqV|Mz@k4|nu+U;K;i)}h~6a&on_Ica>#AgzWsn{S1;|ET& z@p5qmkZ?>NS8C!wDX|1X&=iFeVT?)7Ry9_^&ScH+u>#9^AdKCq0v$>^=up7^3mmmS z1J3UYNCS0$_jClv8ey<{(cw3SJqaGQ7QlQ@Wy^ej)em$LKTNUv_bJGIJ>xR$bmdFh z8q^?~?XDXo3J_0jDhmX?Nv-TDd4)FnLC)S=7tF1%-l6k@JO;G>rwRY06PPBEe0Tzu z$5xSRcHnaadrZK?W)4qJqHb{qrVG2>E$HwNdl@EHH5N8o zsCmZ|oNwmQ79X%V366RVHWH8l@_U%MH^{N`C@Mwa{l(PXPBirQ+X#w}a>CQe>RmrR zxG~?=rqfk!ZKTdI9#uWBzKUQPTYEB(+57@xDdGh7Z!ImqtO(5Xe$f|#oM7le&K0lX zD22WU>ECA9{bw^U6b)0#X{ebPR7cKy(HK&5aBmgiWgA437EMxSC=vR++kh`+Yr~{+ zo3h`0q8PdzRr+YMH6qqS9MbphY;M1HZD%L+a!v_yYKZD^3j@|22L&;6{r~zi>5iuJ z{`P&`k?@{2!BPA$&i@7&g*3q$q<{2Z`jTp00{Un}_$r90g8<>bAo8!M1sinyA65Tx z9?~6?AC~dgH2-OVsaAhw8Fa;tW(xfD!KalKN75_;^mSdz?hW%o)C9a)n}7*niPKWL zOvNT13Gj3Aq}F%*W+EN24EH*%$N;O|0o#F7LbtR-?}?mZR$7X<)CoDg-Ccyf-bT>& z=G+|07v$TC4^}-Dd!(@bBw*6cUU4**SqzZ-dm1Ude|rCpHg4@`Obh&l+T64dadP%1 zo2o%uNTe(jLC7%Rykk0`C-n>yU8mH@& zAyX=Z^!9N!&#MB6ajQ-NeNtFIQg}am)zK>W6OH-kn0^n7wh zchUOuLp>VmqLi|&c0k~7OVMHGxTLPy={waU4rus$=I}9y0fqdb>fW%d18u-Lcb9tS zS;0;e`$6q4vSMoo4H3?5<&zRS?nK7^g}q_{{Dpvdsl-9J*UvRqv zUr?mNU;C^$7cENYT^>u%eELF8owtbc& zqFSXI-8%5ohR|;hi=WE9bt>K3p~(k|R_q0o{5@v}JbK$_oyVS0wTD03t_QfKb{+Ch zls`=fdscXA|Ka>)K$SPHMSY_}=0S^L0e2Z8aYq(m=z%tIdeBO*r#9#Hwl`b=|9b!| Io8brl4}*S~;&XdjqM~}TlY6dxpHiH?^!xXv|AFZL z+LpCz@9kat{M_2_-`D;JqW@c;AKUu>{nr2A_io*~_gv53=X;MGYdQA)+`0F~=iV

    W3@|3n}FROvyY62O55-4?{<;*-?!)I z=NFe($DiM~_xJY?k5A9{-@otg?;oFE-#@>9|Ns9CY#I+5Si~|OG;*k|c+kXS_ToXa VfSbm{7Ll-whpiH65eW_q)&S_T8({zd diff --git a/doc/salome/gui/GEOM/image24.jpg b/doc/salome/gui/GEOM/image24.jpg deleted file mode 100755 index f018bcc8f89a5e65da548641661a74ee67d78c67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8813 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 diff --git a/doc/salome/gui/GEOM/image240.jpg b/doc/salome/gui/GEOM/image240.jpg deleted file mode 100755 index 06ef70fb743367c7cad498ef1b46ea27b89e4d13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14340 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

    "; - if(i>>4<<4==i) - { - sHTML+=sLine; - sLine=""; - } - } - if(sLine.length>0) - sHTML+=sLine; - - if(sHTML.length==0) - sHTML="

    "+gsNoTopics+"

    " - else - sHTML="
    "+sHTML+"
    "; - - var resultDiv=getElement(gsResultDivID); - if(resultDiv) - resultDiv.innerHTML=sHTML; -} - -function displayMsg(sErrorMsg) -{ - var sHTML="

    "+sErrorMsg+"

    "; - - var resultDiv=getElement(gsResultDivID); - if(resultDiv) - resultDiv.innerHTML=sHTML; -} - -function ftsFindKeyword() -{ - var sKey=gsCW; - var bNeedLoad=false; - var aFtsContentsCon=null; - var s=0; - if(sKey==null) return; - if(!gsCheckKey||sKey!=gsCheckKey||gnIndexNum==0) - { - aFtsContentsCon=new Array(); - gnCheck=0; - gsCheckKey=sKey; - gnTopicCheck=0; - gaTopicCheckInfo=null; - } - else{ - s=gnIndexNum; - aFtsContentsCon=gaFtsContentsCon; - } - for(var i=gnCheck;i=aTI.length) - { - aLS=gaTI; - aSS=aTI; - } - else - { - aLS=aTI; - aSS=gaTI; - } - var s=0; - for(var i=0;i=0) - { - var nM; - var bFound=false; - do{ - nM=(nB+nE)>>1; - if(compare(aTI[nM].sTopicTitle,oTI.sTopicTitle)>0) - nE=nM-1; - else if(compare(aTI[nM].sTopicTitle,oTI.sTopicTitle)<0) - nB=nM+1; - else - { - bFound=true; - break; - } - }while(nB<=nE); - if(bFound) - insertItemIntoArray(aTI,nM,oTI); - else - { - if(compare(aTI[nM].sTopicTitle,oTI.sTopicTitle)<0) - insertItemIntoArray(aTI,nM+1,oTI); - else - insertItemIntoArray(aTI,nM,oTI); - } - } - else - aTI[0]=oTI; -} - -function mergeTopics(aTI1,aTI2) -{ - var i1=0; - var i2=0; - var len1=aTI1.length; - var len2=aTI2.length; - var aTopicNew=new Array(); - var i=0; - while(i1>1; - if(compare(keys[nM].sItemName,sKey)>0) - nE=nM-1; - else if(compare(keys[nM].sItemName,sKey)<0) - nB=nM+1; - else{ - bFound=true; - break; - } - }while(nB<=nE); - if(bFound) - { - if(keys[nM].aTopics) - { - for(var i=0;i>1; - if(aFTCD[nM].nBegin>nTopicId) - nE=nM-1; - else if(aFTCD[nM].nEnd
    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 UU%o=h`W9^&>kUyVW&FUu0h4mzHUIzs diff --git a/doc/salome/gui/GEOM/image242.jpg b/doc/salome/gui/GEOM/image242.jpg deleted file mode 100755 index f25a99400759f2510d0695ca56f7abeda889b4ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9261 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 diff --git a/doc/salome/gui/GEOM/image243.jpg b/doc/salome/gui/GEOM/image243.jpg deleted file mode 100755 index b0eaee2c06bfa2d7df1adaa2398a34b0caff44a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12109 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 Fe*uOlM_m8_ diff --git a/doc/salome/gui/GEOM/image244.jpg b/doc/salome/gui/GEOM/image244.jpg deleted file mode 100755 index f07716e5ea67e5c810a978dfc5f87d6b084fb2e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13191 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 diff --git a/doc/salome/gui/GEOM/image246.jpg b/doc/salome/gui/GEOM/image246.jpg deleted file mode 100755 index c2f661b858ae7bb81de4a67b634ddadc0530b67b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13145 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 Fbh#;MOO%(wARKjnMiRJW?=1AeEj@OC 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 E0I0VP(*OVf diff --git a/doc/salome/gui/GEOM/image249.jpg b/doc/salome/gui/GEOM/image249.jpg deleted file mode 100755 index a9a6b8ccb70446cd9b0fbb077316ae21795967a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13366 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 diff --git a/doc/salome/gui/GEOM/image250.jpg b/doc/salome/gui/GEOM/image250.jpg deleted file mode 100755 index f7bee5360f10441beb4e459012857aa0806b4019..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13950 zcmeHtc|6tM*8e^Zj(N&l92ugBNT%YPk~vbDg+!T>giPt221JGsO2$-@kTMi;BvF(h zBva;jo~JYXw)zg$_dd_P_j&Fg_j =_Rj^efC~!uf6tK@Aq0C$`?uxVAIvq(F6$i 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 diff --git a/doc/salome/gui/GEOM/image252.jpg b/doc/salome/gui/GEOM/image252.jpg deleted file mode 100755 index 21624acb7590e887e91e472e540782a0af6607b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17788 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 diff --git a/doc/salome/gui/GEOM/image254.jpg b/doc/salome/gui/GEOM/image254.jpg deleted file mode 100755 index 70a85ee208f84caf3f91da6651a3c6125c6eaf37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15156 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 diff --git a/doc/salome/gui/GEOM/image255.jpg b/doc/salome/gui/GEOM/image255.jpg deleted file mode 100755 index ef09ed8272726a590d068dc5b8ef1aaddef9b198..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15145 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 diff --git a/doc/salome/gui/GEOM/image258.jpg b/doc/salome/gui/GEOM/image258.jpg deleted file mode 100755 index b21aca5653981bac22dc36eb4856eed901bf0232..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10302 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%0A4Ne=Drw(j zPDtL|fd2|GWDMAtdU1_)&mg1}yTGSgOmITp)`a*!Cg3V$JRs%Ymq`WJzw6W>RZQ>b z&8x0|72qrLxK8kt^zoFJ+SiYs`U2ZPJ#hcG{lP=%erdZUO;lDq=g8AWGafqu^=RyVVpKjr*^9m(6;1p#QvUO-J zu0q)l8lwU2^*4jLItvz;0`U1jO0qF59b{mtYX!oy5q+>p*N}xHal=r$jF+`vKQzwd zN{Ll(A#(V{eAejw(zLUQMF-xda$lfFaH z|F?iN$X|rmMFY#~tp>-N>>vB1JDT@p>i(2XxV*8JtygSE+`ArKXa5`1paJ>=$+fZ4=BbuHlWuVDD_Tl1<3=bJH4-V3r;1~i(G+k++!64+GQ^Lo#b d%v&yo7{84?_$|%&Xd>Q_w;z#23vkrV{{o%GFR}mt diff --git a/doc/salome/gui/GEOM/image259.jpg b/doc/salome/gui/GEOM/image259.jpg deleted file mode 100755 index 34708def6c7fe3ebca69bda28f7c674f56b67d11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11339 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 aOH8c}`ZtEb9jRHoDg^{OAKQwjeEAQZZHt)z diff --git a/doc/salome/gui/GEOM/image260.jpg b/doc/salome/gui/GEOM/image260.jpg deleted file mode 100755 index 035e5bb331bb2743bd4038cc68fb8c06dee93626..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9346 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 diff --git a/doc/salome/gui/GEOM/image261.jpg b/doc/salome/gui/GEOM/image261.jpg deleted file mode 100755 index 3543abad98b3250e051959554079225951ada6aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9566 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 MCX#6P(8$OC2k0?3p8x;= diff --git a/doc/salome/gui/GEOM/image262.jpg b/doc/salome/gui/GEOM/image262.jpg deleted file mode 100755 index 349d11d56c8faaff9f95a437f10f1eda5870a009..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11480 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 diff --git a/doc/salome/gui/GEOM/image263.jpg b/doc/salome/gui/GEOM/image263.jpg deleted file mode 100755 index bfbd6216340e92fcb7b5b79ff95c4c84f163c2f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8481 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 diff --git a/doc/salome/gui/GEOM/image268.jpg b/doc/salome/gui/GEOM/image268.jpg deleted file mode 100755 index 03326bceb85e3ef007544ff421592c37093c1d74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12708 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 diff --git a/doc/salome/gui/GEOM/image269.jpg b/doc/salome/gui/GEOM/image269.jpg deleted file mode 100755 index 8b390465e35554bbf6035dff0730a360e6e9778d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13118 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 Q@tD)f|83k8VeFwl0E!f7y8r+H diff --git a/doc/salome/gui/GEOM/image270.jpg b/doc/salome/gui/GEOM/image270.jpg deleted file mode 100755 index 8c7d7d5e5e6e14ee96e3c8780fb45cdd19f25ecf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13289 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 diff --git a/doc/salome/gui/GEOM/image271.jpg b/doc/salome/gui/GEOM/image271.jpg deleted file mode 100755 index 8cabff6be92365dcbf91442f6b5162cf830f6f36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12548 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 diff --git a/doc/salome/gui/GEOM/image272.jpg b/doc/salome/gui/GEOM/image272.jpg deleted file mode 100755 index 27b24c4e31e6a1339731ef2037acc5b74bdc5c54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13310 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 OP&fNSVHZnF82TSWxWSSD diff --git a/doc/salome/gui/GEOM/image273.jpg b/doc/salome/gui/GEOM/image273.jpg deleted file mode 100755 index 98c3af5dfe14760a7673203bac25a2a0ab4c344b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12706 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 M9-|1Q^~pW|3x$EfIsgCw diff --git a/doc/salome/gui/GEOM/image274.jpg b/doc/salome/gui/GEOM/image274.jpg deleted file mode 100755 index 195c762b0413f0f4e2e5a237b2f3e76722592aea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12961 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 BOq>7! diff --git a/doc/salome/gui/GEOM/image276.jpg b/doc/salome/gui/GEOM/image276.jpg deleted file mode 100755 index 07fbf3858b9ca8775df35faf6b3975dabb1e189a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9985 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 P;j5q`=iY@uk$V3dxkf`y diff --git a/doc/salome/gui/GEOM/image279.jpg b/doc/salome/gui/GEOM/image279.jpg deleted file mode 100755 index 14663b95960e68418d92db0d2c3669218d01c81c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15226 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 diff --git a/doc/salome/gui/GEOM/image28.jpg b/doc/salome/gui/GEOM/image28.jpg deleted file mode 100755 index 809e9a7816b28bd3864c40b9242e76b0806cb9a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9703 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 N@|REcmt+{9{s%L$gcAS& diff --git a/doc/salome/gui/GEOM/image280.jpg b/doc/salome/gui/GEOM/image280.jpg deleted file mode 100755 index cc066aa9ba8a80567d161fae02fb884ddbab3833..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15180 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 PL93)3s^0@kPaODf!Y^$U diff --git a/doc/salome/gui/GEOM/image281.jpg b/doc/salome/gui/GEOM/image281.jpg deleted file mode 100755 index cd35b054669259478a05564b3bada77b50100c70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14398 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 diff --git a/doc/salome/gui/GEOM/image282.jpg b/doc/salome/gui/GEOM/image282.jpg deleted file mode 100755 index e0c2932f863e2268588c9de8fb9c9d5baffa4102..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14897 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 t^HeGQC_z{ddeJMMwYv1?dXXQMw9B4IPmxARr(} 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 diff --git a/doc/salome/gui/GEOM/image284.jpg b/doc/salome/gui/GEOM/image284.jpg deleted file mode 100755 index dcf2f39a14809a2174df9ee51663899488980e2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14063 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 diff --git a/doc/salome/gui/GEOM/image285.jpg b/doc/salome/gui/GEOM/image285.jpg deleted file mode 100755 index 4b854a92940edd0ea10e34b1bd65e94749921cd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7504 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 diff --git a/doc/salome/gui/GEOM/image286.jpg b/doc/salome/gui/GEOM/image286.jpg deleted file mode 100755 index 0ffe3be2c6eae51917d5ee5e8ccc41b36e1042fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14002 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 BkUanZ diff --git a/doc/salome/gui/GEOM/image289.jpg b/doc/salome/gui/GEOM/image289.jpg deleted file mode 100755 index f3d90f41c860fafd7405151951f58f89940c4cd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13516 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 diff --git a/doc/salome/gui/GEOM/image29.gif b/doc/salome/gui/GEOM/image29.gif deleted file mode 100755 index bb00746d420837f0db265007f83a485b4de72a32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 914 zcmZ?wbh9u|6lV})_|5@VQf*dj)8x|aF<`CA3Ik92k;dTZkuQ?nIiVTbr#%U}82M#p0h?{1y7&J66 zPEc}ZlL%l)_3B{=+vXziDb;71Uhb(gGe12$(`;J(ZplxfX8{XDH05j~5*!+q2P}N# hlhJUXVRgjDSs@h%92(ar9ImVJ*tRCJnURsf8UScLMD+jw diff --git a/doc/salome/gui/GEOM/image29.jpg b/doc/salome/gui/GEOM/image29.jpg deleted file mode 100755 index 39178b3c35c4d6b53525d760c35681e91f1692f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10342 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 AJOBUy diff --git a/doc/salome/gui/GEOM/image292.jpg b/doc/salome/gui/GEOM/image292.jpg deleted file mode 100755 index 0a4ca53d67ca57a4d751d3beb7202308cf4e5631..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12912 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 P2P#xyrYa~d!sq`1-FEBL diff --git a/doc/salome/gui/GEOM/image293.jpg b/doc/salome/gui/GEOM/image293.jpg deleted file mode 100755 index ca1c655eb450227d2e7e82ba508d8a3496fa935b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16335 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 K;ECoV4g4QVe=&dn diff --git a/doc/salome/gui/GEOM/image295.jpg b/doc/salome/gui/GEOM/image295.jpg deleted file mode 100755 index 34be1d4a65b7f064add092bdd1130aae1ff9d4b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18252 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

    panxJ=s=MEQZxCD*u zh>07S53`+hg&1N|YIt;%D1`Hk&~M^|AAvHeX(u#CrNjCVfe zvg{)=u?M<%9x6P1u!;JQJFK+tQgIx-34eZIrI@zk#Em~oY?Zm20IZ|Dx;tEt+E!2P zZoVL|>h04^0HFIec3sNb%*H<83e0LBVZbWZ#PS?ZO%#UJ%txerK|CMa@5PU5R(k}M9u<7O)In5BTR z1IE=iHbGq0HVx(l+d4TG>rOk~XZ#R9J*mjWbroM?HgcnJ1+h}Ns$~lsQ@B4)>3HTT zray!$MC@3`hyak7pU}u3jbXQl>n_0eJ)5-gnIn1bKWgKLViFVu5|eCU^#P>Ys%F|3 zlUqG_rwxp&1ydo$;3@1L{!vI7obmXn|4%v!YP0o(;oAn0u<0@-fx8d8LM*h|bNI~! zx%N;48?t#Ue>VE*SY$a7J3mk8`ZNE)toBa2=6qeBJCvp_&!XFxX`duNuK}o5bj*%( zKQkNBCEjqCaCq=oMSEqb!_rWll8pVkio5a3k6sDhSO>5ry&`v53^wg#fcnnF?5stt z(H1Pe!a#VaY`FA96z%E_+{IZF72&&;o$k76=v*&%2v_4NE@{&fzldba>VpSavp@Qmsak7Hp z))H!q;eFO7hA75{NNT@gW~SiyMC{P6r6upETV3OoGIv_q^gkb~57~9y6<*O48b^q> zQ1ZkM{c@QCb*}pTL7CUS1gIBS)Ko<0ks4xCi8rPmp*9uG(-_87qbmxp6|7BvG^D!Z z8{hRQ6sGt2O3{-pq%&JUZKO)v!LxA!VAGa|U5E|F>CN_xZmKHzGWWmqyk|+$l{%36 zK%1@vK~*yR#j~~`r9-lO`~+!w)D!2OY0>YX;v)AE3;Xt~yGN)~ko%1hTL-K6c31u{)dCW2!;z16w$fTI-mLg}zTh~~Haw8|&df6)(-VqFKFzgJw6_;5kv16QHZ-2mbJqS9lJJKk#EwwXZ6|lw%;R>d8!dj|JG*_5HqFNE1VGO8Xae3I z`-RTnH0DDMH58Chl(DGFxPKh8}ohB_aNnguFQSS%!4p!?nrTPLbZGdhd0ki68QHG4j$}2K536r2|l_& zZ?tZMgv*7%IqyL$63krO&gq6^G(|Xt!iyk%yu{P^jLIN2Hf%KLQYl_=F&cL#Mhf30 z>kIb~#v-EjYNAq`3hm=_N7B=gW=Bb4=z$-tVe~&pu`Q^L8qyUQb{OgO3wuI76#M@E zX|RM235L=$dseB4@o9AoIkzd@^uNMYs*I2y<`lQ|ELyQ&=>XS8MZ0hCCj1otm>?>} z)196wFlSx&IQI#v1&CW39|Iey!SghBp>nK+by6&bJkqe zqoLc4qg3$LE9H#V{8mBdi+p5>qDnl4NCg;oW_+%F&HXQOrJqT_J~1JKoS8kjvwf^K z^sahoRco&Fh6ehBLN|ZLVW`0;qPsnJ=e3hwKB+B_jMLBH3DT#N#@`?S9SCMrRP#s& zlHx7mEdsU>I68@8=48cwokuSr=gGTlL=+b4X2GIu9ue}#i(Jw&=-s`_H5mbJZVglqf?^(w|9E3&&R zHFNft-)8yo*en_oCD!u`+hL!!RE2y{r+f|;_1?p6ViKDpc4CCF7@YlL=w+>?A1Jwt zoC~=CYfoc1^uA@C8R*KO-WaH&wpx_ z0FZ7$Ng6< zD%X#F607rLpSdNvr}Rq`TK&pQ$#ig_U+5c$>f5eG5)&m~mwZtOpvt4q&4-UOB###j zvvz`nm%Q%q&Uq9Nh|4@80L?Jno{;O~U@Tmb01!C~i|?CpuC0D$5ZRk8s+i1Me_?FE zYp~IRITulfbhM#4z|CI^-UAmFn zlpFWI=0YZYeNczig+Fw`49LtY4hpbh%9*DUn6Z!3Xmonnu5ManWfHwK;ha!Qr}#f= iI?!2O_;-y*|Ksm{|6BK;);mq1ss45PKb0Y2>^}g%NZ9WH diff --git a/doc/salome/gui/GEOM/image54.jpg b/doc/salome/gui/GEOM/image54.jpg deleted file mode 100755 index b331a4adb598d4523990709bc9e939cf905bde6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4615 zcmbVPXIK;6x}8u3K?EsM6r@O%Dn$fh13r)xrKf%cb(nB!44`AD=eVG7o#BkheMVs)PQ|F?w~{r<>eE*C@vu>by-O)#h?JLqr>3R9%E-*iFDQJ6EGm9qUQt<9{kf*LuDPZ4Ya8}k`}e;7fx)5S zksm*&XJ+T-7Z#V6SGIR{_wc{=2?vMlRLC@RbhLDg$B;oZLDZd=osRy30t3f&6UO^K zXM`1_PH^5xe*3A3NkqwXi_5_m$ILByd0K4y81-+^|2NFh|1Z%0#{6%{ltzI41P}wH z(SoSx*+I1IAj(gGg%(7;pk)WZz@GZi%L8)>;0;YAGeGTtJ2btZYxLAeaqeS1G!!B^^Px>e_E|fN>G3-3LpY*Q>adUQ$PR2B8A6vw05ju zRuIhY!xtzb2IuBb+|0N-YWm2*z6$U4el5XeM%YHo z?iyg@cV)^cz}A3W zOpq`o=LpZxTyaUtF21FzyBCy~vi~q!3H*J`E;C3R;0UL`IAHO^`!Q1Ntn}xRs#EC! zvL}-4@t)F)KH0a^>^BNc*Zr+2KqJu@)#z>K_q;My_OFKW{;kO^*_O9&n$m7ebbJj9 zlujJ=RC9x@O<GhYxKAh_0Y|V zfHtjc{x&nu=o&%}hieSiKAvF-crBDo%RLXJZSXFK z?lJMO#Z+--B@>gX%?Pynm**0df0>bBO1VbS7`3+TZbh$jHpA<|R3fzrO85_$mh5VT zX=~R2oWOjPhItwyAsp$THW(4zpvsdmtB{Caxe~T_RIPPHpJxA&eZIx?&K|UEcC|;Z zKIxiNt?4)!vjsklvFAL2hHwuQQE zMb%{rprG%@UruU>*LcIr>i~@~3^Dgb>;z@a6QTIsD@a5%&Mgc-W2>>OB{bmf6UEx{ zo}`3bM(n|K)ADsH=ey{>tITRSJb3;MZUiqhP|wTYx~>~Ah0ayglh671?b_jacpJuO zTAfJHGb39bPyhqsnbvH%icU!fjy|8y-EzcC)voa11MlA{ftnc@P;m=8RYDn!$@*0M z%g}ReR&bA0eLWaM?($*on=J!~rZpveo&m#V2D^F4bk!XadLf1V z(;5sKpshbyHraQ{JX8_gyd6H@h%a{Y9W}H1E;3!2GfOfzm>|sVzAua`v6)J6O#Q1R z5E^qWwKh%L_zx-uRi{bHigdayw4&4*U@ROGC`& zC6~JKy4*J+wlz$oB(1-!p%ueWdN8u~JR&WE?w?%B2~z%h(it5G-B7z&<0k+f@=kT3 z0GF+aY*4YU;l>JYp_Qp56?oKy<*r5PTauNyj-WmcW>_{kd~mX;>O~g}GVU4Q>$rpZ z(q#VY)uY=TJH5LLr5B&Z2E3rYfyVKaaS^hYO^z^+)E3LhDgwXKsO97MuE?OHqdR@? zRngZb)!x)r6IBlXwB@wTzWt}$a75ZI0al(`yvCw|>z z9Scvlu5ygztrj?X2Dip5x{+H1_3Z+W_OwEuZsppvZ*$h|RM$JAmO>OzKa%F{e~X2} zH3kXbD-aYCHtF&y+HNfdY=Lw&`uPO;ZWJz7P$oHCoq zc};pdm93|IE|!U+zb28(Y;3dk*1(5n?C**0L8*%+JY3 zU4uEB?3AoHca+6AxX=~Lm}-7`(iFFuaa{l}kkqkV$ipQjfxaw>&6HKNG}s%NyX&ZT zI{E{ME(kSNWNzWAleh8`{9?N%DE6!Q8**pn(d&2!Qi!@TP9Cc!Xy}oH{h?2iM%!Ej zVO+-WwQ^oVtBa7t6uyDC+1Ur2fSGLggARJiis5Rcir9evotVS=5HY z4coKg&VKWH)3D%z*fu^DDc!e>TvK|!)fwx^03X~gOTu#8`X0G*xVg73*_<;(F3wY{ zKhNg;5}IwwhxiGK^2WnG(rFPGRr^_dL(N+&p8}LZ z-)_ai`b)I;TuFx!@iRFW?_V-wL)e-n9Jpar{PFv`vrSa$FC7;|^rTZ>BIc2cpu~Q{ zaJP?&;3}_$6`q;`1Cb-%52aUr3`*CFJtD0dw_#nOJ=nchF`MiVGN){wJMXutLqyF` zw*PqW3b#(H%LfE@;aj)WLc`%}V^?~y!SjBQK+%%Z)LF!}f%5PtOu*1jN@oPplbfRs zGQ(w=0yV^E-XRMf#k87?y9_7aOMR@XU>0e0=9x2p&0f!SyFf9?%9#z^()8wupSow_ zqpzn*t@yQIBmi^uDZ`&djtxGRWTK24@4K9rbQxPH(2 z@vdPP$z(hIiE~x=Q6+iN5A(bwuVzmE8*0INU|cE%d8r?^0WMwcGGg}mvBJ1XOE67p z9>$a0?yPh^eEo9cGxXOZRAq;h-*o=`+ZGG!Th=*M@0NNqs`!^KojK>^U3+*6zg*At zBhzpxk^dfHa(ex$e@K|0o9VO2JMPAvy9dn87R%VuuG#pk$(zwb4a$UcQ+gTVYZdUJ z13GsX+-s@v$@EC7ZM)^GS8*%UE$C-^VM>u&os;*jfvL7KVH$rJ*(~iAK>K(>u|8zqWGCA3Nf~)6m;-)2a=^ z$aeU#ADB`gi&EW!lV!1MmN(pU(PmkZQGXx8{wNK6yQ`b2z$UCJm|K;O z)-1!IzGHtpxM%yUz4$#l;`P;up72nu+{@i3O}C7Yo(3<>)U#K6*kFULg~;MQj7!2pz3L;X4oQZ5JhgQcargz47Ide_cjUm%0wm7niEE;EBqq=rRMwaSVQs2p#6H|s7|#QrA{wAqN}V!dtX|3 zJ%sTwClL3i691zizrEyzx{A;BN#AQ@#f)`%%R&g&XP@j0MW^g)vT!>+YrLIx(xmAC z+~rPo)`U-8948k)GFWStg$R?qmzk7!+6+8ep z+Q@;Hw*XJ4l=*tC74ps8p%T{S8n=+4moJaf56Gg9L|v@K7w^9Zc!D;;xCoYs%8yka z4b!T(o3F0lJA>C;UG^quXz^M<;~=ARX`gp}BJ775-o4#kueF}QH4uC(#K+|p-?3Z% jCn+AE{C3a(*@0O9nCRbi!5=sMuR`!&SO1X0M)~nSJMza> diff --git a/doc/salome/gui/GEOM/image55.jpg b/doc/salome/gui/GEOM/image55.jpg deleted file mode 100755 index b94d29a1f8a257faf963e24433745072081632ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9078 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 LOofyIv;E%yf0&nc diff --git a/doc/salome/gui/GEOM/image56.gif b/doc/salome/gui/GEOM/image56.gif deleted file mode 100755 index 049e1ebdcdff36feda74aee4babc6b2ba22e2454..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 979 zcmZ?wbh9u|lwc5J_|567MxNHLI(uTYzB7wVs}yIY6*<&eEkz*REZ=ckkX~ z$BvylckbG?YybZ<{Qs}`A4rXY(GVE=A)o{D0w^yqaO_}E<&g2%u)wj2Nl47+M8QIa z7Isc20gFJUmUd=CwScR#RM2a-l)Rk%2AgRETHrQtw8C)Ke@I z8q^wlElZ^s7BDa|EEeTm6!YuA3dY4kN;*>xG#q4N<=B+P%k|*F;iVel1)>_CR$rLG zAkZVrX}IFtmh98hY^=XH#4IhTeD=mm?0qCdS$p1*nb-C1AIvKk<1m<^+rY@|$Hu|X Y;F!E^`tr1p9Xk`B&z{N8#=>9?08pi9@Bjb+ diff --git a/doc/salome/gui/GEOM/image56.jpg b/doc/salome/gui/GEOM/image56.jpg deleted file mode 100755 index 0d0b9888411b28b46b1d460fdba8d39d9d4657ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10965 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 DR)9ot diff --git a/doc/salome/gui/GEOM/image57.gif b/doc/salome/gui/GEOM/image57.gif deleted file mode 100755 index e0f9e31094c9987c52fc727acf09e49b1a7b4fb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 990 zcmZ?wbh9u|6k`x$_|5X?%lih*xqaZ85sVr75IOx<^R34|KA_`{~stY3PwXz(f_#`LvcR1aEFA-KqeO++JYgNH!F$;k{x zO(_8n6c|_yl7%=HOjKoT)=xflBq1@0k;&Zq)s&wPnpnA6>%?46PGMkMEZQKnMZ?jl zg`Ia(*4_Zd#w#l&XUt=%Vpze%AmiR9%O$MQI3wfgsJ)@Sa7CykVCzJJ4 z>uZJdn4L{G=l!iVdzdhz&Nr^6#_V8Xb2TFig8@SW<75H7NpEg!P&(Ym=RZ45LV&>< E0L{vC+W-In diff --git a/doc/salome/gui/GEOM/image57.jpg b/doc/salome/gui/GEOM/image57.jpg deleted file mode 100755 index 8e0e5fd5294e17cb72696062e4304a0f3e112d63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10819 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 diff --git a/doc/salome/gui/GEOM/image59.gif b/doc/salome/gui/GEOM/image59.gif deleted file mode 100755 index f470df22c0c50170d789ae76cdfbb011962a846a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 963 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 S`D6w& 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 KYBfZVzx*$6He^l! diff --git a/doc/salome/gui/GEOM/image61.gif b/doc/salome/gui/GEOM/image61.gif deleted file mode 100755 index 0a7efcdf138b5d2d8991cffc6c23a748646b23d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 975 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 L*+k$Op`rf+`3m(S diff --git a/doc/salome/gui/GEOM/image63.jpg b/doc/salome/gui/GEOM/image63.jpg deleted file mode 100755 index 65c93f02be6361dee668b10ff09bd119d42ee1bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9001 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 diff --git a/doc/salome/gui/GEOM/image64.gif b/doc/salome/gui/GEOM/image64.gif deleted file mode 100755 index 031ab8bbdd962dbbb078b41700cb3b6ee849f422..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5504 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 diff --git a/doc/salome/gui/GEOM/image65.jpg b/doc/salome/gui/GEOM/image65.jpg deleted file mode 100755 index a53ce43138459f363f69209cbeec66152d4c91b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8853 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 Ob9&u&>rN6p@IL_SQ%~6d diff --git a/doc/salome/gui/GEOM/image67.jpg b/doc/salome/gui/GEOM/image67.jpg deleted file mode 100755 index 658b9430d1ef6c2f60be37ee9b7e0572b4cd4ab3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2823 zcmbW22{_bSAIHyZnCafiGO{GDZ7d;cBGhEE+?%r3lq7pX40RjK>a)1R!0r5;J~n`=)=*W;lTtAm#9Ev4IfkE4W>Z+9Ham#I2-|o zOCb;lX(=gb}tr??W_Csc|j28C#L$pWxl(zZ7 z*kmM1agCC)ijFQuPv5}8(rTmiCYx=Jxb05PF0P(l-afv&_uvDAfX!VeMR;*TEt zKH>O}DW^`KIh%Se>tZ$~=hEfeJZecP?JB*j{MwDGo42ZO->IpstLHZStFfuMrK6MA z)!p-~x9`>9udj!OM@GlSr)Os8=HI;s-!h2Bd); z7(_xZ3xUZ(#C_l^7(_CG$pQzksCm!)RSGlQld_4>$!CfR3I`V7{^PxxEN17pda}05*lWhqLHl_ZKLYH?(0_^=G6#Ve{D>9XhrxEEXY={VvFs zm6DC+YQ{Y;ZM3sf9}tqB&~rF5S~nFXXH790;!7wVZe&>vh5X@Ht~2x{SotvPW3i z(rUTu`zfS;g)GpW!y`THf?;Lv}Ovds-q%l$JjQeo@se0_DZ97 zKX9(F1uHCzo0bo|L@@r5Uv)RHlpb2O*ZyUX*S?@%>04-S713FTIs}5A`Jy3oMB@R* zqlQmmr^kpceV=phV47U(Bw>a%Y`(Ax-?D$MCXwVkN&ApzeA|~Q2G0xosq;zhvA3+3 z;R0~>1Inn0IT#~v#-Q*5kp~nKpyl5&}AhpwGFLu`XNLguq zJWZF%Y}5Co>?w0Px-9@!j|_KuI}~lU^I#$o2Ae8R4v%14HF%vLXN#>7nwHnJX7 z`NW?3c&E#O{uFP?;P^_pF=y}B8`s34Q$h_)vPx=4#lUHVzxcMq72h~1o4ZSntEbk? z%;9|A2CBRH_1TD2;eoVLyBHQX8k87;v0S^(XVCDYi+! zrE})nfGDA)w=41Si!{OH+N#9XN&k@}9}EgP>zSmNTKt0->$kghMhe8Br3r06Aryn5 z0H2P2nE+H!oNWU7QCVlbZ8K(_(6?e@q?1Jm-kyK!ytf!IQn!EuG5gO&6fpuFyoKCq z-x9L!feg|!QnpC7TD`7zG_l3&1FIo|zmN9pDRViCKC1(&Ue!dLe{^{gxC_nqiCUr) zIQ0V7LT>E0m4&ZFTi;o8&f1cljt21Mow~;6+4GU2ug_d3`wEZQ@J=5obwN?UptzZth? zT(AtmSEl@apU|hjEA6BFkaH}}TVLS}rpvLv6a+@!V|cLn$GYBjAv?3zhH^+_%8Sv9 zb`!$f0VI5y{LY^xvR9vF9VevYcU7oGF=qXz)(2>J52qj4^0{XG)xom9rIN-JYblfm z?x`-f3G;|-Q3QDbjmoaU7$h>7q1+vTtrJgHq99J%fx z&gSlu9K1`M(D#C?Ro7vo!~ftW)J2rW#0upm<>g8D3(d$)&3s?4r17swhMZ`Hp3D58u~i43me8#0vUPL#_rr8Ff8dFaM`|QSKYnKM=(W zu6(xdtN3q-Q;U>e98|{YBRn&O40|C*6|MFr3@QU(`{UDd!`gUYXp{Y`du&r#b3;FJ z54N;e$Bo`Bc>ysC_5~E{t2I=kxZJ-lXh6%LmU2MZ`62vBI6ZQgf`wH8ol%t)bTcrj zcXPpAD6!(E$g(~4+dhI3jrCHr6HBWp-p4%!(B>(j>-HE)U2z+A9rld#H*$(^7m?>k zMD|#)T_7iVMzQwMmjwE=GR!3v9@nFrM(yY7`oF)3dRa`KvFtKAo=j?)m^sekF;Az* zW-TR!OKI2TcXBlj3EQ0MdIIMCcT5g?q;u!d#8ED@UgK{Rrw4QJ6*l%pJE@1{M{9jZ zpSe9?rX&VzKWkEAUSa$KgEVlWg&c^jN&Pd?UuQH%S)`)Sxyh;n>M)>NyP?nL%r!wv e#^^1WVzL!Ry9_f^8N|>{u`k`a^bkYDz5fOaJf{Kx diff --git a/doc/salome/gui/GEOM/image68.jpg b/doc/salome/gui/GEOM/image68.jpg deleted file mode 100755 index 8f931c7327080b958fd91d2c62335d33607a9e67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9523 zcmd^k2UL^Ww(bf^=)E@yB~+yeqDV=wP(%e3MX;dKyMPF&kkCYW6_gs9h>D0571T(P zE}$Syr3unRdQbk`-(5WJ{l>ZXoHxdM_m20%fQh5_dxeItE< zfPaJmF90+MU=APDJ0NauXXEJZ;p*YwWalkz1z@LZMM8dNdl% zKu^!W#L3LW$jHRQ&d$Oqz$+-o&&$s*B#OldiAaj@^NVj6mz0r}mzNh5Q&ia@r-GG} zmqpMsFfcJPaWgY>%L?-g%l_LhT0J5c00bKG+Y9{hLeL>mXnF=lCT11{K>j`k|NVXR zmqAWIhd?6fP)Ibq3)oBmJO)r)Xl@BrJ$fFq3k;H;ygP#uau}udmDcbbdpD0&yXY0n z#LO=sC?qT`BP%DbpuS6E_a4o?`wtw{H!w6hblm*JNsCjKRyMYF_709t&fb@OuK4=- zUkwQjyAggfA~G>4`BqBm?K^3?dHDr*3-1-(e^ORnQTg=Q^Qzjq`Zo=YP0cOuyShL0 z^!D`+jEsI68~-{nIW@hoxU{^oy0*Tt$pyPihe9Dy3_n~((D}l@NG=pwLY1Cd&y3-M zCy(ULAV%JO2|1-TOj2sc=J_sqy<_Ibs*gx7{P6lWr~fsdga5aj{^|2imuas77bBw+VL4#drAGujV zo#)nPK@3aw&I6~9NFGUP_0oQDe!R0xxrL7V(uuMLhGNn6Yu2f)7q+O)=0jxy`bAR=m&^IX zVR_tWATi;hMyc0}(W^LfxL%e+)7=P~+82r2%}aG6fw?113w$1>cGY3hefKwkbnF zDc0+3m~}$dOSx5Z@+}56UVg8b#kcBA>8@O#cz&I!M>OYEIc?Qj#87n;cMY1I4F zh0N@%xTehGXHuUAWs{r+3|7zR8yhL!;&*EbyBR>bo*#Xc({R?1y-~0GKp@Y%Z;zJy zlrE+khj?k=D?Nnp)1>O$G#6JJzF9||NTozQRVk_$>Np24pcl0tavBOT#L5S_XBIcFhnJ;#CafzrE&!h6U36%>#kPm0H{9y^7BA_4 z6Sax<+~07V;IP2qpft9ZP)7rzPHt+J)55mr{OTV}Jhzz8F1i`gQDI*C_*Tib7j^x+ zy2~N%^(YBqWocoOhk~(~lIVr_@x2F|j`=YJ^_d5_XDj8{E5^DW&3&f_ zJIrq8CAD9CcW;M&*Vve7nV06*^fz4<&k3BXUf-1|5<{F%KkoUkJm2%EgeM?p@!@^0 zqt_o@BC%g%)_rPX?M+aDr|tD%r0jbhd8+Wk<$jx6`<}e`X24Q@UeIsP7b*J0H(f`k zaW}7N`eJnj*KeLubFT8{s=kqV(>0Xg(&D9|>8_HsgBYtqO7@RA5+3w^v!j05rd^q$ zh9Uu7iGw!Vb&aBArFpXpc17KN)dbH`pn=+_3nx{{hvs^wt)bl;n;)nFS2%39A_GPJ z9%QE*QQY%!+26?>U6H!4su`XHz_A_XGx{jdZTmu1JPph$5lW^EdV9~Wnmi-VKcbxI zcw0aiHqWNGP_kQ6|9oDeZ9$#I5@563?e z0set~n7BvIb}`4IPJVJuGRSqVQV#c-8LFIqC0tqce1Ny9mz4=g8n(FY>K0>nA+|@v zO=FLE#m)MJhmFi+C9rV~O=3>*vb6MUI~AK$4oRK1uHtD^b_Xqi7R@5#yf zcXbaI2H~v)sKIXJWo86Bm;TbBb677v zFi856vO;2hnr8Ow`PPw_V?ExyT-Ez{=S+>jcLqW1qH0f2G7XIIRvy=SW2QrtwdUiT0;%&k-@W#?LWOH?8MM$mZ~$W`Vy74RpM~tW6PWi5xPRjkOSns=RKB7=zPa zcb+g*Km*J``!?YpYyYzq=mdXGVi|+I`{mm|J!iZbwLLUay*93jCz*IHOEO0>9i*M6!<* zP|edmcAyQ>FF6w4ZHnG@ZlzeU`;AJh$zExk%v^F+NMq;w42M>~HS0UQAu*cWp7$O- zw}qS)OPZ=hixj@=v+CR*aMAa?tDAq}w}`kwJKjwKBS-APMH z*tY%=>$2lQ4?fzkP97!3_#N%!SK%a~wq^+pMAl{+(2k?7lE2{TZD}CO0NS!%AR%`WI;3bI zpk%!haR)b%Km)IODZd&6_9h!+gt-bDtXTdp*j4()waeK{^}p{3xFr*0V!mccn4!T`~4w`Ti`Xs;5fF6lSeP{#WXuZl*3G)^?l%Xvm612Ux4cq6r5g;cN zGs?kzH_X#T;MP|rUH>>-bu?%GJUd65VLO6x$dvJhi6GYNKEdJWiAPp!AG>nfB$Rva zex2$C3wW+G>(f1hEKXrD^|{yl9%e7Ls(O!-NH)#;hEL#DT}j%P8!j( z3Xk4+cR`kq+pi|f;8}J@7X&Y!vNn##a`DIw79`ZkH8Kbe3@72YNwx^_)jnt4sZr!H zo<^@k1Dg)Y)J+dKnF&<2REWA8PFXT^2c}2OgPqJhKXaN#%t@d6JTxCyy&=$=N zy_h)(Oq(hC>|f6RK$-`ISgyQ<`be1MrNf%6BvN^PBoE{GlgjM&rSmbAbxP50CEr4v z{0c_(%co8?oZ0-_*aF48XNx^O9@>(UBk6wE$D-qII|Qq}1xH_D-kUx@tI_Y9Q7I`p zZ?I^Oi6Ef^Sd6di7zlVSEyQkv@hN*2sENBnLT4Z7Qp)$2eH?6X{f0f>s9g;%`6Xj= zbdw1D34nNwtN?P`!hlu_oDNUN@eH?QDN7zLL}5Ktu!@1%6rSl<05PSDge!v_A_{_| z{Q6M2!Yll+ax4PL~QF#*?Oylg^EBW^!4-IJ0k?M$7l1S@ z(-zqsy%DvR%s%EzLRIxVbRE9od#51QcX4z}+fDUK%^n0oHcWP&gg)zF;u!kCSBM^Y zNdSjS!9{tT3FHOF#ZHfnMU?|UqERSwb&bqECYEoP3KvOi+i~k#AyAd_66rwF;Af_M zy04~4QMQR5qGmC26gBXjW(ou^Z*L0CJ>HX zNhlHOD-%g=mc=eVY}KIPMvOB(3`0xvl>ttG*Oy63dI2N)?~1X{la8g# zkxn>%z>j&q0T)X)duhOjP>kH}GPJ1Rmju-aU^dz4uw8^PbPl0U<|C|xNL-SHhpE(V z8tA`A7hUDnGOg_E-c@H_*M`H^=9S#J)rK zbsfYx?PbTA_e|kKE9b?77g@r|OWZ;yD32ed2S0f-;X*t*-qFU`c%hr!QRep2qH zq0h#Cr#$|_)3^19Gvh=n=W2=Dr*+wkhjis09UJH|cPrhYDfg8=l+$}{U*(lAnsWn0 zehi~x#q#b;pCxa97xsE(!d7K;CiW%as(wJ(EPmU;Y)SwO%x48QIvF&-jPml*cBSh>p&9vW-bvgBXx;Bcxk&aYf;UcD9F;Lf=5iJPf; zP2969C>kh8%gVO37)je27hJBUfs)iBp&>ufjdT2^M!NcS8M_%$FUoVfZJvHkT5n9!z}h1|t47SeM;w4umy(nJMy~;GfJEl`<)vCHFCJ4+F*uluB7j zJqbuVUY-Dz6T;{Om39b@oR6oC2jVuDfxmDn6|oDmwLk;CBxF-Jd6MZKd>C=iOCY8X z?;U@{0HP39Cc)w^Q$f}V+;|~;;8F1Fw+Udf3=~U z^kX8t;%^hLo*ta_O+Q*yc|b^cuNy_yqE7g`_TQ7HQQx&51X6zaQpP?n~4yox54xVI;Hq6TQ3$$MFxX;09O29OPFxfj@;CQH3i@mi$I1KgarE zceorx23|&oKs+MkjnV8(1T233i@9N9|BD4v{_W1XlG$dJ8jA<+Gcib20God^rsz-A z2dhbj>j-FP*9OI6fzcjhkvgE`*q;V#$?Xw#am|KOmeOgqVSMS1ttw_oAv1Vk#gPt9 zQtRod7PaW~TFvFHWai;lA`3iPk{_MMlSGowiN+nKB%>P%waTN`8%uD}d<`?x(I3Dj z2}#3BP76a}@qi?Mz~leW8N_*V1Yx4Rkp}2sxV%YHI?;Xkt%G4`$2I;;)FCFNwNQni z?xeCvkXK;Mc2rgUxMhd?Jkyty9&gF26yRNc4KhdA{ZaRXPM@QJgyZ$utBlWJ{CDJ% zN&lNTv?asw*?$k2-mSgc+k2G%gK03|>}q4ENO0*VUmLG4;=`h%Hlm&M>YDilPjrq#0W|Ps=`fr#VPq)A3gzsg z%ksjF`?QFnuI&D6zSv6=ro4w@?@@-?9@fNp#v;^1o&9|4)~W(uO1G`f2$QO~&(I%V zEz$5v)VBGm#mT2dtl4uW))D#e*9`tc_nF~EF>jh&Z97j*tDGG=jnXRLy1=um@w!|5 zg`3N70nBqa*yA@(x8_b+q#enx%sp69ZJ1|Auh-txAfV$vk=5OB+4xVI+A^?4iOj;n zejjXvLhuoPQ$yivf6#FT+pC=_O)Dg%R1c9g&I*`&ibjYtTWPRX6Zc5vY(@eYw?gCK za-E&G!HmMpCrn!}EfXa03>56uR0Pwn+vLa1PTi<{XgCSfL|I9pCD0T(j8h-1(o%XAbSA z7DY-MFw#;T!uV|o0}af^qBSK9QU|WMr7`jb3#^0t2oueOMFChGKZdD7A`Ofw!c zh;ulDccSZib}{%1R)D{EKO*4nM=s%8H^8T+dL33Q{$dvvT&DfeUmRm{6{LO>E~IRo zrh#F@A0kw@=02gLf()VJVEy_p55;i%WSz1&MNF{%C(#+`1k?30IIFz&M`2#3U}Jdm|`O&qeXI4R^4BkTkI&upA-#4?E(&ECq07 z?u4rBwFS6!f+#%m50lEPK7X!@c4D}tg>QRxQO@4<^|0ud!p=_Be=ZvHAnecfBR7fq z?T<#-K##$VU9W{w)oSw}a9-LM(nNywdaYtU9B(j84z0o4rib;-?9TTsqoZ0vGJd%Z zr&9cPjCT?>B$d4-FkCzCDm@P3a+8Guh9LON);rPGD2H#o=gTzuxb*C?!-s~w9J#vX;1;fH z_DVk?$rSBss+LS%h^`b!i%PeVzE!T~fB3{L+eGYO3q}wU68PAv&S*(-UY!wh9k!{w z67cj47k}-QZDdV}bE0BF?LA%%D-6>;N)+dLC_qehJ6^N9^HtgC)h|;+y^lp?W z*MJ-K#Zj-pq#{QLxYXiCt-Ya5IPw^aBk66Zm7{J}elg!PJgwRiZrb7xkK8&sY=p8c zHH)3Tx(tN)#WbF$w96*8Xkxc^YF^NI|6VXJp7Lyj;2+eiiMkjhpgtr(aCGiGRgfih zi}y~5210cs!wxSc>eEgL7wu#)!nbG)EegD%fk&S3nh3XlM$`Y&K<1X+>?eHwA^R1a z`7L%=oy@c0d-zT1?mp?8_mi3P5}tATuj;S?2ZHT-Iuux;Oi6)3#T+!3n{b=3)URD7 zS)h#!o}R?)lR^a?1P)GvsP5&WbEhpU!W^`28~KPvzRmcq(4_A-(?eA6GFZSm^C|7( zGwb9i1Gq&#puB1lL7td_Yjm>*vy+JDLG@M`7GEwS6}$ErHz@w?Af-5M^$^}3e{N?xW|>CZuOEuS2;5IjGU}2vhpa? z%Ijqk3&y1zHz@?;d=F8?K2`aivA52%pu>lV9&8!>IeCHdbyj9i#mIOY`h4#hQLSF*rRWDj-c}vo0oW!p}C`3 z-K<{ep||YM3h%mgyp3v-a3~9OO_5wY&l5b`jp=KAYzy^f{)L_&po}Y zYX&bMKy{&kDsm6;uUb=uf*v(mp(+f>=f8S9rAQkB=>a>k0+4tJy z)9GQuB$eY|3R!Fo4NCPqKZ1taWJ}XSYpcqTLeLEd7#dE(Syf6{FbDR8jTMirEdd(f z!_)tNGeWl`J#$cb#|33U(oDqVv3k5A(4crm8e2$X+cm>7O=t%s1Vi?y`SX*p?GIY90MHvlyyB^4zlH5C;V zikccl%S=a0Lqp5P$Vku3#m>#m$EI731aP75h&gG6lt?Q0Tfk=g;W0qTLdCjEPLrDL_yv@(8@qf!>^&NhgD)#NjN2B_`>fmp zY3Vq*xOsR*cZ-QjNGd2QDXXaNKXh2@h_;UI(Gw?6oi;gRYG!R?YiIA^c+tbt%iG8I zieJ!;;E zJs&^yj*O0tPfSit&wO57T3%UQTi+mTvcN7=P*Nf(QQurfQ24;VNES+}U2@c{n#WNW z+}MQW18CR}#@>5bNh`9?c!9&py^W3&tuP|G_|5C@PXBX02mXIK{mbWHE|V(&3k~Q1 z4M+s+JqrTKf*|(-1|$MLL9zf0n9Ixad_#Yzbv4bpI`*P>&muapXP%;|d!mzBM<}gK zrJ@2@w;Ju+SEIaNDR0=ZsM(d~(@b~cW3+etn}-*ki%d<{4O017T4kM+5RoiDT$y3m z?)>_I?Nc?*17F*ct+o`)$5`2?kBxPxN#t3tU+?NLGK0=V`CoDMFf>_sn`$fCWPZj> zHQ;OFddy*!aECF}jVTQ~C-GycMZ@LSl_ee(+d5v`g*KUN=yjMAGBuZQ$&Kev6~NM# zB`I6(aGaCvf8CG2>F#`>cS68KYrj$&)#_kkHrgY$=z2pyh^B~8=4ZrA$6F~K|MTu{ z#}8g>JX@d<`Kb0ZH;75#P5TI^I(!@I%(h4pr~uU+`T& zS1Ff~VpCOO!2J&tM?3dI4zL` zs)xR6bX1>a9kehzTCSaDb;>U4fYIg2QxT86t#_q9Zpe~o(^cF-4DdML!#~KnJ%2}G zPFyvCt!e3mJ1V9w;@CUO7n{p>kMkyZzZI;WWJ-a>GqZ6VqkNbRLD2ohQ<(tU>@qi4Nmb(krPT~{%t0t|!wv)j$k2M+K z8Zg;}ZHcRr7EM9Px6))t0e3`512NDsOm^pJw5=Y&$U_bqH5t;+7c{rw-o|WOn5ieo zOlZEVC4;atWRPSVv)P-y0i~xoe6x+($Fz|UO$afCh9#k!gcUi#zh|@7mX#XJ0Z7Zu;uf_{T)G$tY=gv8He7=rY=;t-)sN?k= zjwm&$Yo|7RJg2i`p4ZXLFr-lZ(24wo?pu5A;8mlpI<)DusEs|}&p4UHzZU%TlW$_x zb#%|lHu6|ICVy1kO!v~`g0F}79GXK;sMO!1jOxUF@!WB!c_BU8*5^^B2YdNhzS!}m z@}!DND*v2-L!#rTm9(a;XeD>_Dh!2*#zRQMQT$s-6Dhi24B96JQv*Y zrfUdO{)obE%{O%s@i^L~JSz1v^SDAHqXqu-QVC1rn4()l3$CZvbs?>8oT=X3JL_GAVxlE9_3u0D&MFvieTWQVl zYl*WHNn|jUh_vPam#GBJvrEKAcYZimFBbGxNQQT zNl)*x>Y#AP+_bxA$UuDi?yCeBHRPC7acKY98TTZsrFdngrRS5EpeL(#m=h-ap4NpB z%T=*{d!ke{2Lv4@gNht=Xf~0c*0H(yWoP3$VqvP*VzB*Y`)5Oo%?XmBg1^5vlg(C? zAS3al+_Iy{jF*@ofu6WJtKHLMxn@|(bTeI&n@||rk<}SQ29DRy-(8C=Y`}xf9@SDuUJiiomSzPNan`yH)a)m@N{);D%-F zl6F>nY+u}27%H9n=<=k5DB3L$bFT z8SDq%DbT3aJ?P`^J~F^&vS>K)qbzM`N{ z2OXJ@;CE-FSrcld{FI4Q0CqTrRs@z7O9e|TBgD@SI&p*p$fUqY%nmI{`o@zgxdb&aVqi)t4)+dU+wTNe3f0 zt$mT&e!zDp3(b~5XQQldgZ+gi+#;)Xa}UenJoXmrhEkL7psI^Bw;n^R-nwS|J3Biu zWLIPTz)U?mB0I}bY4b>iK*Z7fBf+Utk<_~AcpUg_c#+y{=>i#K_+sW^Tn+|1^)buy zsO?RQg-m4QO_KjG8Q}Fu?BI$l8MM3>T%Uoea7?=e3F|?mZJ7-t#CSCsXe>bA(4G#c zB|%ezOj|4X5iBa6iMUls2G#Zb##Z_CbWJ^e!twYS>*=~&%_6sRys-^&&&MsR zd*clpD&@LF=z#dQ=l}PQ<5+q)MC71u{MOTL2a4i1WFVX!hWWzcMh2O!!UoDDtQpsK zpfi4j4#6t6*$537Zl~b(XnL*@fRx0P69Z2B&?-BEZ{Gnk`U*pH=ZbF;2d#px zg4N;MM+hScK@_sum!*!`^t=u$m^Ld881s%@p!cGcXVbpWd)eu<(L|AoyNcGHL^hMH*?Z7Fl-TXCjbxyPUtA>vUTU6r(iLcImINn;Az^|HqVqOd5y_aTM3M%63`=c82I&?Xn`96P z{-?|=``zPlXdd1HUa(J$xP)2n{pKf4ZrMPhD?r5P&dy-Nd)JBK>1a5FwCYJg*uU>f z1Ckx_2}c=x(2d|P&J#Jx#QOZEn-f>UB#JPpM*6B2EQY&$-Rj6?nj@RI!}7kBA_*t9 z_Pgi0x4I0bab92~y-`*^R*DJ-;ZyaeyBEy$_qd3%_0_r+(M_Cc*PcSVQ`#>IFhoE&Sgg?&!+KMkQYT|p zbW@D<9?Q~f?~F;EtmGrK5sY1oe6leTtAcW4{jK{j#~0p5W$k@XPH=KkPJbMlWH%_N zDipiSaF-?Bfx@d*;kLAiLGih%y`eYXSMrk>suvZ&RO?EK)%)zeJ0IKPtOdOaO0TP8 zk~2{TnU3pG?ahy>r8Ex7g|d1?z|vNVKnGq6c>$UvLVA(I+rh(Gy( z3W#S?!T7+9pS9TTA{8Rc&yzvyiJFWx8kl}t9awg!l7Y}(dQzp*&?XfKW81dD!*KQK zF-6gbTt`RuJM9V~r|Vg&zOt!N)N0Z(<r5Y!H^3~!_qhmbrKBFubVEhZMmT77oCvA=s3lb& zN9e7wkHtn=*Y4Cvty+?7-Z9a{ZDzdqAyfQ(4JS&hgnRC8_wAXZJ|zcjMFrl|Z{<9f zQ5ceU6wrH#NXi&iOxAjT;8?0@cZZ=~U7=xtT5T*x*sd5v%T^su85*&8PX?N>KANwB zf)STt>VcHEQQ2@1(304xs!1Hgp_QE(B%;`c5f{^j$uiXH2W>56j9|}V{>yHy6=Z^= zFmr_rHW>d}36A}5PA=@kEM!V+`i~rG%SD&P8{e7FJmt`Z9rvgOR(YE}WZ(tmBBh-E zqeWgj%nP9dtf_2~zUi|ai)`}}^7w~t%ZZkmFJG4p%4RC;}OWXE^z>}04b zUSOA%wR>?S~$a z)|`>V5>=f8hT2wY+E!B4_sjD*U(gAn>U-sYRGCXJWaxOkOr6Yho4tWD73tZ+{hmT4 z5?OugS@jjK(F029lc#;rffE{7xuB?bG-wJHWI%t~=aZ+$qiT+*pP$n51)U15DtvJE zV-*AL;YUQJMqlot6nYt}w-c8bjl={HAF~~3QNj?W@oBqIse;56iw`)aALn4_C1|+~ z+7Hw|!h-!i$rD_83F`E5P(ygjU34JsGHTEoUO%N0aiirw}M!GZ=D@c{d3#p|Axk4o-KdF16%mru`O#X);*v0y{nN%WZIEKLKhp(9{Dm7&-~A!0M_+ zn+)DQ2FtKkN{=Q3ecEWyC-pXTUx!*-QnyYy2q@v8GJXHv?ma!c3vv0+(c z{)#kkx(7dga#3tMP#UwsOR4t=`kSCJm)Xi8g90PuH1~IkH$Pb%-Yp>-Hg3PSZEZ|2 zAoH-ZS9X1M#q8=`rWq`UYo4&)Egj2%_z&I;rt6p4(^Yof1|13^6V8@}rRB*njrr{T z2Lln9WOj!5FPjAAUfd`t))kgh!}S!<1OsfPo8=_Ucv_BF;Cwy zTvd9>BUMtoFS;rqW!)XU{}O9M-*M#vL984$TE1JsQA1Q${r#Iah0L|cN>>jz8h4-T zZ`@-0w&!2*WL4%~|iErI)kwKGCJ~#V~hQs-Nx9+PU?<2hpB`$3t0t>2$=R zpM+C7K~>g1u*|f+Uuj7OH|pj|zV%vxaFszDIYeBHx0H-1M^oui?5jj}jw&_Zpshyv_2Z zxzQr~W@LdT`XWMT+&hy2h88n2_?owxY5Py^(g6{)jg8mN+YB6CA*TX%*5Nqe^1#u{ z7-2~}O`C~=)0Lqp$f(o4Eb7AnO@ZQy7PrgRjhDs*B~~)E>K4}CKEk%m;OgXu2TPjN zNyo(Lqb=w+VsFd$&5X0eX!UuJL6i{}+`F(~g}>+X3^E9S8LZ|Tg=$@cu|}gDB2mG5 zjpZASaxBUaH(_$yU>_oCeWTzTCN=owS(t-|Pe6;`Ncdl3ro#76vrQ>?lAp~mC(p+l zlmu(;6&ZMO3YjBj&yLVO`j+>hm9Kq4X~|VLHTT|kHYUaujNZ{u6K>B>wEr8)igsXr ztEE|lq1?pn&Tk3{nbJu-0D0vOp6zQ8E_oYrz$rTQnYA05@qMEa)F*bA4m^0|>w3Px z9P1()>0BeEEzn4FS!hQLBU4k{g1`SX#bEM-Stl>M9v?0#c6pJrNN>ZtpW{$&Et|#G zJhb%#TMtT+UfUuyY>>m-R5!_H^$J2L>c8c}c8M0sp?!^oP|syLf=OfSp2|29WII<-h6h0@rZfs zhY2v#DyXD?6B%I>ah;vPEAsXxt~2*OOeBTYPN8Zm7BcU2h-LDPlgvna`n%)QXb&Cz zS3bkrx_P_f)Kz&^Cgf%1ce}LqSBgi+H=YdZn5t+7w3IP4U)1(p&`7>#+Iv>q)cQ~Y zYL~k%asee63>^PdsP}Oym|HO)8#7;aI)BZZ3ry?v$Hy7esn&g>=8o2HMKLWb7T#1S#B zO)BqwRI)p5PwS_!*B=<(Y89x?)ajhS-oh*-Tug^?Yy&Aq25eYbIQdWK%s_BESssFg zI#hM)iJt`=!VKTIT=37yD59uYHq5>x&E+DDJboX>o+jV%5u0oaFn_w9^L0TE$D_Vf2#K{FmIql%9|E=i{omN9qM= zL7C%d-_ut~6k03+U%UJB>uQRv!lG0Kc!tpSi2auP#8JoMT<#q1ziFp}iiHt0QrNuD z1KJz;E=Hx(b0WT3%T-?Kwn$Ec3e}kIV5{Z!*c>RisOtIVBQ;fe`&rl|~9#DhC& zq8kYN=-++16v+N!#DL-e6T`W)gVUTQT$ft*J<@woc_BW8c!X&T%X|B`*4($!i&13s zX}|Q15k+4GJ@!^qZWI%J~zGA0E*zlX|rm zrv!IFzdEqw!XXL^$d=4+%JIb+!wmyLl0RyD^#|+yHi8*ZfCwvs>s{Ze4_22NL8Q$e zGzm-5sa9y{0vYeEDmQs%YMy^CKXZ z^Od6xr|E0bgy>G)kL+;@>bY#In#qtRqTRkikIA2T@t*ylXo!OSxtE!$6$mY$|5sJZ zkedfJoOFpI+f=pvbl2C8za*WamOR0fy#&8{kdA&ou~#I#K`g!>RJ za8aL8O$HDf+<#b}!%r>1V!Gygt8vSfK*X#sV&Hb<|E(Kncio{lqph4&&qJuJ5H!pM zn!oQK;%_~H``)^Cy|vd*PD6v4)JhMEKB+Z^od_!8d0BUr$q!%(@x5>>0dEMmY#>Ld z2yQT5&w#g*1e3_cG14{$?(l49k-F-)Hz9btxAeB3MsLCO?+BJDd~tFQOE%w;W8=2q zy2v07{i|%@rT$sqJos7tOt=0jWfcBV>O}skg#IfgvJj%$RqU-~U$d=dY8m+au2E?{ z|NWj2$JbT9T&aWI&%ZomIlHG#QuS;=49c($#|DK#(-#CcXyEQ7OaH(|;DBEh6adoUMJzqO2EQU3O{BC~%%mIS>5}of;N#}6oT~h(O%D-J6QLqdZiG7Is&;3M z_4Tpiue*45CS3&fYY9_Cq9U+q8M|Hh`gL*o7!~Eeut~R!Sjst7iN-Pd z`D=mWq`nt$i2dUqmZ)R_@zq$0u1!h5@|t_vbF%v9m*O zD>GvTRa>}0&mXG^7nFt1pH4q>CZFE(>~NHia$Yx15sfd-f0^te%97~WE32#W!Ouwe z=Gwqb;yM}B^AW{)f-j@}&kpuE#q?o6 zG^Oi=N}D5Ta$aShd;B0>Wu_Y^XnSE~K!YSTEpX?|C`;hUyCdF#$M&uJ*1654J0PvM zT&hV|$zUv!#Lf_Hn0_Gb=o;)Cdjv92mGH)a0)B7s3|cqYY^8GkBk8pS={5pe%-ae- z&RwhMPH`@DcLg3VR;GH3(|AtkHs{F2UF8jNxEE)rbU1pKTp6xq@YzxRl!QXd;L>6q zRg7mmmXXvQM7r*bUu*)HBA9VAQeBDeIHoxV%+zEb8SujZX~sk#z?@VML+G!$N4hK} zP3DY%-|*v18^{HIb&!z+&A-H=`f{PENx`izMu@dp3j*OLX^S2Bm-mpa!$I=476|_L zO{J(-IH4<+Agn<#<%Eoa3;i*O`O~xpSGVz;?e2Ml(s0aPj}It|cc(k2o9?@))7*|L z`rt957AA1x)qsgo@yEvcg(B}Uwl&YWK4L_UOA9u9jwL$bGJDCnyzbY1``j&xn#lkI zxAFZ`4l(`Xf1uGLLnLCh*BrpsS^P3g-s|w|(m8in(7>cVWQY6THdkukvm*oawsfF{ zrrk?reWw1z#}frClNKD$H9GG1>ztL_LRX8Z@Jk^3W_rqI17fqPrh*z zy?LvskIzcDxVZci!^H70- ztS@Luh*iCLu7C`#K=Z+{@*zAZ)ab*kCz3Y4y`ueX0Q?`jyeJcD7TmN^yg@4~|Arm% zG-{ua!vo<@RAoKu;HQqwr0&oIVpvcn~{SDr?P(hjGeLP!d$&(yKeId@~3|T DCmK2| diff --git a/doc/salome/gui/GEOM/image7.gif b/doc/salome/gui/GEOM/image7.gif deleted file mode 100755 index dda1141af41c2bca759792b4729f77012a08b10c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1529 zcmZ?wbh9u|oW_vO@STByA;?QWajV4AWW%6)mQysHw$AY?zLqRum^|fq^7A>_bKV!P z{a*ZiZSj8~+FHH!UiJ5_EgTFjPEIXBhArQZ^}IjV^Z(kEy?dwJ`#$CW^Em=hbN;_y zI%Uez|KFGX|G)PA`?cS{ul@gj>$P)RuU*@E@7~tu&$qsRzZVFO9ou{E+}>-~jxAk! zZ0*`(TelwDyBFx3Q7{?;^b7$VkY%8}z`*gJ!I?wGW5a@j%^bp7F()=GJlrmz>@~+@ z*_y+_d!cbc5tmb38XMJ3HH=_|=`0o0p%T z@6gO8>$N50kce)Nmgmc^dN zdRyY1?A?~kcGs0KpUmy0=EBtFQWv6JZ?@Aw#ZfotYQRLBwj-)u$_!z#99k^Xo;a&y zoV++);NtXPPCbjIhZ^`DPtKb@ZR5!a^LTegM)YKVJ27+aCeEx#&a8VcC(fUyy6OVE ziqetiPCsnJm=^Z#+_2DbveuPM4#}JZM|QidJ2E*E*6z5ld{WdA1{Pk6dki5VOnfX& zO|$GumNkl01~f46m>PtIz27${aH-n%kfKv!iroSG zb;?arow|;`d3cn4Yr>kdLE8i}IdvUQ6niMJT)WM=oNw)yOFrgrzg!M**Zq1WBs}-) W)rj=9U$4cKzx{eWVYR3LgEat)nx|L* diff --git a/doc/salome/gui/GEOM/image7.jpg b/doc/salome/gui/GEOM/image7.jpg deleted file mode 100755 index 2705e0c75d55d25e47028962ab99776350377e15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3007 zcmbVOcT|(v68}OH0w|qCh(Ku4K@cJl5u}KM^s2y9l-@yZvAMd^S&Nuho^P4m0H*;q0T*@%zGr*#)sig^ks2>vG z007E9fYQ03s=;SsXXEJZ;p*YwWarJNMmsO=@H@pE8@ZvaiFFuP-P_6VW+^Ba&NbcsXFnR{WF-|Vz z31JaYF>!hHX$8y~MRkn}ninr=X&alEnwej@YGGq*XYb(Xj*qXOf580*55uvK zA|ex>B;t~iQ&Q9L**Up+gy;D$UcM?Tuc)kgUER>w)ZEhA*51+APaGH=8YX=hpP2kI zH9a#sH@~{JzVU5yYx_Hyl}ecg0s%u{2b4iHzSJMg3W4&=(z2-mQ{5JI-PM7wJRJhmeI(tL0LM1f42P^KUHm^_g9C;WHgzn;nt%xHRO z4n3Vea-ROL20sCizVYDgJtQl7kLWWS;I35Ja|eyHAkMa?WxrI&Rx5J4)gMFZ7z@&` zSU>Gl?Yea>L8XmA9>Q8GH#W>O%+#r4OWDoS4J9s4e)OjR)2!~WouzBu6P9=H_gKlH zW>Bc6sF7RBBlv`~DYkRnS(`<3UOXbJO$`J_-5_>_ve@IZX-#3A#kCRLmx^gyRPVDkZ`#ZyC8%G0-04e;NLe- z9ycoc{-SLU#u%Q9#Y%~ic+Mq<5AtQc01pA?IPrqq_a8N)3NqbVzuF4+AK8aXzuY(7 zrU0qW%GU+cRhbB$#@%+U9Ci3vi-OUaau0g7xuhr8Wn# zh~(nYQwR4%?%4L5Uu@KtK8ah#_6z+H|3Ot8qyg0&u(lm?F=<>oJ$dhAHEP1Ue}zZC zuWGdl_YgmSj?A-tRIqs{23>hwJz{0-(R!Qva(kM;-j?r|1edkiYtp8|AGcJDvNbuZ z@wkMuBaBL-+~#p4oJAhqLX*pq`(9{BcVB}0AjXPxGNC@PuzmU_Cr7NdB>J>*%}b~s zN57)jKxv0dHMe&Y1>l3t4OTl1IBp0K<73B}Sro#TrRCFm1xe4>`R$<5L80bzZ6!4w za(;${#f2K_*bU{&m<~G&=UixsDLKP7SiXm(fF{N6B}cs4EtoZP3kz9WMPb&WoqaZ4 zaY|S5m(qs}V!2xRV&^Oh8yPmAM?bZUdb~mMX*GRG9Eizy=k2yowk8p9B@+FQ{C2st zV%{Ru#0C6-yEV0sXeL6B8h|1J+4H>KlTr8bw~L4L4HHYFyhCbtsmxUrx9bI)7Lb>- zwv-gY%g>nIz5eAkSt{kR5MUFzyYFE+iTWfJhmxL{@ z_8oR2;{j(*Pm7|hnJ%N8ghAy|Y$WR^&43g|Dg*xlEQ zi-j}M*2#vkyFT^Z4?dwSiZ)}XyHh5Rzif=pzh5-}^o*M`6U+fr9jKesaA8SS$sRoO z(|UMQuwX@VbFka9%5VACJJ(cn+xo7ET6V9W18eU@ZIr|(&174RMhD>&l-k{u7)UJA z;-NZ5*8JRNMo7^y<~X9@i=?S@G%6c41l~xM3|AbfSZb$Kb3{!1JO;BcXO^I}GIALQ z!nW?7P^c1$w*v%~n4engxWjXcv@^ZfgUdECqgo2a)5489p}sl8eGxYn7Va`V3_SO#AXj zXNdun+mjjkT(z2^Y{^+=(a5P|Y~byoh5`IUcj=bxEna>~bG4NM`PDH6QZ7O9x=$$&-FI0%}9wfvaG@E zJ%6`g_S9l=p0H13|Ld8_btDFJP5;`X4L5exS3PChi$#-=lah<4x?1zmWHS`AKC`ZI zST8E=rkANKnn$bds#lRzY9+c>gPaJj6bj@NYjnV-T{lX=)9k)_>7LbhLfGIAp#G5;UJt6YwJ#PB02PzWplA5?tPUnZK!X zakwGR_da2>WY%#w2vbvMmu&T>;S0Nmd%(`YkR)@9FsmW%WbDSTZ`TVXmLM6%T$dK* z7j&gbZiPjYl@9|1js`1F*FVj`7{yA${{*zb9@PK< diff --git a/doc/salome/gui/GEOM/image70.jpg b/doc/salome/gui/GEOM/image70.jpg deleted file mode 100755 index 42f59894594c88208f6f8c5feaec8d7d8a178a67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9666 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 diff --git a/doc/salome/gui/GEOM/image71.jpg b/doc/salome/gui/GEOM/image71.jpg deleted file mode 100755 index 0572119d58dc853b6a993b6fcee612c870f5ced5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8737 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 diff --git a/doc/salome/gui/GEOM/image72.jpg b/doc/salome/gui/GEOM/image72.jpg deleted file mode 100755 index 3f5917306d41978c375c2c50f34c105b529297a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9271 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 EAGx3RxBvhE diff --git a/doc/salome/gui/GEOM/image73.jpg b/doc/salome/gui/GEOM/image73.jpg deleted file mode 100755 index fd7a336186668c923b8e0bb2a88eb90feb81cc8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9992 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 diff --git a/doc/salome/gui/GEOM/image74.jpg b/doc/salome/gui/GEOM/image74.jpg deleted file mode 100755 index a7f769aeaa1249f64c0e9a775ac7f49ec36a5408..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9311 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

    H;i WbEACaMfT{-hQVy2t~>{I=zjsaC@ReW diff --git a/doc/salome/gui/GEOM/image75.jpg b/doc/salome/gui/GEOM/image75.jpg deleted file mode 100755 index be32aa04aef61291878f93c0d4b99c07642785ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9913 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 M&i0I)c*?i`2XzTKb^rhX diff --git a/doc/salome/gui/GEOM/image76.jpg b/doc/salome/gui/GEOM/image76.jpg deleted file mode 100755 index deb1aedee036ea5a3e7dd2cb237358d9a7bfe945..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3194 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 WZ$bP09XQVO2DBmF-*@qH`u_!tA!cR( diff --git a/doc/salome/gui/GEOM/image77.jpg b/doc/salome/gui/GEOM/image77.jpg deleted file mode 100755 index 153466808cfbd95543a89ec68c6b293eb5664134..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8333 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 diff --git a/doc/salome/gui/GEOM/image78.jpg b/doc/salome/gui/GEOM/image78.jpg deleted file mode 100755 index 8737d822cba3c2c149070937051a3f091265d56d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3702 zcmbtWc|6ox8~=?N%cvJ4dqT*rl4L1Olx?c98`x!6}lY@(ww}-d0tCPQ&ftSNcF$<-Wrr2^YRN`6uvAfuB@uAsjaJTc-_+4_OAW?hmOwvfx)5SkNOfq)^bdyqj)!Hf$GgD@XgV&T>@X0`V{B7P=@jYm5@ zx1t#;p=`3sd(*Fvolo-Y)QPn{)cc_SGt77XC(wUm{u?s=EdXN!?gANL5Cc671crg= zW58iBi17i20dRmS-lRNrCz>6Q0qyn5&ilIk`cp7n15KO;_Bi6Ce~^BEmiiDTmUmn| z!nCcwbJsRqsl9OJdj=fnU5##qGMi2+*=(Oe&8DwMhD<+L$zy~$)ntSF@!Ne(MRPu zt!o?{r4Lv5iFK1{*=;_XXRs5BCuRu~AN9SC*V}&T#BiE>jJ!eAXmpZho~%2^TcjXP z4v7zJT)`IoZUnl-%*dj9(cBELtNf-`%1&16ua0LCwoM4tmKod>87CmB0N+u}e#iTWq zye9m})orXA`J(}tX-o!_(6%+eHwMjjVu8KHtuGT`CF(eTN@qV@QIS!TK%OCH3kcu zy#qTvx^r{x4cDsFgEf2IcGmIYW#V21sG!LB%bZs^nUR>vE9NovMoftZQDtp~WO6GQ z9}o75Ht|$!8$&EDR;MtXSFGxd&whCf(=coP^^2O^5YYzb;1Wr2&T%BWLvdt3%H-D@52?k%h zZ~ADQ#S;wI$`d{+Z?5RE)0}qE#4S;G>g|E)c~n0MfdvsGM)&cCf{=t?k@h;HRV9*q?>uh;Qclp(4ppBq=4vRY(z zdixtH)QT;wBKvWb8a|^|^^dnT5KG_5wtk-aOE&L-`RMh?8p^QKQ}cGb`EqL=CHwho zgQf!aTqJ3Glcen4s@cp)!ac(75sL+%o?~#k)^$Tz6lY=jGUIn*(G5MFh9ND8MW2FE z&K0|8l(OftPwn^{$$YUKrq@383HG@5>foe?lrTh%tZ9Va$j^txx+T2&9z(q!omr7c z?k{Za+7QO{f`RhQo(k!OkLL5^$R+MQW(x=(l&gogHmu0v^dFVp{xOY%vx8C_&f(9x zK1akw8YjOSem6)grUMV2`AF}u6C4$ny(JBBkm4%( z7es_DYkR}MaASUZa#`r$e5wX^CI33LZI+=mdoBv&u~g?n-!*FmKRp;0eK1bm;Y{jT z-R-F?uFaf_9vOaiKnrkh;JD}#4QctdMQJkoGCJc{J-T?hfVpZYOqqPGke6H{d27oG zZe|22znr+C=(t_We_qx@ zK=kDdpnPaEZGJNWRFuMtnNYG^164?cMQdL{82Q7lrt;Gsk#IhjFuX05CzarJ<`9>Z;|g;VzVX zK|N_R@CyqmbB^#$I4~TvHFXJk3HV;f1CSYzb>t6|j-8ZuS$cjBSF39Dc{vhKZkAdp zn!Dc7HF=U9!?Y*SdtuvCYWGcrKLp8*!cq*!&1p6}8%nJ-G)$(n&MwBTff&a?Bk>GU ze@EZO$rh2_UWG%dxOP6Rb!)FKMx^KurY=luxZ|9w>M_uZBoDLgks0&(&bS*U84IJd zpg5P20-=h}xO5AtmVE&UoaDl9c-r-)DIMz~!D&%M8*HAle`=%0a)956c?^)+DlCUdA-OC@~J1 z6(L9rq-as=8EUmxVuJC<@Y`OG1sxtsP>!xHP*MNVU;nVN_&!57>y{%U9S+Kn5h!un zCNKVk$xww`*YibMcw^l~_tQN*rwlo9E4$hw^G30*@3h%FM5SfbRb|h=DwYh~%OzIk z>8qTt7BQXzsp!d5-v=WDDH(yW)Y_94V^-zQ=s*HB=xP$Rhg)@01D^3U=7F8;&%L5& z#6pZ+!GDa}3{o>_znH8M73W~3n$j)bzD97UE>n*ElR@%sJaVX)Mg1s`o&rmgq^Dmn z!pxD_hmJg}K{)Hl>~DnLk>!iZqEC8Z%clMCBrw_} z72Fg~q8xH`v5d+f3>% zxlu(@90KZU(`}@gbb2&7eeJ?CovnKA2?Ky;WpUc*EZmm_{PNh*Q-t~j$=I-j!rrtTMmY` znmd#V7XHZ7T!M4=W3etO3&l#y)wuCfcA??QN21)jp!#71Vfp3x3R9)<0w z7gA`=FYJyUn)hP8;{C_MS5g^N@5wn0qKHd%nE3s-Tz;J5^|??af(zxbK6?T(EA1E$ z`hm`M5>^+oC{03T>hy(eId|L=Y|UDjBH1!(bzns9hW)dnRL+jlqqEgvu!`bNzM%`;6QFpw)Jj1Oij9ZuH!`>!$SCoCSE|XW_ zFphiM(TN!%-%jFxH1duPz&;0AbB~mSHt(-y#3TeD7%FuB=L0$rMdFP=uj!2&SQ7Qf z-lhXNd0Fv83!6s{Y&`z2s7)7JXq8bbyLVE9L{WvKhP8$?I`GN3r*)CE%{nf>A+VSv+&Zza>G}Ie=fxNe@_?j--CNk|NL)n CJH|Eu diff --git a/doc/salome/gui/GEOM/image79.jpg b/doc/salome/gui/GEOM/image79.jpg deleted file mode 100755 index 099999d1d786445a358171046bf29f735487029f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3637 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 K|Bo1$Is6ZP6{BoD`V z7Md^%2(@yF!XZ%r35m;;K!&Sja{`odC6HqhIZkHD$ejRFXo12;6gdc`0ap@02`s3^ zfsz0n0jSl60#eOatF1r{te9MgjS!d>U^ajOD?Z}D9RLRo9009aueI5<4u=*1JxS_E zM)X#z-exoGL=AHggu!AlkR*ZQgjP%F^@PD-K~alZZNV@Lj+06yiK6p$Kk{*b|1A(c z@AF@nzd!-aTin{vT}JZ=%jjusG?v4G5=`87?vLZ_FLQ=_+L~^k^hb_)C$?+Ml_481 zW|-UY-WqP!9W3!$^WEA=#l*1rese{A?CMXJuyi4D0SOf_@6Nzen6oaAZSL2F2{}md z%Sox};)Bv?^v6XZK|N`gqAO6JBlhr(z6tPz`0roNy9c{eUDnp#FW+=H=Je!WXZBwe z_#~Zo@0w{k^0e#+uOT}}Q*QJ=5PVPbf|AMXJ)5;+hRMtOrzSoY@&0*K*K6{y-q?QO z*UZXCq5HPzH!UkLdkd@Ot^uY3b6^ygwKgX2NIDvYav2@pHdT)MolJCUuy}%jPqZZmK{WwVuwDDDk-5YqUAcd@wYufm?@EMRF9PEn*Kbe z8_+Gc)wx`OKr-5Zq#~|uN|q!DA3Qxl7jJM4p=rvP$-bkAJU>E8P2JlSDrIH5OlLQ^ zc6XR+;-Cp5uKLX0*px8L?`Om-mxeJkZ~KsQ&btSFa}VzEq_V_8;P5vXGOa3OoEcA7 z?GJndw^XJq?ic0OtXWrg(eFd+80+_H=jU+Lw!-k;spFGIMvUrRD%=<#t^28`IKL)C z`rX8HIGKHRVAs<^&&8tjupuKRNe=rr?ZJg@qC79d4r*O~%#JEX(&d3GqQ1hoR!RGK zPT#H2-E&#aEjpXYS%AvA*o;*xB>nra97)sBqV)sM?obZzV%_HUCd+cT zWx+m)e%4OP_F(?_>)4QuY9otCL9dAubQ9N1oSCXs#Hs=f#Us-Fi@t3CGtF;e5!0CT z-eyLsKHg9jt&;f|F0B!`?HPSLM5WhBALjenU&Se`xnHa9dQRPJe5|5}pK_1Wi6aFk zQ`AVy@j&~ug+bpcB2TSPo)H%C>pB`rV%|Pu2vTSHNJB&twK?YUbrEy6{`-!xMqiHT wMZ5LN`Hq)$ diff --git a/doc/salome/gui/GEOM/image8.jpg b/doc/salome/gui/GEOM/image8.jpg deleted file mode 100755 index f2c07ebd2b472b6ee5ba0cb57966c9fee311d48a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3262 zcmb`J3pCVQ7r@Uv42CcsgNa5(NMe`@b!X&FH_tChF-2YxSBQieO1Ooj$wiD}Qu4SW zq9jDzlt~AxTQqc4 zH8j;>C}Cky5m9M0T3Q{4#i{?#1$qp-4ggFDwpzd+1qMeTg;2sGqG&M~Kztn&{J)NV zHz)<*Fa!dQLs)HO6W6Sr;OVPI%vYG!U>X=QEW^pAbcF8dF-dLH%i_VM*Q77`kEGCbl` zdy$b!`F~|L1(BGK9Aw!PuQgiKAg@(yJ8>G(euPJFLLFIJuzd^)w*gPadXA)cT+0Cs*(^e4+{(O3S5xaSCwkf>$YmxXIZmN@ABcA zf)D4#8rYOZeJhzS*7*w&ha|^bEs2fQfk6$Kd(>OZDH&`FW=8Vz4r**r zi7Qqe=5BnJzvhgaRLcl!_L)+zu0j!2ZhOGe&5e3NZZw~h5l>3OUIhjpc-^Abk<8iY ztuv=tJ#HMHV;p*&=sMEEGYk*|=e zScTbAuHnqrd9C@R9`N_QW$BGQ>KI$fA8PGocP{aN94{fsMT9tCApCsV=kTd>?)p<_ zvX<+odh@1hxN=9Y{c1NW`QuOZ-hF|i{Dn;1!m|R*q!NZPOy852?Fp z%*`B&5Vpm|#Exp@-=n{A>ngAv6isYXjSi2YFVu)LcM%JQDVOo7NF8%e8}KcoaoQfe)P5Xu?{Em$9^N)P)EPTQY0tgivz z=lLyk3@M4XbJo4!*L(8!x?`jH?|2RzB{H8|r+9m0Br$!0l5Q9Bk+4%4%_&M6C;0Cc z@z)e*eTKki9S(C%hm-h;TuhF~ECiC=VpVLLQX_h(t~^tf7s5J%#feW-@OyQ1+AH!U zUln%O=@(B-N1{P3X&US%+kobtm??W9vWP|D!TT3ebB;VB(W=Rs*O>ZJ-81$Wo}#YzlYT?p^O276fMOdhw=B!yj*VWkmwsZ_!$xPR&I3sSdl- z9d`9;`>tQ(wLU+WEi6Uu>{{g{DOO)1i$(nG+|pLMzf^M9<};L=?}Gi|!PH^+{IxT0MCMZ|zLO!rJ zO>%B0u~s%S(%BJbIE)Dngn+5}4;?PzAtZd7O9QUl8$>hv8BUdwEK1SQ+QX!P#r7@= zG5JBgV_ypSB>nerWwo;1#`3~8ATH)IEa_JC3uCDWJ*luYCIMHAuD_kM=F?x8-WnP2 zu+niVDa~(OYb^0Kry(vbChB9;rcXiO&bFw23)f>N;M0xON@FIm5V(e03RF$sA5o@1W#Fy#($?*g zQL=cXk(O*wPc@YT#*U7v} zpV+MWNR3JV0=7lxpLfM5Nu@N*4ap@Ae^HBKNJ9XH*PmMSS)~6UKN;q#!fWJd%^3zp z+o}w>(+g}-g7aA>pwv`)lJs2rDA%cwy{;7RNiRPxi0TqM9;poi`R?`mpHkmZB&TkZ zv;=P2=qKRElov?8DhbVD?LOXVFI3)5Q(-W{kz{jT6jFu9UK;WPugb-%M78)=tz)Lyc_PhwgS7F}9{iS^+kT!vQ@p|7Bh?DT7w z<&69UC3{cEMDW_Ir`?rFjm;&pD4J0cxIdYr#bZ-Y zhFb==ac4viBJ4UB58NN8le}K3#!UO0_UxGEqCusRJyJh3Ph8t>CJRvGF!6O$Y4Lu1 zr>S_ke$x?BIMIKI`7ZQs=PATD{~z^Vr&!S!IQ>ygPp!F@ZsF7-=|M)%>5Et88fosW z?3x@~q8}2AN+K>0i}SFFGCOI?{_p&Mq91%sH{Z6|`u2-H__2j#9|f=B8A4d}=DjwX zl8)|g5B=P7x(4d zJ+Hbx7A<@6^o7HY^U}lvIjFn$+El#Xcx04c-1R&mlM!#_HG)?v&QXxe&`aR?a88x*~Zr5h{dd#2TMcck;UWRBL1(BneU{(M?)+N=o_Pa g!84$khaduPns_Jd-*k!o<@xs4$K2m1QK7+q0`1XfssI20 diff --git a/doc/salome/gui/GEOM/image80.jpg b/doc/salome/gui/GEOM/image80.jpg deleted file mode 100755 index ce81b706a178df03f0f2ad97f21d5b7b94d28627..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3884 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 diff --git a/doc/salome/gui/GEOM/image81.jpg b/doc/salome/gui/GEOM/image81.jpg deleted file mode 100755 index 415dabeeb8f8ec45b578076ba8cd9172e162240b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5230 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 b%IqUEo8QkZ)Vo8>`r7~gaq@pj?2h~oRF>I- diff --git a/doc/salome/gui/GEOM/image82.jpg b/doc/salome/gui/GEOM/image82.jpg deleted file mode 100755 index 96d4a04f980cf423bab7939de3877740f2df9fae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3527 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 diff --git a/doc/salome/gui/GEOM/image83.jpg b/doc/salome/gui/GEOM/image83.jpg deleted file mode 100755 index bafd8bea1cee393e270f929bde013347ccf5ee91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3741 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 diff --git a/doc/salome/gui/GEOM/image84.jpg b/doc/salome/gui/GEOM/image84.jpg deleted file mode 100755 index 25625c16a08b2e6575e2518558151c0541e78bcc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3512 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 b6Jwdy{a@_s@2T8owTr(x^#8xaGN=Cy&{9Cw diff --git a/doc/salome/gui/GEOM/image85.jpg b/doc/salome/gui/GEOM/image85.jpg deleted file mode 100755 index 51ceee454a0d7b24872bacac14c9b4ed2d679d80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3785 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 K>M?@kf&T;TA4#nM diff --git a/doc/salome/gui/GEOM/image87.jpg b/doc/salome/gui/GEOM/image87.jpg deleted file mode 100755 index 8e6cfaadc54456f6e9cc3822d8acdf33f2618bdb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10601 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 diff --git a/doc/salome/gui/GEOM/image88.jpg b/doc/salome/gui/GEOM/image88.jpg deleted file mode 100755 index 7029d828df0f404ee9ff31d188c556e06931d9c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9341 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 U&q-)-iOa?Gj6eUbBS`u3Uxb`6JOBUy diff --git a/doc/salome/gui/GEOM/image89.jpg b/doc/salome/gui/GEOM/image89.jpg deleted file mode 100755 index 62535a8029f1dffd50f6bad626e67b3eda3f7871..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9470 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 diff --git a/doc/salome/gui/GEOM/image9.jpg b/doc/salome/gui/GEOM/image9.jpg deleted file mode 100755 index 6040b66777bc15d28fb878fdc0837fbc3dc2f302..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2956 zcmbVO2Ut_d7M^s7NCzR(mL376iwJ~bKyVdJ$O5K&N+msOOM#mYdC zC=@FTD>oX=Era35$o$WZ(Exb>00aTqY2a&vKw)qM62-!b-UR`$FBtRw1^pAq37`-d z3<`%Km{u^i31VUZ&V}IqPDu~RL$F7Qd-5uW#AmWd=$F*;nRPEpsyKLsvZDF-2nb@N zq-A8W`&8A`4{99JG&q7cG&*W*a?1Sl8KQ-y70J=b*~QiEytj|9-<7NW0b$|SBO;@s zV-gZ?B_*e%rrmy!^)NdpH!r{7acNn31@+0(%DVc7#-`>MEv-GhefDE6fYV1xI|RgyhyEpzJ+)#Fax>c=h8m zOKMpqRLmCn9K5>G{F15@QuJ-sJEZ?R&Y}Mo>2I9BQD*!CxL80uNQOa}?71K?E(l{7 zu)!eA35*Niz`96{%0y@|TNmUu;4lI1O#PjN=%QsI-nvLv@Dd1Sz*K?r7hFYmcLsvl zp~0Lh8F1!+2C@)5Q26o=;*UX!xw5?$5zM{)1js;R2B@To&l3JWes?qsAs{HZ4zVCo zOgY#C$OgF_5&6;Sr8(tT*YSg0<%3J_5AZp?7kZ9WyUun^q^e9RzdNd}M8ns=*;K-> zimYL^z2VN6K?br5mbX3O?1C~mBY?0hEabT_{aSVN-W8g-L#$sC14Ngs6K8Dn(gLlX zwchE$rLC*uQ#NhM<$2{PZ#`|*7S#qLq^xNt-#ffts$7k(;aE|dviG#@HOex|8?|;V znIOkl-H&TQW*lG5_;qH}flPW$r{vT*_qz_Oso6zOkd&>|5|a-2*@e)C)vI!81EDn2 zCzgp%g!pvA{U}A5QMtBSePf+B8te-uW?BfADKziYKMa7Bfw^sK;Hu!(w$p{EKb5E1 z#|UE@>Ha}C+i_F3f;vmIQEzPdeaRLkLM7Lhb;2auw#u#V9~&c2+boWgg_EiYO?L=L zUg8v=^xK8bF1fxbo4j|&tG(*F+A!6Z(2sw9aW0U{MDsiuTVpCmr`Cze*Q`aF&)2$? zId|Yjaa~)!G(zJ_TD6={{EXG5!u*degykZ~Kn z!c-K@71FnDB8w}8X)wzH%DLW)(^XF{$LnXO-i}FE# zT{_h-2oXT_Q|lvv(~UxGz7`Qx?tHh>j0LQwb1M868s0!}NwjzBU)RY!^lKrq|F>*9 zUr$2bOW{;pB5oN*r}TUb+;5)$*}urPxrL6z-L^Xu*6p!nIP2m=I9S8vn{3Q3_3J~!xXyKE|W*5JWt_JlBt+lQ#4 zt9Z~J1d9`MG-&ccy4gT<7n5&q zhUm^6m+m2wjH!;7EBzB214b?=7b-mRkLyqus9W>WHeG7GW_RD&&Z?+Q^txz{lLlXC z{kR>^=)!zaxGPf0PU&fpRf9-Pt)fU% zBkx2`{fhe`1^XjM&;^P>SdN}XZU61*`swreMY|i$X7N5CYnQC%i}Qq>l2&y(KiKBJ zi`%o&F==Q_|K3oOD}Tb(#0JCl?>FOWA8U)8s9&V5HU`bGPi^#kSh7;6G2I)bG?#=c ztiSR+^EGi?6v`CHcGmpoK^{*ijgy;Fi47Gf?9Y7204N54uPF*X%-dQhF4?$oEY^`Y zb*eZX>zsB;xJi~{WKr*UNdXQKw}tR_#~EtF5}VQ zv!PAXbZZ_9VsE#}BouUyTNigyS{9xyTyO1~{1(GMs^Pb){uloHd+h6f%YX8~-(V2N F(C^-*%oqRw diff --git a/doc/salome/gui/GEOM/image90.jpg b/doc/salome/gui/GEOM/image90.jpg deleted file mode 100755 index 33ffb488c9aa6a6acde3390874b53c258c0e93a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9457 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 diff --git a/doc/salome/gui/GEOM/image91.jpg b/doc/salome/gui/GEOM/image91.jpg deleted file mode 100755 index d425095ad4c07cadcc0c0e96dcc3ce04e7ed38bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10242 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 diff --git a/doc/salome/gui/GEOM/image92.jpg b/doc/salome/gui/GEOM/image92.jpg deleted file mode 100755 index 28342efb6b64bb3626735f1900e488f5845cff4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10331 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 diff --git a/doc/salome/gui/GEOM/image93.jpg b/doc/salome/gui/GEOM/image93.jpg deleted file mode 100755 index 07994992aa17c1be7233ad28c25dd988d30c1ec7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10323 zcmdUU2Ut_vy6p@BLQ{(L7NkfMkRl)g2`F78VnK?cfCAE_3L++8K`GKf5Fsj6K?G?c z7>ab1x~WR<9qFXq;L~T#$42X>L_3{);H1z zFzCe(I02wi0P>Wc&PkDT*X*6#JzPB;ov(R|7`fZai(F8YKcWbzL*PE3r=_K%rKP8% zqeIZsBN*A37#SEC5A5I1%*MmX%gfEl&CMq$j^q;%72xI;krfd=Bq=Q|%_}T-(^L z{@dAKPOI*x;iI`jw5Tt$d_aw-MKykHR1Ev(@(?_3pE zw(|;MWa8%G<>Qw)Bq=2=qjFSLP5qe0iIaNz28Kq)XV0C#U~$pX%HHAHbw?-X8{R&? zez*JsZr{8A;9=;a$6>K?@d=4ZPm@z#zRJkV%FfAsUG%=Vq_nL3Lq%=f=lX`mrskHe z?w;Rz`}zk4$Hpfnr>19S=jPXbtZ!^?ZSU;vu|tq)XldcJh@X&QG`FB1I6E!fK}C8F zoim85o(Dvgf*Ck2Fp4RguX5RWbuw{_tBgsk{Y3pc=zk4!$p01SKQR9RnOY6l z89+H`g2N#6>@YYxj5-Kd;4tV9I6FXrrInI>D7}tiA;(J{78gVIcn67R(j<~c4~OX- z3>J5ofCE@?KSo*Mvzmr#!Kiads|UltTyJxZxL;gV#?`lCGt&*jbhob9WnPjNlc_j4 zJ-m;<-MH{mWl7n-yFxFX2x%VzvRu258B6 zb1#_qrE1Jn6mrf}UrkJ0tSO+$w0MU2bY0&?%%eW(fE_ zan|mfd|NHr{#1L~zcE{doFzQMI`-{ClDFEK_k~?6Gll7<-EHr*8>C(DI}S}DXSz!7 zJAIWgmR&yJb^0@`n6O80i5*qJj!|xJyxuxTNMKG5+n+=Q=vD<1eH01RemOo+#Qp1y7HgGLpo`N{<-re~_tU#H>_d`S}D(7K8fCJ+z=? z=#uZkn|zHRvubUDdqx%hb!LL>NlZI~=;lqKTo_@(RMu#uwA>?vo-xwtZjXfYK2%yHbDz2Au+ z7gc*(D`EH4X(X&U)I=54wU>>^oe&T zI=1*tzVq0ietf#tC*l#Wk@?%p81Es$bL1O|-_jqEQ$NOJ-`76ac-SkeAX~Np^Wwm} zp~8VaWX0mw#T+< ztwzb#__qS-Pwj*S;?{j<@(p@(u?piTNBOC1t7=i);-N%?Q;H%HGAeDYkLqZ76}@pw zyT1i_@emZo6hCS%A)ae69BH}<>@l!}UWmvDJ$mhf#`seuN14OZjy{BB$OHC9LY ziN0DYV2_m&<^K|z1ZY%zg(=JYw zPZ>P8IQ1=Lp<4S$Re9p{c#ynhrd`_?Z%N6K?em_E`Z6sC7t_5^I~Lk9Gt*rJfm~Kf z7Zso~Q3Y>n7SlbkW0(Bj5C_dDbVgLrKxiiA?CmWIH*fP$xMsqrpeiGZcss6-@&Oz7 zMd9~v+@yjB0po-fXR$e71wkt4Q}_|EV9=LzWy`FbH8f3@cg6^5lIu?eO|~;}eJR?X zJ|c>Onm4Eb?4*of-ly4T?%uS~lcoI-CocO?gjHb(zP9=0RN?D0H-;k3oi5ORyB*DOEbS?NB)@e1=CrhgxMv6|vsVDfy&qN&POv^M&P^N*$7c=dhn*Cgrn7lbEfgSBWsnb!Q#jlN zzOqFce{0c=4sJL-$~1bb>FRD62x)KNKl=S?1@U58MB_At3Z`lWuSR9*oW0k?qC^K= z#ooNEAoubK+TnOqz;zr;2Mo=Krh}vy2KJ9PCMlQ`z|-KQ7e;=__{ULdc#wPhXvDj* zlXNez{fCC2PKak46LeF_oG>_u**CvmdpjSTuk4DfZy&r;nex>xM9oR}`8=bDQ1t|D znn6BX+Ggi;@3^Xtx2N!gbV~viB*yM$u<0|j^J?X=)1?P59!{itGCul<$(6PM#v))~ zX5xT+Oago!qe4o9rgP$-ch5A&9=O$%gP(B^V1H|Hx)|2Q8TrBgmG^uT>pI>p;0P78 zS0cCPu(deWL&)9jdla(54hA+^M+Mre*pW;sU;>&?u`|Q0#0|n28WG1zBGypB-6WC} z_;HmA(*02@Q1(6m!lzK{D+uzQ?J6GL97+iqr2>Kpg%kXzuE6#y4BNlLck-mAjrf@? z&Y&K!y|IT8{ZvH-qS=p8i|n3MfbXD9@gU)f6^OJ$*jY{*akI@>@&PKij%U8mY5nfd z_^1K-x3h_R6J0o2*@j(3<2Vs0@PZts6KhQcF`LJPPaJL^zE%3s+PC#P6$J2n;@Vj_w-#YBaqh|Y%LoC@ z`?5HL6N#FW{6nmkzdab3p6+KDm3@8YmZ|NfZI|p9BNjT7P%gpjhGp$CzS-nCtiEOt z4~*%@h!!;q-t#dR&rL;~h`#$UI5q9#xX^VuD{IrEB2T1_@J&Vq_=%`(Cjollk}4+i z*WZ(-rYMf5X1ni;N%xo}U+xVWoUOc9JuF+fh8VQ3Vpo18tG{;e)GPf67@sDovFhaL zn5;6R#;xL`WtS;wwtX?Zy$%l`AkSXU$5|?6R=qbKXjP`+WIeT)0y=f4xY8saKZO_R z)v@N__w&@J$*!sJ7xxMa6_z-Z9K4n|^Stf6HE`zzO6wz%-Oss&tIiWMJ~`?O`>QvT zotqVwGpIndvVP~eMr1FcFFer3k*Vczfp73(J!aXZ<&8TE~HM9)6^WD zQ=O2?m0fWRqD*|`%AH|`3QZB)OCY`>JJFQ>^KBM2Ri>c-=nx!u@*-h5oAL$CwNl&~ zNY28vv{pN~a9xmKjVzkk-kBS3Bm``~Ts-G*!^LE%XHp;Hp&2fm&1 zTF&7VHbZOp=FfGXn`nuW|*yZrEOOePDTzr<-Z z1z+tRnDcpiOc>4U2yh&OP<-R>fk`({oA2`XJAJ~<=a@N{Mb6dqk5=aS<_SG+JG*`^ zg?%zlZ%5z1p))KqXe6J%I8NN=sYzq=V5uE;t4X;46gR7xPDS&6hR|MWfGqo5Vw{f7+K<402y0$G^J{C`n4eU^k>eZBe^X1K@%X59bZ-lzv z#HY|pFzB6r(O}TTYCMH0tMs; z%95lt)b=11L;}7zihnwB3EO~UX{G{AGx8Q;0!{Bg1!!PrAkJ8Of0Q2vaFMvaE}YD- z+yP9ouuaU6?tf=mMhQlXo{)Jc{qQio;dx19Qde+tUs72?PDx~FbQFuMX5`I`hb$NA zc*T%Dlj~2^wQ$OD4fN{EcRTG`)>@V7LopKPo;Id^5GtP!sK%d=BL%woip%a#_i9#; z$heP3s^5=@nDo}P&-R{mqIvsljn>SiV&ZgiHd{vCJJxufbH1nIB9>zGjrfj@V(2%g zHs>lIHni!md|`Y(=qrz>q3?hRPHwjI&U#lXWkroQZ93y4EKQkCu^o{O|J;+H!E})y@8l2o7bkB7+0&vXHyrltkL>@LXC6>CW!tmjR{}U~D zqgU2O`Dt7%Co@lbwGnE~bnj!7+^Lo^rBFsA0MIChGfY^?Fma z7$-xTt)NwAO~`ShOuv)qSj{+wQ^v)k6~B3u@8VkG8LSf zg2>eLCz+;ie6=NRjEtd~3gRN)qK0)*&%yaV!sNL%NpgrhYJ;El-zCgRDzH`{=2F3X z3@uN^rNqoBa#61|sd8zZN4?#4Qi^xLCrHCbS}y)@wx5m;$@Bw3b!Gv*FZ@KeNMpiP z8aKB(_9y$#&8$bFR$}JR3@O}+5qv(xo4SYX*`IKE2Jc+CtBX7IsoQl^;#_6v6W&u^-6j4Lnpz*B@U#J0<0O zQ+y(ELXg4p z(~K)s`mk(~+BuN3flMZS0oIVfV*+Q;|64M;^iO0Yxi^6QZbnYQ$!Zr|<=noh)#EG? zFRN8s*q9jV$4k5uxyw&4ZuK=?(`oHe!&s*{6YH0fRknnASkt@|jemh$R^(LJxU^W* zN>TYie?;6+2G|YyMrz+cR(8U_T{Co zg}K*(@{tytnYqpcCulCoR~_~VF`4DIcxwIHgLd~m2j`PUu!-L%i`pUHqf{uY<4?Z7 z{GBm_W*P%WPN=}zW|3?XeZFwJgP)4yS^{(u9j@pW@{_B>qi!=1!ql9|^nOU5ASXtQwpB>z1ZCEe@ae;j7e9eYHHXXu2~A{IqPWKlu2 z4_+R*S}+4O|BaEI{qb~l6fP1KYzRN20$3NW99v6Br`+qtj%r|dSa&Sesi5Pw2MJ+J z^D{ODyT@uu1-Lo14QkA`oeFg32&+O;%($IjqAQSO=cr&-ON|20gn2QqFlk4+NVKKI zCk4^G(SMB)OOt|g{asJ+Szm^P+}Y3RTMXsUg`C(AK`2Dzm?<@?BYSk<@maFN-vkA3 zO6Y@^Jx9-CCF+XzRk^GMl4^6hCS!OO@@tk*)E;REcO&Jlm5V9CmBi9 zIdt%=axzDUR--}qRQm?=cn-w>`!h=v8R5baW1QuYZZ68^Uka8YeXYIfnnZ2x>`I6$N_Vf5M$GhR9ZT5>Js=Q5>Chjxjt2Gn6kf80dOy4L+Exe=x4O;KJ8kBCIC&Mjj zF3vMQmaQZX&octS{l-7M5R$;>P)XMK^U1fT3S2~olgGZR8Tq6P58Ul4d^$K9^}I$T zHQfs#qz~TIcZ&*a6)?)5Ru$R(t?I>h1@_5T7 zZU;Ro?76j3P#$ZW2GSEPs6hq!*lmlwZmIkNY*X&I8IjfoJFCJF2W3Pw_X9{@Jo6ya z;7&fK6xqJSF7|+V`agWy>$V6!-Z$`Q1A8>5wOMMRAX@5W#%mP}9NTBdsfwX}o&UVo7Ib01{Gw8_QLp5A z{nUWDT`{H8$Jua^Ssgy_95GYLldE0mwEk_*BlCNHjn ziHHgDl#|a0LsnQ4xgN?`CV(m}rh;8!IAxC$VBMUlV11j1ydecBgWXgxv#daz#lXlV z*-*BAv)%5%!-+0tkpC|yth_)YwtCZ{Ei6y$h%SzGDIZ0-I}RoE1AzRm3D0!&A0g|3 z7e%wOs;79u8E<>Eq%ODqoAOEi1N~z=s8bk(?AS9_HcRJ4O@r5}nSP}$k)Gm(94nOv zO3vaGNguM5pmP1aYji06FWyn@SMMmf*L?T!Psv2*d^C{3BeB+`JaG;uDmtR3h0^4w z*Y3j9`Zl>v#j6m`VIBVNWTFG|q_$r`7h_bChi%ztZ0Gd|Je zs(bybZ(;o?)GKL{9?b_xk1@zYZBQo=MWXef$p54|<~(f2Wr)UL0#p$GlNUo4kQ+Sj zA(qsKvTv3-lq6EoNTyqas*jzpQ}L4n|9^=gwfaw!{SY^9s)S{n>$+i8T4nFy$dMR( zp~O`R%9vTWSRMaT(&M~(%JbJJaxAOL6NIHs`5&)cI%eNABZ^b$BfC&R1)(=M;olia zXTq;WG6vOavhh=IDJpEZ3{~mQN(Z|x_lo@B(YA9HAC*7iUHw&GV|0R+=4;%wKv3Z_ zyEGVJwl_Ov=O8%BcFq+DgLd=Vv4%=Z)k9ZBqv=J(z>MJS4#b(UAew3BA=C3#4EfW= zk?F11S*3s2qu&y4MJDg-i&ktf7GL-w1)A`1Q5;JcQ2OhSfPDcis8Db6Eb!7%3F6^f zeXsMb6vwWOT55S&WcP%Di976f_nxPgopqYaFq3#$oS5skO{XkUeYk%{2)8o)^vl24 zOoXPzy-YrYtUfm*_5gxYDCM@o47zTK4Ju+ih>?jWQR|%$6&I2V)ga-8B9l}YP^E{U zvWD~s;UQGZj|nroRIoAzmAjqCE(J^6aRQY7XB2EYg~AWDjQ{4b*Z+g~&cy6=&;|VyX)>ye?82OEw-`$yfhR?4C~T|PtA&#? zH#x@lH3+tWN4S5WY}jtE5q465nhh1)Rv_+-kW7KVTWl2%ndCt^gxlAL8V;vW)TrP9 zntmaDMUM)wP{BUN!+qPgAz?*`{HY^g6*I(6>_`JtxK7}^H+hz@GJ#!F0srsg^FT0P z{0g%J(kQ>mywNNpJY>X1dfV^Pz$2V;Z_jKRyYm{TK|G^FmRv_c0zd#F2s|ZjH=QDb z+qZ`8z#5UD-p7UBk6TG|s-NVckxD#O8;Vq{o=mq#bB~rN>vshdHoVrIY8Fhd8w`#j zLc*y1J0!ZWwZVw~B+A_-C`(^K7CGoKc4m2mvWJ2;tN-HvT-W?3DpXr#n#SPIldEZ? zQ89Rjt*tDdTkB$x7@SG0#tcack}!6*yTmf6DMjsIM1Hv(j_{c%>Xj$+$K=j z`2CcDKX=M)3k&`@Mf0Z8#aE)pxJdIxUcGW~>clQa@y%cDgZ)MOQZA{tSp8I<2bV6# zu^G_bDTdh-k&wj2`xcOQp`CUIp271Oeip3GnS(|*3l$&pbJeM;Bi8Wy_4gD#+>s|s zFBvX}w{z5fcydDJgww9RQr4*gw^z$E(FRxDvYg|F>ZJ-xZqDx?bLT+?^C6AtO~_GM zP-$rNQAhdy5u}gd z3C-;yK~gls33>C8IW<=`EiD}qNR21b<*d*Fn}`-64YhLo{*>T&NNz`eqk_#PB<21F ztbmntZy7rRHTPgHC%%WNVGW8xXQR-ZY~(_Sv7$8JM z7qSWA_<~`Q#?()a6n;K5iRFv5Rg6gAn5@CcP%%l$3q>D6S$RcLi|FAf`|YEE1l>aqEJxKqh~bz|KRbk zU+{nY{WD~H{+vs}&$-ZKc*!1b>huCMs`d->uX=+8E$Wf%mz}kdgpgWHT2RDVn=w6a z?ONPO%3|G_NW;z`S~}Xjw(Nt41d!e&W-%RH~wKUR7EPMTbqspKg$rM)HLK?V!jkJ=jc d?`kAF9AX3B=9us0A8UEl)!=TkB#xyH{2RLXDaZf- diff --git a/doc/salome/gui/GEOM/image94.jpg b/doc/salome/gui/GEOM/image94.jpg deleted file mode 100755 index 9ac2ee50ca966ec2ca18b13b0971b52ef7c77969..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2935 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 W1Dp1YN!7nQ{M#Yq|GGq<)&EZ?dhrMV diff --git a/doc/salome/gui/GEOM/image95.jpg b/doc/salome/gui/GEOM/image95.jpg deleted file mode 100755 index 12f6002c452003fab9a7bf2ebeb88affa83669ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3417 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 diff --git a/doc/salome/gui/GEOM/image96.jpg b/doc/salome/gui/GEOM/image96.jpg deleted file mode 100755 index 53006acd803bd095482113257b58b53e5816b373..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3599 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 diff --git a/doc/salome/gui/GEOM/newentity_blocks.htm b/doc/salome/gui/GEOM/newentity_blocks.htm deleted file mode 100755 index 67110fcaf..000000000 --- a/doc/salome/gui/GEOM/newentity_blocks.htm +++ /dev/null @@ -1,319 +0,0 @@ - - - - - -Blocks - - - - - - - - - - - - -

    Building by blocks

    - -

    Introduction.

    - -

     

    - -

    Below are some general notions about blocks:

    - -

     

    - -

    A block is a an elementary geometric solid that - has specific geometric constraints oriented for meshing. In the hexahedral - case, blocks have 6 faces and each face has 4 edges.  

    - -

     

    - -

    Tetrahedral Block - is a block with constraints for tetrahedral meshing. -

    - -

     

    - -

    Hexahedral Block - is a block with constraints for hexahedral meshing.

    - -

     

    - -

    Block Compound - is a compound composed of blocks only.

    - -

     

    - -

    These functionalities are available from the main menu via New - Entity / Blocks.

    - -

     

    - -
    - -

     

    - -

     

    - -

    Quadrangle - face

    - -

     

    - -

    Description: - Builds a face using the below mentioned arguments. This operation allows - to build a face bypassing the intermediate stage of building edges and - wires (in the case of building by 4 points) or wires (in the case of building - by 4 or 2 edges).

    - -

     

    - -

    Result : - GEOM_Object.

    - -

     

    - -

    TUI Command:

    - -
      - -
    • geompy.MakeQuadFaceVertices(V1, - V2, V3, V4), where V1, V2, V3, V4 are - four vertices from which a face is constructed. Edges are created automatically.

    • - -
    • geompy.MakeQuadFaceEdges(E1, - E2), where E1, E2 are edges from which the face is constructed, - two other edges are created automatically.

    • - -
    • geompy.MakeQuadFace(E1, E2, E3, E4), - where E1, E2, E3, E4 are four edges from which the face is constructed.

    • -
    - -

     

    - -

    Arguments: -

    - -
      - -
    • Name + 4 Points, or

    • - -
    • Name + 2 Edges, or

    • - -
    • Name + 4 Edges.

    • -
    - -

     

    - -

    Dialog Box:

    - - ---- - - - - -
    -

    -

    -

    - -

     

    - -

     

    - -

    Example:

    - -

     

    - -

    - -

     

    - -

     

    - -

    Hexahedral - solid

    - -

     

    - -

    Description: - Builds a hexahedral solid either of the below mentioned arguments. This - operation allows to build a solid bypassing the intermediate stage of - building a shell and 4 faces (in the case of building by 2 faces) or just - a shell (in the case of building by 6 faces).

    - -

     

    - -

    Result : - GEOM_Object.

    - -

     

    - -

    TUI Command:

    - -
      - -
    • geompy.MakeHexaSolid(F1, - F2, F3, F4, F5, F6), where F1 – F6 are six faces from which the - hexahedron is constructed.

    • - -
    • geompy.MakeHexaSolidTwoFaces(F1, - F2), where F1 and F2 are faces from which the hexahedron is constructed, - other four faces are created automatically.

    • -
    - -

     

    - -

    Arguments: -

    - -
      - -
    • Name + 2 Faces, or

    • - -
    • Name + 6 Faces.

    • -
    - -

     

    - -

    Dialog Box:

    - -

     

    - - --- - - - -
    -

     

    -

    - -

     

    - -

    Example:

    - -

     

    - -

         

    - -

         

    - -

     

    - - - - diff --git a/doc/salome/gui/GEOM/salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image13.gif b/doc/salome/gui/GEOM/salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image13.gif deleted file mode 100755 index 0ec8b678c855d17f6eb7403635cdd24dfee46965..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 987 zcmZ?wbhEHb6k!ly_|5BVe N(8$7Zg^h*58UXHfUXB0& diff --git a/doc/salome/gui/GEOM/salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image14.gif b/doc/salome/gui/GEOM/salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image14.gif deleted file mode 100755 index aff608b4357c417994658707098effb203dad403..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 886 zcmZ?wbhEHb6k!ly_|5%aDah{L(X1B$NO2$ty(e) y72PMXGtQ9V+_d!cbhglacW!K4bYhmO8UP&vZsc25SImn=nNH diff --git a/doc/salome/gui/GEOM/salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image15.gif b/doc/salome/gui/GEOM/salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image15.gif deleted file mode 100755 index 1a0f0f96d8bde96d26db241929db9be006c4dce3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 922 zcmZ?wbhEHb6k!ly_|5;t;D5m<0-icf6Xg`r*f24nv7SYYuYjX4$!EHjev*j8=jCVSIh!&~U0Jg7z)Yqx jtD`rss4*^P;(pQ-^Mmabj5cI&3Cdw1<^o_6WL zfddeQqvU7^45tuaWMEYM$->CM@Si~kmKK8kjgF zJY+Z)EIQiF$1c#YVnKpa8;`7##|1&f6BGEA{cKKrQaCo9*`#Pm#im5BPM!>|6*CQ# zU79%gL?pbXtYBo(ovc>dc`?Mmabj5cI&3Cdw1<^o^}bM zYLpxefngQ`ObkqlKUo+V82&TpfV>9E6Am168UAz1cx+hU*vKHJBd}n@!=@H~b`b{y zfrg{q5{x_&4hf5zniwRkaxw%RoBBCKyGl3$A0KHpNKBiv@`CEoDctUMYcxMT+ux!c z>GsCc;9w(@$7D6r2gb`THyax}on2|H*ucat6cQ3S^||*P$Ly-FoQ7}Cb;Q@N5;?Ff p*Mread)C^O6BjeCWfl~+|!0?|z2jn$So^ar3Wcbf18*d)XDbOa_aG4rr?$b8ta*nvTf+bm=ULjxlVr-fY1&H$B0W+PQK2Zn|Q1}6RF zWinnSs?MyI%1jZbiZoC4@yy; - - - - -Sketcher - - - - - - - - - - - - -

    Sketcher

    - -

    Sketcher allows to create curves of 2 types: line - segment and arc.  The - curve is created from the current point (center of coordinates when the - sketcher is started).  The - end of the curve is defined by means of "destination", which - can be a destination point (for segment only) or destination direction - coupled with length of a segment or angle and radius of an arc.

    - -

     

    - -

    Sketcher is able to create planar curves only. Therefore, it is necessary - to select a working plane before starting a sketch (by default, XOY plane - is used). Sketcher creates curves lying in the current working plane (New - Entity -> Basic -> Working Plane).

    - -

     

    - -

    This functionality is available from the main menu via New - Entity / Sketch.

    - -

     

    - -

    Description: - Creates curves (line segment and arc).

    - -

     

    - -

    Result: GEOM_Object.

    - -

     

    - -

    TUI Command: - geompy.MakeSketcher(Command, LWP), - where Command is a string containing the coordinates of points in the - local working plane, LWP is a list of 9 doubles which are coordinates - of OZ and OX of the local working plane.

    - -

     

    - -

    Arguments: -

    - -

    1. Element type (segment or arc).

    - -

    2. Destination type (point or direction).

    - -

    3. Destination point by means of:

    - -
      - -
    • absolute coordinates - X,Y;

    • - -
    • relative coordinates - DX, DY (with respect to the current point);

    • - -
    • selection of an existing - point.

    • -
    - -

    4. Destination direction by means of:

    - -
      - -
    • angle between the new - segment and the previous one;

    • - -
    • perpendicular to the - previous segment (same as previous, but angle is predefined and is equal - to 90 degrees);

    • - -
    • tangent to the previous - segment;

    • - -
    • vector components VX, - DY.

    • -
    - -

    5. Parameters of an element (for segment : - length or target X or Y coordinate value, for arc : radius and angle).

    - -

     

    - -

    Dialog Box:

    - -

     

    - -

      

    - -

     

    - -

    Example:

    - -

     

    - -

      

    - - - - diff --git a/doc/salome/gui/GEOM/webhelp.cab b/doc/salome/gui/GEOM/webhelp.cab deleted file mode 100755 index b942f642f9b003eeb7959f3378d4681fd302ed68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89619 zcmaf)Wmp_o(zbDT5AN<3+}+)SySrO(cbDJ}!QEW~1lQp1u7U9N>}KYjoiEwt2iJ(hGtg^5e5a0_{7x<3{AliR@2Lb{G1_sjk`5YYy2nY%Y7)TrB=L>b$YNUbw5Iu=_KT1Xv&-Yt`T43I>i&f7Kof8VKlz{%=_oJ1Y}g3(vpsIRJ@a z`TygRKg;)LVSZ*w1`x>cf5HDOija$iweeq0=mA!U*1vc1rPPoKaSeZBO+*Q zVDJ1_G)91Ewgdi)m6D0Eg`r^%ms0yxmf{%^E`f$e`fV1ok!^2zz1CO;kA0QRe{;y1L4iMz9)qlv*!mJJY0 zQQfat7iVWXTLl*JtRb#xT9b$0al$x#5h+U3J9I57h&6G>+i zn|}%UCrtJZ(5GI01v@+a!~YM!zVo01bo{f4|8+3LoSps_<}qMDxX6ExDO>&3f3?7Y zfJo_nfr?w({lj@UVCQ_9e~mgh88~|U5dkUF&#ZO_6t-}(CCk5u54jz^>fu70O}(CD^%Fr#n#HiSj52jPgTwXSPhB)!Tv*I3;>)? z^1s+f+M51(U@2jMfOMpO#r|==g$<0%O@2l_47gf?RDMO;8k@NPV@omsMV9{8Jn`>K z{VzR8{sI3@5lR3-?%Dos)qm9ZkN*DN=~u9vi_QOEyLAL0AU2m@;4%ibW-fsAer5&< z&<|?RuehIw?C%|Jf(Qr*JLJE>KNr0LAO|JC;QnZ7$|lav7Pe+T(KkS6UMc$p3b?4O z|9L3Q0hL{@{Uz*V=i+E&B4c6rb6pP%>SDISI7Pt04zG7*{%MHvord8qfw*+%vzVf=Kdip9zgoU*nkcDXQNTE zGy0pX=m0a5F7@xRza891fUYC|X#W3PQB_Gs%);740x;iN|CM?m01V{+742kV{KsDX zxu<}M6GG^}aDR@!RsfNLi~R!phxWq({m@?Jmz<-si-GmuySy3TP(5k>AM5OBV&V#D zS33W?v;pG#8RQTkX?@-Q!YThtQ9tQ^fK18tenBf+7+M3=ENl*#`cwd}e)0}RKtM;P zzu^C1{>bhh(dYnBt+9Xee~j{gG5*i_Q|HeoKbIy4>{-+JuTj8_^OJ%{1_Jsv|6A(s z6$=4SNBh4;rA<5}{~Fhf0d=rD`Yo&Sx9)8V=&rMuzeUymhWY|h68!#a6maGJ>mK`= z*E|621_KBTpxA#F>QD4ih*FDzZj3#~sp|Fq#H zo5}i$E+w5u5!5cLMGu|_B7~Tm(X@nNc|~b)T@YO;DXWCwGRYaj?Ht-3B-?v*im)$Y zp>GjNmn6(j}@3!2LltuTa;uvtvahKcGV^@e$ z1*a#vUc1nV^xXAD#os2{_-!G%1G6$#KEPeGgZ1}5lEY`kU4TKNVQrFJ>6;JIgT)Xg z2vLmZRvOxQt|x1}Ds1?wmO<3#QW9L}rU_a^zwcb9DHAJUKr)9u687ZyEJ!s@KIbIj zq*dEqyIIu+v8Nz5iXK$d=t_+b@zf?#3m&f`j4t@Kf9{juJPLOU5)Q@?wwc&n-iU7} znWiB!Z6QkJJ9A#oH&dPGB5bx$v%ONvk6%C zRtcog#07&T_>V#6WeIUYr}<%ExU0H{A2{5%P<{bp4J{(KuYs&w>%vY@y)XK~ zWMJ(e4I5>M=97LX3IrLO8a1-4hydgSW-wbCXi<;_ec&?6)O#M>nH`#@FvPxnxVtCT zQh&!jjnU2P3>o{z^&0%xC!hXjn6c<^`l^;T8p%`*6M075Fx)A9d=-|`HVxoHB?`Gy zZwPQf?A0?*dws@pe^Iy;t>qFLeE1N^&*LM|>^|KLg}q7|LZvANkjg_s=!3ms;>H@n z%;iPBmpW}J`yȲ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

    oXOQ}Ge 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

    3mV47(J-nnng03vOv>=_>hgK# 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

    jXOi6?t#$#G}IAv2Hl%J5%3!6tRS8@BUs?+ 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 S;Xri<|BOHhBg2fJ@%{&*t^2zG diff --git a/doc/salome/gui/GEOM/whcsh_home.htm b/doc/salome/gui/GEOM/whcsh_home.htm deleted file mode 100755 index 92ccd93b2..000000000 --- a/doc/salome/gui/GEOM/whcsh_home.htm +++ /dev/null @@ -1,600 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whcshdata.htm b/doc/salome/gui/GEOM/whcshdata.htm deleted file mode 100755 index 9576ec08b..000000000 --- a/doc/salome/gui/GEOM/whcshdata.htm +++ /dev/null @@ -1,87 +0,0 @@ - - -GEOM reference manual - - - - - - - - - - diff --git a/doc/salome/gui/GEOM/whdata/whftdata.js b/doc/salome/gui/GEOM/whdata/whftdata.js deleted file mode 100755 index 071ae6fc7..000000000 --- a/doc/salome/gui/GEOM/whdata/whftdata.js +++ /dev/null @@ -1,25 +0,0 @@ -// WebHelp 5.10.001 -var gTEA = new Array(); -function aTE(sTopicTitle, sTopicURL) -{ - var len = gTEA.length; - gTEA[len] = new topicEntry(sTopicTitle, sTopicURL); -} - -function topicEntry(sTopicTitle, sTopicURL) -{ - this.sTopicTitle = sTopicTitle; - this.sTopicURL = sTopicURL; -} - -function window_OnLoad() -{ - if (parent && parent != this) { - if (parent.putFtsTData) - { - parent.putFtsTData(gTEA); - } - } -} - -window.onload = window_OnLoad; \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whdata/whftdata0.htm b/doc/salome/gui/GEOM/whdata/whftdata0.htm deleted file mode 100755 index 0a639b225..000000000 --- a/doc/salome/gui/GEOM/whdata/whftdata0.htm +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - diff --git a/doc/salome/gui/GEOM/whdata/whftdata0.xml b/doc/salome/gui/GEOM/whdata/whftdata0.xml deleted file mode 100755 index dd9bb8b6d..000000000 --- a/doc/salome/gui/GEOM/whdata/whftdata0.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/doc/salome/gui/GEOM/whdata/whfts.htm b/doc/salome/gui/GEOM/whdata/whfts.htm deleted file mode 100755 index 0f61725b2..000000000 --- a/doc/salome/gui/GEOM/whdata/whfts.htm +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whdata/whfts.js b/doc/salome/gui/GEOM/whdata/whfts.js deleted file mode 100755 index 2b6678690..000000000 --- a/doc/salome/gui/GEOM/whdata/whfts.js +++ /dev/null @@ -1,40 +0,0 @@ -// WebHelp 5.10.001 -var gaFileMapping = new Array(); -var gaFileTopicMapping = new Array(); - -function fileMapping(sStartKey, sEndKey, sFileName) -{ - this.sStartKey = sStartKey; - this.sEndKey = sEndKey; - this.sFileName = sFileName; - this.aFtsKeys = null; -} - -function fileTopicMapping(nIdBegin, nIdEnd, sFileName) -{ - this.nBegin = nIdBegin; - this.nEnd = nIdEnd; - this.sFileName = sFileName; - this.aTopics = null; -} - - -function iWM(sStartKey, sEndKey, sFileName) -{ - gaFileMapping[gaFileMapping.length] = new fileMapping(sStartKey, sEndKey, sFileName); -} - -function window_OnLoad() -{ - if (parent && parent != this && parent.ftsReady) - { - parent.ftsReady(gaFileMapping, gaFileTopicMapping); - } -} - -function iTM(nIdBegin, nIdEnd, sFileName) -{ - gaFileTopicMapping[gaFileTopicMapping.length] = new fileTopicMapping(nIdBegin, nIdEnd, sFileName); -} - -window.onload = window_OnLoad; diff --git a/doc/salome/gui/GEOM/whdata/whfts.xml b/doc/salome/gui/GEOM/whdata/whfts.xml deleted file mode 100755 index 71138925c..000000000 --- a/doc/salome/gui/GEOM/whdata/whfts.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/doc/salome/gui/GEOM/whdata/whfwdata.js b/doc/salome/gui/GEOM/whdata/whfwdata.js deleted file mode 100755 index e9e8bc6c1..000000000 --- a/doc/salome/gui/GEOM/whdata/whfwdata.js +++ /dev/null @@ -1,37 +0,0 @@ -// WebHelp 5.10.001 -var gWEA = new Array(); -function aWE() -{ - var len = gWEA.length; - gWEA[len] = new ftsEntry(aWE.arguments); -} - -function ftsEntry(fn_arguments) -{ - if (fn_arguments.length && fn_arguments.length >= 1) - { - this.sItemName = fn_arguments[0]; - this.aTopics = null; - var nLen = fn_arguments.length; - if (nLen > 1) - { - this.aTopics = new Array(); - for (var i = 0; i < nLen - 1; i ++ ) - { - this.aTopics[i] = fn_arguments[i + 1]; - } - } - } -} - -function window_OnLoad() -{ - if (parent && parent != this) { - if (parent.putFtsWData) - { - parent.putFtsWData(gWEA); - } - } -} - -window.onload = window_OnLoad; \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whdata/whfwdata0.htm b/doc/salome/gui/GEOM/whdata/whfwdata0.htm deleted file mode 100755 index 20bdbeb0b..000000000 --- a/doc/salome/gui/GEOM/whdata/whfwdata0.htm +++ /dev/null @@ -1,782 +0,0 @@ - - - - - - - - - - - diff --git a/doc/salome/gui/GEOM/whdata/whfwdata0.xml b/doc/salome/gui/GEOM/whdata/whfwdata0.xml deleted file mode 100755 index 63e637001..000000000 --- a/doc/salome/gui/GEOM/whdata/whfwdata0.xml +++ /dev/null @@ -1,728 +0,0 @@ - - - 3, - 3, - 1,12, - 1,15,11,12,7,9,10,5,13,4,3,16, - 10,3, - 11,12,10,13,3, - 14,1,15,11,12,9,10,5,13,4,3, - 12,7,10,5,4,3, - 11,12,10,13,3, - 15,11,12,10,13,4,3, - 11,12,7,9,10,6,5,4,3, - 10,3, - 14,15,12,10,4, - 15,12,7, - 14,12, - 12, - 12, - 15,12, - 15, - 15, - 15, - 12,3, - 12, - 12, - 12,16, - 12, - 16, - 12, - 7,5, - 10, - 10, - 14,15,8,13,16, - 7,10,13, - 15,12,7,13, - 4, - 12, - 12, - 10, - 13, - 12, - 12, - 15,3, - 10, - 14,1,15,11,12,7,9,10,5,13,4,3,16, - 7, - 6, - 6, - 14,3, - 6, - 3, - 11,7,9,13,3, - 3, - 12, - 11,12,7,13, - 7, - 7, - 2,15,9,10,5,3, - 9, - 15,12, - 14, - 12,3, - 14,0,10, - 2,9,5,4, - 6, - 9, - 12, - 12, - 9, - 14,1,15,8,11,12,7,9,10,5,13,4,3,16, - 2,8, - 8,6,3, - 12, - 12, - 14,0,2,10,5, - 3, - 14, - 2, - 3, - 14,12,3, - 15,11,9,13,3, - 13, - 11, - 10, - 1, - 12,9,10, - 9, - 8,10,6, - 3, - 1,8,6, - 12,5, - 12, - 12, - 12, - 12, - 1, - 14,1,15,8,11,12,7,9,10,6,5,13,4,3,16, - 12,4, - 2,7,10,4, - 15,13,3, - 14,9, - 14,12,10,5,13,4, - 7, - 9,10, - 11, - 9, - 8, - 12, - 10,5, - 12, - 14, - 14,11,5, - 2,4, - 11,12,10,13,3, - 15,8,12, - 8, - 12, - 12, - 12, - 12, - 12, - 12, - 12, - 15,11,9,13,3, - 13, - 11, - 12, - 11,12,7,10,5,3, - 15, - 14,15,11,12,7,9,10,6,5,13,3,16, - 16, - 2,12,7,10, - 15,6, - 15,12,7,3, - 12, - 12, - 12, - 12,4, - 11, - 12, - 10, - 10, - 9, - 15, - 15,11,12,10,3, - 9, - 12,7, - 10, - 15,12,7, - 10, - 10, - 10, - 8, - 14,1,15,11,12,7,9,10,6,5,13,4,3,16, - 12, - 2, - 15, - 12, - 12, - 11, - 14,1,15,8,11,12,7,9,10,5,13,4,3,16, - 6, - 1,11,9,6, - 11,7,9,10, - 13, - 13, - 13, - 15,11,7,10,13,3, - 10, - 10, - 10, - 10, - 10, - 10, - 10, - 1,8,9,6,3, - 6, - 6, - 12,9,13, - 12, - 12, - 12,13, - 1,15, - 12, - 15,13, - 15,13, - 13, - 6, - 14, - 14, - 14, - 14, - 14,11,12,7,10,5,13,3, - 12, - 16, - 9, - 9, - 14, - 15,11,12,7,9,6,5,4,3, - 14, - 3, - 12, - 15,12,13,3, - 8,3, - 15,11,7,5,3,16, - 15, - 6, - 6, - 6, - 12, - 12,5, - 14,1,15,11,12,7,10,5,13,4,3,16, - 12, - 15,16, - 0,10,5, - 2,8, - 8, - 10, - 7, - 7, - 14, - 14, - 14, - 14, - 14, - 14, - 14,12,7,10,5,13,3, - 10, - 10, - 9, - 9, - 13, - 12, - 3, - 8,7,3, - 8, - 7, - 10, - 11,10,5,13,4,3, - 12, - 12, - 12, - 14,6,5,4, - 2,8, - 8, - 14, - 12, - 2,5, - 4, - 12, - 14, - 7, - 2,7, - 1,2,8,11,7,9,10,6,5,13,4,3, - 14,15,11,12,7,9,10,5,13,4,3,16, - 14, - 1,2,8,11,12,7,9,10,6,5,13,4,3,16, - 12, - 14,15,8,11,12,7,9,10,5,13,4,3,16, - 9,5,4, - 12, - 16, - 5, - 1, - 3, - 12,10,5,13,3, - 12,10, - 6, - 9, - 16, - 10, - 3, - 12,5, - 11,7, - 14,10, - 14, - 6, - 12, - 12, - 6, - 9, - 9, - 9, - 9, - 9, - 9, - 9, - 9, - 9, - 1,12,10,6,5,16, - 12,9,10,5, - 2,8, - 13, - 2,8,9,6, - 8, - 13, - 12, - 6,4, - 10, - 9, - 13, - 9, - 12, - 10, - 10, - 10, - 12, - 10, - 14, - 12, - 10, - 10, - 14,2, - 12, - 12, - 12, - 1, - 1, - 7, - 12, - 9, - 9, - 9, - 14, - 5,3, - 3, - 3, - 15,12,9, - 12, - 10, - 15,10,3, - 15,12,7,10,5,3,16, - 10, - 12, - 12,5, - 10, - 10, - 10, - 12,10,5,3, - 10, - 10, - 12, - 15,12,13,3, - 3, - 8,13,3, - 15, - 15,12, - 0,11,12,7,9,10,6,5,4,3,16, - 16, - 11,3, - 10,13, - 3, - 3, - 10, - 4, - 11, - 9, - 10, - 10, - 3, - 5, - 11, - 11, - 5, - 3, - 5, - 7, - 10, - 12, - 14, - 14, - 3, - 3, - 3, - 13, - 13, - 13, - 10, - 10, - 13, - 13, - 13, - 10, - 7, - 3, - 3, - 13, - 7, - 14, - 14, - 14, - 7, - 13, - 13, - 12, - 5, - 15, - 5, - 11, - 11, - 13, - 3, - 3, - 5, - 3, - 9, - 10, - 9, - 12,7,10, - 7, - 12,7,9,10, - 12,10, - 10, - 12, - 12, - 15,13, - 9, - 9, - 14, - 0,1,8,11,12,7,9,10,6,5,4,3,16, - 12, - 14,10, - 10, - 5, - 3, - 7,9,10, - 7, - 9, - 7,9,10, - 10, - 10, - 11,3, - 13, - 1,12, - 2,10, - 12,13,3, - 12,13, - 13, - 2,6, - 9, - 13, - 0,10,13, - 12,13, - 8,12, - 7, - 12, - 10,13, - 13, - 13, - 10, - 10, - 15,12,9,6, - 12, - 13, - 12, - 15,11,12,7,5,3,16, - 12, - 7,13,3, - 14, - 1,12,7,10,13, - 10, - 10, - 1,2,8,11,12,7,9,10,6,5,13,4,3,16, - 1,6, - 12, - 13, - 8, - 15,12,10,6,13,4, - 12, - 12, - 14,2,12,7,10,6,13,4,16, - 12, - 11, - 2, - 0, - 12, - 14,3, - 11,3, - 12, - 10, - 15,3, - 3, - 15,3, - 12,5,3, - 1,15,12,7,3, - 12, - 11,4, - 10, - 3, - 7, - 7, - 13, - 10,16, - 15, - 7, - 15,10,13,3, - 15,5, - 10, - 14,15,11,12,9,13,3, - 3, - 3, - 3, - 9, - 3, - 1,6, - 12,3, - 12, - 12,6, - 12, - 15, - 3, - 3, - 15, - 2,11, - 7, - 12, - 12,10, - 12, - 1,9, - 10, - 9, - 14,3, - 12, - 15,11,10,3, - 11,3, - 11, - 11, - 11,3, - 11,3, - 2,12, - 12, - 6, - 10, - 15, - 12,16, - 16, - 10, - 2,12, - 13, - 3, - 5, - 8,12,6, - 12, - 12, - 15,12, - 12, - 14,15,11,12,7,9,10,5,13,4,3,16, - 12, - 5, - 9,10,5,16, - 12,7, - 1,6, - 7,13, - 13, - 12,10,5,3,16, - 2, - 15,12, - 12, - 13, - 8, - 8, - 11,10,13,4, - 10,4, - 15,12, - 0,1,15,8,11,12,7,9,10,6,5,4,3,16, - 15,12,10, - 10, - 7, - 1,12,10,13,3, - 1, - 1, - 1, - 12, - 6, - 1, - 1,2,8,12,7,9,10,6,5,13,4,16, - 9,4, - 9,4, - 12, - 10,16, - 5,13, - 14,12,7,5,13, - 1, - 3, - 3, - 13, - 14, - 12,10,3, - 15, - 12,3, - 14,11,7,10,5,13, - 3, - 9,3, - 12,10,3, - 14, - 12, - 11, - 3, - 12, - 12, - 12, - 12, - 12, - 14, - 8, - 15,13,3, - 14,2,8,13, - 13, - 13, - 15,8, - 12, - 6, - 12,5,16, - 0,12,9,5, - 10,5,16, - 5, - 16, - 12, - 12, - 12, - 12, - 12,9,13, - 12, - 12, - 13, - 11,13, - 13,3, - 14, - 15, - 15,10, - 14, - 13, - 12, - 13, - 15, - 12, - 13, - 12, - 13, - 12, - 7, - 7, - 12,7,9, - 12, - 12, - 9, - 11, - 10,13,4, - 0,2,10,13, - 13, - 10,13, - 1, - 12, - 3, - 3, - 12,9,10, - 14,1,15,8,11,12,7,9,10,6,5,13,4,3,16, - 9, - 14,11,12,10,13, - 15,11,12,9,10,5,4,16, - 5, - 12, - 1,11,10,6, - 3, - 14,2,15,12,7,9,10,6,5,13,4,3, - 14, - 14, - 14, - 14, - 12, - 9, - 9, - 1,15,11,12,7,9,10,13,3, - 12, - 15,11,7,13,3, - 11,12,7,9,5,13,3, - 5, - 5, - 9, - 9, - 14,11,12,5,3, - 1,6,3, - 6, - 6, - 1,6, - 9, - 6, - 15, - 5, - 10, - 10, - 10, - 9, - 12, - 9,5, - 2, - 8,12,10,13, - 14,12,7,5, - 1, - 1,12, - 15,12,6,3,16, - 15,9,3, - 11, - 11, - 3, - 3, - 3, - 9, - 9, - 15, - 3, - 15,9,3, - 11, - 11, - 3, - 3, - 3, - 9, - 9, - 8,9, - 9,10,3, - 11, - 11, - 9, - 9, - - diff --git a/doc/salome/gui/GEOM/whdata/whfwdata1.htm b/doc/salome/gui/GEOM/whdata/whfwdata1.htm deleted file mode 100755 index 211307aa2..000000000 --- a/doc/salome/gui/GEOM/whdata/whfwdata1.htm +++ /dev/null @@ -1,287 +0,0 @@ - - - - - - - - - - - diff --git a/doc/salome/gui/GEOM/whdata/whfwdata2.htm b/doc/salome/gui/GEOM/whdata/whfwdata2.htm deleted file mode 100755 index 5d86dc6b0..000000000 --- a/doc/salome/gui/GEOM/whdata/whfwdata2.htm +++ /dev/null @@ -1,222 +0,0 @@ - - - - - - - - - - - diff --git a/doc/salome/gui/GEOM/whdata/whgdata.js b/doc/salome/gui/GEOM/whdata/whgdata.js deleted file mode 100755 index 77e0107f3..000000000 --- a/doc/salome/gui/GEOM/whdata/whgdata.js +++ /dev/null @@ -1,26 +0,0 @@ -// WebHelp 5.10.001 -var gIEA = new Array(); -function aGE(sName, sDef) -{ - var len = gIEA.length; - gIEA[len] = new gloEntry(sName, sDef); -} - -function gloEntry(sName, sDef) -{ - this.sName = sName; - this.sDef = sDef; - this.nNKOff = 0; -} - -function window_OnLoad() -{ - if (parent && parent != this) { - if (parent.putData) - { - parent.putData(gIEA); - } - } -} - -window.onload = window_OnLoad; \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whdata/whgdata0.htm b/doc/salome/gui/GEOM/whdata/whgdata0.htm deleted file mode 100755 index 9d256b1a8..000000000 --- a/doc/salome/gui/GEOM/whdata/whgdata0.htm +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - diff --git a/doc/salome/gui/GEOM/whdata/whgdata0.xml b/doc/salome/gui/GEOM/whdata/whgdata0.xml deleted file mode 100755 index de6359242..000000000 --- a/doc/salome/gui/GEOM/whdata/whgdata0.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/doc/salome/gui/GEOM/whdata/whglo.htm b/doc/salome/gui/GEOM/whdata/whglo.htm deleted file mode 100755 index dc5a67786..000000000 --- a/doc/salome/gui/GEOM/whdata/whglo.htm +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whdata/whglo.js b/doc/salome/gui/GEOM/whdata/whglo.js deleted file mode 100755 index e0519afcb..000000000 --- a/doc/salome/gui/GEOM/whdata/whglo.js +++ /dev/null @@ -1,34 +0,0 @@ -// WebHelp 5.10.001 -var gaFileMapping = new Array(); -function fileMapping(sBK, sEK, sFileName, nNum) -{ - this.sBK = sBK; - this.sEK = sEK; - this.sFileName = sFileName; - this.aKs = null; - this.nNum = nNum; - this.oUsedItems = null; -} - - -function iFM(sBK, sEK, sFileName, nNum) -{ - var i = gaFileMapping.length; - gaFileMapping[i] = new fileMapping(sBK, sEK, sFileName, nNum); - if (i == 0) { - gaFileMapping[i].nTotal = nNum; - } - else { - gaFileMapping[i].nTotal = nNum + gaFileMapping[i - 1].nTotal; - } -} - -function window_OnLoad() -{ - if (parent && parent != this && parent.projReady) - { - parent.projReady(gaFileMapping); - } -} - -window.onload = window_OnLoad; diff --git a/doc/salome/gui/GEOM/whdata/whglo.xml b/doc/salome/gui/GEOM/whdata/whglo.xml deleted file mode 100755 index dcdf6cf11..000000000 --- a/doc/salome/gui/GEOM/whdata/whglo.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whdata/whidata.js b/doc/salome/gui/GEOM/whdata/whidata.js deleted file mode 100755 index 9f0eb15ed..000000000 --- a/doc/salome/gui/GEOM/whdata/whidata.js +++ /dev/null @@ -1,89 +0,0 @@ -// WebHelp 5.10.001 -// const strings -var gIEA = new Array(); -function aIE() -{ - var len = gIEA.length; - gIEA[len] = new indexEntry(aIE.arguments); -} - -function topic(sName, sURL) -{ - this.sName = sName; - this.sURL = sURL; -} - -function indexEntry(fn_arguments) -{ - if (fn_arguments.length && fn_arguments.length >= 3) - { - this.nType = fn_arguments[0]; - this.nPKOff = 0; - this.nNKOff = fn_arguments[1]; - this.sName = fn_arguments[2]; - this.aTopics = null; - var nLen = fn_arguments.length; - if (Math.floor(nLen / 2) * 2 == nLen) - { - this.sTarget = fn_arguments[3]; - if (nLen > 5) - { - this.aTopics = new Array(); - for (var i = 0; i < (nLen - 5)/2; i++) - { - this.aTopics[i] = new topic(fn_arguments[i * 2 + 4], fn_arguments[i * 2 + 5]); - } - } - - } - else - { - if (nLen > 4) - { - this.aTopics = new Array(); - for (var i = 0; i < (nLen - 4)/2; i++) - { - this.aTopics[i] = new topic(fn_arguments[i * 2 + 3], fn_arguments[i * 2 + 4]); - } - } - } - } -} - -function getIndexTopicMappingList(nItemIndex) -{ - var sTopics = ""; - if (gIEA.length > nItemIndex) - { - if (gIEA[nItemIndex].aTopics) - { - var i = 0; - var nLen = gIEA[nItemIndex].aTopics.length; - for (i = 0; i < nLen; i ++) - { - sTopics += "," + gIEA[nItemIndex].aTopics[i]; - } - } - } - return sTopics; -} - -function window_OnLoad() -{ - if (parent && parent != this) { - if (parent.putData) - { - for (var i = 0; i < gIEA.length; i ++ ) - { - if (gIEA[i].nNKOff != 0 && i + gIEA[i].nNKOff + 1 < gIEA.length) - { - - gIEA[i + gIEA[i].nNKOff + 1].nPKOff = gIEA[i].nNKOff; - } - } - parent.putData(gIEA); - } - } -} - -window.onload = window_OnLoad; \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whdata/whidx.htm b/doc/salome/gui/GEOM/whdata/whidx.htm deleted file mode 100755 index 0a0deedd0..000000000 --- a/doc/salome/gui/GEOM/whdata/whidx.htm +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whdata/whidx.js b/doc/salome/gui/GEOM/whdata/whidx.js deleted file mode 100755 index e0519afcb..000000000 --- a/doc/salome/gui/GEOM/whdata/whidx.js +++ /dev/null @@ -1,34 +0,0 @@ -// WebHelp 5.10.001 -var gaFileMapping = new Array(); -function fileMapping(sBK, sEK, sFileName, nNum) -{ - this.sBK = sBK; - this.sEK = sEK; - this.sFileName = sFileName; - this.aKs = null; - this.nNum = nNum; - this.oUsedItems = null; -} - - -function iFM(sBK, sEK, sFileName, nNum) -{ - var i = gaFileMapping.length; - gaFileMapping[i] = new fileMapping(sBK, sEK, sFileName, nNum); - if (i == 0) { - gaFileMapping[i].nTotal = nNum; - } - else { - gaFileMapping[i].nTotal = nNum + gaFileMapping[i - 1].nTotal; - } -} - -function window_OnLoad() -{ - if (parent && parent != this && parent.projReady) - { - parent.projReady(gaFileMapping); - } -} - -window.onload = window_OnLoad; diff --git a/doc/salome/gui/GEOM/whdata/whidx.xml b/doc/salome/gui/GEOM/whdata/whidx.xml deleted file mode 100755 index 3ca67b6f0..000000000 --- a/doc/salome/gui/GEOM/whdata/whidx.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/doc/salome/gui/GEOM/whdata/whtdata.js b/doc/salome/gui/GEOM/whdata/whtdata.js deleted file mode 100755 index d5428a7de..000000000 --- a/doc/salome/gui/GEOM/whdata/whtdata.js +++ /dev/null @@ -1,64 +0,0 @@ -// WebHelp 5.10.001 -var gTEA = new Array(); -function aTE() -{ - gTEA[gTEA.length] = new tocEntry(aTE.arguments); -} - -function tocEntry(fn_arguments) -{ - if (fn_arguments.length < 3) - { - alert ("data format wrong!!!"); - return; - } - - this.nType = fn_arguments[0]; - this.nContents = fn_arguments[1]; - this.sItemName = fn_arguments[2]; - - if (this.nType == 1 || this.nType == 2 || this.nType == 16) - { - if (fn_arguments.length > 3) - { - this.sItemURL = fn_arguments[3]; - if (fn_arguments.length > 4) - { - this.sTarget = fn_arguments[4]; - if (fn_arguments.length > 5) - this.sIconRef = fn_arguments[5]; - } - } - } - if (this.nType == 4 || this.nType == 8) - { - if (fn_arguments.length > 3) - { - this.sRefURL = fn_arguments[3]; - if (this.nType == 4) - { - if(this.sRefURL.lastIndexOf("/")!=this.sRefURL.length-1) - this.sRefURL+="/"; - } - if (fn_arguments.length > 4) - { - this.sItemURL = fn_arguments[4]; - if (fn_arguments.length > 5) - { - this.sTarget = fn_arguments[5]; - if (fn_arguments.length > 6) - this.sIconRef = fn_arguments[6]; - } - } - } - } -} - - -function window_OnLoad() -{ - if (parent && parent != this && parent.putData) { - parent.putData(gTEA); - } -} -window.onload = window_OnLoad; \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whdata/whtdata0.htm b/doc/salome/gui/GEOM/whdata/whtdata0.htm deleted file mode 100755 index f575ec03d..000000000 --- a/doc/salome/gui/GEOM/whdata/whtdata0.htm +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - diff --git a/doc/salome/gui/GEOM/whdata/whtdata0.xml b/doc/salome/gui/GEOM/whdata/whtdata0.xml deleted file mode 100755 index acb0df316..000000000 --- a/doc/salome/gui/GEOM/whdata/whtdata0.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/doc/salome/gui/GEOM/whdata/whtoc.htm b/doc/salome/gui/GEOM/whdata/whtoc.htm deleted file mode 100755 index 54e0cbf26..000000000 --- a/doc/salome/gui/GEOM/whdata/whtoc.htm +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whdata/whtoc.js b/doc/salome/gui/GEOM/whdata/whtoc.js deleted file mode 100755 index 163d8cc9f..000000000 --- a/doc/salome/gui/GEOM/whdata/whtoc.js +++ /dev/null @@ -1,31 +0,0 @@ -// WebHelp 5.10.001 -// const strings -var gaProj = new Array(); -var gsRoot = ""; - -function setRoot(sRoot) -{ - gsRoot = sRoot -} - -function aPE(sProjPath, sRootPath) -{ - gaProj[gaProj.length] = new tocProjEntry(sProjPath, sRootPath); -} - -function tocProjEntry(sProjPath, sRootPath) -{ - if(sProjPath.lastIndexOf("/")!=sProjPath.length-1) - sProjPath+="/"; - this.sPPath = sProjPath; - this.sRPath = sRootPath; -} - - -function window_OnLoad() -{ - if (parent && parent != this && parent.projReady) { - parent.projReady(gsRoot, gaProj); - } -} -window.onload = window_OnLoad; \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whdata/whtoc.xml b/doc/salome/gui/GEOM/whdata/whtoc.xml deleted file mode 100755 index bffb89aa7..000000000 --- a/doc/salome/gui/GEOM/whdata/whtoc.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/doc/salome/gui/GEOM/whestart.ico b/doc/salome/gui/GEOM/whestart.ico deleted file mode 100755 index 110f18356d05f6e8631200b7482a694591a61c61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10134 zcmeI1O=whC6o8M>=GoR}L{jL=q(h)VrHVU25*I32i&yL*iPW^=HB$@F=OVu@La8-&mNKsB4kcZ!Dn4 zkkKn<^jag}<5&ZQpP0z%6}NgSr1xuZtEa-&dgI3N^?)zZYpbqZB1-*R{r4u&Q2&QX z&+nTQ@J?SY((hM84sR+1`j^&!xvUlP^i+5d=wr)Y&ePJpZkLHDW374dY4dN3Gh&V(Z{Z_hCdrVc6p^& zgOZdRPHvaBUvm4QB4YIXd~3PQmD^nzxw7QS9#;;!vf@hp`OnTXOirZgN2ahJ%ui{m zVnkwIF$JGowlvRlc6Q31J$t05r$-JPI3P!k9FY?zPROZKr{wI}vobO=B4cA?QmfVE z`t|Eluh-?yojY>(?p=BK@S!|@{8(02R^-{UXTq04*8Yy=$6L2#_V-y?`|T%!8X%t` zUn1Wm-y=UEuSs8DEJH&vZNxG@9?R4eH{K1u7rr0%@QjrF(Zf2a4}J)qF&dA%kZo41Mp|yFTvl0zX$&W zehr@W8{;`_`3!|#Rfhd&H|6#gXq zF#ITd4So`S8h%l~FYhHqTc&InQE7`5y?=g3VItO?cna|y`TVZJl+SP4LpkxhE>Adl zRjfM4f5LO|p(a~UwMbyc!Hqvo>zbeyt|8>`%S$E@%Y<* z8@vym(uD3m^v3f1za}5xS^s*=IsQXF^0AmQpZ_FCU0ojssTIDXBdyRHpH^s*Pb%c| zrA+)Cnp{XN^R@zbUVoN?2D-W;(}1ba65nNcDkz@sKW(6^%kv!uFW{33DR1#2-d9L? zhZpkhrXBC;qWGt@3w2ze=c4ee?DHs7kIbvH#{u8-vaOO1u6Sf zReGf#EYE$p;pBE{`z5y@DsOk6+DlW%$o@RE%Gs(<@9sP_IJPjS8NqQ&zWkRzri`uK zp1yIm;^g$W#@QcPjkj++iZ|vt@AI;rCeE7^L*L$l%Jta$qXA@UI6FSJCGl{&hRmUukN>60+_abD zmn%=T53J1nleF7InIo(#=3!UV%2C(VtHvx9)8BE$pQ}|&e`B|1e;ie@wUcA3F=tMW zrR+$0AyQg<_qm5Q2FVq2yv7O6nrtUWv7X2Dl8=$~eS)Uy4pZ2V_IXVEJSKZw)jp4D zpT`705b5Psi<^SgXX2m*dv>vi6fU``pIsc9rE$6jZoz-UT3y9VeQP%xUtRY#*{#xT zj8$l;k8DD;`_w$Uy#u$8ZLaTb(C>4b{BL1*=3U7~xgkEkw@miMMfQ%!ZaNF?Zdcl1 zPc~+5+u9Vr3&8F>%_cI_|9*4o_KnT`lWgR)0X1izpDMHoQ(uJ~yAs%~wZR^Yk7Trm z<2SV1T~!)>!|oz7yTHJ#_GEn1uI>{KZ- zDZ7cIm+aT$vt0Y6wlq~)#31pq$P|2X+0uI>-{Fy2^sz!Rt2UE7v$y)P=`;_afS$|PGoG}Z6=Rh|i6*NH9C^{0ls{S7if zS4-p``+hC$C%c|I7OvsKYwaEW-=v?~@7LPz*V^yb{>Sgv{0|*pf0M$+kt(8KuCcP8 z5KH{j7(3IEzUkQI - -Search Result - - - - - - - - - - - - - - - - - diff --git a/doc/salome/gui/GEOM/whfdhtml.htm b/doc/salome/gui/GEOM/whfdhtml.htm deleted file mode 100755 index 236beec73..000000000 --- a/doc/salome/gui/GEOM/whfdhtml.htm +++ /dev/null @@ -1,30 +0,0 @@ - - -Search Frame - - - - - - - - - diff --git a/doc/salome/gui/GEOM/whfform.htm b/doc/salome/gui/GEOM/whfform.htm deleted file mode 100755 index f592a738d..000000000 --- a/doc/salome/gui/GEOM/whfform.htm +++ /dev/null @@ -1,136 +0,0 @@ - - -Search Form - - - - - - - - - - - - - - \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whfhost.js b/doc/salome/gui/GEOM/whfhost.js deleted file mode 100755 index 167acc459..000000000 --- a/doc/salome/gui/GEOM/whfhost.js +++ /dev/null @@ -1,945 +0,0 @@ -// WebHelp 5.10.003 -var gsSK2=null; -var gsSK=null; -var gsFtsBreakChars="\t\r\n\"\\ .,!@#$%^&*()~'`:;<>?/{}[]|+-=\x85\x92\x93\x94\x95\x96\x97\x99\xA9\xAE\xB7"; -var gnCLF=0; -var gsHelpCannotSearch="Cannot search for that phrase."; -var gsNoTopics="No Topics Found."; -var gsLoadingDivID="LoadingDiv"; -var gsLoadingMsg="Loading data, please wait..."; -var gsSearchMsg="Searching..."; -var gsResultDivID="ResultDiv"; -var gaaFCD=new Array(); -var gaaFTCD=new Array(); -var goCF=null; -var goCTF=null; -var gaTI=null; -var gnCurrentOp=0; -var gbNot=false; -var gbReady=false; -var gnLoadFts=1; -var gnCacheLimits=5; -var gaCCD=new Array(); -var gbXML=false; -var gaData=new Array(); -var gsBgColor="#ffffff"; -var gsBgImage=""; -var gsMargin="0pt"; -var gsIndent="0pt"; -var gsCheckKey=null; -var gnIndexNum=0; -var gaFtsContentsCon=null; -var gaTopicCheckInfo=null; -var gnTopicCheck=0; -var goFont=null; -var goErrFont=null; -var goHoverFont=null; -var gsABgColor="#cccccc"; -var gbWhFHost=false; -var gbFirst=false; - -function setBackground(sBgImage) -{ - gsBgImage=sBgImage; -} - -function setBackgroundcolor(sBgColor) -{ - gsBgColor=sBgColor; -} - -function setFont(sType,sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration) -{ - var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration); - if(sType=="Normal") - goFont=vFont; - else if(sType=="Error") - goErrFont=vFont; - else if(sType=="Hover") - goHoverFont=vFont; -} - -function setActiveBgColor(sBgColor) -{ - gsABgColor=sBgColor; -} - -function setMargin(sMargin) -{ - gsMargin=sMargin; -} - -function setIndent(sIndent) -{ - gsIndent=sIndent; -} - -function updateCache(oCF) -{ - var len=gaCCD.length; - if(len0&&sURL) - { - var topic=new Object(); - topic.sTopicTitle=name; - topic.sTopicURL=sURL; - aTopics[aTopics.length]=topic; - } - } - oChild=oChild.nextSibling; - } - putFtsTData(aTopics); - } - } - else if(gnLoadFts==2) - { - var node=xmlDoc.lastChild; - if(node) - { - var oChild=node.firstChild; - var aFtsContents=new Array(); - while(oChild) - { - if(oChild.nodeName=="key") - { - var name=oChild.getAttribute("name"); - if(name&&name.length>0) - { - var item=new Object(); - item.sItemName=name; - aFtsContents[aFtsContents.length]=item; - var oChildChild=oChild.firstChild; - while(oChildChild) - { - if(oChildChild.nodeName=="#text") - { - var sIDs=oChildChild.nodeValue; - if(sIDs) - { - var nBPos=0; - do - { - var nPos=sIDs.indexOf(",",nBPos); - var sID=null; - if(nPos!=-1) - sID=sIDs.substring(nBPos,nPos); - else - sID=sIDs.substring(nBPos); - - if(sID) - { - var id=parseInt(sID); - if(!isNaN(id)) - { - if(!item.aTopics) - item.aTopics=new Array(); - item.aTopics[item.aTopics.length]=id; - } - } - nBPos=nPos+1; - }while(nBPos!=0&&nBPos0) - { - document.body.background=gsBgImage; - } - if(gsBgColor&&gsBgColor.length>0) - { - document.body.bgColor=gsBgColor; - } - writeResultDiv(); - loadFts(); - var oMsg=new whMessage(WH_MSG_SHOWFTS,this,1,null) - SendMessage(oMsg); -} - -function writeResultDiv() -{ - var sHTML="

    "; - document.body.insertAdjacentHTML("beforeEnd",sHTML); -} - -function loadFts() -{ - if(!gbReady) - { - var oResMsg=new whMessage(WH_MSG_GETPROJINFO,this,1,null); - if(SendMessage(oResMsg)&&oResMsg.oParam) - { - gbReady=true; - var oProj=oResMsg.oParam; - var aProj=oProj.aProj; - gbXML=oProj.bXML; - if(aProj.length>0) - { - var sLangId=aProj[0].sLangId; - for(var i=0;i=0)&&(gsFtsBreakChars.charAt(nSep)=="|"))){ - gnCurrentOp=0; - gbNot=false; - }else if((sCW=="and")||((nSep>=0)&&(gsFtsBreakChars.charAt(nSep)=="&"))){ - gnCurrentOp=1; - gbNot=false; - }else if((sCW=="not")|| - ((nSep>=0)&&(gsFtsBreakChars.charAt(nSep)=="~"))){ - gbNot=!gbNot; - }else if(sCW!=""&&!IsStopWord(sCW,gaFtsStop)){ - var sCurrentStem=GetStem(sCW); - gsCW=sCurrentStem; - ftsFindKeyword(); - return; - } - findOneKey(); - } - else{ - displayTopics(); - checkAgain(); - } -} - -function checkAgain() -{ - gsCheckKey = ""; - gnIndexNum = 0; - gsSK=gsSK2; - gsSK2=null; - if(gsSK!=null) - setTimeout("findFTSKey();",1); -} - -function displayTopics() -{ - var sHTML=""; - var sLine=""; - for(var i=0;i"+_textToHtml(gaTI[i].sTopicTitle)+"

    byT=ytNUbs$@JD8ro9-xzCa!(Led^LGU2XH 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 diff --git a/doc/salome/gui/GEOM/image296.jpg b/doc/salome/gui/GEOM/image296.jpg deleted file mode 100755 index 1edb39e5f6dbc2eb4a1a4725b97462217248e55d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17683 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 diff --git a/doc/salome/gui/GEOM/image297.jpg b/doc/salome/gui/GEOM/image297.jpg deleted file mode 100755 index e324a2b5d72b1ec5c2a45b32623ece214255053f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16645 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 SW+VWkfZl>euTC<;;Qs)nnuogp diff --git a/doc/salome/gui/GEOM/image298.jpg b/doc/salome/gui/GEOM/image298.jpg deleted file mode 100755 index 2a86720b26abca473be8049ce7cefd17b983bf8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17987 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 MYAI~VzzF^S59&&8AOHXW diff --git a/doc/salome/gui/GEOM/image3.jpg b/doc/salome/gui/GEOM/image3.jpg deleted file mode 100755 index 4aacee4edfe9f969c4b18a273733bbfc01f0c1eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28699 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%0AX+hL#Cg*FSXzuy6 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 I1@7B_0PSq>Qvd(} diff --git a/doc/salome/gui/GEOM/image32.gif b/doc/salome/gui/GEOM/image32.gif deleted file mode 100755 index bbdf48a24bf67d98f8be9c7c62c8a1eb9809b834..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 914 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 diff --git a/doc/salome/gui/GEOM/image42.gif b/doc/salome/gui/GEOM/image42.gif deleted file mode 100755 index 1e4003ccae74835ff99e20fe5edffc0514a07339..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 917 zcmZ?wbh9u|6k`x$_|5*-O!NFz@VXc@70f&Zmen~DKh6Rrp7zHHR3>+958u}HOc|3MZJm5M( z!&QkV;nQP}CT1p%3eSSao|BBZHCA458G9UiPp}M=Syx&dz4_Y%yl9T4M*FsZuD{)fElPMI|TLL@BJkwwQTEnr+ur?eO)y{2VX3!XDh(7RSuQ GU=09X z$arj6aIl#}SS#klhJ}Y)805ryGzt|O7$szxZk(97=rAJ#Q-_GbgX9wvRi&FmBpa5v WFdAqJ9hecc?CfldVm%%X25SHW9wtWs diff --git a/doc/salome/gui/GEOM/image5.gif b/doc/salome/gui/GEOM/image5.gif deleted file mode 100755 index 751dfd938a4412916fcb665bf9f243d102ad7780..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1274 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 diff --git a/doc/salome/gui/GEOM/image51.gif b/doc/salome/gui/GEOM/image51.gif deleted file mode 100755 index d04ebd08fe5919c6b233524ef128ae29f587ece6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 954 zcmZ?wbh9u|lwc5J_|5a1VuPYHgMhLZ%LjvohHeRcCzApOMkfX)owO?& z3=EA-?0kMPD-9VKnYHx0&Twp6;yr^c``nQT;R9!9D7sI}`6=|mZ<1N}vniTeo}XXp z=x!An6_DPrI--{CgXdI*6N^>0mdU;dUg5TuIbcFQRZ@ ad;WbU3t=UTgasQC56jAG`3VRxSOWl>kWoqi diff --git a/doc/salome/gui/GEOM/image51.jpg b/doc/salome/gui/GEOM/image51.jpg deleted file mode 100755 index afeeda7ec2b8c925f709a2cd0b27c1168f008417..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8646 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 diff --git a/doc/salome/gui/GEOM/image53.gif b/doc/salome/gui/GEOM/image53.gif deleted file mode 100755 index c976b6dab4d0d008493f086642d726b51ff16e01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 987 zcmZ?wbh9u|6lV})_|5mElSPpDRbZ+DnVG?lIxQKy)jYr0zf#IP`w+N$v zLc_$z2m2KmSvV9nF*Go<$)1Y2IZ4r{nS)0_V#B8A3`~0ZVhR$0Y0gZXToOMtHYvC> zv$}b)N|`)qXmXR*vuy}c4V$3o8MasAfp)}1hGSK#9hVk)Z4tfBmm@u0_2dNYv&*(v z2c|Zx&N(>ARr`}Z~(g$p+qc-~D!nCtVFGvpP>_+4laW!7lao_YP*76S z(@;}UQ8Qk+aE_jp2@GaoVqsz96o9aC@NuxP@QCs72?>jeih{Ytr7nv|35bXagD5B| zsi~+h($HKKW@lj+{y#TDJ183fK;)pa2K?PXB&1~I6qHodH0MA7>0dJ9^DpVY2X>|%l<9n2RK1?#<@mW;-8f7iaCO@|XWbZ$COijbW z3T9&$6cQE@y(A~Ea79r`S@W8fw$623J=0re<`%att?cX_9G#q9Tzwxt^79V}42pR2 zG&1Vh^XP=c*Gb7Ksc+J0d^zr3Qds=DUO*V@*$_Kwc3Z{NEIe+>!+L<*xA?esttU4E6?+#!kMZ)iGCgJ{uh_wr)tef#uM8m z2_@}g$$T!|A5)x{2>|6bOtX2*QUCGFEG^x`lzIZd1)aNF65}Oz{Iy7)ivR0Qj))CZ z`!~9@1y`_CT7M&^tSC(PNC~U_B&Cezt>lM@)bD(z~GXWe9iR8px|q= zHzOyy*k>sAWOda$UH5Uji|{wx!7%}tjq8(@0QGtMCo$!B_2?YJepVRdS=%#YWbE&G zr#pVl-iUirq+LY)#q7lk8}Efv*WP{Ue#sE_SQ%Ze_`aRSaJx%2$?oCQJruD>f(nb>Uu&hgtsm zm~#^yMtJFs7wx=~s}Y?#yl(hpbFa*{UUR9H=m+ySW4e?AxrmMa7d(fGZII(7`Cy-r zA2D?$7)nNS4<`2qPSPUZlW0II*U@F0(SsbLDP`i3Ri9nbt)`TPd`ofN$lt=z%WZZ( zV2dDGAAB9BVs9OFY?P2tTG}o=afBIRY^px zM$NXId2{8dw=)Y3spioLsI4oi3}BEi5f-W2$rAE{dQas!6sm@o4<&m~Hbu73;t#Xn zjOJ!a34XRKDBBdIua>UFrh=}kb8ce;dQ%ompX6V7r@}W50pcI<~JVorDNGH_A z?QjzlZ;>9fhwk3SDg{5rVta+Jb>Z>(POvrP3CNMFHlo62B~ z(+MJ1T+1bW&GUY|HK6xOjh_dl;pZ<4@q5lZl*b?>?^~KU

    "; -} - -function fakeItemsArea(nB,n,sKA,sKB,obj) -{ - this.nB=nB; - this.nNum=n; - this.sKA=sKA; - this.sKB=sKB; - this.obj=obj; - this.nMargin=(n-1)*gnUHeight; - - this.setNum=function(n) - { - var nLastobj=-1; - var nDelta=this.nMargin; - this.nMargin=(n-1)*gnUHeight; - nDelta=nDelta-this.nMargin; - if(n>0) - { - this.nNum=n; - var nMU=getMaxUnits(); - nLastobj=Math.floor((n-1)/nMU); - if(this.obj.length) - this.obj[nLastobj].style.marginTop=((n-1)%nMU)*gnUHeight; - else - this.obj.style.marginTop=((n-1)%nMU)*gnUHeight; - } - if(this.obj.length) - { - for(var i=this.obj.length-1;i>nLastobj;i--) - removeThis(this.obj[i]); - } - else - { - if(nLastobj==-1) - removeThis(this.obj); - } - return nDelta; - } - this.insertAdjacentHTML=function(sWhere,sHTML) - { - if(sWhere=="beforeBegin") - { - if(this.obj.length) - this.obj[0].insertAdjacentHTML(sWhere,sHTML); - else - this.obj.insertAdjacentHTML(sWhere,sHTML); - } - else if(sWhere=="afterEnd") - { - if(this.obj.length) - { - if(gbMac&&gbIE5&&this.obj[this.obj.length-1].nextSibling) - this.obj[this.obj.length-1].nextSibling.insertAdjacentHTML("beforeBegin",sHTML); - else - this.obj[this.obj.length-1].insertAdjacentHTML(sWhere,sHTML); - } - else - { - if(gbMac&&gbIE5&&this.obj.nextSibling) - this.obj.nextSibling.insertAdjacentHTML("beforeBegin",sHTML); - else - this.obj.insertAdjacentHTML(sWhere,sHTML); - } - } - } - this.getBtm=function() - { - if(this.obj.length) - return this.obj[this.obj.length-1].offsetTop; - else - return this.obj.offsetTop; - } - this.getTop=function() - { - return this.getBtm()-this.nMargin; - } -} - -function usedItems(nB,nE) -{ - this.nB=nB; - this.nE=nE; - this.oN=null; -} - -function checkReady() -{ - var len=gaChunks.length; - var bNeedLoad=false; - var aDataCon; - var s=0; - var bDown=(gsSKB==null); - var sK=bDown?gsSKA:gsSKB; - if(sK==null) - { - markEnd(); - setTimeout("checkAgain();",50); - return; - } - if(!gsChK||sK!=gsChK||gnNum==0) - { - gnCheck=0; - gsChK=sK; - aDataCon=new Array(); - } - else{ - s=gnNum; - aDataCon=gaDataCon; - } - for(var i=gnCheck;i0&&aPos[i]>=0&&aPos[i]0) - { - sCurrentK=aDataCon[i].aKs[aPos[i]].sName; - } - } - } - return sCurrentK; -} - -function checkAgain() -{ - if(!gbProcess) - { - if(gsBCK!=null) - { - gsCK=gsBCK; - gsBCK=null; - findCK(); - } - else - { - markBegin(); - getUnitIdx(document.body.scrollTop,document.body.clientHeight); - } - } - else - setTimeout("checkAgain()",50); -} - -function getLimit(aDataCon,aPos,aMaxPos,aMinPos,i) -{ - aMaxPos[i]=aDataCon[i].nNum; - aMinPos[i]=-1; - var oPNode=null; - if(aDataCon[i].oUsedItems) - { - var oUsedItems=aDataCon[i].oUsedItems; - do{ - if(oUsedItems.nB>aPos[i]) - { - aMaxPos[i]=oUsedItems.nB; - break; - } - oPNode=oUsedItems; - oUsedItems=oUsedItems.oN; - }while(oUsedItems!=null); - if(oPNode) - aMinPos[i]=oPNode.nE; - } - else if(aDataCon[i].aKs==null) - { - aMaxPos[i]=aMinPos[i]=aPos[i]; - } - if(aMinPos[i]>=aPos[i]||aMaxPos[i]<=aPos[i]) - { - aMaxPos[i]=aMinPos[i]=aPos[i]; - } -} - -function getIdxPos(oIdx,bDown,sK) -{ - var aKs=oIdx.aKs; - var nIdx; - if(bDown) - nIdx=oIdx.nNum; - else - nIdx=-1; - if(aKs!=null) - { - for(var i=0;i0) - { - nIdx=i; - break; - } - } - else - { - if(compare(aKs[i].sName,sK)<0) - nIdx=i; - else - break; - } - i+=aKs[i].nNKOff; - } - } - else if(oIdx.aKsOnly) - { - var aKsOnly=oIdx.aKsOnly; - for(var i=0;i0) - { - nIdx=i; - break; - } - } - else - { - if(compare(aKsOnly[i],sK)<0) - nIdx=i; - else - break; - } - } - } - } - return nIdx; -} - -function writeItems(oHTML,aDataCon,aPos,aMinPos,aMaxPos,bDown,nLevel) -{ - var aOldPos=new Array(); - for(var i=0;iaMinPos[i])) - { - if(sCurrentK==""|| - (bDown&&compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)>0)|| - (!bDown&&compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)<0)) - { - sCurrentK=aDataCon[i].aKs[aPos[i]].sName; - p=0; - aCurIdxSet[p++]=i; - } - else if(compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)==0){ - aCurIdxSet[p++]=i; - } - } - else if(nLevel==1&&aMaxPos[i]!=aMinPos[i]){ - if(bDown&&aPos[i]==aMaxPos[i]) - { - if(aDataCon[i].aKs) - { - gsSKA=aDataCon[i].aKs[aOldPos[i]].sName; - return false; - } - } - else if(!bDown&&aPos[i]==aMinPos[i]) - { - if(aDataCon[i].aKs) - { - gsSKB=aDataCon[i].aKs[aOldPos[i]].sName; - return false; - } - } - } - } - if(p>=1){ - for(var s=0;s0); - return true; -} - -function updateUsedK(aDataCon,aOriPos,aOldPos,bDown) -{ - for(var i=0;inB) - { - if(oUsedItems.nB==nE+1) - { - oUsedItems.nB=nB; - } - else{ - var oNewNode=new usedItems(oUsedItems.nB,oUsedItems.nE); - oNewNode.oN=oUsedItems.oN; - oUsedItems.nB=nB; - oUsedItems.nE=nE; - oUsedItems.oN=oNewNode; - } - break; - } - oPNode=oUsedItems; - oUsedItems=oUsedItems.oN; - }while(oUsedItems); - if(!oUsedItems) - { - if(oPNode!=null) - oPNode.oN=new usedItems(nB,nE); - } - if(oPNode!=null){ - if(oPNode.nE==oPNode.oN.nB-1) - { - oPNode.nE=oPNode.oN.nE; - oPNode.oN=oPNode.oN.oN; - } - } - } -} - -function projInfo(sPPath,sDPath,sFile) -{ - this.sPPath=sPPath; - this.sDPath=sDPath; - this.sFile=sFile; -} - -function addProjInfo(sPPath,sDPath,sFile) -{ - var oIdxInfo=new projInfo(sPPath,sDPath,sFile); - gaData[gaData.length]=oIdxInfo; - return oIdxInfo; -} - -function writeDataIFrame() -{ - if(gnLoad=nPos) return true; - oUsed=oUsed.oN; - } - return false; -} - -function getKByIdx(oCData,nB) -{ - var nRelPos=nB-(oCData.nTotal-oCData.nNum); - var aIKs=oCData.aKs; - if(nRelPos>=0&&aIKs&&nRelPos=0) - { - do{ - oK=aIKs[nRelPos--]; - } - while((oK.nType==3||isUsed(oCData,nRelPos+1))&&nRelPos>=0); - } - if(oK.nType!=3) - { - return oK.sName; - } - } - } - return null; -} - -function loadData2(sFileName) -{ - disEvt(); - if(gbXML) - loadDataXML(sFileName); - else - loadData(sFileName); - enEvt(); -} - -function projReady(aChunk) -{ - gaChunks[gnLoad++]=aChunk; - var len=aChunk.length; - var nTotal=0; - if(len>0) - nTotal=aChunk[len-1].nTotal; - gnItems+=nTotal; - if(nTotal>gnMaxItems) - { - gnMaxItems=nTotal; - gnRef=gnLoad-1; - } - setTimeout("writeDataIFrame();",1); -} - -function writeFakeItems() -{ - disEvt(); - gnUHeight=15; - var sHTML=getFakeItemsHTMLbyCount(0,gnItems); - document.body.insertAdjacentHTML("beforeEnd",sHTML); - var obj=getH6ById(0); - if (document.body != null) - { - gnVisible=Math.ceil(document.body.clientHeight/gnUHeight); - } - gaFakes[0]=new fakeItemsArea(0,gnItems,"",getEndString(),obj); - enEvt(); -} - -function getEndString() -{ - var sBC=getBiggestChar(); - return sBC+sBC+sBC+sBC+sBC+sBC+sBC+sBC; -} - -function getUnitIdx(nScrl,nHeight) -{ - if(gaFakes.length==0) - { - markEnd(); - return; - } - var nB=0; - var nE=gaFakes.length-1; - var nM=-1; - var nTop=0; - var nBtm=0; - var bF=false; - do{ - nM=(nB+nE)>>1; - nBtm=gaFakes[nM].getBtm(); - nTop=gaFakes[nM].getTop(); - - if(nTop>=nScrl+nHeight) - nE=nM-1; - else if(nBtm=nB); - if(bF) - { - if(nTop>=nScrl){ - gsSKA=gaFakes[nM].sKA; - gsSKB=null; - gnNeeded=Math.ceil((nHeight-nTop+nScrl)/gnUHeight); - gnIns=gaFakes[nM].nB; - checkReady(); - } - else if(nBtm<=nScrl+nHeight){ - gsSKB=gaFakes[nM].sKB; - gsSKA=null; - gnNeeded=Math.ceil((nBtm-nScrl+gnScrlMgn)/gnUHeight); - gbNeedCalc=true; - checkReady(); - } - else{ - gnNeeded=gnVisible; - var nUnitIdx=gaFakes[nM].nB+Math.floor((nScrl-nTop)/gnUHeight); - if (!showItemsInEvaluation(nUnitIdx)) - { - gsSKA=gaFakes[nM].sKA; - gsSKB=null; - gnNeeded=Math.ceil(nHeight/gnUHeight); - gnIns=gaFakes[nM].nB; - checkReady(); - } - } - } - else - markEnd(); -} - -function disEvt() -{ - window.onscroll=null; - window.onresize=null; -} - -function enEvt() -{ - window.onscroll=window_OnScroll; - window.onresize=window_OnResize; -} - -function insertIdxKs(nIns,oHTML,bScrl) -{ - var bRtn=true; - disEvt(); - var nCount=oHTML.nConsumed; - var nB=0; - var nE=gaFakes.length-1; - var nM=-1; - var bF=false; - do{ - nM=(nB+nE)>>1; - if(gaFakes[nM].nB>nIns) - nE=nM-1; - else if(gaFakes[nM].nB+gaFakes[nM].nNum<=nIns) - nB=nM+1; - else{ - bF=true; - break; - } - }while(nE>=nB); - if(bF) - { - var oFIA=gaFakes[nM]; - var nOffsetTop=oFIA.getTop(); - var nOffsetBottom=oFIA.getBtm(); - var nDelta=0; - var nHDiff=nIns-oFIA.nB; - var nTDiff=oFIA.nNum+oFIA.nB-(nIns+nCount); - if(nHDiff>0) - { - nDelta=oFIA.setNum(nHDiff); - var sOldKBefore=oFIA.sKB; - oFIA.sKB=oHTML.sFK; - if(nTDiff>0) - { - var sHTML=getFakeItemsHTMLbyCount(nIns,nTDiff); - oFIA.insertAdjacentHTML("afterEnd",sHTML); - var obj=getH6ById(nIns); - insertItemIntoArray(gaFakes,nM+1,new fakeItemsArea(nIns+nCount,nTDiff,oHTML.sLK,sOldKBefore,obj)); - } - oFIA.insertAdjacentHTML("afterEnd",oHTML.sHTML); - if(bScrl) - { - if(gbMac&&gbIE4) - { - var nScrollPos=nOffsetBottom-nDelta; - while(document.body.scrollTop!=nScrollPos) - document.body.scrollTop=nScrollPos; - } - else - window.scrollTo(0,nOffsetBottom-nDelta); - } - } - else{ - oFIA.insertAdjacentHTML("beforeBegin",oHTML.sHTML); - if(bScrl){ - if(gbMac&&gbIE4) - { - var nScrollPos=nOffsetTop; - while(document.body.scrollTop!=nScrollPos) - document.body.scrollTop=nScrollPos; - } - else - window.scrollTo(0,nOffsetTop); - } - - if(nTDiff>0) - { - oFIA.nB=nIns+nCount; - nDelta=oFIA.setNum(nTDiff); - oFIA.sKA=oHTML.sLK; - } - else{ - gaFakes[nM].setNum(0); - removeItemFromArray(gaFakes,nM); - } - } - } - else - bRtn=false; - enEvt(); - return bRtn; -} - -function window_OnScroll() -{ - gnSE++; - setTimeout("procScroll();",50); -} - -function procScroll() -{ - if(gnSE==1&&!gbProcess) - { - markBegin(); - getUnitIdx(document.body.scrollTop,document.body.clientHeight); - } - gnSE--; -} - -function window_OnResize() -{ - gnRE++; - setTimeout("procResize();",50); -} - -function procResize() -{ - if(gnRE==1&&!gbProcess) - { - markBegin(); - gnVisible=Math.ceil(document.body.clientHeight/gnUHeight); - if(gnIns==-1) - getUnitIdx(document.body.scrollTop,document.body.clientHeight); - } - gnRE--; -} - -function getChunkByIdx(nIdx,nPosition) -{ - var oCData=null; - if(nIdx0) - { - var nB=0; - var nE=len-1; - var bF=false; - do{ - var nM=(nB+nE)>>1; - if(nPositionnB); - if(bF) - oCData=gaChunks[nIdx][nE]; - else if(nPosition0) - { - var nB=0; - var nE=len-1; - var bF=false; - do{ - var nM=(nB+nE+(bDown?0:1))>>1; - if(bDown) - { - if(compare(sK,gaChunks[nIdx][nM].sEK)<0) - { - bF=true; - nE=nM; - } - else - nB=nM+1; - } - else - { - if(compare(sK,gaChunks[nIdx][nM].sBK)>0) - { - bF=true; - nB=nM; - } - else - nE=nM-1; - } - }while(nE>nB); - if(bF) - { - if(bDown) - nCandId=nE; - else - nCandId=nB; - } - else - { - if(bDown) - { - if(gaChunks[nIdx].length>nB&&compare(sK,gaChunks[nIdx][nB].sEK)<0) - nCandId=nB; - else - nCandId=gaChunks[nIdx].length-1; - } - else - { - if(0<=nE&&compare(sK,gaChunks[nIdx][nE].sBK)>0) - nCandId=nE; - else - nCandId=0; - } - } - return gaChunks[nIdx][nCandId]; - } - } - return null; -} - -function findCK() -{ - if(gsCK!=null) - { - gsSKA=gsCK; - gbFindCK=true; - gnNeeded=1; - markBegin(); - checkReady(); - } -} - -function writeLoadingDiv(nIIdx) -{ - return ""; -} - -var gbWhHost=true; \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whibody.htm b/doc/salome/gui/GEOM/whibody.htm deleted file mode 100755 index a279fa888..000000000 --- a/doc/salome/gui/GEOM/whibody.htm +++ /dev/null @@ -1,284 +0,0 @@ - - -Index content - - - - - - - - - - - - - - - - - - - diff --git a/doc/salome/gui/GEOM/whidhtml.htm b/doc/salome/gui/GEOM/whidhtml.htm deleted file mode 100755 index 945fdc8f0..000000000 --- a/doc/salome/gui/GEOM/whidhtml.htm +++ /dev/null @@ -1,30 +0,0 @@ - - -Index - - - - - - - - - diff --git a/doc/salome/gui/GEOM/whiform.htm b/doc/salome/gui/GEOM/whiform.htm deleted file mode 100755 index 76674d78d..000000000 --- a/doc/salome/gui/GEOM/whiform.htm +++ /dev/null @@ -1,91 +0,0 @@ - - -Index form - - - - - - - - - - - - - - \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whihost.js b/doc/salome/gui/GEOM/whihost.js deleted file mode 100755 index 9aaf13a6a..000000000 --- a/doc/salome/gui/GEOM/whihost.js +++ /dev/null @@ -1,424 +0,0 @@ -// WebHelp 5.10.002 -var gsDefaultTarget="bsscright"; -var gsBgColor="#ffffff"; -var gsBgImage=""; -var goIdxFont=null; -var goIdxEmptyFont=null; -var goIdxHoverFont=null; -var gsIdxMargin="0pt"; -var gsIdxIndent="8pt"; -var gsIdxActiveBgColor="#cccccc"; -var gsCK = null; -var gsBCK = null; -var gbCR = false; -var gbBCR = false; -var gbWhIHost=true; - -function myEvent() -{ - this.pageX = 0; - this.pageY = 0; -} -var _event=new myEvent(); - -function setBackgroundcolor(sBgColor) -{ - gsBgColor=sBgColor; -} - -function setBackground(sBgImage) -{ - gsBgImage=sBgImage; -} - -function setFont(sType,sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration) -{ - var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration); - if(sType=="Normal") - goIdxFont=vFont; - else if(sType=="Empty") - goIdxEmptyFont=vFont; - else if(sType=="Hover") - goIdxHoverFont=vFont; -} - -function setActiveBgColor(sBgColor) -{ - gsIdxActiveBgColor=sBgColor; -} - -function setMargin(sMargin) -{ - gsIdxMargin=sMargin; -} - -function setIndent(sIndent) -{ - gsIdxIndent=sIndent; -} - -function writeOneItem(oHTML,bDown,aDataCon,aCurIdxSet,nLength,aPos,nLevel) -{ - var sHTML=""; - var nIdxSet=aCurIdxSet[0]; - var nIIdx=aPos[nIdxSet]; - var sKOriName=getItemName(aDataCon,nIdxSet,nIIdx); - var sKName=_textToHtml(sKOriName); - - var nIdxIndent=parseInt(gsIdxIndent); - var sTopics=""; - if(nLevel==1){ - if(getItemType(aDataCon,nIdxSet,nIIdx)==1) - { - sHTML+="
    "; - sHTML+=""+sKName+"
    "; - } - else{ - for(var i=0;i"; - sHTML+="0) - sHTML+=sTopics+");return false;\">"+sKName+"

    "; - else - sHTML+=");return false;\" style=\""+getFontStyle(goIdxEmptyFont)+"\">"+sKName+"

    "; - } - } - else if(nLevel>=2){ - var nIndent=nIdxIndent*nLevel; - for(var i=0;i"; - else - sHTML+="
    "; - sHTML+="0) - sHTML+=sTopics+");return false;\">"+sKName+"
    "; - else - sHTML+=");return false;\" style=\""+getFontStyle(goIdxEmptyFont)+"\">"+sKName+""; - } - oHTML.addHTML(sHTML,nLength,bDown,(nLevel==1),sKOriName); -} - -function getTargetName(aDataCon,nIdxSet,nIIdx) -{ - if(nIdxSetnIIdx) - if(aDataCon[nIdxSet].aKs[nIIdx].sTarget) - return aDataCon[nIdxSet].aKs[nIIdx].sTarget; - return gsDefaultTarget; -} - -function mergeItems(oHTML,bDown,aDataCon,aCurIdxSet,nLength,aPos,nLevel) -{ - var oLocalHTML=new indexHTMLPart(); - writeOneItem(oLocalHTML,bDown,aDataCon,aCurIdxSet,nLength,aPos,nLevel); - - var aLocalPos=new Array(); - var aMaxPos=new Array(); - for(var i=0;i0) - aMaxPos[aCurIdxSet[i]]=aLocalPos[aCurIdxSet[i]]+nNKOff; - } - var oSubHTML=new indexHTMLPart(); - writeItems(oSubHTML,aDataCon,aLocalPos,null,aMaxPos,true,nLevel+1); - oLocalHTML.addSubHTML(oSubHTML,true); - oHTML.appendHTML(oLocalHTML,bDown); -} - -function adjustPosition(bDown,aDataCon,aCurIdxSet,nLength,aPos) -{ - if(bDown) - { - for(var i=0;inIIdx) - return aDataCon[nIdxSet].aKs[nIIdx].sName; - else - return null; -} - -function getItemType(aDataCon,nIdxSet,nIIdx) -{ - if(nIdxSetnIIdx) - return aDataCon[nIdxSet].aKs[nIIdx].nType; - else - return 0; -} - -function getNKOff(aDataCon,nIdxSet,nIIdx) -{ - if(nIdxSetnIIdx) - return aDataCon[nIdxSet].aKs[nIIdx].nNKOff; - else - return null; -} - -function getPKOff(aDataCon,nIdxSet,nIIdx) -{ - if(nIdxSetnIIdx) - return aDataCon[nIdxSet].aKs[nIIdx].nPKOff; - else - return null; -} - -function window_OnLoad() -{ - if(gsBgImage&&gsBgImage.length>0) - { - document.body.background=gsBgImage; - } - if(gsBgColor&&gsBgColor.length>0) - { - document.body.bgColor=gsBgColor; - } - document.body.insertAdjacentHTML("beforeEnd",writeLoadingDiv()); - loadIdx(); - var oMsg=new whMessage(WH_MSG_SHOWIDX,this,1,null) - SendMessage(oMsg); -} - -function loadIdx() -{ - if(!gbReady) - { - var oResMsg=new whMessage(WH_MSG_GETPROJINFO,this,1,null); - if(SendMessage(oResMsg)&&oResMsg.oParam) - { - gbReady=true; - var oProj=oResMsg.oParam; - var aProj=oProj.aProj; - gbXML=oProj.bXML; - if(aProj.length>0) - { - var sLangId=aProj[0].sLangId; - for(var i=0;inIIdx) - { - if(aDataCon[nIdxSet].aKs[nIIdx].aTopics) - { - var nLen=aDataCon[nIdxSet].aKs[nIIdx].aTopics.length; - var nProj=aDataCon[nIdxSet].nProjId; - var sPath=gaData[nProj].sPPath; - for(var i=0;i>1; - sItem=getInnerText(oP[nM]); - - if(compare(sItem,sK)==0) - { - bF=true; - break; - } - else if(compare(sItem,sK)>0) - nE=nM-1; - else if(compare(sItem,sK)<0) - nB=nM; - } - if(!bF) - { - if(nB==nE) nM=nB; - - if(nM+10){ - var nbTag=getElementsByTag(oMatch,"NOBR"); - if(nbTag&&nbTag.length>0) - HighLightElement(nbTag[0], gsIdxActiveBgColor, "transparent"); - if (gbCR) - { - if (gbIE4) - tempColl(0).click(); - else - { - var strCommand = tempColl[0].getAttribute("onClick"); - var nstrCommand = strCommand.indexOf(";"); - strCommand = strCommand.substring(0, nstrCommand); - strCommand = strCommand.replace("event", "_event"); - window._event.pageX = oMatch.offsetLeft ; - window._event.pageY = oMatch.offsetTop + 20; - window.setTimeout(strCommand, 100); - } - } - } - } - gsCK=gsBCK; - gbCR=gbBCR; - if(gsBCK!=null) - { - gsBCK=null; - gbBCR=false; - findCK(); - return false; - } - - } - return true; -} - -function clearHighLight() -{ - resetHighLight(gsBgColor); -} - -function IndexWriteClassStyle() -{ - var sStyle=""; - sStyle+=""; - document.write(sStyle); - return; -} - -function window_Unload() -{ - UnRegisterListener2(this,WH_MSG_PROJECTREADY); - UnRegisterListener2(this,WH_MSG_SEARCHINDEXKEY); -} - -function onSendMessage(oMsg) -{ - if(oMsg) - { - var nMsgId=oMsg.nMessageId; - if(nMsgId==WH_MSG_SEARCHINDEXKEY) - { - if(oMsg.oParam && oMsg.oParam.sInput) - { - if(gsCK==null) - { - gsCK=oMsg.oParam.sInput; - gbCR = oMsg.oParam.bCR; - findCK(); - } - else - { - gsBCK=oMsg.oParam.sInput; - gbBCR = oMsg.oParam.bCR; - } - } - } - else if(nMsgId==WH_MSG_PROJECTREADY) - { - loadIdx(); - } - } - return true; -} - -if(window.gbWhVer&&window.gbWhLang&&window.gbWhMsg&&window.gbWhUtil&&window.gbWhHost&&window.gbWhProxy) -{ - RegisterListener2(this,WH_MSG_PROJECTREADY); - RegisterListener2(this,WH_MSG_SEARCHINDEXKEY); - goIdxFont=new whFont("Verdana","8pt","#000000","normal","normal","none"); - goIdxEmptyFont=new whFont("Verdana","8pt","#666666","normal","normal","none"); - goIdxHoverFont=new whFont("Verdana","8pt","#007f00","normal","normal","underline"); - - window.onload=window_OnLoad; - window.onbeforeunload=window_BUnload; - window.onunload=window_Unload; - gbWhIHost=true; -} -else - document.location.reload(); - diff --git a/doc/salome/gui/GEOM/whlang.js b/doc/salome/gui/GEOM/whlang.js deleted file mode 100755 index 870be0e17..000000000 --- a/doc/salome/gui/GEOM/whlang.js +++ /dev/null @@ -1,453 +0,0 @@ -// WebHelp 5.10.001 -var garrSortChar=new Array(); -var gaFtsStop=new Array(); -var gaFtsStem=new Array(); -var gbWhLang=false; - -garrSortChar[0] = 0; -garrSortChar[1] = 1; -garrSortChar[2] = 2; -garrSortChar[3] = 3; -garrSortChar[4] = 4; -garrSortChar[5] = 5; -garrSortChar[6] = 6; -garrSortChar[7] = 7; -garrSortChar[8] = 8; -garrSortChar[9] = 40; -garrSortChar[10] = 41; -garrSortChar[11] = 42; -garrSortChar[12] = 43; -garrSortChar[13] = 44; -garrSortChar[14] = 9; -garrSortChar[15] = 10; -garrSortChar[16] = 11; -garrSortChar[17] = 12; -garrSortChar[18] = 13; -garrSortChar[19] = 14; -garrSortChar[20] = 15; -garrSortChar[21] = 16; -garrSortChar[22] = 17; -garrSortChar[23] = 18; -garrSortChar[24] = 19; -garrSortChar[25] = 20; -garrSortChar[26] = 21; -garrSortChar[27] = 22; -garrSortChar[28] = 23; -garrSortChar[29] = 24; -garrSortChar[30] = 25; -garrSortChar[31] = 26; -garrSortChar[32] = 38; -garrSortChar[33] = 45; -garrSortChar[34] = 46; -garrSortChar[35] = 47; -garrSortChar[36] = 48; -garrSortChar[37] = 49; -garrSortChar[38] = 50; -garrSortChar[39] = 33; -garrSortChar[40] = 51; -garrSortChar[41] = 52; -garrSortChar[42] = 53; -garrSortChar[43] = 88; -garrSortChar[44] = 54; -garrSortChar[45] = 34; -garrSortChar[46] = 55; -garrSortChar[47] = 56; -garrSortChar[48] = 115; -garrSortChar[49] = 119; -garrSortChar[50] = 121; -garrSortChar[51] = 123; -garrSortChar[52] = 125; -garrSortChar[53] = 126; -garrSortChar[54] = 127; -garrSortChar[55] = 128; -garrSortChar[56] = 129; -garrSortChar[57] = 130; -garrSortChar[58] = 57; -garrSortChar[59] = 58; -garrSortChar[60] = 89; -garrSortChar[61] = 90; -garrSortChar[62] = 91; -garrSortChar[63] = 59; -garrSortChar[64] = 60; -garrSortChar[65] = 131; -garrSortChar[66] = 148; -garrSortChar[67] = 150; -garrSortChar[68] = 154; -garrSortChar[69] = 158; -garrSortChar[70] = 168; -garrSortChar[71] = 171; -garrSortChar[72] = 173; -garrSortChar[73] = 175; -garrSortChar[74] = 185; -garrSortChar[75] = 187; -garrSortChar[76] = 189; -garrSortChar[77] = 191; -garrSortChar[78] = 193; -garrSortChar[79] = 197; -garrSortChar[80] = 214; -garrSortChar[81] = 216; -garrSortChar[82] = 218; -garrSortChar[83] = 220; -garrSortChar[84] = 225; -garrSortChar[85] = 230; -garrSortChar[86] = 240; -garrSortChar[87] = 242; -garrSortChar[88] = 244; -garrSortChar[89] = 246; -garrSortChar[90] = 252; -garrSortChar[91] = 61; -garrSortChar[92] = 62; -garrSortChar[93] = 63; -garrSortChar[94] = 64; -garrSortChar[95] = 66; -garrSortChar[96] = 67; -garrSortChar[97] = 131; -garrSortChar[98] = 148; -garrSortChar[99] = 150; -garrSortChar[100] = 154; -garrSortChar[101] = 158; -garrSortChar[102] = 168; -garrSortChar[103] = 171; -garrSortChar[104] = 173; -garrSortChar[105] = 175; -garrSortChar[106] = 185; -garrSortChar[107] = 187; -garrSortChar[108] = 189; -garrSortChar[109] = 191; -garrSortChar[110] = 193; -garrSortChar[111] = 197; -garrSortChar[112] = 214; -garrSortChar[113] = 216; -garrSortChar[114] = 218; -garrSortChar[115] = 220; -garrSortChar[116] = 225; -garrSortChar[117] = 230; -garrSortChar[118] = 240; -garrSortChar[119] = 242; -garrSortChar[120] = 244; -garrSortChar[121] = 246; -garrSortChar[122] = 252; -garrSortChar[123] = 68; -garrSortChar[124] = 69; -garrSortChar[125] = 70; -garrSortChar[126] = 71; -garrSortChar[127] = 27; -garrSortChar[128] = 114; -garrSortChar[129] = 28; -garrSortChar[130] = 82; -garrSortChar[131] = 170; -garrSortChar[132] = 85; -garrSortChar[133] = 112; -garrSortChar[134] = 109; -garrSortChar[135] = 110; -garrSortChar[136] = 65; -garrSortChar[137] = 113; -garrSortChar[138] = 223; -garrSortChar[139] = 86; -garrSortChar[140] = 213; -garrSortChar[141] = 29; -garrSortChar[142] = 255; -garrSortChar[143] = 30; -garrSortChar[144] = 31; -garrSortChar[145] = 80; -garrSortChar[146] = 81; -garrSortChar[147] = 83; -garrSortChar[148] = 84; -garrSortChar[149] = 111; -garrSortChar[150] = 36; -garrSortChar[151] = 37; -garrSortChar[152] = 79; -garrSortChar[153] = 229; -garrSortChar[154] = 222; -garrSortChar[155] = 87; -garrSortChar[156] = 212; -garrSortChar[157] = 32; -garrSortChar[158] = 254; -garrSortChar[159] = 251; -garrSortChar[160] = 39; -garrSortChar[161] = 72; -garrSortChar[162] = 97; -garrSortChar[163] = 98; -garrSortChar[164] = 99; -garrSortChar[165] = 100; -garrSortChar[166] = 73; -garrSortChar[167] = 101; -garrSortChar[168] = 74; -garrSortChar[169] = 102; -garrSortChar[170] = 133; -garrSortChar[171] = 93; -garrSortChar[172] = 103; -garrSortChar[173] = 35; -garrSortChar[174] = 104; -garrSortChar[175] = 75; -garrSortChar[176] = 105; -garrSortChar[177] = 92; -garrSortChar[178] = 122; -garrSortChar[179] = 124; -garrSortChar[180] = 76; -garrSortChar[181] = 106; -garrSortChar[182] = 107; -garrSortChar[183] = 108; -garrSortChar[184] = 77; -garrSortChar[185] = 120; -garrSortChar[186] = 199; -garrSortChar[187] = 94; -garrSortChar[188] = 116; -garrSortChar[189] = 117; -garrSortChar[190] = 118; -garrSortChar[191] = 78; -garrSortChar[192] = 131; -garrSortChar[193] = 131; -garrSortChar[194] = 131; -garrSortChar[195] = 131; -garrSortChar[196] = 131; -garrSortChar[197] = 131; -garrSortChar[198] = 131; -garrSortChar[199] = 150; -garrSortChar[200] = 158; -garrSortChar[201] = 158; -garrSortChar[202] = 158; -garrSortChar[203] = 158; -garrSortChar[204] = 175; -garrSortChar[205] = 175; -garrSortChar[206] = 175; -garrSortChar[207] = 175; -garrSortChar[208] = 154; -garrSortChar[209] = 193; -garrSortChar[210] = 197; -garrSortChar[211] = 197; -garrSortChar[212] = 197; -garrSortChar[213] = 197; -garrSortChar[214] = 197; -garrSortChar[215] = 95; -garrSortChar[216] = 197; -garrSortChar[217] = 230; -garrSortChar[218] = 230; -garrSortChar[219] = 230; -garrSortChar[220] = 230; -garrSortChar[221] = 246; -garrSortChar[222] = 227; -garrSortChar[223] = 224; -garrSortChar[224] = 131; -garrSortChar[225] = 131; -garrSortChar[226] = 131; -garrSortChar[227] = 131; -garrSortChar[228] = 131; -garrSortChar[229] = 131; -garrSortChar[230] = 131; -garrSortChar[231] = 150; -garrSortChar[232] = 158; -garrSortChar[233] = 158; -garrSortChar[234] = 158; -garrSortChar[235] = 158; -garrSortChar[236] = 175; -garrSortChar[237] = 175; -garrSortChar[238] = 175; -garrSortChar[239] = 175; -garrSortChar[240] = 154; -garrSortChar[241] = 193; -garrSortChar[242] = 197; -garrSortChar[243] = 197; -garrSortChar[244] = 197; -garrSortChar[245] = 197; -garrSortChar[246] = 197; -garrSortChar[247] = 96; -garrSortChar[248] = 197; -garrSortChar[249] = 230; -garrSortChar[250] = 230; -garrSortChar[251] = 230; -garrSortChar[252] = 230; -garrSortChar[253] = 246; -garrSortChar[254] = 227; -garrSortChar[255] = 250; - -gaFtsStop[0] = "a"; -gaFtsStop[1] = "about"; -gaFtsStop[2] = "after"; -gaFtsStop[3] = "against"; -gaFtsStop[4] = "all"; -gaFtsStop[5] = "also"; -gaFtsStop[6] = "among"; -gaFtsStop[7] = "an"; -gaFtsStop[8] = "and"; -gaFtsStop[9] = "are"; -gaFtsStop[10] = "as"; -gaFtsStop[11] = "at"; -gaFtsStop[12] = "be"; -gaFtsStop[13] = "became"; -gaFtsStop[14] = "because"; -gaFtsStop[15] = "been"; -gaFtsStop[16] = "between"; -gaFtsStop[17] = "but"; -gaFtsStop[18] = "by"; -gaFtsStop[19] = "can"; -gaFtsStop[20] = "come"; -gaFtsStop[21] = "do"; -gaFtsStop[22] = "during"; -gaFtsStop[23] = "each"; -gaFtsStop[24] = "early"; -gaFtsStop[25] = "for"; -gaFtsStop[26] = "form"; -gaFtsStop[27] = "found"; -gaFtsStop[28] = "from"; -gaFtsStop[29] = "had"; -gaFtsStop[30] = "has"; -gaFtsStop[31] = "have"; -gaFtsStop[32] = "he"; -gaFtsStop[33] = "her"; -gaFtsStop[34] = "his"; -gaFtsStop[35] = "however"; -gaFtsStop[36] = "in"; -gaFtsStop[37] = "include"; -gaFtsStop[38] = "into"; -gaFtsStop[39] = "is"; -gaFtsStop[40] = "it"; -gaFtsStop[41] = "its"; -gaFtsStop[42] = "late"; -gaFtsStop[43] = "later"; -gaFtsStop[44] = "made"; -gaFtsStop[45] = "many"; -gaFtsStop[46] = "may"; -gaFtsStop[47] = "me"; -gaFtsStop[48] = "med"; -gaFtsStop[49] = "more"; -gaFtsStop[50] = "most"; -gaFtsStop[51] = "near"; -gaFtsStop[52] = "no"; -gaFtsStop[53] = "non"; -gaFtsStop[54] = "not"; -gaFtsStop[55] = "of"; -gaFtsStop[56] = "on"; -gaFtsStop[57] = "only"; -gaFtsStop[58] = "or"; -gaFtsStop[59] = "other"; -gaFtsStop[60] = "over"; -gaFtsStop[61] = "several"; -gaFtsStop[62] = "she"; -gaFtsStop[63] = "some"; -gaFtsStop[64] = "such"; -gaFtsStop[65] = "than"; -gaFtsStop[66] = "that"; -gaFtsStop[67] = "the"; -gaFtsStop[68] = "their"; -gaFtsStop[69] = "then"; -gaFtsStop[70] = "there"; -gaFtsStop[71] = "these"; -gaFtsStop[72] = "they"; -gaFtsStop[73] = "this"; -gaFtsStop[74] = "through"; -gaFtsStop[75] = "to"; -gaFtsStop[76] = "under"; -gaFtsStop[77] = "until"; -gaFtsStop[78] = "use"; -gaFtsStop[79] = "was"; -gaFtsStop[80] = "we"; -gaFtsStop[81] = "were"; -gaFtsStop[82] = "when"; -gaFtsStop[83] = "where"; -gaFtsStop[84] = "which"; -gaFtsStop[85] = "who"; -gaFtsStop[86] = "with"; -gaFtsStop[87] = "you"; - -gaFtsStem[0] = "ed"; -gaFtsStem[1] = "es"; -gaFtsStem[2] = "er"; -gaFtsStem[3] = "e"; -gaFtsStem[4] = "s"; -gaFtsStem[5] = "ingly"; -gaFtsStem[6] = "ing"; -gaFtsStem[7] = "ly"; - - -// as javascript 1.3 support unicode instead of ISO-Latin-1 -// need to transfer come code back to ISO-Latin-1 for compare purpose -// Note: Different Language(Code page) maybe need different array: -var gaUToC=new Array(); -gaUToC[8364]=128; -gaUToC[8218]=130; -gaUToC[402]=131; -gaUToC[8222]=132; -gaUToC[8230]=133; -gaUToC[8224]=134; -gaUToC[8225]=135; -gaUToC[710]=136; -gaUToC[8240]=137; -gaUToC[352]=138; -gaUToC[8249]=139; -gaUToC[338]=140; -gaUToC[381]=142; -gaUToC[8216]=145; -gaUToC[8217]=146; -gaUToC[8220]=147; -gaUToC[8221]=148; -gaUToC[8226]=149; -gaUToC[8211]=150; -gaUToC[8212]=151; -gaUToC[732]=152; -gaUToC[8482]=153; -gaUToC[353]=154; -gaUToC[8250]=155; -gaUToC[339]=156; -gaUToC[382]=158; -gaUToC[376]=159; - -var gsBiggestChar=""; -function getBiggestChar() -{ - if(gsBiggestChar.length==0) - { - if(garrSortChar.length<256) - gsBiggestChar=String.fromCharCode(255); - else - { - var nBiggest=0; - var nBigChar=0; - for(var i=0;i<=255;i++) - { - if(garrSortChar[i]>nBiggest) - { - nBiggest=garrSortChar[i]; - nBigChar=i; - } - } - gsBiggestChar=String.fromCharCode(nBigChar); - } - - } - return gsBiggestChar; -} - -function getCharCode(str,i) -{ - var code=str.charCodeAt(i) - if(code>256) - { - code=gaUToC[code]; - } - return code; -} - -function compare(strText1,strText2) -{ - if(garrSortChar.length<256) - { - var strt1=strText1.toLowerCase(); - var strt2=strText2.toLowerCase(); - if(strt1strt2) return 1; - return 0; - } - else - { - for(var i=0;igarrSortChar[getCharCode(strText2,i)]) return 1; - } - if(strText1.lengthstrText2.length) return 1; - return 0; - } -} -gbWhLang=true; \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whmozemu.js b/doc/salome/gui/GEOM/whmozemu.js deleted file mode 100755 index 84c6de1ed..000000000 --- a/doc/salome/gui/GEOM/whmozemu.js +++ /dev/null @@ -1,67 +0,0 @@ -// WebHelp 5.10.002 -if (! window.gbIE4 && window.gbNav6 && !document.childNodes[0].insertAdjacentHTML){ - -HTMLElement.prototype.insertAdjacentElement = function(where,parsedNode) -{ - switch (where){ - case 'beforeBegin': - this.parentNode.insertBefore(parsedNode,this); - break; - case 'afterBegin': - this.insertBefore(parsedNode,this.firstChild); - break; - case 'beforeEnd': - this.appendChild(parsedNode); - break; - case 'afterEnd': - if (this.nextSibling){ - this.parentNode.insertBefore(parsedNode,this.nextSibling); - } else { - this.parentNode.appendChild(parsedNode); - } - break; - } -} - -HTMLElement.prototype.insertAdjacentHTML = function(where,htmlStr){ - - var r = this.ownerDocument.createRange(); - r.setStartBefore(this); - var parsedHTML = r.createContextualFragment(htmlStr); - this.insertAdjacentElement(where,parsedHTML); -} - - -HTMLElement.prototype.insertAdjacentText = function(where,txtStr){ - - var parsedText = document.createTextNode(txtStr); - this.insertAdjacentElement(where,parsedText); -} -} - -function testScroll() { - // Initialize scrollbar cache if necessary - if (window._pageXOffset==null) { - window._pageXOffset = window.pageXOffset; - window._pageYOffset = window.pageYOffset; - } - // Expose Internet Explorer compatible object model - document.scrollTop = window.pageYOffset; - document.scrollLeft = window.pageXOffset; - window.document.scrollHeight = document.height; - window.document.scrollWidth = document.width; - window.document.clientWidth = window.innerWidth; - window.document.clientHeight = window.innerHeight; - - // If cache!=current values, call the onscroll event - if (((window.pageXOffset!=window._pageXOffset) || (window.pageYOffset!=window._pageYOffset)) && (window.onscroll)) - window.onscroll(); - // Cache new values - window._pageXOffset = window.pageXOffset; - window._pageYOffset = window.pageYOffset; - } - -// Create compatibility layer for Netscape -if (window.gbNav6 && !window.gbNav7) { - setInterval("testScroll()",50) -} \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whmsg.js b/doc/salome/gui/GEOM/whmsg.js deleted file mode 100755 index 52ffcd243..000000000 --- a/doc/salome/gui/GEOM/whmsg.js +++ /dev/null @@ -1,69 +0,0 @@ -// WebHelp 5.10.002 -var WH_MSG_RESIZEPANE =0x0100; -var WH_MSG_SHOWPANE =0x0101; -var WH_MSG_HIDEPANE =0x0102; -var WH_MSG_SYNCTOC =0x0103; -var WH_MSG_NEXT =0x0104; -var WH_MSG_PREV =0x0105; -var WH_MSG_NOSEARCHINPUT =0x0106; -var WH_MSG_NOSYNC =0x0107; -var WH_MSG_ENABLEWEBSEARCH =0x0108; - -var WH_MSG_ISPANEVISIBLE =0x0109; -var WH_MSG_PANESTATUE =0x010a; - -var WH_MSG_SYNCINFO =0x010b; -var WH_MSG_PANEINFO =0x010c; -var WH_MSG_WEBSEARCH =0x010d; - -var WH_MSG_SEARCHINDEXKEY =0x0201; - -var WH_MSG_SEARCHFTSKEY =0x020a; - -var WH_MSG_PROJECTREADY =0x0301; -var WH_MSG_GETPROJINFO =0x0302; - -var WH_MSG_SHOWTOC =0x0401; -var WH_MSG_SHOWIDX =0x0402; -var WH_MSG_SHOWFTS =0x0403; -var WH_MSG_SHOWGLO =0x0404; - -var WH_MSG_SHOWGLODEF =0x0500; - -var WH_MSG_GETTOCPATHS =0x0600; -var WH_MSG_GETAVIAVENUES =0x0601; -var WH_MSG_GETCURRENTAVENUE =0x0602; -var WH_MSG_GETPANEINFO =0x0603; -var WH_MSG_AVENUEINFO =0x0604; - -var WH_MSG_GETSTARTFRAME =0x0701; -var WH_MSG_GETDEFAULTTOPIC =0x0702; - -var WH_MSG_SEARCHTHIS =0x0801; -var WH_MSG_GETSEARCHS =0x0802; - -var WH_MSG_ISINFRAMESET =0x0900; - -var WH_MSG_TOOLBARORDER =0x0a00; -var WH_MSG_MINIBARORDER =0x0a01; -var WH_MSG_ISSYNCSSUPPORT =0x0a02; -var WH_MSG_ISSEARCHSUPPORT =0x0a03; -var WH_MSG_GETPANETYPE =0x0a04; -var WH_MSG_BACKUPSEARCH =0x0a05; -var WH_MSG_GETPANES =0x0a06; -var WH_MSG_INITSEARCHSTRING =0x0a07; -var WH_MSG_RELOADNS6 =0x0a08; -var WH_MSG_ISAVENUESUPPORT =0x0a09; - -var WH_MSG_GETCMD =0x0b00; -var WH_MSG_GETPANE =0x0b01; -var WH_MSG_GETDEFPANE =0x0b02; - -function whMessage(nMessageId,wSender,nVersion,oParam) -{ - this.nMessageId=nMessageId; - this.wSender=wSender; - this.nVersion=nVersion; - this.oParam=oParam; -} -var gbWhMsg=true; \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whnjs.htm b/doc/salome/gui/GEOM/whnjs.htm deleted file mode 100755 index 2be1f1ee1..000000000 --- a/doc/salome/gui/GEOM/whnjs.htm +++ /dev/null @@ -1,25 +0,0 @@ - - -GEOM reference manual - - - - - - - - - - - -<p>Your browser does not support frames. We recommend that you update your browser to a version that supports frames.</p><p>To view the Help system without frames click on this<a href="whgdata/whnvp30.htm">hyperlink.</a></p> - \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whphost.js b/doc/salome/gui/GEOM/whphost.js deleted file mode 100755 index 9c91b49c8..000000000 --- a/doc/salome/gui/GEOM/whphost.js +++ /dev/null @@ -1,581 +0,0 @@ -// WebHelp 5.10.005 -var gaProj=new Array(); -var gnChecked=0; -var gsProjName=""; -var gbReady=false; -var goMan=null; -var gbXML=false; -var gsFirstPane=""; -var gServerEnabled=false; -var gsPath=""; -var gbWhPHost=false; -var goDiv = null; -var gsHTML = ""; - -if (navigator.currentNavPen) - gsFirstPane = navigator.currentNavPen; - - -function delayLoad() -{ - if (goDiv&&gsHTML) - { - goDiv.innerHTML=gsHTML; - goDiv=null; - gsHTML=""; - } -} - -function whCom(sName,sComFile) -{ - this.msName=sName; - this.msDivId=sName+"Div"; - this.msIFrameId=sName+"IFrame"; - this.msComFile=sComFile; - this.mbloaded=false; - this.mbShow=false; - this.show=function(bShow) - { - if(this.mbShow!=bShow) - { - if(bShow&&!this.mbloaded) - { - this.load(); - } - - var oDiv=getElement(this.msDivId); - if(oDiv) - { - if(gbIE55||(gbIE5&&gbMac)) - { - var oIframe=getElement(this.msIFrameId); - if(oIframe) - { - if(bShow) - { - oDiv.style.zIndex=3; - if(oIframe!=null) - { - oIframe.style.zIndex=3; - if (!gbIE55) - oIframe.style.visibility="visible"; - } - } - else - { - oDiv.style.zIndex=2; - if(oIframe!=null) - { - oIframe.style.zIndex=2; - if (!gbIE55) - oIframe.style.visibility="hidden"; - } - } - } - } - if (!gbIE55) - oDiv.style.visibility=(bShow==true)?'visible':'hidden'; - this.mbShow=bShow; - } - - } - } - this.load=function() - { - if(!this.mbloaded) - { - if(this.msComFile.length>0){ - var strFile= _getFullPath(getPath(), this.msComFile); - var oDiv=getElement(this.msDivId); - if(oDiv){ - if(gbIE4||gbOpera7){ - var nIFrameHeight=oDiv.style.pixelHeight; - var nIFrameWidth=oDiv.style.pixelWidth; - var sHTML=""; - }else{ - sHTML+="100%; height:100%;\">"; - } - oDiv.innerHTML=sHTML; - }else if(gbNav6){ - gsHTML=""; - goDiv = oDiv; - setTimeout("delayLoad()", 100); - } - this.mbloaded=true; - } - } - } - } - this.unload=function() - { - var oDiv=getElement(this.msDivId); - if(oDiv) - oDiv.innerHTML=""; - } - this.getDivHTML=function() - { - var sHTML=""; - if(gbMac&&gbIE4) - sHTML+="
    "; - else if(gbIE5) - sHTML+="
    "; - else if(gbIE4||gbWindows) - sHTML+="
    "; - else - sHTML+="
    "; - sHTML+="
    "; - return sHTML; - } -} - -function whComMan() -{ - this.sName=""; - this.maCom=new Array(); - this.addCom=function(sName,sComFile) - { - var owhCom=new whCom(sName,sComFile); - this.maCom[this.maCom.length]=owhCom; - } - this.init=function() - { - var sHTML=""; - for(var i=0;i0) - { - if(oMsg.oParam==1) - gsFirstPane="toc"; - else if(oMsg.oParam==2) - gsFirstPane="idx"; - else if(oMsg.oParam==3) - gsFirstPane="fts"; - else if(oMsg.oParam==4) - gsFirstPane="glo"; - } - else if(oMsg.oParam==0) - { - bHidePane=true; - } - } - goMan.init(); - if(gsProjName!="") - loadData2(gsProjName); - if (bHidePane) - { - gsFirstPane=""; - var oMsg1=new whMessage(WH_MSG_HIDEPANE, this, 1, null) - SendMessage(oMsg1); - } - else - { - if(gsFirstPane!="") - goMan.show(gsFirstPane); - else - goMan.showById(0); - } -} - -function setServerEnabled() -{ - gServerEnabled = true; -} - -function loadData2(strFile) -{ - if(gbXML) - loadDataXML(strFile); - else - loadData(strFile); -} - -function addProject(bPreferXML,sXMLName,sHTMLName) -{ - var bLoadXML=bPreferXML; - if(!gbIE4&&!gbNav6&&!gbOpera7) - return; - if(gbIE4&&!gbIE5) - bLoadXML=false; - if (gbIE5&&!gbMac) - bLoadXML=true; - if(gbIE55||gbNav6) - bLoadXML=true; - if(gbOpera7) - bLoadXML=false; - if(bLoadXML) - addProjectXML(sXMLName); - else - addProjectHTML(sHTMLName); -} - -function addProjectHTML(sName) -{ - gbXML=false; - gsProjName=sName; -} - -function addProjectXML(sName) -{ - gbXML=true; - gsProjName=sName; -} - -function window_MyBunload() -{ - goMan.unload(); - window_BUnload(); -} - -function putDataXML(xmlDoc,sdocPath) -{ - if(xmlDoc!=null) - { - var projectNode=xmlDoc.getElementsByTagName("project")[0]; - if(projectNode) - { - var aRProj=new Array(); - aRProj[0]=new Object(); - aRProj[0].sPPath=_getPath(sdocPath); - var sLangId=projectNode.getAttribute("langid"); - if(sLangId) - { - aRProj[0].sLangId=sLangId; - } - var sDPath=projectNode.getAttribute("datapath"); - if(sDPath) - { - if(sDPath.lastIndexOf("/")!=sDPath.length-1) - sDPath+="/"; - aRProj[0].sDPath=sDPath; - } - else - aRProj[0].sDPath=""; - aRProj[0].sToc=projectNode.getAttribute("toc"); - aRProj[0].sIdx=projectNode.getAttribute("index"); - aRProj[0].sFts=projectNode.getAttribute("fts"); - aRProj[0].sGlo=projectNode.getAttribute("glossary"); - var RmtProject=projectNode.getElementsByTagName("remote"); - var nCount=1; - for (var i=0;i 1 && document.body.clientHeight>1) - { - var oMsg = new whMessage(WH_MSG_RESIZEPANE, this, 1, null); - SendMessage(oMsg); - } - } -} - -function window_unload() -{ - UnRegisterListener2(this,WH_MSG_GETPROJINFO); - UnRegisterListener2(this,WH_MSG_SHOWTOC); - UnRegisterListener2(this,WH_MSG_SHOWIDX); - UnRegisterListener2(this,WH_MSG_SHOWFTS); - UnRegisterListener2(this,WH_MSG_SHOWGLO); - UnRegisterListener2(this,WH_MSG_GETPANEINFO); -} - -function onSendMessage(oMsg) -{ - if(oMsg) - { - var nMsgId=oMsg.nMessageId; - if(nMsgId==WH_MSG_GETPROJINFO) - { - if(gbReady) - { - var oProj=new Object(); - oProj.aProj=gaProj; - oProj.bXML=gbXML; - oMsg.oParam=oProj; - } - else - return false; - } - else if(nMsgId==WH_MSG_SHOWTOC) - { - if(goMan) - goMan.show("toc"); - var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "toc"); - SendMessage(onMsg); - onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null); - SendMessage(onMsg); - } - else if(nMsgId==WH_MSG_SHOWIDX) - { - if(goMan) - goMan.show("idx"); - var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "idx"); - SendMessage(onMsg); - onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null); - SendMessage(onMsg); - } - else if(nMsgId==WH_MSG_SHOWFTS) - { - if(goMan) - goMan.show("fts"); - var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "fts"); - SendMessage(onMsg); - onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null); - SendMessage(onMsg); - } - else if(nMsgId==WH_MSG_SHOWGLO) - { - if(goMan) - goMan.show("glo"); - var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "glo"); - SendMessage(onMsg); - onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null); - SendMessage(onMsg); - } - else if(nMsgId==WH_MSG_GETPANEINFO) - { - oMsg.oParam=goMan.getCurrent(); - return false; - } - } - return true; -} - -if(window.gbWhUtil&&window.gbWhMsg&&window.gbWhVer&&window.gbWhProxy) -{ - RegisterListener2(this,WH_MSG_GETPROJINFO); - RegisterListener2(this,WH_MSG_SHOWTOC); - RegisterListener2(this,WH_MSG_SHOWIDX); - RegisterListener2(this,WH_MSG_SHOWFTS); - RegisterListener2(this,WH_MSG_SHOWGLO); - RegisterListener2(this,WH_MSG_GETPANEINFO); - - if((gbMac&&gbIE4)||(gbSunOS&&gbIE5)||gbOpera7) - { - window.onresize=window_resize; - } - else if(gbIE4) - { - window.onresize=window_resize2; - } - window.onload=window_OnLoad; - window.onbeforeunload=window_MyBunload; - window.onunload=window_unload; - gbWhPHost=true; -} -else - document.location.reload(); - diff --git a/doc/salome/gui/GEOM/whproj.htm b/doc/salome/gui/GEOM/whproj.htm deleted file mode 100755 index 821daea24..000000000 --- a/doc/salome/gui/GEOM/whproj.htm +++ /dev/null @@ -1,24 +0,0 @@ - - -project description - - - - - - - - - - - \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whproj.js b/doc/salome/gui/GEOM/whproj.js deleted file mode 100755 index ae38fa994..000000000 --- a/doc/salome/gui/GEOM/whproj.js +++ /dev/null @@ -1,85 +0,0 @@ -// WebHelp 5.10.001 -var gaProj=new Array(); - -gaProj[0]=new project(""); - -function setLangId(sLangId) -{ - gaProj[0].sLangId=sLangId; -} - -function setDataPath(sPath) -{ - if(sPath.length!=0) - { - if(sPath.lastIndexOf("/")!=sPath.length-1) - sPath+="/"; - gaProj[0].sDPath=sPath; - } - else - gaProj[0].sDPath=""; -} - -function addToc(sFile) -{ - gaProj[0].sToc=sFile; -} - -function addIdx(sFile) -{ - gaProj[0].sIdx=sFile; -} - -function addFts(sFile) -{ - gaProj[0].sFts=sFile; -} - -function addGlo(sFile) -{ - gaProj[0].sGlo=sFile; -} - -function addRemoteProject(sProjRelPath) -{ - if(sProjRelPath.lastIndexOf("/")!=sProjRelPath.length-1) - sProjRelPath+="/"; - gaProj[gaProj.length]=new project(sProjRelPath); -} - -function project(sPPath) -{ - this.sPPath=sPPath; - this.sLangId=""; - this.sDPath=""; - this.sToc=""; - this.sIdx=""; - this.sFts=""; - this.sGlo=""; -} - -window.onload=window_OnLoad; - -function window_OnLoad() -{ - gsName=document.location.href; - gsName=_replaceSlash(gsName); - var nPos=gsName.lastIndexOf("/"); - if(nPos!=-1) - gaProj[0].sPPath=gsName.substring(0,nPos+1); - else - alert("Error in Loading navigation component. Please regenerate WebHelp."); - patchPath(gaProj); - if(parent&&parent!=this&& typeof(parent.putProjectInfo)=="function") - { - parent.putProjectInfo(gaProj); - } -} - -function patchPath(aProj) -{ - for(var i=1;i - - diff --git a/doc/salome/gui/GEOM/whproxy.js b/doc/salome/gui/GEOM/whproxy.js deleted file mode 100755 index d0ee29813..000000000 --- a/doc/salome/gui/GEOM/whproxy.js +++ /dev/null @@ -1,74 +0,0 @@ -// WebHelp 5.10.001 -var gbInited=false; -var gWndStubPage=null; -function getStubPage() -{ - if(!gbInited) - { - gWndStubPage=getStubPage_inter(window); - gbInited=true; - } - return gWndStubPage; -} - -function getStubPage_inter(wCurrent) -{ - if(null==wCurrent.parent||wCurrent.parent==wCurrent) - return null; - - if(typeof(wCurrent.parent.whname)=="string"&&"wh_stub"==wCurrent.parent.whname) - return wCurrent.parent; - else - if(wCurrent.parent.frames.length!=0&&wCurrent.parent!=wCurrent) - return getStubPage_inter(wCurrent.parent); - else - return null; -} - -function RegisterListener(framename,nMessageId) -{ - var wSP=getStubPage(); - if(wSP&&wSP!=this) - return wSP.RegisterListener(framename,nMessageId); - else - return false; -} - -function RegisterListener2(oframe,nMessageId) -{ - var wSP=getStubPage(); - if(wSP&&wSP!=this) - return wSP.RegisterListener2(oframe,nMessageId); - else - return false; -} - -function UnRegisterListener2(oframe,nMessageId) -{ - var wSP=getStubPage(); - if(wSP&&wSP!=this&&wSP.UnRegisterListener2) - return wSP.UnRegisterListener2(oframe,nMessageId); - else - return false; -} - -function SendMessage(oMessage) -{ - var wSP=getStubPage(); - if(wSP&&wSP!=this&&wSP.SendMessage) - return wSP.SendMessage(oMessage); - else - return false; -} - -var gbWhProxy=true; - -var gbPreview=false; -gbPreview=false; -if (gbPreview) - document.oncontextmenu=contextMenu; - -function contextMenu() -{ - return false; -} diff --git a/doc/salome/gui/GEOM/whres.xml b/doc/salome/gui/GEOM/whres.xml deleted file mode 100755 index f3f010a3f..000000000 --- a/doc/salome/gui/GEOM/whres.xml +++ /dev/null @@ -1,256 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - </fonts> - <button normal="" hover="" /> - <editwith value="20" /> - </form> - <background color="#ffffff" img="" /> - <fonts> - <normal name="Tahoma" size="8pt" color="#000000" style="Normal" weight="Normal" decoration="none" /> - <hover name="Tahoma" size="8pt" color="#000080" style="Normal" weight="Normal" decoration="underline" /> - <empty name="" size="8pt" color="" style="" weight="" decoration="" /> - </fonts> - <activebackgroundcolor attr="#c0c0c0" /> - <margin attr="" /> - <indent attr="" /> - </index> - <fts> - <form> - <fonts> - <title name="Tahoma" size="8pt" color="#000080" style="Normal" weight="Normal" decoration="none" /> - </fonts> - <button normal="" hover="" /> - <editwith value="20" /> - </form> - <background color="#ffffff" img="" /> - <fonts> - <normal name="Tahoma" size="8pt" color="#000000" style="Normal" weight="Normal" decoration="none" /> - <hover name="Tahoma" size="8pt" color="#000080" style="Normal" weight="Normal" decoration="underline" /> - <error name="Tahoma" size="8pt" color="#000000" style="Normal" weight="Normal" decoration="none" /> - </fonts> - <activebackgroundcolor attr="#c0c0c0" /> - <margin attr="" /> - <indent attr="" /> - </fts> - <glossary> - <background color="#ffffff" img="" /> - <fonts> - <normal name="Tahoma" size="8pt" color="#000000" style="Normal" weight="Normal" decoration="none" /> - <hover name="Tahoma" size="8pt" color="#000080" style="Normal" weight="Normal" decoration="underline" /> - </fonts> - <activebackgroundcolor attr="#c0c0c0" /> - <margin attr="" /> - <indent attr="" /> - </glossary> - </paneskin> -</resource> \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whrstart.ico b/doc/salome/gui/GEOM/whrstart.ico deleted file mode 100755 index bffcd6eb9409a6e1121695adf763c2ab477ce902..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10134 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 UFMH1!hGZ~$el#mfpYA#HU*7IM9RL6T diff --git a/doc/salome/gui/GEOM/whskin_banner.htm b/doc/salome/gui/GEOM/whskin_banner.htm deleted file mode 100755 index 39ed797e6..000000000 --- a/doc/salome/gui/GEOM/whskin_banner.htm +++ /dev/null @@ -1,49 +0,0 @@ -<html> -<head> -<title>About WebHelp                                                                                    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    Macromedia

    -

    Copyright © 1992 - 2004, eHelp Corporation

    -

    Author: eHelp Corporation

    -
    -

    Powered by: WebHelp 5.50 -
    Generated by: RoboHelp X5 -
    www.ehelp.com

    -
    - - \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whskin_blank.htm b/doc/salome/gui/GEOM/whskin_blank.htm deleted file mode 100755 index 43439a8c7..000000000 --- a/doc/salome/gui/GEOM/whskin_blank.htm +++ /dev/null @@ -1,10 +0,0 @@ - - -Blank Page - - - - - - - diff --git a/doc/salome/gui/GEOM/whskin_frmset01.htm b/doc/salome/gui/GEOM/whskin_frmset01.htm deleted file mode 100755 index 3b8d56ad3..000000000 --- a/doc/salome/gui/GEOM/whskin_frmset01.htm +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whskin_frmset010.htm b/doc/salome/gui/GEOM/whskin_frmset010.htm deleted file mode 100755 index 8a02235c8..000000000 --- a/doc/salome/gui/GEOM/whskin_frmset010.htm +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whskin_homepage.htm b/doc/salome/gui/GEOM/whskin_homepage.htm deleted file mode 100755 index 46797c73d..000000000 --- a/doc/salome/gui/GEOM/whskin_homepage.htm +++ /dev/null @@ -1,139 +0,0 @@ - - - - GEOM reference manual - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whskin_info.htm b/doc/salome/gui/GEOM/whskin_info.htm deleted file mode 100755 index e8423087a..000000000 --- a/doc/salome/gui/GEOM/whskin_info.htm +++ /dev/null @@ -1,20 +0,0 @@ - - -WebHelp 5.50 - - - - -

    WebHelp 5.50 System Info

    - - - - - - - - - -
    Start Page geom.htm
    Skin Name Default
    Generating Time 13:16 03/01/2005
    Language ID 1033
    Compile Script webhelp5_compile_script.xml
    Compile Build Version 13.10.606
    Product Name WebHelp 5.50
    Authoring Tool Name RoboHelp X5
    - - \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whskin_mbars.htm b/doc/salome/gui/GEOM/whskin_mbars.htm deleted file mode 100755 index c4fa48af8..000000000 --- a/doc/salome/gui/GEOM/whskin_mbars.htm +++ /dev/null @@ -1,59 +0,0 @@ - - - WebHelp Navigation Mini-bar - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whskin_papplet.htm b/doc/salome/gui/GEOM/whskin_papplet.htm deleted file mode 100755 index 5f8296ad6..000000000 --- a/doc/salome/gui/GEOM/whskin_papplet.htm +++ /dev/null @@ -1,360 +0,0 @@ - - -Navigation Pane - - - - - - - - - - - - - - - - - - diff --git a/doc/salome/gui/GEOM/whskin_pdhtml.htm b/doc/salome/gui/GEOM/whskin_pdhtml.htm deleted file mode 100755 index 763aa1429..000000000 --- a/doc/salome/gui/GEOM/whskin_pdhtml.htm +++ /dev/null @@ -1,64 +0,0 @@ - - - Navigation Pane - - - - - - - - - - - - - - \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whskin_pickup.htm b/doc/salome/gui/GEOM/whskin_pickup.htm deleted file mode 100755 index 1f1af7fc4..000000000 --- a/doc/salome/gui/GEOM/whskin_pickup.htm +++ /dev/null @@ -1,229 +0,0 @@ - - -Select a Topic                                                                                    - - - - - - -

    Select a topic, then click Display

    -
    -
    -
    - - - -
    - - - - \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whskin_plist.htm b/doc/salome/gui/GEOM/whskin_plist.htm deleted file mode 100755 index f7cf6d1d5..000000000 --- a/doc/salome/gui/GEOM/whskin_plist.htm +++ /dev/null @@ -1,238 +0,0 @@ - - - Navigation Pane - - - - - - - - - \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whskin_tbars.htm b/doc/salome/gui/GEOM/whskin_tbars.htm deleted file mode 100755 index 6cb490239..000000000 --- a/doc/salome/gui/GEOM/whskin_tbars.htm +++ /dev/null @@ -1,101 +0,0 @@ - - - WebHelp Navigation Toolbar - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whskin_tw.htm b/doc/salome/gui/GEOM/whskin_tw.htm deleted file mode 100755 index 69737fa1e..000000000 --- a/doc/salome/gui/GEOM/whskin_tw.htm +++ /dev/null @@ -1,63 +0,0 @@ - - - - \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whst_topics.xml b/doc/salome/gui/GEOM/whst_topics.xml deleted file mode 100755 index 6dce99867..000000000 --- a/doc/salome/gui/GEOM/whst_topics.xml +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - - -";]]> - - - - -"]]> - - - - -"; -OutputInTopicNavBarDataWebSearch.form();]]> - - - - - - - - - - -";]]> - - - diff --git a/doc/salome/gui/GEOM/whstart.ico b/doc/salome/gui/GEOM/whstart.ico deleted file mode 100755 index 365eceac87e1f84509afe98f098b13c5012ebef8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10134 zcmeI1PiR}o8Nfd&V|guvlXX+rg%YbmhhTCDITQjRQNxSv7~?~T4|_R~ zle~+2EZY1zXoELKm{OD;V-s=`MuAdfA99N+ArvDD3&O`hL)G6mGf#SwWhYyjmSsKm zym|9|zxn2yd83&(Z$uK3l4Hk?iH4I2k>8MJvzin6(?=qIK<3r*#em2!(yDj-KawKf z9u+x#+U37UiTr*<^S=DBNb?iyl2sy0Oo-tsQnlB9mr#U%2}74~<(3#qwOU2dvj5U* z=^c?j73pQ)U`$X@zbwj^nd$n>&QNh` zrC!$pQ-7}Q%#fPZTC=%>fkHh9NU-1%d++@ad3!-*cTnUtv3kVCkbcxquvcW{U!zk_ zd39g=DN8I66GG<`LSvIYmk=f5Fmwr5Zr`h)QmK@TjEuh&yYIe}H*em^ z?mt_yy0RkGzg1=TuYbg;^Tcb!MdCx^GvZ6)uH^GAnVf7SK!y-H{iG6x8WP`$Kg-F^8_EBfjU5 zK=&{%^TbKw9I;4*-@kjLwGO`lzXiVy-+;V0o4 zqpc$R6XlP?pJ23|WVD@Ow4GzLjWgP2;pgF(;Fsao;5XsN;4i>mg}(`Z8~z@A1%4fV z1AYsB8@>U59{w8qBK$-6XYeoKcj1|T7|$)nbBpoZVmyz*Ux2>~e-r*T{5|*z{5t#w z{1*H+d;|VC{0aDz@Mqx9!H>hw!q3Am!7szF!EfsC0rENz)Nb|G@Jz%Y?9yM*}#_3}K6?6cvwa>sd(kiLK8SoDe z`=UPLqLw8LS$)bqyl=D}RvmkW=GV3X6#d2q+r(H0YYo10IzU|C18C)4YTCxbb-m*{ z(zzD9I`KYA%SA-2&?Oaqfy)yIa(Dt67qV% zD_Z7vBE!VgQ;~tcAV)t)nWL0Fij7fgOKqy{SkU*BW5g^mdQU0%k&CD&guIj>3PYE0 z<(3$}^L_5{J>~E{gO#WbcX%Fs15UX8yGnN+zAnO`;0KW;)U)oK+9j_}V5yi49|-wgjBhky_( z92A1UbOa{3I#GuxcqB-#EY@ch7JS~ge52v>fmBu|>NCv+X90DkY;1W8Xue_=v6plC z=O32{GmV`QoByfi9?Z@x+$eo5BHWMU1bdC0%cYVGm5xu9DXaEx{Jc~wNnvbtu`pP# z%`_T;l!`K5Sy`NzuGa$q87j(Dr7VWL0tFpMl}eUuT`d%fQX-#UtOfPLOtW#B3h!4c zzpdArLC{1`UM4FOM;7K2{Dnq4GI|@ zgYDmx*JH!VYuyS{$gKtp;a*EYHJ2Sk-dt$^8r6`Qu9jDi^iP zH)N)*P~~bqm-q7EGekDr$Dg27;**31FMKdNdli2o`4HmSkz7u^{{gcEvjF1z^>R5M z1k>6s3f#zjYUhtqpmL;6-q^YL@#T_E9ED_g)rxs6Gg=@h3?Y{BFLNsy#R({Isi3$7 zF?mf3&|YfbOC_D-aArN7HsG0v%v5fy?BunJ27aM1R2(X)JXaR02(o$jMgc2BB`dd2 zefnb3@|UR<#Z)<0UR3XQ3VG^nPrRm_%jK;+unlNW(6`Dt8eF3n2n|1tVJi44m*Xiq zIgdblS%dj%g#xwP4sR5!P%jgeWNx}Xp^An0m^Kru7pXuWZ!{WQnP6%HkLtCa@rKGig&Iq{UN+!0})#}09Cidid<($|{jJ9Vfj->jqbXPW=SedQH0i<&=Y|3&lP zYW`Es5H$UX$lo=^4({T(_bW>AL;Y2M)PMC)+hhHvfNj@X-`*B#qHcCwe?&0BoWr)yWhdI8_Zem|F7!#Eg#_x{_j>UwlQKSfToQ_m+YZyoYq>Gd#z zPx?JUJ4KIFXfGaF-+b?oXqR>K-g#f3ho{co0&SiHlj!uMZC_72dOU)Uk@{tb4?^~w z1n=>%hc_lN>d=VS{&z<&iLM63D81FH^dQG}=pNp~1NKZuA6Iw((~QWR_K~~i2{97z z(*`#@t$o`DTHubCB3`@4^N#i7O+C^9$Kg;yYq93l0pW;9M{~u0Y+07r-6o5e2{*Ze6^73befc zmBkutc{`XpB@|Ca_EYwwpm&M^srKzaw7fc!Q9Nef_l;`?Uk@$se!BKhjvnOsS@-QY zQrn&2D$tRrK{2hP-P}F1gcZoKTkRaIMdW7 z*iNOuJ7~&9KKQg_>7Y9c9|Zhhb-Igk`>OAoM*Fa6U*`8|(Y}p++~Gb|_pJx_>%Rdt Cw@GdQ diff --git a/doc/salome/gui/GEOM/whstart.js b/doc/salome/gui/GEOM/whstart.js deleted file mode 100755 index 7448a4792..000000000 --- a/doc/salome/gui/GEOM/whstart.js +++ /dev/null @@ -1,432 +0,0 @@ -// WebHelp 5.10.003 -RegisterListener2(this, WH_MSG_GETSTARTFRAME); -RegisterListener2(this, WH_MSG_GETDEFAULTTOPIC); -RegisterListener2(this, WH_MSG_MINIBARORDER); -RegisterListener2(this, WH_MSG_TOOLBARORDER); -RegisterListener2(this, WH_MSG_ISSEARCHSUPPORT); -RegisterListener2(this, WH_MSG_ISSYNCSSUPPORT); -RegisterListener2(this, WH_MSG_ISAVENUESUPPORT); -RegisterListener2(this, WH_MSG_GETPANETYPE); -RegisterListener2(this, WH_MSG_GETPANES); -RegisterListener2(this, WH_MSG_RELOADNS6); -RegisterListener2(this, WH_MSG_GETCMD); -RegisterListener2(this, WH_MSG_GETPANE); -RegisterListener2(this, WH_MSG_GETDEFPANE); - -if (gbNav6) -{ - var gnReload=0; - setTimeout("delayReload();",5000); -} - -function delayReload() -{ - if (!(this.cMRServer && cMRServer.m_strVersion)) - { - if(gnReload!=2) - { - if(nViewFrameType&&nViewFrameType==1) - document.location=document.location; - } - } -} - -var gsToolbarOrder = "toc|fts|glo|blankblock|searchform|banner"; -var gsMinibarOrder = "blankblock|hide2|"; - -var gsTopic = "files/introduction_to_geom.htm"; -var PANE_OPT_SEARCH = 1; -var PANE_OPT_BROWSESEQ = 2; -var gnOpts=-1; -var gnCmd=-1; -var gnPans=2; -var gsBtns="invalid"; -var gsDefaultBtn="invalid"; -var gbHasTitle=false; - -if (location.hash.length > 1) -{ - var sParam = location.hash; - if (sParam.indexOf("#<") == 0) - { - document.location = "whcsh_home.htm#" + sParam.substring(2); - } - else if (sParam.indexOf("#>>") == 0) - { - parseParam(sParam.substring(3)); - sParam = "#" + gsTopic + sParam.substring(1); - } - else - { - var nPos = sParam.indexOf(">>"); - if (nPos>1) - { - gsTopic = sParam.substring(1, nPos); - parseParam(sParam.substring(nPos+2)); - } - else - gsTopic = sParam.substring(1); - } - if (gnPans == 1 && gsTopic) - { - var strURL=location.href; - if (location.hash) - { - var nPos=location.href.indexOf(location.hash); - strURL=strURL.substring(0, nPos); - } - if (gbHasTitle) - document.location=_getPath(strURL)+ "whskin_tw.htm" + sParam; - else - document.location=_getPath(strURL)+ gsTopic; - } -} - -function parseParam(sParam) -{ - if (sParam) - { - var nBPos=0; - do - { - var nPos=sParam.indexOf(">>", nBPos); - if (nPos!=-1) - { - if (nPos>0) - { - var sPart=sParam.substring(nBPos, nPos); - parsePart(sPart); - } - nBPos = nPos + 2; - } - else - { - var sPart=sParam.substring(nBPos); - parsePart(sPart); - break; - } - } while(nBPos < sParam.length); - } -} - -function parsePart(sPart) -{ - if(sPart.toLowerCase().indexOf("cmd=")==0) - { - gnCmd=parseInt(sPart.substring(4)); - } - else if(sPart.toLowerCase().indexOf("cap=")==0) - { - document.title=_browserStringToText(sPart.substring(4)); - gbHasTitle=true; - } - else if(sPart.toLowerCase().indexOf("pan=")==0) - { - gnPans=parseInt(sPart.substring(4)); - } - else if(sPart.toLowerCase().indexOf("pot=")==0) - { - gnOpts=parseInt(sPart.substring(4)); - } - else if(sPart.toLowerCase().indexOf("pbs=")==0) - { - var sRawBtns = sPart.substring(4); - var aBtns = sRawBtns.split("|"); - for (var i=0;i0) - { - frame=getframehandle(frames[i].frames,framename); - if(null!=frame) - return frame; - } - } - return frame; -} - -function AddToArray(arr,obj) -{ - var bFound=false; - for(var i=0;ii) - return gArrayCompoentsArray[i]; - else - return null; - } - } - return null; -} - -function CreateComponentsArray(nMessageId) -{ - var len=gArrayRegistedMessage.length; - gArrayRegistedMessage[len]=nMessageId; - gArrayCompoentsArray[len]=new Array(); - return gArrayCompoentsArray[len]; -} - -function listener(sName,oWindow) -{ - this.sName=sName; - this.oWindow=oWindow; -} - -function RegisterListener(windowName,nMessageId) -{ - var arrayComponents=GetComponentsArray(nMessageId); - if(arrayComponents==null) - arrayComponents=CreateComponentsArray(nMessageId); - - if(arrayComponents!=null) - { - for (var i=0;i0){ - for(var i=0;idP%e) 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 diff --git a/doc/salome/gui/GEOM/wht_abte.jpg b/doc/salome/gui/GEOM/wht_abte.jpg deleted file mode 100755 index a5638fabfa1ffb439302d7055d404f22fa78e942..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9810 zcmdUUcUV(PxA&$aRS(62hzf|Hf`EX4kfR8Q2r9jZkuD`fN&snjZJ;P1AR-{3A|lOD z6G()pC`c3OAch=@bP{?<-FJiUIp>~x-+SNlJ@>C~^6c4r)|#?rtu^yoGXV#{-+--W zP0UOHE^aR14D@98S@28)8z~&%f%46I0Kh%KeGnW0 zN4e?TCOoEm2YFZk_g}dH7gY9u9xi}~XQL%o^v3rF^^f$cAh46`;UC5S;bT*V`Az25 z4JkK!`R99s$1A$YOwAC80m$!u{*d=ck5v_drwt*wFINy1O>M zfI#T^Ip579Z~}UDLysU323!R~065?ZxIu4Ei1ruT|E&HO+D5yL_Wver%D!#064yU% zDY;qNkd0@PE3#4MZ-KInF(F+8d!f$@0H6YW^1lIg09@d|@_z~-cG3gs<_UQG1FFac z4gt3T5kW!0ErKFjwuo#K782ejB`zW&F115KLP|nn$2O78^v~DN!hg-VM1_S##YDG? ziEWh>6BCo%$iyUnHre)fIso4R+XSHrT;t)|4{ⅇ@QRpk|09}fFHSFkd%B}n+Xzl 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 diff --git a/doc/salome/gui/GEOM/wht_abti.jpg b/doc/salome/gui/GEOM/wht_abti.jpg deleted file mode 100755 index 14ac68cae4358e4c8b347e2e0a9124cc8e6e0b58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3863 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 diff --git a/doc/salome/gui/GEOM/wht_fts_h.gif b/doc/salome/gui/GEOM/wht_fts_h.gif deleted file mode 100755 index feb79ae82af9eee69c53f26bb0259032aa075e4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 188 zcmZ?wbhEHb6k-ry*vtR||BZo|;r~pAw6rq}GyfZ(`9E{!|Cwk00|8hbg;4y-!pXqE z#h?Qc1)0IXk;x#+A>*+@!I6POSS!RrfT58|K-tSA;Q<3fBLi2!k`9H&MbLd(38!(I_bg5(mI)e{m-^3EslCSX>cVorP8PRGb9PR6=s1mS VaaxGfR)s^WLRThtQ&FfcSSumvosU}!wfETS0aGr@3? zdxspSh(KrHq9aoT-KUjs8mD>B;@}XNpmBMr|7?}oYb>uWEcfeVa+@?~=Y)rj)7TcL Tg-C5xIJ7EsWs<0b0E0CE)e1Lr diff --git a/doc/salome/gui/GEOM/wht_glo_h.gif b/doc/salome/gui/GEOM/wht_glo_h.gif deleted file mode 100755 index 12223e5cc1fce0341697756352f9b0c62a8bda9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 142 zcmZ?wbhEHb;*%)rSZ<1s;@p_xON zNrEGx;cz=YBa6U|fCh#RKGmQj9D&M>U1H90Uv5lDKGrGE-oazpu;k=q>F}tW&P_`^ cr|TEqTeC7i(Tj<(iA(m^<^_R`jEoG{0RC$x-v9sr diff --git a/doc/salome/gui/GEOM/wht_glo_n.gif b/doc/salome/gui/GEOM/wht_glo_n.gif deleted file mode 100755 index 32803ebd9c781fc4af17f14b9adb90110ad849a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 142 zcmZ?wbhEHb@X1N5r3sx&Z zBLV=4v;qQ96f125gAlJ(vTB>)VTcF>e1HjSQzA4<9|pnMWEc<%-et>uWHyKA(+U!g z4uJt+@c?WLQ_}Q_eFTV@14JlfC4%*0>~0PKD^E&u=k diff --git a/doc/salome/gui/GEOM/wht_idx_h.gif b/doc/salome/gui/GEOM/wht_idx_h.gif deleted file mode 100755 index 2df1b16a21c18de76f78db446889be1049f15b00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 168 zcmZ?wbhEHbHIyb7gPvHyQ kB=ho<%9&Y;?rBphgO@tBstIyPcx}nJ(B#3&#=>9?0DB23GXMYp diff --git a/doc/salome/gui/GEOM/wht_idx_n.gif b/doc/salome/gui/GEOM/wht_idx_n.gif deleted file mode 100755 index fd193a0f7e3769bce176e5d3218e2da3c9be2047..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 168 zcmZ?wbhEHbHIyb7gPvHyQ kB=ho<%9&Y;?rBphgO@tBstIyPcx}nJ(B#3&#=>9?0JH-snE(I) diff --git a/doc/salome/gui/GEOM/wht_logo1.gif b/doc/salome/gui/GEOM/wht_logo1.gif deleted file mode 100755 index 2ef5700f23ab96a8894ca981f6dd4e03d49f15da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1405 zcma)5|4$WE6hEw{WP@2sq*B9~s6A-aMR*TnGR<$WUK)=_0wxAtNI`_D1ml-yB@+dP zsBc$OLBW;418aN}T?NWeuY}?Bfsicx`ks)f$(obf=f1z7^V``u=W{-v&$)NSs^v!0 zhCK42aU!KdDkYTSN-?EKXHqIDl;lb>B}o^BR6;1hm0(Jc?&VT(p*UBZDNcHnNyUU> zTrs8?0ZEZmBouK)Oc4@b0~%NuMmOm_I)s#5N+u=gwaA2!f=j`qAk6|rE+prYGs#Jl zLN61Namkou1dbS$BqVW3OcJ(&HNZd`EI|u3ECx29frVkxf^?4HLNFmn>%&@PoD0qb zCoLB&P-I*%CKy3INTF8{7sLcX9{d1JOv4W72MH(yYk+|?SfUj?uo&2Y1{P`ObQw8< zaZcJu=)+oMjB!Tr6>`A>MNW(pe1y|50KCu+qoEd7!Vl2IH0%H;2!=wi1{g?V612br zi-8Sj(kIg0C?iJ@E(Rl^4{MPz(vL&?>bbWrdQPZq_FP5xdW_btd%V-59y|0AJPI|E zhqS(lhld9CK;t>!N-z(auxesr;>C*>&!0aZA0L1G__5378Xg|*>+9?2=xAtYa5x-x zyS==;+-9>C6cl7Ir5@_O*4oZ-Tq?);~Jw)@?`Uhkdf_@b?ChvDevnOl;F z{O)wEUF3fwWN`b)p`hmZ74ZqyTirWDCr?jHsG7Z?C^Xjcp&@tK+MJ-tiMM~t9y(JK zd-+uTg%MTgfphNkTBpS5^mmrr#| z=1}8IkeVGn}pQ zHCVpPI1rxNZ#=ktLsVCB(fa0eo*wA+OG$X#zE39BrDL!$%heFLP(bmTWMLtsXdezCQX!b?w-hht2M>_D5ZYzs^3rKC2$Fu?!mp%pGtM0mD$)S0T6oZ8-Q*iUS3+ zDzgE-%n30xlNRs;5XMTtl6*OipdgX0;uj$63{EkQgRk@UFX;Yu=iYnnIp@B&EOx2M zye^*tXpBhdkV*-qxKd0h(wUS>3MILcOi9v3A(aqHa3z=$qJXNr>^Wl}Mr z7*~ubMnF;|6$wRL5mST&*nkEWhS5!Wj}9Rvmy$_IdMz>`q~KC8DM+(GkqgPWP8G$24B?(Df5|f0jU=1*k220RF4U2&dXkcNOv>=@$xDZST()zF#8RvpC z!AZ*n3ltd_j0r|i4^rqA#04=ykOx0N6VtE*`auE;!5Uy74VGvH4=e^Ypn*l&IbBAM zV4RaS68f+f8DpFge1%-FK#>#U1Rvov3;-{*!)U05mGA>JF%3Jw34);ztN{knm;^2G zz+zwnn)HcuH_FHngp0vQ=)+oMjP&EszWVO1i@ppt)FsLu|41fN2U zU1*M@NT-hCCimS65eCTU%XSo!jlM ztgI|6E8DSSM?pb>-EL1$PftxvO-xL*SS)dIanaGyixw?1o6Sa}apA&+c+rD zNfU@hDNHx(KS7ff-Rhk3c74^E!pVWJynC+xKzs4DS^mMz)zxQ9XR^%xa|s(llR}r2 z1jioxuG2Md`IFVX4K?R0XT4bz{IaFL*)`ZvlVS57ip{xpY2?KG(bTHa`@JWp_&u}KZK_yd+ndw= zha=RHKc}R0(C=zQuhW#Y?VB9y!1iTl`Lj_SC#@D!ZPmbq>`6%{de#gqZfY|Hy5kS* zG1S*QW3W1sFK?qS&-rgzkUFDp_5M{o$?vcK`l*4^%p04(jTpGu;s5EX)ajO}X-VCl zH9x;KvnO}N6T7;qHLas$XMA{ZS+O(QdeCt#tFSu$N=k(#^7`qoc+K9Fl0jZx{`q?w z^8W4ZKJsc%c#T4}) D2$`RH diff --git a/doc/salome/gui/GEOM/wht_next.gif b/doc/salome/gui/GEOM/wht_next.gif deleted file mode 100755 index 8ea834d5e7032dbe1ad10ea4cddaf55ac91156cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73 zcmZ?wbhEHbu&t4cF*@n~ Vey2jt%i6i7QHe!nS-}hp)&O=i6J!7Y diff --git a/doc/salome/gui/GEOM/wht_next_g.gif b/doc/salome/gui/GEOM/wht_next_g.gif deleted file mode 100755 index c0e9758468e31a83aea3f3d353e5d88920ca011b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73 zcmZ?wbhEHb0c=>&3LIf YBPcn4pOU*-tpa=3)XoK`gBTdB0bkn^WB>pF diff --git a/doc/salome/gui/GEOM/wht_prev_g.gif b/doc/salome/gui/GEOM/wht_prev_g.gif deleted file mode 100755 index 86479091649ebee62ce8a95f7880d3aa95305ce1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73 zcmZ?wbhEHbutpmhBaYhCPCMFj~25SJyItL8^ diff --git a/doc/salome/gui/GEOM/wht_sync.gif b/doc/salome/gui/GEOM/wht_sync.gif deleted file mode 100755 index 0ef174735ff57f43ff709fc824f326c8f7d9a772..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 846 zcmZ?wbhEHb1(%oXCs~51m>$<%ME692A|p#B_yPer#Ci)*`POB%^7dz+epkpkfn) diff --git a/doc/salome/gui/GEOM/wht_tab0.gif b/doc/salome/gui/GEOM/wht_tab0.gif deleted file mode 100755 index 955c42f47a076d635e5f28250996e98e7cd7c076..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmV+&0pk8gNk%w1VeSDK0HXf@|NsBx<>kP@z`wu00002Mz`y_i00000A^8LW000F5 zEC2ui0PX=806+ucIJ(^aFv>}*y*TU5yZ>M)j$~<`XsWJk>%MR-&vb3yc&_h!@BhG{ za7Zi~kI1BQ$!z`v(5Q4uty-_xtai)odcWYXcuX#v&*-#z&0ag-@VIs;jK6uCK7M zvayD>wzs&sy1Tr+zQ4f1!o$SH#>dFX%FE2n&d<=%($mz{*4NnC+S}aS*#O|-;^XAy j=I7|?>g(+7?(gvN^7Hid_V@Vt`uqI*-v0piBme+AZ&j?@ diff --git a/doc/salome/gui/GEOM/wht_tab1.gif b/doc/salome/gui/GEOM/wht_tab1.gif deleted file mode 100755 index b3ec41d6d8a6a3f2d06b41f8ea70572610acbfdb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 237 zcmZ?wbhEHbbYl=@*vtR|4Pe{=rW$~}1`s%K;J|;N_$ATn&sXV7$()z5O37izzJfJ!?b`Q$c;Bvk-@SYO2XPn1zT*pp zB8-__JR?GW^@#djjxO6e*VI2&EU2lc@8~ll%UIi3@4F^ZKI_$wf6tQps&@3Ne^E|F zLup%Hd_-awznW-Ok)e6q?^?=|z+uGd_>VZ)}) RYqxIm-m%k}fnAWn8USudW4QnT diff --git a/doc/salome/gui/GEOM/wht_tab2.gif b/doc/salome/gui/GEOM/wht_tab2.gif deleted file mode 100755 index 08fb0ce4fe630b4dd33f1f8d099945ff48531b0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 226 zcmZ?wbhEHbv||uu*vtR|4Pe{=rW$~}1`s%K;J|;N_amdW@3l){E)f@i$$g^S+H!mvz_+Zb?dcPZQ>AQ Gum%87{9UmC diff --git a/doc/salome/gui/GEOM/wht_tab3.gif b/doc/salome/gui/GEOM/wht_tab3.gif deleted file mode 100755 index 1819c8e8f786ed0b62007b198cb69dca982c49f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 209 zcmZ?wbhEHbG-eQG*vtR|4Pe{=rW$~}1`s%K;J|;N_tQPIo@N&L#vFwFx*~w?0Zi@IVyZ?G?SxwgB2Sq=oM{i31m{lp1 o6|Yd&+>jp=)lsO@?iOr5ams`##?z)-O`hdDXRZYUyC8!#0CKBV4FCWD diff --git a/doc/salome/gui/GEOM/wht_tab4.gif b/doc/salome/gui/GEOM/wht_tab4.gif deleted file mode 100755 index 1a6fc4f4aa68d1b8fdd35c21c002f4a117133639..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 198 zcmZ?wbhEHb)MF53*vtR|4Pe{=rW$~}1`s%K;J|;N_j1LiMqShUz?=`!;bD@_^L1sSXX;;C5C diff --git a/doc/salome/gui/GEOM/wht_tab6.gif b/doc/salome/gui/GEOM/wht_tab6.gif deleted file mode 100755 index fe312d238ad98026d9171f20077f95e372a82752..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 212 zcmZ?wbhEHbG-D8D*vtR|4Pe{=rW$~}1`s%K;J|;N_*vtR|4Pe{=rW$~}1`s%K;J|;N_$5v+f;9S4GUsJ*HDtct_r7pLLGEFr+V_8Ee0O;8o<&2<`FKKp zgqPAJzo)&PT}q5Wa-}I#9eTspT+b9~?!S8>tcA^f&bH2eyZmdZ{r>)&Ny+JT znL<_d9VJB_oh^Np#xCXkwNtyg@*7p#oATmQ7Br?-^r+2=G;7V8xWXY%WBJ+@8#e`Q P+3L7`hb;rUAcHjkosMI* diff --git a/doc/salome/gui/GEOM/wht_tab8.gif b/doc/salome/gui/GEOM/wht_tab8.gif deleted file mode 100755 index c80acc8d57852a246362d981ae89d4148f157987..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 225 zcmZ?wbhEHbv|$is*vtR|4Pe{=rW$~}1`s%K;J|;N_WX{W2)us4ipV)^3U#ew_*Or&hV{|y+vg7j?6Bkay z$U8Fi;%Ua8k9bV=dSI~ftX`|PkLjzUMS>3vSbJQ%3r}pVys>U^^SeKxMtvvmrk72WmQa=UOuH{qFu0FTg{|-^09LkFYj1xWvjh*-FnScs{|RW E0hmEvxBvhE diff --git a/doc/salome/gui/GEOM/wht_toc1.gif b/doc/salome/gui/GEOM/wht_toc1.gif deleted file mode 100755 index 515c352de2fa5d8ae7def9c3590b6ea3c49d26e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 124 zcmZ?wbhEHb6krfwSoEI(2>$>7&oJ-*fddDQ9Xr<2(gG4Ur-`p57buiKh)yOmArD}p8*#ut zAm9+x5Cb$Q@e~{w3~fk5%OknCMvY^t9znt%#-cJ)bL0xUpunZNsUt@ujR3%f=Li~Z z5hd~fCb|&^m|z$VK@BlLqZ3%*z+h-Y+G9oW8rP_C92-NB@Q1Oe%sm#E)*lpUqp{Dl zq<~7f$9hwg!I;vCZ70KloIJ$x6IM7#lOT=H0b4?N@RUYTp-?E5N|j2bTCHYTR;$(O z^?IJ?jYgx{Y_{9&PN&oDc6+^EzuzAW2E*ZSG#YL8{`-*s|L4HQ)^VbDbR=5iKSA5> z((Uox<+lqT@Bdicb>eezWjfzpXg#^L_I)XzC||u&Svz?0;oilWEwu3S(*s(qx8IM} zr)T%SSzP{b;pv&V@{O0*XGVu#&vCYXZ-alGozL#f?`WMr^yS&ko98b6{`%Zr9DVh8 Xd1Wd8HoIr4wQu54=hEe|F`E1fN0FWD diff --git a/doc/salome/gui/GEOM/wht_toc3.gif b/doc/salome/gui/GEOM/wht_toc3.gif deleted file mode 100755 index 330f3691c32e371e8af44c6d5780747737d30ed9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 911 zcmb7@J!_Ov5QWDmm;@qe-9i*h41P3@iC=}qMkQM<*oi4b9MBbPV;2y%2x5`NVi3gz z8w(eMTCI&lj4LCeMf3-3XSJ1Bjn94KAMiHIaPORX&Y5>FFI_rw_WHC;%Wv5^Dqosn6`5s$)%puXwb8QAYDopE%Dt?&in1_P z>6C3(h6{4#p)9|`Dh{eiNb@-GBm{$McJ-rgP#hojMGr}y87{Qp0P{_L3$c_YV5Yxz&e_#L@5@qDKD z?EU@Sd)N9Oo3+i>_sQAA3oOHR&S`}AscYi!@wT|dXa-58AhSX_T+>obil1R^jjNr4Mc#bG=`Z##K4d?lL5$1V*qMm z0P}&YQ7{?;LplT$f3h$#FfcLbfP4YU6Yd<-7+5)EJT@#iz|5@VQZYdRD8a|bv%nyr z(WQ+;DCLYt;e!TFE@6k77X?ZO8M#FSIu0CYJjBQ%=+&cO^oW6hn}@@PL-EOpiE7+_ zOB}Xn1U57CJc(fte#zL$Am!4aQ0f%SsF82x@IfFcXc?2JjfX{pcEfa6R=o+UF047k gA!N-p;ls7Hhjyr|dn8ybc;CR}$jc=rA;4e_0PdJkt^fc4 diff --git a/doc/salome/gui/GEOM/wht_toc_h.gif b/doc/salome/gui/GEOM/wht_toc_h.gif deleted file mode 100755 index fe20f686099a401a1ea951e81eae565b4efc9f2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204 zcmZ?wbhEHb6l4%!*v!Ci;J|^jnP(Vg{{L^x@c;k+GiS~);0205SvVOOI2d$5sz7Ei za8xn~DsU)lSa7hJnOnf6<3a-i6BjQVhrxpd&P*&~ekukF79H#sFi(<6IB>v;MS)X7 zqoGiRk&%sMS2{-t%PGMb54ie#tQ3VkTE>M8b>n fP2%BUxjRKxH>^)M>~=J2)0&$bc`mcDFjxZsWfwhm diff --git a/doc/salome/gui/GEOM/wht_toc_n.gif b/doc/salome/gui/GEOM/wht_toc_n.gif deleted file mode 100755 index ce283101f4204c55c042012228385fb6fefef830..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 195 zcmZ?wbhEHb6l4%!*v!Ci;J^U}oR0_I6278?~j`dAG5&b;`T z(lAAtd4tFcA+_V}BAIqFnUf#;u$YFH{qdZ%{K6E=QoEX&fedGsSmj%V{=EF;$m)oN Sv)-K8y4t-hft8Jg!5RR!bUSIM3=H~ zN)dJACBnOLG2yCKg3_iIgCMkYRX44^=D7ne&-cwcGiS~@&%6J?t1s?4K7}d#g%MhM zv~;NdN!jsxUi#%e4Q`Mj3~49>2qQ>1AtHz*ih#o$bhtx~aHOLgJ}X>_BEVN7Eg zySCFEPKpdN$?5@4^O1F@oZ(DoIh&+ul)5M}#1u3M2>&BvDR zk}F*4D({iq-G!YS5mHJewG$RJ+o3X_iiplDN9wt zxED>Y-R`3HuM)Pip z&1NhV%2Xqdn_)5Z^%z@5WJXprc;ocQ?(V|Q<>cZ0h>MaYeOV@$EFFFJua3=suUH2B zi|zfgzlbSd)m1!P{p98E;;|FUH#~7C4$f`g_{fi&XD|OWxA)BYnfI1|Hvj$2Gk?7D z{@#UCv2)qF{b!%~`O|myoS58NJ!R{@{o>r=={0v(-9CTg>%-GqrnyG@K6&o*{~mvE zZQIO+=^a<+zsf5we}FgtJaT;IOKf}N*S7SGk;rHSbOjF#b2@K=7*bBJpJ0@wSy~PcO&VR2YQMZ#sDTX=cCZ{OXWotfu7aB%eW~9-LGKMjY zW$fBccQ`3B$Rw)=IL$}aopOdVo#kwjrcvsm#1K;~v6)+peh(@b!3J*i|Q zGg-;j$cl~RMHQo%#VTT`+vDUz9>pN7f?74Rf$b)l!jz^mVXzqs`BHu{^)(+` zx=XHbrK`M0c6S$cZbV2amDEmHsQGxOLJ`VPh1woVHA(NfRHQOhsrJlD&D^`W6s0Ux z3FBTgy>`2c+QYW1of$5g4K3Wp#IQ`uvNorE7y>y5ObmHiiQ%{TP|bZ{hi7`0w;0X4 zDK?w2P$*N4JZ^@?(AQ&Z8Ic)T(cq2KBfGl`JD1Dvmm+RUTJFoTjOCT1&;Hf1>D^=s z_z&CqWq%QK!0a`=Up;>&YHISq`gNaP-*j%Iq4yyztld;}i+4) - { - if (button.arguments[4+i]) - this.aIs[i]=_getFullPath(_getPath(document.location.href),button.arguments[4+i]); - else - this.aIs[i]=""; - i++; - } -} - -function getImage(oImage,sTitle) -{ - if(oImage.aIs[0]) - { - var sI=""; - if(sTitle=="") - sTitle=oImage.sText; - sI+="\""+sTitle+"\"0) - sI+=" width="+oImage.nWidth; - if(oImage.nHeight>0) - sI+=" height="+oImage.nHeight; - sI+=" border=0 align=\"absmiddle\">"; - return sI; - } - return ""; -} - -function getCurrentAveName() -{ - var oSelect=getElement("avenue"); - if(oSelect) - return oSelect.value; - else - return ""; -} - -function updateWebSearch(bEnable) -{ - var oWebSearch=getElement("btnwebsearch"); - var oWebSearchParent=null; - if(oWebSearch) - oWebSearchParent=getParentNode(oWebSearch); - goWebSearchEnable=bEnable; - if(oWebSearchParent) - { - if(bEnable) - enableButton(oWebSearchParent,goWebSearch); - else - disableButton(oWebSearchParent,goWebSearch); - } - -} - -function setState(oEL,sState) -{ - if(gbNav6||gbOpera) - oEL.setAttribute("state",sState); - else - oEL.state=sState; -} - -function updateAvenueIfNeeded() -{ - gbUpdateTimerCount--; - if (gbNeedUpdateAve&&gbUpdateTimerCount==0) - { - updateAvenue(); - } -} - -function updateAvenue() -{ - var sSelect=getAvenueHTML(gaAvenues); - var oSelect=getElement("avenue"); - if(oSelect) - { - if(gbNav6) - { - var oParent=getParentNode(oSelect); - - if(oParent) - { - removeThis(oSelect); - oParent.insertAdjacentHTML("afterBegin",sSelect); - } - } - else - oSelect.outerHTML=sSelect; - oSelect=getElement("avenue"); - if(isValidAvenue(gaAvenues,gsCurAveName)) - oSelect.value=gsCurAveName; - } - updateAveButton(); -} - -function initAveButtonObj() -{ - if(!gbAveButttnInited) - { - var oNext=getElement("btnavnext"); - if(oNext) - goNextParent=getParentNode(oNext); - - var oPrev=getElement("btnavprev"); - if(oPrev) - goPrevParent=getParentNode(oPrev); - } - gbAveButttnInited=true; -} - -function disableAveButton() -{ - initAveButtonObj(); - if(goNextParent) - disableButton(goNextParent,goNext); - if(goPrevParent) - disableButton(goPrevParent,goPrev); -} - -function disableButton(oEl,oBtn) -{ - setState(oEl,"disable"); - var sPF=oEl.className.substring(0,6); - oEl.className=sPF+"Disable"; - var oAs = getElementsByTag(oEl,"a"); - if (oAs.length>0) - { - oAs[0].style.cursor="default"; - } - var oIs=getElementsByTag(oEl,"img"); - if(oIs.length>0&&oBtn&&oBtn.aIs&&oBtn.aIs.length>3) - { - if(oBtn.aIs[3]) - oIs[0].src=oBtn.aIs[3]; - } - else - oEl.style.visibility="hidden"; -} - -function enableButton(oEl,oBtn) -{ - setState(oEl,"normal"); - if(oEl==goEl) - { - var sPF=oEl.className.substring(0,6); - oEl.className=sPF+"Up"; - } - var oAs = getElementsByTag(oEl,"a"); - if (oAs.length>0) - { - oAs[0].style.cursor="hand"; - } - var oIs=getElementsByTag(oEl,"img"); - if(oIs.length>0&&oBtn&&oBtn.aIs&&oBtn.aIs.length>0) - { - if(oBtn.aIs[0]) - oIs[0].src=oBtn.aIs[0]; - } - oEl.style.visibility="visible"; -} - -function updateAveButton() -{ - initAveButtonObj(); - var strAveName=getCurrentAvenue(); - if(strAveName!="") - { - if(gaAvenues) - { - for(var i=0;i0) - { - for(var i=0;i"; - sSelect+=""; - if(aAvenues) - { - for(var i=0;i"+aAvenues[i].sName+""; - } - } - sSelect+=""; - return sSelect; -} - -function addAvenueSelection() -{ - var oMsg=new whMessage(WH_MSG_GETAVIAVENUES,this,1,new Object()); - var sButton=""; - if(SendMessage(oMsg)) - { - sButton=getAvenueHTML(oMsg.oParam.aAvenues); - } - else - { - sButton=getAvenueHTML(null); - } - gaButtons[gaButtons.length]=""+sButton+""; -} - -function setSearchFormTitle(sTitle) -{ - gsSearchFormTitle=sTitle; -} - -function highLightIfNeeded() -{ - if(document.searchForm.searchString.value==gsSearchPrompt) - { - document.searchForm.searchString.select(); - } -} - -function addSearchForm() -{ - var sPropmptString=gsSearchPrompt; - - var nWidth=20; - if(!nWidth) nWidth=20; - if(gbNav4) nWidth=nWidth*.6; - - if(gsSearchFormTitle) - sPropmptString=""; - var sButton=""; - if(gbNav6) - sButton=""+sButton; - if("image"=="text") - { - sButton+=""; - } - else if("image"=="image"&&gsIGo) - { - sButton+=""; - } - sButton+="
    "+_textToHtml(gsSearchFormTitle)+"" - sButton+="\"Go\"
    "; - if(gbNav6) - sButton+=""; - var nBtn=gaButtons.length; - gaButtons[nBtn]=""+sButton+""; - gaTypes[nBtn]="searchform"; -} - -function getShowHide() -{ - var sText=""; - var sI=""; - if(hasNavPane()) - { - if(goHide) - { - if(gnShowHideStyle&BTN_TEXT) - sText=goHide.sText; - if(gnShowHideStyle&BTN_IMG) - sI=getImage(goHide,"Hide"); - } - } - else - { - if(goShow) - { - if(gnShowHideStyle&BTN_TEXT) - sText=goShow.sText; - if(gnShowHideStyle&BTN_IMG) - sI=getImage(goShow,"Show"); - } - } - var sButton=genButton(sText,sI,gnShowHideStyle); - return sButton; -} - -function addBanner(sImage) -{ - if(sImage) - { - var nBtn=gaButtons.length; - gaButtons[nBtn]="     \"About"; - gaTypes[nBtn]="banner"; - } -} - -function showBanner() -{ - if (!gbPreview) - { - var nWidth=390; - var nHeight=204; - var nScreenWidth=screen.width; - var nScreenHeight=screen.height; - var nLeft=(nScreenWidth-nWidth)/2; - var nTop=(nScreenHeight-nHeight)/2; - if (gbIE4) - { - if (gbIE5) - nHeight+=20; - else - nHeight+=40; - window.showModalDialog("whskin_banner.htm","","dialogHeight:"+nHeight+"px;dialogWidth:"+nWidth+"px;resizable:no;status:no;scroll:no;help:no;center:yes;"); - } - else - window.open("whskin_banner.htm","banner","dependent,innerHeight="+nHeight+",innerWidth="+nWidth+",height="+nHeight+",width="+nWidth+",resizable=no,menubar=no,location=no,personalbar=no,status=no,scrollbar=no,toolbar=no,screenX="+nLeft+",screenY="+nTop); - } -} - -function addButton(sType,nStyle,sTitle,sHref,sOnClick,sOnMouseOver,sOnLoad,nWidth,nHeight,sI1,sI2,sI3,sI4,sI5,sI6) -{ - var sButton=""; - var bMini=false; - var sText=""; - var sI=""; - var bState=false; - var nBtn=gaButtons.length; - var bHref=false; - if(sType=="show"&&isShowHideEnable()) - { - var svTitle="Show Navigation Component"; - sButton=""; - gnShowHideStyle=nStyle; - goShow=new button(sType,sTitle,nWidth,nHeight,sI1,sI2,sI3); - gaObjBtns[nBtn]=goShow; - if(gnShowHide!=-1) - { - nBtn=gnShowHide; - } - else - { - gnShowHide=nBtn; - } - sButton+=getShowHide(); - sButton+=""; - bState=true; - } - else if(sType=="hide"&&isShowHideEnable()) - { - var svTitle="Hide Navigation Component"; - sButton=""; - gnShowHideStyle=nStyle; - goHide=new button(sType,sTitle,nWidth,nHeight,sI1,sI2,sI3); - gaObjBtns[nBtn]=goHide; - if(gnShowHide!=-1) - { - nBtn=gnShowHide; - } - else - { - gnShowHide=nBtn; - } - sButton+=getShowHide(); - sButton+=""; - bState=true; - } - else if(sType=="hide2"&&(!gbNav4)&&(!gbOpera)) - { - var svTitle="Hide Navigation Component"; - sButton=""; - gnShowHideStyle=nStyle; - if(!sI1) - sI1=gsIHide; - goHide2=new button(sType,sTitle,nWidth,nHeight,sI1,sI2,sI3); - gaObjBtns[nBtn]=goHide2; - if(nStyle&BTN_TEXT) - sText=goHide2.sText - - if(nStyle&BTN_IMG) - sI=getImage(goHide2,svTitle); - sButton+=genButton(sText,sI,nStyle); - sButton+=""; - bMini=true; - } - else if(sType=="synctoc") - { - var svTitle="Sync TOC"; - sButton=""; - if(!sI1) - sI1=gsISync; - goSync=new button(sType,sTitle,nWidth,nHeight,sI1,sI2,sI3); - gaObjBtns[nBtn]=goSync; - if(nStyle&BTN_TEXT) - sText=goSync.sText - - if(nStyle&BTN_IMG) - sI=getImage(goSync,svTitle); - sButton+=genButton(sText,sI,nStyle); - sButton+=""; - bMini=true; - } - else if(sType=="toc") - { - var svTitle="Contents"; - sButton=""; - if(!sI1) - sI1=gsIToc; - if(!sI2) - sI2=gsITocS; - if(!sI4) - sI4=gsITocS; - goToc=new button(sType,sTitle,nWidth,nHeight,sI1,sI2,sI3,sI4,sI5,sI6); - gaObjBtns[nBtn]=goToc; - if(nStyle&BTN_TEXT) - sText=goToc.sText - - if(nStyle&BTN_IMG) - sI=getImage(goToc,svTitle); - sButton+=genButton(sText,sI,nStyle); - sButton+=""; - bState=true; - } - else if(sType=="idx") - { - var svTitle="Index"; - sButton=""; - if(!sI1) - sI1=gsIIndex; - if(!sI2) - sI2=gsIIndexS; - if(!sI4) - sI4=gsIIndexS; - goIdx=new button(sType,sTitle,nWidth,nHeight,sI1,sI2,sI3,sI4,sI5,sI6); - gaObjBtns[nBtn]=goIdx; - if(nStyle&BTN_TEXT) - sText=goIdx.sText - - if(nStyle&BTN_IMG) - sI=getImage(goIdx,svTitle); - sButton+=genButton(sText,sI,nStyle); - sButton+=""; - bState=true; - } - else if(sType=="fts") - { - var svTitle="Search"; - sButton=""; - if(!sI1) - sI1=gsISearch; - if(!sI2) - sI2=gsISearchS; - if(!sI4) - sI4=gsISearchS; - goFts=new button(sType,sTitle,nWidth,nHeight,sI1,sI2,sI3,sI4,sI5,sI6); - gaObjBtns[nBtn]=goFts; - if(nStyle&BTN_TEXT) - sText=goFts.sText - - if(nStyle&BTN_IMG) - sI=getImage(goFts,svTitle); - sButton+=genButton(sText,sI,nStyle); - sButton+=""; - bState=true; - } - else if(sType=="glo") - { - var svTitle="Glossary"; - sButton=""; - if(!sI1) - sI1=gsIGlossary; - if(!sI2) - sI2=gsIGlossaryS; - if(!sI4) - sI4=gsIGlossaryS; - goGlo=new button(sType,sTitle,nWidth,nHeight,sI1,sI2,sI3,sI4,sI5,sI6); - gaObjBtns[nBtn]=goGlo; - if(nStyle&BTN_TEXT) - sText=goGlo.sText - - if(nStyle&BTN_IMG) - sI=getImage(goGlo,svTitle); - sButton+=genButton(sText,sI,nStyle); - sButton+=""; - bState=true; - } - else if(sType=="avnext") - { - var svTitle="Next Topic"; - sButton=""; - if(!sI1) - sI1=gsINext; - if(!sI4) - sI4=gsINextD; - goNext=new button(sType,sTitle,nWidth,nHeight,sI1,sI2,sI3,sI4,sI5,sI6); - gaObjBtns[nBtn]=goNext; - if(nStyle&BTN_TEXT) - sText=goNext.sText - - if(nStyle&BTN_IMG) - sI=getImage(goNext,svTitle); - sButton+=genButton(sText,sI,nStyle); - sButton+=""; - bMini=true; - } - else if(sType=="avprev") - { - var svTitle="Previous Topic"; - sButton=""; - if(!sI1) - sI1=gsIPrev; - if(!sI4) - sI4=gsIPrevD; - goPrev=new button(sType,sTitle,nWidth,nHeight,sI1,sI2,sI3,sI4,sI5,sI6); - gaObjBtns[nBtn]=goPrev; - if(nStyle&BTN_TEXT) - sText=goPrev.sText - - if(nStyle&BTN_IMG) - sI=getImage(goPrev,svTitle); - sButton+=genButton(sText,sI,nStyle); - sButton+=""; - bMini=true; - } - else if(sType=="blankblock") - { - gaButtons[nBtn]=null; - gaTypes[nBtn]=sType; - } - else if(sType=="websearch") - { - var svTitle="WebSearch"; - sButton=""; - if(!sI1) - sI1=gsIWebSearch; - if(!sI4) - sI4=gsIWebSearchD; - goWebSearch=new button(sType,sTitle,nWidth,nHeight,sI1,sI2,sI3,sI4,sI5,sI6); - gaObjBtns[nBtn]=goWebSearch; - if(nStyle&BTN_TEXT) - sText=goWebSearch.sText - - if(nStyle&BTN_IMG) - sI=getImage(goWebSearch,svTitle); - sButton+=genButton(sText,sI,nStyle); - sButton+=""; - } - else if(sType.indexOf("custom")==0) - { - var nCusBtnIdx=goCusButton.length; - goCusButton[nCusBtnIdx]=new cusButton(sType,sTitle,sOnClick,sOnMouseOver,sOnLoad,nWidth,nHeight,sI1,sI2,sI3); - gaObjBtns[nBtn]=goCusButton[nCusBtnIdx]; - var re=new RegExp("\"","g"); - var svTitle=sTitle.replace(re, """); - if(sHref&&sHref.length!=0) - { - sButton=""; - if(nStyle&BTN_TEXT) - sText=sTitle; - if(nStyle&BTN_IMG) - sI+=getImage(goCusButton[nCusBtnIdx],sTitle); - sButton+=genButton(sText,sI,nStyle); - sButton+=""; - } - if(sButton.length!=0) - { - var btnClass=""; - if(sText||bMini) - btnClass="clsBtnNormal"; - else - btnClass="clsNoBNormal"; - - if(!bState) - { - if(bHref) - gaButtons[nBtn]=""+sButton+""; - else - gaButtons[nBtn]=""+sButton+""; - } - else - gaButtons[nBtn]=""+sButton+""; - gaTypes[nBtn]=sType; - } - - if(sType=="avenuesel") - addAvenueSelection(); - else if(sType=="searchform") - addSearchForm(); - else if(sType=="banner") - { - if(!sI1) - sI1=gsIBanner; - addBanner(sI1); - } -} - -function isShowHideEnable() -{ - if(gbIE4) - return true; - else - return false; -} - -function genButton(sText,sI,nStyle) -{ - var sButton=""; - var sShowText=_textToHtml(sText); - if (gbNav4 && !gbNav6) - sShowText += " "; - if(sText!=""&&sI!="") - { - if(nStyle&BTN_IMG_TOP) - sButton+=sI+"
    "+ sShowText; - else if(nStyle&BTN_IMG_BOTTOM) - sButton+=sText+"
    "+sI; - else if(nStyle&BTN_IMG_RIGHT) - sButton+=sText+" "+sI; - else - sButton+=sI+" "+sShowText; - } - else if(sText!="") - { - sButton+=sShowText; - } - else if(sI!="") - { - sButton+=sI; - } - return sButton; -} - -function searchB() -{ - var onMsg=new whMessage(WH_MSG_SHOWFTS,this,1,null); - SendMessage(onMsg); - - var oMsg=new whMessage(WH_MSG_SEARCHTHIS,this,1,document.searchForm.searchString.value); - if(!SendMessage(oMsg)) - gstrSearch=document.searchForm.searchString.value; - else - gstrSearch=""; -} - -function ReSortToolbarButtons() -{ - var bSearchEnabled=isSearchEnabled(); - var strOrder=""; - var oMsg=new whMessage(WH_MSG_TOOLBARORDER,this,1,null); - if(SendMessage(oMsg)) - { - strOrder=oMsg.oParam; - } - if(strOrder.length>0) - { - gaOrders=strOrder.split("|"); - var aTempButtons=new Array(); - var ti=0; - for(var si=0;si0) - { - gaOrders=strOrder.split("|"); - var aTempButtons=new Array(); - var ti=0; - for(var si=0;si0) - { - var strHeight="100%"; - var strWidth="100%"; - if (gbNav4) - { - strHeight=window.innerHeight-4; - strWidth=window.innerWidth-4; - } - if (gbIE4) - { - strHeight=document.body.clientHeight-4; - strWidth=document.body.clientWidth-4; - } - if(gbNav6) - sHTML=""; - else - sHTML="
    "; - if((gnButtonLayout&LAYOUT)==HLAYOUT) - { - sHTML+=""; - for(var i=0;i"; - } - sHTML+=""; - } - else - { - for(var i=0;i"+gaButtons[i]+""; - else - sHTML+=""; - } - } - if(gbNav6) - sHTML+="
    "; - else - sHTML+=""; - } - document.write(sHTML); - if(document.body) - document.body.onselectstart=onSelect; - updateAveButton(); -} - -function hasNavPane() -{ - if(gnHasNavPane==-1) - { - gnHasNavPane=0; - var oParam=new Object(); - oParam.bVisible=false; - var oMsg=new whMessage(WH_MSG_ISPANEVISIBLE,this,1,oParam); - if(SendMessage(oMsg)) - { - if(oParam.bVisible) - gnHasNavPane=1; - } - - } - if(gnHasNavPane==1) - return true; - else - return false; -} - -function getTocInfo() -{ - var oParam=new Object(); - oParam.oTocInfo=null; - var oMsg=new whMessage(WH_MSG_GETTOCPATHS,this,1,oParam); - if(SendMessage(oMsg)) - { - goTocInfo=oParam.oTocInfo; - gbTocInfoInited=true; - } -} - -function onBtnClick(e) -{ - var oEl=null; - var oElo=null; - if(gbNav6) - { - oElo=e.target; - while(oElo&&oElo.nodeName.indexOf("#")==0) oElo=getParentNode(oElo); - oEl=oElo; - } - else - { - oElo=event.srcElement; - oEl=oElo; - event.cancelBubble=true; - } - while(-1==oEl.className.indexOf("clsBtn")&&-1==oEl.className.indexOf("clsNoB")) - { - oEl=getParentNode(oEl); - if(!oEl) return; - } - if(oElo.tagName=="A"||oElo.tagName=="IMG") return true; - var oaA=getElementsByTag(oElo,"A"); - if(oaA&&oaA.length) - { - var oA=oaA[0]; - if(gbNav6) - { - var sCmd=oA.getAttribute("onclick"); - var nCmd=sCmd.indexOf("return false;"); - if(nCmd!=-1); - sCmd=sCmd.substring(0,nCmd); - setTimeout(sCmd,1); - } - else - oA.onclick(); - } -} - -function onBtnMouseDown(e,nBtn) -{ - var oEl=null; - if(gbNav6) - { - var oElo=e.target; - while(oElo&&oElo.nodeName.indexOf("#")==0) oElo=getParentNode(oElo); - oEl=oElo; - } - else - { - oEl=event.srcElement; - event.cancelBubble=true; - } - while(-1==oEl.className.indexOf("clsBtn")&&-1==oEl.className.indexOf("clsNoB")) - { - oEl=getParentNode(oEl); - if(!oEl) return; - } - var sPF=oEl.className.substring(0,6); - var oIs=getElementsByTag(oEl,"img"); - if(oIs.length>0&&gaObjBtns[nBtn]&&gaObjBtns[nBtn].aIs&&gaObjBtns[nBtn].aIs.length>2) - { - if(gaObjBtns[nBtn].aIs[2]) - oIs[0].src=gaObjBtns[nBtn].aIs[2]; - } - var sState=getState(oEl); - if(sState!="disable") - { - oEl.className=sPF+"Down"; - } -} - -function onBtnMouseUp(e,nBtn) -{ - var oEl=null; - if(gbNav6) - { - var oElo=e.target; - while(oElo&&oElo.nodeName.indexOf("#")==0) oElo=getParentNode(oElo); - oEl=oElo; - } - else - { - oEl=event.srcElement; - event.cancelBubble=true; - } - while(-1==oEl.className.indexOf("clsBtn")&&-1==oEl.className.indexOf("clsNoB")) - { - oEl=getParentNode(oEl); - if(!oEl) return; - } - var sPF=oEl.className.substring(0,6); - var sState=getState(oEl); - if(sState=="down"||sState=="disable") - { - var oIs=getElementsByTag(oEl,"img"); - if(oIs.length>0&&gaObjBtns[nBtn]&&gaObjBtns[nBtn].aIs&&gaObjBtns[nBtn].aIs.length>3) - { - if(gaObjBtns[nBtn].aIs[3]) - oIs[0].src=gaObjBtns[nBtn].aIs[3]; - } - } - else - { - var oIs=getElementsByTag(oEl,"img"); - if(oIs.length>0&&gaObjBtns[nBtn]&&gaObjBtns[nBtn].aIs&&gaObjBtns[nBtn].aIs.length>0) - { - if(gaObjBtns[nBtn].aIs[0]) - oIs[0].src=gaObjBtns[nBtn].aIs[0]; - } - } - if(goEl==oEl) - { - if(sState!="down"&&sState!="disable") - { - oEl.className=sPF+"Up"; - } - } -} - -function getState(oEl) -{ - var sState=""; - if(gbNav6||gbOpera) - sState=oEl.getAttribute("state"); - else - if(oEl.state) - sState=oEl.state; - return sState; -} - -function onBtnMouseOver(e,nBtn) -{ - markButton(e); - var oEl=null; - if(gbNav6) - { - var oElo=e.target; - while(oElo&&oElo.nodeName.indexOf("#")==0) oElo=getParentNode(oElo); - oEl=oElo; - } - else - { - oEl=event.srcElement; - event.cancelBubble=true; - } - while(-1==oEl.className.indexOf("clsBtn")&&-1==oEl.className.indexOf("clsNoB")) - { - oEl=getParentNode(oEl); - if(!oEl) return; - } - var sPF=oEl.className.substring(0,6); - var sState=getState(oEl); - if(sState=="down"||sState=="disable") - { - if(sState=="down") - oEl.className=sPF+"Down"; - var oIs=getElementsByTag(oEl,"img"); - if(oIs.length>0&&gaObjBtns[nBtn]&&gaObjBtns[nBtn].aIs&&gaObjBtns[nBtn].aIs.length>4) - { - if(gaObjBtns[nBtn].aIs[4]) - oIs[0].src=gaObjBtns[nBtn].aIs[4]; - } - } - else - { - oEl.className=sPF+"Up"; - var oIs=getElementsByTag(oEl,"img"); - if(oIs.length>0&&gaObjBtns[nBtn]&&gaObjBtns[nBtn].aIs&&gaObjBtns[nBtn].aIs.length>1) - { - if(gaObjBtns[nBtn].aIs[1]) - oIs[0].src=gaObjBtns[nBtn].aIs[1]; - } - } -} - -function onBtnMouseOut(e,nBtn) -{ - goEl=null; - var oEl=null; - if(gbNav6) - { - var oElo=e.target; - while(oElo&&oElo.nodeName.indexOf("#")==0) oElo=getParentNode(oElo); - oEl=oElo; - } - else - { - oEl=event.srcElement; - event.cancelBubble=true; - } - while(-1==oEl.className.indexOf("clsBtn")&&-1==oEl.className.indexOf("clsNoB")) - { - oEl=getParentNode(oEl); - if(!oEl) return; - } - var sPF=oEl.className.substring(0,6); - var sState=getState(oEl); - if(sState=="down"||sState=="disable") - { - var oIs=getElementsByTag(oEl,"img"); - if(oIs.length>0&&gaObjBtns[nBtn]&&gaObjBtns[nBtn].aIs&&gaObjBtns[nBtn].aIs.length>3) - { - if(gaObjBtns[nBtn].aIs[3]) - oIs[0].src=gaObjBtns[nBtn].aIs[3]; - } - if(sState=="down") - oEl.className=sPF+"Down"; - } - else - { - var oIs=getElementsByTag(oEl,"img"); - if(oIs.length>0&&gaObjBtns[nBtn]&&gaObjBtns[nBtn].aIs&&gaObjBtns[nBtn].aIs.length>0) - { - if(gaObjBtns[nBtn].aIs[0]) - oIs[0].src=gaObjBtns[nBtn].aIs[0]; - } - oEl.className=sPF+"Normal"; - } -} - -function showToc() -{ - var oMsg=new whMessage(WH_MSG_SHOWTOC,this,1,null) - SendMessage(oMsg); -} - -function showIndex() -{ - var oMsg=new whMessage(WH_MSG_SHOWIDX,this,1,null) - SendMessage(oMsg); -} - -function showFts() -{ - var oMsg=new whMessage(WH_MSG_SHOWFTS,this,1,null) - SendMessage(oMsg); -} - -function showGlossary() -{ - var oMsg=new whMessage(WH_MSG_SHOWGLO,this,1,null) - SendMessage(oMsg); -} - -function syncWithShow() -{ - if(!gbTocInfoInited) - { - getTocInfo(); - } - if(goTocInfo) - { - showToc(); - var oParam=goTocInfo; - var oMsg=new whMessage(WH_MSG_SYNCTOC,this,1,oParam); - SendMessage(oMsg); - } -} - -function markButton(e) -{ - var oEl=null; - if(gbNav6) - { - var oElo=e.target; - while(oElo&&oElo.nodeName.indexOf("#")==0) oElo=getParentNode(oElo); - oEl=oElo; - } - else - oEl=event.srcElement; - while(oEl&&oEl.tagName!="TD") oEl=getParentNode(oEl); - if(oEl) - goEl=oEl; -} - -function showHidePane() -{ - var oMsg=null; - if(hasNavPane()) - oMsg=new whMessage(WH_MSG_HIDEPANE,this,1,null); - else - oMsg=new whMessage(WH_MSG_SHOWPANE,this,1,null); - SendMessage(oMsg); -} - -function goAveNext() -{ - goAvenue(true); -} - -function goAvePrev() -{ - goAvenue(false); -} - -function doWebSearch() -{ - if (goWebSearchEnable) - { - var oMsg=new whMessage(WH_MSG_WEBSEARCH,this,1,null); - SendMessage(oMsg); - } -} - -function goAvenue(bNext) -{ - var oMsg=null; - initAveButtonObj(); - gsCurAveName=getCurrentAveName(); - if(gbNav4&&!gbNav6) - { - if(bNext) - { - gaAvenues=null; - updateAvenue(); - oMsg=new whMessage(WH_MSG_NEXT,this,1,null); - SendMessage(oMsg); - } - else if(!bNext) - { - gaAvenues=null; - updateAvenue(); - oMsg=new whMessage(WH_MSG_PREV,this,1,null); - SendMessage(oMsg); - } - } - else - { - if(bNext&&goNextParent) - { - var sState=getState(goNextParent); - if(sState!="disable") - { - gaAvenues=null; - gbNeedUpdateAve=true; - gbUpdateTimerCount++; - setTimeout("updateAvenueIfNeeded();", 2000); - oMsg=new whMessage(WH_MSG_NEXT,this,1,null); - SendMessage(oMsg); - } - } - else if(!bNext&&goPrevParent) - { - var sState=getState(goPrevParent); - if(sState!="disable") - { - gaAvenues=null; - gbNeedUpdateAve=true; - gbUpdateTimerCount++; - setTimeout("updateAvenueIfNeeded();", 2000); - oMsg=new whMessage(WH_MSG_PREV,this,1,null); - SendMessage(oMsg); - } - } - } -} - -function window_Unload() -{ - if(!gbNav4||gbNav6) - { - UnRegisterListener2(this,WH_MSG_GETSEARCHS); - UnRegisterListener2(this,WH_MSG_PANESTATUE); - UnRegisterListener2(this,WH_MSG_SYNCINFO); - UnRegisterListener2(this,WH_MSG_PANEINFO); - UnRegisterListener2(this,WH_MSG_AVENUEINFO); - UnRegisterListener2(this,WH_MSG_GETCURRENTAVENUE); - UnRegisterListener2(this,WH_MSG_ENABLEWEBSEARCH); - UnRegisterListener2(this,WH_MSG_INITSEARCHSTRING); - UnRegisterListener2(this,WH_MSG_NOSEARCHINPUT); - UnRegisterListener2(this,WH_MSG_NOSYNC); - } -} - -function window_OnLoad() -{ - if(!gbOpera7&&document.body) - { - if(gsBgImage&&gsBgImage.length>0) - { - document.body.background=gsBgImage; - } - if(gsBgColor&&gsBgColor.length>0) - { - document.body.bgColor=gsBgColor; - } - } - doCusOnLoad(); - var oMsg=new whMessage(WH_MSG_GETPANEINFO,this,1,null); - if(SendMessage(oMsg)) - { - setTimeout("flipPaneButton(\""+oMsg.oParam+"\");",1); - } - if (!gaAvenues) - { - var oMsg2=new whMessage(WH_MSG_GETAVIAVENUES,this,1,new Object()); - if(SendMessage(oMsg2)) - { - gaAvenues=oMsg2.oParam.aAvenues; - gbNeedUpdateAve=false; - setTimeout("updateAvenue();",1); - } - } -} - -function onSendMessage(oMsg) -{ - var nMsgId=oMsg.nMessageId; - if(nMsgId==WH_MSG_GETSEARCHS) - { - if(document.searchForm&&document.searchForm.searchString) - { - oMsg.oParam.sValue=document.searchForm.searchString.value; - return false; - } - } - else if(nMsgId==WH_MSG_PANESTATUE) - { - if(oMsg.oParam=="visible") - { - if(isShowHideEnable()) - setTimeout("flipShowHide(true);",1); - setTimeout("showPaneButton();",1); - } - else - { - if(isShowHideEnable()) - setTimeout("flipShowHide(false);",1); - setTimeout("hidePaneButton();",1); - } - } - else if(nMsgId==WH_MSG_PANEINFO) - { - if(oMsg.oParam) - setTimeout("flipPaneButton(\""+oMsg.oParam+"\");",1); - else - setTimeout("hidePaneButton();",1); - } - else if(nMsgId==WH_MSG_SYNCINFO) - { - if(oMsg.oParam) - goTocInfo=oMsg.oParam; - else - goTocInfo=null; - gbTocInfoInited=true; - } - else if(nMsgId==WH_MSG_AVENUEINFO) - { - gaAvenues=oMsg.oParam; - gbNeedUpdateAve=false; - setTimeout("updateAvenue();",1); - } - else if(nMsgId==WH_MSG_GETCURRENTAVENUE) - { - var sAveName=getCurrentAvenue(); - if(sAveName!="") - { - oMsg.oParam.sAvenue=sAveName; - return false; - } - else - return true; - } - else if(nMsgId==WH_MSG_ENABLEWEBSEARCH) - { - setTimeout("updateWebSearch("+oMsg.oParam+");",1); - } - else if(nMsgId==WH_MSG_INITSEARCHSTRING) - { - if(gstrSearch!="") - { - oMsg.oParam=gstrSearch; - gstrSearch=""; - return false; - } - } - else if(nMsgId==WH_MSG_NOSEARCHINPUT) - { - var oSearchInput = getElement("searchInput"); - if (oSearchInput) - { - oSearchInput.style.visibility = "hidden"; - return false; - } - } - else if(nMsgId==WH_MSG_NOSYNC) - { - var oSync = getElement("btnsynctoc"); - if (oSync) - { - oSync.style.visibility = "hidden"; - return false; - } - } - return true; -} - -function getCurrentAvenue() -{ - var strAveName=""; - var oSelect=getElement("avenue"); - if(oSelect) - { - strAveName=oSelect.value; - } - return strAveName; -} - -function initBtn() -{ - var oBtn=null; - oBtn=getElement("btntoc"); - if(oBtn) - gaBtns[gaBtns.length]=oBtn; - oBtn=getElement("btnidx"); - if(oBtn) - gaBtns[gaBtns.length]=oBtn; - oBtn=getElement("btnfts"); - if(oBtn) - gaBtns[gaBtns.length]=oBtn; - oBtn=getElement("btnglo"); - if(oBtn) - gaBtns[gaBtns.length]=oBtn; - gbInitBtn=true; -} - -function showPaneButton() -{ - flipPaneButton(gsPane); -} - -function hidePaneButton() -{ - flipPaneButton(""); -} - -function flipPaneButton(sPane) -{ - if (sPane) - gsPane=sPane; - if(!gbInitBtn) - initBtn(); - - var oUp=null; - if(sPane) - { - oUp=getElement("btn"+sPane); - } - for(var i=0;i0) - { - var strClassName=oaA[0].className; - oaA[0].className="btnsel"+strClassName.substring(3); - } - } - var oIs=getElementsByTag(oEl,"img"); - var oBtn=getButtonObjByType(gaBtns[i].id.substring(3)); - if(oIs.length>0&&oBtn&&oBtn.aIs&&oBtn.aIs.length>3) - { - if(oBtn.aIs[3]) - oIs[0].src=oBtn.aIs[3]; - } - } - } - else - { - var oEl=getParentNode(gaBtns[i]); - var sState=getState(oEl); - var sPF=oEl.className.substring(0,6); - if(sState=="down") - { - setState(oEl,"up"); - if(oEl==goEl) - oEl.className=sPF+"Up"; - else - oEl.className=sPF+"Normal"; - - if(sPF=="clsBtn") - { - if(gaBtns[i].id) - { - var sColor=getBtnColor(gaBtns[i].id.substring(3),false); - if(sColor) - { - oEl.style.backgroundColor=sColor - } - else - { - oEl.style.backgroundColor=""; - } - } - - var oaA=getElementsByTag(oEl,"A"); - if(oaA.length>0) - { - var strClassName=oaA[0].className; - oaA[0].className="btn"+strClassName.substring(6); - } - } - var oIs=getElementsByTag(oEl,"img"); - var oBtn=getButtonObjByType(gaBtns[i].id.substring(3)); - if(oIs.length>0&&oBtn&&oBtn.aIs&&oBtn.aIs.length>0) - { - if(oBtn.aIs[0]) - oIs[0].src=oBtn.aIs[0]; - } - } - } - } - } -} - -function flipShowHide(bShow) -{ - gnHasNavPane=-1; - var oA=getElement("btnshowhide"); - if(oA) - { - var oEl=getParentNode(oA); - var sPF=oEl.className.substring(0,6); - if(oEl&&oEl.state) - { - if(bShow) - { - oEl.state="down"; - oEl.className=sPF+"Down"; - } - else - { - oEl.state="up"; - - if(oEl==goEl) - oEl.className=sPF+"Up"; - else - oEl.className=sPF+"Normal"; - } - } - oA.innerHTML=getShowHide(); - } -} - -function cusOnClick(nIdx) -{ - if(goCusButton.length>nIdx) - { - var sOnClick=goCusButton[nIdx].sOnClick; - if(sOnClick&&sOnClick.length>0) - { - if(!gbPreview) - eval(sOnClick); - return false; - } - } - return true; -} - -function cusOnMouseOver(nIdx) -{ - if(goCusButton.length>nIdx) - { - var sOnMouseOver=goCusButton[nIdx].sOnMouseOver; - if(sOnMouseOver&&sOnMouseOver.length>0) - { - if(!gbPreview) - eval(sOnMouseOver); - return false; - } - } - return true; -} - -function doCusOnLoad() -{ - if(!gbPreview&&gaOrders) - { - for(var i=0;ii+7) - { - if (cusButton.arguments[7+i]) - this.aIs[i]=_getFullPath(_getPath(document.location.href),cusButton.arguments[7+i]); - else - this.aIs[i]=""; - i++; - } - if(sOnLoad) - { - registerOnLoad(sOnLoad,sType); - } -} - -function getBtnColor(sType,bSel) -{ - var aBtnColors=null; - if(bSel) - aBtnColors=gaSelBtnBgColor; - else - aBtnColors=gaBtnBgColor; - if(aBtnColors) - { - for(var i=0;i - -Table of contents - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whthost.js b/doc/salome/gui/GEOM/whthost.js deleted file mode 100755 index 54ddc9aac..000000000 --- a/doc/salome/gui/GEOM/whthost.js +++ /dev/null @@ -1,1504 +0,0 @@ -// WebHelp 5.10.007 -var gaHSLoad=new Array(); -var gnMinIdx=0; -var gnInsIdx=-1; -var gsLoadingDivID="LoadingDiv"; -var gsLoadingMsg="Loading, click here to cancel..."; -var gaProj=null; -var gaTocs=new Array(); -var goChunk=null; -var gbReady=false; -var gbToc=false; -var gbXML=false; -var gaRoot=new Array(); -var gnCC=-1; -var gsTP=""; -var gaBTPs=""; -var gsCTPath=""; -var gnLT=-1; -var gsPathSplit="\n"; -var gsBgColor="#ffffff"; -var gsBgImage=""; -var goFont=null; -var goHFont=null; - -var gsMargin="0pt"; -var gsIndent="15pt"; -var gsABgColor="#cccccc"; - -var giBookClose=""; -var giBookOpen=""; -var giBookItem=""; -var giURLItem=""; -var giNewBookClose=""; -var giNewBookOpen=""; -var giNewBookItem=""; -var giNewURLItem=""; -var gnImages=0; -var gnLoadedImages=0; -var gaImgs=new Array(); -var gbLoadData=false; -var gobj=null; -var gaTocsNs61Fix=null; -var gbWhTHost=false; -var gBookItems=new Array(); -var gInSync=false; -var gbLData=false; -var gbNeedFillStub=false; -var gbLoadToc=false; - -function chunkInfoQueue() -{ - this.aContent=new Array(); - this.inQueue=function(cInfo) - { - this.aContent[this.aContent.length]=cInfo; - } - this.deQueue=function() - { - var cInfo=null; - if(this.aContent.length>0) - { - cInfo=this.aContent[0]; - for(var i=1;i0) - { - var nCIdx=0; - do { - nCIdx++; - var i=nIdx+nCIdx; - var nItemType=getItemType(i); - if(nItemType==1){ - if (!isBookEmpty(i)) - return false; - } - else if(nItemType==4){ - var sSrc=getRefURL(i); - var nProj=getProject(sSrc); - if(nProj!=-1){ - sSrc=gaRoot[nProj].sToc; - if(sSrc) - return false; - } - } - else if(nItemType==2||nItemType==16||nItemType==8) - return false; - } while(nCIdx

    \"Book\""; - sHTML+=" "+sName+"

    "; - var sURL=_textToHtml_nonbsp(getItemURL(nIdx)); - if(sURL!="") - addBookItem(getBookId(nIdx),_textToHtml_nonbsp(getTopicTarget(nIdx)),sURL); - sHTML+="
    "; - } - else - sHTML=""; - } - else - { - sHTML+="stub>
    "; - gbNeedFillStub=true; - setTimeout("fillStub("+nIdx+","+bLocalProject+");",100); - } - return sHTML; -} - -function checkFillStub() -{ - if(!gbLData) - { - if(gchunkRequestQueue.length()>0) - { - var cInfo=gchunkRequestQueue.deQueue(); - if(cInfo) - { - fillStub(cInfo.nIdx,cInfo.bLocal); - return; - } - } - } - if(gbNeedFillStub) - { - gbNeedFillStub=false; - setTimeout("syncInit()",1); - } -} - -function fillStub(nIdx,bLocalProject) -{ - if(!gbLData) - { - gbLData=true; - var sObj=getElement(getPBId(nIdx)); - if(sObj!=null) - { - tocExpandHelpSet(nIdx,bLocalProject); - gbNeedFillStub=false; - setTimeout("syncInit()",1); - } - else - setTimeout("fillStub("+nIdx+","+bLocalProject+");",100); - } - else - gchunkRequestQueue.inQueue(new chunkInfo(nIdx,bLocalProject)); -} - -function getBookId(nIdx){return "B_"+nIdx;} - -function getItemId(nIdx){return "I_"+nIdx;} - -function markBook(nIdx) -{ - var obj=getElement(getItemId(nIdx)); - if(obj==null) - obj=getElement(getBookId(nIdx)); - if(gbNav6) - { - gobj=obj; - setTimeout("delayMarkObj();",1); - } - else - markObj(obj); -} - -function delayMarkObj() -{ - if(gobj) - { - markObj(gobj); - gobj=null; - } -} - -function markObj(obj) -{ - if(obj!=null) - { - HighLightElement(obj,gsABgColor,"transparent"); - var sPath=calTocPath(obj); - if(gsCTPath!=sPath) - gsCTPath=sPath; - } -} - -function markItem(nIdx) -{ - var obj=getElement(getItemId(nIdx)); - if(gbNav6) - { - gobj=obj; - setTimeout("delayMarkObj();",1); - } - else - markObj(getElement(getItemId(nIdx))); -} - -function calTocPath(obj) -{ - var sPath=getInnerText2(obj); - var pObj=getParentNode(obj); - do - { - while(pObj!=null&&!isCBId(pObj.id)) pObj=getParentNode(pObj); - if(pObj!=null) - { - var nId=getIdByCBId(pObj.id); - var sObj=getElement(getPBId(nId)); - if(sObj!=null) - { - var objs=getItemsByBook(sObj); - for(var i=0;i\""+sAltString+"\" "+sName+"

    "; - return sHTML; -} - -function writeBookItems(nIdx,num) -{ - var sHTML=""; - if(num>0){ - var nCIdx=0; - do{ - nCIdx++; - var i=nIdx+nCIdx; - var nItemType=getItemType(i); - if(nItemType==1||nItemType==4||nItemType==8){ - sHTML+=writeBook(i); - nCIdx+=getItemContentsNum(i); - } - else if(nItemType==2||nItemType==16){ - sHTML+=writeAnItem(i); - } - } - while(nCIdx"+gsLoadingMsg+"
    "; -} - -function getItemName(nIdx) -{ - var oChunk=getChunk(nIdx); - if(oChunk) - return oChunk.aTocs[nIdx-oChunk.nMI].sItemName; - else - return null; -} - -function getItemContentsNum(nIdx) -{ - var oChunk=getChunk(nIdx); - if(oChunk) - return oChunk.aTocs[nIdx-oChunk.nMI].nContents; - else - return null; -} - -function getItemType(nIdx) -{ - var oChunk=getChunk(nIdx); - if(oChunk) - return oChunk.aTocs[nIdx-oChunk.nMI].nType; - else - return 0; -} - -function getItemURL(nIdx) -{ - var oChunk=getChunk(nIdx); - if(oChunk) - { - var sPath=oChunk.aTocs[nIdx-oChunk.nMI].sItemURL; - if(!(sPath==null||sPath=="")) - { - return _getFullPath(oChunk.sPPath,sPath); - } - } - return ""; -} - -function getRefURL(nIdx) -{ - var oChunk=getChunk(nIdx); - if(oChunk) - { - var sPath=oChunk.aTocs[nIdx-oChunk.nMI].sRefURL; - if(!(sPath==null||sPath=="")) - { - return _getFullPath(oChunk.sPPath,sPath) - } - } - return ""; -} - -function getTopicTarget(nIdx) -{ - var oChunk=getChunk(nIdx); - if(oChunk) - { - if(typeof(oChunk.aTocs[nIdx-oChunk.nMI].sTarget)!="undefined") - return oChunk.aTocs[nIdx-oChunk.nMI].sTarget; - } - return ""; -} - -function getItemIcon(nIdx,nIconIdx) -{ - var oChunk=getChunk(nIdx); - if(oChunk) - { - if(typeof(oChunk.aTocs[nIdx-oChunk.nMI].sIconRef)!="undefined") - { - var sIconRef=oChunk.aTocs[nIdx-oChunk.nMI].sIconRef; - var nIndex=sIconRef.indexOf(";"); - while(nIconIdx-->0&&nIndex!=-1) - { - sIconRef=sIconRef.substring(nIndex+1); - nIndex=sIconRef.indexOf(";"); - } - if(nIconIdx<0) - { - if(nIndex!=-1) - sIconRef=sIconRef.substring(0,nIndex); - return _getFullPath(oChunk.sPPath,sIconRef) - } - } - } - return ""; -} - -function TocWriteClassStyle() -{ - var sStyle=""; - document.write(sStyle); -} - -function TocWriteFixedWidth(bBegin,nWidth) -{ - if((gbIE4)&&(gbMac)&&(!gbIE5)){ - if(bBegin) - document.write("
    "); - else - document.write("
    "); - } -} - -function TocInitPage() -{ - var tempColl=getItemsByBook(document.body); - if(tempColl.length>0) - tempColl[0].focus(); -} - -function getItemsFromObj(obj) -{ - var aAnchor=new Array(); - var tempColl=getChildrenByTag(obj,"P"); - if(tempColl&&tempColl.length>0) - { - var anobr=new Array(); - for(var i=0;i0) - for(var j=0;j0) - for(var u=0;u0) - for(var j=0;jdocument.body.clientHeight){ - nNewScroll=nTop-20; - } - } - document.body.scrollTop=nNewScroll; -} - -function TocExpand(nId,bChangeImg,bForceOpen) -{ - var oDiv=getElement(getCBId(nId)); - if(oDiv==null) return null; - - var whichIm=document.images[getBId(nId)]; - if((oDiv.style.display!="block")||bForceOpen){ - oDiv.style.display="block"; - if(bChangeImg){ - var sPath=getPath(whichIm.src); - sPath=_getFullPath(sPath,getBookImage(nId,false)); - whichIm.src=sPath; - } - }else{ - oDiv.style.display="none"; - if(bChangeImg){ - var sPath=getPath(whichIm.src); - sPath=_getFullPath(sPath,getBookImage(nId,true)); - whichIm.src=sPath; - } - if(gbMac&&gbIE5){ - this.parent.document.getElementById("tocIFrame").style.width="101%"; - this.parent.document.getElementById("tocIFrame").style.width="100%"; - } - } - return oDiv; -} - -function getChunkId(n) -{ - var nCan=-1; - for(var i=0;i=gaTocs[nCan].nMI) - nCan=i; - } - if(nCan!=-1) - return nCan; - else - return -1; -} - -function getChunk(n) -{ - if(gnCC!=-1&&gaTocs[gnCC].nMI<=n&&(gnCC==gaTocs.length-1|| - gaTocs[gnCC+1].nMI>n)) - { - return gaTocs[gnCC]; - } - else{ - gnCC=getChunkId(n); - if(gnCC!=-1) - return gaTocs[gnCC]; - else - return null; - } -} - -function getBookImage(nIdx,bClosed) -{ - var nIdx=bClosed?0:1; - var sIcon=getItemIcon(nIdx,nIdx); - if(sIcon=="") - if(bClosed) - sIcon=giBookClose; - else - sIcon=giBookOpen; - return _getFullPath(gaProj[0].sPPath,sIcon); -} - -function getItemImage(nIdx,bRemote) -{ - var sIcon=getItemIcon(nIdx,0); - if(sIcon=="") - if(bRemote) - sIcon=giURLItem; - else - sIcon=giBookItem; - return _getFullPath(gaProj[0].sPPath,sIcon); -} - -function getInnerText2(obj) -{ - var sText=getInnerText(obj); - if(sText.length>0&&!gbOpera7) - sText=sText.substring(1); - return sText; -} - -function expandToc(oObj,sRest,aIdList) -{ - var len=aIdList.length; - var nPos=sRest.indexOf(gsPathSplit); - if(nPos!=-1) - { - sPart=sRest.substring(0,nPos); - sRest=sRest.substring(nPos+1); - } - else - { - sPart=sRest; - var aTagAs=getItemsByBook(oObj); - for(var s=0;s0) - { - if(gbNav6) - { - var sCommand=obj[0].getAttribute("onClick"); - var nCommand=sCommand.indexOf(";"); - sCommand=sCommand.substring(0,nCommand); - setTimeout(sCommand,1); - } - else - obj[0].click(); - } - return -1; - } - var nRet=expandToc(oCObj,sRest,aIdList); - if(nRet) - return nRet; - } - } - aIdList.length=len; - return 0; -} - -function getIdByPBId(sPId) -{ - return parseInt(sPId.substring(2,sPId.length-1)); -} - -function getIdByCBId(sCId) -{ - return parseInt(sCId.substring(2,sCId.length-1)); -} - -function isPBId(sId) -{ - return (sId&&sId.indexOf("B_")==0&&sId.lastIndexOf("P")==sId.length-1); -} - -function isCBId(sId) -{ - return (sId&&sId.indexOf("B_")==0&&sId.lastIndexOf("C")==sId.length-1); -} - -function getBId(nIdx) -{ - return "B_"+nIdx; -} - -function getPBId(nIdx) -{ - return getBId(nIdx)+"P"; -} - -function getCBId(nIdx) -{ - return getBId(nIdx)+"C"; -} - -function getClosestTocPath(aPaths) -{ - var nMaxSimilarity=0; - var nThatIndex=-1; - var sPath=null; - if(aPaths.length==0) return sPath; - for(var i=0;inMaxSimilarity) - { - nMaxSimilarity=nSimilarity; - nThatIndex=i; - } - } - if(nThatIndex!=-1) - sPath=aPaths[nThatIndex]; - else - sPath=aPaths[0]; - return sPath; -} - -function comparePath(sPath1,sPath2) -{ - var nMaxSimilarity=0; - var nStartPos1=0; - var nPos1=-1; - var nStartPos2=0; - var nPos2=-1; - do{ - var sCheck1=null; - var sCheck2=null; - nPos1=sPath1.indexOf(gsPathSplit,nStartPos1); - if(nPos1!=-1) - { - sCheck1=sPath1.substring(nStartPos1,nPos1); - nStartPos1=nPos1+1; - } - else - { - sCheck1=sPath1.substring(nStartPos1); - nStartPos1=-1; - } - nPos2=sPath2.indexOf(gsPathSplit,nStartPos2); - if(nPos1!=-1) - { - sCheck2=sPath2.substring(nStartPos2,nPos2); - nStartPos2=nPos2+1; - } - else - { - sCheck2=sPath2.substring(nStartPos2); - nStartPos2=-1; - } - if(sCheck1==sCheck2) - nMaxSimilarity++; - else - break; - }while(nStartPos1!=-1&&nStartPos2!=-1); - return nMaxSimilarity; -} - -function getTocPaths(oTopicParam) -{ - var aRelTocPaths=oTopicParam.aPaths; - var aPaths=new Array(); - for(var i=0;i0) - { - for(var i=0;i0) - { - document.body.background=gsBgImage; - } - if(gsBgColor&&gsBgColor.length>0) - { - document.body.bgColor=gsBgColor; - } - loadToc(); - var oMsg=new whMessage(WH_MSG_SHOWTOC,this,1,null) - SendMessage(oMsg); -} - -function loadImages() -{ - if(giBookClose) - { - gaImgs[gnImages]=giBookClose; - gnImages++; - } - if(giBookOpen) - { - gaImgs[gnImages]=giBookOpen; - gnImages++; - } - if(giBookItem) - { - gaImgs[gnImages]=giBookItem; - gnImages++; - } - if(giURLItem) - { - gaImgs[gnImages]=giURLItem; - gnImages++; - } - if(giNewBookClose) - { - gaImgs[gnImages]=giNewBookClose; - gnImages++; - } - if(giNewBookOpen) - { - gaImgs[gnImages]=giNewBookOpen; - gnImages++; - } - if(giNewBookItem) - { - gaImgs[gnImages]=giNewBookItem; - gnImages++; - } - if(giNewURLItem) - { - gaImgs[gnImages]=giNewURLItem; - gnImages++; - } - if(gnImages>0) - { - setTimeout("loadDataAfter();",1000); - loadImage(gaImgs[0]); - } - else - loadDataAfter(); -} - -function loadImage(sURL) -{ - var oImg=new Image(); - oImg.onload=checkImageLoading; - oImg.onerror=errorImageLoading; - oImg.src=_getFullPath(gaProj[0].sPPath,sURL); -} - -function loadDataAfter() -{ - if(!gbLoadData) - { - gbLoadData=true; - loadTData(); - } -} - -function errorImageLoading() -{ - gnLoadedImages++; - if(gnImages==gnLoadedImages) - loadDataAfter(); - else - loadImage(gaImgs[gnLoadedImages]); -} - -function checkImageLoading() -{ - gnLoadedImages++; - if(gnImages==gnLoadedImages) - loadDataAfter(); - else - loadImage(gaImgs[gnLoadedImages]); -} - -function window_unload() -{ - UnRegisterListener2(this,WH_MSG_PROJECTREADY); - UnRegisterListener2(this,WH_MSG_SYNCTOC); - UnRegisterListener2(this,WH_MSG_SHOWTOC); -} - -function onSendMessage(oMsg) -{ - if(oMsg) - { - var nMsgId=oMsg.nMessageId; - if(nMsgId==WH_MSG_PROJECTREADY) - { - loadToc(); - } - else if(nMsgId==WH_MSG_SYNCTOC) - { - if(gbReady) - { - syncWithPaths(oMsg.oParam); - } - } - else if(nMsgId==WH_MSG_SHOWTOC) - { - if(!gbNav6) - document.body.focus(); - } - } - return true; -} - -if(window.gbWhUtil&&window.gbWhVer&&window.gbWhMsg&&window.gbWhProxy) -{ - RegisterListener2(this,WH_MSG_PROJECTREADY); - RegisterListener2(this,WH_MSG_SYNCTOC); - RegisterListener2(this,WH_MSG_SHOWTOC); - goFont=new whFont("Verdana","8pt","#000000","normal","normal","none"); - goHFont=new whFont("Verdana","8pt","#007f00","normal","normal","underline"); - - window.onload=window_OnLoad; - window.onbeforeunload=window_BUnload; - window.onunload=window_unload; - gbWhTHost=true; -} -else - document.location.reload(); \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whtopic.js b/doc/salome/gui/GEOM/whtopic.js deleted file mode 100755 index 8a53281c8..000000000 --- a/doc/salome/gui/GEOM/whtopic.js +++ /dev/null @@ -1,724 +0,0 @@ -// WebHelp 5.10.005 -var gsPPath=""; -var gaPaths=new Array(); -var gaAvenues=new Array(); - -var goFrame=null; -var gsStartPage=""; -var gsRelCurPagePath=""; -var gsSearchFormHref=""; -var gnTopicOnly=-1; -var gnOutmostTopic=-1; - -var BTN_TEXT=1; -var BTN_IMG=2; - -var goSync=null; - -var goShow=null; -var goHide=null; - -var goPrev=null; -var goNext=null; -var gnForm=0; -var goShowNav=null; -var goHideNav=null; - -var goWebSearch=null; - -var gsBtnStyle=""; -var gaButtons=new Array(); -var gaTypes=new Array(); -var whtopic_foldUnload=null; -var gbWhTopic=false; -var gbCheckSync=false; -var gbSyncEnabled=false; - -function setButtonFont(sType,sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration) -{ - var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration); - gsBtnStyle+=".whtbtn"+sType+"{"+getFontStyle(vFont)+"}"; -} - -function writeBtnStyle() -{ - if(gaButtons.length>0) - { - if(gsBtnStyle.length>0) - { - var sStyle=""; - document.write(sStyle); - } - } -} - -function button(sText,nWidth,nHeight) -{ - this.sText=sText; - this.nWidth=nWidth; - this.nHeight=nHeight; - - this.aImgs=new Array(); - var i=0; - while(button.arguments.length>i+3) - { - this.aImgs[i]=button.arguments[3+i]; - i++; - } -} - -//project info -function setRelStartPage(sPath) -{ - if(gsPPath.length==0) - { - gsPPath=_getFullPath(_getPath(document.location.href),_getPath(sPath)); - gsStartPage=_getFullPath(_getPath(document.location.href),sPath); - gsRelCurPagePath=_getRelativeFileName(gsStartPage,document.location.href); - } -} - -function getImage(oImage,sType) -{ - var sImg=""; - if(oImage&&oImage.aImgs&&(oImage.aImgs.length>0)) - { - sImg+="\""+sType+"\"0) - sImg+=" width="+oImage.nWidth; - if(oImage.nHeight>0) - sImg+=" height="+oImage.nHeight; - sImg+=" border=0>"; - } - return sImg; -} - -function addTocInfo(sTocPath) -{ - gaPaths[gaPaths.length]=sTocPath; -} - -function addAvenueInfo(sName,sPrev,sNext) -{ - gaAvenues[gaAvenues.length]=new avenueInfo(sName,sPrev,sNext); -} - -function addButton(sType,nStyle,sText,sHref,sOnClick,sOnMouseOver,sOnLoad,nWidth,nHeight,sImg1,sImg2,sImg3) -{ - var sButton=""; - var nBtn=gaButtons.length; - if(sType=="prev") - { - if(canGo(false)) - { - var sTitle="Previous Topic"; - goPrev=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3); - sButton=""; - if(nStyle==BTN_TEXT) - sButton+=goPrev.sText; - else - sButton+=getImage(goPrev,sTitle); - sButton+=""; - } - } - else if(sType=="next") - { - if(canGo(true)) - { - var sTitle="Next Topic"; - goNext=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3); - sButton=""; - if(nStyle==BTN_TEXT) - sButton+=goNext.sText; - else - sButton+=getImage(goNext,sTitle); - sButton+=""; - } - } - else if(sType=="show") - { - if(isTopicOnly()&&(!gbOpera6||gbOpera7)) - { - var sTitle="Show Navigation Component"; - goShow=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3); - sButton=""; - if(nStyle==BTN_TEXT) - sButton+=goShow.sText; - else - sButton+=getImage(goShow,sTitle); - sButton+=""; - } - } - else if(sType=="hide") - { - if(!isTopicOnly()&&!gbOpera6) - { - var sTitle="Hide Navigation Component"; - goHide=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3); - sButton=""; - if(nStyle==BTN_TEXT) - sButton+=goHide.sText; - else - sButton+=getImage(goHide,sTitle); - sButton+=""; - } - } - else if(sType=="shownav") - { - if(isShowHideEnable()) - { - var sTitle="Show Navigation Component"; - goShowNav=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3); - sButton=""; - if(nStyle==BTN_TEXT) - sButton+=goShowNav.sText; - else - sButton+=getImage(goShowNav,sTitle); - sButton+=""; - } - } - else if(sType=="hidenav") - { - if(isShowHideEnable()) - { - var sTitle="Hide Navigation Component"; - goHideNav=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3); - sButton=""; - if(nStyle==BTN_TEXT) - sButton+=goHideNav.sText; - else - sButton+=getImage(goHideNav,sTitle); - sButton+=""; - } - } - else if(sType=="synctoc") - { - if(gaPaths.length>0) - { - var sTitle="Sync TOC"; - goSync=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3); - sButton=""; - if(nStyle==BTN_TEXT) - sButton+=goSync.sText; - else - sButton+=getImage(goSync,sTitle); - sButton+=""; - } - } - else if(sType=="websearch") - { - if(gsSearchFormHref.length>0) - { - var sTitle="WebSearch"; - goWebSearch=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3); - sButton=""; - if(nStyle==BTN_TEXT) - sButton+=goWebSearch.sText; - else - sButton+=getImage(goWebSearch,sTitle); - sButton+=""; - } - } - else if(sType=="searchform") - { - gaButtons[nBtn]="NeedSearchForm"; - gaTypes[nBtn]=sType; - } - if(sButton.length!=0) - { - if(nStyle==BTN_TEXT) - sButton+=" "; - gaButtons[nBtn]=""+sButton+""; - gaTypes[nBtn]=sType; - } -} - -function isSyncEnabled() -{ - if(!gbCheckSync) - { - var oMsg=new whMessage(WH_MSG_ISSYNCSSUPPORT,this,1,null); - if(SendMessage(oMsg)) - { - gbSyncEnabled=oMsg.oParam; - } - gbCheckSync=true; - } - return gbSyncEnabled; -} - -function isInPopup() -{ - return (window.name.indexOf("BSSCPopup")!=-1); -} - -function getIntopicBar(sAlign) -{ - var sHTML=""; - if(gaButtons.length>0) - { - sHTML+="
    "; - - sHTML+=""; - for(var i=0;i0) - { - var sHTML=""; - if(nAligns!=0) - { - sHTML+="
    " - if(nAligns&1) - sHTML+=""; - if(nAligns&2) - sHTML+=""; - if(nAligns&4) - sHTML+=""; - sHTML+="
    "+getIntopicBar("left")+""+getIntopicBar("center")+""+getIntopicBar("right")+"
    "; - document.write(sHTML); - } - } -} - -function sendAveInfoOut() -{ - if(!isInPopup()) - setTimeout("sendAveInfo();",100); -} - -function sendAveInfo() -{ - var oMsg=new whMessage(WH_MSG_AVENUEINFO,this,1,gaAvenues); - SendMessage(oMsg); -} - - -function onNext() -{ - var oMsg=new whMessage(WH_MSG_NEXT,this,1,null); - SendMessage(oMsg); -} - -function onPrev() -{ - var oMsg=new whMessage(WH_MSG_PREV,this,1,null); - SendMessage(oMsg); -} - -function createSyncInfo() -{ - var oParam=new Object(); - if(gsPPath.length==0) - gsPPath=_getPath(document.location.href); - oParam.sPPath=gsPPath; - oParam.sTPath=document.location.href; - oParam.aPaths=gaPaths; - return oParam; -} - -function syncWithShow() -{ - if(isTopicOnly()) - show(); - else - { - sync(); - showTocPane(); - } -} - -function showTocPane() -{ - var oMsg=new whMessage(WH_MSG_SHOWTOC,this,1,null); - SendMessage(oMsg); -} - -function sendSyncInfo() -{ - if(!isInPopup()) - { - var oParam=null; - if(gaPaths.length>0) - { - oParam=createSyncInfo(); - } - var oMsg=new whMessage(WH_MSG_SYNCINFO,this,1,oParam); - SendMessage(oMsg); - } -} - -function sendInvalidSyncInfo() -{ - if(!isInPopup()) - { - var oMsg=new whMessage(WH_MSG_SYNCINFO,this,1,null); - SendMessage(oMsg); - } -} - -function enableWebSearch(bEnable) -{ - if(!isInPopup()) - { - var oMsg=new whMessage(WH_MSG_ENABLEWEBSEARCH,this,1,bEnable); - SendMessage(oMsg); - } -} - -function autoSync(nSync) -{ - if(nSync==0) return; - if(isInPopup()) return; - if(isOutMostTopic()) - sync(); -} - -function isOutMostTopic() -{ - if(gnOutmostTopic==-1) - { - var oMessage=new whMessage(WH_MSG_ISINFRAMESET,this,1,null); - if(SendMessage(oMessage)) - gnOutmostTopic=0; - else - gnOutmostTopic=1; - } - return (gnOutmostTopic==1); -} - -function sync() -{ - if(gaPaths.length>0) - { - var oParam=createSyncInfo(); - var oMessage=new whMessage(WH_MSG_SYNCTOC,this,1,oParam); - SendMessage(oMessage); - } -} - - -function avenueInfo(sName,sPrev,sNext) -{ - this.sName=sName; - this.sPrev=sPrev; - this.sNext=sNext; -} - -function getCurrentAvenue() -{ - var oParam=new Object(); - oParam.sAvenue=null; - var oMessage=new whMessage(WH_MSG_GETCURRENTAVENUE,this,1,oParam); - SendMessage(oMessage); - return oParam.sAvenue; -} - -function unRegisterListener() -{ - sendInvalidSyncInfo(); - enableWebSearch(false); - if(whtopic_foldUnload) - whtopic_foldUnload(); -} - -function onSendMessage(oMsg) -{ - var nMsgId=oMsg.nMessageId; - if(nMsgId==WH_MSG_GETAVIAVENUES) - { - oMsg.oParam.aAvenues=gaAvenues; - return false; - } - else if(nMsgId==WH_MSG_GETTOCPATHS) - { - if(isOutMostTopic()) - { - oMsg.oParam.oTocInfo=createSyncInfo(); - return false; - } - else - return true; - } - else if(nMsgId==WH_MSG_NEXT) - { - goAvenue(true); - } - else if(nMsgId==WH_MSG_PREV) - { - goAvenue(false); - } - else if(nMsgId==WH_MSG_WEBSEARCH) - { - websearch(); - } - return true; -} - -function goAvenue(bNext) -{ - var sTopic=null; - var sAvenue=getCurrentAvenue(); - var nAvenue=-1; - if(sAvenue!=null&&sAvenue!="") - { - for(var i=0;i0&&bNext) - { - sTopic=gaAvenues[i].sNext; - break; - } - else if(gaAvenues[i].sPrev!=null&&gaAvenues[i].sPrev.length>0&&!bNext) - { - sTopic=gaAvenues[i].sPrev; - break; - } - } - } - - if(sTopic!=null&&sTopic!="") - { - if(gsPPath!=null&&gsPPath!="") - { - sFullTopicPath=_getFullPath(gsPPath,sTopic); - document.location=sFullTopicPath; - } - } -} - -function canGo(bNext) -{ - for(var i=0;i0&&bNext)|| - (gaAvenues[i].sPrev!=null&&gaAvenues[i].sPrev.length>0&&!bNext)) - return true; - } - return false; -} - -function show() -{ - if(gsStartPage!="") - window.location=gsStartPage+"#"+gsRelCurPagePath; -} - -function hide() -{ - if(goFrame!=null) - { - goFrame.location=window.location; - } -} - -function isTopicOnly() -{ - if(gnTopicOnly==-1) - { - var oParam=new Object(); - oParam.oFrame=null; - var oMsg=new whMessage(WH_MSG_GETSTARTFRAME,this,1,oParam); - if(SendMessage(oMsg)) - { - goFrame=oParam.oFrame; - gnTopicOnly=0; - } - else - gnTopicOnly=1; - } - if(gnTopicOnly==1) - return true; - else - return false; -} - -function websearch() -{ - if(gbNav4) - { - if(document.ehelpform) - document.ehelpform.submit(); - } - else - { - if(window.ehelpform) - window.ehelpform.submit(); - } -} - -function addSearchFormHref(sHref) -{ - gsSearchFormHref=sHref; - enableWebSearch(true); -} - -function searchB(nForm) -{ - var sValue=eval("document.searchForm"+nForm+".searchString.value"); - var oMsg=new whMessage(WH_MSG_SEARCHTHIS,this,1,sValue); - SendMessage(oMsg); -} - -function getSearchFormHTML() -{ - var sHTML=""; - gnForm++; - var sFormName="searchForm"+gnForm; - var sButton="
    " - sButton+=""; - if(""=="text") - { - sButton+=""; - } - else if(""=="image") - { - sButton+="" - sButton+=""; - } - sButton+="
    "; - sHTML=""+sButton+""; - return sHTML; -} - -function showHidePane(bShow) -{ - var oMsg=null; - if(bShow) - oMsg=new whMessage(WH_MSG_SHOWPANE,this,1,null); - else - oMsg=new whMessage(WH_MSG_HIDEPANE,this,1,null); - SendMessage(oMsg); -} - -function isShowHideEnable() -{ - if(gbIE4) - return true; - else - return false; -} - - -function PickupDialog_Invoke() -{ - if(!gbIE4||gbMac) - { - if(typeof(_PopupMenu_Invoke)=="function") - return _PopupMenu_Invoke(PickupDialog_Invoke.arguments); - } - else - { - if(PickupDialog_Invoke.arguments.length>2) - { - var sPickup="whskin_pickup.htm"; - var sPickupPath=gsPPath+sPickup; - if(gbIE4) - { - var sFrame=PickupDialog_Invoke.arguments[1]; - var aTopics=new Array(); - for(var i=2;i1) - { - var nWidth=300; - var nHeight=180; - var nScreenWidth=screen.width; - var nScreenHeight=screen.height; - var nLeft=(nScreenWidth-nWidth)/2; - var nTop=(nScreenHeight-nHeight)/2; - if(gbIE4) - { - var vRet=window.showModalDialog(sPickupPath,aTopics,"dialogHeight:"+nHeight+"px;dialogWidth:"+nWidth+"px;resizable:yes;status:no;scroll:no;help:no;center:yes;"); - if(vRet) - { - var sURL=vRet.m_url; - if(sFrame) - window.open(sURL,sFrame); - else - window.open(sURL,"_self"); - } - } - } - else if(aTopics.length==1) - { - var sURL=aTopics[0].m_sURL - if(sFrame) - window.open(sURL,sFrame); - else - window.open(sURL,"_self"); - } - } - } - } -} - -if(window.gbWhUtil&&window.gbWhMsg&&window.gbWhVer&&window.gbWhProxy) -{ - RegisterListener("bsscright",WH_MSG_GETAVIAVENUES); - RegisterListener("bsscright",WH_MSG_GETTOCPATHS); - RegisterListener("bsscright",WH_MSG_NEXT); - RegisterListener("bsscright",WH_MSG_PREV); - RegisterListener("bsscright",WH_MSG_WEBSEARCH); - if(gbMac&&gbIE4) - { - if(typeof(window.onunload)!="unknown") - if(window.onunload.toString!=unRegisterListener.toString) - whtopic_foldUnload=window.onunload; - } - else - { - if(window.onunload) - if(window.onunload.toString!=unRegisterListener.toString) - whtopic_foldUnload=window.onunload; - } - window.onunload=unRegisterListener; - setButtonFont("show","","10pt","","","",""); - - gbWhTopic=true; -} -else - document.location.reload(); \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whutils.js b/doc/salome/gui/GEOM/whutils.js deleted file mode 100755 index 85fae7e05..000000000 --- a/doc/salome/gui/GEOM/whutils.js +++ /dev/null @@ -1,527 +0,0 @@ -// WebHelp 5.10.004 -var gsFileName=""; -var gsDivName=""; -var xmlDoc=null; -var sdocPath=null; -var gsInsertBeforeEndHTML=""; -var sReplaceStringsSrc=new Array(); -var gsDivName="dataDiv"; -var gnLoadDivNum=0; -sReplaceStringsSrc[0]="&"; -sReplaceStringsSrc[1]=">"; -sReplaceStringsSrc[2]="<"; -sReplaceStringsSrc[3]="""; -sReplaceStringsSrc[4]=String.fromCharCode(8364); -sReplaceStringsSrc[5]=" "; - -var sReplaceStringsDst=new Array(); -sReplaceStringsDst[0]="&"; -sReplaceStringsDst[1]=">"; -sReplaceStringsDst[2]="<"; -sReplaceStringsDst[3]="\""; -sReplaceStringsDst[4]=String.fromCharCode(128); -sReplaceStringsDst[5]=" "; -var goHighLighted=null; - -function _getRelativePath(strParentPath,strCurrentPath) -{ - if(_isAbsPath(strCurrentPath)) return _getPath(strCurrentPath); - strParentPath=_replaceSlash(strParentPath); - strParentPath=_getPath(strParentPath); - strCurrentPath=_replaceSlash(strCurrentPath); - strCurrentPath=_getPath(strCurrentPath); - for(var i=0;i0) - { - var nPosx=sPath.indexOf("/",nPos+2); - if(nPosx>0) - return sPath.substring(0,nPosx); - else - return sPath; - } - return sPath; -} - -function _getFullPath(sPath,sRelPath) -{ - if(_isAbsPath(sRelPath)) - return sRelPath; - else if(_isAbsPathToHost(sRelPath)) - return _getHost(sPath)+sRelPath; - else - { - var sFullPath=sPath; - var nPathPos=0; - while(nPathPos!=-1) - { - var nPathPos=sRelPath.indexOf("../"); - if(nPathPos!=-1) - { - sRelPath=sRelPath.substring(nPathPos+3); - sFullPath=sFullPath.substring(0,sFullPath.length-1); - var nPos2=sFullPath.lastIndexOf("/"); - if(nPos2!=-1) - sFullPath=sFullPath.substring(0,nPos2+1); - else - break; - } - } - sFullPath+=sRelPath; - return sFullPath; - } -} - -function _isAbsPath(strPath) -{ - var strUpper=strPath.toUpperCase(); - return (strUpper.indexOf(":")!=-1||strUpper.indexOf("\\\\")==0); -} - -function _replaceSlash(strURL) -{ - var re=new RegExp("\\\\","g"); - var strReplacedURL=strURL.replace(re,"/"); - return strReplacedURL; -} - -function _getPath(strURL) -{ - pathpos=strURL.lastIndexOf("/"); - if(pathpos>0) - return strURL.substring(0,pathpos+1); - else - return ""; -} - -function removeItemFromArray(oArray,i) -{ - if(oArray.length&&i>=0&&i=0&&i<=oArray.length) - { - var len=oArray.length; - for(var s=len;s>i;s--) - oArray[s]=oArray[s-1]; - oArray[i]=obj; - } -} - -function loadData(sFileName) -{ - var i=gnLoadDivNum; - var sName=gsDivName+gnLoadDivNum++; - loadData_2(sFileName,sName); -} - -function loadData_2(sFileName,sDivName) -{ - if(!getElement(sDivName)) - { - if(!insertDataDiv(sDivName)) - { - gsFileName=sFileName; - gsDivName=sDivName; - return; - } - } - var sHTML=""; - if(gbMac) - sHTML+=""; - else - sHTML+=""; - - var oDivCon=getElement(sDivName); - if(oDivCon) - { - if(gbNav6) - { - if(oDivCon.getElementsByTagName&&oDivCon.getElementsByTagName("iFrame").length>0) - { - oDivCon.getElementsByTagName("iFrame")[0].src=sFileName; - } - else - oDivCon.innerHTML=sHTML; - } - else - oDivCon.innerHTML=sHTML; - } -} - -function loadDataXML(sFileName) -{ - var sCurrentDocPath=_getPath(document.location.href); - sdocPath=_getFullPath(sCurrentDocPath,sFileName); - if(gbIE5) - { - xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); - xmlDoc.async=true; - xmlDoc.onreadystatechange=checkState; - if(document.body!=null) - xmlDoc.load(sdocPath); - } - else if(gbNav6) - { - xmlDoc=document.implementation.createDocument("","",null); - xmlDoc.addEventListener("load",initializeData,false); - xmlDoc.load(sdocPath,"text/xml"); - } -} - -function initializeData() -{ - if(xmlDoc!=null) - putDataXML(xmlDoc,sdocPath); -} - -function checkState() -{ - if(xmlDoc!=null) - { - var state=xmlDoc.readyState; - if(state==4) - { - var err=xmlDoc.parseError; - if(err.errorCode==0) - putDataXML(xmlDoc,sdocPath); - else - onLoadXMLError(); - } - } -} - -function insertDataDiv(sName) -{ - var sHTML=""; - if(gbMac) - sHTML+="
    "; - else - sHTML+="
    "; - if((gbIE5||gbNav6)&&document.body) - document.body.insertAdjacentHTML("beforeEnd",sHTML); - else - { - gsInsertBeforeEndHTML=sHTML; - setTimeout("insertWhenBodyReady();",100); - return false; - } - return true; -} - -function insertWhenBodyReady() -{ - if(gsInsertBeforeEndHTML=="") return; - if(document.body) - { - document.body.insertAdjacentHTML("beforeEnd",gsInsertBeforeEndHTML); - gsInsertBeforeEndHTML=""; - loadData_2(gsFileName,gsDivName); - } - else - { - setTimeout("insertWhenBodyReady();",100); - } -} - -function window_BUnload() -{ - for(var i=0;i='0'&&sBStr.charAt(i)<='9') - { - sNum+=sBStr.charAt(i++); - } - if(sNum!=""){ - var nNum=parseInt(sNum,16); - sText+=String.fromCharCode(nNum); - sBStr=sBStr.substring(i); - } - nPos=sBStr.indexOf('%'); - } - sText+=sBStr; - return sText; -} - -function excapeSingleQuotandSlash(str) -{ - if(str==null) return null; - var nPos=0; - var sRes=""; - var nPosNew=str.indexOf("\\",nPos); - while(nPosNew!=-1){ - sRes+=str.substring(nPos,nPosNew+1)+"\\"; - nPos=nPosNew+1; - nPosNew=str.indexOf("\\",nPos); - } - if(nPos=4) - { - if(navigator.appName=="Netscape") - { - gbNav4=true; - if(gnVerMajor>=5) - gbNav6=true; - } - gbIE4=(navigator.appName.indexOf("Microsoft")!=-1); - } - if(gbNav6) - { - var nPos=gAgent.indexOf("gecko"); - if(nPos!=-1) - { - var nPos2=gAgent.indexOf("/", nPos); - if(nPos2!=-1) - { - var nVersion=parseFloat(gAgent.substring(nPos2+1)); - if(nVersion>=20010726) - { - gbNav61=true; - if (nVersion>=20020823) - gbNav7=true; - } - } - } - }else if(gbIE4) - { - var nPos=gAgent.indexOf("msie"); - if(nPos!=-1) - { - var nVersion=parseFloat(gAgent.substring(nPos+5)); - if(nVersion>=5) - { - gbIE5=true; - if(nVersion>=5.5) - gbIE55=true; - } - } - } -} -else if (gbOpera) -{ - var nPos = gAgent.indexOf("opera"); - if(nPos!=-1) - { - var nVersion=parseFloat(gAgent.substring(nPos+6)); - if(nVersion>=6) - { - gbOpera6=true; - if(nVersion>=7) - gbOpera7=true; - } - } -} -else if (gbKonqueror) -{ - var nPos = gAgent.indexOf("konqueror"); - if(nPos!=-1) - { - var nVersion = parseFloat(gAgent.substring(nPos+10)); - if (nVersion >= 3) - { - gbKonqueror3=true; - } - } -} - -var gbWhVer=true; \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whxdata/whftdata0.xml b/doc/salome/gui/GEOM/whxdata/whftdata0.xml deleted file mode 100755 index 9aad4e889..000000000 --- a/doc/salome/gui/GEOM/whxdata/whftdata0.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/doc/salome/gui/GEOM/whxdata/whfts.xml b/doc/salome/gui/GEOM/whxdata/whfts.xml deleted file mode 100755 index e57bfb026..000000000 --- a/doc/salome/gui/GEOM/whxdata/whfts.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/doc/salome/gui/GEOM/whxdata/whfwdata0.xml b/doc/salome/gui/GEOM/whxdata/whfwdata0.xml deleted file mode 100755 index 6706ec0f9..000000000 --- a/doc/salome/gui/GEOM/whxdata/whfwdata0.xml +++ /dev/null @@ -1,768 +0,0 @@ - - - 1,12, - 1,15,3,4,7,5,11,12,13,10,9,16, - 9, - 3,10, - 3,11,12,13,10, - 14,1,15,3,4,5,11,12,13,10,9, - 3,4,7,5,12,10, - 3,11,12,13,10, - 13, - 15,3,4,11,12,13,10, - 3,4,6,7,5,11,12,10,9, - 3,10, - 13, - 14,15,4,12,10, - 15,7,12, - 14,12,9, - 12, - 12, - 15,12, - 15, - 15, - 15, - 13, - 3,12, - 12, - 12, - 12,16, - 12, - 16, - 12, - 7,5, - 10, - 10, - 14,15,8,12,13,16, - 7,13,10, - 15,7,12,13, - 4, - 12, - 3,12, - 10, - 13, - 12, - 12, - 15,3, - 10, - 14,1,15,3,4,7,5,11,12,13,10,9,16, - 7, - 6, - 6, - 14,3, - 14,15,6,12,16, - 3, - 3,7,11,13,9, - 3, - 16, - 7,11,12,13, - 7, - 7, - 2,15,3,5,10,9, - 9, - 15,12, - 14, - 3,12, - 14,0,10,9, - 2,4,5,9, - 6, - 9, - 12, - 12, - 9, - 14,1,15,3,4,8,7,5,11,12,13,10,9,16, - 10, - 2,8, - 3,6,8, - 12, - 12, - 14,0,2,5,10, - 3,12, - 14, - 2, - 3, - 14,3,12, - 15,3,11,13,9, - 13, - 11, - 10, - 1, - 12,10,9, - 12,13, - 9, - 9, - 6,8,10, - 3, - 1,6,8, - 5,12, - 12, - 12, - 12, - 12, - 1, - 14,1,15,3,4,6,8,7,5,11,12,13,10,9,16, - 4,12, - 2,4,7,10, - 15,3,13, - 14,9, - 14,4,5,12,13,10,9, - 7, - 10,9, - 11, - 9, - 9, - 8, - 12, - 5,10,9, - 9, - 12,9, - 9, - 14, - 14,5,11, - 2,4, - 3,11,12,13,10, - 15,8,12,10, - 8, - 12, - 12, - 12, - 12, - 12, - 12, - 15,3,11,13,9, - 13, - 11, - 12, - 3,7,5,11,12,10, - 15, - 14,15,3,6,7,5,11,12,13,10,9,16, - 16, - 2,7,12,10,16, - 15,6, - 15,3,7,12, - 12, - 12, - 12, - 4,12,10, - 11, - 12, - 10, - 10, - 9, - 15,16, - 15,3,11,12,13,10, - 12,9, - 7,12, - 10, - 9, - 15,7,12, - 10, - 10, - 10, - 8, - 14,1,15,3,4,6,7,5,11,12,13,10,9,16, - 12, - 2, - 15, - 12, - 12, - 11, - 14,1,15,3,4,8,7,5,11,12,13,10,9,16, - 6, - 1,6,11,9, - 7,11,10,9, - 13, - 13, - 13, - 15,3,7,11,13,10, - 10, - 10, - 10, - 10, - 10, - 10, - 10, - 1,3,6,8,12,9, - 6, - 6, - 12,13,9, - 12, - 12, - 12,13, - 1,15, - 12, - 15,13, - 15,13, - 13, - 6, - 14, - 14, - 14, - 14, - 16, - 14,3,7,5,12,10,9, - 12, - 16, - 9, - 9, - 14, - 15,3,4,6,7,5,11,12,9, - 14, - 3, - 12, - 9, - 15,3,12,13, - 3,8, - 9, - 14,15,3,7,5,11,16, - 15, - 6, - 6, - 6, - 12,9, - 5,12, - 14,1,15,3,4,7,5,11,12,13,10,16, - 12, - 15,16, - 0,5,10, - 2,8, - 8, - 9, - 10, - 7, - 7, - 14, - 14, - 14, - 14, - 14, - 14, - 14,3,7,5,12,13,10,9, - 10, - 10, - 9, - 9, - 13, - 12, - 3, - 3,8,7, - 8, - 7,12, - 10, - 3,4,5,11,13,10, - 12, - 12, - 12, - 9, - 4,6,5,9, - 2,8, - 8, - 14, - 12, - 2,5, - 14, - 15,16, - 4, - 12, - 14, - 7, - 2,7, - 1,2,3,4,6,8,7,5,11,13,10,9, - 14,15,3,4,7,5,11,12,13,10,9,16, - 14, - 1,2,3,4,6,8,7,5,11,12,13,10,9,16, - 12, - 14,15,3,4,8,7,5,11,12,13,10,9,16, - 4,5,9, - 12, - 12, - 16, - 5, - 1, - 3, - 3,5,12,13,10,9, - 12,10,9, - 6, - 9, - 10,16, - 10, - 3, - 16, - 5,12, - 7,11, - 14,10, - 14, - 6, - 12,9, - 12, - 6, - 9, - 9, - 9, - 9, - 9, - 9, - 9, - 9, - 9, - 1,6,5,12,10,16, - 5,12,10,9,16, - 2,8, - 13, - 2,6,8,9, - 8, - 13, - 12, - 4,6, - 10, - 9, - 9, - 13, - 9, - 9, - 12, - 10, - 10, - 10, - 12, - 10, - 14, - 12, - 10, - 10, - 14,2, - 12, - 9, - 12, - 12, - 1, - 1, - 7, - 12, - 9, - 9, - 9, - 14, - 13, - 3,5, - 3, - 3, - 15,12,9, - 12, - 10, - 15,3,10, - 15,3,7,5,12,10,16, - 10, - 12, - 5,12, - 10, - 10, - 10, - 3,5,12,10, - 10, - 10, - 12, - 15,3,13, - 3, - 3,8,13, - 15, - 15,12, - 14,0,15,3,4,6,7,5,11,12,13,10,9,16, - 16, - 3,11, - 13,10,16, - 3, - 3, - 10, - 4, - 11, - 9, - 10, - 10, - 3, - 5, - 11, - 11, - 5, - 3, - 5, - 7, - 10, - 12, - 14, - 14, - 3, - 3, - 3, - 13, - 13, - 13, - 10, - 10, - 13, - 13, - 13, - 10, - 7, - 3, - 3, - 13, - 7, - 14, - 14, - 14, - 7, - 13, - 13, - 12, - 5, - 15, - 5, - 11, - 11, - 13, - 3, - 3, - 5, - 3, - 9, - 10, - 9, - 7,12,10, - 7, - 7,12,10,9, - 12,10, - 10, - 12, - 12, - 15,13, - 9, - 9, - 14, - 14,0,1,15,3,4,6,8,7,5,11,12,13,10,9,16, - 12, - 14,10, - 10, - 5, - 3, - 7,10,9, - 7, - 9, - 7,10,9, - 10, - 10, - 3,11, - 13, - 1,12, - 2,10, - 3,12,13, - 12,13, - 13, - 2,6, - 9, - 13, - 16, - 0,13,10, - 10, - 12,13,9, - 14,3,4,8,7,5,11,12,13,10, - 7, - 12, - 13,10, - 13, - 13, - 10, - 10, - 15,6,12,9, - 12, - 13, - 12, - 14,15,3,7,5,11,12,16, - 3, - 12, - 3,7,13, - 14, - 1,7,12,13,10, - 10, - 10, - 1,2,3,4,6,8,7,5,11,12,13,10,9,16, - 1,6,12,16, - 12, - 16, - 13, - 3,8, - 15,3,4,6,12,13,10, - 12, - 12, - 14,2,4,6,7,12,13,10,16, - 12, - 11, - 2, - 0, - 12,9, - 14,3, - 3,11, - 12,13, - 10, - 15,3, - 3, - 15,3, - 3,5,12, - 1,15,3,7,12, - 12, - 4,11, - 10, - 3, - 7, - 7, - 13, - 10,16, - 15, - 7, - 15,3,13,10, - 15,3,5, - 16, - 10, - 14,15,3,11,12,13,9, - 3, - 3, - 3, - 9, - 3, - 1,6, - 3,12, - 12, - 6,12,10,9, - 12, - 15, - 16, - 3, - 3, - 15, - 2,11, - 9, - 7, - 12, - 12,10, - 12, - 16, - 10, - 10, - 1,9, - 10, - 9, - 14,3,9, - 12, - 15,3,11,10, - 3,11, - 11, - 11, - 3,11, - 3,11, - 2,12, - 12, - 6, - 10, - 3, - 3, - 15, - 12,13,16, - 16, - 10, - 2,12, - 13, - 3, - 5, - 6,8,12, - 12, - 12, - 15,12, - 12, - 14,15,3,4,7,5,11,12,13,10,9,16, - 12, - 5,12, - 5,12,10,9,16, - 13, - 7,12, - 1,6, - 7,13, - 13, - 3,5,12,13,10,16, - 2,16, - 15,12, - 12, - 9, - 13, - 8,9, - 8, - 4,11,13,10, - 4,10, - 15,12, - 0,1,15,3,4,6,8,7,5,11,12,10,9,16, - 15,3,10, - 10, - 3,7, - 1,3,12,13,10, - 1, - 1, - 1, - 12, - 6, - 1, - 1,2,4,6,8,7,5,12,13,10,9,16, - 4,9, - 4,9, - 12, - 10,16, - 12, - 5,12,13, - 14,7,5,13, - 1, - 12,9, - 3, - 3, - 13, - 14, - 3,12,10, - 15, - 3,12, - 14,7,5,11,13,10, - 3, - 3,9, - 3,12,10, - 14, - 12,13, - 11, - 3, - 12, - 12, - 12, - 12, - 12, - 14, - 8, - 15,3,13, - 2,8,13, - 13, - 13, - 15,8, - 12, - 6, - 5,12,16, - 0,5,12,9, - 5,10,16, - 5, - 16, - 12, - 12, - 12, - 12, - 12,13,9, - 12, - 12, - 13, - 11,13, - 3,13, - 15, - 15,10, - 14, - 13, - 12, - 13, - 15, - 12, - 13, - 12, - 13, - 12, - 16, - 7, - 7, - 7,12,9, - 12, - 12, - 9, - 11, - 4,13,10, - 0,2,13,10, - 13, - 13,10, - 1, - 3, - 3, - 12,10,9, - 14,1,15,3,4,6,8,7,5,11,12,13,10,9,16, - 9, - 14,4,11,12,13,10,9, - 15,4,5,11,12,10,9,16, - 5, - 12, - 1,6,11,10, - 3, - 14,2,15,3,4,6,7,5,12,13,10,9,16, - 16, - 14, - 14, - 14, - 14, - 12, - 9, - 9, - 1,15,3,7,11,12,13,10,9, - 12, - 15,3,7,11,13, - 3,7,5,11,12,13,9, - 5, - 5, - 9, - 9, - 14,3,5,11,12,13, - 14,15,13,16, - 1,3,6,12,9,16, - 6, - 6, - 1,6, - 9, - 6, - 15, - 5, - 10, - 10, - 10, - 9, - 9, - 12, - 5,9, - 2, - 3,8,12,13,10, - 14,7,5,12, - 1, - 8, - 1,12, - 15,3,6,12,16, - 15,3,9, - 11, - 11, - 3, - 3, - 3, - 9, - 9, - 15, - 3, - 15,3,9, - 11, - 11, - 3, - 3, - 3, - 9, - 9, - 8,12,9,16, - 3,10,9, - 11, - 11, - 9, - 9, - - diff --git a/doc/salome/gui/GEOM/whxdata/whfwdata1.xml b/doc/salome/gui/GEOM/whxdata/whfwdata1.xml deleted file mode 100755 index d2e772dad..000000000 --- a/doc/salome/gui/GEOM/whxdata/whfwdata1.xml +++ /dev/null @@ -1,273 +0,0 @@ - - - 14,15,3,4,8,7,5,11,12,13,10,9,16, - 4,5,9, - 12, - 16, - 5, - 1, - 3, - 3,5,12,13,10, - 12,10, - 6, - 9, - 16, - 10, - 3, - 5,12, - 7,11, - 14,10, - 14, - 6, - 12, - 12, - 6, - 9, - 9, - 9, - 9, - 9, - 9, - 9, - 9, - 9, - 1,6,5,12,10,16, - 5,12,10,9, - 2,8, - 13, - 2,6,8,9, - 8, - 13, - 12, - 4,6, - 10, - 9, - 13, - 9, - 9, - 12, - 10, - 10, - 10, - 12, - 10, - 14, - 12, - 10, - 10, - 14,2, - 12, - 12, - 12, - 1, - 1, - 7, - 12, - 9, - 9, - 9, - 14, - 13, - 3,5, - 3, - 3, - 15,12,9, - 12, - 10, - 15,3,10, - 15,3,7,5,12,10,16, - 10, - 12, - 5,12, - 10, - 10, - 10, - 3,5,12,10, - 10, - 10, - 12, - 15,3,13, - 3, - 3,8,13, - 15, - 15,12, - 0,3,4,6,7,5,11,12,10,9,16, - 16, - 3,11, - 13,10, - 3, - 3, - 10, - 4, - 11, - 9, - 10, - 10, - 3, - 5, - 11, - 11, - 5, - 3, - 5, - 7, - 10, - 12, - 14, - 14, - 3, - 3, - 3, - 13, - 13, - 13, - 10, - 10, - 13, - 13, - 13, - 10, - 7, - 3, - 3, - 13, - 7, - 14, - 14, - 14, - 7, - 13, - 13, - 12, - 5, - 15, - 5, - 11, - 11, - 13, - 3, - 3, - 5, - 3, - 9, - 10, - 9, - 7,12,10, - 7, - 7,12,10,9, - 12,10, - 10, - 12, - 12, - 15,13, - 9, - 9, - 14, - 0,1,3,4,6,8,7,5,11,12,10,9,16, - 12, - 14,10, - 10, - 5, - 3, - 7,10,9, - 7, - 9, - 7,10,9, - 10, - 10, - 3,11, - 13, - 1,12, - 2,10, - 3,12,13, - 12,13, - 13, - 2,6, - 9, - 13, - 0,13,10, - 12,13, - 14,3,4,8,7,5,11,12,13,10, - 7, - 12, - 13,10, - 13, - 13, - 10, - 10, - 15,6,12,9, - 12, - 13, - 12, - 15,3,7,5,11,12,16, - 3, - 12, - 3,7,13, - 14, - 1,7,12,13,10, - 10, - 10, - 1,2,3,4,6,8,7,5,11,12,13,10,9,16, - 1,6,12, - 12, - 13, - 3,8, - 15,3,4,6,12,13,10, - 12, - 12, - 14,2,4,6,7,12,13,10,16, - 12, - 11, - 2, - 0, - 12, - 14,3, - 3,11, - 12,13, - 10, - 15,3, - 3, - 15,3, - 3,5,12, - 1,15,3,7,12, - 12, - 4,11, - 10, - 3, - 7, - 7, - 13, - 10,16, - 15, - 7, - 15,3,13,10, - 15,3,5, - 10, - 14,15,3,11,12,13,9, - 3, - 3, - 3, - 9, - 3, - 1,6, - 3,12, - 12, - 6,12, - 12, - 15, - 3, - 3, - 15, - 2,11, - 7, - 12, - 12,10, - 12, - 1,9, - 10, - 9, - 14,3, - 12, - 15,3,11,10, - - diff --git a/doc/salome/gui/GEOM/whxdata/whfwdata2.xml b/doc/salome/gui/GEOM/whxdata/whfwdata2.xml deleted file mode 100755 index 055ba0c6d..000000000 --- a/doc/salome/gui/GEOM/whxdata/whfwdata2.xml +++ /dev/null @@ -1,208 +0,0 @@ - - - 3,11, - 11, - 11, - 3,11, - 3,11, - 2,12, - 12, - 6, - 10, - 3, - 3, - 15, - 12,13,16, - 16, - 10, - 2,12, - 13, - 3, - 5, - 6,8,12, - 12, - 12, - 15,12, - 12, - 14,15,3,4,7,5,11,12,13,10,9,16, - 12, - 5, - 5,10,9,16, - 13, - 7,12, - 1,6, - 7,13, - 13, - 3,5,12,13,10,16, - 2, - 15,12, - 12, - 13, - 8, - 8, - 4,11,13,10, - 4,10, - 15,12, - 0,1,15,3,4,6,8,7,5,11,12,10,9,16, - 15,3,10, - 10, - 3,7, - 1,3,12,13,10, - 1, - 1, - 1, - 12, - 6, - 1, - 1,2,4,6,8,7,5,12,13,10,9,16, - 4,9, - 4,9, - 12, - 10,16, - 5,13, - 14,7,5,13, - 1, - 12, - 3, - 3, - 13, - 14, - 3,12,10, - 15, - 3,12, - 14,7,5,11,13,10, - 3, - 3,9, - 3,12,10, - 14, - 12,13, - 11, - 3, - 12, - 12, - 12, - 12, - 12, - 14, - 8, - 15,3,13, - 14,2,8,13, - 13, - 13, - 15,8, - 12, - 6, - 5,12,16, - 0,5,12,9, - 5,10,16, - 5, - 16, - 12, - 12, - 12, - 12, - 12,13,9, - 12, - 12, - 13, - 11,13, - 3,13, - 14, - 15, - 15,10, - 14, - 13, - 12, - 13, - 15, - 12, - 13, - 12, - 13, - 12, - 7, - 7, - 7,12,9, - 12, - 12, - 9, - 11, - 4,13,10, - 0,2,13,10, - 13, - 13,10, - 1, - 3, - 3, - 12,10,9, - 14,1,15,3,4,6,8,7,5,11,12,13,10,9,16, - 9, - 14,4,11,12,13,10, - 15,4,5,11,12,10,9,16, - 5, - 12, - 1,6,11,10, - 3, - 14,2,15,3,4,6,7,5,12,13,10,9, - 14, - 14, - 14, - 14, - 12, - 9, - 9, - 1,15,3,7,11,12,13,10,9, - 12, - 15,3,7,11,13, - 3,7,5,11,12,13,9, - 5, - 5, - 9, - 9, - 14,3,5,11,12,13, - 1,3,6,12, - 6, - 6, - 1,6, - 9, - 6, - 15, - 5, - 10, - 10, - 10, - 9, - 12, - 5,9, - 2, - 3,8,12,13,10, - 14,7,5,12, - 1, - 1,12, - 15,3,6,12,16, - 15,3,9, - 11, - 11, - 3, - 3, - 3, - 9, - 9, - 15, - 3, - 15,3,9, - 11, - 11, - 3, - 3, - 3, - 9, - 9, - 8,12,9, - 3,10,9, - 11, - 11, - 9, - 9, - - diff --git a/doc/salome/gui/GEOM/whxdata/whgdata0.xml b/doc/salome/gui/GEOM/whxdata/whgdata0.xml deleted file mode 100755 index 0075ff8d5..000000000 --- a/doc/salome/gui/GEOM/whxdata/whgdata0.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/doc/salome/gui/GEOM/whxdata/whglo.xml b/doc/salome/gui/GEOM/whxdata/whglo.xml deleted file mode 100755 index 0f1cd68e5..000000000 --- a/doc/salome/gui/GEOM/whxdata/whglo.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/doc/salome/gui/GEOM/whxdata/whidx.xml b/doc/salome/gui/GEOM/whxdata/whidx.xml deleted file mode 100755 index ac66bb966..000000000 --- a/doc/salome/gui/GEOM/whxdata/whidx.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/doc/salome/gui/GEOM/whxdata/whtdata0.xml b/doc/salome/gui/GEOM/whxdata/whtdata0.xml deleted file mode 100755 index 64917af4a..000000000 --- a/doc/salome/gui/GEOM/whxdata/whtdata0.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/doc/salome/gui/GEOM/whxdata/whtoc.xml b/doc/salome/gui/GEOM/whxdata/whtoc.xml deleted file mode 100755 index a271ba7cc..000000000 --- a/doc/salome/gui/GEOM/whxdata/whtoc.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/doc/salome/gui/GEOM/working_with_groups.htm b/doc/salome/gui/GEOM/working_with_groups.htm deleted file mode 100755 index 09f15c3e1..000000000 --- a/doc/salome/gui/GEOM/working_with_groups.htm +++ /dev/null @@ -1,203 +0,0 @@ - - - - - -Working with groups - - - - - - - - - - - -

    Working with groups

    - -

    The Salome platform offers - such a useful functionality as creation and editing groups of subshapes - of a geometrical object which makes handling subshapes much easier. However - the functionality is available in the OCC viewer only. If other viewer - is used in your project by default, you can toggle the OCC viewer via - Preferences / Viewer background / OCC viewer.  

    - -

     

    - -

    To perform operations with groups:

    - -

     

    - -

    In the main menu select New - entity > Group.

    - -

     

    - -

    Create - a group

    - -

     

    - -

    Description: - Creates a group of subshapes of a geometrical object.

    - -

     

    - -

    Result: GEOM_Object.

    - -

     

    - -

    TUI Command: - geompy.CreateGroup(MainShape, ShapeType), - where MainShape is a shape for which the group is created, ShapeType is - a type of shapes in the created group.

    - -

     

    - -

    Arguments: - 1 Shape + Type of subshape.

    - -

     

    - -

    Dialog Box:

    - -

     

    - -

    - -

     

    - -

    Example:

    - -

     

    - -

    - -

     

    - -

     

    - -

     

    - -

    Edit - a group

    - -

     

    - -

    Description: - Allows to edit the existing group.

    - -

     

    - -

    Result: GEOM_Object.

    - -

     

    - -

    TUI Command: -

    - -
      - -
    • geompy.AddObject(Group, - SubShapeID), where Group is a group to which a sub shape has to - be added, SubShapeID is an ID of the sub shape to be added to the group

    • - -
    • geompy.RemoveObject(Group, - SubShapeID), where Group is a group from which a sub shape has - to be removed, SubShapeID is an ID of the sub shape to be removed from - the group

    • - -
    • geompy.GetObjectIDs(Group), - where Group is a group for which its object IDÂ’s are returned.

    • -
    - -

    Returns: - List of IDs.

    - -

     

    - -

    Arguments: - 1 Shape + its subshapes.

    - -

     

    - -

    Dialog Box:

    - -

     

    - -

    - - - - diff --git a/doc/salome/gui/Makefile.in b/doc/salome/gui/Makefile.in deleted file mode 100644 index a44228d6c..000000000 --- a/doc/salome/gui/Makefile.in +++ /dev/null @@ -1,33 +0,0 @@ -# Copyright (C) 2003 CEA/DEN, EDF R&D -# -# -# -# File : Makefile.in -# Author : Vasily Rusyaev (Open Cascade NN) -# Module : doc -# $Header: - -top_srcdir=@top_srcdir@ -top_builddir=../../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@ - -@COMMENCE@ - -docs: - cp -fr $(srcdir)/GEOM ./ - -find $(PWD) -name CVS -exec rm -rf {} \; - -clean: - rm -fr `ls | grep -v "Makefile"` - -distclean: clean - rm -fr GEOM - -install: - mkdir -p $(docdir)/gui - cp -rf GEOM $(docdir)/gui - -find $(PWD) -name CVS -exec rm -rf {} \; - -uninstall: - rm -rf $(docdir)/gui/GEOM diff --git a/doc/salome/tui/GEOM/HTML/GEOM_Gen.html b/doc/salome/tui/GEOM/HTML/GEOM_Gen.html deleted file mode 100644 index 507db794d..000000000 --- a/doc/salome/tui/GEOM/HTML/GEOM_Gen.html +++ /dev/null @@ -1,802 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    interface GEOM_Object
    IDL file
    Python
    string GetEntry ( )
    return_value = GetEntry ( )
    long GetStudyID ( )
    return_value = GetStudyID ( )
    long GetType ( )
    return_value = GetType ( )
    shape_type GetShapeType ( )
    return_value = GetShapeType ( )
    void SetName ( in string theName )
    SetName ( theName )
    string GetName ( )
    return_value = GetName ( )
    void SetStudyEntry ( in string theEntry )
    SetStudyEntry ( theEntry )
    string GetStudyEntry ( )
    return_value = GetStudyEntry ( )
    ListOfGO GetDependency ( )
    return_value = GetDependency ( )
    ListOfGO GetLastDependency ( )
    return_value = GetLastDependency ( )
    long getShape ( )
    return_value = getShape ( )
    TMPFile GetShapeStream ( )
    return_value = GetShapeStream ( )
    boolean IsMainShape ( )
    return_value = IsMainShape ( )
    ListOfLong GetSubShapeIndices ( )
    return_value = GetSubShapeIndices ( )
    GEOM_Object GetMainShape ( )
    return_value = GetMainShape ( )

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    interface GEOM_IOperations
    IDL file
    Python
    boolean IsDone ( )
    return_value = IsDone ( )
    void SetErrorCode ( in string theErrorID )
    SetErrorCode ( theErrorID )
    string GetErrorCode ( )
    return_value = GetErrorCode ( )
    long GetStudyID ( )
    return_value = GetStudyID ( )
    void StartOperation ( )
    StartOperation ( )
    void FinishOperation ( )
    FinishOperation ( )
    void AbortOperation ( )
    AbortOperation ( )

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    interface GEOM_IBasicOperations
    IDL file
    Python
    GEOM_Object MakePointXYZ ( in double theX, in double theY, in double theZ )
    return_value = MakePointXYZ ( theX, theY, theZ )
    GEOM_Object MakePointWithReference ( in GEOM_Object theReference, in double theX, in double theY, in double theZ )
    return_value = MakePointWithReference ( theReference, theX, theY, theZ )
    GEOM_Object MakePointOnCurve ( in GEOM_Object theRefCurve, in double theParameter )
    return_value = MakePointOnCurve ( theRefCurve, theParameter )
    GEOM_Object MakeVectorDXDYDZ ( in double theDX, in double theDY, in double theDZ )
    return_value = MakeVectorDXDYDZ ( theDX, theDY, theDZ )
    GEOM_Object MakeVectorTwoPnt ( in GEOM_Object thePnt1, in GEOM_Object thePnt2 )
    return_value = MakeVectorTwoPnt ( thePnt1, thePnt2 )
    GEOM_Object MakeLineTwoPnt ( in GEOM_Object thePnt1, in GEOM_Object thePnt2 )
    return_value = MakeLineTwoPnt ( thePnt1, thePnt2 )
    GEOM_Object MakePlaneThreePnt ( in GEOM_Object thePnt1, in GEOM_Object thePnt2, in GEOM_Object thePnt3, in double theTrimSize )
    return_value = MakePlaneThreePnt ( thePnt1, thePnt2, thePnt3, theTrimSize )
    GEOM_Object MakePlanePntVec ( in GEOM_Object thePnt, in GEOM_Object theVec, in double theTrimSize )
    return_value = MakePlanePntVec ( thePnt, theVec, theTrimSize )
    GEOM_Object MakePlaneFace ( in GEOM_Object theFace, in double theTrimSize )
    return_value = MakePlaneFace ( theFace, theTrimSize )
    GEOM_Object MakeMarker ( in double theOX, in double theOY, in double theOZ, in double theXDX, in double theXDY, in double theXDZ, in double theYDX, in double theYDY, in double theYDZ )
    return_value = MakeMarker ( theOX, theOY, theOZ, theXDX, theXDY, theXDZ, theYDX, theYDY, theYDZ )

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    interface GEOM_ITransformOperations
    IDL file
    Python
    GEOM_Object TranslateTwoPoints ( in GEOM_Object theObject, in GEOM_Object thePoint1, in GEOM_Object thePoint2 )
    return_value = TranslateTwoPoints ( theObject, thePoint1, thePoint2 )
    GEOM_Object TranslateTwoPointsCopy ( in GEOM_Object theObject, in GEOM_Object thePoint1, in GEOM_Object thePoint2 )
    return_value = TranslateTwoPointsCopy ( theObject, thePoint1, thePoint2 )
    GEOM_Object TranslateDXDYDZ ( in GEOM_Object theObject, in double theDX, in double theDY, in double theDZ )
    return_value = TranslateDXDYDZ ( theObject, theDX, theDY, theDZ )
    GEOM_Object TranslateDXDYDZCopy ( in GEOM_Object theObject, in double theDX, in double theDY, in double theDZ )
    return_value = TranslateDXDYDZCopy ( theObject, theDX, theDY, theDZ )
    GEOM_Object TranslateVector ( in GEOM_Object theObject, in GEOM_Object theVector )
    return_value = TranslateVector ( theObject, theVector )
    GEOM_Object TranslateVectorCopy ( in GEOM_Object theObject, in GEOM_Object theVector )
    return_value = TranslateVectorCopy ( theObject, theVector )
    GEOM_Object MultiTranslate1D ( in GEOM_Object theObject, in GEOM_Object theVector, in double theStep, in long theNbTimes )
    return_value = MultiTranslate1D ( theObject, theVector, theStep, theNbTimes )
    GEOM_Object MultiTranslate2D ( in GEOM_Object theObject, in GEOM_Object theVector1, in double theStep1, in long theNbTimes1, in GEOM_Object theVector2, in double theStep2, in long theNbTimes2 )
    return_value = MultiTranslate2D ( theObject, theVector1, theStep1, theNbTimes1, theVector2, theStep2, theNbTimes2 )
    GEOM_Object Rotate ( in GEOM_Object theObject, in GEOM_Object theAxis, in double theAngle )
    return_value = Rotate ( theObject, theAxis, theAngle )
    GEOM_Object RotateCopy ( in GEOM_Object theObject, in GEOM_Object theAxis, in double theAngle )
    return_value = RotateCopy ( theObject, theAxis, theAngle )
    GEOM_Object MultiRotate1D ( in GEOM_Object theObject, in GEOM_Object theAxis, in long theNbTimes )
    return_value = MultiRotate1D ( theObject, theAxis, theNbTimes )
    GEOM_Object MultiRotate2D ( in GEOM_Object theObject, in GEOM_Object theAxis, in double theAngle, in long theNbTimes1, in double theStep, in long theNbTimes2 )
    return_value = MultiRotate2D ( theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2 )
    GEOM_Object MirrorPlane ( in GEOM_Object theObject, in GEOM_Object thePlane )
    return_value = MirrorPlane ( theObject, thePlane )
    GEOM_Object MirrorPlaneCopy ( in GEOM_Object theObject, in GEOM_Object thePlane )
    return_value = MirrorPlaneCopy ( theObject, thePlane )
    GEOM_Object MirrorAxis ( in GEOM_Object theObject, in GEOM_Object theAxis )
    return_value = MirrorAxis ( theObject, theAxis )
    GEOM_Object MirrorAxisCopy ( in GEOM_Object theObject, in GEOM_Object theAxis )
    return_value = MirrorAxisCopy ( theObject, theAxis )
    GEOM_Object MirrorPoint ( in GEOM_Object theObject, in GEOM_Object thePoint )
    return_value = MirrorPoint ( theObject, thePoint )
    GEOM_Object MirrorPointCopy ( in GEOM_Object theObject, in GEOM_Object thePoint )
    return_value = MirrorPointCopy ( theObject, thePoint )
    GEOM_Object OffsetShape ( in GEOM_Object theObject, in double theOffset )
    return_value = OffsetShape ( theObject, theOffset )
    GEOM_Object OffsetShapeCopy ( in GEOM_Object theObject, in double theOffset )
    return_value = OffsetShapeCopy ( theObject, theOffset )
    GEOM_Object ScaleShape ( in GEOM_Object theObject, in GEOM_Object thePoint, in double theFactor )
    return_value = ScaleShape ( theObject, thePoint, theFactor )
    GEOM_Object ScaleShapeCopy ( in GEOM_Object theObject, in GEOM_Object thePoint, in double theFactor )
    return_value = ScaleShapeCopy ( theObject, thePoint, theFactor )
    GEOM_Object PositionShape ( in GEOM_Object theObject, in GEOM_Object theStartLCS, in GEOM_Object theEndLCS )
    return_value = PositionShape ( theObject, theStartLCS, theEndLCS )
    GEOM_Object PositionShapeCopy ( in GEOM_Object theObject, in GEOM_Object theStartLCS, in GEOM_Object theEndLCS )
    return_value = PositionShapeCopy ( theObject, theStartLCS, theEndLCS )

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    interface GEOM_I3DPrimOperations
    IDL file
    Python
    GEOM_Object MakeBoxDXDYDZ ( in double theDX, in double theDY, in double theDZ )
    return_value = MakeBoxDXDYDZ ( theDX, theDY, theDZ )
    GEOM_Object MakeBoxTwoPnt ( in GEOM_Object thePnt1, in GEOM_Object thePnt2 )
    return_value = MakeBoxTwoPnt ( thePnt1, thePnt2 )
    GEOM_Object MakeCylinderRH ( in double theR, in double theH )
    return_value = MakeCylinderRH ( theR, theH )
    GEOM_Object MakeCylinderPntVecRH ( in GEOM_Object thePnt, in GEOM_Object theAxis, in double theR, in double theH )
    return_value = MakeCylinderPntVecRH ( thePnt, theAxis, theR, theH )
    GEOM_Object MakeConeR1R2H ( in double theR1, in double theR2, in double theH )
    return_value = MakeConeR1R2H ( theR1, theR2, theH )
    GEOM_Object MakeConePntVecR1R2H ( in GEOM_Object thePnt, in GEOM_Object theAxis, in double theR1, in double theR2, in double theH )
    return_value = MakeConePntVecR1R2H ( thePnt, theAxis, theR1, theR2, theH )
    GEOM_Object MakeTorusRR ( in double theRMajor, in double theRMinor )
    return_value = MakeTorusRR ( theRMajor, theRMinor )
    GEOM_Object MakeTorusPntVecRR ( in GEOM_Object thePnt, in GEOM_Object theVec, in double theRMajor, in double theRMinor )
    return_value = MakeTorusPntVecRR ( thePnt, theVec, theRMajor, theRMinor )
    GEOM_Object MakeSphereR ( in double theR )
    return_value = MakeSphereR ( theR )
    GEOM_Object MakeSpherePntR ( in GEOM_Object thePnt, in double theR )
    return_value = MakeSpherePntR ( thePnt, theR )
    GEOM_Object MakePrismVecH ( in GEOM_Object theBase, in GEOM_Object theVec, in double theH )
    return_value = MakePrismVecH ( theBase, theVec, theH )
    GEOM_Object MakePrismTwoPnt ( in GEOM_Object theBase, in GEOM_Object thePoint1, in GEOM_Object thePoint2 )
    return_value = MakePrismTwoPnt ( theBase, thePoint1, thePoint2 )
    GEOM_Object MakePipe ( in GEOM_Object theBase, in GEOM_Object thePath )
    return_value = MakePipe ( theBase, thePath )
    GEOM_Object MakeRevolutionAxisAngle ( in GEOM_Object theBase, in GEOM_Object theAxis, in double theAngle )
    return_value = MakeRevolutionAxisAngle ( theBase, theAxis, theAngle )
    GEOM_Object MakeFilling ( in GEOM_Object theShape, in long theMinDeg, in long theMaxDeg, in double theTol2D, in double theTol3D, in long theNbIter )
    return_value = MakeFilling ( theShape, theMinDeg, theMaxDeg, theTol2D, theTol3D, theNbIter )

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    interface GEOM_IShapesOperations
    IDL file
    Python
    GEOM_Object MakeEdge ( in GEOM_Object thePnt1, in GEOM_Object thePnt2 )
    return_value = MakeEdge ( thePnt1, thePnt2 )
    GEOM_Object MakeWire ( in ListOfGO theEdgesAndWires )
    return_value = MakeWire ( theEdgesAndWires )
    GEOM_Object MakeFace ( in GEOM_Object theWire, in boolean isPlanarWanted )
    return_value = MakeFace ( theWire, isPlanarWanted )
    GEOM_Object MakeFaceWires ( in ListOfGO theWires, in boolean isPlanarWanted )
    return_value = MakeFaceWires ( theWires, isPlanarWanted )
    GEOM_Object MakeShell ( in ListOfGO theFacesAndShells )
    return_value = MakeShell ( theFacesAndShells )
    GEOM_Object MakeSolidShell ( in GEOM_Object theShell )
    return_value = MakeSolidShell ( theShell )
    GEOM_Object MakeSolidShells ( in ListOfGO theShells )
    return_value = MakeSolidShells ( theShells )
    GEOM_Object MakeCompound ( in ListOfGO theShapes )
    return_value = MakeCompound ( theShapes )
    GEOM_Object MakeGlueFaces ( in GEOM_Object theShape, in double theTolerance )
    return_value = MakeGlueFaces ( theShape, theTolerance )
    ListOfGO MakeExplode ( in GEOM_Object theShape, in long theShapeType, in boolean isSorted )
    return_value = MakeExplode ( theShape, theShapeType, isSorted )
    long NumberOfFaces ( in GEOM_Object theShape )
    return_value = NumberOfFaces ( theShape )
    long NumberOfEdges ( in GEOM_Object theShape )
    return_value = NumberOfEdges ( theShape )
    GEOM_Object ChangeOrientation ( in GEOM_Object theShape )
    return_value = ChangeOrientation ( theShape )

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    interface GEOM_IBlocksOperations
    IDL file
    Python
    GEOM_Object MakeQuadFaceFourVertices ( in GEOM_Object thePnt1, in GEOM_Object thePnt2, in GEOM_Object thePnt3, in GEOM_Object thePnt4 )
    return_value = MakeQuadFaceFourVertices ( thePnt1, thePnt2, thePnt3, thePnt4 )
    GEOM_Object MakeQuadFaceFourEdges ( in GEOM_Object theEdge1, in GEOM_Object theEdge2, in GEOM_Object theEdge3, in GEOM_Object theEdge4 )
    return_value = MakeQuadFaceFourEdges ( theEdge1, theEdge2, theEdge3, theEdge4 )
    GEOM_Object MakeQuadFaceTwoEdges ( in GEOM_Object theEdge1, in GEOM_Object theEdge2 )
    return_value = MakeQuadFaceTwoEdges ( theEdge1, theEdge2 )
    GEOM_Object MakeHexaSolidSixFaces ( in GEOM_Object theFace1, in GEOM_Object theFace2, in GEOM_Object theFace3, in GEOM_Object theFace4, in GEOM_Object theFace5, in GEOM_Object theFace6 )
    return_value = MakeHexaSolidSixFaces ( theFace1, theFace2, theFace3, theFace4, theFace5, theFace6 )
    GEOM_Object MakeHexaSolidTwoFaces ( in GEOM_Object theFace1, in GEOM_Object theFace2 )
    return_value = MakeHexaSolidTwoFaces ( theFace1, theFace2 )
    GEOM_Object GetEdge ( in GEOM_Object theShape, in GEOM_Object thePoint1, in GEOM_Object thePoint2 )
    return_value = GetEdge ( theShape, thePoint1, thePoint2 )
    GEOM_Object GetFaceByPoints ( in GEOM_Object theShape, in GEOM_Object thePoint1, in GEOM_Object thePoint2, in GEOM_Object thePoint3, in GEOM_Object thePoint4 )
    return_value = GetFaceByPoints ( theShape, thePoint1, thePoint2, thePoint3, thePoint4 )
    GEOM_Object GetFaceByEdges ( in GEOM_Object theShape, in GEOM_Object theEdge1, in GEOM_Object theEdge2 )
    return_value = GetFaceByEdges ( theShape, theEdge1, theEdge2 )
    GEOM_Object GetOppositeFace ( in GEOM_Object theBlock, in GEOM_Object theFace )
    return_value = GetOppositeFace ( theBlock, theFace )
    GEOM_Object GetFaceNearPoint ( in GEOM_Object theShape, in GEOM_Object thePoint )
    return_value = GetFaceNearPoint ( theShape, thePoint )
    GEOM_Object GetFaceByNormale ( in GEOM_Object theBlock, in GEOM_Object theVector )
    return_value = GetFaceByNormale ( theBlock, theVector )
    boolean IsCompoundOfBlocks ( in GEOM_Object theCompound, in long theMinNbFaces, in long theMaxNbFaces, out long theNbBlocks )
    [ return_value, theNbBlocks ] = IsCompoundOfBlocks ( theCompound, theMinNbFaces, theMaxNbFaces )
    ListOfGO ExplodeCompoundOfBlocks ( in GEOM_Object theCompound, in long theMinNbFaces, in long theMaxNbFaces )
    return_value = ExplodeCompoundOfBlocks ( theCompound, theMinNbFaces, theMaxNbFaces )
    GEOM_Object GetBlockNearPoint ( in GEOM_Object theCompound, in GEOM_Object thePoint )
    return_value = GetBlockNearPoint ( theCompound, thePoint )
    GEOM_Object GetBlockByParts ( in GEOM_Object theCompound, in ListOfGO theParts )
    return_value = GetBlockByParts ( theCompound, theParts )
    ListOfGO GetBlocksByParts ( in GEOM_Object theCompound, in ListOfGO theParts )
    return_value = GetBlocksByParts ( theCompound, theParts )
    GEOM_Object MakeMultiTransformation1D ( in GEOM_Object theBlock, in long theDirFace1, in long theDirFace2, in long theNbTimes )
    return_value = MakeMultiTransformation1D ( theBlock, theDirFace1, theDirFace2, theNbTimes )
    GEOM_Object MakeMultiTransformation2D ( in GEOM_Object theBlock, in long theDirFace1U, in long theDirFace2U, in long theNbTimesU, in long theDirFace1V, in long theDirFace2V, in long theNbTimesV )
    return_value = MakeMultiTransformation2D ( theBlock, theDirFace1U, theDirFace2U, theNbTimesU, theDirFace1V, theDirFace2V, theNbTimesV )

    - - - - - - - - - - - - - - - - - - - -
    interface GEOM_IBooleanOperations
    IDL file
    Python
    GEOM_Object MakeBoolean ( in GEOM_Object theShape1, in GEOM_Object theShape2, in long theOperation )
    return_value = MakeBoolean ( theShape1, theShape2, theOperation )
    GEOM_Object MakePartition ( in ListOfGO theShapes, in ListOfGO theTools, in ListOfGO theKeepInside, in ListOfGO theRemoveInside, in short theLimit, in boolean theRemoveWebs, in ListOfLong theMaterials )
    return_value = MakePartition ( theShapes, theTools, theKeepInside, theRemoveInside, theLimit, theRemoveWebs, theMaterials )
    GEOM_Object MakeHalfPartition ( in GEOM_Object theShape, in GEOM_Object thePlane )
    return_value = MakeHalfPartition ( theShape, thePlane )

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    interface GEOM_ICurvesOperations
    IDL file
    Python
    GEOM_Object MakeCirclePntVecR ( in GEOM_Object thePnt, in GEOM_Object theVec, in double theR )
    return_value = MakeCirclePntVecR ( thePnt, theVec, theR )
    GEOM_Object MakeCircleThreePnt ( in GEOM_Object thePnt1, in GEOM_Object thePnt2, in GEOM_Object thePnt3 )
    return_value = MakeCircleThreePnt ( thePnt1, thePnt2, thePnt3 )
    GEOM_Object MakeEllipse ( in GEOM_Object thePnt, in GEOM_Object theVec, in double theRMajor, in double theRMinor )
    return_value = MakeEllipse ( thePnt, theVec, theRMajor, theRMinor )
    GEOM_Object MakeArc ( in GEOM_Object thePnt1, in GEOM_Object thePnt2, in GEOM_Object thePnt3 )
    return_value = MakeArc ( thePnt1, thePnt2, thePnt3 )
    GEOM_Object MakePolyline ( in ListOfGO thePoints )
    return_value = MakePolyline ( thePoints )
    GEOM_Object MakeSplineBezier ( in ListOfGO thePoints )
    return_value = MakeSplineBezier ( thePoints )
    GEOM_Object MakeSplineInterpolation ( in ListOfGO thePoints )
    return_value = MakeSplineInterpolation ( thePoints )
    GEOM_Object MakeSketcher ( in string theCommand, in ListOfDouble theWorkingPlane )
    return_value = MakeSketcher ( theCommand, theWorkingPlane )

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    interface GEOM_ILocalOperations
    IDL file
    Python
    GEOM_Object MakeFilletAll ( in GEOM_Object theShape, in double theR )
    return_value = MakeFilletAll ( theShape, theR )
    GEOM_Object MakeFilletEdges ( in GEOM_Object theShape, in double theR, in ListOfLong theEdges )
    return_value = MakeFilletEdges ( theShape, theR, theEdges )
    GEOM_Object MakeFilletFaces ( in GEOM_Object theShape, in double theR, in ListOfLong theFaces )
    return_value = MakeFilletFaces ( theShape, theR, theFaces )
    GEOM_Object MakeChamferAll ( in GEOM_Object theShape, in double theD )
    return_value = MakeChamferAll ( theShape, theD )
    GEOM_Object MakeChamferEdge ( in GEOM_Object theShape, in double theD1, in double theD2, in long theFace1, in long theFace2 )
    return_value = MakeChamferEdge ( theShape, theD1, theD2, theFace1, theFace2 )
    GEOM_Object MakeChamferFaces ( in GEOM_Object theShape, in double theD1, in double theD2, in ListOfLong theFaces )
    return_value = MakeChamferFaces ( theShape, theD1, theD2, theFaces )
    GEOM_Object MakeArchimede ( in GEOM_Object theShape, in double theWeight, in double theWaterDensity, in double theMeshDeflection )
    return_value = MakeArchimede ( theShape, theWeight, theWaterDensity, theMeshDeflection )
    long GetSubShapeIndex ( in GEOM_Object theShape, in GEOM_Object theSubShape )
    return_value = GetSubShapeIndex ( theShape, theSubShape )

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    interface GEOM_IHealingOperations
    IDL file
    Python
    GEOM_Object ProcessShape ( in GEOM_Object theShapes, in string_array theOperators, in string_array theParameters, in string_array theValues )
    return_value = ProcessShape ( theShapes, theOperators, theParameters, theValues )
    void GetShapeProcessParameters ( out string_array theOperators, out string_array theParameters, out string_array theValues )
    [ theOperators, theParameters, theValues ] = GetShapeProcessParameters ( )
    GEOM_Object SuppressFaces ( in GEOM_Object theObject, in short_array theFaces )
    return_value = SuppressFaces ( theObject, theFaces )
    GEOM_Object CloseContour ( in GEOM_Object theObject, in short_array theWires, in boolean isCommonVertex )
    return_value = CloseContour ( theObject, theWires, isCommonVertex )
    GEOM_Object RemoveIntWires ( in GEOM_Object theObject, in short_array theWires )
    return_value = RemoveIntWires ( theObject, theWires )
    GEOM_Object FillHoles ( in GEOM_Object theObject, in short_array theWires )
    return_value = FillHoles ( theObject, theWires )
    GEOM_Object Sew ( in GEOM_Object theObject, in double theTolerance )
    return_value = Sew ( theObject, theTolerance )
    GEOM_Object DivideEdge ( in GEOM_Object theObject, in short theEdgeIndex, in double theValue, in boolean isByParameter )
    return_value = DivideEdge ( theObject, theEdgeIndex, theValue, isByParameter )
    boolean GetFreeBoundary ( in GEOM_Object theObject, out ListOfGO theClosedWires, out ListOfGO theOpenWires )
    [ return_value, theClosedWires, theOpenWires ] = GetFreeBoundary ( theObject )

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    interface GEOM_IInsertOperations
    IDL file
    Python
    GEOM_Object MakeCopy ( in GEOM_Object theOriginal )
    return_value = MakeCopy ( theOriginal )
    void Export ( in GEOM_Object theObject, in string theFileName, in string theFormatName )
    Export ( theObject, theFileName, theFormatName )
    GEOM_Object Import ( in string theFileName, in string theFormatName )
    return_value = Import ( theFileName, theFormatName )
    void ImportTranslators ( out string_array theFormats, out string_array thePatterns )
    [ theFormats, thePatterns ] = ImportTranslators ( )
    void ExportTranslators ( out string_array theFormats, out string_array thePatterns )
    [ theFormats, thePatterns ] = ExportTranslators ( )

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    interface GEOM_IMeasureOperations
    IDL file
    Python
    void GetBasicProperties ( in GEOM_Object theShape, out double theLength, out double theSurfArea, out double theVolume )
    [ theLength, theSurfArea, theVolume ] = GetBasicProperties ( theShape )
    GEOM_Object GetCentreOfMass ( in GEOM_Object theShape )
    return_value = GetCentreOfMass ( theShape )
    void GetInertia ( in GEOM_Object theShape, out double I11, out double I12, out double I13, out double I21, out double I22, out double I23, out double I31, out double I32, out double I33, out double Ix, out double Iy, out double Iz )
    [ I11, I12, I13, I21, I22, I23, I31, I32, I33, Ix, Iy, Iz ] = GetInertia ( theShape )
    void GetBoundingBox ( in GEOM_Object theShape, out double Xmin, out double Xmax, out double Ymin, out double Ymax, out double Zmin, out double Zmax )
    [ Xmin, Xmax, Ymin, Ymax, Zmin, Zmax ] = GetBoundingBox ( theShape )
    void GetTolerance ( in GEOM_Object theShape, out double FaceMin, out double FaceMax, out double EdgeMin, out double EdgeMax, out double VertMin, out double VertMax )
    [ FaceMin, FaceMax, EdgeMin, EdgeMax, VertMin, VertMax ] = GetTolerance ( theShape )
    boolean CheckShape ( in GEOM_Object theShape, out string theDescription )
    [ return_value, theDescription ] = CheckShape ( theShape )
    string WhatIs ( in GEOM_Object theShape )
    return_value = WhatIs ( theShape )
    double GetMinDistance ( in GEOM_Object theShape1, in GEOM_Object theShape2, out double X1, out double Y1, out double Z1, out double X2, out double Y2, out double Z2 )
    [ return_value, X1, Y1, Z1, X2, Y2, Z2 ] = GetMinDistance ( theShape1, theShape2 )
    void PointCoordinates ( in GEOM_Object theShape, out double X, out double Y, out double Z )
    [ X, Y, Z ] = PointCoordinates ( theShape )

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    interface GEOM_IGroupOperations
    IDL file
    Python
    GEOM_Object CreateGroup ( in GEOM_Object theMainShape, in long theShapeType )
    return_value = CreateGroup ( theMainShape, theShapeType )
    void AddObject ( in GEOM_Object theGroup, in long theSubShapeId )
    AddObject ( theGroup, theSubShapeId )
    void RemoveObject ( in GEOM_Object theGroup, in long theSubShapeId )
    RemoveObject ( theGroup, theSubShapeId )
    long GetType ( in GEOM_Object theGroup )
    return_value = GetType ( theGroup )
    GEOM_Object GetMainShape ( in GEOM_Object theGroup )
    return_value = GetMainShape ( theGroup )
    ListOfLong GetObjects ( in GEOM_Object theGroup )
    return_value = GetObjects ( theGroup )

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    interface GEOM_Gen
    IDL file
    Python
    void Undo ( in long theStudyID )
    Undo ( theStudyID )
    void Redo ( in long theStudyID )
    Redo ( theStudyID )
    SObject AddInStudy ( in Study theStudy, in GEOM_Object theObject, in string theName, in GEOM_Object theFather )
    return_value = AddInStudy ( theStudy, theObject, theName, theFather )
    GEOM_IBasicOperations GetIBasicOperations ( in long theStudyID )
    return_value = GetIBasicOperations ( theStudyID )
    GEOM_ITransformOperations GetITransformOperations ( in long theStudyID )
    return_value = GetITransformOperations ( theStudyID )
    GEOM_I3DPrimOperations GetI3DPrimOperations ( in long theStudyID )
    return_value = GetI3DPrimOperations ( theStudyID )
    GEOM_IShapesOperations GetIShapesOperations ( in long theStudyID )
    return_value = GetIShapesOperations ( theStudyID )
    GEOM_IBooleanOperations GetIBooleanOperations ( in long theStudyID )
    return_value = GetIBooleanOperations ( theStudyID )
    GEOM_ICurvesOperations GetICurvesOperations ( in long theStudyID )
    return_value = GetICurvesOperations ( theStudyID )
    GEOM_ILocalOperations GetILocalOperations ( in long theStudyID )
    return_value = GetILocalOperations ( theStudyID )
    GEOM_IHealingOperations GetIHealingOperations ( in long theStudyID )
    return_value = GetIHealingOperations ( theStudyID )
    GEOM_IInsertOperations GetIInsertOperations ( in long theStudyID )
    return_value = GetIInsertOperations ( theStudyID )
    GEOM_IMeasureOperations GetIMeasureOperations ( in long theStudyID )
    return_value = GetIMeasureOperations ( theStudyID )
    GEOM_IBlocksOperations GetIBlocksOperations ( in long theStudyID )
    return_value = GetIBlocksOperations ( theStudyID )
    GEOM_IGroupOperations GetIGroupOperations ( in long theStudyID )
    return_value = GetIGroupOperations ( theStudyID )
    void RemoveObject ( in GEOM_Object theObject )
    RemoveObject ( theObject )
    GEOM_Object GetObject ( in long theStudyID, in string theEntry )
    return_value = GetObject ( theStudyID, theEntry )
    GEOM_Object AddSubShape ( in GEOM_Object theMainShape, in ListOfLong theIndices )
    return_value = AddSubShape ( theMainShape, theIndices )
    GEOM_Object GetIORFromString ( in string theIOR )
    return_value = GetIORFromString ( theIOR )
    string GetStringFromIOR ( in GEOM_Object theObject )
    return_value = GetStringFromIOR ( theObject )

    -
    diff --git a/doc/salome/tui/GEOM/HTML/GEOM_Shape.html b/doc/salome/tui/GEOM/HTML/GEOM_Shape.html deleted file mode 100644 index bfee3cd70..000000000 --- a/doc/salome/tui/GEOM/HTML/GEOM_Shape.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - -
    interface GEOM_Shape
    IDL file
    Python
    TMPFile GetShapeStream ( )
    return_value = GetShapeStream ( )
    GEOM_Gen Engine ( )
    return_value = Engine ( )

    -
    diff --git a/doc/salome/tui/GEOM/doxyfile b/doc/salome/tui/GEOM/doxyfile deleted file mode 100755 index 92c502252..000000000 --- a/doc/salome/tui/GEOM/doxyfile +++ /dev/null @@ -1,200 +0,0 @@ -# Doxyfile 1.3-rc1 - -#--------------------------------------------------------------------------- -# General configuration options -#--------------------------------------------------------------------------- -PROJECT_NAME = "SALOME - GEOM - v.2.1.0" -PROJECT_NUMBER = id#1.1 -OUTPUT_DIRECTORY = ../ -OUTPUT_LANGUAGE = English -EXTRACT_ALL = YES -EXTRACT_PRIVATE = YES -EXTRACT_STATIC = YES -EXTRACT_LOCAL_CLASSES = YES -HIDE_UNDOC_MEMBERS = NO -HIDE_UNDOC_CLASSES = NO -HIDE_FRIEND_COMPOUNDS = NO -HIDE_IN_BODY_DOCS = NO -BRIEF_MEMBER_DESC = YES -REPEAT_BRIEF = NO -ALWAYS_DETAILED_SEC = YES -INLINE_INHERITED_MEMB = YES -FULL_PATH_NAMES = NO -STRIP_FROM_PATH = -INTERNAL_DOCS = YES -CASE_SENSE_NAMES = YES -SHORT_NAMES = NO -HIDE_SCOPE_NAMES = NO -VERBATIM_HEADERS = YES -SHOW_INCLUDE_FILES = YES -JAVADOC_AUTOBRIEF = YES -MULTILINE_CPP_IS_BRIEF = NO -DETAILS_AT_TOP = NO -INHERIT_DOCS = YES -INLINE_INFO = YES -SORT_MEMBER_DOCS = NO -DISTRIBUTE_GROUP_DOC = NO -TAB_SIZE = 5 -GENERATE_TODOLIST = YES -GENERATE_TESTLIST = YES -GENERATE_BUGLIST = YES -GENERATE_DEPRECATEDLIST= YES -ALIASES = -ENABLED_SECTIONS = -MAX_INITIALIZER_LINES = 25 -OPTIMIZE_OUTPUT_FOR_C = YES -OPTIMIZE_OUTPUT_JAVA = YES -SHOW_USED_FILES = NO -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- -QUIET = NO -WARNINGS = YES -WARN_IF_UNDOCUMENTED = YES -WARN_FORMAT = "$file:$line: $text" -WARN_LOGFILE = log.txt -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- -INPUT = ../../../share/salome/idl/GEOM_Gen.idl -FILE_PATTERNS = -RECURSIVE = NO -EXCLUDE = -EXCLUDE_SYMLINKS = NO -EXCLUDE_PATTERNS = -EXAMPLE_PATH = -EXAMPLE_PATTERNS = -EXAMPLE_RECURSIVE = NO -IMAGE_PATH = sources/ -INPUT_FILTER = -FILTER_SOURCE_FILES = YES -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- -SOURCE_BROWSER = NO -INLINE_SOURCES = NO -STRIP_CODE_COMMENTS = YES -REFERENCED_BY_RELATION = NO -REFERENCES_RELATION = YES -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- -ALPHABETICAL_INDEX = NO -COLS_IN_ALPHA_INDEX = 5 -IGNORE_PREFIX = -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- -GENERATE_HTML = YES -HTML_OUTPUT = GEOM -HTML_FILE_EXTENSION = .html -HTML_HEADER = sources/myheader.html -HTML_FOOTER = -HTML_STYLESHEET = -HTML_ALIGN_MEMBERS = YES -GENERATE_HTMLHELP = NO -CHM_FILE = -HHC_LOCATION = -GENERATE_CHI = NO -BINARY_TOC = YES -TOC_EXPAND = YES -DISABLE_INDEX = YES -ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = YES -TREEVIEW_WIDTH = 250 -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- -GENERATE_LATEX = NO -LATEX_OUTPUT = latex -LATEX_CMD_NAME = latex -MAKEINDEX_CMD_NAME = makeindex -COMPACT_LATEX = NO -PAPER_TYPE = a4wide -EXTRA_PACKAGES = -LATEX_HEADER = -PDF_HYPERLINKS = NO -USE_PDFLATEX = NO -LATEX_BATCHMODE = NO -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- -GENERATE_RTF = NO -RTF_OUTPUT = rtf -COMPACT_RTF = NO -RTF_HYPERLINKS = NO -RTF_STYLESHEET_FILE = -RTF_EXTENSIONS_FILE = -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- -GENERATE_MAN = NO -MAN_OUTPUT = man -MAN_EXTENSION = .3 -MAN_LINKS = NO -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- -GENERATE_XML = NO -XML_SCHEMA = -XML_DTD = -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- -GENERATE_AUTOGEN_DEF = NO -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- -GENERATE_PERLMOD = NO -PERLMOD_LATEX = NO -PERLMOD_PRETTY = YES -PERLMOD_MAKEVAR_PREFIX = -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = YES -EXPAND_ONLY_PREDEF = NO -SEARCH_INCLUDES = YES -INCLUDE_PATH = -INCLUDE_FILE_PATTERNS = -PREDEFINED = -EXPAND_AS_DEFINED = -SKIP_FUNCTION_MACROS = NO -#--------------------------------------------------------------------------- -# Configuration::addtions related to external references -#--------------------------------------------------------------------------- -TAGFILES = -GENERATE_TAGFILE = -ALLEXTERNALS = NO -EXTERNAL_GROUPS = YES -PERL_PATH = /usr/bin/perl -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- -CLASS_DIAGRAMS = YES -HIDE_UNDOC_RELATIONS = NO -HAVE_DOT = YES -CLASS_GRAPH = YES -COLLABORATION_GRAPH = NO -TEMPLATE_RELATIONS = YES -INCLUDE_GRAPH = YES -INCLUDED_BY_GRAPH = NO -GRAPHICAL_HIERARCHY = YES -DOT_IMAGE_FORMAT = jpg -DOT_PATH = -DOTFILE_DIRS = -MAX_DOT_GRAPH_WIDTH = 1024 -MAX_DOT_GRAPH_HEIGHT = 1200 -GENERATE_LEGEND = NO -DOT_CLEANUP = YES -#--------------------------------------------------------------------------- -# Configuration::addtions related to the search engine -#--------------------------------------------------------------------------- -SEARCHENGINE = NO -CGI_NAME = search.cgi -CGI_URL = -DOC_URL = -DOC_ABSPATH = -BIN_ABSPATH = /usr/local/bin/ -EXT_DOC_PATHS = diff --git a/doc/salome/tui/GEOM/doxyfile_py b/doc/salome/tui/GEOM/doxyfile_py deleted file mode 100755 index a76886de1..000000000 --- a/doc/salome/tui/GEOM/doxyfile_py +++ /dev/null @@ -1,200 +0,0 @@ -# Doxyfile 1.3-rc1 - -#--------------------------------------------------------------------------- -# General configuration options -#--------------------------------------------------------------------------- -PROJECT_NAME = "SALOME - GEOM - v.2.1.0" -PROJECT_NUMBER = id#1.1 -OUTPUT_DIRECTORY = ../ -OUTPUT_LANGUAGE = English -EXTRACT_ALL = YES -EXTRACT_PRIVATE = YES -EXTRACT_STATIC = YES -EXTRACT_LOCAL_CLASSES = YES -HIDE_UNDOC_MEMBERS = NO -HIDE_UNDOC_CLASSES = NO -HIDE_FRIEND_COMPOUNDS = NO -HIDE_IN_BODY_DOCS = NO -BRIEF_MEMBER_DESC = YES -REPEAT_BRIEF = NO -ALWAYS_DETAILED_SEC = YES -INLINE_INHERITED_MEMB = YES -FULL_PATH_NAMES = NO -STRIP_FROM_PATH = -INTERNAL_DOCS = YES -CASE_SENSE_NAMES = YES -SHORT_NAMES = NO -HIDE_SCOPE_NAMES = NO -VERBATIM_HEADERS = YES -SHOW_INCLUDE_FILES = YES -JAVADOC_AUTOBRIEF = YES -MULTILINE_CPP_IS_BRIEF = NO -DETAILS_AT_TOP = NO -INHERIT_DOCS = YES -INLINE_INFO = YES -SORT_MEMBER_DOCS = NO -DISTRIBUTE_GROUP_DOC = NO -TAB_SIZE = 5 -GENERATE_TODOLIST = YES -GENERATE_TESTLIST = YES -GENERATE_BUGLIST = YES -GENERATE_DEPRECATEDLIST= YES -ALIASES = -ENABLED_SECTIONS = -MAX_INITIALIZER_LINES = 25 -OPTIMIZE_OUTPUT_FOR_C = YES -OPTIMIZE_OUTPUT_JAVA = YES -SHOW_USED_FILES = NO -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- -QUIET = NO -WARNINGS = YES -WARN_IF_UNDOCUMENTED = YES -WARN_FORMAT = "$file:$line: $text" -WARN_LOGFILE = log.txt -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- -INPUT = list_py_files_to_process -FILE_PATTERNS = -RECURSIVE = NO -EXCLUDE = -EXCLUDE_SYMLINKS = NO -EXCLUDE_PATTERNS = -EXAMPLE_PATH = -EXAMPLE_PATTERNS = -EXAMPLE_RECURSIVE = NO -IMAGE_PATH = ../sources/ -INPUT_FILTER = -FILTER_SOURCE_FILES = YES -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- -SOURCE_BROWSER = NO -INLINE_SOURCES = NO -STRIP_CODE_COMMENTS = YES -REFERENCED_BY_RELATION = NO -REFERENCES_RELATION = YES -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- -ALPHABETICAL_INDEX = NO -COLS_IN_ALPHA_INDEX = 5 -IGNORE_PREFIX = -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- -GENERATE_HTML = YES -HTML_OUTPUT = ../GEOM/geompy_doc -HTML_FILE_EXTENSION = .html -HTML_HEADER = ../sources/myheader_py2.html -HTML_FOOTER = -HTML_STYLESHEET = -HTML_ALIGN_MEMBERS = YES -GENERATE_HTMLHELP = NO -CHM_FILE = -HHC_LOCATION = -GENERATE_CHI = NO -BINARY_TOC = YES -TOC_EXPAND = YES -DISABLE_INDEX = YES -ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = YES -TREEVIEW_WIDTH = 250 -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- -GENERATE_LATEX = NO -LATEX_OUTPUT = latex -LATEX_CMD_NAME = latex -MAKEINDEX_CMD_NAME = makeindex -COMPACT_LATEX = NO -PAPER_TYPE = a4wide -EXTRA_PACKAGES = -LATEX_HEADER = -PDF_HYPERLINKS = NO -USE_PDFLATEX = NO -LATEX_BATCHMODE = NO -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- -GENERATE_RTF = NO -RTF_OUTPUT = rtf -COMPACT_RTF = NO -RTF_HYPERLINKS = NO -RTF_STYLESHEET_FILE = -RTF_EXTENSIONS_FILE = -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- -GENERATE_MAN = NO -MAN_OUTPUT = man -MAN_EXTENSION = .3 -MAN_LINKS = NO -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- -GENERATE_XML = NO -XML_SCHEMA = -XML_DTD = -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- -GENERATE_AUTOGEN_DEF = NO -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- -GENERATE_PERLMOD = NO -PERLMOD_LATEX = NO -PERLMOD_PRETTY = YES -PERLMOD_MAKEVAR_PREFIX = -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = YES -EXPAND_ONLY_PREDEF = NO -SEARCH_INCLUDES = YES -INCLUDE_PATH = -INCLUDE_FILE_PATTERNS = -PREDEFINED = -EXPAND_AS_DEFINED = -SKIP_FUNCTION_MACROS = NO -#--------------------------------------------------------------------------- -# Configuration::addtions related to external references -#--------------------------------------------------------------------------- -TAGFILES = -GENERATE_TAGFILE = -ALLEXTERNALS = NO -EXTERNAL_GROUPS = YES -PERL_PATH = /usr/bin/perl -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- -CLASS_DIAGRAMS = YES -HIDE_UNDOC_RELATIONS = NO -HAVE_DOT = YES -CLASS_GRAPH = YES -COLLABORATION_GRAPH = NO -TEMPLATE_RELATIONS = YES -INCLUDE_GRAPH = YES -INCLUDED_BY_GRAPH = NO -GRAPHICAL_HIERARCHY = YES -DOT_IMAGE_FORMAT = jpg -DOT_PATH = -DOTFILE_DIRS = -MAX_DOT_GRAPH_WIDTH = 1024 -MAX_DOT_GRAPH_HEIGHT = 1200 -GENERATE_LEGEND = NO -DOT_CLEANUP = YES -#--------------------------------------------------------------------------- -# Configuration::addtions related to the search engine -#--------------------------------------------------------------------------- -SEARCHENGINE = NO -CGI_NAME = search.cgi -CGI_URL = -DOC_URL = -DOC_ABSPATH = -BIN_ABSPATH = /usr/local/bin/ -EXT_DOC_PATHS = diff --git a/doc/salome/tui/GEOM/sources/Application-About.png b/doc/salome/tui/GEOM/sources/Application-About.png deleted file mode 100755 index 7b58330d50856e28562e8f9ed80dae72d6e6dda3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19226 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

    5r3>=?gKv-6#gF2kVYm^Euk4pDx%bDo{L~m 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 Ao&W#< diff --git a/doc/salome/tui/GEOM/sources/application.gif b/doc/salome/tui/GEOM/sources/application.gif deleted file mode 100644 index 0b05d5c18ee88779d283508781836e2b151f606f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2602 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 diff --git a/doc/salome/tui/GEOM/sources/bg_salome.gif b/doc/salome/tui/GEOM/sources/bg_salome.gif deleted file mode 100755 index 677b70468f798fe4fbc20fac3d706e61179ff12b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17294 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 diff --git a/doc/salome/tui/GEOM/sources/myheader.html b/doc/salome/tui/GEOM/sources/myheader.html deleted file mode 100755 index 83ca543cd..000000000 --- a/doc/salome/tui/GEOM/sources/myheader.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - Main Page - - - -  -
    - - - - - - -
    -
    -
    - - - - diff --git a/doc/salome/tui/GEOM/sources/myheader_py2.html b/doc/salome/tui/GEOM/sources/myheader_py2.html deleted file mode 100755 index 372b2247f..000000000 --- a/doc/salome/tui/GEOM/sources/myheader_py2.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - Main Page - - - -  -
    - - - - - - -
    -
    -
    - - - - diff --git a/doc/salome/tui/GEOM/sources/occ.gif b/doc/salome/tui/GEOM/sources/occ.gif deleted file mode 100755 index ce017c8ae11236ef5c52eee1723657cb8b08989f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14790 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⁣iMxf-qnJ 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 diff --git a/doc/salome/tui/GEOM/sources/static/doxygen.css b/doc/salome/tui/GEOM/sources/static/doxygen.css deleted file mode 100755 index 0a8e93d50..000000000 --- a/doc/salome/tui/GEOM/sources/static/doxygen.css +++ /dev/null @@ -1,49 +0,0 @@ -H1 { text-align: center; } -CAPTION { font-weight: bold } -A.qindex {} -A.qindexRef {} -A.el { text-decoration: none; font-weight: bold } -A.elRef { font-weight: bold } -A.code { text-decoration: none; font-weight: normal; color: #4444ee } -A.codeRef { font-weight: normal; color: #4444ee } -A:hover { text-decoration: none; background-color: lightblue } -DL.el { margin-left: -1cm } -DIV.fragment { width: 100%; border: none; background-color: #CCCCCC } -DIV.ah { background-color: #CCCCCC; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } -TD.md { background-color: lightblue; font-weight: bold; } -TD.mdname1 { background-color: lightblue; font-weight: bold; color: #602020; } -TD.mdname { background-color: lightblue; font-weight: bold; color: #602020; width: 600px; } -DIV.groupHeader { margin-left: 16px; margin-top: 12px; margin-bottom: 6px; font-weight: bold } -DIV.groupText { margin-left: 16px; font-style: italic; font-size: smaller } -BODY { background: url(sources/bg_salome.gif) } -TD.indexkey { - background-color: #CCCCCC; - font-weight: bold; - padding-right : 10px; - padding-top : 2px; - padding-left : 10px; - padding-bottom : 2px; - margin-left : 0px; - margin-right : 0px; - margin-top : 2px; - margin-bottom : 2px -} -TD.indexvalue { - background-color: #CCCCCC; - font-style: italic; - padding-right : 10px; - padding-top : 2px; - padding-left : 10px; - padding-bottom : 2px; - margin-left : 0px; - margin-right : 0px; - margin-top : 2px; - margin-bottom : 2px -} -span.keyword { color: #008000 } -span.keywordtype { color: #604020 } -span.keywordflow { color: #e08000 } -span.comment { color: #800000 } -span.preprocessor { color: #806020 } -span.stringliteral { color: #002080 } -span.charliteral { color: #008080 } diff --git a/doc/salome/tui/GEOM/sources/static/page2.html b/doc/salome/tui/GEOM/sources/static/page2.html deleted file mode 100755 index 1966a56fc..000000000 --- a/doc/salome/tui/GEOM/sources/static/page2.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - Main Page - - - - -   -
    - - - - - - - - -
    - - -
    -
    - - -
    - - diff --git a/doc/salome/tui/GEOM/sources/static/tree.js b/doc/salome/tui/GEOM/sources/static/tree.js deleted file mode 100755 index edeb48ce7..000000000 --- a/doc/salome/tui/GEOM/sources/static/tree.js +++ /dev/null @@ -1,59 +0,0 @@ -foldersTree = gFld("SALOME v.2.1.0 ", "", "") - insDoc(foldersTree, gLnk("Main Page", "", "main.html")) - -aux1 = insFld(foldersTree, gFld("TUI Reference Guide", "")) - aux2 = insFld(aux1, gFld("Modules", "")) - aux3 = insFld(aux2, gFld("SALOME GEOMETRY module", "")) -/*! insDoc(aux3, gLnk("Overview", "", "overview_Geometry.html"))*/ - aux4 = insFld(aux3, gFld("Packages", "")) - insDoc(aux4, gLnk("GEOM", "", "namespaceGEOM.html")) -/*! insDoc(aux3, gLnk("Examples", "", "examples_GEOM.html")) -*/ - -/*! Data structures -*/ - insDoc(aux1, gLnk("Data Structures", "", "annotated.html")) - -/*! insDoc(aux1, gLnk("GEOM::GEOM_Gen", "", "interfaceGEOM_1_1GEOM__Gen.html")) - insDoc(aux1, gLnk("GEOM::GEOM_Shape", "", "interfaceGEOM_1_1GEOM__Shape.html")) -*/ - insDoc(aux1, gLnk("Class Hierarchy", "", "hierarchy.html")) - -/*! - aux3 = insFld(aux2, gFld("GEOM::GEOM_Gen", "", "interfaceGEOM_1_1GEOM__Gen.html")) - aux3 = insFld(aux2, gFld("GEOM::GEOM_Shape", "", "interfaceGEOM_1_1GEOM__Shape.html")) - aux3 = insFld(aux2, gFld("GEOM::AxisStruct", "", "structGEOM_1_1AxisStruct.html")) - aux3 = insFld(aux2, gFld("GEOM::DirStruct", "", "structGEOM_1_1DirStruct.html")) - aux3 = insFld(aux2, gFld("GEOM::PointStruct", "", "structGEOM_1_1PointStruct.html")) -*/ - insDoc(aux1, gLnk("Class methods list", "", "functions.html")) -/*! -aux1 = insFld(foldersTree, gFld("Namespace List", "", "namespaces.html")) - insDoc(aux1, gLnk("GEOM", "", "namespaceGEOM.html")) -*/ - insDoc(aux1, gLnk("Namespace Members", "", "namespacemembers.html")) - - insDoc(aux1, gLnk("File List", "", "files.html")) - -/*! - - insDoc(aux1, gLnk("GEOM_Gen.idl", "", "GEOM__Gen_8idl.html")) - insDoc(aux1, gLnk("GEOM_Shape.idl", "", "GEOM__Shape_8idl.html")) -*/ - -aux1 = insFld(foldersTree, gFld("IDL/Python mapping", "")) - insDoc(aux1, gLnk("Mapping of GEOMETRY IDL definitions to Python language", "", "page2.html")) - -/*!aux1 = insFld(foldersTree, gFld("Python Commands", "", "geompy_doc/main.html")) - insDoc(aux1, gLnk("Package geompy", "", "geompy_doc/namespacegeompy.html")) - insDoc(aux1, gLnk("Namespace Members", "", "geompy_doc/namespacemembers.html")) - insDoc(aux1, gLnk("File geompy.py", "", "geompy_doc/geompy_8py.html")) -*/ - -aux1 = insFld(foldersTree, gFld("Python Commands", "", "geompy_doc/main.html")) - insDoc(aux1, gLnk("Package List", "", "geompy_doc/namespaces.html")) - insDoc(aux1, gLnk("Namespace Members", "", "geompy_doc/namespacemembers.html")) - insDoc(aux1, gLnk("File List", "", "geompy_doc/files.html")) - -/*! insDoc(foldersTree, gLnk("Graphical Class Hierarchy", "", "inherits.html")) -*/ diff --git a/doc/salome/tui/GEOM/sources/static/treeview.js b/doc/salome/tui/GEOM/sources/static/treeview.js deleted file mode 100644 index 55eb43d07..000000000 --- a/doc/salome/tui/GEOM/sources/static/treeview.js +++ /dev/null @@ -1,505 +0,0 @@ -//**************************************************************** -// You are free to copy the "Folder-Tree" script as long as you -// keep this copyright notice: -// Script found in: http://www.geocities.com/Paris/LeftBank/2178/ -// Author: Marcelino Alves Martins (martins@hks.com) December '97. -//**************************************************************** - -//Log of changes: -// 17 Feb 98 - Fix initialization flashing problem with Netscape -// -// 27 Jan 98 - Root folder starts open; support for USETEXTLINKS; -// make the ftien4 a js file -// -// DvH: Dec 2000 - Made some minor changes to support external -// references - -// Definition of class Folder -// ***************************************************************** - -function Folder(folderDescription, tagName, hreference) //constructor -{ - //constant data - this.desc = folderDescription - this.tagName = tagName - this.hreference = hreference - this.id = -1 - this.navObj = 0 - this.iconImg = 0 - this.nodeImg = 0 - this.isLastNode = 0 - - //dynamic data - this.isOpen = true - this.iconSrc = "ftv2folderopen.png" - this.children = new Array - this.nChildren = 0 - - //methods - this.initialize = initializeFolder - this.setState = setStateFolder - this.addChild = addChild - this.createIndex = createEntryIndex - this.hide = hideFolder - this.display = display - this.renderOb = drawFolder - this.totalHeight = totalHeight - this.subEntries = folderSubEntries - this.outputLink = outputFolderLink -} - -function setStateFolder(isOpen) -{ - var subEntries - var totalHeight - var fIt = 0 - var i=0 - - if (isOpen == this.isOpen) - return - - if (browserVersion == 2) - { - totalHeight = 0 - for (i=0; i < this.nChildren; i++) - totalHeight = totalHeight + this.children[i].navObj.clip.height - subEntries = this.subEntries() - if (this.isOpen) - totalHeight = 0 - totalHeight - for (fIt = this.id + subEntries + 1; fIt < nEntries; fIt++) - indexOfEntries[fIt].navObj.moveBy(0, totalHeight) - } - this.isOpen = isOpen - propagateChangesInState(this) -} - -function propagateChangesInState(folder) -{ - var i=0 - - if (folder.isOpen) - { - if (folder.nodeImg) - if (folder.isLastNode) - folder.nodeImg.src = "ftv2mlastnode.png" - else - folder.nodeImg.src = "ftv2mnode.png" - folder.iconImg.src = "ftv2folderopen.png" - for (i=0; i 0) - auxEv = "" - else - auxEv = "" - - if (level>0) - if (lastNode) //the last 'brother' in the children array - { - this.renderOb(leftSide + auxEv + "") -// leftSide = leftSide + "" - this.isLastNode = 1 - } - else - { - this.renderOb(leftSide + auxEv + "") - leftSide = leftSide + "" - this.isLastNode = 0 - } - else - this.renderOb("") - - if (nc > 0) - { - level = level + 1 - for (i=0 ; i < this.nChildren; i++) - { - if (i == this.nChildren-1) - this.children[i].initialize(level, 1, leftSide) - else - this.children[i].initialize(level, 0, leftSide) - } - } -} - -function drawFolder(leftSide) -{ - if (browserVersion == 2) { - if (!doc.yPos) - doc.yPos=8 - doc.write("") - } - if (browserVersion == 3) - { - doc.write("
    ") - } - - doc.write("\n") - doc.write("\n\n") - doc.write("\n
    ") - doc.write(leftSide) - this.outputLink() - doc.write("") - doc.write("") - if (USETEXTLINKS) - { - this.outputLink() - doc.write(this.desc + "") - } - else - doc.write(this.desc) - -/*! - if (this.tagName!="") - { - doc.write(" [external]") - } -*/ - doc.write("
    \n") - - if (browserVersion == 2) { - doc.write("") - } - if (browserVersion == 3) { - doc.write("
    ") - } - - if (browserVersion == 1) { - this.navObj = doc.all["folder"+this.id] - this.iconImg = doc.all["folderIcon"+this.id] - this.nodeImg = doc.all["nodeIcon"+this.id] - } else if (browserVersion == 2) { - this.navObj = doc.layers["folder"+this.id] - this.iconImg = this.navObj.document.images["folderIcon"+this.id] - this.nodeImg = this.navObj.document.images["nodeIcon"+this.id] - doc.yPos=doc.yPos+this.navObj.clip.height - } else if (browserVersion == 3) { - this.navObj = doc.getElementById("folder"+this.id) - this.iconImg = doc.images.namedItem("folderIcon"+this.id) - this.nodeImg = doc.images.namedItem("nodeIcon"+this.id) - } -} - -function outputFolderLink() -{ - if (this.hreference) - { - doc.write(" 0) - doc.write("onClick='javascript:clickOnFolder("+this.id+")'") - doc.write(">") - } - else - doc.write("") -} - -function addChild(childNode) -{ - this.children[this.nChildren] = childNode - this.nChildren++ - return childNode -} - -function folderSubEntries() -{ - var i = 0 - var se = this.nChildren - - for (i=0; i < this.nChildren; i++){ - if (this.children[i].children) //is a folder - se = se + this.children[i].subEntries() - } - - return se -} - - -// Definition of class Item (a document or link inside a Folder) -// ************************************************************* - -function Item(itemDescription, tagName, itemLink) // Constructor -{ - // constant data - this.desc = itemDescription - this.tagName = tagName - this.link = itemLink - this.id = -1 //initialized in initalize() - this.navObj = 0 //initialized in render() - this.iconImg = 0 //initialized in render() - this.iconSrc = "ftv2doc.png" - - // methods - this.initialize = initializeItem - this.createIndex = createEntryIndex - this.hide = hideItem - this.display = display - this.renderOb = drawItem - this.totalHeight = totalHeight -} - -function hideItem() -{ - if (browserVersion == 1 || browserVersion == 3) { - if (this.navObj.style.display == "none") - return - this.navObj.style.display = "none" - } else { - if (this.navObj.visibility == "hidden") - return - this.navObj.visibility = "hidden" - } -} - -function initializeItem(level, lastNode, leftSide) -{ - this.createIndex() - - if (level>0) - if (lastNode) //the last 'brother' in the children array - { - this.renderOb(leftSide + "") - leftSide = leftSide + "" - } - else - { - this.renderOb(leftSide + "") - leftSide = leftSide + "" - } - else - this.renderOb("") -} - -function drawItem(leftSide) -{ - if (browserVersion == 2) - doc.write("") - if (browserVersion == 3) - doc.write("
    ") - - doc.write("\n\n") - doc.write("\n
    ") - doc.write(leftSide) - if (this.link!="") - { - doc.write("") - } - doc.write("") - if (this.link!="") - { - doc.write("") - } - doc.write("") - if (USETEXTLINKS && this.link!="") - doc.write("" + this.desc + "") - else - doc.write(this.desc) -/*! - if (this.tagName!="") - { - doc.write(" [external]"); - } -*/ - doc.write("\n
    \n") - - if (browserVersion == 2) - doc.write("") - if (browserVersion == 3) - doc.write("
    ") - - if (browserVersion == 1) { - this.navObj = doc.all["item"+this.id] - this.iconImg = doc.all["itemIcon"+this.id] - } else if (browserVersion == 2) { - this.navObj = doc.layers["item"+this.id] - this.iconImg = this.navObj.document.images["itemIcon"+this.id] - doc.yPos=doc.yPos+this.navObj.clip.height - } else if (browserVersion == 3) { - this.navObj = doc.getElementById("item"+this.id) - this.iconImg = doc.images.namedItem("itemIcon"+this.id) - } -} - - -// Methods common to both objects (pseudo-inheritance) -// ******************************************************** - -function display() -{ - if (browserVersion == 1 || browserVersion == 3) - this.navObj.style.display = "block" - else - this.navObj.visibility = "show" -} - -function createEntryIndex() -{ - this.id = nEntries - indexOfEntries[nEntries] = this - nEntries++ -} - -// total height of subEntries open -function totalHeight() //used with browserVersion == 2 -{ - var h = this.navObj.clip.height - var i = 0 - - if (this.isOpen) //is a folder and _is_ open - for (i=0 ; i < this.nChildren; i++) - h = h + this.children[i].totalHeight() - - return h -} - - -// Events -// ********************************************************* - -function clickOnFolder(folderId) -{ - var clicked = indexOfEntries[folderId] - - if (!clicked.isOpen) - clickOnNode(folderId) - - return - - if (clicked.isSelected) - return -} - -function clickOnNode(folderId) -{ - var clickedFolder = 0 - var state = 0 - - clickedFolder = indexOfEntries[folderId] - state = clickedFolder.isOpen - - clickedFolder.setState(!state) //open<->close -} - -function initializeDocument() -{ - doc = document; - if (doc.all) - browserVersion = 1 //IE4 - else - if (doc.layers) - browserVersion = 2 //NS4 - else if(navigator.userAgent.toLowerCase().indexOf('gecko') != -1) - browserVersion = 3 //mozilla - else - browserVersion = 0 //other - - foldersTree.initialize(0, 1, "") - foldersTree.display() - - if (browserVersion > 0) - { - if(browserVersion != 3) - doc.write(" ") - - // close the whole tree - clickOnNode(0) - // open the root folder - clickOnNode(0) - } -} - -// Auxiliary Functions for Folder-Treee backward compatibility -// ********************************************************* - -function gFld(description, tagName, hreference) -{ - folder = new Folder(description, tagName, hreference) - return folder -} - -function gLnk(description, tagName, linkData) -{ - fullLink = "" - - if (linkData!="") - { - fullLink = "'"+linkData+"' target=\"basefrm\"" - } - - linkItem = new Item(description, tagName, fullLink) - return linkItem -} - -function insFld(parentFolder, childFolder) -{ - return parentFolder.addChild(childFolder) -} - -function insDoc(parentFolder, document) -{ - parentFolder.addChild(document) -} - -// Global variables -// **************** - -USETEXTLINKS = 1 -indexOfEntries = new Array -nEntries = 0 -doc = document -browserVersion = 0 -selectedFolder=0 diff --git a/doc/salome/tui/Makefile.in b/doc/salome/tui/Makefile.in deleted file mode 100644 index 8a2c77608..000000000 --- a/doc/salome/tui/Makefile.in +++ /dev/null @@ -1,61 +0,0 @@ -# Copyright (C) 2003 CEA/DEN, EDF R&D -# -# -# -# File : Makefile.in -# Author : Vasily Rusyaev (Open Cascade NN) -# Module : doc -# $Header: - -top_srcdir=@top_srcdir@ -top_builddir=../../.. -root_srcdir=@ROOT_SRCDIR@ -srcdir=@srcdir@ -VPATH=.:@srcdir@ -doxygen=@DOXYGEN@ - -@COMMENCE@ - -PYTHON_SCRIPTS = \ - geompy.py \ - GEOM_TestMeasures.py - -#PYTHON_SCRIPTS_PY2 = py2/geompy.py py2/GEOM_TestMeasures.py - -docs: - cp -fr $(srcdir)/GEOM ./INPUT - cd INPUT; \ - sed 's|../../../share/salome|$(root_srcdir)|' ./doxyfile > ./doxyfile1; \ - mv -f doxyfile1 doxyfile; \ - $(doxygen) ./doxyfile; \ - mkdir py1; mkdir py2; \ - cd .. - for file in $(PYTHON_SCRIPTS) dummy; do \ - if [ $$file != "dummy" ]; then \ - cp $(root_srcdir)/src/GEOM_SWIG/$$file INPUT/py1/; \ - fi ; \ - done - cd INPUT; \ - python $(KERNEL_ROOT_DIR)/doc/salome/tui/KERNEL/pythfilter.py ./py1 ./py2; \ - sed 's|list_py_files_to_process|$(PYTHON_SCRIPTS)|' ./doxyfile_py > py2/doxyfile_py; \ - cd py2; \ - $(doxygen) ./doxyfile_py; \ - cd ../..; \ - cp -fr $(srcdir)/GEOM/sources/static/*.* ./GEOM/ - cp -fr $(srcdir)/GEOM/sources/ GEOM/ - cp -fr $(srcdir)/GEOM/HTML/ GEOM/ - rm -fr INPUT - -clean: - rm -fr GEOM - -distclean: clean - rm -fr INPUT - -install: - $(INSTALL) -d $(docdir); \ - mkdir -p $(docdir)/tui - cp -fr GEOM $(docdir)/tui - -uninstall: - rm -fr $(docdir)/tui/GEOM diff --git a/idl/GEOM_Gen.idl b/idl/GEOM_Gen.idl deleted file mode 100644 index 6bc1582c6..000000000 --- a/idl/GEOM_Gen.idl +++ /dev/null @@ -1,2075 +0,0 @@ -// File : GEOM_Gen.idl -// Author : Sergey RUIN - -#ifndef __GEOM_GEN__ -#define __GEOM_GEN__ - -#include "SALOME_Exception.idl" -#include "SALOME_Component.idl" -#include "SALOMEDS.idl" - -#include "SALOME_GenericObj.idl" - -module GEOM -{ - /*! - * Topological types of shapes (like Open Cascade types) - */ - enum shape_type { COMPOUND, COMPSOLID, SOLID, SHELL, - FACE, WIRE, EDGE, VERTEX, SHAPE }; - - - /*! - * State of shape relatively geometrical surface like plane, sphere or cylinder. - * Is used in functions GEOM_IShapesOperations.GetShapesOn() - */ - enum shape_state - { - /*! Shape is on surface */ - ST_ON, - - /*! - * Shape is in the direction defined by the normal and not on surface. - * For plane it means above the plane, - * For sphere and cylinder it means outside of volume, bounded by the surface. - */ - ST_OUT, - - /*! - * Shape is in the direction defined by the normal and on surface. - * ONOUT = ON || OUT - */ - ST_ONOUT, - - /*! - * Complementary to ONOUT. - * For plane it means below the plane, - * For sphere and cylinder it means inside the volume, bounded by the surface - * (beyond axis and surface for cylinder and beyond cented and surface for sphere). - */ - ST_IN, - - /*! - * Complementary to OUT. - * ONIN = ON || IN - */ - ST_ONIN - }; - - typedef sequence string_array; - typedef sequence short_array; - typedef sequence ListOfLong; - typedef sequence ListOfDouble; - - interface GEOM_Object; - - typedef sequence ListOfGO; - - /*! - * GEOM_Object: interface of geometric object - */ - interface GEOM_Object : SALOME::GenericObj - { - - /*! - * Get an entry of the object in GEOM component. - */ - string GetEntry(); - - /*! - * Get ID of study, where the object is created. - */ - long GetStudyID(); - - /*! - * Get internal type of the object (POINT, BOX, CYLINDER, EXTRUSION...). - */ - long GetType(); - - /*! - * Get a shape_type of the object value. - */ - shape_type GetShapeType(); - - /*! - * Set name of the object. - * \param theName is a name which will be associated with this object. - */ - void SetName (in string theName); - - /*! - * Get name of the object associated with this object. - */ - string GetName(); - - /*! - * Set a Study entry where this object was published. - */ - void SetStudyEntry (in string theEntry); - - /*! - * Get a Study entry where this object was published. - */ - string GetStudyEntry(); - - /*! - * Get a list of all GEOM objects on which were the arguments - * when this object was constructed and modified. - * \note This method is supposed to be used by GUI only. - */ - ListOfGO GetDependency(); - - /*! - * Get a list of GEOM objects on which the last function that created or modified the object depends. - * \note This method is supposed to be used by GUI only. - */ - ListOfGO GetLastDependency(); - - /*! - * Get the TopoDS_Shape, for colocated case only. - */ - long getShape(); - - /*! - ###################################################################### - * Internal methods (For sub shape identification) - ###################################################################### - */ - - /*! - * Get geometric shape of the object as a byte stream - */ - SALOMEDS::TMPFile GetShapeStream(); - - /* - * Returns True if this object is not a sub shape of another object. - */ - boolean IsMainShape(); - - /* - * Get a list of ID's of sub shapes in the main shape. - * \note Internal method, suppopsed to be used only by GEOM_Client - */ - ListOfLong GetSubShapeIndices(); - - /* - * Get a main shape object to which this object is a sub shape - * \note Internal method, suppopsed to be used only by GEOM_Client - */ - GEOM_Object GetMainShape(); - - /* - * Return true if geom object representes a shape. - * For example, method return false for GEOM_MARKER - */ - boolean IsShape(); - }; - - - /*! - * GEOM_IOperations: basic methods of all geometric operations - */ - interface GEOM_IOperations : SALOME::GenericObj - { - /*! - * To know, if the operation was successfully performed - */ - boolean IsDone(); - - /*! - * Set the operation error code - * \param theErrorID is a string describing the error occured - * \note This method is supposed to be used only by interfaces inheriting from IOperations. - */ - void SetErrorCode (in string theErrorID); - - /*! - * Get the operation error code - */ - string GetErrorCode(); - - /*! - * Get ID of study, where the operation is defined - */ - long GetStudyID(); - - /*! - * Opens a new transaction - */ - void StartOperation(); - - /*! - * Closes the previously opened trasaction - */ - void FinishOperation(); - - /*! - * Aborts the previously opened transaction - */ - void AbortOperation(); - }; - - /*! - * GEOM_IBasicOperations: interface for basic geometry creation - * (Point, Vector, Plane, Marker) - */ - interface GEOM_IBasicOperations : GEOM_IOperations - { - /*! - * Create point by three coordinates. - * \param theX The X coordinate of the point. - * \param theY The Y coordinate of the point. - * \param theZ The Z coordinate of the point. - * \return New GEOM_Object, containing the created point. - */ - GEOM_Object MakePointXYZ (in double theX, in double theY, in double theZ); - - /*! - * Create a point, distant from the referenced point - * on the given distances along the coordinate axes. - * \param theReference The referenced point. - * \param theX Displacement from the referenced point along OX axis. - * \param theY Displacement from the referenced point along OY axis. - * \param theZ Displacement from the referenced point along OZ axis. - * \return New GEOM_Object, containing the created point. - */ - GEOM_Object MakePointWithReference (in GEOM_Object theReference, - in double theX, in double theY, in double theZ); - - /*! - * Create a point, corresponding to the given parameter on the given curve. - * \param theRefCurve The referenced curve. - * \param theParameter Value of parameter on the referenced curve. - * \return New GEOM_Object, containing the created point. - */ - GEOM_Object MakePointOnCurve (in GEOM_Object theRefCurve, - in double theParameter); - - /*! - * Create a vector with the given components. - * \param theDX X component of the vector. - * \param theDY Y component of the vector. - * \param theDZ Z component of the vector. - * \return New GEOM_Object, containing the created vector. - */ - GEOM_Object MakeVectorDXDYDZ (in double theDX, - in double theDY, - in double theDZ); - - /*! - * Create a vector between two points. - * \param thePnt1 Start point for the vector. - * \param thePnt2 End point for the vector. - * \return New GEOM_Object, containing the created vector. - */ - GEOM_Object MakeVectorTwoPnt (in GEOM_Object thePnt1, in GEOM_Object thePnt2); - - /*! - * Create a line, passing through the given point - * and parrallel to the given direction - * \param thePnt Point. The resulting line will pass through it. - * \param theDir Direction. The resulting line will be parallel to it. - * \return New GEOM_Object, containing the created line. - */ - GEOM_Object MakeLine (in GEOM_Object thePnt, in GEOM_Object theDir); - - /*! - * Create a line, passing through the given points - * \param thePnt1 First of two points, defining the line. - * \param thePnt2 Second of two points, defining the line. - * \return New GEOM_Object, containing the created line. - */ - GEOM_Object MakeLineTwoPnt (in GEOM_Object thePnt1, in GEOM_Object thePnt2); - - /*! - * Create a plane, passing through the three given points - * \param thePnt1 First of three points, defining the plane. - * \param thePnt2 Second of three points, defining the plane. - * \param thePnt3 Fird of three points, defining the plane. - * \param theTrimSize Half size of a side of quadrangle face, representing the plane. - * \return New GEOM_Object, containing the created plane. - */ - GEOM_Object MakePlaneThreePnt (in GEOM_Object thePnt1, - in GEOM_Object thePnt2, - in GEOM_Object thePnt3, - in double theTrimSize); - - /*! - * Create a plane, passing through the given point - * and normal to the given vector. - * \param thePnt Point, the plane has to pass through. - * \param theVec Vector, defining the plane normal direction. - * \param theTrimSize Half size of a side of quadrangle face, representing the plane. - * \return New GEOM_Object, containing the created plane. - */ - GEOM_Object MakePlanePntVec (in GEOM_Object thePnt, - in GEOM_Object theVec, - in double theTrimSize); - - /*! - * Create a plane, similar to the existing one, but with another size of representing face. - * \param theFace Referenced plane. - * \param theTrimSize New half size of a side of quadrangle face, representing the plane. - * \return New GEOM_Object, containing the created plane. - */ - GEOM_Object MakePlaneFace (in GEOM_Object theFace, - in double theTrimSize); - - /*! - * Create a local coordinate system. - * \param theOX,theOY,theOZ Three coordinates of coordinate system origin. - * \param theXDX,theXDY,theXDZ Three components of OX direction - * \param theYDX,theYDY,theYDZ Three components of OY direction - * \return New GEOM_Object, containing the created coordinate system. - */ - GEOM_Object MakeMarker (in double theOX , in double theOY , in double theOZ, - in double theXDX, in double theXDY, in double theXDZ, - in double theYDX, in double theYDY, in double theYDZ); - }; - - interface GEOM_ITransformOperations : GEOM_IOperations - { - /*! - * Translate the given object along the vector, specified by its end points. - * \param theObject The object to be translated. - * \param thePoint1 Start point of translation vector. - * \param thePoint2 End point of translation vector. - * \return theObject. - */ - GEOM_Object TranslateTwoPoints (in GEOM_Object theObject, - in GEOM_Object thePoint1, - in GEOM_Object thePoint2); - - /*! - * Translate the given object along the vector, specified - * by its end points, creating its copy before the translation. - * \param theObject The object to be translated. - * \param thePoint1 Start point of translation vector. - * \param thePoint2 End point of translation vector. - * \return New GEOM_Object, containing the translated object. - */ - GEOM_Object TranslateTwoPointsCopy (in GEOM_Object theObject, - in GEOM_Object thePoint1, - in GEOM_Object thePoint2); - - /*! - * Translate the given object along the vector, specified by its components. - * \param theObject The object to be translated. - * \param theDX,theDY,theDZ Components of translation vector. - * \return theObject. - */ - GEOM_Object TranslateDXDYDZ (in GEOM_Object theObject, - in double theDX, in double theDY, in double theDZ); - - /*! - * Translate the given object along the vector, specified - * by its components, creating its copy before the translation. - * \param theObject The object to be translated. - * \param theDX,theDY,theDZ Components of translation vector. - * \return New GEOM_Object, containing the translated object. - */ - GEOM_Object TranslateDXDYDZCopy (in GEOM_Object theObject, - in double theDX, in double theDY, in double theDZ); - - - /*! - * Translate the given object along the given vector. - * \param theObject The object to be translated. - * \param theVector Translation vector, giving both direction and distance. - * \return theObject. - */ - GEOM_Object TranslateVector (in GEOM_Object theObject, - in GEOM_Object theVector); - - /*! - * Translate the given object along the given vector, - * creating its copy before the translation. - * \param theObject The object to be translated. - * \param theVector Translation vector, giving both direction and distance. - * \return New GEOM_Object, containing the translated object. - */ - GEOM_Object TranslateVectorCopy (in GEOM_Object theObject, - in GEOM_Object theVector); - - /*! - * Translate the given object along the given vector a given number times - * \param theObject The object to be translated. - * \param theVector Direction of the translation. - * \param theStep Distance to translate on. - * \param theNbTimes Quantity of translations to be done. - * \return New GEOM_Object, containing compound of all - * the shapes, obtained after each translation. - */ - GEOM_Object MultiTranslate1D (in GEOM_Object theObject, - in GEOM_Object theVector, - in double theStep, - in long theNbTimes); - - /*! - * Conseqently apply two specified translations to theObject specified number of times. - * \param theObject The object to be translated. - * \param theVector1 Direction of the first translation. - * \param theStep1 Step of the first translation. - * \param theNbTimes1 Quantity of translations to be done along theVector1. - * \param theVector2 Direction of the second translation. - * \param theStep2 Step of the second translation. - * \param theNbTimes2 Quantity of translations to be done along theVector2. - * \return New GEOM_Object, containing compound of all - * the shapes, obtained after each translation. - */ - GEOM_Object MultiTranslate2D (in GEOM_Object theObject, - in GEOM_Object theVector1, - in double theStep1, - in long theNbTimes1, - in GEOM_Object theVector2, - in double theStep2, - in long theNbTimes2); - - /*! - * Rotate the given object around the given axis on the given angle. - * \param theObject The object to be rotated. - * \param theAxis Rotation axis. - * \param theAngle Rotation angle in radians. - * \return theObject. - */ - GEOM_Object Rotate (in GEOM_Object theObject, - in GEOM_Object theAxis, - in double theAngle); - - /*! - * Rotate the given object around the given axis - * on the given angle, creating its copy before the rotatation. - * \param theObject The object to be rotated. - * \param theAxis Rotation axis. - * \param theAngle Rotation angle in radians. - * \return New GEOM_Object, containing the rotated object. - */ - GEOM_Object RotateCopy (in GEOM_Object theObject, - in GEOM_Object theAxis, - in double theAngle); - - /*! - * Rotate the given object around the given axis a given number times. - * Rotation angle will be 2*PI/theNbTimes. - * \param theObject The object to be rotated. - * \param theAxis The rotation axis. - * \param theNbTimes Quantity of rotations to be done. - * \return New GEOM_Object, containing compound of all the - * shapes, obtained after each rotation. - */ - GEOM_Object MultiRotate1D (in GEOM_Object theObject, - in GEOM_Object theAxis, - in long theNbTimes); - - /*! - * Rotate the given object around the - * given axis on the given angle a given number - * times and multi-translate each rotation result. - * Translation direction passes through center of gravity - * of rotated shape and its projection on the rotation axis. - * \param theObject The object to be rotated. - * \param theAxis Rotation axis. - * \param theAngle Rotation angle in graduces. - * \param theNbTimes1 Quantity of rotations to be done. - * \param theStep Translation distance. - * \param theNbTimes2 Quantity of translations to be done. - * \return New GEOM_Object, containing compound of all the - * shapes, obtained after each transformation. - */ - GEOM_Object MultiRotate2D (in GEOM_Object theObject, - in GEOM_Object theAxis, - in double theAngle, - in long theNbTimes1, - in double theStep, - in long theNbTimes2); - - /*! - * Replace the given object by an object, - * symmetrical to it relatively the given plane. - * \param theObject The object to be mirrored. - * \param thePlane Plane of symmetry. - */ - GEOM_Object MirrorPlane (in GEOM_Object theObject, in GEOM_Object thePlane); - - /*! - * Create an object, symmetrical - * to the given one relatively the given plane. - * \param theObject The object to be mirrored. - * \param thePlane Plane of symmetry. - * \return New GEOM_Object, containing the mirrored shape. - */ - GEOM_Object MirrorPlaneCopy (in GEOM_Object theObject, in GEOM_Object thePlane); - - /*! - * Replace the given object by an object, - * symmetrical to it relatively the given axis. - * \param theObject The object to be mirrored. - * \param theAxis Axis of symmetry. - * \return theObject. - */ - GEOM_Object MirrorAxis (in GEOM_Object theObject, in GEOM_Object theAxis); - - /*! - * Create an object, symmetrical - * to the given one relatively the given axis. - * \param theObject The object to be mirrored. - * \param theAxis Axis of symmetry. - * \return New GEOM_Object, containing the mirrored object. - */ - GEOM_Object MirrorAxisCopy (in GEOM_Object theObject, in GEOM_Object theAxis); - - /*! - * Replace the given object by an object, symmetrical to it relatively the given point. - * \param theObject The object to be mirrored. - * \param thePoint Point of symmetry. - * \return theObject. - */ - GEOM_Object MirrorPoint (in GEOM_Object theObject, in GEOM_Object thePoint); - - /*! - * Create an object, symmetrical to the given one relatively the given point. - * \param theObject The object to be mirrored. - * \param thePoint Point of symmetry. - * \return New GEOM_Object, containing the mirrored object. - */ - GEOM_Object MirrorPointCopy (in GEOM_Object theObject, in GEOM_Object thePoint); - - /*! - * Replace the given object by its offset. - * \param theObject The base object for the offset. - * \param theOffset Offset value. - * \return theObject. - */ - GEOM_Object OffsetShape (in GEOM_Object theObject, in double theOffset); - - /*! - * Create new object as offset of the given one. - * \param theObject The base object for the offset. - * \param theOffset Offset value. - * \return New GEOM_Object, containing the offset object. - */ - GEOM_Object OffsetShapeCopy (in GEOM_Object theObject, in double theOffset); - - /*! - * Scale the given object by the factor. - * \param theObject The object to be scaled. - * \param thePoint Center point for scaling. - * \param theFactor Scaling factor value. - * \return theObject. - */ - GEOM_Object ScaleShape (in GEOM_Object theObject, in GEOM_Object thePoint, - in double theFactor); - - /*! - * Scale the given object by the factor, creating its copy before the scaling. - * \param theObject The object to be scaled. - * \param thePoint Center point for scaling. - * \param theFactor Scaling factor value. - * \return New GEOM_Object, containing the scaled shape. - */ - GEOM_Object ScaleShapeCopy (in GEOM_Object theObject, in GEOM_Object thePoint, - in double theFactor); - - /*! - * Modify the Location of the given object by LCS - */ - GEOM_Object PositionShape (in GEOM_Object theObject, - in GEOM_Object theStartLCS, - in GEOM_Object theEndLCS); - - /*! - * Modify the Location of the given object by LCS - * creating its copy before the setting - */ - GEOM_Object PositionShapeCopy (in GEOM_Object theObject, - in GEOM_Object theStartLCS, - in GEOM_Object theEndLCS); - }; - - /*! - * GEOM_I3DPrimOperations: Interface for 3D primitives creation - * Box, Cylinder, Cone, Sphere, Prism (extrusion), - * Pipe (extrusion along contour), Revolution, Solid (from shell). - */ - interface GEOM_I3DPrimOperations : GEOM_IOperations - { - /*! - * Create a box with specified dimensions along the coordinate axes - * and with edges, parallel to the coordinate axes. - * Center of the box will be at point (DX/2, DY/2, DZ/2). - * \param theDX Length of Box edges, parallel to OX axis. - * \param theDY Length of Box edges, parallel to OY axis. - * \param theDZ Length of Box edges, parallel to OZ axis. - * \return New GEOM_Object, containing the created box. - */ - GEOM_Object MakeBoxDXDYDZ (in double theDX, in double theDY, in double theDZ); - - /*! - * Create a box with two specified opposite vertices, - * and with edges, parallel to the coordinate axes - * \param thePnt1 First of two opposite vertices. - * \param thePnt2 Second of two opposite vertices. - * \return New GEOM_Object, containing the created box. - */ - GEOM_Object MakeBoxTwoPnt (in GEOM_Object thePnt1, in GEOM_Object thePnt2); - - /*! - * Create a cylinder with given radius and height at - * the origin of coordinate system. Axis of the cylinder - * will be collinear to the OZ axis of the coordinate system. - * \param theR Cylinder radius. - * \param theH Cylinder height. - * \return New GEOM_Object, containing the created cylinder. - */ - GEOM_Object MakeCylinderRH (in double theR, in double theH); - - /*! - * Create a cylinder with given base point, axis, radius and height. - * \param thePnt Central point of cylinder base. - * \param theAxis Cylinder axis. - * \param theR Cylinder radius. - * \param theH Cylinder height. - * \return New GEOM_Object, containing the created cylinder. - */ - GEOM_Object MakeCylinderPntVecRH (in GEOM_Object thePnt, - in GEOM_Object theAxis, - in double theR, - in double theH); - - /*! - * Create a cone with given height and radiuses at - * the origin of coordinate system. Axis of the cone will - * be collinear to the OZ axis of the coordinate system. - * \param theR1 Radius of the first cone base. - * \param theR2 Radius of the second cone base. - * \note If both radiuses are non-zero, the cone will be truncated. - * \note If the radiuses are equal, a cylinder will be created instead. - * \param theH Cone height. - * \return New GEOM_Object, containing the created cone. - */ - GEOM_Object MakeConeR1R2H (in double theR1, in double theR2, in double theH); - - /*! - * Create a cone with given base point, axis, height and radiuses. - * \param thePnt Central point of the first cone base. - * \param theAxis Cone axis. - * \param theR1 Radius of the first cone base. - * \param theR2 Radius of the second cone base. - * \note If both radiuses are non-zero, the cone will be truncated. - * \note If the radiuses are equal, a cylinder will be created instead. - * \param theH Cone height. - * \return New GEOM_Object, containing the created cone. - */ - GEOM_Object MakeConePntVecR1R2H (in GEOM_Object thePnt, - in GEOM_Object theAxis, - in double theR1, - in double theR2, - in double theH); - - /*! - * Create a torus with given radiuses at the origin of coordinate system. - * \param theRMajor Torus major radius. - * \param theRMinor Torus minor radius. - * \return New GEOM_Object, containing the created torus. - */ - GEOM_Object MakeTorusRR (in double theRMajor, - in double theRMinor); - - /*! - * Create a torus with given center, normal vector and radiuses. - * \param thePnt Torus central point. - * \param theVec Torus axis of symmetry. - * \param theRMajor Torus major radius. - * \param theRMinor Torus minor radius. - * \return New GEOM_Object, containing the created torus. - */ - GEOM_Object MakeTorusPntVecRR (in GEOM_Object thePnt, - in GEOM_Object theVec, - in double theRMajor, - in double theRMinor); - - /*! - * Create a sphere with given radius at the origin of coordinate system. - * \param theR Sphere radius. - * \return New GEOM_Object, containing the created sphere. - */ - GEOM_Object MakeSphereR (in double theR); - - /*! - * Create a sphere with given center and radius. - * \param thePnt Sphere center. - * \param theR Sphere radius. - * \return New GEOM_Object, containing the created . - */ - GEOM_Object MakeSpherePntR (in GEOM_Object thePnt, in double theR); - - /*! - * Create a shape by extrusion of the base shape along the vector, - * i.e. all the space, transfixed by the base shape during its translation - * along the vector on the given distance. - * \param theBase Base shape to be extruded. - * \param theVec Direction of extrusion. - * \param theH Prism dimension along theVec. - * \return New GEOM_Object, containing the created prism. - */ - GEOM_Object MakePrismVecH (in GEOM_Object theBase, - in GEOM_Object theVec, - in double theH); - - /*! - * Create a shape by extrusion of the base shape along a vector, defined by two points. - * \param theBase Base shape to be extruded. - * \param thePoint1 First end of extrusion vector. - * \param thePoint2 Second end of extrusion vector. - * \return New GEOM_Object, containing the created prism. - */ - GEOM_Object MakePrismTwoPnt (in GEOM_Object theBase, - in GEOM_Object thePoint1, - in GEOM_Object thePoint2); - - /*! - * Create a shape by extrusion of the base shape along - * the path shape. The path shape can be a wire or an edge. - * \param theBase Base shape to be extruded. - * \param thePath Path shape to extrude the base shape along it. - * \return New GEOM_Object, containing the created pipe. - */ - GEOM_Object MakePipe (in GEOM_Object theBase, in GEOM_Object thePath); - - /*! - * Create a shape by revolution of the base shape around the axis - * on the given angle, i.e. all the space, transfixed by the base - * shape during its rotation around the axis on the given angle. - * \param theBase Base shape to be rotated. - * \param theAxis Rotation axis. - * \param theAngle Rotation angle in radians. - * \return New GEOM_Object, containing the created revolution. - */ - GEOM_Object MakeRevolutionAxisAngle (in GEOM_Object theBase, - in GEOM_Object theAxis, - in double theAngle); - - /*! - * Create a filling from the given compound of contours. - * \param theMinDeg a minimal degree - * \param theMaxDeg a maximal degree - * \param theTol2D a 2d tolerance - * \param theTol3D a 3d tolerance - * \param theNbIter a number of iteration - * \return New GEOM_Object, containing the created filling surface. - */ - GEOM_Object MakeFilling (in GEOM_Object theShape, - in long theMinDeg, in long theMaxDeg, - in double theTol2D, in double theTol3D, - in long theNbIter); - }; - - /*! - * GEOM_IShapesOperations: Interface for Shapes creation: - * Edge from two points, Wire from edges, Face from wire, - * Shell from faces, Solid from shells, Compound from shapes - */ - interface GEOM_IShapesOperations : GEOM_IOperations - { - /*! - * Create a linear edge with specified ends. - * \param thePnt1 Point for the first end of edge. - * \param thePnt2 Point for the second end of edge. - * \return New GEOM_Object, containing the created edge. - */ - GEOM_Object MakeEdge (in GEOM_Object thePnt1, in GEOM_Object thePnt2); - - /*! - * Create a wire from the set of edges and wires. - * \param theEdgesAndWires List of edge and/or wires. - * \return New GEOM_Object, containing the created wire. - */ - GEOM_Object MakeWire (in ListOfGO theEdgesAndWires); - - /*! - * Create a face on the given wire. - * \param theWire Wire to build the face on. - * \param isPlanarWanted If TRUE, only planar face will be built. - * If impossible, NULL object will be returned. - * \return New GEOM_Object, containing the created face. - */ - GEOM_Object MakeFace (in GEOM_Object theWire, in boolean isPlanarWanted); - - /*! - * Create a face on the given wires set. - * \param theWires List of wires to build the face on. - * \param isPlanarWanted If TRUE, only planar face will be built. - * If impossible, NULL object will be returned. - * \return New GEOM_Object, containing the created face. - */ - GEOM_Object MakeFaceWires (in ListOfGO theWires, in boolean isPlanarWanted); - - /*! - * Create a shell from the set of faces and shells. - * \param theFacesAndShells List of faces and/or shells. - * \return New GEOM_Object, containing the created shell. - */ - GEOM_Object MakeShell (in ListOfGO theFacesAndShells); - - /*! - * Create a solid, bounded by the given shell. - * \param theShell Bounding shell. - * \return New GEOM_Object, containing the created solid. - */ - GEOM_Object MakeSolidShell (in GEOM_Object theShell); - - /*! - * Create a solid, bounded by the given shells. - * \param theShells Bounding shells. - * \return New GEOM_Object, containing the created solid. - */ - GEOM_Object MakeSolidShells (in ListOfGO theShells); - - /*! - * Create a compound of the given shapes. - * \param theShapes List of shapes to put in compound. - * \return New GEOM_Object, containing the created compound. - */ - GEOM_Object MakeCompound (in ListOfGO theShapes); - - /*! - * Replace coincident faces in theShape by one face. - * \param theShape Initial shape. - * \param theTolerance Maximum distance between faces, which can be considered as coincident. - * \return New GEOM_Object, containing a copy of theShape without coincident faces. - */ - GEOM_Object MakeGlueFaces (in GEOM_Object theShape, in double theTolerance); - - /*! - * Explode a shape on subshapes of a given type. - * \param theShape Shape to be exploded. - * \param theShapeType Type of sub-shapes to be retrieved. - * \param isSorted If this parameter is TRUE, sub-shapes will be - * sorted by coordinates of their gravity centers. - * \return List of sub-shapes of type theShapeType, contained in theShape. - */ - ListOfGO MakeExplode (in GEOM_Object theShape, - in long theShapeType, - in boolean isSorted); - - /*! - * Explode a shape on subshapes of a given type. - * Does the same, as the above method, but returns IDs of sub-shapes, - * not GEOM_Objects. It works faster. - * \param theShape Shape to be exploded. - * \param theShapeType Type of sub-shapes to be retrieved. - * \param isSorted If this parameter is TRUE, sub-shapes will be - * sorted by coordinates of their gravity centers. - * \return List of IDs of sub-shapes of type theShapeType, contained in theShape. - */ - ListOfLong SubShapeAllIDs (in GEOM_Object theShape, - in long theShapeType, - in boolean isSorted); - - /*! - * Get a sub shape defined by its unique ID inside \a theMainShape - * \note The sub shape GEOM_Objects can has ONLY ONE function. - * Don't try to apply modification operations on them. - */ - GEOM_Object GetSubShape (in GEOM_Object theMainShape, - in long theID); - - /*! - * Count number of faces in the given shape. - * \param theShape Shape to count faces in. - * \return Number of faces in the given shape. - */ - long NumberOfFaces (in GEOM_Object theShape); - - /*! - * Count number of edges in the given shape. - * \param theShape Shape to count edges in. - * \return Number of edges in theShape. - */ - long NumberOfEdges (in GEOM_Object theShape); - - /*! - * Reverses an orientation the given shape. - * \param theShape Shape to be reversed. - * \return The reversed copy of theShape. - */ - GEOM_Object ChangeOrientation (in GEOM_Object theShape); - - /*! - * Retrieve all free faces from the given shape. - * Free face is a face, which is not shared between two shells of the shape. - * \param theShape Shape to find free faces in. - * \return List of IDs of all free faces, contained in theShape. - */ - ListOfLong GetFreeFacesIDs (in GEOM_Object theShape); - - /*! - * Get all sub-shapes of theShape1 of the given type, shared with theShape2. - * \param theShape1 Shape to find sub-shapes in. - * \param theShape2 Shape to find shared sub-shapes with. - * \param theShapeType Type of sub-shapes to be retrieved. - * \return List of sub-shapes of theShape1, shared with theShape2. - */ - ListOfGO GetSharedShapes (in GEOM_Object theShape1, - in GEOM_Object theShape2, - in long theShapeType); - - /*! - * Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively - * the specified plane by the certain way, defined through \a theState parameter. - * \param theShape Shape to find sub-shapes of. - * \param theShapeType Type of sub-shapes to be retrieved. - * \param theAx1 Vector (or line, or linear edge), specifying normal - * direction and location of the plane to find shapes on. - * \param theState The state of the subshapes to find. - * \return List of all found sub-shapes. - */ - ListOfGO GetShapesOnPlane (in GEOM_Object theShape, - in long theShapeType, - in GEOM_Object theAx1, - in shape_state theState); - - /*! - * Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively - * the specified cylinder by the certain way, defined through \a theState parameter. - * \param theShape Shape to find sub-shapes of. - * \param theShapeType Type of sub-shapes to be retrieved. - * \param theAxis Vector (or line, or linear edge), specifying - * axis of the cylinder to find shapes on. - * \param theRadius Radius of the cylinder to find shapes on. - * \param theState The state of the subshapes to find. - * \return List of all found sub-shapes. - */ - ListOfGO GetShapesOnCylinder (in GEOM_Object theShape, - in long theShapeType, - in GEOM_Object theAxis, - in double theRadius, - in shape_state theState); - - /*! - * Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively - * the specified sphere by the certain way, defined through \a theState parameter. - * \param theShape Shape to find sub-shapes of. - * \param theShapeType Type of sub-shapes to be retrieved. - * \param theCenter Point, specifying center of the sphere to find shapes on. - * \param theRadius Radius of the sphere to find shapes on. - * \param theState The state of the subshapes to find. - * \return List of all found sub-shapes. - */ - ListOfGO GetShapesOnSphere (in GEOM_Object theShape, - in long theShapeType, - in GEOM_Object theCenter, - in double theRadius, - in shape_state theState); - - /*! - * Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively - * the specified plane by the certain way, defined through \a theState parameter. - * \param theShape Shape to find sub-shapes of. - * \param theShapeType Type of sub-shapes to be retrieved. - * \param theAx1 Vector (or line, or linear edge), specifying normal - * direction and location of the plane to find shapes on. - * \param theState The state of the subshapes to find. - * \return List of IDs of all found sub-shapes. - */ - ListOfLong GetShapesOnPlaneIDs (in GEOM_Object theShape, - in long theShapeType, - in GEOM_Object theAx1, - in shape_state theState); - - /*! - * Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively - * the specified cylinder by the certain way, defined through \a theState parameter. - * \param theShape Shape to find sub-shapes of. - * \param theShapeType Type of sub-shapes to be retrieved. - * \param theAxis Vector (or line, or linear edge), specifying - * axis of the cylinder to find shapes on. - * \param theRadius Radius of the cylinder to find shapes on. - * \param theState The state of the subshapes to find. - * \return List of IDs of all found sub-shapes. - */ - ListOfLong GetShapesOnCylinderIDs (in GEOM_Object theShape, - in long theShapeType, - in GEOM_Object theAxis, - in double theRadius, - in shape_state theState); - - /*! - * Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively - * the specified sphere by the certain way, defined through \a theState parameter. - * \param theShape Shape to find sub-shapes of. - * \param theShapeType Type of sub-shapes to be retrieved. - * \param theCenter Point, specifying center of the sphere to find shapes on. - * \param theRadius Radius of the sphere to find shapes on. - * \param theState The state of the subshapes to find. - * \return List of IDs of all found sub-shapes. - */ - ListOfLong GetShapesOnSphereIDs (in GEOM_Object theShape, - in long theShapeType, - in GEOM_Object theCenter, - in double theRadius, - in shape_state theState); - - /*! - * Get sub-shape(s) of theShapeWhere, which are - * coincident with \a theShapeWhat or could be a part of it. - * \param theShapeWhere Shape to find sub-shapes of. - * \param theShapeWhat Shape, specifying what to find. - * \return Group of all found sub-shapes or a single found sub-shape. - */ - GEOM_Object GetInPlace (in GEOM_Object theShapeWhere, - in GEOM_Object theShapeWhat); - }; - - /*! - * GEOM_IBlocksOperations: Interface for Blocks construction - * Face from points or edges, Block from faces, - * Blocks multi-translation and multi-rotation - */ - interface GEOM_IBlocksOperations : GEOM_IOperations - { - /*! - * Creation of blocks - */ - - /*! - * Create a quadrangle face from four edges. Order of Edges is not - * important. It is not necessary that edges share the same vertex. - * \param theEdge1,theEdge2,theEdge3,theEdge4 Edges for the face bound. - * \return New GEOM_Object, containing the created face. - */ - GEOM_Object MakeQuad (in GEOM_Object theEdge1, - in GEOM_Object theEdge2, - in GEOM_Object theEdge3, - in GEOM_Object theEdge4); - - /*! - * Create a quadrangle face on two edges. - * The missing edges will be built by creating the shortest ones. - * \param theEdge1,theEdge2 Two opposite edges for the face. - * \return New GEOM_Object, containing the created face. - */ - GEOM_Object MakeQuad2Edges (in GEOM_Object theEdge1, - in GEOM_Object theEdge2); - - /*! - * Create a quadrangle face with specified corners. - * The missing edges will be built by creating the shortest ones. - * \param thePnt1,thePnt2,thePnt3,thePnt4 Corner vertices for the face. - * \return New GEOM_Object, containing the created face. - */ - GEOM_Object MakeQuad4Vertices (in GEOM_Object thePnt1, - in GEOM_Object thePnt2, - in GEOM_Object thePnt3, - in GEOM_Object thePnt4); - - /*! - * Create a hexahedral solid, bounded by the six given faces. Order of - * faces is not important. It is not necessary that Faces share the same edge. - * \param theFace1-theFace6 Faces for the hexahedral solid. - * \return New GEOM_Object, containing the created solid. - */ - GEOM_Object MakeHexa (in GEOM_Object theFace1, - in GEOM_Object theFace2, - in GEOM_Object theFace3, - in GEOM_Object theFace4, - in GEOM_Object theFace5, - in GEOM_Object theFace6); - - /*! - * Create a hexahedral solid between two given faces. - * The missing faces will be built by creating the smallest ones. - * \param theFace1,theFace2 Two opposite faces for the hexahedral solid. - * \return New GEOM_Object, containing the created solid. - */ - GEOM_Object MakeHexa2Faces (in GEOM_Object theFace1, - in GEOM_Object theFace2); - - /*! - * Extract elements of blocks and blocks compounds - */ - - /*! - * Get a vertex, found in the given shape by its coordinates. - * \param theShape Block or a compound of blocks. - * \param theX,theY,theZ Coordinates of the sought vertex. - * \param theEpsilon Maximum allowed distance between the resulting - * vertex and point with the given coordinates. - * \return New GEOM_Object, containing the found vertex. - */ - GEOM_Object GetPoint (in GEOM_Object theShape, - in double theX, - in double theY, - in double theZ, - in double theEpsilon); - - /*! - * Get an edge, found in the given shape by two given vertices. - * \param theShape Block or a compound of blocks. - * \param thePoint1,thePoint2 Points, close to the ends of the desired edge. - * \return New GEOM_Object, containing the found edge. - */ - GEOM_Object GetEdge (in GEOM_Object theShape, - in GEOM_Object thePoint1, - in GEOM_Object thePoint2); - - /*! - * Find an edge of the given shape, which has minimal distance to the given point. - * \param theShape Block or a compound of blocks. - * \param thePoint Point, close to the desired edge. - * \return New GEOM_Object, containing the found edge. - */ - GEOM_Object GetEdgeNearPoint (in GEOM_Object theShape, - in GEOM_Object thePoint); - - /*! - * Returns a face, found in the given shape by four given corner vertices. - * \param theShape Block or a compound of blocks. - * \param thePoint1-thePoint4 Points, close to the corners of the desired face. - * \return New GEOM_Object, containing the found face. - */ - GEOM_Object GetFaceByPoints (in GEOM_Object theShape, - in GEOM_Object thePoint1, - in GEOM_Object thePoint2, - in GEOM_Object thePoint3, - in GEOM_Object thePoint4); - - /*! - * Get a face of block, found in the given shape by two given edges. - * \param theShape Block or a compound of blocks. - * \param theEdge1,theEdge2 Edges, close to the edges of the desired face. - * \return New GEOM_Object, containing the found face. - */ - GEOM_Object GetFaceByEdges (in GEOM_Object theShape, - in GEOM_Object theEdge1, - in GEOM_Object theEdge2); - - /*! - * Find a face, opposite to the given one in the given block. - * \param theBlock Must be a hexahedral solid. - * \param theFace Face of \a theBlock, opposite to the desired face. - * \return New GEOM_Object, containing the found face. - */ - GEOM_Object GetOppositeFace (in GEOM_Object theBlock, - in GEOM_Object theFace); - - /*! - * Find a face of the given shape, which has minimal distance to the given point. - * \param theShape Block or a compound of blocks. - * \param thePoint Point, close to the desired face. - * \return New GEOM_Object, containing the found face. - */ - GEOM_Object GetFaceNearPoint (in GEOM_Object theShape, - in GEOM_Object thePoint); - - /*! - * Find a face of block, whose outside normale has minimal angle with the given vector. - * \param theShape Block or a compound of blocks. - * \param theVector Vector, close to the normale of the desired face. - * \return New GEOM_Object, containing the found face. - */ - GEOM_Object GetFaceByNormale (in GEOM_Object theBlock, - in GEOM_Object theVector); - - /*! - * Extract blocks from blocks compounds - */ - - /*! - * Check, if the compound contains only specified blocks. - * \param theCompound The compound to check. - * \param theMinNbFaces If solid has lower number of faces, it is not a block. - * \param theMaxNbFaces If solid has higher number of faces, it is not a block. - * \note If theMaxNbFaces = 0, the maximum number of faces is not restricted. - * \return TRUE, if the given compound contains only blocks. - * \return theNbBlocks Number of specified blocks in theCompound. - */ - boolean IsCompoundOfBlocks (in GEOM_Object theCompound, - in long theMinNbFaces, - in long theMaxNbFaces, - out long theNbBlocks); - - /*! - * Enumeration of Blocks Compound defects. - */ - enum BCErrorType - { - /* Each element of the compound should be a Block */ - NOT_BLOCK, - - /* An element is a potential block, but has degenerated and/or seam edge(s). */ - EXTRA_EDGE, - - /* A connection between two Blocks should be an entire face or an entire edge */ - INVALID_CONNECTION, - - /* The compound should be connexe */ - NOT_CONNECTED, - - /* The glue between two quadrangle faces should be applied */ - NOT_GLUED - }; - - /*! - * Description of Blocks Compound defect: type and incriminated sub-shapes. - */ - struct BCError - { - BCErrorType error; - ListOfLong incriminated; - }; - - /*! - * Sequence of all Blocks Compound defects. - */ - typedef sequence BCErrors; - - /*! - * Check, if the compound of blocks is given. - * To be considered as a compound of blocks, the - * given shape must satisfy the following conditions: - * - Each element of the compound should be a Block (6 faces and 12 edges). - * - A connection between two Blocks should be an entire quadrangle face or an entire edge. - * - The compound should be connexe. - * - The glue between two quadrangle faces should be applied. - * \note Single block is also accepted as a valid compound of blocks. - * \param theCompound The compound to check. - * \return TRUE, if the given shape is a compound of blocks. - * \return theErrors Structure, containing discovered errors and incriminated sub-shapes. - */ - boolean CheckCompoundOfBlocks (in GEOM_Object theCompound, - out BCErrors theErrors); - - /*! - * Convert sequence of Blocks Compound errors, returned by - * CheckCompoundOfBlocks(), into string. - * \param theCompound The bad compound. - * \param theErrors The sequence of \a theCompound errors. - * \return String, describing all the errors in form, suitable for printing. - */ - string PrintBCErrors (in GEOM_Object theCompound, - in BCErrors theErrors); - - /*! - * Remove all seam and degenerated edges from \a theShape. - * Unite faces and edges, sharing one surface. - * \param theShape The compound or single solid to remove irregular edges from. - * \return Improved shape. - */ - GEOM_Object RemoveExtraEdges (in GEOM_Object theShape); - - /*! - * Check, if the given shape is a blocks compound. - * Fix all detected errors. - * \note Single block can be also fixed by this method. - * \param theCompound The compound to check and improve. - * \return Improved compound. - */ - GEOM_Object CheckAndImprove (in GEOM_Object theCompound); - - /*! - * Get all the blocks, contained in the given compound. - * \param theCompound The compound to explode. - * \param theMinNbFaces If solid has lower number of faces, it is not a block. - * \param theMaxNbFaces If solid has higher number of faces, it is not a block. - * \note If theMaxNbFaces = 0, the maximum number of faces is not restricted. - * \return List of GEOM_Objects, containing the retrieved blocks. - */ - ListOfGO ExplodeCompoundOfBlocks (in GEOM_Object theCompound, - in long theMinNbFaces, - in long theMaxNbFaces); - - /*! - * Find block, containing the given point inside its volume or on boundary. - * \param theCompound Compound, to find block in. - * \param thePoint Point, close to the desired block. If the point lays on - * boundary between some blocks, we return block with nearest center. - * \return New GEOM_Object, containing the found block. - */ - GEOM_Object GetBlockNearPoint (in GEOM_Object theCompound, - in GEOM_Object thePoint); - - /*! - * Find block, containing all the elements, passed as the parts, or maximum quantity of them. - * \param theCompound Compound, to find block in. - * \param theParts List of faces and/or edges and/or vertices to be parts of the found block. - * \return New GEOM_Object, containing the found block. - */ - GEOM_Object GetBlockByParts (in GEOM_Object theCompound, - in ListOfGO theParts); - - /*! - * Return all blocks, containing all the elements, passed as the parts. - * \param theCompound Compound, to find blocks in. - * \param theParts List of faces and/or edges and/or vertices to be parts of the found blocks. - * \return List of GEOM_Objects, containing the found blocks. - */ - ListOfGO GetBlocksByParts (in GEOM_Object theCompound, - in ListOfGO theParts); - - /*! - * Operations on blocks with gluing of result - */ - - /*! - * Multi-transformate block and glue the result. - * Transformation is defined so, as to superpose theDirFace1 with theDirFace2. - * \param theBlock Hexahedral solid to be multi-transformed. - * \param theDirFace1 First direction face global index. - * \param theDirFace2 Second direction face global index. - * \param theNbTimes Quantity of transformations to be done. - * \note Global index of sub-shape can be obtained, using method - * GEOM_ILocalOperations.GetSubShapeIndex(). - * \return New GEOM_Object, containing the result shape. - */ - GEOM_Object MakeMultiTransformation1D (in GEOM_Object theBlock, - in long theDirFace1, - in long theDirFace2, - in long theNbTimes); - - /*! - * Multi-transformate block and glue the result. - * \param theBlock Hexahedral solid to be multi-transformed. - * \param theDirFace1U,theDirFace2U Direction faces for the first transformation. - * \param theDirFace1V,theDirFace2V Direction faces for the second transformation. - * \param theNbTimesU,theNbTimesV Quantity of transformations to be done. - * \return New GEOM_Object, containing the result shape. - */ - GEOM_Object MakeMultiTransformation2D (in GEOM_Object theBlock, - in long theDirFace1U, - in long theDirFace2U, - in long theNbTimesU, - in long theDirFace1V, - in long theDirFace2V, - in long theNbTimesV); - - /*! - * Special operation - propagation - */ - - /*! - * Build all possible propagation groups. - * Propagation group is a set of all edges, opposite to one (main) - * edge of this group directly or through other opposite edges. - * Notion of Opposite Edge make sence only on quadrangle face. - * \param theShape Shape to build propagation groups on. - * \return List of GEOM_Objects, each of them is a propagation group. - */ - ListOfGO Propagate (in GEOM_Object theShape); - }; - - /*! - * GEOM_IBooleanOperations: Interface for boolean operations (Cut, Fuse, Common) - */ - interface GEOM_IBooleanOperations : GEOM_IOperations - { - /*! - * Perform one of boolean operations on two given shapes. - * \param theShape1 First argument for boolean operation. - * \param theShape2 Second argument for boolean operation. - * \param theOperation Indicates the operation to be done: - * 1 - Common, 2 - Cut, 3 - Fuse, 4 - Section. - * \return New GEOM_Object, containing the result shape. - */ - GEOM_Object MakeBoolean (in GEOM_Object theShape1, - in GEOM_Object theShape2, - in long theOperation); - - /*! - * Perform partition operation. - * \param theShapes Shapes to be intersected. - * \param theTools Shapes to intersect theShapes. - * \param theKeepInside Shapes, outside which the results will be deleted. - * Each shape from theKeepInside must belong to theShapes also. - * \param theRemoveInside Shapes, inside which the results will be deleted. - * Each shape from theRemoveInside must belong to theShapes also. - * \param theLimit Type of resulting shapes (corresponding to TopAbs_ShapeEnum). - * \param theRemoveWebs If TRUE, perform Glue 3D algorithm. - * \param theMaterials Material indices for each shape. Make sence, only if theRemoveWebs is TRUE. - * \return New GEOM_Object, containing the result shapes. - */ - GEOM_Object MakePartition (in ListOfGO theShapes, - in ListOfGO theTools, - in ListOfGO theKeepInside, - in ListOfGO theRemoveInside, - in short theLimit, - in boolean theRemoveWebs, - in ListOfLong theMaterials); - - /*! - * Perform partition of the Shape with the Plane - * \param theShape Shape to be intersected. - * \param thePlane Tool shape, to intersect theShape. - * \return New GEOM_Object, containing the result shape. - */ - GEOM_Object MakeHalfPartition (in GEOM_Object theShape, - in GEOM_Object thePlane); - }; - - /*! - * GEOM_ICurvesOperations: Interface for curves creation. - * Polyline, Circle, Spline (Bezier and Interpolation) - */ - interface GEOM_ICurvesOperations : GEOM_IOperations - { - /*! - * Create a circle with given center, normal vector and radius. - * \param thePnt Circle center. - * \param theVec Vector, normal to the plane of the circle. - * \param theR Circle radius. - * \return New GEOM_Object, containing the created circle. - */ - GEOM_Object MakeCirclePntVecR (in GEOM_Object thePnt, - in GEOM_Object theVec, - in double theR); - /*! - * Create a circle, passing through three given points - * \param thePnt1,thePnt2,thePnt3 Points, defining the circle. - * \return New GEOM_Object, containing the created circle. - */ - GEOM_Object MakeCircleThreePnt (in GEOM_Object thePnt1, - in GEOM_Object thePnt2, - in GEOM_Object thePnt3); - - /*! - * Create an ellipse with given center, normal vector and radiuses. - * \param thePnt Ellipse center. - * \param theVec Vector, normal to the plane of the ellipse. - * \param theRMajor Major ellipse radius. - * \param theRMinor Minor ellipse radius. - * \return New GEOM_Object, containing the created ellipse. - */ - GEOM_Object MakeEllipse (in GEOM_Object thePnt, - in GEOM_Object theVec, - in double theRMajor, - in double theRMinor); - - /*! - * Create an arc of circle, passing through three given points. - * \param thePnt1 Start point of the arc. - * \param thePnt2 Middle point of the arc. - * \param thePnt3 End point of the arc. - * \return New GEOM_Object, containing the created arc. - */ - GEOM_Object MakeArc (in GEOM_Object thePnt1, - in GEOM_Object thePnt2, - in GEOM_Object thePnt3); - - /*! - * Create a polyline on the set of points. - * \param thePoints Sequence of points for the polyline. - * \return New GEOM_Object, containing the created polyline. - */ - GEOM_Object MakePolyline (in ListOfGO thePoints); - - /*! - * Create bezier curve on the set of points. - * \param thePoints Sequence of points for the bezier curve. - * \return New GEOM_Object, containing the created bezier curve. - */ - GEOM_Object MakeSplineBezier (in ListOfGO thePoints); - - /*! - * Create B-Spline curve on the set of points. - * \param thePoints Sequence of points for the B-Spline curve. - * \return New GEOM_Object, containing the created B-Spline curve. - */ - GEOM_Object MakeSplineInterpolation (in ListOfGO thePoints); - - /*! - * Create a sketcher (wire or face), following the textual description, - * passed through \a theCommand argument. \n - * Edges of the resulting wire or face will be arcs of circles and/or linear segments. \n - * Format of the description string have to be the following: - * - * "Sketcher[:F x1 y1]:CMD[:CMD[:CMD...]]" - * - * Where: - * - x1, y1 are coordinates of the first sketcher point (zero by default), - * - CMD is one of - * - "R angle" : Set the direction by angle - * - "D dx dy" : Set the direction by DX & DY - * . - * \n - * - "TT x y" : Create segment by point at X & Y - * - "T dx dy" : Create segment by point with DX & DY - * - "L length" : Create segment by direction & Length - * - "IX x" : Create segment by direction & Intersect. X - * - "IY y" : Create segment by direction & Intersect. Y - * . - * \n - * - "C radius length" : Create arc by direction, radius and length(in degree) - * . - * \n - * - "WW" : Close Wire (to finish) - * - "WF" : Close Wire and build face (to finish) - * - * \param theCommand String, defining the sketcher in local - * coordinates of the working plane. - * \param theWorkingPlane Nine double values, defining origin, - * OZ and OX directions of the working plane. - * \return New GEOM_Object, containing the created wire. - */ - GEOM_Object MakeSketcher (in string theCommand, in ListOfDouble theWorkingPlane); - - /*! - * Create a sketcher (wire or face), following the textual description, - * passed through \a theCommand argument. \n - * For format of the description string see the previous method.\n - * \param theCommand String, defining the sketcher in local - * coordinates of the working plane. - * \param theWorkingPlane Planar Face of the working plane. - * \return New GEOM_Object, containing the created wire. - */ - GEOM_Object MakeSketcherOnPlane (in string theCommand, in GEOM_Object theWorkingPlane); - }; - - /*! - * GEOM_ILocalOperations: Interface for fillet and chamfer creation. - */ - interface GEOM_ILocalOperations : GEOM_IOperations - { - /*! - * Perform a fillet on all edges of the given shape. - * \param theShape Shape, to perform fillet on. - * \param theR Fillet radius. - * \return New GEOM_Object, containing the result shape. - */ - GEOM_Object MakeFilletAll (in GEOM_Object theShape, - in double theR); - - /*! - * Perform a fillet on the specified edges of the given shape - * \param theShape Shape, to perform fillet on. - * \param theR Fillet radius. - * \param theEdges Global indices of edges to perform fillet on. - * \note Global index of sub-shape can be obtained, using method GetSubShapeIndex(). - * \return New GEOM_Object, containing the result shape. - */ - GEOM_Object MakeFilletEdges (in GEOM_Object theShape, - in double theR, - in ListOfLong theEdges); - - /*! - * Perform a fillet on all edges of the specified faces of the given shape. - * \param theShape Shape, to perform fillet on. - * \param theR Fillet radius. - * \param theFaces Global indices of faces to perform fillet on. - * \note Global index of sub-shape can be obtained, using method GetSubShapeIndex(). - * \return New GEOM_Object, containing the result shape. - */ - GEOM_Object MakeFilletFaces (in GEOM_Object theShape, - in double theR, - in ListOfLong theFaces); - - /*! - * Perform a symmetric chamfer on all edges of the given shape. - * \param theShape Shape, to perform chamfer on. - * \param theD Chamfer size along each face. - * \return New GEOM_Object, containing the result shape. - */ - GEOM_Object MakeChamferAll (in GEOM_Object theShape, - in double theD); - - /*! - * Perform a chamfer on edges, common to the specified faces. - * with distance D1 on the Face1 - * \param theShape Shape, to perform chamfer on. - * \param theD1 Chamfer size along \a theFace1. - * \param theD2 Chamfer size along \a theFace2. - * \param theFace1,theFace2 Global indices of two faces of \a theShape. - * \note Global index of sub-shape can be obtained, using method GetSubShapeIndex(). - * \return New GEOM_Object, containing the result shape. - */ - GEOM_Object MakeChamferEdge (in GEOM_Object theShape, - in double theD1, in double theD2, - in long theFace1, in long theFace2); - - /*! - * Perform a chamfer on all edges of the specified faces. - * with distance D1 on the first specified face (if several for one edge) - * \param theShape Shape, to perform chamfer on. - * \param theD1 Chamfer size along face from \a theFaces. If both faces, - * connected to the edge, are in \a theFaces, \a theD1 - * will be get along face, which is nearer to \a theFaces beginning. - * \param theD2 Chamfer size along another of two faces, connected to the edge. - * \param theFaces Sequence of global indices of faces of \a theShape. - * \note Global index of sub-shape can be obtained, using method GetSubShapeIndex(). - * \return New GEOM_Object, containing the result shape. - */ - GEOM_Object MakeChamferFaces (in GEOM_Object theShape, - in double theD1, in double theD2, - in ListOfLong theFaces); - - /*! - * Perform an Archimde operation on the given shape with given parameters. - * The object presenting the resulting face is returned - * \param theShape Shape to be put in water. - * \param theWeight Weight og the shape. - * \param theWaterDensity Density of the water. - * \param theMeshDeflection Deflection od the mesh, using to compute the section. - * \return New GEOM_Object, containing a section of \a theShape - * by a plane, corresponding to water level. - */ - GEOM_Object MakeArchimede (in GEOM_Object theShape, - in double theWeight, - in double theWaterDensity, - in double theMeshDeflection); - - /*! - * Get global index of \a theSubShape in \a theShape. - * \param theShape Main shape. - * \param theSubShape Sub-shape of the main shape. - * \return global index of \a theSubShape in \a theShape. - */ - long GetSubShapeIndex (in GEOM_Object theShape, in GEOM_Object theSubShape); - }; - - /*! - * GEOM_IHealingOperations: Interface for shape healing operations. - * Shape Processing, SuppressFaces, etc. - */ - interface GEOM_IHealingOperations : GEOM_IOperations - { - /*! - * Apply a sequence of Shape Healing operators to the given object. - * \param theShapes Shape to be processed. - * \param theOperators List of names of operators ("FixShape", "SplitClosedFaces", etc.). - * \param theParameters List of names of parameters - * ("FixShape.Tolerance3d", "SplitClosedFaces.NbSplitPoints", etc.). - * \param theValues List of values of parameters, in the same order - * as parameters are listed in \a theParameters list. - * \return New GEOM_Object, containing processed shape. - */ - GEOM_Object ProcessShape (in GEOM_Object theShapes, - in string_array theOperators, - in string_array theParameters, - in string_array theValues); - - /*! - * Get default sequence of operators, their parameters and parameters' values - * of Shape Process operation. In the current implementation the defaults are - * read from the file pointed by CSF_ShHealingDefaults environmental variable. - * \param theOperators Output. Default list of names of operators. - * \param theParameters Output. Default list of names of parameters. - * \param theValues Output. List of default values of parameters, in the same order - * as parameters are listed in \a theParameters list. - */ - void GetShapeProcessParameters (out string_array theOperators, - out string_array theParameters, - out string_array theValues); - /*! - * Get parameters and parameters' values for the given Shape Process operation. - * In the current implementation the defaults are - * read from the file pointed by CSF_ShHealingDefaults environmental variable. - * \param theOperator Input. The operator's name. - * \param theParameters Output. Default list of names of parameters. - * \param theValues Output. List of default values of parameters, in the same order - * as parameters are listed in \a theParameters list. - */ - void GetOperatorParameters (in string theOperator, - out string_array theParameters, - out string_array theValues); - - /*! - * Remove faces from the given object (shape). - * \param theObject Shape to be processed. - * \param theFaces Indices of faces to be removed, if EMPTY then the method - * removes ALL faces of the given object. - * \return New GEOM_Object, containing processed shape. - */ - GEOM_Object SuppressFaces (in GEOM_Object theObject, in short_array theFaces); - - /*! - * Close an open wire. - * \param theObject Shape to be processed. - * \param theWires Indexes of edge(s) and wire(s) to be closed within theObject's shape, - * if -1, then theObject itself is a wire. - * \param isCommonVertex If TRUE : closure by creation of a common vertex, - * If FALS : closure by creation of an edge between ends. - * \return New GEOM_Object, containing processed shape. - */ - GEOM_Object CloseContour (in GEOM_Object theObject, in short_array theWires, - in boolean isCommonVertex); - - /*! - * Remove internal wires and edges from the given object (face). - * \param theObject Shape to be processed. - * \param theWires Indices of wires to be removed, if EMPTY then the method - * removes ALL internal wires of the given object. - * \return New GEOM_Object, containing processed shape. - */ - GEOM_Object RemoveIntWires (in GEOM_Object theObject, in short_array theWires); - - /*! - * Remove internal closed contours (holes) from the given object. - * \param theObject Shape to be processed. - * \param theWires Indices of wires to be removed, if EMPTY then the method - * removes ALL internal holes of the given object - * \return New GEOM_Object, containing processed shape. - */ - GEOM_Object FillHoles (in GEOM_Object theObject, in short_array theWires); - - /*! - * Sewing of the given object. - * \param theObject Shape to be processed. - * \param theTolerance Required tolerance value. - * \return New GEOM_Object, containing processed shape. - */ - GEOM_Object Sew (in GEOM_Object theObject, in double theTolerance); - - /*! - * Addition of a point to a given edge object. - * \param theObject Shape to be processed. - * \param theEdgeIndex Index of edge to be divided within theObject's shape, - * if -1, then theObject itself is the edge. - * \param theValue Value of parameter on edge or length parameter, - * depending on \a isByParameter. - * \param isByParameter If TRUE : \a theValue is treated as a curve parameter [0..1], - * if FALSE : \a theValue is treated as a length parameter [0..1] - * \return New GEOM_Object, containing processed shape. - */ - GEOM_Object DivideEdge (in GEOM_Object theObject, in short theEdgeIndex, - in double theValue, in boolean isByParameter); - - /*! - * Get a list of wires (wrapped in GEOM_Object-s), - * that constitute a free boundary of the given shape. - * \param theObject Shape to get free boundary of. - * \param theClosedWires Output. Closed wires on the free boundary of the given shape. - * \param theOpenWires Output. Open wires on the free boundary of the given shape. - * \return FALSE, if an error(s) occured during the method execution. - */ - boolean GetFreeBoundary (in GEOM_Object theObject, - out ListOfGO theClosedWires, - out ListOfGO theOpenWires); - }; - - /*! - * GEOM_IInsertOperations: Interface for shape insert operations (like copy, import). - * - */ - interface GEOM_IInsertOperations : GEOM_IOperations - { - /*! - * Create a copy of the given object - */ - GEOM_Object MakeCopy (in GEOM_Object theOriginal); - - /*! - * Export the given shape into a file with given name. - * \param theObject Shape to be stored in the file. - * \param theFileName Name of the file to store the given shape in. - * \param theFormatName Specify format for the shape storage. - * Available formats can be obtained with ImportTranslators() method. - */ - void Export (in GEOM_Object theObject, in string theFileName, in string theFormatName); - - /*! - * Import a shape from the BRep or IGES or STEP file - * (depends on given format) with given name. - * \param theFileName The file, containing the shape. - * \param theFormatName Specify format for the file reading. - * Available formats can be obtained with ImportTranslators() method. - * \return New GEOM_Object, containing the imported shape. - */ - GEOM_Object Import (in string theFileName, in string theFormatName); - - /*! - * Get the supported import formats and corresponding patterns for File dialog. - * \param theFormats Output. List of formats, available for import. - * \param thePatterns Output. List of file patterns, corresponding to available formats. - * \return Returns available formats and patterns through the arguments. - */ - void ImportTranslators (out string_array theFormats, - out string_array thePatterns); - - /*! - * Get the supported export formats and corresponding patterns for File dialog. - * \param theFormats Output. List of formats, available for export. - * \param thePatterns Output. List of file patterns, corresponding to available formats. - * \return Returns available formats and patterns through the arguments. - */ - void ExportTranslators (out string_array theFormats, - out string_array thePatterns); - }; - - /*! - * GEOM_IMeasureOperations: Interface for measurement (distance, whatis) and - * properties calculation (like Centre of Mass, Inertia, etc.). - * - */ - interface GEOM_IMeasureOperations : GEOM_IOperations - { - /*! - * Get summarized length of all wires, - * area of surface and volume of the given shape. - * \param theShape Shape to define properties of. - * \param theLength Output. Summarized length of all wires of the given shape. - * \param theSurfArea Output. Area of surface of the given shape. - * \param theVolume Output. Volume of the given shape. - * \return Returns shape properties through the last three arguments. - */ - void GetBasicProperties (in GEOM_Object theShape, - out double theLength, - out double theSurfArea, - out double theVolume); - - /*! - * Get a point, situated at the centre of mass of theShape. - * \param theShape Shape to define centre of mass of. - * \return New GEOM_Object, containing the created point. - */ - GEOM_Object GetCentreOfMass (in GEOM_Object theShape); - - /*! - * Get inertia matrix and moments of inertia of theShape. - * \param theShape Shape to calculate inertia of. - * \param I(1-3)(1-3) Output. Components of the inertia matrix of the given shape. - * \param Ix,Iy,Iz Output. Moments of inertia of the given shape. - * \return Returns inertia through the last twelve arguments. - */ - void GetInertia (in GEOM_Object theShape, - out double I11, out double I12, out double I13, - out double I21, out double I22, out double I23, - out double I31, out double I32, out double I33, - out double Ix , out double Iy , out double Iz); - - /*! - * Get parameters of bounding box of the given shape - * \param theShape Shape to obtain bounding box of. - * \param Xmin,Xmax Output. Limits of shape along OX axis. - * \param Ymin,Ymax Output. Limits of shape along OY axis. - * \param Zmin,Zmax Output. Limits of shape along OZ axis. - * \return Returns parameters of bounding box through the last six arguments. - */ - void GetBoundingBox (in GEOM_Object theShape, - out double Xmin, out double Xmax, - out double Ymin, out double Ymax, - out double Zmin, out double Zmax); - - /*! - * Get min and max tolerances of sub-shapes of theShape - * \param theShape Shape, to get tolerances of. - * \param FaceMin,FaceMax Output. Min and max tolerances of the faces. - * \param EdgeMin,EdgeMax Output. Min and max tolerances of the edges. - * \param VertMin,VertMax Output. Min and max tolerances of the vertices. - * \return Returns shape tolerances through the last six arguments. - */ - void GetTolerance (in GEOM_Object theShape, - out double FaceMin, out double FaceMax, - out double EdgeMin, out double EdgeMax, - out double VertMin, out double VertMax); - - /*! - * Check a topology of the given shape. - * \param theShape Shape to check validity of. - * \param theDescription Output. Description of problems in the shape, if they are. - * \return TRUE, if the shape "seems to be valid" from the topological point of view. - */ - boolean CheckShape (in GEOM_Object theShape, - out string theDescription); - - /*! - * Obtain description of the given shape - * \param theShape Shape to be described. - * \return Description of the given shape. - */ - string WhatIs (in GEOM_Object theShape); - - /*! - * Get minimal distance between the given shapes. - * \param theShape1,theShape2 Shapes to find minimal distance between. - * \param X1,Y1,Z1 Output. Coordinates of point on theShape1, nearest to theShape2. - * \param X2,Y2,Z2 Output. Coordinates of point on theShape2, nearest to theShape1. - * \return Value of the minimal distance between the given shapes. - */ - double GetMinDistance (in GEOM_Object theShape1, in GEOM_Object theShape2, - out double X1, out double Y1, out double Z1, - out double X2, out double Y2, out double Z2); - - - /*! - * Get point coordinates - */ - void PointCoordinates (in GEOM_Object theShape, out double X, out double Y, out double Z); - }; - - - /*! - * GEOM_IGroupOperations: Interface for groups creation. - */ - interface GEOM_IGroupOperations : GEOM_IOperations - { - /*! - * Creates a new group which will store sub shapes of theMainShape - * \param theMainShape is a GEOM object on which the group is selected - * \param theShapeType defines a shape type of the group - * \return a newly created GEOM group - */ - GEOM_Object CreateGroup (in GEOM_Object theMainShape, in long theShapeType); - - /*! - * Adds a sub object with ID theSubShapeId to the group - * \param theGroup is a GEOM group to which the new sub shape is added - * \param theSubShapeId is a sub shape ID in the main object. - * \note Use method ILocalOperations.GetSubShapeIndex() to get an ID by the sub shape - */ - void AddObject (in GEOM_Object theGroup, in long theSubShapeId); - - /*! - * Removes a sub object with ID \a theSubShapeId from the group - * \param theGroup is a GEOM group from which the sub shape is removed. - * \param theSubShapeId is a sub shape ID in the main object. - * \note Use method ILocalOperations.GetSubShapeIndex() to get an ID by the sub shape - */ - void RemoveObject (in GEOM_Object theGroup, in long theSubShapeId); - - /*! - * Adds to the group all the given shapes. No errors, if some shapes are alredy included. - * \param theGroup is a GEOM group to which the new sub shapes are added. - * \param theSubShapes is a list of sub shapes to be added. - */ - void UnionList (in GEOM_Object theGroup, in ListOfGO theSubShapes); - - /*! - * Removes from the group all the given shapes. No errors, if some shapes are not included. - * \param theGroup is a GEOM group from which the sub-shapes are removed. - * \param theSubShapes is a list of sub-shapes to be removed. - */ - void DifferenceList (in GEOM_Object theGroup, in ListOfGO theSubShapes); - - /*! - * Adds to the group all the given shapes. No errors, if some shapes are alredy included. - * \param theGroup is a GEOM group to which the new sub shapes are added. - * \param theSubShapes is a list of IDs of sub shapes to be added. - */ - void UnionIDs (in GEOM_Object theGroup, in ListOfLong theSubShapes); - - /*! - * Removes from the group all the given shapes. No errors, if some shapes are not included. - * \param theGroup is a GEOM group from which the sub-shapes are removed. - * \param theSubShapes is a list of IDs of sub-shapes to be removed. - */ - void DifferenceIDs (in GEOM_Object theGroup, in ListOfLong theSubShapes); - - /*! - * Returns a type of sub objects stored in the group - * \param theGroup is a GEOM group which type is returned. - */ - long GetType (in GEOM_Object theGroup); - - /*! - * Returns a main shape associated with the group - * \param theGroup is a GEOM group for which a main shape object is requested - * \return a GEOM object which is a main shape for theGroup - */ - GEOM_Object GetMainShape (in GEOM_Object theGroup); - - /*! - * Returns a list of sub objects ID stored in the group - * \param theGroup is a GEOM group for which a list of IDs is requested - */ - ListOfLong GetObjects (in GEOM_Object theGroup); - }; - - - /*! - * GEOM_Gen: Interface to access other GEOM interfaces. - * Also contains some methods to access and manage GEOM objects. - */ - interface GEOM_Gen : Engines::Component,SALOMEDS::Driver - { - /*! - * Undo/Redo Management - */ - - void Undo (in long theStudyID); - - void Redo (in long theStudyID); - - /*! - * Publishing manangement - * Adds in theStudy a object theObject under with a name theName, - * if theFather is not NULL the object is placed under thFather's SObject. - * Returns a SObject where theObject is placed - */ - SALOMEDS::SObject AddInStudy (in SALOMEDS::Study theStudy, - in GEOM_Object theObject, - in string theName, - in GEOM_Object theFather); - - /*! - * Methods to access interfaces for objects creation and transformation - */ - GEOM_IBasicOperations GetIBasicOperations (in long theStudyID) raises (SALOME::SALOME_Exception); - GEOM_ITransformOperations GetITransformOperations(in long theStudyID) raises (SALOME::SALOME_Exception); - GEOM_I3DPrimOperations GetI3DPrimOperations (in long theStudyID) raises (SALOME::SALOME_Exception); - GEOM_IShapesOperations GetIShapesOperations (in long theStudyID) raises (SALOME::SALOME_Exception); - GEOM_IBooleanOperations GetIBooleanOperations (in long theStudyID) raises (SALOME::SALOME_Exception); - GEOM_ICurvesOperations GetICurvesOperations (in long theStudyID) raises (SALOME::SALOME_Exception); - GEOM_ILocalOperations GetILocalOperations (in long theStudyID) raises (SALOME::SALOME_Exception); - GEOM_IHealingOperations GetIHealingOperations (in long theStudyID) raises (SALOME::SALOME_Exception); - GEOM_IInsertOperations GetIInsertOperations (in long theStudyID) raises (SALOME::SALOME_Exception); - GEOM_IMeasureOperations GetIMeasureOperations (in long theStudyID) raises (SALOME::SALOME_Exception); - GEOM_IBlocksOperations GetIBlocksOperations (in long theStudyID) raises (SALOME::SALOME_Exception); - GEOM_IGroupOperations GetIGroupOperations (in long theStudyID) raises (SALOME::SALOME_Exception); - - /*! - * Objects Management - */ - - /*! - * Removes the object from the GEOM component - * \param theObject is a GEOM object to be removed - */ - void RemoveObject (in GEOM_Object theObject); - - /*! - * Returns an object defined by the study and its entry in the GEOM component - * \param theStudyID is a SALOMEDS Study ID - * \param theEntry is an entry of the requested GEOM object in the GEOM component - * \note if the object has not previously been created a NULL GEOM object is returned - */ - GEOM_Object GetObject (in long theStudyID, in string theEntry); - - /*! - * Add a sub shape defined by indices in \a theIndices - * (contains unique IDs of sub shapes inside theMainShape) - * \note The sub shape GEOM_Objects can has ONLY ONE function. - * Don't try to apply modification operations on them. - * \note Internal method - */ - GEOM_Object AddSubShape (in GEOM_Object theMainShape, in ListOfLong theIndices); - - /*! - * GEOM object's IOR Management - */ - - /*! - * Returns a GEOM Object defined by its IOR - * \param theIOR a string containg an IOR of the requested GEOM object - */ - GEOM_Object GetIORFromString (in string theIOR); - - /*! - * Returns a string which contains an IOR of the GEOM object - * \param theObject is a GEOM object which IOR is requested - */ - string GetStringFromIOR (in GEOM_Object theObject); - - /*! - * Returns a name with which a GEOM object was dumped into python script - * \param theStudyEntry is an entry of the GEOM object in the study - */ - string GetDumpName (in string theStudyEntry); - - /*! - * Returns all names with which a GEOM objects was dumped - * into python script to avoid the same names in SMESH script - */ - string_array GetAllDumpNames(); - }; -}; - -#endif diff --git a/idl/GEOM_Superv.idl b/idl/GEOM_Superv.idl deleted file mode 100644 index 4f2c94f36..000000000 --- a/idl/GEOM_Superv.idl +++ /dev/null @@ -1,418 +0,0 @@ -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOM_Superv.idl -// Author : Lucien PIGNOLONI - -#ifndef __GEOM_SUPERV__ -#define __GEOM_SUPERV__ - -#include "GEOM_Gen.idl" - -module GEOM -{ - interface GEOM_List - { }; - - interface GEOM_Superv : Engines::Component,SALOMEDS::Driver - { - //-----------------------------------------------------------// - // Set current study ID // - //-----------------------------------------------------------// - void SetStudyID (in long theStudyID) ; - - //-----------------------------------------------------------// - // Create ListOfGO and add items to it // - //-----------------------------------------------------------// - GEOM_List CreateListOfGO(); - void AddItemToListOfGO( inout GEOM_List theList, - in GEOM_Object theObject); - - //-----------------------------------------------------------// - // Create ListOfLong and add items to it // - //-----------------------------------------------------------// - GEOM_List CreateListOfLong(); - void AddItemToListOfLong( inout GEOM_List theList, - in long theObject); - - //-----------------------------------------------------------// - // Create ListOfDouble and add items to it // - //-----------------------------------------------------------// - GEOM_List CreateListOfDouble(); - void AddItemToListOfDouble( inout GEOM_List theList, - in double theObject); - - //-----------------------------------------------------------// - // Primitives Construction : BasicOperations // - //-----------------------------------------------------------// - GEOM_Object MakePointXYZ (in double theX, - in double theY, - in double theZ) ; - GEOM_Object MakePointWithReference (in GEOM_Object theReference, - in double theX, - in double theY, - in double theZ) ; - GEOM_Object MakePointOnCurve (in GEOM_Object theRefCurve, - in double theParameter) ; - GEOM_Object MakeVectorDXDYDZ (in double theDX, - in double theDY, - in double theDZ) ; - GEOM_Object MakeVectorTwoPnt (in GEOM_Object thePnt1, - in GEOM_Object thePnt2) ; - GEOM_Object MakeLineTwoPnt (in GEOM_Object thePnt1, - in GEOM_Object thePnt2) ; - GEOM_Object MakePlaneThreePnt (in GEOM_Object thePnt1, - in GEOM_Object thePnt2, - in GEOM_Object thePnt3, - in double theTrimSize) ; - GEOM_Object MakePlanePntVec (in GEOM_Object thePnt, - in GEOM_Object theVec, - in double theTrimSize) ; - GEOM_Object MakePlaneFace (in GEOM_Object theFace, - in double theTrimSize) ; - GEOM_Object MakeMarker (in double theOX , in double theOY , in double theOZ, - in double theXDX, in double theXDY, in double theXDZ, - in double theYDX, in double theYDY, in double theYDZ) ; - - //-----------------------------------------------------------// - // Primitives Construction : 3DPrimOperations // - //-----------------------------------------------------------// - GEOM_Object MakeBox (in double theX1, - in double theY1, - in double theZ1, - in double theX2, - in double theY2, - in double theZ2) ; - GEOM_Object MakeBoxDXDYDZ (in double theDX, - in double theDY, - in double theDZ) ; - GEOM_Object MakeBoxTwoPnt (in GEOM_Object thePnt1, - in GEOM_Object thePnt2) ; - GEOM_Object MakeCylinderPntVecRH (in GEOM_Object thePnt, - in GEOM_Object theAxis, - in double theRadius, - in double theHeight) ; - GEOM_Object MakeCylinderRH (in double theR, - in double theH) ; - GEOM_Object MakeSphere (in double theX, - in double theY, - in double theZ, - in double theRadius) ; - GEOM_Object MakeSphereR (in double theR) ; - GEOM_Object MakeSpherePntR (in GEOM_Object thePnt, - in double theR) ; - GEOM_Object MakeTorusPntVecRR (in GEOM_Object thePnt, - in GEOM_Object theVec, - in double theRMajor, - in double theRMinor) ; - GEOM_Object MakeTorusRR (in double theRMajor, - in double theRMinor) ; - GEOM_Object MakeConePntVecR1R2H (in GEOM_Object thePnt, - in GEOM_Object theAxis, - in double theR1, - in double theR2, - in double theHeight) ; - GEOM_Object MakeConeR1R2H (in double theR1, - in double theR2, - in double theHeight) ; - GEOM_Object MakePrismVecH (in GEOM_Object theBase, - in GEOM_Object theVec, - in double theH) ; - GEOM_Object MakePrismTwoPnt (in GEOM_Object theBase, - in GEOM_Object thePoint1, - in GEOM_Object thePoint2) ; - GEOM_Object MakePipe (in GEOM_Object theBase, - in GEOM_Object thePath) ; - GEOM_Object MakeRevolutionAxisAngle (in GEOM_Object theBase, - in GEOM_Object theAxis, - in double theAngle) ; - GEOM_Object MakeFilling (in GEOM_Object theShape, - in long theMinDeg, in long theMaxDeg, - in double theTol2D, in double theTol3D, - in long theNbIter) ; - - //-----------------------------------------------------------// - // BooleanOperations // - //-----------------------------------------------------------// - GEOM_Object MakeBoolean (in GEOM_Object theShape1, - in GEOM_Object theShape2, - in long theOperation) ; - GEOM_Object MakeFuse (in GEOM_Object theShape1, - in GEOM_Object theShape2) ; - GEOM_Object MakePartition (in GEOM_List theShapes, - in GEOM_List theTools, - in GEOM_List theKeepInside, - in GEOM_List theRemoveInside, - in short theLimit, - in boolean theRemoveWebs, - in GEOM_List theMaterials) ; - GEOM_Object MakeHalfPartition (in GEOM_Object theShape, - in GEOM_Object thePlane) ; - - //-----------------------------------------------------------// - // InsertOperations // - //-----------------------------------------------------------// - GEOM_Object MakeCopy (in GEOM_Object theOriginal) ; - void Export (in GEOM_Object theObject, in string theFileName, in string theFormatName) ; - GEOM_Object Import (in string theFileName, in string theFormatName) ; - void ImportTranslators (out string_array theFormats, - out string_array thePatterns) ; - void ExportTranslators (out string_array theFormats, - out string_array thePatterns) ; - - //-----------------------------------------------------------// - // TransformOperations // - //-----------------------------------------------------------// - GEOM_Object TranslateTwoPoints (in GEOM_Object theObject, - in GEOM_Object thePoint1, - in GEOM_Object thePoint2) ; - GEOM_Object TranslateTwoPointsCopy (in GEOM_Object theObject, - in GEOM_Object thePoint1, - in GEOM_Object thePoint2) ; - GEOM_Object TranslateDXDYDZ (in GEOM_Object theObject, - in double theDX, - in double theDY, - in double theDZ) ; - GEOM_Object TranslateDXDYDZCopy (in GEOM_Object theObject, - in double theDX, - in double theDY, - in double theDZ) ; - GEOM_Object TranslateVector (in GEOM_Object theObject, - in GEOM_Object theVector) ; - GEOM_Object TranslateVectorCopy (in GEOM_Object theObject, - in GEOM_Object theVector) ; - GEOM_Object MultiTranslate1D (in GEOM_Object theObject, - in GEOM_Object theVector, - in double theStep, - in long theNbTimes) ; - GEOM_Object MultiTranslate2D (in GEOM_Object theObject, - in GEOM_Object theVector1, - in double theStep1, - in long theNbTimes1, - in GEOM_Object theVector2, - in double theStep2, - in long theNbTimes2) ; - GEOM_Object Rotate (in GEOM_Object theObject, - in GEOM_Object theAxis, - in double theAngle) ; - GEOM_Object RotateCopy (in GEOM_Object theObject, - in GEOM_Object theAxis, - in double theAngle) ; - GEOM_Object MultiRotate1D (in GEOM_Object theObject, - in GEOM_Object theAxis, - in long theNbTimes) ; - GEOM_Object MultiRotate2D (in GEOM_Object theObject, - in GEOM_Object theAxis, - in double theAngle, - in long theNbTimes1, - in double theStep, - in long theNbTimes2) ; - GEOM_Object MirrorPlane (in GEOM_Object theObject, - in GEOM_Object thePlane) ; - GEOM_Object MirrorPlaneCopy (in GEOM_Object theObject, - in GEOM_Object thePlane) ; - GEOM_Object MirrorAxis (in GEOM_Object theObject, - in GEOM_Object theAxis) ; - GEOM_Object MirrorAxisCopy (in GEOM_Object theObject, - in GEOM_Object theAxis) ; - GEOM_Object MirrorPoint (in GEOM_Object theObject, - in GEOM_Object thePoint) ; - GEOM_Object MirrorPointCopy (in GEOM_Object theObject, - in GEOM_Object thePoint) ; - GEOM_Object OffsetShape (in GEOM_Object theObject, - in double theOffset) ; - GEOM_Object OffsetShapeCopy (in GEOM_Object theObject, - in double theOffset) ; - GEOM_Object ScaleShape (in GEOM_Object theObject, - in GEOM_Object thePoint, - in double theFactor) ; - GEOM_Object ScaleShapeCopy (in GEOM_Object theObject, - in GEOM_Object thePoint, - in double theFactor) ; - GEOM_Object PositionShape (in GEOM_Object theObject, - in GEOM_Object theStartLCS, - in GEOM_Object theEndLCS) ; - GEOM_Object PositionShapeCopy (in GEOM_Object theObject, - in GEOM_Object theStartLCS, - in GEOM_Object theEndLCS) ; - - //-----------------------------------------------------------// - // ShapesOperations // - //-----------------------------------------------------------// - GEOM_Object MakeEdge (in GEOM_Object thePnt1, - in GEOM_Object thePnt2) ; - GEOM_Object MakeWire (in GEOM_List theEdgesAndWires) ; - GEOM_Object MakeFace (in GEOM_Object theWire, - in boolean isPlanarWanted) ; - GEOM_Object MakeFaceWires (in GEOM_List theWires, - in boolean isPlanarWanted) ; - GEOM_Object MakeShell (in GEOM_List theFacesAndShells) ; - GEOM_Object MakeSolidShell (in GEOM_Object theShell) ; - GEOM_Object MakeSolidShells (in GEOM_List theShells) ; - GEOM_Object MakeCompound (in GEOM_List theShapes) ; - GEOM_Object MakeGlueFaces (in GEOM_Object theShape, - in double theTolerance) ; - GEOM_List MakeExplode (in GEOM_Object theShape, - in long theShapeType, - in boolean isSorted) ; - long NumberOfFaces (in GEOM_Object theShape) ; - long NumberOfEdges (in GEOM_Object theShape) ; - GEOM_Object ChangeOrientation (in GEOM_Object theShape) ; - - //-----------------------------------------------------------// - // BlocksOperations // - //-----------------------------------------------------------// - GEOM_Object MakeQuad4Vertices (in GEOM_Object thePnt1, - in GEOM_Object thePnt2, - in GEOM_Object thePnt3, - in GEOM_Object thePnt4) ; - GEOM_Object MakeQuad (in GEOM_Object theEdge1, - in GEOM_Object theEdge2, - in GEOM_Object theEdge3, - in GEOM_Object theEdge4) ; - GEOM_Object MakeQuad2Edges (in GEOM_Object theEdge1, - in GEOM_Object theEdge2) ; - GEOM_Object MakeHexa (in GEOM_Object theFace1, - in GEOM_Object theFace2, - in GEOM_Object theFace3, - in GEOM_Object theFace4, - in GEOM_Object theFace5, - in GEOM_Object theFace6) ; - GEOM_Object MakeHexa2Faces (in GEOM_Object theFace1, - in GEOM_Object theFace2) ; - GEOM_Object GetPoint (in GEOM_Object theShape, - in double theX, - in double theY, - in double theZ, - in double theEpsilon) ; - GEOM_Object GetEdge (in GEOM_Object theShape, - in GEOM_Object thePoint1, - in GEOM_Object thePoint2) ; - GEOM_Object GetEdgeNearPoint (in GEOM_Object theShape, - in GEOM_Object thePoint) ; - GEOM_Object GetFaceByPoints (in GEOM_Object theShape, - in GEOM_Object thePoint1, - in GEOM_Object thePoint2, - in GEOM_Object thePoint3, - in GEOM_Object thePoint4) ; - GEOM_Object GetFaceByEdges (in GEOM_Object theShape, - in GEOM_Object theEdge1, - in GEOM_Object theEdge2) ; - GEOM_Object GetOppositeFace (in GEOM_Object theBlock, - in GEOM_Object theFace) ; - GEOM_Object GetFaceNearPoint (in GEOM_Object theShape, - in GEOM_Object thePoint) ; - GEOM_Object GetFaceByNormale (in GEOM_Object theBlock, - in GEOM_Object theVector) ; - boolean IsCompoundOfBlocks (in GEOM_Object theCompound, - in long theMinNbFaces, - in long theMaxNbFaces, - out long theNbBlocks) ; - boolean CheckCompoundOfBlocks (in GEOM_Object theCompound, - out GEOM_IBlocksOperations::BCErrors theErrors) ; - string PrintBCErrors (in GEOM_Object theCompound, - in GEOM_IBlocksOperations::BCErrors theErrors) ; - GEOM_List ExplodeCompoundOfBlocks (in GEOM_Object theCompound, - in long theMinNbFaces, - in long theMaxNbFaces) ; - GEOM_Object GetBlockNearPoint (in GEOM_Object theCompound, - in GEOM_Object thePoint) ; - GEOM_Object GetBlockByParts (in GEOM_Object theCompound, - in GEOM_List theParts) ; - GEOM_List GetBlocksByParts (in GEOM_Object theCompound, - in GEOM_List theParts) ; - GEOM_Object MakeMultiTransformation1D (in GEOM_Object theBlock, - in long theDirFace1, - in long theDirFace2, - in long theNbTimes) ; - GEOM_Object MakeMultiTransformation2D (in GEOM_Object theBlock, - in long theDirFace1U, - in long theDirFace2U, - in long theNbTimesU, - in long theDirFace1V, - in long theDirFace2V, - in long theNbTimesV) ; - - //-----------------------------------------------------------// - // CurvesOperations // - //-----------------------------------------------------------// - GEOM_Object MakeCirclePntVecR (in GEOM_Object thePnt, - in GEOM_Object theVec, - in double theR) ; - GEOM_Object MakeCircleThreePnt (in GEOM_Object thePnt1, - in GEOM_Object thePnt2, - in GEOM_Object thePnt3) ; - GEOM_Object MakeEllipse (in GEOM_Object thePnt, - in GEOM_Object theVec, - in double theRMajor, - in double theRMinor) ; - GEOM_Object MakeArc (in GEOM_Object thePnt1, - in GEOM_Object thePnt2, - in GEOM_Object thePnt3) ; - GEOM_Object MakePolyline (in GEOM_List thePoints) ; - GEOM_Object MakeSplineBezier (in GEOM_List thePoints) ; - GEOM_Object MakeSplineInterpolation (in GEOM_List thePoints) ; - GEOM_Object MakeSketcher (in string theCommand, - in GEOM_List theWorkingPlane) ; - - //-----------------------------------------------------------// - // LocalOperations // - //-----------------------------------------------------------// - GEOM_Object MakeFilletAll (in GEOM_Object theShape, - in double theR) ; - GEOM_Object MakeFilletEdges (in GEOM_Object theShape, - in double theR, - in GEOM_List theEdges) ; - GEOM_Object MakeFilletFaces (in GEOM_Object theShape, - in double theR, - in GEOM_List theFaces) ; - GEOM_Object MakeChamferAll (in GEOM_Object theShape, - in double theD) ; - GEOM_Object MakeChamferEdge (in GEOM_Object theShape, - in double theD1, in double theD2, - in long theFace1, in long theFace2) ; - GEOM_Object MakeChamferFaces (in GEOM_Object theShape, - in double theD1, in double theD2, - in GEOM_List theFaces) ; - GEOM_Object MakeArchimede (in GEOM_Object theShape, - in double theWeight, - in double theWaterDensity, - in double theMeshDeflection) ; - long GetSubShapeIndex (in GEOM_Object theShape, - in GEOM_Object theSubShape) ; - - //-----------------------------------------------------------// - // GroupOperations // - //-----------------------------------------------------------// - GEOM_Object CreateGroup (in GEOM_Object theMainShape, - in long theShapeType) ; - void AddObject (in GEOM_Object theGroup, - in long theSubShapeId) ; - void RemoveObject (in GEOM_Object theGroup, - in long theSubShapeId) ; - long GetType (in GEOM_Object theGroup) ; - GEOM_Object GetMainShape(in GEOM_Object theGroup) ; - GEOM_List GetObjects(in GEOM_Object theGroup) ; - - }; -}; - -#endif diff --git a/idl/Makefile.in b/idl/Makefile.in deleted file mode 100644 index 72f11d7c6..000000000 --- a/idl/Makefile.in +++ /dev/null @@ -1,69 +0,0 @@ -# -# generate dependencies for idl file : -# - -# source path -top_srcdir=@top_srcdir@ -top_builddir=.. -srcdir=@srcdir@ -VPATH=.:${KERNEL_ROOT_DIR}/idl/salome - -@COMMENCE@ - -IDL_FILES = \ - GEOM_Gen.idl \ - GEOM_Superv.idl - -PY_CLIENT_IDL = $(IDL_FILES) - -# we copy all idl file in $(top_builddir)/idl -inc: $(top_builddir)/idl/salome $(IDL_FILES:%=$(top_builddir)/idl/salome/%) - -$(top_builddir)/idl/salome: - mkdir $@ - -$(IDL_FILES:%=$(top_builddir)/idl/salome/%):$(IDL_FILES:%=$(top_srcdir)/idl/%) -# $(CP) $< $@ - cp -f $^ $(top_builddir)/idl/salome - - -lib: pyidl - -PYTHON_BUILD_SITE=$(top_builddir)/lib/python$(PYTHON_VERSION)/site-packages/@PACKAGE@ - -pyidl: $(PYTHON_BUILD_SITE) $(IDL_FILES:%.idl=$(PYTHON_BUILD_SITE)/%_idl.py) - -$(PYTHON_BUILD_SITE): - $(INSTALL) -d $@ - -$(PYTHON_BUILD_SITE)/%_idl.py: $(top_builddir)/idl/salome/%.idl - $(OMNIORB_IDL) $(OMNIORB_IDLPYFLAGS) -C$(PYTHON_BUILD_SITE) $< - - -# install python client (generated from idl file -install: install-pyidl install-idl - -# create directory $(idldir) and copy idl files into it -install-idl: $(IDL_FILES:%=$(top_builddir)/idl/salome/%) - $(INSTALL) -d $(idldir) - $(INSTALL_DATA) $^ $(idldir) - - -install-pyidl: $(IDL_FILES:%=$(top_builddir)/idl/salome/%) - $(INSTALL) -d $(PYTHON_SITE_INSTALL) - @for file in $^ dummy; do \ - if [ $$file != "dummy" ]; then \ - $(OMNIORB_IDL) $(OMNIORB_IDLPYFLAGS) -C$(PYTHON_SITE_INSTALL) $$file ; \ - fi ; \ - done ; - -#@ CONCLUDE @ - -cleandep: - -$(RM) .dep* - -distclean: - -$(RM) *.py - -$(RM) $(IDL_FILES:%=$(top_builddir)/idl/salome/%) - -$(RM) Makefile - diff --git a/resources/GEOM.config b/resources/GEOM.config deleted file mode 100644 index 692539760..000000000 --- a/resources/GEOM.config +++ /dev/null @@ -1 +0,0 @@ -language=en \ No newline at end of file diff --git a/resources/GEOMCatalog.xml b/resources/GEOMCatalog.xml deleted file mode 100644 index b1f71940d..000000000 --- a/resources/GEOMCatalog.xml +++ /dev/null @@ -1,4276 +0,0 @@ - - - - - - - - - - - - - - - GEOM - Geometry - Geom - NRI - 3.0.0 - Geometry component - 1 - ModuleGeom.png - - - - - GEOM - No comment - - - - - - Undo - - - - 1 - - - - theStudyID - long - - - - - - - - - Redo - - - - 1 - - - - theStudyID - long - - - - - - - - - AddInStudy - - - - 1 - - - - theStudy - Study - - - - theObject - GEOM_Object - - - - theName - string - - - - theFather - GEOM_Object - - - - - - return - SObject - - - - - - - - GetIBasicOperations - - - - 1 - - - - theStudyID - long - - - - - - return - GEOM_IBasicOperations - - - - - - - - GetITransformOperations - - - - 1 - - - - theStudyID - long - - - - - - return - GEOM_ITransformOperations - - - - - - - - GetI3DPrimOperations - - - - 1 - - - - theStudyID - long - - - - - - return - GEOM_I3DPrimOperations - - - - - - - - GetIShapesOperations - - - - 1 - - - - theStudyID - long - - - - - - return - GEOM_IShapesOperations - - - - - - - - GetIBooleanOperations - - - - 1 - - - - theStudyID - long - - - - - - return - GEOM_IBooleanOperations - - - - - - - - GetICurvesOperations - - - - 1 - - - - theStudyID - long - - - - - - return - GEOM_ICurvesOperations - - - - - - - - GetILocalOperations - - - - 1 - - - - theStudyID - long - - - - - - return - GEOM_ILocalOperations - - - - - - - - GetIHealingOperations - - - - 1 - - - - theStudyID - long - - - - - - return - GEOM_IHealingOperations - - - - - - - - GetIInsertOperations - - - - 1 - - - - theStudyID - long - - - - - - return - GEOM_IInsertOperations - - - - - - - - GetIMeasureOperations - - - - 1 - - - - theStudyID - long - - - - - - return - GEOM_IMeasureOperations - - - - - - - - GetIBlocksOperations - - - - 1 - - - - theStudyID - long - - - - - - return - GEOM_IBlocksOperations - - - - - - - - GetIGroupOperations - - - - 1 - - - - theStudyID - long - - - - - - return - GEOM_IGroupOperations - - - - - - - - RemoveObject - - - - 1 - - - - theObject - GEOM_Object - - - - - - - - - GetObject - - - - 1 - - - - theStudyID - long - - - - theEntry - string - - - - - - return - GEOM_Object - - - - - - - - AddSubShape - - - - 1 - - - - theMainShape - GEOM_Object - - - - theIndices - ListOfLong - - - - - - return - GEOM_Object - - - - - - - - GetIORFromString - - - - 1 - - - - ior - string - - - - - - return - GEOM_Object - - - - - - - - GetStringFromIOR - - - - 1 - - - - theObject - GEOM_Object - - - - - - return - string - - - - - - - - hostname = localhost - - - - GEOM_Superv - GEOM_Superv - OTHER - mkr - 3.0.0 - Supervision wrapper for Geometry component - 1 - - - - GEOM_Superv - unknown - - - SetStudyID - mkr - 2.1.0 - unknown - 0 - - - theStudyID - long - unknown - - - - - - - CreateListOfGO - mkr - 2.1.0 - unknown - 0 - - - - return - GEOM_List - unknown - - - - - - AddItemToListOfGO - mkr - 2.1.0 - unknown - 0 - - - theList - GEOM_List - unknown - - - theObject - GEOM_Object - unknown - - - - - theList - GEOM_List - unknown - - - - - - CreateListOfLong - mkr - 2.1.0 - unknown - 0 - - - - return - GEOM_List - unknown - - - - - - AddItemToListOfLong - mkr - 2.1.0 - unknown - 0 - - - theList - GEOM_List - unknown - - - theObject - long - unknown - - - - - theList - GEOM_List - unknown - - - - - - CreateListOfDouble - mkr - 2.1.0 - unknown - 0 - - - - return - GEOM_List - unknown - - - - - - AddItemToListOfDouble - mkr - 2.1.0 - unknown - 0 - - - theList - GEOM_List - unknown - - - theObject - double - unknown - - - - - theList - GEOM_List - unknown - - - - - - MakePointXYZ - mkr - 2.1.0 - unknown - 0 - - - theX - double - unknown - - - theY - double - unknown - - - theZ - double - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakePointWithReference - mkr - 2.1.0 - unknown - 0 - - - theReference - GEOM_Object - unknown - - - theX - double - unknown - - - theY - double - unknown - - - theZ - double - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakePointOnCurve - mkr - 2.1.0 - unknown - 0 - - - theRefCurve - GEOM_Object - unknown - - - theParameter - double - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeVectorDXDYDZ - mkr - 2.1.0 - unknown - 0 - - - theDX - double - unknown - - - theDY - double - unknown - - - theDZ - double - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeVectorTwoPnt - mkr - 2.1.0 - unknown - 0 - - - thePnt1 - GEOM_Object - unknown - - - thePnt2 - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeLineTwoPnt - mkr - 2.1.0 - unknown - 0 - - - thePnt1 - GEOM_Object - unknown - - - thePnt2 - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakePlaneThreePnt - mkr - 2.1.0 - unknown - 0 - - - thePnt1 - GEOM_Object - unknown - - - thePnt2 - GEOM_Object - unknown - - - thePnt3 - GEOM_Object - unknown - - - theTrimSize - double - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakePlanePntVec - mkr - 2.1.0 - unknown - 0 - - - thePnt - GEOM_Object - unknown - - - theVec - GEOM_Object - unknown - - - theTrimSize - double - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakePlaneFace - mkr - 2.1.0 - unknown - 0 - - - theFace - GEOM_Object - unknown - - - theTrimSize - double - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeMarker - mkr - 2.1.0 - unknown - 0 - - - theOX - double - unknown - - - theOY - double - unknown - - - theOZ - double - unknown - - - theXDX - double - unknown - - - theXDY - double - unknown - - - theXDZ - double - unknown - - - theYDX - double - unknown - - - theYDY - double - unknown - - - theYDZ - double - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeBox - mkr - 2.1.0 - unknown - 0 - - - theX1 - double - unknown - - - theY1 - double - unknown - - - theZ1 - double - unknown - - - theX2 - double - unknown - - - theY2 - double - unknown - - - theZ2 - double - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeBoxDXDYDZ - mkr - 2.1.0 - unknown - 0 - - - theDX - double - unknown - - - theDY - double - unknown - - - theDZ - double - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeBoxTwoPnt - mkr - 2.1.0 - unknown - 0 - - - thePnt1 - GEOM_Object - unknown - - - thePnt2 - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeCylinderPntVecRH - mkr - 2.1.0 - unknown - 0 - - - thePnt - GEOM_Object - unknown - - - theAxis - GEOM_Object - unknown - - - theRadius - double - unknown - - - theHeight - double - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeCylinderRH - mkr - 2.1.0 - unknown - 0 - - - theR - double - unknown - - - theH - double - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeSphere - mkr - 2.1.0 - unknown - 0 - - - theX - double - unknown - - - theY - double - unknown - - - theZ - double - unknown - - - theRadius - double - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeSphereR - mkr - 2.1.0 - unknown - 0 - - - theR - double - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeSpherePntR - mkr - 2.1.0 - unknown - 0 - - - thePnt - GEOM_Object - unknown - - - theR - double - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeTorusPntVecRR - mkr - 2.1.0 - unknown - 0 - - - thePnt - GEOM_Object - unknown - - - theVec - GEOM_Object - unknown - - - theRMajor - double - unknown - - - theRMinor - double - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeTorusRR - mkr - 2.1.0 - unknown - 0 - - - theRMajor - double - unknown - - - theRMinor - double - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeConePntVecR1R2H - mkr - 2.1.0 - unknown - 0 - - - thePnt - GEOM_Object - unknown - - - theAxis - GEOM_Object - unknown - - - theR1 - double - unknown - - - theR2 - double - unknown - - - theHeight - double - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeConeR1R2H - mkr - 2.1.0 - unknown - 0 - - - theR1 - double - unknown - - - theR2 - double - unknown - - - theHeight - double - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakePrismVecH - mkr - 2.1.0 - unknown - 0 - - - theBase - GEOM_Object - unknown - - - theVec - GEOM_Object - unknown - - - theH - double - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakePrismTwoPnt - mkr - 2.1.0 - unknown - 0 - - - theBase - GEOM_Object - unknown - - - thePoint1 - GEOM_Object - unknown - - - thePoint2 - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakePipe - mkr - 2.1.0 - unknown - 0 - - - theBase - GEOM_Object - unknown - - - thePath - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeRevolutionAxisAngle - mkr - 2.1.0 - unknown - 0 - - - theBase - GEOM_Object - unknown - - - theAxis - GEOM_Object - unknown - - - theAngle - double - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeFilling - mkr - 2.1.0 - unknown - 0 - - - theShape - GEOM_Object - unknown - - - theMinDeg - long - unknown - - - theMaxDeg - long - unknown - - - theTol2D - double - unknown - - - theTol3D - double - unknown - - - theNbIter - long - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeBoolean - mkr - 2.1.0 - unknown - 0 - - - theShape1 - GEOM_Object - unknown - - - theShape2 - GEOM_Object - unknown - - - theOperation - long - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeFuse - mkr - 2.1.0 - unknown - 0 - - - theShape1 - GEOM_Object - unknown - - - theShape2 - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakePartition - mkr - 2.1.0 - unknown - 0 - - - theShapes - GEOM_List - unknown - - - theTools - GEOM_List - unknown - - - theKeepInside - GEOM_List - unknown - - - theRemoveInside - GEOM_List - unknown - - - theLimit - short - unknown - - - theRemoveWebs - boolean - unknown - - - theMaterials - GEOM_List - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeHalfPartition - mkr - 2.1.0 - unknown - 0 - - - theShape - GEOM_Object - unknown - - - thePlane - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeCopy - mkr - 2.1.0 - unknown - 0 - - - theOriginal - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - Export - mkr - 2.1.0 - unknown - 0 - - - theObject - GEOM_Object - unknown - - - theFileName - string - unknown - - - theFormatName - string - unknown - - - - - - - Import - mkr - 2.1.0 - unknown - 0 - - - theFileName - string - unknown - - - theFormatName - string - unknown - - - - - return - GEOM_Object - unknown - - - - - - ImportTranslators - mkr - 2.1.0 - unknown - 0 - - - - theFormats - string_array - unknown - - - thePatterns - string_array - unknown - - - - - - ExportTranslators - mkr - 2.1.0 - unknown - 0 - - - - theFormats - string_array - unknown - - - thePatterns - string_array - unknown - - - - - - TranslateTwoPoints - mkr - 2.1.0 - unknown - 0 - - - theObject - GEOM_Object - unknown - - - thePoint1 - GEOM_Object - unknown - - - thePoint2 - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - TranslateTwoPointsCopy - mkr - 2.1.0 - unknown - 0 - - - theObject - GEOM_Object - unknown - - - thePoint1 - GEOM_Object - unknown - - - thePoint2 - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - TranslateDXDYDZ - mkr - 2.1.0 - unknown - 0 - - - theObject - GEOM_Object - unknown - - - theDX - double - unknown - - - theDY - double - unknown - - - theDZ - double - unknown - - - - - return - GEOM_Object - unknown - - - - - - TranslateDXDYDZCopy - mkr - 2.1.0 - unknown - 0 - - - theObject - GEOM_Object - unknown - - - theDX - double - unknown - - - theDY - double - unknown - - - theDZ - double - unknown - - - - - return - GEOM_Object - unknown - - - - - - TranslateVector - mkr - 2.1.0 - unknown - 0 - - - theObject - GEOM_Object - unknown - - - theVector - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - TranslateVectorCopy - mkr - 2.1.0 - unknown - 0 - - - theObject - GEOM_Object - unknown - - - theVector - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - MultiTranslate1D - mkr - 2.1.0 - unknown - 0 - - - theObject - GEOM_Object - unknown - - - theVector - GEOM_Object - unknown - - - theStep - double - unknown - - - theNbTimes - long - unknown - - - - - return - GEOM_Object - unknown - - - - - - MultiTranslate2D - mkr - 2.1.0 - unknown - 0 - - - theObject - GEOM_Object - unknown - - - theVector1 - GEOM_Object - unknown - - - theStep1 - double - unknown - - - theNbTimes1 - long - unknown - - - theVector2 - GEOM_Object - unknown - - - theStep2 - double - unknown - - - theNbTimes2 - long - unknown - - - - - return - GEOM_Object - unknown - - - - - - Rotate - mkr - 2.1.0 - unknown - 0 - - - theObject - GEOM_Object - unknown - - - theAxis - GEOM_Object - unknown - - - theAngle - double - unknown - - - - - return - GEOM_Object - unknown - - - - - - RotateCopy - mkr - 2.1.0 - unknown - 0 - - - theObject - GEOM_Object - unknown - - - theAxis - GEOM_Object - unknown - - - theAngle - double - unknown - - - - - return - GEOM_Object - unknown - - - - - - MultiRotate1D - mkr - 2.1.0 - unknown - 0 - - - theObject - GEOM_Object - unknown - - - theAxis - GEOM_Object - unknown - - - theNbTimes - long - unknown - - - - - return - GEOM_Object - unknown - - - - - - MultiRotate2D - mkr - 2.1.0 - unknown - 0 - - - theObject - GEOM_Object - unknown - - - theAxis - GEOM_Object - unknown - - - theAngle - double - unknown - - - theNbTimes1 - long - unknown - - - theStep - double - unknown - - - theNbTimes2 - long - unknown - - - - - return - GEOM_Object - unknown - - - - - - MirrorPlane - mkr - 2.1.0 - unknown - 0 - - - theObject - GEOM_Object - unknown - - - thePlane - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - MirrorPlaneCopy - mkr - 2.1.0 - unknown - 0 - - - theObject - GEOM_Object - unknown - - - thePlane - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - MirrorAxis - mkr - 2.1.0 - unknown - 0 - - - theObject - GEOM_Object - unknown - - - theAxis - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - MirrorAxisCopy - mkr - 2.1.0 - unknown - 0 - - - theObject - GEOM_Object - unknown - - - theAxis - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - MirrorPoint - mkr - 2.1.0 - unknown - 0 - - - theObject - GEOM_Object - unknown - - - thePoint - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - MirrorPointCopy - mkr - 2.1.0 - unknown - 0 - - - theObject - GEOM_Object - unknown - - - thePoint - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - OffsetShape - mkr - 2.1.0 - unknown - 0 - - - theObject - GEOM_Object - unknown - - - theOffset - double - unknown - - - - - return - GEOM_Object - unknown - - - - - - OffsetShapeCopy - mkr - 2.1.0 - unknown - 0 - - - theObject - GEOM_Object - unknown - - - theOffset - double - unknown - - - - - return - GEOM_Object - unknown - - - - - - ScaleShape - mkr - 2.1.0 - unknown - 0 - - - theObject - GEOM_Object - unknown - - - thePoint - GEOM_Object - unknown - - - theFactor - double - unknown - - - - - return - GEOM_Object - unknown - - - - - - ScaleShapeCopy - mkr - 2.1.0 - unknown - 0 - - - theObject - GEOM_Object - unknown - - - thePoint - GEOM_Object - unknown - - - theFactor - double - unknown - - - - - return - GEOM_Object - unknown - - - - - - PositionShape - mkr - 2.1.0 - unknown - 0 - - - theObject - GEOM_Object - unknown - - - theStartLCS - GEOM_Object - unknown - - - theEndLCS - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - PositionShapeCopy - mkr - 2.1.0 - unknown - 0 - - - theObject - GEOM_Object - unknown - - - theStartLCS - GEOM_Object - unknown - - - theEndLCS - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeEdge - mkr - 2.1.0 - unknown - 0 - - - thePnt1 - GEOM_Object - unknown - - - thePnt2 - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeWire - mkr - 2.1.0 - unknown - 0 - - - theEdgesAndWires - GEOM_List - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeFace - mkr - 2.1.0 - unknown - 0 - - - theWire - GEOM_Object - unknown - - - isPlanarWanted - boolean - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeFaceWires - mkr - 2.1.0 - unknown - 0 - - - theWires - GEOM_List - unknown - - - isPlanarWanted - boolean - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeShell - mkr - 2.1.0 - unknown - 0 - - - theFacesAndShells - GEOM_List - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeSolidShell - mkr - 2.1.0 - unknown - 0 - - - theShell - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeSolidShells - mkr - 2.1.0 - unknown - 0 - - - theShells - GEOM_List - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeCompound - mkr - 2.1.0 - unknown - 0 - - - theShapes - GEOM_List - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeGlueFaces - mkr - 2.1.0 - unknown - 0 - - - theShape - GEOM_Object - unknown - - - theTolerance - double - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeExplode - mkr - 2.1.0 - unknown - 0 - - - theShape - GEOM_Object - unknown - - - theShapeType - long - unknown - - - isSorted - boolean - unknown - - - - - return - GEOM_List - unknown - - - - - - NumberOfFaces - mkr - 2.1.0 - unknown - 0 - - - theShape - GEOM_Object - unknown - - - - - return - long - unknown - - - - - - NumberOfEdges - mkr - 2.1.0 - unknown - 0 - - - theShape - GEOM_Object - unknown - - - - - return - long - unknown - - - - - - ChangeOrientation - mkr - 2.1.0 - unknown - 0 - - - theShape - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeQuad4Vertices - mkr - 2.1.0 - unknown - 0 - - - thePnt1 - GEOM_Object - unknown - - - thePnt2 - GEOM_Object - unknown - - - thePnt3 - GEOM_Object - unknown - - - thePnt4 - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeQuad - mkr - 2.1.0 - unknown - 0 - - - theEdge1 - GEOM_Object - unknown - - - theEdge2 - GEOM_Object - unknown - - - theEdge3 - GEOM_Object - unknown - - - theEdge4 - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeQuad2Edges - mkr - 2.1.0 - unknown - 0 - - - theEdge1 - GEOM_Object - unknown - - - theEdge2 - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeHexa - mkr - 2.1.0 - unknown - 0 - - - theFace1 - GEOM_Object - unknown - - - theFace2 - GEOM_Object - unknown - - - theFace3 - GEOM_Object - unknown - - - theFace4 - GEOM_Object - unknown - - - theFace5 - GEOM_Object - unknown - - - theFace6 - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeHexa2Faces - mkr - 2.1.0 - unknown - 0 - - - theFace1 - GEOM_Object - unknown - - - theFace2 - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - GetPoint - mkr - 2.1.0 - unknown - 0 - - - theShape - GEOM_Object - unknown - - - theX - double - unknown - - - theY - double - unknown - - - theZ - double - unknown - - - theEpsilon - double - unknown - - - - - return - GEOM_Object - unknown - - - - - - GetEdge - mkr - 2.1.0 - unknown - 0 - - - theShape - GEOM_Object - unknown - - - thePoint1 - GEOM_Object - unknown - - - thePoint2 - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - GetEdgeNearPoint - mkr - 2.1.0 - unknown - 0 - - - theShape - GEOM_Object - unknown - - - thePoint - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - GetFaceByPoints - mkr - 2.1.0 - unknown - 0 - - - theShape - GEOM_Object - unknown - - - thePoint1 - GEOM_Object - unknown - - - thePoint2 - GEOM_Object - unknown - - - thePoint3 - GEOM_Object - unknown - - - thePoint4 - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - GetFaceByEdges - mkr - 2.1.0 - unknown - 0 - - - theShape - GEOM_Object - unknown - - - theEdge1 - GEOM_Object - unknown - - - theEdge2 - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - GetOppositeFace - mkr - 2.1.0 - unknown - 0 - - - theBlock - GEOM_Object - unknown - - - theFace - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - GetFaceNearPoint - mkr - 2.1.0 - unknown - 0 - - - theShape - GEOM_Object - unknown - - - thePoint - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - GetFaceByNormale - mkr - 2.1.0 - unknown - 0 - - - theBlock - GEOM_Object - unknown - - - theVector - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - IsCompoundOfBlocks - mkr - 2.1.0 - unknown - 0 - - - theCompound - GEOM_Object - unknown - - - theMinNbFaces - long - unknown - - - theMaxNbFaces - long - unknown - - - - - return - long - unknown - - - theNbBlocks - long - unknown - - - - - - CheckCompoundOfBlocks - mkr - 2.1.0 - unknown - 0 - - - theCompound - GEOM_Object - unknown - - - - - return - long - unknown - - - theErrors - BCErrors - unknown - - - - - - PrintBCErrors - mkr - 2.1.0 - unknown - 0 - - - theCompound - GEOM_Object - unknown - - - theErrors - BCErrors - unknown - - - - - return - string - unknown - - - - - - ExplodeCompoundOfBlocks - mkr - 2.1.0 - unknown - 0 - - - theCompound - GEOM_Object - unknown - - - theMinNbFaces - long - unknown - - - theMaxNbFaces - long - unknown - - - - - return - GEOM_List - unknown - - - - - - GetBlockNearPoint - mkr - 2.1.0 - unknown - 0 - - - theCompound - GEOM_Object - unknown - - - thePoint - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - GetBlockByParts - mkr - 2.1.0 - unknown - 0 - - - theCompound - GEOM_Object - unknown - - - theParts - GEOM_List - unknown - - - - - return - GEOM_Object - unknown - - - - - - GetBlocksByParts - mkr - 2.1.0 - unknown - 0 - - - theCompound - GEOM_Object - unknown - - - theParts - GEOM_List - unknown - - - - - return - GEOM_List - unknown - - - - - - MakeMultiTransformation1D - mkr - 2.1.0 - unknown - 0 - - - theBlock - GEOM_Object - unknown - - - theDirFace1 - long - unknown - - - theDirFace2 - long - unknown - - - theNbTimes - long - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeMultiTransformation2D - mkr - 2.1.0 - unknown - 0 - - - theBlock - GEOM_Object - unknown - - - theDirFace1U - long - unknown - - - theDirFace2U - long - unknown - - - theNbTimesU - long - unknown - - - theDirFace1V - long - unknown - - - theDirFace2V - long - unknown - - - theNbTimesV - long - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeCirclePntVecR - mkr - 2.1.0 - unknown - 0 - - - thePnt - GEOM_Object - unknown - - - theVec - GEOM_Object - unknown - - - theR - double - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeCircleThreePnt - mkr - 2.1.0 - unknown - 0 - - - thePnt1 - GEOM_Object - unknown - - - thePnt2 - GEOM_Object - unknown - - - thePnt3 - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeEllipse - mkr - 2.1.0 - unknown - 0 - - - thePnt - GEOM_Object - unknown - - - theVec - GEOM_Object - unknown - - - theRMajor - double - unknown - - - theRMinor - double - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeArc - mkr - 2.1.0 - unknown - 0 - - - thePnt1 - GEOM_Object - unknown - - - thePnt2 - GEOM_Object - unknown - - - thePnt3 - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakePolyline - mkr - 2.1.0 - unknown - 0 - - - thePoints - GEOM_List - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeSplineBezier - mkr - 2.1.0 - unknown - 0 - - - thePoints - GEOM_List - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeSplineInterpolation - mkr - 2.1.0 - unknown - 0 - - - thePoints - GEOM_List - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeSketcher - mkr - 2.1.0 - unknown - 0 - - - theCommand - string - unknown - - - theWorkingPlane - GEOM_List - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeFilletAll - mkr - 2.1.0 - unknown - 0 - - - theShape - GEOM_Object - unknown - - - theR - double - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeFilletEdges - mkr - 2.1.0 - unknown - 0 - - - theShape - GEOM_Object - unknown - - - theR - double - unknown - - - theEdges - GEOM_List - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeFilletFaces - mkr - 2.1.0 - unknown - 0 - - - theShape - GEOM_Object - unknown - - - theR - double - unknown - - - theFaces - GEOM_List - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeChamferAll - mkr - 2.1.0 - unknown - 0 - - - theShape - GEOM_Object - unknown - - - theD - double - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeChamferEdge - mkr - 2.1.0 - unknown - 0 - - - theShape - GEOM_Object - unknown - - - theD1 - double - unknown - - - theD2 - double - unknown - - - theFace1 - long - unknown - - - theFace2 - long - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeChamferFaces - mkr - 2.1.0 - unknown - 0 - - - theShape - GEOM_Object - unknown - - - theD1 - double - unknown - - - theD2 - double - unknown - - - theFaces - GEOM_List - unknown - - - - - return - GEOM_Object - unknown - - - - - - MakeArchimede - mkr - 2.1.0 - unknown - 0 - - - theShape - GEOM_Object - unknown - - - theWeight - double - unknown - - - theWaterDensity - double - unknown - - - theMeshDeflection - double - unknown - - - - - return - GEOM_Object - unknown - - - - - - GetSubShapeIndex - mkr - 2.1.0 - unknown - 0 - - - theShape - GEOM_Object - unknown - - - theSubShape - GEOM_Object - unknown - - - - - return - long - unknown - - - - - - CreateGroup - mkr - 2.1.0 - unknown - 0 - - - theMainShape - GEOM_Object - unknown - - - theShapeType - long - unknown - - - - - return - GEOM_Object - unknown - - - - - - AddObject - mkr - 2.1.0 - unknown - 0 - - - theGroup - GEOM_Object - unknown - - - theSubShapeId - long - unknown - - - - - - - RemoveObject - mkr - 2.1.0 - unknown - 0 - - - theGroup - GEOM_Object - unknown - - - theSubShapeId - long - unknown - - - - - - - GetType - mkr - 2.1.0 - unknown - 0 - - - theGroup - GEOM_Object - unknown - - - - - return - long - unknown - - - - - - GetMainShape - mkr - 2.1.0 - unknown - 0 - - - theGroup - GEOM_Object - unknown - - - - - return - GEOM_Object - unknown - - - - - - GetObjects - mkr - 2.1.0 - unknown - 0 - - - theGroup - GEOM_Object - unknown - - - - - return - GEOM_List - unknown - - - - - - - - - diff --git a/resources/GEOMDS_Resources b/resources/GEOMDS_Resources deleted file mode 100644 index 06f018f22..000000000 --- a/resources/GEOMDS_Resources +++ /dev/null @@ -1,10 +0,0 @@ -formatlist:SALOME_GEOM - -SALOME_GEOM.Description: GEOM Document Version 1.0 -SALOME_GEOM.FileExtension: sgd -SALOME_GEOM.StoragePlugin: ad696000-5b34-11d1-b5ba-00a0c9064368 -SALOME_GEOM.RetrievalPlugin: ad696001-5b34-11d1-b5ba-00a0c9064368 -SALOME_GEOMSchema: ad696002-5b34-11d1-b5ba-00a0c9064368 -SALOME_GEOM.AttributeStoragePlugin: 47b0b826-d931-11d1-b5da-00a0c9064368 -SALOME_GEOM.AttributeRetrievalPlugin: 47b0b827-d931-11d1-b5da-00a0c9064368 - diff --git a/resources/GEOM_en.xml b/resources/GEOM_en.xml deleted file mode 100644 index 01c72eecd..000000000 --- a/resources/GEOM_en.xml +++ /dev/null @@ -1,312 +0,0 @@ - - - - - - - - - title="Geometry component" - date="2001/12/12" - author="Lucien PIGNOLONI" - appId="Geometry for Salome"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/resources/GEOM_fr.xml b/resources/GEOM_fr.xml deleted file mode 100644 index 8c925b61f..000000000 --- a/resources/GEOM_fr.xml +++ /dev/null @@ -1,256 +0,0 @@ - - - - - - - - title="Geometry component" - date="2001/12/12" - author="Lucien PIGNOLONI" - appId="Geometry for Salome"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/resources/ImportExport b/resources/ImportExport deleted file mode 100644 index 574e0e2e3..000000000 --- a/resources/ImportExport +++ /dev/null @@ -1,14 +0,0 @@ -Import: BREP|IGES|STEP -Export: BREP|IGES|STEP - -BREP.Import: libBREPImport.so -BREP.Export: libBREPExport.so -BREP.Pattern: BREP Files ( *.brep ) - -IGES.Import: libIGESImport.so -IGES.Export: libIGESExport.so -IGES.Pattern: IGES Files ( *.iges *.igs ) - -STEP.Import: libSTEPImport.so -STEP.Export: libSTEPExport.so -STEP.Pattern: STEP Files ( *.step *.stp ) diff --git a/resources/ModuleGeom.png b/resources/ModuleGeom.png deleted file mode 100644 index 4cf6099f858e9d05d2eda0e267525267a04badd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1879 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 S6@0n?0000cQgB zyD{S5xesVa7;4XYX!zNoS--34_V4A9e)E)($q`lPe8{`wW( z<^96BxBIkgZoe^h7G&X@99HV;)U;&f(|-@2f7H$RY5g#yzCP!lqQM@`68pVoWr7yw zMss)Rp4vR+@9BT;DM^)**D^UKw@h`N=%$`<)KTJ4%$pl`atk)jRyyVUa`vu;t5&#P8%PDW@IPD5gw=Qd!{ ztT27{_YC-*u>sOY|D&wp8SAVlfivI}xO76q-OZk85rws3@9^Ayx?})ot$`EHp{_J) zr+O8Zz#A}k6nc@^g84SL3Y+n!q;72vyd0u%^R%&4-A8$CD+|CLxB|rO^*d5ZhPKT& zuR&b=Cj?0a!^y zK~#90rIfvH!Y~wtKU0LfbYkk>iEd@;9Pt9>EqH}8hF9=g&;cn7pbWe~w|Zf3*GgU7 z2+18{H$Qbu5J$2S`yL-3-`re*<#Gsav3!R^Z9xHN4-xJe->>vj1)#~6b- znV_@z^PFsxA*CdlC2o7@Kdv>|n5e&|7wZ6kdxr1s;sOSIy002ovPDHLkV1hq~ ByH)@I diff --git a/resources/block_face_4v.png b/resources/block_face_4v.png deleted file mode 100644 index 24f5c65135afe70f0c71cd8c3ea2fdd371f30044..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 362 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VTavfC3quRTG=^*1+;V+D5zYdS z$YKTtZXpn6ymYtj4^WW3#M9T6{R*cvn}xu^Yty2ELf<`I978JR?47)q_mF`=>wLjh zZZ5B|2Gcb<6LJo6d1i)j1UodkI6pBxq!sRB)pcYV^Ue>--Rd_z-+W$PzH>8^@=CFX zzKsj(6l~@OKQLfs$ho_3j^=l38MSMx|GtxyT_{q)_05mjq`>J^@rI%|DJs$1J6>-P zP*(O`s{K;=!JNbM8|uqnNQu`L+DjxvZ@2mS#rf9$xOI)fr*iw(R-`Yn`*JJqUDn>H z!zpTa?NyW*I9L0~9yHaHk5FPNRk70f)O7c(=H!_-X0Nea;eYwC9aG(E_Q3L9?)->7CxJo0;OXk;vd$@? F2>^<5i)#P? diff --git a/resources/block_multitrsf_double.png b/resources/block_multitrsf_double.png deleted file mode 100644 index a148c710205af61ad6ae0572356d76862d71c93c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 604 zcmV-i0;BzjP)4z^5QV=BD(2vd6{NV7Ddo<8Atsecqw8Wwbr@_?8C5~0$xleYs4^(sIpCnms7=ar zRugb(6$iV;fu;~#iu0~drzlR5Eoa`$yqTSO5jFqy^_~Kpf4&VR$0vKyQ}|~)JrOlg zhyR0Zely?M*G5Q}&HQFw|M>MH_|x8ZVu`t{_G#n(Dd8Yp1iMy>brx4SOk!}oSF~}` z6GViA*9Xzg8QRhkOU%)`qhOm{Oo%1MRUKRsV=zGHQ^u!z6juedwB*M*0L4{-^aNKq zj@~xOXV)`ytz^TD^N;7Gq=*R6{*;KCng}447=Y>J6jepniil8L70n3NimEcboHG6} z4)`#`?(DK*#`Mb+Ah7amf#AP$kDoJ07nsCsuZ>m;fQW=PeDc3NtrSj zo~1A53wGnQ($?BU)RT(|%W_HjJS9KQLyJDyeRQfoHdy&t#uA6Pz_5E2ezDt0J+sAfuz^!mST{v?Udl`JbAwHLX6=L?CnA`{ z>{c6FTKcBHakuSr?Bam!(;J`cMa9>mwxuOMec!PDbQ}D>eSayov@D%#RxD{c=n53G zZ?oD}j#ahVQWmc^p|3Tpbk*E)VmN$rxGfGMg29BD4U$Dro26^irf>Rzkt7n-=8p{9 qZ+4z^5QV=BSIoi{d!XXdr;$39X(OD*qzLY;)&y)!et}B;1_y$xfYJsmt`cgUe_%BR zHG!xQ+!hPBh2UJQ?sRvOA{Uu*_wDSP_hu%b;J-$A3NZfmRDC(R?ggjtZ;svs6a+2) z+q3y>ezdN}lQx_AY+n3+ep}rq;Uh{EOWUW8dsV`2vZ&6Tbz~;PSc8rlYQBWc^PZn8i}dcO~ybrAYw=bz4l%C@qCZ4Ax^!T5Pc#94>I?Dt`2 zGT77($|Nm@hu%5sYHbrx+<(7kwO)~Q65>wG#pjEYlhJ-xF-#v)uD)D(GsK(mnq=ui zN@b#`orWU9`0fb<7z=&9JesF6@eW|Q>(fYf4BM??tRbDI|D4+r2OyCgcDamfodK}? z)2DRv(6-6e8L^HlQq4)Z?gizf+p_RLRlL7)Ht002ovPDHLkV1gE%6g&U` diff --git a/resources/bounding.png b/resources/bounding.png deleted file mode 100644 index 7d55637945d7476e974f6038ee9b33cffa634ba7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 444 zcmV;t0YmxK;mShx>wN@DP-wd5afI zr~r0px$Z};(}?QtbGDexF~$(}BdJV@YQvqNU9P(HbRQxD*)*ef*{j_K$G85hVpDkQ zi~8;ica@SfXE++-cCG{X2Nm1WrCnL|fblpy3sk-D_N7DTobT{CT@#PPqu}cKbGoiU z71%3^5Rjxf%Kk@a3A#dP*Yqo*NGzcyXFv)6q|zKs9l(^ zoW(V4`kv9dERS6ehvw9dCIGI_K(cfU=s0ph_Q#I=5W}8S82Q0000w zK}y6x5Jg{W7QZ2j9uUbXa*4qM=-eWA2m~BFg13ls7f%s}KxW}08)+ArU`(bH0wW0i zZ8fjzS67w6b5-437xxRmC>Sv-n&C0?K!Y!eg4_G2Sx%m%0F;N)D-x0}ST^|Q*Z0Mu z@+_r)*VGNCj}vX%jw(Fc>@!0V1P+r{bwxsgq^afp;pg!!X!$$gRDXYL{vj~DDRe)* zHg*v>H!_{NEy}Z${mcGGWMX+4)@cZngq1~+Mkip!K^VeZ?AY9GaIu>r%0ua!x}mD8 zMd%o|eb|~w4;2X;TN08*pp`|j*gfvT=Sva}hot2S&nIiBFJSgbJyk=5&Hw-a07*qo IM6N<$f>H>9P5=M^ diff --git a/resources/box2points.png b/resources/box2points.png deleted file mode 100644 index 8fe93676ddd235916940dc98391254e4d2493150..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 330 zcmV-Q0k!^#P)!wDA3?xTDFY$76QOm=HxB7c+ z^AEhOvaid@{W>-Yyw@_l`Y9@l9J|+D5D6^nk6^ug7)cl!FyS!E{??FL90Hh4Emlt} z*wlv0K?UmE0d3QwZt7X+7`EQ5CHO;8$om`Bqy`zXS)ic-Q+~sMiK38%g$2p^7k;g* cD+~ZW0Y-mST=`l}L;wH)07*qoM6N<$f;q>I#{d8T diff --git a/resources/boxdxyz.png b/resources/boxdxyz.png deleted file mode 100644 index c84482ac52b852cef4571355f1bab075bcab7fe5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 364 zcmV-y0h9iTP)_y~X{O9YOP10X?XN1~uXT!K?rktL^~a1$+s zy@`pvF-clpv&D|Sd2fG4q3M-YXr)p8yLO$}VD0s2pmBDHL%WB4+_f4zHdvA*oSsj1 za^ffiAf2aL96>~SA}jR6>}$|e9EF&=vM5=8FR7|(%V87KbcVzVY&Xq|oPYok=|(n% zt3_swylL1~?=2srf8gP|y152y54+K7k^O1!?)Dyl$>g#hxa-N(s((=&g-oBOJT}lQ zOS_SWVYLhlKty1pw6o!8l4KI*Ef($u>uMs+hF70T@0eXbu(R2zOO7H;+8Pla?3ciNVkf9I_hG+<= zLo8LU6;}yHRhIYPd#GBW z4;nV(W%HtP>FhcA{l|dC1Dh{C%!jT&)}S$gIDv>TyPr9D*m47FDQaMOQ6XKV(6xp> z=}u`E=qdA|7H0Dfs@u>m(12Zn`1$4A5=VW6KIztwZt7wFngamDSU^rBrjx1b;cPyH=Tv5sg5+J>@VEIPX5DaGn#SkmsWlrO+00 z!sc^>r^f`V_Z3vF+A!YTFzVV{`v-M^6cR!R%pc~#o6@V$DQ)aaE`x)(S|NbeS@VZ* fGcYy=f3bf6q1lTcLZf9Y00000NkvXXu0mjf)S{{G diff --git a/resources/build_edge.png b/resources/build_edge.png deleted file mode 100644 index 877c1f702f8aa641f88edbddfac8f35d4d04604b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqEq&Y{1j{FkY4Y z>?KpD_LqE?Y3)40o7~baE?gkT)p)HeOWQ6ad?x?tL;eN3t}WI79=_m-e0E2~=S@GK zgh$H1?(5qgs8DdY@@CDh{f5Se&)EI)O=z;!wG8HcW*{pPdiVHRw(N~s8(4pHZcA!U zV9{<0)Zw0Y@WF3p&OYH|K>`-d2M-1*Nr)VB3}u{UsL>X%XBYb$?j);)i(mM+gIvwv M>FVdQ&MBb@0Pnd`xc~qF diff --git a/resources/build_face.png b/resources/build_face.png deleted file mode 100644 index 5f12c70dfcfeb10809a6d5f622497564658ce67d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 225 zcmV<703QE|P)hWHC}B%(dKEF2%1xyrN_|H*218vp~=9(!ok47!GXnv zBpL<+@87&<;N;pEhWHC_XOhBY)aFffY+;Wei=OAk!1UBC7}2MY%S2L}fh zF9Qv0o_2|#qd)5{18F~Q(ZHY3nL7JQPRm?l+@1(#y{xdf7nK*^`2tp&fA2^$6h$cBLuG$#iq z11S5U76Bv_2*`#B@CYyniU@*f3?o1p9h5gg*@+N9H_X}9nGqulLC)sn;RNSRLICVd t9u9`!z+l|P7uZ%H1knUt2raUZ0RUk3Nj-3cs^kCw002ovPDHLkV1m~4Xk!2X diff --git a/resources/build_wire.png b/resources/build_wire.png deleted file mode 100644 index ca881f8b04898f0932648d4fce8fbe082761e964..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 340 zcmV-a0jvIrP)ZrE5Jlfc6jP*d=}2iJ(Lk4ydc|SvGf;Ad_!Q0sEb5f$ps|!D5|l1dY=N{cA}kCn zI2%v3#qjojX8tNHcddu};vl%36gGb=XPdKa3>G!lqxzPMLt%|EnASKysG5k^=PyJA zo$3+X%d%+=#u$o2F`B@ifzi66YN88tSjuP0`L49lx&mPJxVp0LWjP6JswM&$sq_N& z6`A(>UwZGMOQko^rSe}%nNm5PvcfK^uFO0FXeY zEhk~k$MMOTh7Oi(;?ZT33cE~ye!sZHk!@nt&%OkLh`5t-%R|vs2h*um&ME6uD-l5g mxfuovYqJC$!oc%!n5#2GgO7`X&xQ8@0000!M(g*yhUZn zo_=3l)ifUsZQG72ytdhAhIA1eCM~Oym>5aZmivvSd0%Y#JK;3`=h>vs%N1<~d+evE z7tG%-H{V}_TQFGrQ|NAb>)I^1_GG$9arQ`-?8#60&B~-@Ki0(%lSHTx1saWj4Fh3_ z*~qec++ia-C5m(5>Z+!!N-sLb4o?R&IYR{^j6z~!FBmFBk-jjPxfDrQERy^cUPo4s a0ek}a;8PDX57Br40000oZx=9M5{L*4@ZI^AY6r`xU*%8y$XbA9Z{48`8glm zi5}R*Y$&kZY`xGH=)%51)uwtRplOzBe#*6evd-2}hAM1^0n#jGF<nR?RsmWZ$G^u)KupHMOh%FAR_N8973BIfQWFHJM!=VyJ#14h1cK4 hqGOmh_(@C-J^}57k=cB`rsV(t002ovPDHLkV1k@5bSMA- diff --git a/resources/chamferall.png b/resources/chamferall.png deleted file mode 100644 index c90b6740ee7c5d52d46bb167e5cf423353a41e44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 288 zcmV+*0pI?KP)p#O@l05vJ<|^E|H# z+fb&m!0ow(vM3=hayLV@OfFej&-M)I_uJ+Vfk`NM@-;TSf5cXMoIX?wDC82;)TRen z-ad@MY^Z^;9TgdT8-eVmb? z!0jjLCdBmEKEO1Nxv|aE#KhnVv!NY>aq8P&TmM@|SV&k{SZt_}%#bkjOJ=d=VY;`! z^8AN~r`g-&?duj)_ORstb2r+tbZx7nlS`9hfQ!K8(`PU1HNM=x{+gjdH*2El8Z&SH z<*v>4H+vkIBR_aHB}s{Aw5V2XIdZ<~v_gz0TNamv_`ypGar(k$JWLaKnNuzO`25%c zzA0NTSCCdapv-ViRYB@7M}Qmq)3f6FaRMeHcMa0R)7^RuSS)8xZlCPP#KFn9!MxH! sqKUb=P&_^%x>3MIxI}Tw2`4rN>CH|n-#=Jl3-mjKr>mdKI;Vst0NvPR`2YX_ diff --git a/resources/check.png b/resources/check.png deleted file mode 100644 index fe4a73b08cd88a6c0e1a4f91d547871ac9a1dbc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 606 zcmV-k0-^nhP)BjU5XXNG9`1n*5_oX7W@{jep-Tc8YLlT^y(Q4aw2=B67)?c_-=WZ{q+7ZK(;--k z!5$j$5=b{^iw6%6BG3&6bx`zTH3<}&r3Y_%cfb4J|MXNL<5^?vd2#<8P->DD=c$6| zQ{-~?_xB&ZLYJQ~wG>OCB}fQ28X0NgBY&_q#H z#-lM|Kg1>$O%#^*b@3?1CYHh3Aae@!Rx91wdIlgKg#8dzCDoMK<&1a~(>v;6ttHhI z;~9LDOm>d5wDlg(Va_Uk|F_OcAAfR*5adj;J7&$tQ`11LSGuiii zjAsC7ZZ+@6titqiO6yIFupj1kcj16ilPvxbBO(NTkSnMM%&up-B})ZhzL?W}-*uig zx0=|*x<;ifr)lagf_e@;`FaAt;oHNKH3i6dDh3fL166YsZd_xCM=`D47CXB;H0lkE z7^vbvKo0Zrnzhxgor8{p8)KYD-FICY^@dwY;iVCiZ`=3rJ)iboyHZ*GeHAZZwaNCY zZRU$PX_BI<1bzV3e2Ucq(VE)T78c|94|llvFg z+}w9oS67|;)|Z!;lkM$iJbEas+g-dDl&xnQIpZup#AdcxxxAiOmi?-4hCAmSXLtZ$ z^YdmBu7m*8XX@v0odK^6CFp1 zhyd6bX0RVemjEcG06056OYXu{Pf>YNq4Kx_z}lxZwAQ1*3>JKd0JywK!CGq$_74bJ z0jj6aJq`WATzkLG^{;E&a_79`_|=I7K=Kf@0<&v$8qwZwv-Exmr4+G_aq}*Pe1YMz z6b7vTfbe5zHH9moQ5WkNS5lbgdDh$rFkA`QSl>W$f{0iOYE!j=&0MOw{-Qou8wUDS zKWXo^5fQwCmntZFrcw7(`&TztG#8sDQvlUdrq8;EaU7ekUeUW%cmcrtn|Ujm+Encp zbV1xpV;BKuhmhHI-L$DbQ)hZ+no_Zp4(2e21K^5_C{aC? zD!3hL%$_i=?!I*^LlHsxViW;<*?MZ_Iyp7@*WcKPLP+1O*4kW?%&Lfth20DM-}(cr WIulCRjqg|h0000wpp*g;0sXMn+;afHZu5XB zMFfw4)#<9IK%ts@j$++`bMAq?9{v{w0L7|9bIU)D43P_2OHD+>PY(+f zrC=6l+&!NojDP-t7_{3O1DCbbmo`VS>R=A=N>)mF&Ze5~%3JS;1H6)L85qj+MrOV> zW)C5vpoh*7L@7qxP;%0(*}r&FEbw^PGIMDo&A2mzoCJn)?^a4msqrTZfV<7ZM#~*g z%3V0fD0=6gvuR^FOC7Z0WfI-W?mZ`twffs tf@n?-MU;YZ&fmP2F>Kc1TelM+qhA{E&LCKUM^XR)002ovPDHLkV1h4ttRVmZ diff --git a/resources/circle3points.png b/resources/circle3points.png deleted file mode 100644 index a14c41b487f84a6e27d3e8f4d965e47cb7fac8c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 439 zcmV;o0Z9IdP)N?)%ox(N*#_75()=hP z{T$>Gi0DUh6lXjg?G0==7@lOD;ts&4T_FSf6lcb3^2qhD+zf-zX_yTw^VRCrtk(`D z>x6fQvH5noi24+io);fQbA@(8sv}}U>?v?OY=d@*5~gNKI4?!bl^`OJN7up54HTDN hX}WEfr)J7g_ziQYt3F)TDwO~L002ovPDHLkV1l#Zv*`c; diff --git a/resources/circlepointvector.png b/resources/circlepointvector.png deleted file mode 100644 index 8cd0e4aed0361b14d436e09871985a0c9ba1b5f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 346 zcmV-g0j2(lP)t$2iVk~A?5D{c51z^;$3)ZK2 zTHsvH!OYN3EXyHSp5^r>%YkMV-FI9u!1cKWG#^dIliG%A3S$hmwx^w$(AM&5nTT^a zM<@s#zeJa*O{ikKDTn<*nb1%dLsM{n+yMX-kqvZfQ`}-NtFFdTL?Cj2A?Ofkm`tVc szMf2_ARk diff --git a/resources/closecontour.png b/resources/closecontour.png deleted file mode 100644 index 9ab62f9a0367d8917269f124cfca463203e8e6c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 368 zcmV-$0gwKPP)@C#0cnT3gAAIP`Qs?hFlA5Mz!JSZ& z(&U@@r!$Etr?*_Pk%B7RktYcP)@%#u(~;%xXEyuTe2?_uE|c6e*=DBr|OD za|i|nnC!cpFLb?KDa*2#2p=-VGm-HEZKucckv@4KLPs))DR2Hg?J6ZN*jYq=b0h<{ zct+^L(m*;Y%La#5#(U@~C@>WCa4;mTwF_*TD;uU0P5nW?m>mQf z9leQm3fU`cJQ+t$4smP5NnG@1$YK?fN)*kfbN}^Kc;$gP7~$i}vh5BK1$i=3-ua3E O0000w zy$QoG5Jo=*6(?|^(o=W|lVv*oK_l$mh#-v9@a}Q?bK5$?0yuls^Q%PdU4LT~loUGL-8b#}MIz zM|*02d)spzk|vnKphPL^>>Ee~3kxFJ2l)8~;W@DA>z#jknbYk+$efzO-~pu$MiD_7 R(6s;n002ovPDHLkV1g?IZifH> diff --git a/resources/cone.png b/resources/cone.png deleted file mode 100644 index a150f54cd4b7b1150124eb83be1cc3afbea90c21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 406 zcmV;H0crk;P)s5Mj3ve8tM7 z&@t-%$qGV#^_vfG-aN*`a?^Bf%l#YZwI9sipofiE#hXNftH4P#AfCpkDqG#6g>rV~#n*zT=RI1tHVy)ar!fE`LRY$oFXy0$Fq_ZF z))}vF_1!wioe6^w2?P--@1aSJbu-EG3@!Gvxr~S)zR(MMNFc{ouKY(#YOJb~Z*nML ztJ_jdSGwS{?@pv*4=dteEh;+n07*qoM6N<$f+j?{ AaR2}S diff --git a/resources/conedxyz.png b/resources/conedxyz.png deleted file mode 100755 index f8ab8e21df3baeefd5f9fcd31e43f9cedde76526..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 438 zcmV;n0ZIOeP)a2Ap0 zqE1as(nj!Y^W`^hUM6Eu{bfN8F3)UBHPUag^ssqgj+)hU1MUD+E;Ou7iNU1QjXtjC_e>c9@7TkO30Neurw%qR5Hkk07*qoM6N<$f^Z1pw6oBDh!NV(LaG(@=g$})h$yDgjKu=IQ^b8#eF*$+{QE)nxPDYpLkVAxmJp}Rw z7j;M!>_kpn+6O`io<2Puk_?W2jX|FzXZjy|67*PK^dx8;raAu^#8>t&6&hTcEdWTf z1sGiZmOES6PP`jzU_R1p!Q^g2wW{bs!(agGiyneo%u(+K&{`iu2m9DG`@~W6y`1j` z&{{icrrBo@jrK7QL>KpslU`cudie^lMX$-{IkvDa87C%c?BaVl--E*8b39yrl>pen zxLq6cO@yPWe^x@OW75uIer1_r${(844nD_(E-Ao$pCmm1w=`&3=do z5(%StgbX)mGEPkJ$=kv@Ri#>0P{Uf+2RUbQ1`(U;L`cTT=2trQhj>`)K!uUCARoW@ bi~Ge7Rb%2TJ5cbl00000NkvXXu0mjf`?|j= diff --git a/resources/coordsys.png b/resources/coordsys.png deleted file mode 100755 index 823b377867e9d705364c5d3fbc3c2ed5c77574d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmds0OHWf#5S~7+ZICM7S|y~B)?g@!&lUJ?767=>t9fKjng7bZq!ff3^djoL0$9!1keNd4xND#m}{BZEXXQj(l|iH?~o+qC!Qni?YPy@htExWrc!<1^HPqt7<^R zW@H+8vVq1wxu_p@+pJ7?vN9>7DYfclN@ZW>@6T0JtZyTYrDZyWIK~bbu4>bp%p~%F zs{_s$kyH3$D}?#QQZwnmI)sT^jUmuX_?1f_Q!qol(^{331OSXY?e zt4{ERh<~^@sj?r}%C$p@{%{-%*Uy{-z6w^f&`fh5(<-40Wx#pQeXxR?TD4?QkoQJu zMs-eQ#9MG3YifR|?DuaEf`9cOh8*0t{JGq>II!K;gs5>Pp6}~}EeSCf1MuTH$j`#W z^V}?O%w!hti(I$gxW#>@L$yNl^RB~3D`}4S!%d+c-1(lxO^vA82D}n{azUm5_9Kp2 zac3jxsTds36tCR;z<|8{;QF1{iWttFujko|Ts_i-Y7yf%N%%1|bk6T>;F(<^xq)8+ z{O@L9bi5VqJM2+hf%8|wuilx+X4J*Id%ryz(%kHqm!=n-6@e6s}US;@DWA88US`Wwo diff --git a/resources/cut.png b/resources/cut.png deleted file mode 100644 index 4370b7ca37325c722d3d7f6ef4f6854da2798ba5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 283 zcmV+$0p$LPP)w zKMKMy6oeBqXi=Stu|sa&Fff z)xB!q diff --git a/resources/cylinder.png b/resources/cylinder.png deleted file mode 100644 index 3981e4cdd658816f1e0413774629552883ea7716..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 330 zcmV-Q0k!^#P)w zF^7m=7ElD7Z?Y-|Ul zbn9}y{XE~}83m6?*KArGkVO@h$lXJ|2UPH;Y@)oaTKMWvfh3lz&&1AvI&EN8G|ADjH! z{6k>0DBW=vKlHJA57-@d$wR5jf|gUTF?|U1P_J}~`7+_lLc!`#p;#w6n+a07*qoM6N<$f(lZOi~s-t diff --git a/resources/cylinderdxyz.png b/resources/cylinderdxyz.png deleted file mode 100755 index fa84a2ebd059b20691c279d5406891ebcb61ca25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 389 zcmV;00eb$4P)eT3IrFRL<&Ws%^@f_1VT!RNO7@} z*}q{~#~!a2k!fse?B_rB%qTK+QtNfuWK{QSqre*06&eL9L&_dwmV`-;B75BePeQQl z;iFmKj>%r%sj*qSE{K_FaxpoA_o6Vt;7_M1ZFgJBSGj2iLP4qM81OFoH(whMDuxUN zE>!XZ*5^LyM8`kH4%<*szJ$M3YfXE-CoZ@>ofx(cA&zJC_^UJ>h0kaReZ|Gh& zo6V_Cd%r@RJOr$9HBkJrceJb^x#TTq4Rm4IeOAp!XCu10x&EznF=UigI&I0r9~epx zdH7cDCrafvM4MVKxf1^T_*5k?^365ChJzvTfUCI`oDamfUgihb?vT8$K^b6x+6^KI jtf5e+3qfJRVz>DQsO*!lyE>;=00000NkvXXu0mjf`O~I+ diff --git a/resources/cylinderpointvector.png b/resources/cylinderpointvector.png deleted file mode 100644 index 524074ac7a15969877bc9653ca1b88705f5b4245..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 384 zcmV-`0e}99P)-ZRY7coNvh&tGQ`l$`-^UexYi zYxMEm`;PY?dzPi-K010SrtEDR+fuoYU(_z#P9-sdP>`n(~ z(TnA~o0;a7Y%b2y7y@=FO=WlsWC(L{f7{keNn_-1xfke_EK7-GV;8rz$q$T(5K;&V zhO+Sji3rEfoGq{b0000L#cK@(5tK^L4Lu&#Q&e+_cp#@pg^Rji(^Q|E#GsETnvgF%oh@G z|NsBVa=JU~LVs1qNz3`)HwMdQavt~mEVPW{xMI6d(A$KBu1e__8@xUpahmz;vqPyE v!~ecD?K;;U{BCHMV=yw=saPV-wD17?vMOc`V~)i0paAxC^>bP0l+XkK1JFi| diff --git a/resources/display.png b/resources/display.png deleted file mode 100644 index 6028075510b221a8b27f8aba539d25aa09535518..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F#`kNVGw3Kp1&dmD7ezo z#WAE}&f3d{e1{cySTEF<@N2lgXxKBUm&YScX=7nq-0|22FB_Ol)-Yt zxcYW>#7pr)W)2y`@qr>mdKI;Vst00IeNLjV8( diff --git a/resources/displayall.png b/resources/displayall.png deleted file mode 100644 index b2f001dc714b406e8c6c91c0fdd4f97d7213bcdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F#`kNVGw3Kp1&dmD7ezo z#WAE}&ehAdTt^fH+8*xw?Zqdc;<|y$XV*r79HzLW?!D)>x3X-~F8uUZEV`!m!C`JC z!H!w)${))-Yt zxcYW>#7pr)W)2y`@qr>mdKI;Vst00IeNLjV8( diff --git a/resources/ellipse.png b/resources/ellipse.png deleted file mode 100755 index 1d6f199fc84b150e5c18f1277bb6325970f6de7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 337 zcmV-X0j~auP)h#Ceh1UplU zkt73Q8ey9E?%oULYf4|Y!9l?cYuByCaLx4>nhb_A z_Zc`iI2fE=of%QW5SL;20LaznpC~eb)WduNcOl3?OO@vg=!St@2M5r!h-@jyl^}yT zSUA8gMF~S>!vuH)Al~>7wH7I1!@P$areJ+Pkh~1?F39=VG~vo6uwa5a2xuruq-@>1 z^*^$q*kTb|D){i_1DFr;Hj07h5dsPybbu@3U}1<+hL94==!SuU2_x%)1VNG@MWhh#Ceh1UplU zkt73Q8ey9E?%oULYf4|Y!9l?cYuByCaLx4>nhb_A z_Zc`iI2fE=of%QW5SL;20LaznpC~eb)WduNcOl3?OO@vg=!St@2M5r!h-@jyl^}yT zSUA8gMF~S>!vuH)Al~>7wH7I1!@P$areJ+Pkh~1?F39=VG~vo6uwa5a2xuruq-@>1 z^*^$q*kTb|D){i_1DFr;Hj07h5dsPybbu@3U}1<+hL94==!SuU2_x%)1VNG@MWhpF=}AOERCt`N)V&UZFcbyg^J@BJB;N1{45Vw>a3JYo!bZyO;OiU* zz2&b;(GDjtz?U9+3qas-07~_sR1dE2!vjYX$Ls`Ns{3vLknhAXq=NuRGF-V>@f)L- zoqkVtK?Q5kepuVJuO@OHlZ4;TpPvG82Nhvh7*`Aa*+eTIUzrT^Jx8Spw`a@YW+k1$8TV)zLc_?Bv9*{+U&+QmQNj{Vxo+UolF1#002ov JPDHLkV1mB0hMfQa diff --git a/resources/eraseall.png b/resources/eraseall.png deleted file mode 100644 index 3173050c5020753559d29b35486eaffbb3c983f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 323 zcmV-J0lfZ+P)pF^+`lQRCt`d(?QC@Fcbvfxtg9Vi_il|aUop^ahEO%*$Ca0^afsM zTrs5VQMG_||^g06mx0_M%~g#-*k;CLO&4Q1EBI7iyX62NPUFoe&+I7bze zDU306XSXyhfiiZSql(G7_R!K@9%vO5RFdBSV+?I$*_}H2-hT#`@>@`{2?zqd_uGPD z2+W)Q3mmT_!w~4sZX57j(^{%v+O$2iw2f6GSQSj0x{G6X>Z%aDku0TGVu4t7~EOeU>{>X5MT&!-}Sq#5+AmW`7Ulb+NR|+ zO_5*o)zqsAeb_cyYv`ATYg*fiBMtzrpEb8l%genal~h(1MfOwAmq8Ce0`y(aruu4! zF5CyxM8E_Pk^Q#&uq&xhNwxb<7(jV1G1B;fLtrT8A|e72*`E^xT~i9o>)Fp#O@l05vJ<|^E|H# z+fb&m!0ow(vM3=hayLV@OfFej&-M)I_uJ+Vfk`NM@-;TSf5cXMoIX?wDC82;)TRen z-ad@MY^Z^;9TgdT8-eVmb? z!0jjLCdBmEKEO1Nxv|aE#KhnVv!NY>aq8P&TmM@|SV&k{SZt_}%#bkjOJ=d=VY;`! z^8AN~r`g-&?duj)_ORstb2r+tbZx7nlS`9hfQ!K8(`PU1HNM=x{+gjdH*2El8Z&SH z<*v>4H+vkIBR_aHB}s{Aw5V2XIdZ<~v_gz0TNamv_`ypGar(k$JWLaKnNuzO`25%c zzA0NTSCCdapv-ViRYB@7M}Qmq)3f6FaRMeHcMa0R)7^RuSS)8xZlCPP#KFn9!MxH! sqKUb=P&_^%x>3MIxI}Tw2`4rN>CH|n-#=Jl3-mjKr>mdKI;Vst0NvPR`2YX_ diff --git a/resources/filling.png b/resources/filling.png deleted file mode 100644 index eaa725c328f18597842679fc1865117720f64828..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 450 zcmV;z0X_bSP)8z7}gm8A48ND+x9Xtv=sq(HI@is>c= zjQQCHUTq(r`|gYtj;qHhoN}nHXYOu+&GP~j&a8|xE7PcQ6|jcw=5PH+wW(-=UTx?n z%L^VK98WO>mU7eGX~Qx2tepi2b+XQti`KmyrDHou0qG`<|GW2YiQq@(?@S$r=j*CkKS zaUIcv;CK}tdf2`M0s+(;G%Mq(O@-Z9%Bp1g`f>(pwBE%X^an)!Xy0-&Oq32aT5F&qhXg|7!8R-7thJ0Mk9QO}j)!AqsEPP)lD z2(+O#WY+I_jT?a`beZQ4gd`{llGT|rHlxJ^CUlwSK}d%kK;o6;)(cFv7WRPK&!Z$_ z6~8m$hLSsy+d)3~2pak0WbcEP)+l*82%evwE3a9ls}0cieP=eEqhx@jS$ zBuSHU56VE&?zEjsLg5O$z~hRmTA&wr+w)&f1!#BL4!|dJg{!WtIzx8=0000w z%?X1r7>3`pIeY;RIh5iQE+Ji@V>p5+1S%b&TUdAL6jB5)1wFK+Cq=EXHhSxOOFr`O z<;f3&#;V}}0A_*JU}hkI)8#gs6$c*DEY-vbLQSM7*1h@B4qx}{S6~!I-Jx!r8n?XNAB`}j`t`0;Ylp)$POTjd(>PrX*yIm^?J38B z*DENs1gOE%EY)REA}?}8VKjLUXLU%NARGY~u3c*%Kq5#;5YZyw_)lo@KPKk{?#?wl ky@AtTVtmUsPK6`z1}Z~FboEA6U;qFB07*qoM6N<$g3VTO1ONa4 diff --git a/resources/geometry.png b/resources/geometry.png deleted file mode 100644 index 86746f0b0b64a734d647978ecd8acbf194569065..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmVQ2v8hb*ieelhAwBw zobmvm0|%5-R*0-8yOd-dl3iWc|n}+09pY<=6OLh1Z#16 z?KIKV{B$XE%6079gC1F=_;%(6?5GUT?%mC;z^)szUA;hOjJBM5t;g6GXi|5zj~)^c onN({s5giNEBE=n9%SZj&-f7GpJX3yI8vp0VPR9 zK~#90t&%;8gHRNOzb6(~urOd@b`Z0KfmD(eWEa^&QaZDQsb&igcQZ{OwT19f1Y$AZ z6j4XQ)2NeEKJNSO&pC>Um&&!istIi>)G$y{rJvtVImi7P0G;VdTtP%gwuy4)!kRi$ z7%tZfWm!Ha$}CgDK3c&$dZixZh!_ z4)yBsDyDI{1-9Kr7;@;;Dd4Lxc)mwK0D#l`^NHST1M?#1cD+&lbYc^)Vib&ad8p1= zgp0XDTIJ4lxK9qubNRSmlYXRj;D2Buf+rs0KE$Re9HTBQ@B_rR0yl=9_cp`{gqchW#2)P4@8O`0avzVO3;y!XHV`@P@Yr-ehV zP{Z1$rO||Ncb#wbUZgiF`C^vbN`X%wzd|_V3IZ+HVQ7HfuzZo8r~r~%Dah=UBLd<( za;$#*oIO|AsR>cLVz0J0o#}+z=xqE^jAv6$8;8)*#`9ojv?&0t7U-A-yr7iNsEaQ{Iv;gLb1Oc{7+vPUYsr`-K zY9Jhg)y9WpybpV>a6TFD`(>x>O91Wv<<_{~B&H|heb^}*U~e?>^2&)yZWIH~B;$RO zNoOtsD5XA|h8a1jU>86poe2TEnREu=yHX0%Fwa^6>w^{!xw5utY1GF=88{6TfPUaD za0|dr*)M{D;1gie3Rt)$7r*lBm1;$|0@el7FgxlQ3YxR*SZ>LEwO!ht1TNQ@Z@>=V z0s6?;Xldc~yrz8Wf#2}YD5dt4p_FNuo#Xeet^1%p=GF6@<~RJeg9HIKW**0WHrL#{ o(0dbj2Rv0u=@0J@{chy{06RlG7U%G7pa1{>07*qoM6N<$f^#6G0Tlf0L##!BBUhNK6GOB5YSsY*7#q(Sj#MwB8k3L{mWzUZgpA*w#xG zyrea(m!drg+fuwK@gnr36{Ln9JXEAMhu{W{B!c)nWYeT+60ILRnB6z;oA3RZQC8d+ z0<5f=iUwFcHUB^Dv*NxW(9||V0U@dE4gp~iHey8(EAC5pOIR(u%SmOw2Sfx%{2re| ziP)kPw*b6(PcB{<;?>IxtrbFN3(XrQQZsMPyOw#8S+?T7s4b~g^oWznHWfa0-ENsw zUyo0yfy``22A~v--*Xlk{@qlHj{DP#mqQKvzqTVwCTyGu=h@hu{pJcLVEg+SNeOO}hZcwbs57HIA6w=6+?xeOXyE6_saV zDG2PZBU!JKITOxktULAuFwJiBlb`obMs#GUR4$z|yUo`|)aa_!P*C2yH{j=ea{1g_ zU?8wBz#(7`SRcMR@@;nJ=?@*&J0j7@N3C^ONA;=^HBO9P>0by#?fKTzi$tQ4b1`E3 zfCH0vhaS}_bpU#2dyfI{fRNVu@Ys#h&+BXQ2f$n+a diff --git a/resources/interpol.png b/resources/interpol.png deleted file mode 100644 index 0fe35f2f4bc535d7f18551e628403e67de5371bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F#`kNVGw3Kp1&dmD7eAX z#WAE}&fCemc^eFPTx@I7PKaHwoEvOPH%Bm~u_RWco$C|z`kPA4ZV$gCb%cfk&ZE8q~P6b1r+6tlg zU6cPSO@FmPyL{dWIhE2??I-5GR`FQMGI6)Yw&_|dRpE#9j=#Ob^(~k6dyZ%$w{_0W zbe$9l_PMXVMVBsE^;zA4J5>?FU#dEt`4qiL3D;pxYTdUHx3vIVCg!09~_S AuK)l5 diff --git a/resources/line.png b/resources/line.png deleted file mode 100644 index f5a295c477f7c0e825470fc094d2723cb9582547..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 259 zcmV+e0sQ`nP)ST5QX92fx;VPfmA87KuVNh*deK$8DNh{G$1cQ!7MH!U5Wrv1SGb>(n(i+dS~el z1lE=*T0y|pRyM_|M2gYs-M?R1=l(UUajV)|xaJ zD?7R7M`aJ6F$XNWWGX1(h&A&V;6Jht<_-E{USJ6J7YxOIf-%@47>i9og{;APV$#iS zfDiVS&=l=z40x~Jcr_N*$rl4i%zk=;Vln7{ZYvBRvFGhDfESf-7;A&y+Bg6J002ov JPDHLkV1gW&W%d97 diff --git a/resources/line2points.png b/resources/line2points.png deleted file mode 100644 index f5a295c477f7c0e825470fc094d2723cb9582547..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 259 zcmV+e0sQ`nP)ST5QX92fx;VPfmA87KuVNh*deK$8DNh{G$1cQ!7MH!U5Wrv1SGb>(n(i+dS~el z1lE=*T0y|pRyM_|M2gYs-M?R1=l(UUajV)|xaJ zD?7R7M`aJ6F$XNWWGX1(h&A&V;6Jht<_-E{USJ6J7YxOIf-%@47>i9og{;APV$#iS zfDiVS&=l=z40x~Jcr_N*$rl4i%zk=;Vln7{ZYvBRvFGhDfESf-7;A&y+Bg6J002ov JPDHLkV1gW&W%d97 diff --git a/resources/lineedge.png b/resources/lineedge.png deleted file mode 100644 index 66a8d5eccbb7492cdee1185aab809fb583d2dad9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 938 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqMyzU}gyL32_B-8UFu2a^%Q=5Ni~S zhQP=Qf%9ya?0`OIE(!7r{{Nrh`YB#VAUDj@#WAGfR_+B)J_bb&my3&b{GWT*M1DhR zbEOK;sdpXvuM>qgHsB>xe_F~rKeKV` kIn6oc=Ifq*KmU0?yTVMSirYW07lMM=)78&qol`;+08&&#sQ>@~ diff --git a/resources/linepointvector.png b/resources/linepointvector.png deleted file mode 100644 index 054bc84625c44240be505a1a44ce6724686bac3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE zt9re)nNG3v*DA}d+KAF~599iBF0`ALHZS{xarDKLTSo4C(WhOG4}D}??@Ddtp3S)4quXQHn;(}d=OTA$MA z@KxRjZ(VrP=b&AJCeH$+-$fEWwz{p1A>Tsym@AmO`$caZVB7l+=pzPCS3j3^P6e9Z7Av1$p(B&ODcpq7pec2wst>v z_f&n$?bqMKudgrh^_aTDs{F54<+;|y<&SbsN~j13m7MgumtpDC_~(VDkK_6vQMm*z z)0_TIzGZG59f!UL+i9BAFQ2yIs9m`8HXCs#my;8RJ0QWa^w gkygI+sdWWo-0Id-Uph7?1HH!J>FVdQ&MBb@0Hefn@&Et; diff --git a/resources/marker2.png b/resources/marker2.png deleted file mode 100644 index 4755c7916b82c81cc878872af6fd69b06ec75ca4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F#`kNVGw3Kp1&dmDEQpd z#WAE}&eqGme9a01tOg zvrB*2@9eL;doyuz@q(0sZ#nJ0kA#A=9(O$#JEq_uut1r8&!!YZx2%`VyFVyf=R8VN zzg#P1zFX*u0dLM(9lehhhy4%i>H8p1q2iHsK|i6``l~~mznnlX5KA>#c zVw}2Jf@M!4uZr08hz6I3ikEA>0v)d{y_%Zz$FsPt(zn9sK_K6`MRK0JDYbkN`TsM0 z6LXK*=57nSzTp+_lkTc(8~;-u6{1-oD!M< D){}Zt diff --git a/resources/marker3.png b/resources/marker3.png deleted file mode 100644 index 835ea28bb5bf5c2ffae95bf16ae51c6c33938b8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 289 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F#`kNVGw3Kp1&dmD0tb^ z#WAE}&eqF@T!#&KSOaA3(oY0zvTAnhc9dh9$7SiXZn56hEcH!umc9I-$oDMKlcRw# z?`-{nzwf_aH^{5ueZr)7?(mMns7Xso*IPwL@VO>+Em3CQ6KqtKVs7o$|4Tb`gP`!0 z4f7p%t(k)qPJR!z<1BhzYCC~($MocQ-kjQXK8;KIe=g-Y@FLJ@qTPnprK+4Aa;rbx zeWRi^<9ATvM6D%0-&<4tKcxjM_*EoWs%mQR{dvPyv%|BB-ktq2W66|vX)_Yms8?lO j)!86*WM6r>*FI(aJM)Xa{ZLi|`I*7f)z4*}Q$iB}q&0Hj diff --git a/resources/mindist.png b/resources/mindist.png deleted file mode 100644 index 9ec01ae67210a449c8f3de704cd6991345c274ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 252 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 diff --git a/resources/multitranslation.png b/resources/multitranslation.png deleted file mode 100644 index 7d0e54b6e9a0a0b50aa4d190d6d006b29ed997a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 325 zcmV-L0lNN)P)}aNSgw!&F>_beC6)& z7``VAfq%`*W`ZGL9&06YGod$N0!D)!ju!w5lZErgxzC=5E&_Y7m|~yJe{wJcbu%Rs zU?27jbO7A4Sd03;Dy>JX7_z`CiiVi70gulb;=r+z)}J*{u?-+prU*l^AyU1w{O zMA#aWI&ft2aJ-Pebta)J-lmovyTOAtwMZh2vnWL~8PCUODo``2Wzn)`QcD8sO=|f8 XHs*q!?SfN(00000NkvXXu0mjf9-WQY diff --git a/resources/multitranslationdouble.png b/resources/multitranslationdouble.png deleted file mode 100644 index 3d7b91d5bcd9b0d55d83bf082469762845135db5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 395 zcmV;60d)R}P)1pw6hNPg2MIJt&>?fiKy!)E1GGLxdWTHDK?y08Tp@HQnM#%(AsGXmJs9M{5Dx)& za1tV0PD-7>>GAn|>HV)Do~=s`F&Pg7fcWii%olggDWD{vyv7zEi*ot7ELUGEHx~%c z5A*jqQb>OC%gm-0sU#ZR>~Jz327}&~$;*%=O|Y4zuQv46<|5nWJBoebzp@Ag09t8; z5KixHObXd3c1jUK5YN_FfISShcr?ntdAE`|(Nt&RQ#%KdnE0^V&mwDgt p7$Ou%CF#+t9{rGQv_S~rWxvfw93@F`QRx5x002ovPDHLkV1j#`sN?_u diff --git a/resources/multitranslationsimple.png b/resources/multitranslationsimple.png deleted file mode 100644 index a33c9cf144f2aea48c57fa73765d5c759d3b3263..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 284 zcmV+%0ptFOP)ST5Czch$i*SiAW?V*)<78`Vv6jLGCO1nivf_=$P5%nrbt0|DFO%-Te1zmK7HNY z6JVSgd9>j9dao-z?v=P4E!;-8noljXgM~QsLjeXu=vK2GEc&5G`i66v=?nuvMj2G8 z;!t(~TnW<|o~8)^KskYON>|pc<`LtsOcIC)^|ek{wu8m=nYWwE07RfT092_^lm(hw zBbKqS4Ltx^o`EFoM!i1_0a$()RJe@~z%?6mvJb!&H%cHt*oF}Ru1Fvqz+1RY41g5jz;irk~`^jOWe!er&;zA3_OGfFw&Hgbp|bCjhVj zLct_Y3{!cqwjTh5-HUG6z37I8z$6@lAP8U=zyP@Zb$LrVmLIVBY7^o{%^Ai~a-aH8qBKfnOHBIaQw9?a*dzU@-w`=Tg*8mU^ zEL&lT{qW!;HPu>E^{V${)A`z=|Fh4Vw^QiR*%cxsKJ7f`4mi!JX}bHBQU#?IvkLaU z^~_*2AR0yV2Yq%vyq|)E>p5-ZCqxt|`5wMOzUoV#u>Zd?LOn&G(~jkSj40%xX|Jzl)5Jy=UX3Cwdn ew5!ot1Mm+pHt^+FAPp-300009C6vn?7F+3y>Mq)KY7dc1Bm+`BbYQ6D4&je6 zV2QxD82Q2P{jvE78nbHQ3ThgkZV*_(#zF^yq(SC78F;U}!ARArtL2{R`+)?#-kyLs z!g_n^eIpy#N3J diff --git a/resources/partition.png b/resources/partition.png deleted file mode 100644 index ccc0b8d35f5545dada0cbed28a8f5ae1b77e5077..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 335 zcmV-V0kHmwP)U6h!B*T#O|bj+BBkA4NC*V> z`+xA*0*8-Ez5F5(r5t1$C~(>NI?GA-8vsCl$sH9z5?@PTeq2>nxc%Kw*Y%*o)~2sK zrGC+(ERY}p$?N zj2dZXs@N|dot*h>48Uf)DZ~~;gr{4uaJBCh zHJ^DptncJtYoa2Wy+ zi~{_TUn(?o=-!Y9w1SBUjyQ-drNZ6!uE?^C$@}DPi*=aidiWzB&-I$Gp0OV%aWC{5 z_WJf}H8#cA4+wgJjyQ-bXBgaAJrTjfLqz%&R*$NI0sH~iN`*`MZMxwA0000aX;X1UpX`oVz{7Z+PeCPj9&#A(&RXM-DQ6*X#)Ow)81cPxQr_-(jFdPky zID&|<^B~C$$6*Ip0N;>tXv*xJCAI6X2IjyCV0!%^1{%dJaJT{N8F&KTdi?+ZWxxREz=wiI z;JAP_0qzXk1E;`)g)Ohm#K0NxaCd=yU<~L4a*)*R5yxx-Hwp+6nD%rEe93XK06vL_ zT?O8OS~fv%Fot9&#SvW3#Zd+|91TqrMzk(kcCl+YQI9h7BN&Y1XC`iX%a&e7%P?15 z#7Sl-B4~74_!nhi+S7;^J6zd58-E&33!xTPsaDXQrqOJul}oYlef&b8D=y+m3WJ=} jv++fw*kSThwJ?AmX}WeK8M+Sk00000NkvXXu0mjfIQq_n diff --git a/resources/pipe.png b/resources/pipe.png deleted file mode 100755 index 494a8461a79262ecef7da4835ec75459d23cccf5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 392 zcmV;30eAk1P)b;@5Jlf27h}nVEm3d^E`f4@h+A+5rwYjta*I$TA`S8-xC9LnTUcTWq)lO)*vr}` z62I~8X!mLU%&ZNLhidXz97Lg@GdSZgouCPL@y`&*(A5`R8&I!bKlZr#+r+ouTUYFg z>)A;N7TRAS-rib^EiDbS12hiPSZ%L|bT}T+Qc=~g|$1@y}h>)cjX_B&d zT9^)SsCId6G4~qbX9uk+^*y)H%or-mv+0a%nz4LdUhfTB?i;|N!5jqkmEbKfE;qow z%RgV+Aj}_^M#0}#TOz_{^U3LW!j=|P5fRcPMH1;W1V&$KrD9h&TUxZN-fb)~l1OJ< m{snBHs)}9|iK@(e7{D)~BasZVJ7Yxv00009TgdT8-ee7X4 zVWP!;fpmp421-1t=MMaLSUe$fRmDsXgCD#p2URcH{1x(IxnlGpu|x2!Q<8~Lu7YY? zqJ+oF#5wV0iabZsBXXz7arK@y5MWqdo3(?7ry=mn9UVX0!z?T;8s6 diff --git a/resources/plane3points.png b/resources/plane3points.png deleted file mode 100644 index d5b5d45dcf4786a1796e81554bee774700dfb1ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 336 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VTavfC3qv!*G=@v_+}PTIBAf*t zk;M!Q+(IDCcFSXD{3HH5rH;|Cs;O z)%(#0HgUa&vOL=#^5ooe^iT4!Xq%o;SWpn?^U5K>rQ@2>4{r|7O#9lu%?Ay$)E*bf zEinFS%=Lr!39HoiUwmw}pZ+i4sg20z@0UHjIrZ{4!8dC+^!_|n@_&i|kCkX!(#M?@ zO$#F?drF_){PZzHo6!|@J8=btWF27!#?Yf{%=b6P>O`u1)qMZWy4-4>M!)Kvd+dJc z!K<=ci*1Xy8(42Y-<`YGHT3W5DH5Sa&*{F@GQE_*(CND)M&ColCGg8!jjumSrb@lo dd1K*D=Fgj5Z3{CG&jNas!PC{xWt~$(6981vfA9bR diff --git a/resources/planeWorking.png b/resources/planeWorking.png deleted file mode 100644 index d64aad9b686b16eefbcb98c58ca4a80bedecc2d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 268 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqEVQuGh0?#J&6JA}LDtte!0(7o}r z)Zm5iJpP%@(Z0#|nCE(l*xJ6T-lY}$^DO7_q<%GfgCH07uh)8C{hCqRFezthaci;D ze7F1p{%uU(lTLoNYy7|A)1AoUIoHB*twgmdKI;Vst06L#*fdBvi diff --git a/resources/planedxyz.png b/resources/planedxyz.png deleted file mode 100644 index 409d7e8d474332d650ffdcb862d168dea279c2ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 315 zcmV-B0mS}^P)bgAs*m^L8UU>c%OwbSg@r(afW~5O*O!4!^#6fTRUlpD4-H64&Yo53 zFyvt{@Duj;aqfzB~ZDlRcl#TvO`Ov=@hImNThvIG@fS0+VKb z*r=B<$@0p0eA>881gcuz z)w{d>;egfG(#wmZ7*$1DLbua31`FHW))qwp=XyhB4n-UcAn@A^*AK<`R$~s@EiM26 N002ovPDHLkV1oDyggXEL diff --git a/resources/planeface.png b/resources/planeface.png deleted file mode 100644 index 2ab9ec62a1d7589de82ba2925c1dc44d3f12269f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 368 zcmV-$0gwKPP)1pw6ox+)4Nmc(!HX{8I|PrRCkS+J=FrVx$W}79CkcgKA&?YPf5lWHXp~pO*s-9YSdxM#+U|Q z#lq@Uc@sAQ%}1Z3_~le*vk^ zd|78mP)eo0lt~yJOcxqizm#J4xigpV3(MzaXB}vNTJpy{3R}OfU6}y7&}4abz2z*+ zx|0gk0Z*+P$D|6yOwPLfc}6v_g!EzdB!Khj?8Y(aLOX}myb{n)?F2B3r-cA$4vpC# z_LIQzb>lTK7-*Wt+{DLPpX+)T50a8#78Jrv_?8oYqF!}_=lxg2UHt+~C|XEw$}B(4wVn7(Qd98f+>*ETKcrUpKN z>ImbMhsI`Rh)8&qDuIZAQ-;Y6sU8CW%{mx_>eidwbT87`U%(f{8a~oYCyo370000< KMNUMnLSTZmLTv^B diff --git a/resources/planeworkingface.png b/resources/planeworkingface.png deleted file mode 100644 index 4eb8bd46eeab5430f7d5868a152d2575371e898a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 378 zcmV-=0fqjFP)1pw6ox+)4Nmdk!HX~9I|PrRCkS+J=FrVx$W}79CkcgKA&?9fm7Ba17Z|N~_kIRU$pbKxU^Nu;au@a2-Qg%KARh*8$)Pf*WMJhc zXaBYb4ca|`xz1b}XJ|;0WZsWG38R5!X@)Lea&`DT$nE>a`gz@02kM`i_%RN`wy#@T zCP0>EL~(RK<0R8+GYC_@Sl8*Do`HMM>c9 ztP29$nmzw>3f%HFbNJP3(8;$Z;kn<66Q37^Y;Rb)i*4V%_#=!LgMt_G)v}gxo=Mcy z2d*H+U%dR{KCsNiv@k6_so-R#fIXV*Rv*KUDWPvi}_XRPDK9=2hdsMaU;2XFtm$O$Z5^VYRBmZ_i3tZ{3jslmR- zeG8A7cs_V;_Uf%$PxZ0X9&5iDl4tBBCT^Z_Mkq>5eZykb?|<&KZ`hpaq$~MMe1FsB zvJO_$1Y06oCq>FVdQ&MBb@ E0DJ&tmjD0& diff --git a/resources/point2.png b/resources/point2.png deleted file mode 100644 index ae02c47246d9dd0db61b5819fcaa4c34252c35da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;AyQhm|NX4Awlpp6ELJzpaK6c|> zGQ08YWqrZ9Vi6soJIcSu?O1qj-MJnS=^u}e^Dnyc&_v+w?C0}N2&F10@0+u!{QJHC z_H};}EWW!;bL@O>6f>u}y}7Zu6^NUe5C3kqzxm*+kx|6%I^CGmf&_!78_yg(<>&kwGO^nTg_tLAaeL$f*o-U3d6?2kPew=p*J>U}i*lkIp zPK$_%|9+PKZMS@E-440^JKi^YdF-$IHg7N0OGwA^h#z~Mnj-%8?%wbFr=H4gdUrT0 z;qw>o{}=aue|((3P2RrFK;op08z);ygE7xV)4A13-WN(OVow}k__z+Jo=th?aUKxx zvYGyHMq^`R;_GK?|9^jXulr%p8n$a`uM8i3y0%w;7f+PXcF%G}W@hHY8?6^fv zGQ08YWqrZ9Vi6soJIcSu?O1qj-MJnS=^u}e^Dnyc&_v+w?C0}N2&F10@0+u!{QJHC z_H};}EWW!;bL@O>6f>u}y}7Zu6^NUe5C3kqzxm*+kx|6%I^CGmf&_!78_yg(?NMQuI!h%gm_gL*KWN8Qo~u` z5n0T@z%2yAjF;}#{Q(NHq&xaLGB9lH=l+w(3gim~_=LDNPrI~t*WRt0wys^b7RUw) z&)HO52Ba8Eg8YIR9G=}s19Fl*T^vIyZmm7<$ag@2gTFVdQ&MBb@0792rssI20 diff --git a/resources/polyline.png b/resources/polyline.png deleted file mode 100644 index 6e21c6b25ce9e68d57e977a09cd6754ef0acb4b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 547 zcmV+;0^I$HP)~Z-aRFhkGu_@)$rk<#c5=3M5(~*%iD9-5nrFCGWd0YA3$e!fe+yq@V z@`ej@)APn0#%Il$oYm9}qd42_`{nl}-Q1bOwAKI|54V)>jVwU87uGDJIBQuZSG%3d zhT(4)24DiCOkiq&>z0v2avjL)p`e=ceZ;K9qT-R)eu z|9y4M4hCJ)ynP3F222k}VHK?hRaMQ~x-G|B$ro9SqP5;%A~yj}0g|J{9)H@p*Z0eh zMIrP0u(3nn1F&NP(>TqioeR>ueGZ(8$c68XeiTLVd{!O+wg%MGywX}{OYAU#!S_al z`=Oua?Z-~(J@8p;tyZ{H(JhI#2FKGIHg23h0HhV zJ}rK{g~>sGt<8Cuf&N?32}$5o^)>@?~+wAbQm>gvCtG0yAX z6zxrKxyyEAqe<%PTwSha5uoREI1b0f8SVeEY=d3mrpY&Y+CD6vw3T_n(zmOo%C2(k yl>0iZ?NZ<+pGixzx_`Cw-9Nj+L}M!JL*c@0)9OP`Y@P)4EQ6=3pUXO@geCyHGkE3z diff --git a/resources/position2.png b/resources/position2.png deleted file mode 100644 index 12f4a0a8b65f9ae6e39e3afe22bd90d94db2d714..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F#`kNVGw3Kp1&dmDEP$F z#WAE}&f3eqT+IdotPgfpA5|_BOoBj8&4;*Uwh#HLbs@CnwR;uUP5K zvS@!=J%`_PN2NRO{O4cJ;Mv_W?ZC3!4S$)gHV z)x7Sm->aug4j;x1bb-b01slEwswLS3E4s_T0Oo0?DgsKq6%0cV zY@Ei-lm+ujG(=V7u#MslBY}Hk)`Hd^?p>b{CRl&(6AlyZv{Tbh6$H~xy@wSA9{4E> z==AdLokhhdhfaQz)r+}(ywcx$9~kc77PNH`Y72AD#T{y=mV=~VZPUhk_$ciBe2y&1 z&b5ib+NO=C58s2$)66)HS!f8mzFj5SLsvQKrsl#W3#?s@YupM0_yHX`X-IO8Ib{F< N002ovPDHLkV1iKaf=K`X diff --git a/resources/propagate.png b/resources/propagate.png deleted file mode 100644 index c3ff01c597ea20642cd529281610d23d28ba44a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 409 zcmV;K0cQS*P)vh~}{LAKV-T5cnm1?rlyWlN#%pH`sKtY4-wm1b}N zs86*FJa2e%K>JcOj3fjF=n{@O5BGl<2pM!vRH+VVTYH4 zV_gbeLU;lJf>ofP06pUPdYm6$B;msc$#sR@$TH&>D5#G(-?sK#pjDPl)S*0|(O5(ij+KrlrjU z0tN;ko8e_7w;YgSED7=pW^j0R10=?n*?YcQZXkvfq^-UO^uOFVzQz_10&lEi3m{%2_6XphGc;j yHqF!^hL=hVK9Uk42TzGOSUK#9bu1CEvt^K0XP(n=mTxoAAO=rYKbLh*2~7a~`8MzX diff --git a/resources/revol.png b/resources/revol.png deleted file mode 100644 index 887d64038238bb63915bfaa0108930e9869460d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 488 zcmVP)pf&JH@mQ(9PpUtEWoQ zQ-r=_MG)OGO98n1QFOlBCD5;Je$x3!+c_)-srKNvOOiMl!NTwT-#xarXSzJF`=9qL zlEtjX)|N=3{?$8YH{WlNSY|cOIS%g70F7dN&ActMw5{L6uZPB|n0%nivy>vJbDQ$- zZOJ?PhtFTX09`XggzInDl-m-3a$EA@V+Sn)T_jOAht+eXwzjz1vA28N(E*Ue35&Oj zcGkSkH^DiFh_t%iU{}wTI_I#pg=6EBSh)Ih)w{#t;Rkmhk_d?#=;Y(z!9JC#JL@&> e=#UF(b^idUQSZ~<8ND3<00003`GS$u&kMsT4wFi--XA-D?lAl{%5R}Se7TokV$1xr@NOLz(wLS`YDMPa&_ zPRztn+t3#RA(`))XMPzp{x!X>g_`+QIs%@|OZG7Z)l*aSC0Hr^r2SE<3E zyL9IOEl7(QmaDz_$e@dlLhn9z4%}zw0^1;P+JfYMuQQA z5J;a>ui3@$4s0=x0RUB1;ar_jeN~SH(UZBX3)_*o1ON~b0t!H!8tU*a9M4`dCLwh; zkDd8j%;O7?6Tl7F!ko4&*2T5}5t&7qJWbFvbzns3i#|jskW3Tio1*1vk93woofNn& zipCLSE|IlhA{3yIE_QcP9!q1GOcN$TfoL3I{k8@X)v*4cVfP@lp@rIg7EoXeL;5ug zFuTDyDb`eopXU!So4=pdI~6jQ-EN!B`$m_?5{KjA>L2&Ce;DF~APg|X@T&Y9hR=~$ T5g4UU00000NkvXXu0mjfTI#PR diff --git a/resources/scale.png b/resources/scale.png deleted file mode 100644 index 4c898723589885bc31ce539eb6c09eba5320427b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 302 zcmV+}0nz@6P)NklZq}6vpwtD~1=T11I4UD3{3{n0klaf<{W^smdjKiVR3FAmJg>>r#qIj6+<$(ZG+- z;u(YTT+G4~iius0VsG!?v*qeg0ANq{32*_sMT4MvtLAqr7<38q(U)ME5lKi8RD-6X zcc71@pfm74&F;W0uo<`oHUqcHG;#h!hT5(?0@--8KeUx8)SfINLb)%^_>%fqYumJ3 znoFc1;S*3D3hIxV{5AhW?WfhQ?-=^wLBoZ#O$)&J>#XIzG$KMyj)w zy$ypf5JsOPinByP$rLPsGE6c;1QkPM3dAl8Xf{+*jR%Gb%m1p0R{rsaa z?3w@o<$*P*b)aLyVicyVN+W?FBBaOk-5a?2T!?eonrNum067=ci=VX+do!eWR diff --git a/resources/select1.png b/resources/select1.png deleted file mode 100644 index a1a4ee1d52bb1642c35e59cbd98a6d61e1cbbf3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 975 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqMyzU}gyL32{Ag(XtH+i|A$>yGTanrJv}Vn71?{kepP$n8jbDQ&9P6{DSwHJ5&6t;zVEf4 qiTkGBoX&*C49m@7VrQ-I`_JRw<#IIU%bh(S&w0A~xvXkH z4+cXLPlvR6_M6c%0>eY=Y3P6vzq|78@dgus+9?3$&vWs&gsrR6ETt$5RHE)C?gj-W zTJ2At(Q41)eSt1DTI+jW2iU@{(2vDnN^1;uozw?F?Ud=7=NTNpE>VE_iw|7P*&xo~ zNURG62m>FvmBzO0R?GjWJj-!hXZT@{tu#xi%Ia}oQ-k35G9nE8(O~Zk!@!4SG#YBE zGhrC`L`TfFZQ^x2I^_-6#yrM2wy4XV`Dc1onDtB0PC;#)D*EO5)(p#h4iqq{p9)gB0t% zDccT5PR5afrGa;xSYh7sGcdq#SgiMG4;y>Y`{!f8_OMAVN)=PLoPyocZ-D~0T27O| z)pCmBtI&&SgVlG1`ND>tVMGK^9+X`kwhAO7l-qLXRc2P_O!5gRClFnLX2*s)NNggw z>Duc$Jb6&wL1!Pcp-q$jN~nV{Gq_b8W}UM!3;_NB#Mz7371Qmi00000NkvXXu0mjf Dn?apt diff --git a/resources/shapeprocess.png b/resources/shapeprocess.png deleted file mode 100644 index d9fa256ffcb03e3e9de5bfc483a8956b78e242a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 362 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VTavfC3&Vd9T(EcfWS|IVfk$L9 z0|U1Z2s2)~TlWVj$X?><>&kwGL!4cS>(|@Nqd=kWo-U3d6?2|W*_d_Mfv2rrl>dKY zyK%*bckZ0E4U=}B4-$2XQ`vk{xbl2LK^xz_D+l*JxM3^L$tj{GP_FP%@$TPA2R;N; zSL(duJfI^rQCjY>!fS`dm0EW9N~bD+tuQ-&Y=)ppeP(3BwPoFtq&O;TuRs1%ddz@l z^Rc`P;{!|B%6`kP+T;`{cA9IgY;36h_nqr+-k*Nfp5>T2>w)Kv%7Sx`tSc6?+ET`{ z*4I;@^nyae4!+QdD6}HZEO4O4egNK?OQ6nV`D-O$Abek74f)S z3(lb|q^SE8m#>RAgpkT0P?e27z3moC>;ru&y}$`(Dx!#-eLj^=$`H`d5L4PbGAN?p zAVWZ(KhFT}iMt9lgesdq!BpAk>bsiXnb~i7`eUXF!OR|;2Awj8J5*DTZ6{u!30=D= srZU^II)_B$O*aGs9$c`GpuY5f0ZQWE?;sC|!~g&Q07*qoM6N<$f}9qx;s5{u diff --git a/resources/sphere.png b/resources/sphere.png deleted file mode 100644 index 335570e2de6b872abfc4064cc3cd23f18c6bce17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 445 zcmV;u0Yd(XP)Lozf%Z00lRNcG2QSnM=6nA&QVJ1m7Z% zE_7lie{4&gU6_|oetGjJpx~n8>arY|v$H`%{(|7|;1QZ9AGN7z5ETG+Wf|R!YIr?E zK+y!%;7P>tZHb6@u;0U9VlI7r7nAKW?An&G{=F#aHuca`4=d^N&*xUeT;G=|#}5&U zrv+*hAFM#`rKVA>NwX9T*tIP@a5{+^SGFzTbP@rexk3)A>i2M#Y?w}>vaoHqnpv_r zfU4|ukLK$Ca)4o;d{B^|MQ6!|;QSUoJ^gmuxTN#PIRJzHfL_0MnX@b+bfkkA@j<(? zKlZOFofrXgfNMu@`MxaTyBKIW%f}Cvm>?tFhhrMIy0~M|Ty<+uVcxl+IH%>%6uwU{BtP8$+e?@U9$hKK? z6r-0iX8CjOK~E)j)RljJd5LXbzx~jtyuLB4ey*_E;sZO0by8(tJ--|C@$)C{?^k5o ztkqrJn{C-`WX_gd+v9rUD_o>I;$w0RzKsma&PVE)MY`ilbb$kYeEZIy2Am>bWd`o#5gh}cYegHZ4*ZqM`(El zcQO%SA`?W556qr252^Tp2pj9~HFUq(723DZy;>$9{VytcHdrFh@ ziD>!MeB%OH;M*}JuL(&h4RG%i7)KvnMwG8}N(Ic!9?{eEsw{Mpqm z%IljkEuWU8JVhq30pgFKyE0!h$71Z0<(VcS%6(Bi?Q8*&s_styM zFFv(X?10o^>;r#DDMcH#A+=TJmPPr92n*U8&={B6GeF{S3%d(*OjvaKFxB_Na7aNI zbTi9n?!N4k^rQ*IIMuiM*XRI31^~83FL_G}OaSDZQfsA~7VUu6sDrT0zz;MGP(C0;+ldV*AOM$Lr2CA8 t0w8BPy2fcEj{O1{j3{>zdeQ>1egPPyxFwK+`q}^h002ovPDHLkV1mLZ$0`5- diff --git a/resources/spline.png b/resources/spline.png deleted file mode 100644 index 0fe35f2f4bc535d7f18551e628403e67de5371bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F#`kNVGw3Kp1&dmD7eAX z#WAE}&fCemc^eFPTx@I7PKaHwoEvOPH%Bm~u_RWco$C|z`kPA4ZV$gCb%cfk&ZE8q~P6b1r+6tlg zU6cPSO@FmPyL{dWIhE2??I-5GR`FQMGI6)Yw&_|dRpE#9j=#Ob^(~k6dyZ%$w{_0W zbe$9l_PMXVMVBsE^;zA4J5>?FU#dEt`4qiL3D;pxYTdUHx3vIVCg!09~_S AuK)l5 diff --git a/resources/subblock.png b/resources/subblock.png deleted file mode 100755 index 6c75aa4bf06b4fa25aec8b30f2d5ee34331fc1ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 461 zcmV;;0W$uHP)c#16ox+*9-aUV65zpS$Tf)M0M^!wH8SK383`XDgP|#av?&Dwcxm8kTv*Pcisn$VC=Q<6C8`A{*{_ey>3yKWAtdwLTg ziX%h>i4PgtYio{--7cCj8wHkS@q7LIRRQd^H2}W=a0$Skaul4X00000NkvXXu0mjf D-?_~J diff --git a/resources/subshape.png b/resources/subshape.png deleted file mode 100755 index 6c75aa4bf06b4fa25aec8b30f2d5ee34331fc1ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 461 zcmV;;0W$uHP)c#16ox+*9-aUV65zpS$Tf)M0M^!wH8SK383`XDgP|#av?&Dwcxm8kTv*Pcisn$VC=Q<6C8`A{*{_ey>3yKWAtdwLTg ziX%h>i4PgtYio{--7cCj8wHkS@q7LIRRQd^H2}W=a0$Skaul4X00000NkvXXu0mjf D-?_~J diff --git a/resources/suppressintwires.png b/resources/suppressintwires.png deleted file mode 100644 index 9ab62f9a0367d8917269f124cfca463203e8e6c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 368 zcmV-$0gwKPP)@C#0cnT3gAAIP`Qs?hFlA5Mz!JSZ& z(&U@@r!$Etr?*_Pk%B7RktYcP)@%#u(~;%xXEyuTe2?_uE|c6e*=DBr|OD za|i|nnC!cpFLb?KDa*2#2p=-VGm-HEZKucckv@4KLPs))DR2Hg?J6ZN*jYq=b0h<{ zct+^L(m*;Y%La#5#(U@~C@>WCa4;mTwF_*TD;uU0P5nW?m>mQf z9leQm3fU`cJQ+t$4smP5NnG@1$YK?fN)*kfbN}^Kc;$gP7~$i}vh5BK1$i=3-ua3E O0000oEe_3E48IwSPpn`5m8vm2(LXsrw9To|%CGvno>hXxOlj|DO^ zP5+dB$hfQg(Cr^yZ z_i^g|<(lY!+V{}Bg>%+@__-^lsO|VEJ0Yv*-@Z!xU-oobVhQik>ANO0xGnW@vj35` z%E|kf0sASHvn|yxb%jrOFH>FY_V&@&{9;D_?0xHIw;j2BALw)jPgg&ebxsLQ0HGFZ Ad;kCd diff --git a/resources/supressface.png b/resources/supressface.png deleted file mode 100644 index 9ab62f9a0367d8917269f124cfca463203e8e6c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 368 zcmV-$0gwKPP)@C#0cnT3gAAIP`Qs?hFlA5Mz!JSZ& z(&U@@r!$Etr?*_Pk%B7RktYcP)@%#u(~;%xXEyuTe2?_uE|c6e*=DBr|OD za|i|nnC!cpFLb?KDa*2#2p=-VGm-HEZKucckv@4KLPs))DR2Hg?J6ZN*jYq=b0h<{ zct+^L(m*;Y%La#5#(U@~C@>WCa4;mTwF_*TD;uU0P5nW?m>mQf z9leQm3fU`cJQ+t$4smP5NnG@1$YK?fN)*kfbN}^Kc;$gP7~$i}vh5BK1$i=3-ua3E O0000fz0v(~r##O~3YAU0GErg$nu})Fj7DNWVPKp1yd15TKMPjFS`_SISz(i{s0Bg+ zyr%{r7T=h$Z?>?W!;MfFD{IJU19eUyDTQrdUZ94>jv_P$u7zdTMzu}*c-L7!n^9X7 zRG6X4veN1snN@yw5sH`YQa4bazwO@Nb{d8Q9rBRSe&1I>iwnVo^`aj22Ys0<2sAo+ z6Yb=SGHf!Pu!?2K4x>=^rZ1$;h|^-WuwP$tRWXpg3e}Zm#tS$na&I<6VyOTC002ov JPDHLkV1jS=nScNQ diff --git a/resources/tolerance.png b/resources/tolerance.png deleted file mode 100644 index fd75ba4626877a128ec1ae4f004dbfcea37e643c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 387 zcmV-}0et?6P)NklRumzh;V z(_oCdIIVnz)BC9jyAKDp3?iD?vVpc?*)>ztKuRgx*)_w8dx6rI5RnmJ#{hS6Dn8VU zEP=dRw!krzM11$c#{oJ(l zWmqhs0pNrIF{60yB6O%y=o%1fb~qj$)*OQNflpv$36u~@U!u4dkXpc&v3=PNLN`;e zwgC|m4H!}~1&bLF5g6g{0>OYG8HDRJ3R|KL6ej=9Rb)L3Xtl4nl{K&iNJJn6;2Ib( hx7#ex{~PQR{Q}x15JsPZiV>(-gA4l#x`s#&;MS1Jq%b*w*;4ojIY2<^;v&IKjIQBR1hhrKTL_dw z|MDsjNRw$)%Qs`)V za*f*BsuK|*ke~x*9~tpo^fROvjq=t!U%($N_VN8#8e>@BuP4D{P@`@+UyfX^6A}vP zb4qS<9$kw)0*Noo)C>u$)w+8A*(ocnwU{ph1>`2j78Yx*6NC>cRPFO~{ZE|Wi@mhD qK!Ph!lbZyN!M5lrtY1za)WkQfEv5i@m!diV0000-Oi^O=h6ez!+NNUjofsAm9{t>RV)Udm9+ zX1hU8HOW=@sVI!|@or7LUrdZ%>yL2J{)=ITS(zO{rG<$q{8uE?dp;sr!GHs7U*G@LT7=>p~7{}qW5WmD!-or zkAVTC{Q9TeY_o1(sO;^K33wl+jps;_4PR&2AA5IQMSF;CA= z=%psV$yHyWd2Uy|qS$7XyR!X$D7t;&)AzAJ{kI07da2x1r*2n*UX5TP0zjIiq)E!- zx5rlbDYo2|Z0LnuFf4N5io4XBh5)&tJKj`#dZEDQXOpi^uD=8id z0QNujtUs>7p>EZ!^ZudP#zHe}iVqCb`o_SZA*UJ^L4DIC9Vnbg`|KEXv27+I!a^2r z!0LBJ{vmrG5|~%sH7^o~`j?BtuY)tju>Q0@3m$^Jy6fZ`t#vRX!yoA2=qbE}bP{@y-l3Cs@D@@iI2AA9DIA1k5X?|WhZd_;(gSQ>-vcD_56XoK@G#$X=rByT$xhQ(Uh}oFEPY2@*TdwPr+w7%_-wx&N=|t?1)$ zC70pAja(8DvSa22kJfTolr8d84mBt=_r|Lz)`u;7=?%4JSq%z;1T@#KJi9}!HAX!` jKXw9!hy$;WaW6dq6Np*<(Pa!w00000NkvXXu0mjfHQRIk diff --git a/resources/translationDxyz.png b/resources/translationDxyz.png deleted file mode 100644 index 99549ed5e806a15bb165e1fd5deb83593e4f3e2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 416 zcmV;R0bl-!P)H zK~#90rIbr*!!Qtrzj56nK^Ix(6uv~4fgU7x$SQZpEkdD?O-r^tKu(c`!Cn|FNSo=V zifzS@C>;>C5cB;b%|lS`H)(k*0+9X(w%!~r+m&Rxd*5|5s0FouN-?ktbeWN~VeRj| zmh?gV{v=2(aFRxN%2EJ-&G5>Pzz-w>=covWOhF!$v%u4>K+tB@p#EQjv(6em(cZFA zK}4H(ZNITq1Vy%QTP^Z}V}9)TUI9axhlGhUslh&5=FG=|Avf9|7NakQ|DyqJWB*&hX#Rf(${ z&biU3+R)K?=$xZ=HRjv&MiWA<>&kwGMSx4v{M?Bib_NDU8BZ6-kcv5Lr#NOEHV|;VFEO>x zTf8x^s4GUPMD&GYRr|W4_B%=mC_UI`$NE_XrD2g*g(n1lp2_Lg6YO*H zS8ZN&)4Me}9ysVOg616IuZmL#>SVU^E}1*>}h#wGLj+9z*6 z^Yrb3zMUbV&(42#{IDcfZ~AK4?&+*Y7bg7PDf>kuF!_0;orKh1nJ#C?Rhsu=Z7T~~ q?^XBx>#*--*`q2mMgDQbNA9Y$%x5K$hjoBK$KdJe=d#Wzp$Py~l%GKW diff --git a/resources/translationVector.png b/resources/translationVector.png deleted file mode 100644 index 78e6f9012b78ce543e1556cfdbd55460ef3bb485..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmV+&0pk9NP)RX!yoA2=qbE}bP{@y-l3Cs@D@@iI2AA9DIA1k5X?|WhZd_;(gSQ>-vcD_56XoK@G#$X=rByT$xhQ(Uh}oFEPY2@*TdwPr+w7%_-wx&N=|t?1)$ zC70pAja(8DvSa22kJfTolr8d84mBt=_r|Lz)`u;7=?%4JSq%z;1T@#KJi9}!HAX!` jKXw9!hy$;WaW6dq6Np*<(Pa!w00000NkvXXu0mjfHQRIk diff --git a/resources/tree_block.png b/resources/tree_block.png deleted file mode 100644 index aa74e796eb2f3c04d186cb2bf110a0434d02b814..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 156 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0y_WKS2zkcv6UDL>9Th$SfbOEWWb zhXuOXy!&zfKu4^y^5Or_GN&7~WN-cw@MDGF(Z!sxGKtDpDqpA>8yF;H94gQ<^gHq{ zM2O+7>9w?%2NySG^uCxSAu(a`tPYRk>n6H5ls#Zz*x@H*BB|uo4785H)78&qol`;+ E0Ns5z5C8xG diff --git a/resources/tree_compound.png b/resources/tree_compound.png deleted file mode 100644 index 1dd78eb3f8d4706e9e6f6c85a3f29706bf996dba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0y_7Ec$)kcv5TC*9>epuo{`u+S4Ushr-IA{6pTd&%w3A6hHYxN(k nUHmJ_sc-sm_pSd{+ka)s%!y8}+q8`l=pF`7S3j3^P6vc zw2xo(n6IfO6f){^dH8I6vHH`e>LfRAoO(gb6Mw< G&;$U;u`&Sw diff --git a/resources/tree_edge.png b/resources/tree_edge.png deleted file mode 100644 index df9741d768116f313858e987b615e1aa4e3cf567..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xaZ%-G;kcv5bFYV@KP~cz*C@3wv zus4Py+T;(n=enIwRKpt%T-bFn+0`SvyLJxu*|Xu-og`N*;+S=!S#MK9hsg{leII2` f?+(Tfzt_t>kea-GXW~*%ps@^|u6{1-oD!M<+~6$v diff --git a/resources/tree_face.png b/resources/tree_face.png deleted file mode 100644 index e9dc9a880b2be059033ef58f5f6877ba4bedb6df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xaJ5LwKkcv6UDL>9Th$SfbOS4Kv z22}L0$o!k%D7f2=jjioj=JXA(R-V1&{P6PqerFHmES3oZvMo~{v3&Wi%#it(OZt}~ Rzc|n&22WQ%mvv4FO#oC-B`*K~ diff --git a/resources/tree_group_edge.png b/resources/tree_group_edge.png deleted file mode 100644 index 214be938a476686730b611a414a7035efaafaabd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xawj^(N7l!{JxM1({$v_d#0*}aI z1_o{+5N5n|x9$&6kiEpy*OmPWhd3Xz<*{P5{Xn5UPZ!6KiaEWLE($U$a=6HgP1zUZ zvhPLX7gt9``(vL4il6fs@8aO*W-xqHK6_)|>dIrw8+up%{K@a~_|c2o%oBRHbIoav zJAeEYzl+t^T(tz1=&F#<0iS=?z7ut-dT^qqozrvGIiJqL^{@OoWc38)MkJOxx%wnFoMQWAJqKb6Mw<&;$UYPhUm= diff --git a/resources/tree_group_solid.png b/resources/tree_group_solid.png deleted file mode 100644 index d68588346cd94ec2b0a276972ef21d0587a52e2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xawj^(N7l!{JxM1({$v_d#0*}aI z1_o{+5N5n|x9$&6kiEpy*OmPWhd3XH_|L#kyMaOzJzX3_D&}mRbda~zfX6vL;CZ4! z*@Gi|Jja}VwyUW+E`0P!H&kT#wl&untfswJO8-+B*C{T|!DpDsYOkK*&FpyAGVy-c z{Awk!-*dZ|)_eHhxL|#+fN#YahFRUq1e;IpTdVLQ=vM84`qqAKsY5Gw?Aq{eUTE+k zt8?15wMFL3_dnaiu+Va6QT!{hb4MfAtJZ(AR~1j3lbz?719TjNr>mdKI;Vst0E-%5 Ac>n+a diff --git a/resources/tree_group_vertex.png b/resources/tree_group_vertex.png deleted file mode 100644 index 553a4b9d3132d0b767f4ce57e1ec733b59d7c135..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 248 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xawj^(N7l!{JxM1({$v_d#0*}aI z1_o{+5N5n|x9$&6kiEpy*OmPWhd3Xj=&`vP_kcpJo-U3d6?5iJy2yFhfX8LN&-0gY zl1lM67v9z8jfJ!5-Owc=2~>JQuAud~Qr{;FO; ztp0JRm1;ulz3CG!couH0ExX?@bK$jH=Bwi4izh956e1FQHsQ-wt?oPQ6D4~WE=fF^ pb-D6t&8v?mB_B`PUH9+=Kg;?shhI9*0zd~bc)I$ztaD0e0sxc!Us(VE diff --git a/resources/tree_lcs.png b/resources/tree_lcs.png deleted file mode 100644 index 853d47e0aca08506df2ed2ab32aae7a4c5155bb8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 277 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xawj^(N7l!{JxM1({$v_d#0*}aI z1_o|H5N51TiJu4*WH0gbb!ET8DZwYeR6J$-d!W!FPZ!6KiaB#9UF1Eiz~eGs@bZU? zdlT4xT|G15&DDON=0|l4Z*9qR(N$D@%_mO^mbP0l+XkKM7d~c diff --git a/resources/tree_shape.png b/resources/tree_shape.png deleted file mode 100644 index 0ece93b756c4e14ec4f1972d960d61c7ed74c84b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 909 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh3?wzC-F?i!z|0Wf6XFWwGW`F4!)WS0ZF3(e3_V@_T-G@y GGywp~<1P09 diff --git a/resources/tree_shell.png b/resources/tree_shell.png deleted file mode 100644 index 59992de3660d815473929e2498b9915a4be6d6fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0y_7*7|+kcv6UDL>9Th$SfbOEWWb zhXuOXy!&zfKu4^y^5Or_GN&7~WN-fRV3vf$g}Gi!)I!_^AKIieJPMh!Es-&VFSMlL x4eyH0otp&TvCdi8#T;N7@=^0R_X)mGhHPs&*}raIego}c@O1TaS?83{1OO@$Gu8kA diff --git a/resources/tree_solid.png b/resources/tree_solid.png deleted file mode 100644 index aa74e796eb2f3c04d186cb2bf110a0434d02b814..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 156 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0y_WKS2zkcv6UDL>9Th$SfbOEWWb zhXuOXy!&zfKu4^y^5Or_GN&7~WN-cw@MDGF(Z!sxGKtDpDqpA>8yF;H94gQ<^gHq{ zM2O+7>9w?%2NySG^uCxSAu(a`tPYRk>n6H5ls#Zz*x@H*BB|uo4785H)78&qol`;+ E0Ns5z5C8xG diff --git a/resources/tree_vertex.png b/resources/tree_vertex.png deleted file mode 100644 index 6a112b51df98fe072e86103b5d1fc6a4ccd8cc91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xaJ5LwKkcv6UDL>9Th$Sfb-(GO( zhRt80xcifHm6fYjByC=47Thlw{JQ?lj>=n0|L=Gr@h|xD$|FsVBK;CGUQF SzB&tN5`(9!pUXO@geCx1^D74c diff --git a/resources/tree_wire.png b/resources/tree_wire.png deleted file mode 100644 index 9416d0e3928a132965dc95b913a6ebba8ed14fc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0y_2u~Nskcv6UDL>9Th$SfbOEWWb zGcz+gfBxca@pkRmE6GRnKFc@FULO04KUq0B=8=o$AuYc(yb_O=Sn#{btp443vBz8a sUW4Lsw@rUM!d6TY?Z085yt7k=!9{$XL(OlFexMx;p00i_>zopr0OU3>tpET3 diff --git a/resources/undo.png b/resources/undo.png deleted file mode 100644 index 61b19777e4f9527d8961358b7dde84d4af2d16e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!7%)r1n>(-?sK#ov=Pl)S*0|(O5(ij+Krlrkf zU;r{0c8fE|0x8ClAirP+hi5lHVvI@N?k=o9@?RbYa>PnpBT9nv(@M${i&7cVGt-O; z^3oNI^bGV2ZR7T309Dv~x;TbZ%t=mQU}j}wb7#{iVECBO(8;)tf!9FG&|rfFL+EA) z6N97`4y=4Uemp!~4sBgbS7OxF+1c3AYpNKu@|hn*9eH^jXcU8|tDnm{r-UW|1Q0o1 diff --git a/resources/vector.png b/resources/vector.png deleted file mode 100644 index 9a1a7e85a951160215e000b7b44b62a932e4ba63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 269 zcmV+o0rLKdP)a1Q8)$=LRBL-tEuUolG00ZfaDu z&j*1HD-MNSOfOV*1ubYB0XnQal@>rm$YvRm3X({_@2jEsn5v?!c6XO{_vgn)@Ga&I z!jHk0L$N_H273(}Y%F#!f4wS?C85~!2`%Oq>>2b>AQ*#zXXD;i2nLa#!%*A+{3MNj T23P|u00000NkvXXu0mjfKS^n8 diff --git a/resources/vector2points.png b/resources/vector2points.png deleted file mode 100644 index ff58a8ad4ed629d39d07434923c54ec57699a22a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 277 zcmV+w0qXvVP)Kz~j!k>MLNJJY b9DI2K<(QIstZ4bV00000NkvXXu0mjf0?TrN diff --git a/resources/vectordxyz.png b/resources/vectordxyz.png deleted file mode 100644 index e37e015cbc3b3f2f3f9284ad9a6817b93d458e4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 290 zcmV+-0p0$IP)lU z2SL?n>f-(Y^reJ2h!eO{{&c=4v5tpbs&kr#lAT(h+w~LV2}Go~93h`z@nt+RhH(Hh z|E6Jtb(c;ys|Wg_2PS|g)>{V38b(;S1z~3J#9(F+5y;bbKn+Ho002bqZ_#DT%c2qO zzD*aKG_=A@z;9rSKxcr7;(%^Sc52xjxp~Du#Q_M{fTcFINoexqtSBoiX{OETY;3d} o<9ulbXpvgBE(9~MR#acGFWhjj_%zuX1ONa407*qoM6N<$f|q`D=l}o! diff --git a/resources/whatis.png b/resources/whatis.png deleted file mode 100644 index 1b39f3544c0fc3c9c78be530a9531b9e5e767c32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmV;P0b%}$P)-FE+k8vD%S%l@c6q;wtN;K207*qo IM6N<$f;I-X^8f$< diff --git a/src/ARCHIMEDE/Archimede_VolumeSection.cxx b/src/ARCHIMEDE/Archimede_VolumeSection.cxx deleted file mode 100644 index 9558be90f..000000000 --- a/src/ARCHIMEDE/Archimede_VolumeSection.cxx +++ /dev/null @@ -1,409 +0,0 @@ -// GEOM ARCHIMEDE : algorithm implementation -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : Archimede_VolumeSection.cxx -// Author : Nicolas REJNERI -// Module : GEOM -// $Header$ - -#include - -#include "Archimede_VolumeSection.hxx" -#include "utilities.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -//------------------------------------------------------------------------------------------------------- -//----------------------------------- Methodes publiques ------------------------------------------------- -//------------------------------------------------------------------------------------------------------- - -// Maillage de la shape -VolumeSection::VolumeSection(TopoDS_Shape S , Standard_Real Precision):myShape(S),Tolerance(Precision) -{ - // Maillage de la shape myShape - BRepMesh_IncrementalMesh(myShape,Tolerance); -} - -TopoDS_Shape VolumeSection::GetShape() -{ - return myShape; -} - -void VolumeSection::SetPlane(Handle (Geom_Plane) P) -{ - myPlane = P; -} - -void VolumeSection::CenterOfGravity() -{ - Standard_Integer i; - Standard_Integer nbNodes; - TopExp_Explorer ex; - TopLoc_Location L; - - // Boucle sur les faces de la shape - - Xmin = 1000000000; - Ymin = 1000000000; - Zmin = 1000000000; - Xmax = -1000000000; - Ymax = -1000000000; - Zmax = -1000000000; - - for (ex.Init(myShape, TopAbs_FACE); ex.More(); ex.Next()) - { - TopoDS_Face F = TopoDS::Face(ex.Current()); - Handle(Poly_Triangulation) Tr = BRep_Tool::Triangulation(F, L); - if(Tr.IsNull()) - MESSAGE("Error, null layer" ) - nbNodes = Tr->NbNodes(); - const TColgp_Array1OfPnt& Nodes = Tr->Nodes(); - - // Calcul des dimensions de la boite englobante du solide - - for(i=1;i<=nbNodes;i++) - { - InitPoint = Nodes(i).Transformed(L.Transformation()); - if(InitPoint.X() < Xmin) - Xmin = InitPoint.X(); - if(InitPoint.X() > Xmax) - Xmax = InitPoint.X(); - if(InitPoint.Y() < Ymin) - Ymin = InitPoint.Y(); - if(InitPoint.Y() > Ymax) - Ymax = InitPoint.Y(); - if(InitPoint.Z() < Zmin) - Zmin = InitPoint.Z(); - if(InitPoint.Z() > Zmax) - Zmax = InitPoint.Z(); - - } - } - - // Creation du point d'initialisation, c'est € dire le centre de gravit‰ - //g‰om‰trique de la boite englobante - - InitPoint.SetX(0.5 * (Xmin + Xmax)); - InitPoint.SetY(0.5 * (Ymin + Ymax)); - InitPoint.SetZ(0); -} - -Standard_Real VolumeSection::CalculateVolume(Standard_Real Elevation) -{ - Standard_Integer i,noeud[3],flag[3]; - Standard_Integer nbNodes; - TopExp_Explorer ex; - TopLoc_Location L; - Standard_Real z[3]; - Standard_Real Volume=0; - Standard_Real Determinant=0; - gp_Pnt P[3]; - - // Projection du point d'initialisation sur le plan de section - - InitPoint.SetZ(Elevation); - - for (ex.Init(myShape, TopAbs_FACE); ex.More(); ex.Next()) - { - TopoDS_Face F = TopoDS::Face(ex.Current()); - Handle(Poly_Triangulation) Tr = BRep_Tool::Triangulation(F, L); - if(Tr.IsNull()) - MESSAGE("Error, null layer" ) - const Poly_Array1OfTriangle& triangles = Tr->Triangles(); - Standard_Integer nbTriangles = Tr->NbTriangles(); - nbNodes = Tr->NbNodes(); - const TColgp_Array1OfPnt& Nodes = Tr->Nodes(); - - // Calcul des volumes de chaque triangle, de chaque face - //en tenant compte des triangles coup‰s par le plan de section - - for (i=1;i<=nbTriangles;i++) - { - Determinant=0; - //Gardons la meme orientation des noeuds - if (F.Orientation() == TopAbs_REVERSED) - triangles(i).Get(noeud[0], noeud[2], noeud[1]); - else - triangles(i).Get(noeud[0], noeud[1], noeud[2]); - - P[0] = Nodes(noeud[0]).Transformed(L.Transformation()); - z[0] = P[0].Z(); - P[1] = Nodes(noeud[1]).Transformed(L.Transformation()); - z[1] = P[1].Z(); - P[2] = Nodes(noeud[2]).Transformed(L.Transformation()); - z[2] = P[2].Z(); - - // Determination des cas aux limites pour les triangles - Standard_Integer i,compteur=0; - - for (i=0;i<=2;i++) - { - flag[i]=Standard_False; - if(z[i]>=Elevation) - { - flag[i]=Standard_True; - compteur++; - } - } - - switch(compteur) - { - case 0: - Determinant = ElementaryVolume(P[0],P[1],P[2]); - break; - - case 1: - for (i=0;i<=2;i++) - { - if (flag[i]==Standard_True) - { - gp_Pnt Result1 = Intersection(P[i],P[(i+1)%3],Elevation); - gp_Pnt Result2 = Intersection(P[i],P[(i+2)%3],Elevation); - Determinant = ElementaryVolume(Result1,P[(i+1)%3],P[(i+2)%3]) - + ElementaryVolume(Result1,P[(i+2)%3],Result2); - } - } - break; - - case 2: - for (i=0;i<=2;i++) - { - if (flag[i]==Standard_False) - { - gp_Pnt Result1 = Intersection(P[i],P[(i+1)%3],Elevation); - gp_Pnt Result2 = Intersection(P[i],P[(i+2)%3],Elevation); - Determinant = ElementaryVolume(P[i],Result1,Result2); - } - } - break; - - case 3: - break; - } - Volume += Determinant; - } - } - - return Volume; -} - -Standard_Real VolumeSection::Archimede(Standard_Real Constante , Standard_Real Epsilon) -{ - // Resolution de l equation V(h) = Constante a l aide de l algorithme de dichotomie avec ponderation type - // Lagrange - - Standard_Real c,Binf,Bsup; - Standard_Real tempBsupVolume=0; - Standard_Real tempBinfVolume=0; - Standard_Real tempCVolume = 0; - - Binf = Zmin; - Bsup = Zmax; - if(Binf>Bsup) - { - MESSAGE("error, Bound + < Bound - in dichotomy") - return -1; - } - tempBsupVolume = CalculateVolume(Bsup); - tempBinfVolume = CalculateVolume(Binf); - - if (Constante>tempBsupVolume || ConstanteEpsilon) - { - if((tempBinfVolume-Constante)*(tempCVolume-Constante)>0 && Abs(tempCVolume-Constante)>Epsilon) - { - Binf = c; - tempBinfVolume=tempCVolume; - - c = ((Binf*(tempBsupVolume-Constante))-(Bsup*(tempBinfVolume-Constante))) - /((tempBsupVolume-Constante)-(tempBinfVolume-Constante)); - tempCVolume=CalculateVolume(c); - } - else if((tempBinfVolume-Constante)*(tempCVolume-Constante)<0 && Abs(tempCVolume-Constante)>Epsilon) - { - Bsup = c; - tempBsupVolume =tempCVolume; - - c = ((Binf*(tempBsupVolume-Constante))-(Bsup*(tempBinfVolume-Constante))) - /((tempBsupVolume-Constante)-(tempBinfVolume-Constante)); - tempCVolume=CalculateVolume(c); - } - else - { - goto endMethod; - } - } - goto endMethod; - - } - endMethod: - MESSAGE("La ligne de flottaison correspondant a la constante :"< - -#include "utilities.h" - -#include - -#include -#include - -#ifdef WNT -#include -#else -#define SALOME_WNT_EXPORT -#endif - -//============================================================================= -/*! - * - */ -//============================================================================= - -extern "C" -{ -SALOME_WNT_EXPORT - int Export(const TopoDS_Shape& theShape, const TCollection_AsciiString& theFileName) - { - MESSAGE("Export BREP into file " << theFileName.ToCString()); - - if ( !BRepTools::Write( theShape, theFileName.ToCString() ) ) - return 0; - - return 1; - } -} diff --git a/src/BREPExport/Makefile.in b/src/BREPExport/Makefile.in deleted file mode 100644 index 8983e67c6..000000000 --- a/src/BREPExport/Makefile.in +++ /dev/null @@ -1,47 +0,0 @@ -# Copyright (C) 2003 CEA -# -# 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. -# -# 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.org -# -# -# -# File : Makefile.in -# Author : Pavel TELKOV -# Module : GEOM -# $Header$ - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - -@COMMENCE@ - -EXPORT_HEADERS= - -# Libraries targets - -LIB = libBREPExport.la - -LIB_SRC = BREPExport.cxx - -# additionnal information to compil and link file -CPPFLAGS+= $(OCC_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome -CXXFLAGS+= $(OCC_CXXFLAGS) -I${KERNEL_ROOT_DIR}/include/salome - -LDFLAGS+= $(CAS_LDPATH) -lTKBRep -L${KERNEL_ROOT_DIR}/lib/salome - -@CONCLUDE@ diff --git a/src/BREPImport/BREPImport.cxx b/src/BREPImport/BREPImport.cxx deleted file mode 100644 index 251ef0d55..000000000 --- a/src/BREPImport/BREPImport.cxx +++ /dev/null @@ -1,41 +0,0 @@ -// File: BREPImport.cxx -// Created: Wed May 19 14:29:52 2004 -// Author: Pavel TELKOV -// - -#include "utilities.h" - -#include -#include - -#include -#include - -#ifdef WNT -#include -#else -#define SALOME_WNT_EXPORT -#endif - -//============================================================================= -/*! - * - */ -//============================================================================= - -extern "C" -{ -SALOME_WNT_EXPORT - TopoDS_Shape Import (const TCollection_AsciiString& theFileName, - TCollection_AsciiString& theError) - { - MESSAGE("Import BREP from file " << theFileName); - TopoDS_Shape aShape; - BRep_Builder B; - BRepTools::Read(aShape, theFileName.ToCString(), B); - if (aShape.IsNull()) { - theError = "BREP Import failed"; - } - return aShape; - } -} diff --git a/src/BREPImport/Makefile.in b/src/BREPImport/Makefile.in deleted file mode 100644 index cc76e0c58..000000000 --- a/src/BREPImport/Makefile.in +++ /dev/null @@ -1,45 +0,0 @@ -# Copyright (C) 2003 CEA -# -# 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. -# -# 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.org -# -# -# -# File : Makefile.in -# Author : Pavel TELKOV -# Module : GEOM -# $Header$ - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - -@COMMENCE@ - -# Libraries targets - -LIB= libBREPImport.la - -LIB_SRC = BREPImport.cxx - -# additionnal information to compil and link file -CPPFLAGS+= $(OCC_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome -CXXFLAGS+= $(OCC_CXXFLAGS) -I${KERNEL_ROOT_DIR}/include/salome - -LDFLAGS+= $(CAS_LDPATH) -lTKBRep -L${KERNEL_ROOT_DIR}/lib/salome - -@CONCLUDE@ diff --git a/src/BasicGUI/BasicGUI.cxx b/src/BasicGUI/BasicGUI.cxx deleted file mode 100644 index 076e0ed3a..000000000 --- a/src/BasicGUI/BasicGUI.cxx +++ /dev/null @@ -1,229 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BasicGUI.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header$ - -#include "BasicGUI.h" -#include "GeometryGUI.h" - -#include "SUIT_Session.h" -#include "SUIT_Desktop.h" -#include "SUIT_ViewWindow.h" -#include "OCCViewer_ViewWindow.h" -#include "OCCViewer_ViewModel.h" -#include "OCCViewer_ViewManager.h" -#include "OCCViewer_ViewPort3d.h" -#include "utilities.h" - -#include -#include -#include -#include -#include - -#include "BasicGUI_PointDlg.h" // Method POINT -#include "BasicGUI_LineDlg.h" // Method LINE -#include "BasicGUI_CircleDlg.h" // Method CIRCLE -#include "BasicGUI_EllipseDlg.h" // Method ELLIPSE -#include "BasicGUI_ArcDlg.h" // Method ARC -#include "BasicGUI_CurveDlg.h" // Method CURVE -#include "BasicGUI_VectorDlg.h" // Method VECTOR -#include "BasicGUI_PlaneDlg.h" // Method PLANE -#include "BasicGUI_WorkingPlaneDlg.h" // Method WORKING PLANE -#include "BasicGUI_MarkerDlg.h" // Method REPAIR - -using namespace std; - -BasicGUI* BasicGUI::myGUIObject = 0; - -//======================================================================= -// function : GetBasicGUI() -// purpose : Get the only BasicGUI object [ static ] -//======================================================================= -BasicGUI* BasicGUI::GetBasicGUI( GeometryGUI* parent ) -{ - if ( myGUIObject == 0 ) { - myGUIObject = new BasicGUI( parent ); - } - return myGUIObject; -} - -//======================================================================= -// function : BasicGUI() -// purpose : Constructor -//======================================================================= -BasicGUI::BasicGUI( GeometryGUI* parent ) : - GEOMGUI(parent) -{ -} - - -//======================================================================= -// function : ~BasicGUI() -// purpose : Destructor -//======================================================================= -BasicGUI::~BasicGUI() -{ -} - - -//======================================================================= -// function : OnGUIEvent() -// purpose : -//======================================================================= -bool BasicGUI::OnGUIEvent(int theCommandID, SUIT_Desktop* parent) -{ - getGeometryGUI()->EmitSignalDeactivateDialog(); - QDialog* aDlg = NULL; - - switch ( theCommandID ) - { - case 4011: // POINT - aDlg = new BasicGUI_PointDlg( getGeometryGUI(), parent, "" ); - break; - case 4012: // LINE - aDlg = new BasicGUI_LineDlg( getGeometryGUI(), parent, "" ); - break; - case 4013: // CIRCLE - aDlg = new BasicGUI_CircleDlg( getGeometryGUI(), parent, ""); - break; - case 4014: // ELLIPSE - aDlg = new BasicGUI_EllipseDlg( getGeometryGUI(), parent, "" ); - break; - case 4015: // ARC - aDlg = new BasicGUI_ArcDlg( getGeometryGUI(), parent, "" ); - break ; - case 4016: // VECTOR - aDlg = new BasicGUI_VectorDlg( getGeometryGUI(), parent, "" ); - break; - case 4017: // PLANE - aDlg = new BasicGUI_PlaneDlg( getGeometryGUI(), parent, ""); - break; - case 4018: // WORKING PLANE - aDlg = new BasicGUI_WorkingPlaneDlg( getGeometryGUI(), parent, "" ); - break; - case 4019: // CURVE - aDlg = new BasicGUI_CurveDlg( getGeometryGUI(), parent, "" ); - break; - case 4020: // REPAIR - aDlg = new BasicGUI_MarkerDlg( getGeometryGUI(), parent ); - break; - default: - SUIT_Session::session()->activeApplication()->putInfo(tr("GEOM_PRP_COMMAND").arg(theCommandID)); - break; - } - - if ( aDlg != NULL ) - aDlg->show(); - - return true; -} - - -//================================================================================= -// function : 0nMousePress() -// purpose : [static] manage mouse events -//================================================================================= -bool BasicGUI::OnMousePress( QMouseEvent* pe, SUIT_Desktop* parent, SUIT_ViewWindow* theViewWindow ) -{ - QDialog* aDlg = getGeometryGUI()->GetActiveDialogBox(); - - // Create Point dialog, OCC viewer - if ( aDlg && aDlg->isA( "BasicGUI_PointDlg" ) && theViewWindow->getViewManager()->getType() == OCCViewer_Viewer::Type() && pe->state() != Qt::ControlButton ) - { - BasicGUI_PointDlg* aPntDlg = (BasicGUI_PointDlg*) aDlg; - if ( aPntDlg->acceptMouseEvent() ) - { - OCCViewer_Viewer* anOCCViewer = ((OCCViewer_ViewManager*)(theViewWindow->getViewManager()))->getOCCViewer(); - Handle(AIS_InteractiveContext) ic = anOCCViewer->getAISContext(); - - gp_Pnt aPnt; - - ic->InitSelected(); - if( pe->state() == Qt::ShiftButton ) - ic->ShiftSelect(); // Append selection - else - ic->Select(); // New selection - - ic->InitSelected(); - if( ic->MoreSelected() ) - { - TopoDS_Shape aShape = ic->SelectedShape(); - if ( !aShape.IsNull() && aShape.ShapeType() == TopAbs_VERTEX ) - aPnt = BRep_Tool::Pnt( TopoDS::Vertex( ic->SelectedShape() ) ); - } - else - { - OCCViewer_ViewPort3d* vp = ((OCCViewer_ViewWindow*)theViewWindow)->getViewPort(); - aPnt = ConvertClickToPoint( pe->x(), pe->y(), vp->getView() ); - } - - aPntDlg->OnPointSelected( aPnt ); // "feed" the point to point construction dialog - } // acceptMouseEvent() - } - return false; -} - - -//======================================================================= -// function : ConvertClickToPoint() -// purpose : Returns the point clicked in 3D view -//======================================================================= -gp_Pnt BasicGUI::ConvertClickToPoint( int x, int y, Handle(V3d_View) aView) -{ - V3d_Coordinate XEye, YEye, ZEye, XAt, YAt, ZAt; - aView->Eye(XEye, YEye, ZEye); - - aView->At(XAt, YAt, ZAt); - gp_Pnt EyePoint(XEye, YEye, ZEye); - gp_Pnt AtPoint(XAt, YAt, ZAt); - - gp_Vec EyeVector(EyePoint, AtPoint); - gp_Dir EyeDir(EyeVector); - - gp_Pln PlaneOfTheView = gp_Pln(AtPoint,EyeDir); - Standard_Real X, Y, Z; - aView->Convert(x, y, X, Y, Z); - gp_Pnt ConvertedPoint(X, Y, Z); - - gp_Pnt2d ConvertedPointOnPlane = ProjLib::Project(PlaneOfTheView, ConvertedPoint); - gp_Pnt ResultPoint = ElSLib::Value(ConvertedPointOnPlane.X(), ConvertedPointOnPlane.Y(), PlaneOfTheView); - return ResultPoint; -} - -//===================================================================================== -// EXPORTED METHODS -//===================================================================================== -extern "C" -{ -#ifdef WNT - __declspec( dllexport ) -#endif - GEOMGUI* GetLibGUI( GeometryGUI* parent ) - { - return BasicGUI::GetBasicGUI( parent ); - } -} diff --git a/src/BasicGUI/BasicGUI.h b/src/BasicGUI/BasicGUI.h deleted file mode 100644 index a2cd25a6f..000000000 --- a/src/BasicGUI/BasicGUI.h +++ /dev/null @@ -1,66 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BasicGUI.h -// Author : Damien COQUERET -// Module : GEOM -// $Header$ - -#ifndef BASICGUI_H -#define BASICGUI_H - -#include "GEOMGUI.h" -#include "GEOMBase.h" -#include - - -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define BASICGUI_WNT_EXPORT __declspec( dllexport ) -#else -#define BASICGUI_WNT_EXPORT -#endif -//================================================================================= -// class : BasicGUI -// purpose : -//================================================================================= -class BasicGUI : public GEOMGUI -{ -protected: - BasicGUI( GeometryGUI* parent ); // hide constructor to avoid direct creation - -public : - ~BasicGUI(); - - // Get the only BasicGUI object - static BasicGUI* GetBasicGUI( GeometryGUI* parent ); - - bool OnGUIEvent(int theCommandID, SUIT_Desktop* parent); - bool OnMousePress(QMouseEvent* pe, SUIT_Desktop* parent, SUIT_ViewWindow* theViewWindow); - - gp_Pnt ConvertClickToPoint( int x, int y, Handle(V3d_View) aView ); - -private: - static BasicGUI* myGUIObject; // the only BasicGUI object -}; - -#endif diff --git a/src/BasicGUI/BasicGUI_ArcDlg.cxx b/src/BasicGUI/BasicGUI_ArcDlg.cxx deleted file mode 100644 index 06ed13b55..000000000 --- a/src/BasicGUI/BasicGUI_ArcDlg.cxx +++ /dev/null @@ -1,334 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BasicGUI_ArcDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "BasicGUI_ArcDlg.h" - -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include - -#include -#include -#include -#include - -#include "GEOMImpl_Types.hxx" - -#include "utilities.h" - -using namespace std; - -//================================================================================= -// class : BasicGUI_ArcDlg() -// purpose : Constructs a BasicGUI_ArcDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -BasicGUI_ArcDlg::BasicGUI_ArcDlg(GeometryGUI* theGeometryGUI, QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu), - myGeometryGUI() -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_ARC"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_ARC_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_ARC")); - RadioButton1->setPixmap(image0); - RadioButton2->close(TRUE); - RadioButton3->close(TRUE); - - Group3Pnts = new DlgRef_3Sel_QTD(this, "Group3Pnts"); - Group3Pnts->GroupBox1->setTitle(tr("GEOM_POINTS")); - Group3Pnts->TextLabel1->setText(tr("GEOM_POINT_I").arg("1")); - Group3Pnts->TextLabel2->setText(tr("GEOM_POINT_I").arg("2")); - Group3Pnts->TextLabel3->setText(tr("GEOM_POINT_I").arg("3")); - - Group3Pnts->LineEdit1->setReadOnly( true ); - Group3Pnts->LineEdit2->setReadOnly( true ); - Group3Pnts->LineEdit3->setReadOnly( true ); - - Group3Pnts->PushButton1->setPixmap(image1); - Group3Pnts->PushButton2->setPixmap(image1); - Group3Pnts->PushButton3->setPixmap(image1); - - Layout1->addWidget( Group3Pnts, 2, 0 ); - - Init(); -} - - -//================================================================================= -// function : ~BasicGUI_ArcDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -BasicGUI_ArcDlg::~BasicGUI_ArcDlg() -{ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void BasicGUI_ArcDlg::Init() -{ - /* init variables */ - // myGeometryGUI->SetState( 0 ); - globalSelection( GEOM_POINT ); - - myEditCurrentArgument = Group3Pnts->LineEdit1; - myEditCurrentArgument->setFocus(); - - myPoint1 = myPoint2 = myPoint3 = GEOM::GEOM_Object::_nil(); - - /* signals and slots connections */ - connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel())); - connect(myGeometryGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog())); - connect(myGeometryGUI, SIGNAL(SignalCloseAllDialogs()), this, SLOT(ClickOnCancel())); - - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - - connect(Group3Pnts->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(Group3Pnts->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(Group3Pnts->PushButton3, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - - connect(Group3Pnts->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(Group3Pnts->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(Group3Pnts->LineEdit3, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - initName( tr( "GEOM_ARC" ) ); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void BasicGUI_ArcDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - -//======================================================================= -// function : ClickOnCancel() -// purpose : -//======================================================================= -void BasicGUI_ArcDlg::ClickOnCancel() -{ - GEOMBase_Skeleton::ClickOnCancel(); -} - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool BasicGUI_ArcDlg::ClickOnApply() -{ - if ( !onAccept() ) - return false; - - initName(); - - // reset - myPoint1 = myPoint2 = myPoint3 = GEOM::GEOM_Object::_nil(); - Group3Pnts->LineEdit1->setText( "" ); - Group3Pnts->LineEdit2->setText( "" ); - Group3Pnts->LineEdit3->setText( "" ); - myEditCurrentArgument = Group3Pnts->LineEdit1; - - return true; -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection as changed or other case -//================================================================================= -void BasicGUI_ArcDlg::SelectionIntoArgument() -{ - myEditCurrentArgument->setText(""); - - if ( IObjectCount() != 1 ) - { - if ( myEditCurrentArgument == Group3Pnts->LineEdit1 ) myPoint1 = GEOM::GEOM_Object::_nil(); - else if ( myEditCurrentArgument == Group3Pnts->LineEdit2 ) myPoint2 = GEOM::GEOM_Object::_nil(); - else if ( myEditCurrentArgument == Group3Pnts->LineEdit3 ) myPoint3 = GEOM::GEOM_Object::_nil(); - return; - } - - // nbSel == 1 - Standard_Boolean aRes = Standard_False; - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), aRes ); - if ( !CORBA::is_nil( aSelectedObject ) && aRes ) - { - myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) ); - if ( myEditCurrentArgument == Group3Pnts->LineEdit1 ) myPoint1 = aSelectedObject; - else if ( myEditCurrentArgument == Group3Pnts->LineEdit2 ) myPoint2 = aSelectedObject; - else if ( myEditCurrentArgument == Group3Pnts->LineEdit3 ) myPoint3 = aSelectedObject; - } - - displayPreview(); -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void BasicGUI_ArcDlg::SetEditCurrentArgument() -{ - QPushButton* send = (QPushButton*)sender(); - - if ( send == Group3Pnts->PushButton1 ) myEditCurrentArgument = Group3Pnts->LineEdit1; - else if ( send == Group3Pnts->PushButton2 ) myEditCurrentArgument = Group3Pnts->LineEdit2; - else if ( send == Group3Pnts->PushButton3 ) myEditCurrentArgument = Group3Pnts->LineEdit3; - - myEditCurrentArgument->setFocus(); - SelectionIntoArgument(); -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void BasicGUI_ArcDlg::LineEditReturnPressed() -{ - QLineEdit* send = (QLineEdit*)sender(); - if ( send == Group3Pnts->LineEdit1 || - send == Group3Pnts->LineEdit2 || - send == Group3Pnts->LineEdit3 ) - { - myEditCurrentArgument = send; - GEOMBase_Skeleton::LineEditReturnPressed(); - } -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void BasicGUI_ArcDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - // myGeometryGUI->SetState( 0 ); - globalSelection( GEOM_POINT ); - - myEditCurrentArgument = Group3Pnts->LineEdit1; - myEditCurrentArgument->setFocus(); - - Group3Pnts->LineEdit1->setText( "" ); - Group3Pnts->LineEdit2->setText( "" ); - Group3Pnts->LineEdit3->setText( "" ); - myPoint1 = myPoint2 = myPoint3 = GEOM::GEOM_Object::_nil(); -} - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : public slot to deactivate if active -//================================================================================= -void BasicGUI_ArcDlg::DeactivateActiveDialog() -{ - // myGeometryGUI->SetState( -1 ); - GEOMBase_Skeleton::DeactivateActiveDialog(); -} - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void BasicGUI_ArcDlg::enterEvent(QEvent* e) -{ - if ( !GroupConstructors->isEnabled() ) - ActivateThisDialog(); -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr BasicGUI_ArcDlg::createOperation() -{ - return myGeometryGUI->GetGeomGen()->GetICurvesOperations( getStudyId() ); -} - -//================================================================================= -// function : isEqual -// purpose : it may also be needed to check for min distance between gp_Pnt-s... -//================================================================================= -static bool isEqual( const GEOM::GEOM_Object_var& thePnt1, const GEOM::GEOM_Object_var& thePnt2 ) -{ - return thePnt1->_is_equivalent( thePnt2 ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool BasicGUI_ArcDlg::isValid( QString& msg ) -{ - return !myPoint1->_is_nil() && !myPoint2->_is_nil() && !myPoint3->_is_nil() && - !isEqual( myPoint1, myPoint2 ) && !isEqual( myPoint1, myPoint3 ) && !isEqual( myPoint2, myPoint3 ); -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool BasicGUI_ArcDlg::execute( ObjectList& objects ) -{ - GEOM::GEOM_Object_var anObj = GEOM::GEOM_ICurvesOperations::_narrow( getOperation() )->MakeArc( myPoint1, myPoint2, myPoint3 ); - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - return true; -} - -//================================================================================= -// function : closeEvent -// purpose : -//================================================================================= -void BasicGUI_ArcDlg::closeEvent( QCloseEvent* e ) -{ - // myGeometryGUI->SetState( -1 ); - GEOMBase_Skeleton::closeEvent( e ); -} diff --git a/src/BasicGUI/BasicGUI_ArcDlg.h b/src/BasicGUI/BasicGUI_ArcDlg.h deleted file mode 100644 index 42b1a454b..000000000 --- a/src/BasicGUI/BasicGUI_ArcDlg.h +++ /dev/null @@ -1,83 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BasicGUI_ArcDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_ARC_H -#define DIALOGBOX_ARC_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_3Sel_QTD.h" -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define BASICGUI_WNT_EXPORT __declspec( dllexport ) -#else -#define BASICGUI_WNT_EXPORT -#endif -//================================================================================= -// class : BasicGUI_ArcDlg -// purpose : -//================================================================================= -class BasicGUI_ArcDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - BasicGUI_ArcDlg( GeometryGUI* theGeometryGUI, QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); - ~BasicGUI_ArcDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& ); - virtual bool execute( ObjectList& objects ); - - virtual void closeEvent( QCloseEvent* e ); - -private : - void Init(); - void enterEvent(QEvent* e); - - GeometryGUI* myGeometryGUI; - - GEOM::GEOM_Object_var myPoint1, myPoint2, myPoint3; - - DlgRef_3Sel_QTD* Group3Pnts; - -private slots: - void ClickOnOk(); - void ClickOnCancel(); - bool ClickOnApply(); - - void ActivateThisDialog(); - void DeactivateActiveDialog(); - - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - -}; - -#endif // DIALOGBOX_ARC_H diff --git a/src/BasicGUI/BasicGUI_CircleDlg.cxx b/src/BasicGUI/BasicGUI_CircleDlg.cxx deleted file mode 100644 index 503489d1b..000000000 --- a/src/BasicGUI/BasicGUI_CircleDlg.cxx +++ /dev/null @@ -1,435 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BasicGUI_CircleDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "BasicGUI_CircleDlg.h" - -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include - -#include "GEOMImpl_Types.hxx" - -#include "utilities.h" - -//================================================================================= -// class : BasicGUI_CircleDlg() -// purpose : Constructs a BasicGUI_CircleDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -BasicGUI_CircleDlg::BasicGUI_CircleDlg(GeometryGUI* theGeometryGUI, QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu), - myGeometryGUI(theGeometryGUI) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_CIRCLE_PV"))); - QPixmap image2(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_CIRCLE_PNTS"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_CIRCLE_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_CIRCLE")); - RadioButton1->setPixmap(image0); - RadioButton2->setPixmap(image2); - RadioButton3->close(TRUE); - - GroupPntVecR = new DlgRef_2Sel1Spin(this, "GroupPntVecR"); - GroupPntVecR->GroupBox1->setTitle(tr("GEOM_ARGUMENTS")); - - GroupPntVecR->TextLabel1->setText(tr("GEOM_CENTER_POINT")); - GroupPntVecR->TextLabel2->setText(tr("GEOM_VECTOR")); - GroupPntVecR->TextLabel3->setText(tr("GEOM_RADIUS")); - GroupPntVecR->PushButton1->setPixmap(image1); - GroupPntVecR->PushButton2->setPixmap(image1); - - GroupPntVecR->LineEdit1->setReadOnly( true ); - GroupPntVecR->LineEdit2->setReadOnly( true ); - - Group3Pnts = new DlgRef_3Sel_QTD(this, "Group3Pnts"); - Group3Pnts->GroupBox1->setTitle(tr("GEOM_3_POINTS")); - Group3Pnts->TextLabel1->setText(tr("GEOM_POINT1")); - Group3Pnts->TextLabel2->setText(tr("GEOM_POINT2")); - Group3Pnts->TextLabel3->setText(tr("GEOM_POINT3")); - Group3Pnts->PushButton1->setPixmap(image1); - Group3Pnts->PushButton2->setPixmap(image1); - Group3Pnts->PushButton3->setPixmap(image1); - - Group3Pnts->LineEdit1->setReadOnly( true ); - Group3Pnts->LineEdit2->setReadOnly( true ); - Group3Pnts->LineEdit3->setReadOnly( true ); - - Layout1->addWidget( GroupPntVecR, 2, 0 ); - Layout1->addWidget( Group3Pnts, 2, 0 ); - /***************************************************************/ - - Init(); -} - - -//================================================================================= -// function : ~BasicGUI_CircleDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -BasicGUI_CircleDlg::~BasicGUI_CircleDlg() -{ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void BasicGUI_CircleDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = GroupPntVecR->LineEdit1; - - myPoint = myDir = myPoint1 = myPoint2 = myPoint3 = GEOM::GEOM_Object::_nil(); - - // myGeometryGUI->SetState( 0 ); - - /* Get setting of step value from file configuration */ - SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); - double aStep = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100); - - /* min, max, step and decimals for spin boxes & initial values */ - GroupPntVecR->SpinBox_DX->RangeStepAndValidator(0.001, 999.999, aStep, 3); - GroupPntVecR->SpinBox_DX->SetValue( 100 ); - - /* signals and slots connections */ - connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel())); - connect(myGeometryGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog())); - connect(myGeometryGUI, SIGNAL(SignalCloseAllDialogs()), this, SLOT(ClickOnCancel())); - - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - connect(GroupConstructors, SIGNAL(clicked(int)), this, SLOT(ConstructorsClicked(int))); - - connect(GroupPntVecR->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupPntVecR->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(Group3Pnts->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(Group3Pnts->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(Group3Pnts->PushButton3, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - - connect(GroupPntVecR->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(GroupPntVecR->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect(GroupPntVecR->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox())); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupPntVecR->SpinBox_DX, SLOT(SetStep(double))); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - - initName( tr( "GEOM_CIRCLE" ) ); - - Group3Pnts->hide(); - ConstructorsClicked( 0 ); -} - -//================================================================================= -// function : ConstructorsClicked() -// purpose : Radio button management -//================================================================================= -void BasicGUI_CircleDlg::ConstructorsClicked( int constructorId ) -{ - disconnect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), 0, this, 0 ); - myPoint = myDir = myPoint1 = myPoint2 = myPoint3 = GEOM::GEOM_Object::_nil(); - - switch ( constructorId ) - { - case 0: - { - Group3Pnts->hide(); - resize(0, 0); - GroupPntVecR->show(); - - myEditCurrentArgument = GroupPntVecR->LineEdit1; - GroupPntVecR->LineEdit1->setText(""); - GroupPntVecR->LineEdit2->setText(""); - break; - } - case 1: - { - GroupPntVecR->hide(); - resize( 0, 0 ); - Group3Pnts->show(); - - myEditCurrentArgument = Group3Pnts->LineEdit1; - Group3Pnts->LineEdit1->setText(""); - Group3Pnts->LineEdit2->setText(""); - Group3Pnts->LineEdit3->setText(""); - break; - } - } - - myEditCurrentArgument->setFocus(); - globalSelection( GEOM_POINT ); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); -} - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void BasicGUI_CircleDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool BasicGUI_CircleDlg::ClickOnApply() -{ - if ( !onAccept() ) - return false; - - initName(); - ConstructorsClicked( getConstructorId() ); - return true; -} - -//======================================================================= -// function : ClickOnCancel() -// purpose : -//======================================================================= -void BasicGUI_CircleDlg::ClickOnCancel() -{ - GEOMBase_Skeleton::ClickOnCancel(); -} - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection as changed or other case -//================================================================================= -void BasicGUI_CircleDlg::SelectionIntoArgument() -{ - myEditCurrentArgument->setText(""); - - if ( IObjectCount() != 1 ) - { - if ( myEditCurrentArgument == GroupPntVecR->LineEdit1 ) myPoint = GEOM::GEOM_Object::_nil(); - else if ( myEditCurrentArgument == GroupPntVecR->LineEdit2 ) myDir = GEOM::GEOM_Object::_nil(); - else if ( myEditCurrentArgument == Group3Pnts->LineEdit1 ) myPoint1 = GEOM::GEOM_Object::_nil(); - else if ( myEditCurrentArgument == Group3Pnts->LineEdit2 ) myPoint2 = GEOM::GEOM_Object::_nil(); - else if ( myEditCurrentArgument == Group3Pnts->LineEdit3 ) myPoint3 = GEOM::GEOM_Object::_nil(); - return; - } - - // nbSel == 1 - Standard_Boolean aRes = Standard_False; - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), aRes ); - if ( !CORBA::is_nil( aSelectedObject ) && aRes ) - { - myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) ); - if ( myEditCurrentArgument == GroupPntVecR->LineEdit1 ) myPoint = aSelectedObject; - else if ( myEditCurrentArgument == GroupPntVecR->LineEdit2 ) myDir = aSelectedObject; - else if ( myEditCurrentArgument == Group3Pnts->LineEdit1 ) myPoint1 = aSelectedObject; - else if ( myEditCurrentArgument == Group3Pnts->LineEdit2 ) myPoint2 = aSelectedObject; - else if ( myEditCurrentArgument == Group3Pnts->LineEdit3 ) myPoint3 = aSelectedObject; - } - - displayPreview(); -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void BasicGUI_CircleDlg::SetEditCurrentArgument() -{ - QPushButton* send = (QPushButton*)sender(); - - if ( send == GroupPntVecR->PushButton1 ) myEditCurrentArgument = GroupPntVecR->LineEdit1; - else if ( send == GroupPntVecR->PushButton2 ) myEditCurrentArgument = GroupPntVecR->LineEdit2; - else if ( send == Group3Pnts->PushButton1 ) myEditCurrentArgument = Group3Pnts->LineEdit1; - else if ( send == Group3Pnts->PushButton2 ) myEditCurrentArgument = Group3Pnts->LineEdit2; - else if ( send == Group3Pnts->PushButton3 ) myEditCurrentArgument = Group3Pnts->LineEdit3; - - myEditCurrentArgument->setFocus(); - - if ( myEditCurrentArgument == GroupPntVecR->LineEdit2 ) - globalSelection( GEOM_LINE ); - else - globalSelection( GEOM_POINT ); - SelectionIntoArgument(); -} - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void BasicGUI_CircleDlg::LineEditReturnPressed() -{ - QLineEdit* send = (QLineEdit*)sender(); - if ( send == GroupPntVecR->LineEdit1 || - send == GroupPntVecR->LineEdit2 || - send == Group3Pnts->LineEdit1 || - send == Group3Pnts->LineEdit2 || - send == Group3Pnts->LineEdit3 ) - { - myEditCurrentArgument = send; - GEOMBase_Skeleton::LineEditReturnPressed(); - } -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void BasicGUI_CircleDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - globalSelection( GEOM_POINT ); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - // myGeometryGUI->SetState( 0 ); - - ConstructorsClicked( getConstructorId() ); -} - - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void BasicGUI_CircleDlg::enterEvent(QEvent* e) -{ - if ( !GroupConstructors->isEnabled() ) - ActivateThisDialog(); -} - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : public slot to deactivate if active -//================================================================================= -void BasicGUI_CircleDlg::DeactivateActiveDialog() -{ - // myGeometryGUI->SetState( -1 ); - GEOMBase_Skeleton::DeactivateActiveDialog(); -} - -//================================================================================= -// function : ValueChangedInSpinBox() -// purpose : -//================================================================================= -void BasicGUI_CircleDlg::ValueChangedInSpinBox() -{ - displayPreview(); -} - -//================================================================================= -// function : getRadius() -// purpose : -//================================================================================= -double BasicGUI_CircleDlg::getRadius() const -{ - return GroupPntVecR->SpinBox_DX->GetValue(); -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr BasicGUI_CircleDlg::createOperation() -{ - return myGeometryGUI->GetGeomGen()->GetICurvesOperations( getStudyId() ); -} - -//================================================================================= -// function : isEqual -// purpose : it may also be needed to check for min distance between gp_Pnt-s... -//================================================================================= -static bool isEqual( const GEOM::GEOM_Object_var& thePnt1, const GEOM::GEOM_Object_var& thePnt2 ) -{ - return thePnt1->_is_equivalent( thePnt2 ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool BasicGUI_CircleDlg::isValid( QString& msg ) -{ - const int id = getConstructorId(); - if ( id == 0 ) - return !myPoint->_is_nil() && !myDir->_is_nil() && getRadius() > 0; - else if ( id == 1 ) - return !myPoint1->_is_nil() && !myPoint2->_is_nil() && !myPoint3->_is_nil() && - !isEqual( myPoint1, myPoint2 ) && !isEqual( myPoint1, myPoint3 ) && !isEqual( myPoint2, myPoint3 ); - return false; -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool BasicGUI_CircleDlg::execute( ObjectList& objects ) -{ - bool res = false; - - GEOM::GEOM_Object_var anObj; - - switch ( getConstructorId() ) - { - case 0 : - anObj = GEOM::GEOM_ICurvesOperations::_narrow( getOperation() )->MakeCirclePntVecR( myPoint, myDir, getRadius() ); - res = true; - break; - case 1 : - anObj = GEOM::GEOM_ICurvesOperations::_narrow( getOperation() )->MakeCircleThreePnt( myPoint1, myPoint2, myPoint3 ); - res = true; - break; - } - - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - - return res; -} - -//================================================================================= -// function : closeEvent -// purpose : -//================================================================================= -void BasicGUI_CircleDlg::closeEvent( QCloseEvent* e ) -{ - // myGeometryGUI->SetState( -1 ); - GEOMBase_Skeleton::closeEvent( e ); -} - diff --git a/src/BasicGUI/BasicGUI_CircleDlg.h b/src/BasicGUI/BasicGUI_CircleDlg.h deleted file mode 100644 index 3a61f7edf..000000000 --- a/src/BasicGUI/BasicGUI_CircleDlg.h +++ /dev/null @@ -1,96 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BasicGUI_CircleDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_CIRCLE_H -#define DIALOGBOX_CIRCLE_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_2Sel1Spin.h" -#include "DlgRef_3Sel_QTD.h" - -#include "BasicGUI.h" - -//#include "GEOM_EdgeFilter.hxx" -//#include "GEOM_ShapeTypeFilter.hxx" -#include -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define BASICGUI_WNT_EXPORT __declspec( dllexport ) -#else -#define BASICGUI_WNT_EXPORT -#endif - -//================================================================================= -// class : BasicGUI_CircleDlg -// purpose : -//================================================================================= -class BasicGUI_CircleDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - BasicGUI_CircleDlg(GeometryGUI* theGeometryGUI, QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~BasicGUI_CircleDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& ); - virtual bool execute( ObjectList& objects ); - - virtual void closeEvent( QCloseEvent* e ); - -private : - void Init(); - void enterEvent(QEvent* e); - double getRadius() const; - - GeometryGUI* myGeometryGUI; - - GEOM::GEOM_Object_var myPoint, myDir, myPoint1, myPoint2, myPoint3; - - DlgRef_2Sel1Spin* GroupPntVecR; - DlgRef_3Sel_QTD* Group3Pnts; - -private slots: - void ClickOnOk(); - void ClickOnCancel(); - bool ClickOnApply(); - - void ActivateThisDialog(); - void DeactivateActiveDialog(); - - void SelectionIntoArgument(); - - void ConstructorsClicked( int ); - void LineEditReturnPressed(); - void SetEditCurrentArgument(); - void ValueChangedInSpinBox(); - -}; - -#endif // DIALOGBOX_CIRCLE_H diff --git a/src/BasicGUI/BasicGUI_CurveDlg.cxx b/src/BasicGUI/BasicGUI_CurveDlg.cxx deleted file mode 100644 index e5c92ee2e..000000000 --- a/src/BasicGUI/BasicGUI_CurveDlg.cxx +++ /dev/null @@ -1,326 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BasicGUI_CurveDlg.cxx -// Author : Nicolas REJNERI -// Module : GEOM -// $Header$ - -#include "BasicGUI_CurveDlg.h" - -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include - -#include "utilities.h" - -#include "SALOME_ListIteratorOfListIO.hxx" -#include "SALOME_ListIO.hxx" - -#include "GEOMImpl_Types.hxx" - -using namespace std; - -//================================================================================= -// class : BasicGUI_CurveDlg() -// purpose : Constructs a BasicGUI_CurveDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -BasicGUI_CurveDlg::BasicGUI_CurveDlg(GeometryGUI* theGeometryGUI, QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu), - myGeometryGUI(theGeometryGUI) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_POLYLINE"))); - QPixmap image2(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_SPLINE"))); - QPixmap image3(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_BEZIER"))); - - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_CURVE_TITLE")); - - /***************************************************************/ - RadioButton1->setPixmap( image0 ); - RadioButton2->setPixmap( image3 ); - RadioButton3->setPixmap( image2 ); - - GroupPoints = new DlgRef_1Sel_QTD( this, "GroupPoints" ); - GroupPoints->GroupBox1->setTitle( tr( "GEOM_NODES" ) ); - GroupPoints->TextLabel1->setText( tr("GEOM_POINTS") ); - GroupPoints->PushButton1->setPixmap(image1); - - GroupPoints->LineEdit1->setReadOnly( true ); - - Layout1->addWidget(GroupPoints, 2, 0); - /***************************************************************/ - - Init(); -} - - -//================================================================================= -// function : ~BasicGUI_CurveDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -BasicGUI_CurveDlg::~BasicGUI_CurveDlg() -{ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void BasicGUI_CurveDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = GroupPoints->LineEdit1; - - myPoints = new GEOM::ListOfGO(); - myPoints->length( 0 ); - - globalSelection( GEOM_POINT ); - - /* signals and slots connections */ - connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel())); - connect(myGeometryGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog())); - connect(myGeometryGUI, SIGNAL(SignalCloseAllDialogs()), this, SLOT(ClickOnCancel())); - - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - connect(GroupConstructors, SIGNAL(clicked(int)), this, SLOT(ConstructorsClicked(int))); - - connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - - initName( tr( "GEOM_CURVE" ) ); - ConstructorsClicked( 0 ); -} - -//================================================================================= -// function : ConstructorsClicked() -// purpose : -//================================================================================= -void BasicGUI_CurveDlg::ConstructorsClicked( int id ) -{ - QString aTitle = tr( id == 0 ? "GEOM_POLYLINE" : id == 1 ? "GEOM_BEZIER" : "GEOM_INTERPOL" ); - GroupConstructors->setTitle( aTitle ); - - myPoints = new GEOM::ListOfGO(); - myPoints->length( 0 ); - - myEditCurrentArgument->setText(""); -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void BasicGUI_CurveDlg::SetEditCurrentArgument() -{ - if ( sender() == GroupPoints->PushButton1 ) - myEditCurrentArgument = GroupPoints->LineEdit1; - myEditCurrentArgument->setFocus(); - SelectionIntoArgument(); -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void BasicGUI_CurveDlg::LineEditReturnPressed() -{ - if ( sender() == GroupPoints->LineEdit1 ) - { - myEditCurrentArgument = GroupPoints->LineEdit1; - GEOMBase_Skeleton::LineEditReturnPressed(); - } -} - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void BasicGUI_CurveDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool BasicGUI_CurveDlg::ClickOnApply() -{ - if ( !onAccept() ) - return false; - - initName(); - ConstructorsClicked( getConstructorId() ); - return true; -} - -//======================================================================= -// function : ClickOnCancel() -// purpose : -//======================================================================= -void BasicGUI_CurveDlg::ClickOnCancel() -{ - GEOMBase_Skeleton::ClickOnCancel(); -} - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection as changed or other case -//================================================================================= -void BasicGUI_CurveDlg::SelectionIntoArgument() -{ - myEditCurrentArgument->setText(""); - - Standard_Boolean aRes = Standard_False; - int i = 0; - myPoints->length( IObjectCount() ); // this length may be greater than number of objects, - // that will actually be put into myPoints - for ( SALOME_ListIteratorOfListIO anIt( selectedIO() ); anIt.More(); anIt.Next() ) - { - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( anIt.Value(), aRes ); - if ( !CORBA::is_nil( aSelectedObject ) && aRes ) - { - //TopoDS_Shape aPointShape; - //if ( myGeomBase->GetShape( aSelectedObject, aPointShape, TopAbs_VERTEX ) ) - myPoints[i++] = aSelectedObject; - } - } - myPoints->length( i ); // this is the right length, smaller of equal to the previously set - if ( i ) - GroupPoints->LineEdit1->setText( QString::number( i ) + "_" + tr( "GEOM_POINT" ) + tr( "_S_" ) ); - - displayPreview(); -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void BasicGUI_CurveDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - // myGeometryGUI->SetState( 0 ); - - globalSelection( GEOM_POINT ); - ConstructorsClicked( getConstructorId() ); -} - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : public slot to deactivate if active -//================================================================================= -void BasicGUI_CurveDlg::DeactivateActiveDialog() -{ - // myGeometryGUI->SetState( -1 ); - GEOMBase_Skeleton::DeactivateActiveDialog(); -} - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void BasicGUI_CurveDlg::enterEvent(QEvent* e) -{ - if ( !GroupConstructors->isEnabled() ) - ActivateThisDialog(); -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr BasicGUI_CurveDlg::createOperation() -{ - return myGeometryGUI->GetGeomGen()->GetICurvesOperations( getStudyId() ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool BasicGUI_CurveDlg::isValid( QString& msg ) -{ - return myPoints->length() > 1; -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool BasicGUI_CurveDlg::execute( ObjectList& objects ) -{ - bool res = false; - - GEOM::GEOM_Object_var anObj; - - switch ( getConstructorId() ) - { - case 0 : - anObj = GEOM::GEOM_ICurvesOperations::_narrow( getOperation() )->MakePolyline( myPoints ); - res = true; - break; - case 1 : - anObj = GEOM::GEOM_ICurvesOperations::_narrow( getOperation() )->MakeSplineBezier( myPoints ); - res = true; - break; - case 2 : - anObj = GEOM::GEOM_ICurvesOperations::_narrow( getOperation() )->MakeSplineInterpolation( myPoints ); - res = true; - break; - } - - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - - return res; -} - -//================================================================================= -// function : closeEvent -// purpose : -//================================================================================= -void BasicGUI_CurveDlg::closeEvent( QCloseEvent* e ) -{ - // myGeometryGUI->SetState( -1 ); - GEOMBase_Skeleton::closeEvent( e ); -} - diff --git a/src/BasicGUI/BasicGUI_CurveDlg.h b/src/BasicGUI/BasicGUI_CurveDlg.h deleted file mode 100644 index 623d35570..000000000 --- a/src/BasicGUI/BasicGUI_CurveDlg.h +++ /dev/null @@ -1,86 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BasicGUI_CurveDlg.h -// Author : Alexander SLADKOV -// Module : GEOM -// $Header$ - -#ifndef BASICGUI_CURVE_H -#define BASICGUI_CURVE_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_1Sel_QTD.h" - -#include "BasicGUI.h" -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define BASICGUI_WNT_EXPORT __declspec( dllexport ) -#else -#define BASICGUI_WNT_EXPORT -#endif -//#include "GEOM_ShapeTypeFilter.hxx" - -//================================================================================= -// class : BasicGUI_CurveDlg -// purpose : -//================================================================================= -class BasicGUI_CurveDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - BasicGUI_CurveDlg(GeometryGUI* theGeometryGUI, QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~BasicGUI_CurveDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& ); - virtual bool execute( ObjectList& objects ); - - virtual void closeEvent( QCloseEvent* e ); - -private : - void Init(); - void enterEvent(QEvent* e); - - GeometryGUI* myGeometryGUI; - - DlgRef_1Sel_QTD* GroupPoints; - GEOM::ListOfGO_var myPoints; - -private slots: - void ClickOnOk(); - void ClickOnCancel(); - bool ClickOnApply(); - - void ActivateThisDialog(); - void DeactivateActiveDialog(); - - void ConstructorsClicked( int ); - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - -}; - -#endif // BASICGUI_CURVE_H diff --git a/src/BasicGUI/BasicGUI_EllipseDlg.cxx b/src/BasicGUI/BasicGUI_EllipseDlg.cxx deleted file mode 100644 index 85cf7a7e1..000000000 --- a/src/BasicGUI/BasicGUI_EllipseDlg.cxx +++ /dev/null @@ -1,348 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BasicGUI_EllipseDlg.cxx -// Author : Nicolas REJNERI -// Module : GEOM -// $Header$ - -#include "BasicGUI_EllipseDlg.h" - -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include - -#include "GEOMImpl_Types.hxx" - -#include "utilities.h" - -using namespace std; - -//================================================================================= -// class : BasicGUI_EllipseDlg() -// purpose : Constructs a BasicGUI_EllipseDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -BasicGUI_EllipseDlg::BasicGUI_EllipseDlg(GeometryGUI* theGeometryGUI, QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu), myGeometryGUI(theGeometryGUI) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_ELLIPSE_PV"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_ELLIPSE_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_ELLIPSE")); - RadioButton1->setPixmap(image0); - RadioButton2->close(TRUE); - RadioButton3->close(TRUE); - - GroupPoints = new DlgRef_2Sel2Spin(this, "GroupPoints"); - GroupPoints->GroupBox1->setTitle(tr("GEOM_ARGUMENTS")); - GroupPoints->TextLabel1->setText(tr("GEOM_CENTER")); - GroupPoints->TextLabel2->setText(tr("GEOM_VECTOR")); - GroupPoints->TextLabel3->setText(tr("GEOM_RADIUS_MAJOR")); - GroupPoints->TextLabel4->setText(tr("GEOM_RADIUS_MINOR")); - GroupPoints->PushButton1->setPixmap(image1); - GroupPoints->PushButton2->setPixmap(image1); - - GroupPoints->LineEdit1->setReadOnly( true ); - GroupPoints->LineEdit2->setReadOnly( true ); - - Layout1->addWidget(GroupPoints, 2, 0); - /***************************************************************/ - - Init(); -} - - -//================================================================================= -// function : ~BasicGUI_EllipseDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -BasicGUI_EllipseDlg::~BasicGUI_EllipseDlg() -{ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void BasicGUI_EllipseDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = GroupPoints->LineEdit1; - globalSelection( GEOM_POINT ); - - myPoint = myDir = GEOM::GEOM_Object::_nil(); - - // myGeometryGUI->SetState( 0 ); - - /* Get setting of step value from file configuration */ - SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); - double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100); - - double aMajorR( 200. ), aMinorR( 100. ); - - /* min, max, step and decimals for spin boxes & initial values */ - GroupPoints->SpinBox_DX->RangeStepAndValidator( 0.001, 999.999, step, 3 ); - GroupPoints->SpinBox_DY->RangeStepAndValidator( 0.001, 999.999, step, 3 ); - GroupPoints->SpinBox_DX->SetValue( aMajorR ); - GroupPoints->SpinBox_DY->SetValue( aMinorR ); - - /* signals and slots connections */ - connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel())); - connect(myGeometryGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog())); - connect(myGeometryGUI, SIGNAL(SignalCloseAllDialogs()), this, SLOT(ClickOnCancel())); - - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - - connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupPoints->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - - connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(GroupPoints->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect(GroupPoints->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - connect(GroupPoints->SpinBox_DY, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupPoints->SpinBox_DX, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupPoints->SpinBox_DY, SLOT(SetStep(double))); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - - initName( tr( "GEOM_ELLIPSE" ) ); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void BasicGUI_EllipseDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool BasicGUI_EllipseDlg::ClickOnApply() -{ - if ( !onAccept() ) - return false; - - initName(); - - // reset - myPoint = myDir = GEOM::GEOM_Object::_nil(); - GroupPoints->LineEdit1->setText( "" ); - GroupPoints->LineEdit2->setText( "" ); - myEditCurrentArgument = GroupPoints->LineEdit1; - globalSelection( GEOM_POINT ); - - return true; -} - -//======================================================================= -// function : ClickOnCancel() -// purpose : -//======================================================================= -void BasicGUI_EllipseDlg::ClickOnCancel() -{ - GEOMBase_Skeleton::ClickOnCancel(); -} - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection as changed or other case -//================================================================================= -void BasicGUI_EllipseDlg::SelectionIntoArgument() -{ - myEditCurrentArgument->setText(""); - - if ( IObjectCount() != 1 ) - { - if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) myPoint = GEOM::GEOM_Object::_nil(); - else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) myDir = GEOM::GEOM_Object::_nil(); - return; - } - - Standard_Boolean aRes = Standard_False; - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), aRes ); - if ( !CORBA::is_nil( aSelectedObject ) && aRes ) - { - myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) ); - if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) myPoint = aSelectedObject; - else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) myDir = aSelectedObject; - } - - displayPreview(); -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void BasicGUI_EllipseDlg::SetEditCurrentArgument() -{ - QPushButton* send = (QPushButton*)sender(); - - if ( send == GroupPoints->PushButton1 ) myEditCurrentArgument = GroupPoints->LineEdit1; - else if ( send == GroupPoints->PushButton2 ) myEditCurrentArgument = GroupPoints->LineEdit2; - - myEditCurrentArgument->setFocus(); - if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) - globalSelection( GEOM_LINE ); - else - globalSelection( GEOM_POINT ); - SelectionIntoArgument(); -} - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void BasicGUI_EllipseDlg::LineEditReturnPressed() -{ - QLineEdit* send = (QLineEdit*)sender(); - if ( send == GroupPoints->LineEdit1 || - send == GroupPoints->LineEdit2 ) - { - myEditCurrentArgument = send; - GEOMBase_Skeleton::LineEditReturnPressed(); - } -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void BasicGUI_EllipseDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - GroupPoints->LineEdit1->setFocus(); - myEditCurrentArgument = GroupPoints->LineEdit1; - - GroupPoints->LineEdit1->setText( "" ); - GroupPoints->LineEdit2->setText( "" ); - - myPoint = myDir = GEOM::GEOM_Object::_nil(); - globalSelection( GEOM_POINT ); -} - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : public slot to deactivate if active -//================================================================================= -void BasicGUI_EllipseDlg::DeactivateActiveDialog() -{ - // myGeometryGUI->SetState( -1 ); - GEOMBase_Skeleton::DeactivateActiveDialog(); -} - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void BasicGUI_EllipseDlg::enterEvent(QEvent* e) -{ - if ( !GroupConstructors->isEnabled() ) - ActivateThisDialog(); -} - -//================================================================================= -// function : ValueChangedInSpinBox() -// purpose : -//================================================================================= -void BasicGUI_EllipseDlg::ValueChangedInSpinBox(double newValue) -{ - displayPreview(); -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr BasicGUI_EllipseDlg::createOperation() -{ - return myGeometryGUI->GetGeomGen()->GetICurvesOperations( getStudyId() ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool BasicGUI_EllipseDlg::isValid( QString& msg ) -{ - double aMajorR = GroupPoints->SpinBox_DX->GetValue(); - double aMinorR = GroupPoints->SpinBox_DY->GetValue(); - if ( aMajorR < aMinorR ) - { - msg = tr( "GEOM_ELLIPSE_ERROR_1" ); - return false; - } - return !myPoint->_is_nil() && !myDir->_is_nil(); -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool BasicGUI_EllipseDlg::execute( ObjectList& objects ) -{ - double aMajorR = GroupPoints->SpinBox_DX->GetValue(); - double aMinorR = GroupPoints->SpinBox_DY->GetValue(); - GEOM::GEOM_Object_var anObj = GEOM::GEOM_ICurvesOperations::_narrow( getOperation() )->MakeEllipse( myPoint, myDir, aMajorR, aMinorR ); - - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - - return true; -} - -//================================================================================= -// function : closeEvent -// purpose : -//================================================================================= -void BasicGUI_EllipseDlg::closeEvent( QCloseEvent* e ) -{ - // myGeometryGUI->SetState( -1 ); - GEOMBase_Skeleton::closeEvent( e ); -} - diff --git a/src/BasicGUI/BasicGUI_EllipseDlg.h b/src/BasicGUI/BasicGUI_EllipseDlg.h deleted file mode 100644 index 86f2cb33e..000000000 --- a/src/BasicGUI/BasicGUI_EllipseDlg.h +++ /dev/null @@ -1,89 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BasicGUI_EllipseDlg.h -// Author : Nicolas REJNERI -// Module : GEOM -// $Header$ - -#ifndef BASICGUI_ELLIPSE_H -#define BASICGUI_ELLIPSE_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_2Sel2Spin.h" - -#include "BasicGUI.h" - -//#include "GEOM_ShapeTypeFilter.hxx" -//#include "GEOM_EdgeFilter.hxx" -#include -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define BASICGUI_WNT_EXPORT __declspec( dllexport ) -#else -#define BASICGUI_WNT_EXPORT -#endif -//================================================================================= -// class : BasicGUI_EllipseDlg -// purpose : -//================================================================================= -class BasicGUI_EllipseDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - BasicGUI_EllipseDlg(GeometryGUI* theGeometryGUI, QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~BasicGUI_EllipseDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& ); - virtual bool execute( ObjectList& objects ); - - virtual void closeEvent( QCloseEvent* e ); - -private : - void Init(); - void enterEvent(QEvent* e); - - GeometryGUI* myGeometryGUI; - - GEOM::GEOM_Object_var myPoint, myDir; - - DlgRef_2Sel2Spin* GroupPoints; - -private slots: - void ClickOnOk(); - void ClickOnCancel(); - bool ClickOnApply(); - - void ActivateThisDialog(); - void DeactivateActiveDialog(); - - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - void ValueChangedInSpinBox(double newValue); - -}; - -#endif // BASICGUI_ELLIPSE_H diff --git a/src/BasicGUI/BasicGUI_LineDlg.cxx b/src/BasicGUI/BasicGUI_LineDlg.cxx deleted file mode 100644 index 308f66146..000000000 --- a/src/BasicGUI/BasicGUI_LineDlg.cxx +++ /dev/null @@ -1,296 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BasicGUI_LineDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "BasicGUI_LineDlg.h" - -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include - -#include "GEOMImpl_Types.hxx" - -#include "utilities.h" - -using namespace std; - -//================================================================================= -// class : BasicGUI_LineDlg() -// purpose : Constructs a BasicGUI_LineDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -BasicGUI_LineDlg::BasicGUI_LineDlg(GeometryGUI* theGeometryGUI, QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu), myGeometryGUI(theGeometryGUI) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM",tr("ICON_DLG_LINE_2P"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_LINE_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_LINE")); - RadioButton1->setPixmap(image0); - RadioButton2->close(TRUE); - RadioButton3->close(TRUE); - - GroupPoints = new DlgRef_2Sel_QTD(this, "GroupPoints"); - GroupPoints->GroupBox1->setTitle(tr("GEOM_POINTS")); - GroupPoints->TextLabel1->setText(tr("GEOM_POINT_I").arg("1")); - GroupPoints->TextLabel2->setText(tr("GEOM_POINT_I").arg("2")); - GroupPoints->PushButton1->setPixmap(image1); - GroupPoints->PushButton2->setPixmap(image1); - - GroupPoints->LineEdit1->setReadOnly( true ); - GroupPoints->LineEdit2->setReadOnly( true ); - - Layout1->addWidget(GroupPoints, 2, 0); - /***************************************************************/ - - Init(); -} - - -//================================================================================= -// function : ~BasicGUI_LineDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -BasicGUI_LineDlg::~BasicGUI_LineDlg() -{ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void BasicGUI_LineDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = GroupPoints->LineEdit1; - - myPoint1 = myPoint2 = GEOM::GEOM_Object::_nil(); - - // myGeometryGUI->SetState( 0 ); - globalSelection( GEOM_POINT ); - - /* signals and slots connections */ - connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel())); - connect(myGeometryGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog())); - connect(myGeometryGUI, SIGNAL(SignalCloseAllDialogs()), this, SLOT(ClickOnCancel())); - - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - - connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupPoints->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - - connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(GroupPoints->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - initName( tr("GEOM_LINE") ); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void BasicGUI_LineDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - -//======================================================================= -// function : ClickOnCancel() -// purpose : -//======================================================================= -void BasicGUI_LineDlg::ClickOnCancel() -{ - GEOMBase_Skeleton::ClickOnCancel(); -} - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool BasicGUI_LineDlg::ClickOnApply() -{ - if ( !onAccept() ) - return false; - - initName(); - return true; -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection as changed or other case -//================================================================================= -void BasicGUI_LineDlg::SelectionIntoArgument() -{ - myEditCurrentArgument->setText(""); - - if ( IObjectCount() != 1 ) - { - if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) myPoint1 = GEOM::GEOM_Object::_nil(); - else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) myPoint2 = GEOM::GEOM_Object::_nil(); - return; - } - - // nbSel == 1 - Standard_Boolean aRes = Standard_False; - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), aRes ); - if ( !CORBA::is_nil( aSelectedObject ) && aRes ) - { - myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) ); - if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) myPoint1 = aSelectedObject; - else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) myPoint2 = aSelectedObject; - } - - displayPreview(); -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void BasicGUI_LineDlg::SetEditCurrentArgument() -{ - QPushButton* send = (QPushButton*)sender(); - if ( send == GroupPoints->PushButton1 ) myEditCurrentArgument = GroupPoints->LineEdit1; - else if ( send == GroupPoints->PushButton2 ) myEditCurrentArgument = GroupPoints->LineEdit2; - myEditCurrentArgument->setFocus(); - SelectionIntoArgument(); -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void BasicGUI_LineDlg::LineEditReturnPressed() -{ - QLineEdit* send = (QLineEdit*)sender(); - if ( send == GroupPoints->LineEdit1 ) myEditCurrentArgument = GroupPoints->LineEdit1; - else if ( send == GroupPoints->LineEdit2 ) myEditCurrentArgument = GroupPoints->LineEdit2; - else return; - GEOMBase_Skeleton::LineEditReturnPressed(); -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void BasicGUI_LineDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - // myGeometryGUI->SetState( 0 ); - globalSelection( GEOM_POINT ); - - myEditCurrentArgument = GroupPoints->LineEdit1; - myEditCurrentArgument->setFocus(); - - GroupPoints->LineEdit1->setText( "" ); - GroupPoints->LineEdit2->setText( "" ); - myPoint1 = myPoint2 = GEOM::GEOM_Object::_nil(); -} - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : public slot to deactivate if active -//================================================================================= -void BasicGUI_LineDlg::DeactivateActiveDialog() -{ - // myGeometryGUI->SetState( -1 ); - GEOMBase_Skeleton::DeactivateActiveDialog(); -} - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void BasicGUI_LineDlg::enterEvent(QEvent* e) -{ - if ( !GroupConstructors->isEnabled() ) - ActivateThisDialog(); -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr BasicGUI_LineDlg::createOperation() -{ - return myGeometryGUI->GetGeomGen()->GetIBasicOperations( getStudyId() ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool BasicGUI_LineDlg::isValid( QString& msg ) -{ - return !myPoint1->_is_nil() && !myPoint2->_is_nil(); -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool BasicGUI_LineDlg::execute( ObjectList& objects ) -{ - GEOM::GEOM_Object_var anObj = GEOM::GEOM_IBasicOperations::_narrow( getOperation() )->MakeLineTwoPnt( myPoint1, myPoint2 ); - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - return true; -} - -//================================================================================= -// function : closeEvent -// purpose : -//================================================================================= -void BasicGUI_LineDlg::closeEvent( QCloseEvent* e ) -{ - // myGeometryGUI->SetState( -1 ); - GEOMBase_Skeleton::closeEvent( e ); -} - diff --git a/src/BasicGUI/BasicGUI_LineDlg.h b/src/BasicGUI/BasicGUI_LineDlg.h deleted file mode 100644 index 7afed3c4e..000000000 --- a/src/BasicGUI/BasicGUI_LineDlg.h +++ /dev/null @@ -1,86 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BasicGUI_LineDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_LINE_H -#define DIALOGBOX_LINE_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_2Sel_QTD.h" - -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define BASICGUI_WNT_EXPORT __declspec( dllexport ) -#else -#define BASICGUI_WNT_EXPORT -#endif - -//================================================================================= -// class : BasicGUI_LineDlg -// purpose : -//================================================================================= -class BasicGUI_LineDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - BasicGUI_LineDlg(GeometryGUI* theGeometryGUI, QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~BasicGUI_LineDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& ); - virtual bool execute( ObjectList& objects ); - - virtual void closeEvent( QCloseEvent* e ); - -private : - void Init(); - void enterEvent(QEvent* e); - - GeometryGUI* myGeometryGUI; - - GEOM::GEOM_Object_var myPoint1; - GEOM::GEOM_Object_var myPoint2; - - DlgRef_2Sel_QTD* GroupPoints; - -private slots: - void ClickOnOk(); - void ClickOnCancel(); - bool ClickOnApply(); - - void ActivateThisDialog(); - void DeactivateActiveDialog(); - - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - -}; - -#endif // DIALOGBOX_LINE_H diff --git a/src/BasicGUI/BasicGUI_MarkerDlg.cxx b/src/BasicGUI/BasicGUI_MarkerDlg.cxx deleted file mode 100644 index a276a0655..000000000 --- a/src/BasicGUI/BasicGUI_MarkerDlg.cxx +++ /dev/null @@ -1,748 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BasicGUI_MarkerDlg.cxx -// Author : Sergey LITONIN -// Module : GEOM -// $Header$ - -#include "BasicGUI_MarkerDlg.h" -#include "DlgRef_SpinBox.h" - -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include - -#include "GEOMImpl_Types.hxx" -#include "utilities.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//================================================================================= -// class : BasicGUI_MarkerDlg() -// purpose : Constructor -//================================================================================= -BasicGUI_MarkerDlg::BasicGUI_MarkerDlg( GeometryGUI* theGeometryGUI, QWidget* theParent ) -: GEOMBase_Skeleton( theParent, "BasicGUI_MarkerDlg", false, - WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu), myGeometryGUI(theGeometryGUI) -{ - QPixmap iconCS1 ( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_MARKER" ) ) ); - QPixmap iconCS2 ( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_MARKER2" ) ) ); - QPixmap iconCS3 ( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_MARKER3" ) ) ); - QPixmap iconSelect( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_SELECT" ) ) ); - - setCaption( tr( "CAPTION" ) ); - - GroupConstructors->setTitle( tr( "LOCALCS" ) ); - RadioButton1->setPixmap( iconCS1 ); - RadioButton2->setPixmap( iconCS2 ); - RadioButton3->setPixmap( iconCS3 ); - - Group1 = new DlgRef_1Sel_QTD(this, "Group1"); - Group1->GroupBox1->setTitle(tr("GEOM_ARGUMENTS")); - Group1->TextLabel1->setText(tr("GEOM_OBJECT")); - Group1->PushButton1->setPixmap(iconSelect); - - Group2 = new DlgRef_3Sel_QTD(this, "Group2"); - Group2->GroupBox1->setTitle(tr("GEOM_ARGUMENTS")); - Group2->TextLabel1->setText(tr("GEOM_POINT")); - Group2->TextLabel2->setText(tr("XDIR")); - Group2->TextLabel3->setText(tr("YDIR")); - Group2->PushButton1->setPixmap(iconSelect); - Group2->PushButton2->setPixmap(iconSelect); - Group2->PushButton3->setPixmap(iconSelect); - - aMainGrp = new QGroupBox( 1, Qt::Horizontal, this ); - aMainGrp->setFrameStyle( QFrame::NoFrame ); - aMainGrp->setInsideMargin( 0 ); - - QGroupBox* anOriGrp = new QGroupBox( 1, Qt::Vertical, tr( "ORIGIN" ), aMainGrp ); - new QLabel( tr( "GEOM_X" ), anOriGrp ); - myData[ X ] = new DlgRef_SpinBox( anOriGrp ); - new QLabel( tr( "GEOM_Y" ), anOriGrp ); - myData[ Y ] = new DlgRef_SpinBox( anOriGrp ); - new QLabel( tr( "GEOM_Z" ), anOriGrp ); - myData[ Z ] = new DlgRef_SpinBox( anOriGrp ); - - QGroupBox* aXAxisGrp = new QGroupBox( 1, Qt::Vertical, tr( "XDIR" ), aMainGrp ); - new QLabel( tr( "DX" ), aXAxisGrp ); - myData[ DX1 ] = new DlgRef_SpinBox( aXAxisGrp ); - new QLabel( tr( "DY" ), aXAxisGrp ); - myData[ DY1 ] = new DlgRef_SpinBox( aXAxisGrp ); - new QLabel( tr( "DZ" ), aXAxisGrp ); - myData[ DZ1 ] = new DlgRef_SpinBox( aXAxisGrp ); - - QGroupBox* anYAxisGrp = new QGroupBox( 1, Qt::Vertical, tr( "YDIR" ), aMainGrp ); - new QLabel( tr( "DX" ), anYAxisGrp ); - myData[ DX2 ] = new DlgRef_SpinBox( anYAxisGrp ); - new QLabel( tr( "DY" ), anYAxisGrp ); - myData[ DY2 ] = new DlgRef_SpinBox( anYAxisGrp ); - new QLabel( tr( "DZ" ), anYAxisGrp ); - myData[ DZ2 ] = new DlgRef_SpinBox( anYAxisGrp ); - - Layout1->addWidget( aMainGrp, 2, 0 ); - Layout1->addWidget( Group1, 2, 0 ); - Layout1->addWidget( Group2, 2, 0 ); - - Init(); -} - - -//================================================================================= -// function : ~BasicGUI_MarkerDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -BasicGUI_MarkerDlg::~BasicGUI_MarkerDlg() -{ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void BasicGUI_MarkerDlg::Init() -{ - myBlockPreview = false; - myConstructorId = -1; - myEditCurrentArgument = Group1->LineEdit1; - Group1->LineEdit1->setReadOnly( true ); - Group2->LineEdit1->setReadOnly( true ); - Group2->LineEdit2->setReadOnly( true ); - Group2->LineEdit3->setReadOnly( true ); - - connect(GroupConstructors, SIGNAL(clicked(int)), this, SLOT(ConstructorsClicked(int))); - connect(Group1->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(Group2->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(Group2->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(Group2->PushButton3, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - - connect(Group1->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(Group2->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(Group2->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(Group2->LineEdit3, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect( buttonCancel, SIGNAL( clicked() ), this, SLOT( onClose() ) ); - connect( myGeometryGUI, SIGNAL( SignalDeactivateActiveDialog() ), this, SLOT( onDeactivate() ) ); - connect( myGeometryGUI, SIGNAL( SignalCloseAllDialogs() ), this, SLOT( onClose() ) ); - - connect( buttonOk, SIGNAL( clicked() ), this, SLOT( onOk() ) ); - connect( buttonApply, SIGNAL( clicked() ), this, SLOT( onApply() ) ); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL( currentSelectionChanged() ), this, SLOT( onSelectionDone() ) ); - - initName( tr( "LCS_NAME" ) ); - - SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); - double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100); - - for ( DataMap::iterator anIter = myData.begin(); anIter != myData.end(); ++anIter ) - { - anIter.data()->RangeStepAndValidator( -999.999, 999.999, step, 3 ); - connect( anIter.data(), SIGNAL( valueChanged( double ) ), - this, SLOT( onValueChanged( double ) ) ); - } - - myBlockPreview = true; - for ( DataMap::iterator anIter = myData.begin(); anIter != myData.end(); ++anIter ) - anIter.data()->SetValue( 0 ); - myData[ DX1 ]->SetValue( 1 ); - myData[ DY2 ]->SetValue( 1 ); - myBlockPreview = false; - - ConstructorsClicked( 0 ); - - - //@ - /* - QAD_ViewFrame* aFrame = QAD_Application::getDesktop()->getActiveApp()-> - getActiveStudy()->getActiveStudyFrame()->getRightFrame()->getViewFrame(); - - VTKViewer_ViewFrame* aVTKFrame = dynamic_cast( aFrame ); - if ( aVTKFrame ) - { - aVTKFrame->AdjustTrihedrons( true ); - return; - } - - OCCViewer_ViewFrame* aOCCFrame = dynamic_cast( aFrame ); - if ( aOCCFrame ) - aOCCFrame->AdjustTrihedrons( true ); - */ -} - -//================================================================================= -// function : ConstructorsClicked() -// purpose : Radio button management -//================================================================================= -void BasicGUI_MarkerDlg::ConstructorsClicked( int constructorId ) -{ - if ( myConstructorId == constructorId && myConstructorId == 0 ) - { - localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX ); - activate( GEOM_MARKER ); - displayPreview(); - return; - } - - myConstructorId = constructorId; - - disconnect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), 0, this, 0); - - switch (constructorId) - { - case 0: - { - Group1->hide(); - Group2->hide(); - resize(0, 0); - aMainGrp->show(); - localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX ); - activate( GEOM_MARKER ); - break; - } - case 1: - { - Group2->hide(); - aMainGrp->hide(); - resize(0, 0); - Group1->show(); - - globalSelection( GEOM_ALLGEOM ); - myEditCurrentArgument = Group1->LineEdit1; - Group1->LineEdit1->setText(""); - break; - } - case 2: - { - aMainGrp->hide(); - Group1->show(); - resize(0, 0); - Group2->show(); - - globalSelection( GEOM_POINT ); - myEditCurrentArgument = Group2->LineEdit1; - Group2->LineEdit1->setText(""); - Group2->LineEdit2->setText(""); - Group2->LineEdit3->setText(""); - break; - } - } - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(onSelectionDone())); - onSelectionDone(); -} - -//================================================================================= -// function : onOk() -// purpose : -//================================================================================= -void BasicGUI_MarkerDlg::onOk() -{ - if ( onApply() ) - onClose(); -} - -//======================================================================= -// function : onClose() -// purpose : -//======================================================================= -void BasicGUI_MarkerDlg::onClose() -{ - GEOMBase_Skeleton::ClickOnCancel(); -} - -//================================================================================= -// function : onApply() -// purpose : -//================================================================================= -bool BasicGUI_MarkerDlg::onApply() -{ - if ( !onAccept() ) - return false; - - initName(); - ConstructorsClicked( getConstructorId() ); - - return true; -} - -//================================================================================= -// function : onSelectionDone0() -// purpose : Reaction on selection when first method of creation is current one -//================================================================================= -void BasicGUI_MarkerDlg::onSelectionDone0() -{ - if ( IObjectCount() == 1 ) - { - - Standard_Boolean aRes = Standard_False; - Handle(SALOME_InteractiveObject) anIO = firstIObject(); - GEOM::GEOM_Object_var aSelectedObj = GEOMBase::ConvertIOinGEOMObject( anIO, aRes ); - - if ( aRes && !aSelectedObj->_is_nil() ) - { - TopoDS_Shape aShape; - if ( myGeomBase->GetShape( aSelectedObj, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) - { - if ( aSelectedObj->GetType() == GEOM_MARKER && aShape.ShapeType() == TopAbs_FACE ) - { - TopoDS_Face aFace = TopoDS::Face( aShape ); - Handle(Geom_Plane) aPlane = Handle(Geom_Plane)::DownCast( BRep_Tool::Surface( aFace ) ); - - if ( !aPlane.IsNull() ) - { - gp_Ax3 anAx3 = aPlane->Pln().Position(); - gp_Pnt aLoc = anAx3.Location(); - gp_Dir aXDir = anAx3.XDirection(); - gp_Dir aYDir = anAx3.YDirection(); - - myData[ X ]->SetValue( aLoc.X() ); - myData[ Y ]->SetValue( aLoc.Y() ); - myData[ Z ]->SetValue( aLoc.Z() ); - - myData[ DX1 ]->SetValue( aXDir.X() ); - myData[ DY1 ]->SetValue( aXDir.Y() ); - myData[ DZ1 ]->SetValue( aXDir.Z() ); - - myData[ DX2 ]->SetValue( aYDir.X() ); - myData[ DY2 ]->SetValue( aYDir.Y() ); - myData[ DZ2 ]->SetValue( aYDir.Z() ); - ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr()->clearSelected(); - } - } - else - { - TColStd_IndexedMapOfInteger aMap; - ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr()->GetIndexes( anIO, aMap ); - if ( aMap.Extent() == 1 ) - { - int anIndex = aMap( 1 ); - TopTools_IndexedMapOfShape aShapes; - TopExp::MapShapes( aShape, aShapes ); - aShape = aShapes.FindKey( anIndex ); - ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr()->clearSelected(); - } - - - if ( !aShape.IsNull() && aShape.ShapeType() == TopAbs_VERTEX ) - { - gp_Pnt aPnt = BRep_Tool::Pnt( TopoDS::Vertex( aShape ) ); - myData[ X ]->SetValue( aPnt.X() ); - myData[ Y ]->SetValue( aPnt.Y() ); - myData[ Z ]->SetValue( aPnt.Z() ); - } - } - } - } - } - - displayPreview(); -} - - -//================================================================================= -// function : onSelectionDone() -// purpose : Called when selection as changed or other case -//================================================================================= -void BasicGUI_MarkerDlg::onSelectionDone() -{ - if ( getConstructorId() == 0 ) - { - onSelectionDone0(); - return; - } - - - myEditCurrentArgument->setText(""); - QString aName; - - if ( IObjectCount() == 1 ) { - Standard_Boolean aRes = Standard_False; - Handle(SALOME_InteractiveObject) anIO = firstIObject(); - GEOM::GEOM_Object_var aSelectedObj = GEOMBase::ConvertIOinGEOMObject( anIO, aRes ); - - if ( !CORBA::is_nil( aSelectedObj ) && aRes ) { - aName = GEOMBase::GetName( aSelectedObj ); - TopoDS_Shape aShape; - if ( myGeomBase->GetShape( aSelectedObj, aShape, TopAbs_SHAPE ) ) { - GEOM::short_array anIndexes; - - TColStd_IndexedMapOfInteger aMap; - ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr()->GetIndexes( anIO, aMap ); - - if ( !aMap.IsEmpty() ) { - int anIndex = aMap( 1 ); - TopTools_IndexedMapOfShape aShapes; - TopExp::MapShapes( aShape, aShapes ); - aShape = aShapes.FindKey( anIndex ); - } - - if ( getConstructorId() == 1 ) { - if ( !aShape.IsNull() ) { - gp_Pnt aPnt; - if (aShape.ShapeType() == TopAbs_VERTEX) { - aPnt = BRep_Tool::Pnt(TopoDS::Vertex(aShape)); - } - else { - GProp_GProps aSystem; - if (aShape.ShapeType() == TopAbs_EDGE || aShape.ShapeType() == TopAbs_WIRE) - BRepGProp::LinearProperties(aShape, aSystem); - else if (aShape.ShapeType() == TopAbs_FACE || aShape.ShapeType() == TopAbs_SHELL) - BRepGProp::SurfaceProperties(aShape, aSystem); - else - BRepGProp::VolumeProperties(aShape, aSystem); - - aPnt = aSystem.CentreOfMass(); - } - - gp_Ax3 anAx3; - anAx3.Transform(aShape.Location().Transformation()); - if(aShape.ShapeType() == TopAbs_FACE) { - Handle(Geom_Surface) aGS = BRep_Tool::Surface( TopoDS::Face( aShape ) ); - if (!aGS.IsNull() && aGS->IsKind( STANDARD_TYPE( Geom_Plane ) ) ) { - Handle(Geom_Plane) aGPlane = Handle(Geom_Plane)::DownCast( aGS ); - gp_Pln aPln = aGPlane->Pln(); - anAx3 = aPln.Position(); - } - } - - gp_Dir aDirX = anAx3.XDirection(); - gp_Dir aDirY = anAx3.YDirection(); - - myData[ X ]->SetValue( aPnt.X() ); - myData[ Y ]->SetValue( aPnt.Y() ); - myData[ Z ]->SetValue( aPnt.Z() ); - - myData[ DX1 ]->SetValue( aDirX.X() ); - myData[ DY1 ]->SetValue( aDirX.Y() ); - myData[ DZ1 ]->SetValue( aDirX.Z() ); - - myData[ DX2 ]->SetValue( aDirY.X() ); - myData[ DY2 ]->SetValue( aDirY.Y() ); - myData[ DZ2 ]->SetValue( aDirY.Z() ); - - myEditCurrentArgument->setText( aName ); - } - else { - myData[ X ]->SetValue( 0 ); - myData[ Y ]->SetValue( 0 ); - myData[ Z ]->SetValue( 0 ); - - myData[ DX1 ]->SetValue( 0 ); - myData[ DY1 ]->SetValue( 0 ); - myData[ DZ1 ]->SetValue( 0 ); - - myData[ DX2 ]->SetValue( 0 ); - myData[ DY2 ]->SetValue( 0 ); - myData[ DZ2 ]->SetValue( 0 ); - } - } - else if ( getConstructorId() == 2 ) { - if (myEditCurrentArgument == Group2->LineEdit1) { - if ( !aShape.IsNull() && aShape.ShapeType() == TopAbs_VERTEX ) { - gp_Pnt aPnt = BRep_Tool::Pnt( TopoDS::Vertex( aShape ) ); - myData[ X ]->SetValue( aPnt.X() ); - myData[ Y ]->SetValue( aPnt.Y() ); - myData[ Z ]->SetValue( aPnt.Z() ); - myEditCurrentArgument->setText( aName ); - } - else { - myData[ X ]->SetValue( 0 ); - myData[ Y ]->SetValue( 0 ); - myData[ Z ]->SetValue( 0 ); - } - } - else if (myEditCurrentArgument == Group2->LineEdit2) { - if ( !aShape.IsNull() && aShape.ShapeType() == TopAbs_EDGE ) { - gp_Pnt aP1 = BRep_Tool::Pnt(TopExp::FirstVertex(TopoDS::Edge(aShape))); - gp_Pnt aP2 = BRep_Tool::Pnt(TopExp::LastVertex(TopoDS::Edge(aShape))); - gp_Dir aDir(gp_Vec(aP1, aP2)); - - myData[ DX1 ]->SetValue( aDir.X() ); - myData[ DY1 ]->SetValue( aDir.Y() ); - myData[ DZ1 ]->SetValue( aDir.Z() ); - myEditCurrentArgument->setText( aName ); - } - else { - myData[ DX1 ]->SetValue( 0 ); - myData[ DY1 ]->SetValue( 0 ); - myData[ DZ1 ]->SetValue( 0 ); - } - } - else if (myEditCurrentArgument == Group2->LineEdit3) { - if ( !aShape.IsNull() && aShape.ShapeType() == TopAbs_EDGE ) { - gp_Pnt aP1 = BRep_Tool::Pnt(TopExp::FirstVertex(TopoDS::Edge(aShape))); - gp_Pnt aP2 = BRep_Tool::Pnt(TopExp::LastVertex(TopoDS::Edge(aShape))); - gp_Dir aDir(gp_Vec(aP1, aP2)); - - myData[ DX2 ]->SetValue( aDir.X() ); - myData[ DY2 ]->SetValue( aDir.Y() ); - myData[ DZ2 ]->SetValue( aDir.Z() ); - myEditCurrentArgument->setText( aName ); - } - else { - myData[ DX2 ]->SetValue( 0 ); - myData[ DY2 ]->SetValue( 0 ); - myData[ DZ2 ]->SetValue( 0 ); - } - } - } - } - } - } - else { - if ( getConstructorId() == 1 ) { - myData[ X ]->SetValue( 0 ); - myData[ Y ]->SetValue( 0 ); - myData[ Z ]->SetValue( 0 ); - - myData[ DX1 ]->SetValue( 0 ); - myData[ DY1 ]->SetValue( 0 ); - myData[ DZ1 ]->SetValue( 0 ); - - myData[ DX2 ]->SetValue( 0 ); - myData[ DY2 ]->SetValue( 0 ); - myData[ DZ2 ]->SetValue( 0 ); - } - else if ( getConstructorId() == 2 ) { - if (myEditCurrentArgument == Group2->LineEdit1) { - myData[ X ]->SetValue( 0 ); - myData[ Y ]->SetValue( 0 ); - myData[ Z ]->SetValue( 0 ); - } - else if (myEditCurrentArgument == Group2->LineEdit2) { - myData[ DX1 ]->SetValue( 0 ); - myData[ DY1 ]->SetValue( 0 ); - myData[ DZ1 ]->SetValue( 0 ); - } - else if (myEditCurrentArgument == Group2->LineEdit3) { - myData[ DX2 ]->SetValue( 0 ); - myData[ DY2 ]->SetValue( 0 ); - myData[ DZ2 ]->SetValue( 0 ); - } - } - } - - displayPreview(); -} - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void BasicGUI_MarkerDlg::SetEditCurrentArgument() -{ - QPushButton* send = (QPushButton*)sender(); - - if(send == Group1->PushButton1) { - myEditCurrentArgument = Group1->LineEdit1; - globalSelection( GEOM_ALLGEOM ); - } - else if(send == Group2->PushButton1) { - myEditCurrentArgument = Group2->LineEdit1; - globalSelection( GEOM_POINT ); - } - else if(send == Group2->PushButton2) { - myEditCurrentArgument = Group2->LineEdit2; - globalSelection( GEOM_LINE ); - } - else if(send == Group2->PushButton3) { - myEditCurrentArgument = Group2->LineEdit3; - globalSelection( GEOM_LINE ); - } - - myEditCurrentArgument->setFocus(); - onSelectionDone(); -} - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void BasicGUI_MarkerDlg::LineEditReturnPressed() -{ - QLineEdit* send = (QLineEdit*)sender(); - - myEditCurrentArgument = send; - GEOMBase_Skeleton::LineEditReturnPressed(); -} - -//================================================================================= -// function : onActivate() -// purpose : -//================================================================================= -void BasicGUI_MarkerDlg::onActivate() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL( currentSelectionChanged() ), this, SLOT( onSelectionDone() ) ); - - ConstructorsClicked( getConstructorId() ); -} - -//================================================================================= -// function : onDeactivate() -// purpose : public slot to deactivate if active -//================================================================================= -void BasicGUI_MarkerDlg::onDeactivate() -{ - GEOMBase_Skeleton::DeactivateActiveDialog(); -} - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void BasicGUI_MarkerDlg::enterEvent(QEvent* e) -{ - if ( !GroupConstructors->isEnabled() ) - onActivate(); -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr BasicGUI_MarkerDlg::createOperation() -{ - return myGeometryGUI->GetGeomGen()->GetIBasicOperations( getStudyId() ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool BasicGUI_MarkerDlg::isValid( QString& msg ) -{ - const int id = getConstructorId(); - gp_Vec v1( myData[ DX1 ]->GetValue(), myData[ DY1 ]->GetValue(), myData[ DZ1 ]->GetValue() ), - v2( myData[ DX2 ]->GetValue(), myData[ DY2 ]->GetValue(), myData[ DZ2 ]->GetValue() ); - - bool isOk = false; - // we will got exception if the magnitude of any of the 2 vectors <= gp::Resolution() - // Vectors shouldn't be checked for being orthogonal here! - if ( v1.Magnitude() > gp::Resolution() && v2.Magnitude() > gp::Resolution() ) { - isOk = !v1.IsParallel( v2, Precision::Angular() ); - if ( !isOk ) - msg += tr( "VEC_PARALLEL" ); - } - - switch ( id ) - { - case 0: - return isOk; - case 1: - return !Group1->LineEdit1->text().isEmpty() && isOk; - case 2: - return !Group2->LineEdit1->text().isEmpty() && - !Group2->LineEdit2->text().isEmpty() && - !Group2->LineEdit3->text().isEmpty() && isOk; - } - return false; -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool BasicGUI_MarkerDlg::execute( ObjectList& objects ) -{ - GEOM::GEOM_Object_var anObj = GEOM::GEOM_IBasicOperations::_narrow( - getOperation() )->MakeMarker( myData[ X ]->GetValue(), myData[ Y ]->GetValue(), myData[ Z ]->GetValue(), - myData[ DX1 ]->GetValue(), myData[ DY1 ]->GetValue(), myData[ DZ1 ]->GetValue(), - myData[ DX2 ]->GetValue(), myData[ DY2 ]->GetValue(), myData[ DZ2 ]->GetValue() ); - - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - - return true; -} - -//================================================================================= -// function : closeEvent -// purpose : -//================================================================================= -void BasicGUI_MarkerDlg::closeEvent( QCloseEvent* e ) -{ - GEOMBase_Skeleton::closeEvent( e ); -} - -//================================================================================= -// function : onValueChanged -// purpose : -//================================================================================= -void BasicGUI_MarkerDlg::onValueChanged( double ) -{ - displayPreview(); -} - -//================================================================================= -// function : displayPreview -// purpose : -//================================================================================= -void BasicGUI_MarkerDlg::displayPreview ( const bool activate, - const bool update, - const bool toRemoveFromEngine, - const double lineWidth ) -{ - if ( !myBlockPreview ) - { - GEOMBase_Skeleton::displayPreview( activate, update, toRemoveFromEngine, lineWidth ); - if ( myConstructorId == 0 ) - { - GEOMBase_Skeleton::activate( GEOM_MARKER ); - } - } -} - - - - - - - - - - - - - - diff --git a/src/BasicGUI/BasicGUI_MarkerDlg.h b/src/BasicGUI/BasicGUI_MarkerDlg.h deleted file mode 100644 index 7b3cf3bde..000000000 --- a/src/BasicGUI/BasicGUI_MarkerDlg.h +++ /dev/null @@ -1,98 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BasicGUI_MarkerDlg.h -// Author : Sergey LITONIN -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_Marker_H -#define DIALOGBOX_Marker_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_1Sel_QTD.h" -#include "DlgRef_3Sel_QTD.h" - -#include - -class DlgRef_SpinBox; - -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define BASICGUI_WNT_EXPORT __declspec( dllexport ) -#else -#define BASICGUI_WNT_EXPORT -#endif - -class BasicGUI_MarkerDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -private: - enum { X, Y, Z, DX1, DY1, DZ1, DX2, DY2, DZ2 }; - typedef QMap< int, DlgRef_SpinBox* > DataMap; - -public: - BasicGUI_MarkerDlg( GeometryGUI* theGeometryGUI, QWidget* ); - virtual ~BasicGUI_MarkerDlg(); - void Init(); - -protected: - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& ); - virtual bool execute( ObjectList& objects ); - virtual void closeEvent( QCloseEvent* e ); - virtual void displayPreview ( const bool activate = false, - const bool update = true, - const bool toRemoveFromEngine = true, - const double lineWidth = -1 ); - -private : - void enterEvent( QEvent* e ); - void onSelectionDone0(); - - GeometryGUI* myGeometryGUI; - -private slots: - void onOk(); - void onClose(); - bool onApply(); - void onActivate(); - void onDeactivate(); - void onSelectionDone(); - void onValueChanged( double ); - void ConstructorsClicked( int ); - void LineEditReturnPressed(); - void SetEditCurrentArgument(); - -private: - DataMap myData; - int myConstructorId; - int myBlockPreview; - - QGroupBox* aMainGrp; - DlgRef_1Sel_QTD* Group1; - DlgRef_3Sel_QTD* Group2; - -}; - -#endif // DIALOGBOX_Marker_H diff --git a/src/BasicGUI/BasicGUI_PlaneDlg.cxx b/src/BasicGUI/BasicGUI_PlaneDlg.cxx deleted file mode 100644 index eee53f1d4..000000000 --- a/src/BasicGUI/BasicGUI_PlaneDlg.cxx +++ /dev/null @@ -1,507 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BasicGUI_PlaneDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "BasicGUI_PlaneDlg.h" - -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include - -#include "GEOMImpl_Types.hxx" - -using namespace std; - -//================================================================================= -// class : BasicGUI_PlaneDlg() -// purpose : Constructs a BasicGUI_PlaneDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -BasicGUI_PlaneDlg::BasicGUI_PlaneDlg(GeometryGUI* theGeometryGUI, QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu), myGeometryGUI(theGeometryGUI) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_PLANE_PV"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_PLANE_3PNTS"))); - QPixmap image2(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_PLANE_FACE"))); - QPixmap image3(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_PLANE_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_PLANE")); - RadioButton1->setPixmap(image0); - RadioButton2->setPixmap(image1); - RadioButton3->setPixmap(image2); - - GroupPntDir = new DlgRef_2Sel1Spin(this, "GroupPointDirection"); - GroupPntDir->GroupBox1->setTitle(tr("GEOM_PLANE_PV")); - GroupPntDir->TextLabel1->setText(tr("GEOM_POINT")); - GroupPntDir->TextLabel2->setText(tr("GEOM_VECTOR")); - GroupPntDir->TextLabel3->setText(tr("GEOM_PLANE_SIZE")); - GroupPntDir->PushButton1->setPixmap(image3); - GroupPntDir->PushButton2->setPixmap(image3); - GroupPntDir->LineEdit1->setReadOnly( true ); - GroupPntDir->LineEdit2->setReadOnly( true ); - - Group3Pnts = new DlgRef_3Sel1Spin(this, "Group3Pnts"); - Group3Pnts->GroupBox1->setTitle(tr("GEOM_3_POINTS")); - Group3Pnts->TextLabel1->setText(tr("GEOM_POINT1")); - Group3Pnts->TextLabel2->setText(tr("GEOM_POINT2")); - Group3Pnts->TextLabel3->setText(tr("GEOM_POINT3")); - Group3Pnts->TextLabel4->setText(tr("GEOM_PLANE_SIZE")); - Group3Pnts->PushButton1->setPixmap(image3); - Group3Pnts->PushButton2->setPixmap(image3); - Group3Pnts->PushButton3->setPixmap(image3); - - Group3Pnts->LineEdit1->setReadOnly( true ); - Group3Pnts->LineEdit2->setReadOnly( true ); - Group3Pnts->LineEdit3->setReadOnly( true ); - - GroupFace = new DlgRef_1Sel1Spin(this, "GroupFace"); - GroupFace->GroupBox1->setTitle(tr("GEOM_FACE")); - GroupFace->TextLabel1->setText(tr("GEOM_SELECTION")); - GroupFace->TextLabel2->setText(tr("GEOM_PLANE_SIZE")); - GroupFace->PushButton1->setPixmap(image3); - - GroupFace->LineEdit1->setReadOnly( true ); - - Layout1->addWidget(GroupPntDir, 2, 0); - Layout1->addWidget(Group3Pnts, 2, 0); - Layout1->addWidget(GroupFace, 2, 0); - /***************************************************************/ - - Init(); -} - - -//================================================================================= -// function : ~BasicGUI_PlaneDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -BasicGUI_PlaneDlg::~BasicGUI_PlaneDlg() -{ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void BasicGUI_PlaneDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = GroupPntDir->LineEdit1; - - myPoint = myDir = myPoint1 = myPoint2 = myPoint3 = myFace = GEOM::GEOM_Object::_nil(); - - // myGeometryGUI->SetState( 0 ); - - /* Get setting of step value from file configuration */ - SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); - double aStep = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100); - - double aTrimSize = 2000.0; - - /* min, max, step and decimals for spin boxes */ - GroupPntDir->SpinBox_DX->RangeStepAndValidator( 0.001, 10000000.0, aStep, 3 ); - GroupPntDir->SpinBox_DX->SetValue( aTrimSize ); - Group3Pnts->SpinBox_DX->RangeStepAndValidator(0.001, 10000000.0, aStep, 3); - Group3Pnts->SpinBox_DX->SetValue( aTrimSize ); - GroupFace->SpinBox_DX->RangeStepAndValidator(0.001, 10000000.0, aStep, 3); - GroupFace->SpinBox_DX->SetValue( aTrimSize ); - - /* signals and slots connections */ - connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel())); - connect(myGeometryGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog())); - connect(myGeometryGUI, SIGNAL(SignalCloseAllDialogs()), this, SLOT(ClickOnCancel())); - - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - connect(GroupConstructors, SIGNAL(clicked(int)), this, SLOT(ConstructorsClicked(int))); - - connect(GroupPntDir->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupPntDir->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(Group3Pnts->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(Group3Pnts->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(Group3Pnts->PushButton3, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupFace->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - - connect(GroupPntDir->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(GroupPntDir->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(Group3Pnts->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(Group3Pnts->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(Group3Pnts->LineEdit3, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(GroupFace->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect(GroupPntDir->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - connect(Group3Pnts->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - connect(GroupFace->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupPntDir->SpinBox_DX, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), Group3Pnts->SpinBox_DX, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupFace->SpinBox_DX, SLOT(SetStep(double))); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - initName( tr( "GEOM_PLANE" ) ); - - Group3Pnts->hide(); - GroupFace->hide(); - ConstructorsClicked( 0 ); -} - - -//================================================================================= -// function : ConstructorsClicked() -// purpose : Radio button management -//================================================================================= -void BasicGUI_PlaneDlg::ConstructorsClicked(int constructorId) -{ - disconnect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), 0, this, 0); - myPoint = myDir = myPoint1 = myPoint2 = myPoint3 = myFace = GEOM::GEOM_Object::_nil(); - - switch ( constructorId ) - { - case 0: /* plane from a point and a direction (vector, edge...) */ - { - Group3Pnts->hide(); - GroupFace->hide(); - resize(0, 0); - GroupPntDir->show(); - - myEditCurrentArgument = GroupPntDir->LineEdit1; - GroupPntDir->LineEdit1->setText(tr("")); - GroupPntDir->LineEdit2->setText(tr("")); - - /* for the first argument */ - globalSelection( GEOM_POINT ); - break; - } - case 1: /* plane from 3 points */ - { - GroupPntDir->hide(); - GroupFace->hide(); - resize(0, 0); - Group3Pnts->show(); - - myEditCurrentArgument = Group3Pnts->LineEdit1; - Group3Pnts->LineEdit1->setText(""); - Group3Pnts->LineEdit2->setText(""); - Group3Pnts->LineEdit3->setText(""); - - /* for the first argument */ - globalSelection( GEOM_POINT ); - break; - } - case 2: /* plane from a planar face selection */ - { - GroupPntDir->hide(); - Group3Pnts->hide(); - resize(0, 0); - GroupFace->show(); - - myEditCurrentArgument = GroupFace->LineEdit1; - GroupFace->LineEdit1->setText(tr("")); - - /* for the first argument */ - globalSelection( GEOM_PLANE ); - break; - } - } - - myEditCurrentArgument->setFocus(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void BasicGUI_PlaneDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool BasicGUI_PlaneDlg::ClickOnApply() -{ - if ( !onAccept() ) - return false; - - initName(); - ConstructorsClicked( getConstructorId() ); - return true; -} - -//======================================================================= -// function : ClickOnCancel() -// purpose : -//======================================================================= -void BasicGUI_PlaneDlg::ClickOnCancel() -{ - GEOMBase_Skeleton::ClickOnCancel(); -} - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection has changed -//================================================================================= -void BasicGUI_PlaneDlg::SelectionIntoArgument() -{ - myEditCurrentArgument->setText(""); - - if ( IObjectCount() != 1 ) - { - if ( myEditCurrentArgument == GroupPntDir->LineEdit1 ) myPoint = GEOM::GEOM_Object::_nil(); - else if ( myEditCurrentArgument == GroupPntDir->LineEdit2 ) myDir = GEOM::GEOM_Object::_nil(); - else if ( myEditCurrentArgument == Group3Pnts->LineEdit1 ) myPoint1 = GEOM::GEOM_Object::_nil(); - else if ( myEditCurrentArgument == Group3Pnts->LineEdit2 ) myPoint2 = GEOM::GEOM_Object::_nil(); - else if ( myEditCurrentArgument == Group3Pnts->LineEdit3 ) myPoint3 = GEOM::GEOM_Object::_nil(); - else if ( myEditCurrentArgument == GroupFace->LineEdit1 ) myFace = GEOM::GEOM_Object::_nil(); - return; - } - - // nbSel == 1 - Standard_Boolean aRes = Standard_False; - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), aRes ); - if ( !CORBA::is_nil( aSelectedObject ) && aRes ) - { - myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) ); - if ( myEditCurrentArgument == GroupPntDir->LineEdit1 ) myPoint = aSelectedObject; - else if ( myEditCurrentArgument == GroupPntDir->LineEdit2 ) myDir = aSelectedObject; - else if ( myEditCurrentArgument == Group3Pnts->LineEdit1 ) myPoint1 = aSelectedObject; - else if ( myEditCurrentArgument == Group3Pnts->LineEdit2 ) myPoint2 = aSelectedObject; - else if ( myEditCurrentArgument == Group3Pnts->LineEdit3 ) myPoint3 = aSelectedObject; - else if ( myEditCurrentArgument == GroupFace->LineEdit1 ) myFace = aSelectedObject; - } - - displayPreview(); -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void BasicGUI_PlaneDlg::SetEditCurrentArgument() -{ - QPushButton* send = (QPushButton*)sender(); - - if ( send == GroupPntDir->PushButton1 ) myEditCurrentArgument = GroupPntDir->LineEdit1; - else if ( send == GroupPntDir->PushButton2 ) myEditCurrentArgument = GroupPntDir->LineEdit2; - else if ( send == Group3Pnts->PushButton1 ) myEditCurrentArgument = Group3Pnts->LineEdit1; - else if ( send == Group3Pnts->PushButton2 ) myEditCurrentArgument = Group3Pnts->LineEdit2; - else if ( send == Group3Pnts->PushButton3 ) myEditCurrentArgument = Group3Pnts->LineEdit3; - else if ( send == GroupFace->PushButton1 ) myEditCurrentArgument = GroupFace->LineEdit1; - - myEditCurrentArgument->setFocus(); - - if ( myEditCurrentArgument == GroupPntDir->LineEdit2 ) - globalSelection( GEOM_LINE ); - else if ( myEditCurrentArgument == GroupFace->LineEdit1 ) - globalSelection( GEOM_PLANE ); - else - globalSelection( GEOM_POINT ); - - SelectionIntoArgument(); -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void BasicGUI_PlaneDlg::LineEditReturnPressed() -{ - QLineEdit* send = (QLineEdit*)sender(); - if ( send == GroupPntDir->LineEdit1 || - send == GroupPntDir->LineEdit2 || - send == Group3Pnts->LineEdit1 || - send == Group3Pnts->LineEdit2 || - send == Group3Pnts->LineEdit3 || - send == GroupFace->LineEdit1 ) - { - myEditCurrentArgument = send; - GEOMBase_Skeleton::LineEditReturnPressed(); - } -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void BasicGUI_PlaneDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - // myGeometryGUI->SetState( 0 ); - - ConstructorsClicked( getConstructorId() ); -} - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : public slot to deactivate if active -//================================================================================= -void BasicGUI_PlaneDlg::DeactivateActiveDialog() -{ - // myGeometryGUI->SetState( -1 ); - GEOMBase_Skeleton::DeactivateActiveDialog(); -} - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void BasicGUI_PlaneDlg::enterEvent(QEvent* e) -{ - if ( !GroupConstructors->isEnabled() ) - ActivateThisDialog(); -} - - -//================================================================================= -// function : ValueChangedInSpinBox() -// purpose : -//================================================================================= -void BasicGUI_PlaneDlg::ValueChangedInSpinBox(double newValue) -{ - displayPreview(); -} - -//================================================================================= -// function : getSize() -// purpose : -//================================================================================= -double BasicGUI_PlaneDlg::getSize() const -{ - switch ( getConstructorId() ) - { - case 0 : return GroupPntDir->SpinBox_DX->GetValue(); - case 1 : return Group3Pnts->SpinBox_DX->GetValue(); - case 2 : return GroupFace->SpinBox_DX->GetValue(); - } - return 0.; -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr BasicGUI_PlaneDlg::createOperation() -{ - return myGeometryGUI->GetGeomGen()->GetIBasicOperations( getStudyId() ); -} - -//================================================================================= -// function : isEqual -// purpose : it may also be needed to check for min distance between gp_Pnt-s... -//================================================================================= -static bool isEqual( const GEOM::GEOM_Object_var& thePnt1, const GEOM::GEOM_Object_var& thePnt2 ) -{ - return thePnt1->_is_equivalent( thePnt2 ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool BasicGUI_PlaneDlg::isValid( QString& msg ) -{ - const int id = getConstructorId(); - if ( getSize() <= 0 ) - { - msg = QString( "Please, enter size greater than 0." ); - return false; - } - if ( id == 0 ) - return !CORBA::is_nil( myPoint ) && !CORBA::is_nil( myDir ); - else if ( id == 1 ) - return !CORBA::is_nil( myPoint1 ) && !CORBA::is_nil( myPoint2 ) && !CORBA::is_nil( myPoint3 ) && - !isEqual( myPoint1, myPoint2 ) && !isEqual( myPoint1, myPoint3 ) && !isEqual( myPoint2, myPoint3 ); - else if ( id == 2 ) - return !CORBA::is_nil( myFace ); - return false; -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool BasicGUI_PlaneDlg::execute( ObjectList& objects ) -{ - bool res = false; - - GEOM::GEOM_Object_var anObj; - - switch ( getConstructorId() ) - { - case 0 : - anObj = GEOM::GEOM_IBasicOperations::_narrow( getOperation() )->MakePlanePntVec( myPoint, myDir, getSize() ); - res = true; - break; - case 1 : - anObj = GEOM::GEOM_IBasicOperations::_narrow( getOperation() )->MakePlaneThreePnt( myPoint1, myPoint2, myPoint3, getSize() ); - res = true; - break; - case 2 : - anObj = GEOM::GEOM_IBasicOperations::_narrow( getOperation() )->MakePlaneFace( myFace, getSize() ); - res = true; - break; - } - - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - - return res; -} - -//================================================================================= -// function : closeEvent -// purpose : -//================================================================================= -void BasicGUI_PlaneDlg::closeEvent( QCloseEvent* e ) -{ - // myGeometryGUI->SetState( -1 ); - GEOMBase_Skeleton::closeEvent( e ); -} - diff --git a/src/BasicGUI/BasicGUI_PlaneDlg.h b/src/BasicGUI/BasicGUI_PlaneDlg.h deleted file mode 100644 index cf3c65c4b..000000000 --- a/src/BasicGUI/BasicGUI_PlaneDlg.h +++ /dev/null @@ -1,92 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BasicGUI_PlaneDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_PLANE_H -#define DIALOGBOX_PLANE_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_1Sel1Spin.h" -#include "DlgRef_2Sel1Spin.h" -#include "DlgRef_3Sel1Spin.h" - -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define BASICGUI_WNT_EXPORT __declspec( dllexport ) -#else -#define BASICGUI_WNT_EXPORT -#endif - -//================================================================================= -// class : BasicGUI_PlaneDlg -// purpose : -//================================================================================= -class BasicGUI_PlaneDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - BasicGUI_PlaneDlg( GeometryGUI* theGeometryGUI, QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~BasicGUI_PlaneDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& ); - virtual bool execute( ObjectList& objects ); - - virtual void closeEvent( QCloseEvent* e ); - -private : - void Init(); - void enterEvent(QEvent* e); - double getSize() const; - - GeometryGUI* myGeometryGUI; - - GEOM::GEOM_Object_var myPoint, myDir, myPoint1, myPoint2, myPoint3, myFace; - - DlgRef_2Sel1Spin* GroupPntDir; - DlgRef_3Sel1Spin* Group3Pnts; - DlgRef_1Sel1Spin* GroupFace; - -private slots: - void ClickOnOk(); - void ClickOnCancel(); - bool ClickOnApply(); - - void ActivateThisDialog(); - void DeactivateActiveDialog(); - - void SelectionIntoArgument(); - void LineEditReturnPressed(); - void SetEditCurrentArgument(); - void ConstructorsClicked(int constructorId); - void ValueChangedInSpinBox(double newValue); - -}; - -#endif // DIALOGBOX_PLANE_H diff --git a/src/BasicGUI/BasicGUI_PointDlg.cxx b/src/BasicGUI/BasicGUI_PointDlg.cxx deleted file mode 100644 index 29b7bf62e..000000000 --- a/src/BasicGUI/BasicGUI_PointDlg.cxx +++ /dev/null @@ -1,571 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BasicGUI_PointDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "BasicGUI_PointDlg.h" - -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include "GEOMImpl_Types.hxx" - -#include - -#include "utilities.h" - -#include -#include -#include -#include -#include -#include - -#include -using namespace std; -//================================================================================= -// class : BasicGUI_PointDlg() -// purpose : Constructs a BasicGUI_PointDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -BasicGUI_PointDlg::BasicGUI_PointDlg(GeometryGUI* theGeometryGUI, QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, fl ), myGeometryGUI(theGeometryGUI) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_POINT"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_POINT_EDGE"))); - QPixmap image2(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - QPixmap image3(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_POINT_REF"))); - - setCaption(tr("GEOM_POINT_TITLE")); - - QGroupBox* aFrame = new QGroupBox( 1, Qt::Horizontal, this ); - aFrame->setInsideMargin( 0 ); - aFrame->setFrameStyle( QFrame::NoFrame ); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_POINTS")); - RadioButton1->setPixmap(image0); - RadioButton2->setPixmap(image3); - RadioButton3->setPixmap(image1); - - GroupXYZ = new DlgRef_3Spin( aFrame, "GroupXYZ" ); - GroupXYZ->GroupBox1->setTitle(tr("GEOM_COORDINATES")); - GroupXYZ->TextLabel1->setText(tr("GEOM_X")); - GroupXYZ->TextLabel2->setText(tr("GEOM_Y")); - GroupXYZ->TextLabel3->setText(tr("GEOM_Z")); - - GroupOnCurve = new DlgRef_1Sel1Spin( aFrame, "GroupOnCurve" ); - GroupOnCurve->GroupBox1->setTitle(tr("GEOM_PARAM_POINT")); - GroupOnCurve->TextLabel1->setText(tr("GEOM_EDGE")); - GroupOnCurve->TextLabel2->setText(tr("GEOM_PARAMETER")); - GroupOnCurve->PushButton1->setPixmap(image2); - - GroupRefPoint = new DlgRef_1Sel3Spin( aFrame, "GoupRefPoint" ); - GroupRefPoint->GroupBox1->setTitle(tr("GEOM_REF_POINT")); - GroupRefPoint->TextLabel1->setText(tr("GEOM_POINT")); - GroupRefPoint->PushButton1->setPixmap(image2); - GroupRefPoint->TextLabel2->setText(tr("GEOM_DX")); - GroupRefPoint->TextLabel3->setText(tr("GEOM_DY")); - GroupRefPoint->TextLabel4->setText(tr("GEOM_DZ")); - - Layout1->addWidget( aFrame, 2, 0 ); - /***************************************************************/ - - myCoordGrp = new QGroupBox( 2, Qt::Horizontal, tr( "GEOM_COORDINATES" ), aFrame ); - new QLabel( tr( "GEOM_X" ), myCoordGrp ); - myX = new QLineEdit( myCoordGrp ); - new QLabel( tr( "GEOM_Y" ), myCoordGrp ); - myY = new QLineEdit( myCoordGrp ); - new QLabel( tr( "GEOM_Z" ), myCoordGrp ); - myZ = new QLineEdit( myCoordGrp ); - - myX->setReadOnly( true ); - myY->setReadOnly( true ); - myZ->setReadOnly( true ); - - myX->setEnabled( false ); - myY->setEnabled( false ); - myZ->setEnabled( false ); - - QPalette aPal = myX->palette(); - aPal.setColor( QPalette::Disabled, QColorGroup::Text, QColor( 0, 0, 0 ) ) ; - myX->setPalette( aPal ); - myY->setPalette( aPal ); - myZ->setPalette( aPal ); - - Init(); -} - - -//======================================================================= -// function : ~BasicGUI_PointDlg() -// purpose : Destructor -//======================================================================= -BasicGUI_PointDlg::~BasicGUI_PointDlg() -{ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void BasicGUI_PointDlg::Init() -{ - GroupOnCurve->LineEdit1->setReadOnly( true ); - GroupRefPoint->LineEdit1->setReadOnly( true ); - - myEdge = GEOM::GEOM_Object::_nil(); - myRefPoint = GEOM::GEOM_Object::_nil(); - - myEditCurrentArgument = 0; - - // myGeometryGUI->SetState( 0 ); - - /* Get setting of step value from file configuration */ - SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); - double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100); - - /* min, max, step and decimals for spin boxes */ - GroupXYZ->SpinBox_DX->RangeStepAndValidator(-999.999, 999.999, step, 3); - GroupXYZ->SpinBox_DY->RangeStepAndValidator(-999.999, 999.999, step, 3); - GroupXYZ->SpinBox_DZ->RangeStepAndValidator(-999.999, 999.999, step, 3); - GroupXYZ->SpinBox_DX->SetValue(0.0); - GroupXYZ->SpinBox_DY->SetValue(0.0); - GroupXYZ->SpinBox_DZ->SetValue(0.0); - - GroupRefPoint->SpinBox_DX->RangeStepAndValidator(-999.999, 999.999, step, 3); - GroupRefPoint->SpinBox_DY->RangeStepAndValidator(-999.999, 999.999, step, 3); - GroupRefPoint->SpinBox_DZ->RangeStepAndValidator(-999.999, 999.999, step, 3); - GroupRefPoint->SpinBox_DX->SetValue(0.0); - GroupRefPoint->SpinBox_DY->SetValue(0.0); - GroupRefPoint->SpinBox_DZ->SetValue(0.0); - - step = 0.1; - GroupOnCurve->SpinBox_DX->RangeStepAndValidator(0., 1., step, 3); - GroupOnCurve->SpinBox_DX->SetValue( 0.5 ); - - /* signals and slots connections */ - connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel())); - connect(myGeometryGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog())); - connect(myGeometryGUI, SIGNAL(SignalCloseAllDialogs()), this, SLOT(ClickOnCancel())); - - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - connect(GroupConstructors, SIGNAL(clicked(int)), this, SLOT(ConstructorsClicked(int))); - - connect(GroupOnCurve->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupOnCurve->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect(GroupOnCurve->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - connect(GroupXYZ->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - connect(GroupXYZ->SpinBox_DY, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - connect(GroupXYZ->SpinBox_DZ, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - connect(GroupRefPoint->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - connect(GroupRefPoint->SpinBox_DY, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - connect(GroupRefPoint->SpinBox_DZ, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupOnCurve->SpinBox_DX, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupXYZ->SpinBox_DX, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupXYZ->SpinBox_DY, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupXYZ->SpinBox_DZ, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupRefPoint->SpinBox_DX, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupRefPoint->SpinBox_DY, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupRefPoint->SpinBox_DZ, SLOT(SetStep(double))); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - initName( tr("GEOM_VERTEX") ); - - ConstructorsClicked( 0 ); -} - - -//================================================================================= -// function : ConstructorsClicked() -// purpose : Radio button management -//================================================================================= -void BasicGUI_PointDlg::ConstructorsClicked(int constructorId) -{ - switch ( constructorId ) - { - case 0: - { - localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX ); - - GroupRefPoint->hide(); - GroupOnCurve->hide(); - - GroupXYZ->show(); - - myCoordGrp->hide(); - break; - } - case 1: - { - myEditCurrentArgument = GroupRefPoint->LineEdit1; - myEditCurrentArgument->setText(""); - myRefPoint = GEOM::GEOM_Object::_nil(); - - globalSelection( GEOM_POINT ); - - GroupXYZ->hide(); - GroupOnCurve->hide(); - - GroupRefPoint->show(); - - myCoordGrp->show(); - break; - } - case 2: - { - myEditCurrentArgument = GroupOnCurve->LineEdit1; - myEditCurrentArgument->setText(""); - myEdge = GEOM::GEOM_Object::_nil(); - - globalSelection( GEOM_EDGE ); - - GroupXYZ->hide(); - GroupRefPoint->hide(); - - GroupOnCurve->show(); - - myCoordGrp->show(); - break; - } - } - - myX->setText( "" ); - myY->setText( "" ); - myZ->setText( "" ); - - qApp->processEvents(); - updateGeometry(); - resize( minimumSize() ); - - SelectionIntoArgument(); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void BasicGUI_PointDlg::ClickOnOk() -{ - if ( onAccept() ) - ClickOnCancel(); -} - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool BasicGUI_PointDlg::ClickOnApply() -{ - if ( !onAccept() ) - return false; - - initName(); - ConstructorsClicked( getConstructorId() ); - return true; -} - - -//======================================================================= -// function : ClickOnCancel() -// purpose : -//======================================================================= -void BasicGUI_PointDlg::ClickOnCancel() -{ - GEOMBase_Skeleton::ClickOnCancel(); -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection as changed (for constructors not using local context) -//================================================================================= -void BasicGUI_PointDlg::SelectionIntoArgument() -{ - const int id = getConstructorId(); - - if ( ( id == 1 || id == 2 ) && myEditCurrentArgument != 0 ) - { - myEditCurrentArgument->setText(""); - myX->setText( "" ); - myY->setText( "" ); - myZ->setText( "" ); - myRefPoint = myEdge = GEOM::GEOM_Object::_nil(); - } - - if ( IObjectCount() == 1 ) - { - Standard_Boolean aRes = Standard_False; - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), aRes ); - if ( !CORBA::is_nil( aSelectedObject ) && aRes ) - { - if ( id == 0 ) - { - // get CORBA reference to data object - TopoDS_Shape aShape = myGeometryGUI->GetShapeReader().GetShape( myGeometryGUI->GetGeomGen(), aSelectedObject ); - if ( !aShape.IsNull() && aShape.ShapeType() == TopAbs_VERTEX ) - { - gp_Pnt aPnt = BRep_Tool::Pnt( TopoDS::Vertex( aShape ) ); - GroupXYZ->SpinBox_DX->SetValue( aPnt.X() ); - GroupXYZ->SpinBox_DY->SetValue( aPnt.Y() ); - GroupXYZ->SpinBox_DZ->SetValue( aPnt.Z() ); - } - } - else if ( id == 1 ) - { - myRefPoint = aSelectedObject; - GroupRefPoint->LineEdit1->setText( GEOMBase::GetName( aSelectedObject ) ); - } - else if ( id == 2 ) - { - myEdge = aSelectedObject; - GroupOnCurve->LineEdit1->setText( GEOMBase::GetName( aSelectedObject ) ); - } - } - } - - displayPreview(); -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void BasicGUI_PointDlg::LineEditReturnPressed() -{ - QLineEdit* send = (QLineEdit*)sender(); - if ( send == GroupRefPoint->LineEdit1 || send == GroupOnCurve->LineEdit1 ) - { - myEditCurrentArgument = send; - GEOMBase_Skeleton::LineEditReturnPressed(); - } -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void BasicGUI_PointDlg::SetEditCurrentArgument() -{ - QPushButton* send = (QPushButton*)sender(); - - if ( send == GroupRefPoint->PushButton1 ) - { - GroupRefPoint->LineEdit1->setFocus(); - myEditCurrentArgument = GroupRefPoint->LineEdit1; - - globalSelection( GEOM_POINT ); - } - else if ( send == GroupOnCurve->PushButton1 ) - { - GroupOnCurve->LineEdit1->setFocus(); - myEditCurrentArgument = GroupOnCurve->LineEdit1; - - globalSelection( GEOM_EDGE ); - } -} - - -//================================================================================= -// function : enterEvent() -// purpose : to reactivate this dialog box when mouse enter onto the window -//================================================================================= -void BasicGUI_PointDlg::enterEvent(QEvent* e) -{ - if ( !GroupConstructors->isEnabled() ) - ActivateThisDialog(); -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void BasicGUI_PointDlg::ActivateThisDialog( ) -{ - GEOMBase_Skeleton::ActivateThisDialog(); - // myGeometryGUI->SetState( 0 ); - ConstructorsClicked( getConstructorId() ); -} - - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : public slot to deactivate if active -//================================================================================= -void BasicGUI_PointDlg::DeactivateActiveDialog() -{ - // myGeometryGUI->SetState( -1 ); - GEOMBase_Skeleton::DeactivateActiveDialog(); -} - - -//================================================================================= -// function : ValueChangedInSpinBox() -// purpose : -//================================================================================= -void BasicGUI_PointDlg::ValueChangedInSpinBox(double newValue) -{ - displayPreview(); -} - -//======================================================================= -// funcion : getParameter() -// purpose : -//======================================================================= -double BasicGUI_PointDlg::getParameter() const -{ - return GroupOnCurve->SpinBox_DX->GetValue(); -} - -//================================================================================= -// function : OnPointSelected -// purpose : -//================================================================================= -void BasicGUI_PointDlg::OnPointSelected( const gp_Pnt& thePnt ) -{ - if ( getConstructorId() == 0 ) - { - GroupXYZ->SpinBox_DX->SetValue( thePnt.X() ); - GroupXYZ->SpinBox_DY->SetValue( thePnt.Y() ); - GroupXYZ->SpinBox_DZ->SetValue( thePnt.Z() ); - - displayPreview(); - } -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr BasicGUI_PointDlg::createOperation() -{ - return myGeometryGUI->GetGeomGen()->GetIBasicOperations( getStudyId() ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool BasicGUI_PointDlg::isValid( QString& msg ) -{ - const int id = getConstructorId(); - if ( id == 0 ) - return true; - else if ( id == 1 ) - return !myRefPoint->_is_nil(); - else if ( id == 2 ) - return !myEdge->_is_nil(); - return false; -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool BasicGUI_PointDlg::execute( ObjectList& objects ) -{ - bool res = false; - - GEOM::GEOM_Object_var anObj; - - switch ( getConstructorId() ) - { - case 0 : - { - double x = GroupXYZ->SpinBox_DX->GetValue(); - double y = GroupXYZ->SpinBox_DY->GetValue(); - double z = GroupXYZ->SpinBox_DZ->GetValue(); - - anObj = GEOM::GEOM_IBasicOperations::_narrow( getOperation() )->MakePointXYZ( x,y,z ); - res = true; - break; - } - case 1 : - { - double dx = GroupRefPoint->SpinBox_DX->GetValue(); - double dy = GroupRefPoint->SpinBox_DY->GetValue(); - double dz = GroupRefPoint->SpinBox_DZ->GetValue(); - - anObj = GEOM::GEOM_IBasicOperations::_narrow( getOperation() )->MakePointWithReference( myRefPoint, dx, dy, dz ); - res = true; - break; - } - case 2 : - anObj = GEOM::GEOM_IBasicOperations::_narrow( getOperation() )->MakePointOnCurve( myEdge, getParameter() ); - res = true; - break; - } - - if ( getConstructorId() == 1 || getConstructorId() == 2 ) - { - TopoDS_Shape aShape; - if ( GEOMBase::GetShape( anObj, aShape ) && !aShape.IsNull() && aShape.ShapeType() == TopAbs_VERTEX ) - { - gp_Pnt aPnt = BRep_Tool::Pnt( TopoDS::Vertex( aShape ) ); - myX->setText( QString( "%1" ).arg( aPnt.X() ) ); - myY->setText( QString( "%1" ).arg( aPnt.Y() ) ); - myZ->setText( QString( "%1" ).arg( aPnt.Z() ) ); - } - else - { - myX->setText( "" ); - myY->setText( "" ); - myZ->setText( "" ); - } - } - - if ( !anObj->_is_nil() ) - { - //printf( "--> a valid point is created\n" ); - objects.push_back( anObj._retn() ); - } - - return res; -} - -//================================================================================= -// function : closeEvent -// purpose : -//================================================================================= -void BasicGUI_PointDlg::closeEvent( QCloseEvent* e ) -{ - // myGeometryGUI->SetState( -1 ); - GEOMBase_Skeleton::closeEvent( e ); -} diff --git a/src/BasicGUI/BasicGUI_PointDlg.h b/src/BasicGUI/BasicGUI_PointDlg.h deleted file mode 100644 index d05367203..000000000 --- a/src/BasicGUI/BasicGUI_PointDlg.h +++ /dev/null @@ -1,101 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BasicGUI_PointDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_POINT_H -#define DIALOGBOX_POINT_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_1Sel1Spin.h" -#include "DlgRef_3Spin.h" -#include "DlgRef_1Sel3Spin.h" - -class QLineEdit; -class QGroupBox; - -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define BASICGUI_WNT_EXPORT __declspec( dllexport ) -#else -#define BASICGUI_WNT_EXPORT -#endif -//================================================================================= -// class : BasicGUI_PointDlg -// purpose : -//================================================================================= -class BasicGUI_PointDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - BasicGUI_PointDlg(GeometryGUI* theGeometryGUI, QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - - ~BasicGUI_PointDlg(); - - bool acceptMouseEvent() const { return ( getConstructorId() == 0 ); }; - void OnPointSelected( const gp_Pnt& ); // called by BasicGUI::OnMousePress() - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& ); - virtual bool execute( ObjectList& objects ); - - virtual void closeEvent( QCloseEvent* e ); - -private : - void Init(); - void enterEvent(QEvent* e); - double getParameter() const; - - GeometryGUI* myGeometryGUI; - - GEOM::GEOM_Object_var myEdge; - GEOM::GEOM_Object_var myRefPoint; - - DlgRef_3Spin* GroupXYZ; - DlgRef_1Sel3Spin* GroupRefPoint; - DlgRef_1Sel1Spin* GroupOnCurve; - - QGroupBox* myCoordGrp; - QLineEdit* myX; - QLineEdit* myY; - QLineEdit* myZ; - -private slots: - void ClickOnOk(); - void ClickOnCancel(); - bool ClickOnApply(); - void ActivateThisDialog(); - void DeactivateActiveDialog(); - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - void ConstructorsClicked(int constructorId); - void ValueChangedInSpinBox(double newValue); -}; - -#endif // DIALOGBOX_POINT_H diff --git a/src/BasicGUI/BasicGUI_VectorDlg.cxx b/src/BasicGUI/BasicGUI_VectorDlg.cxx deleted file mode 100644 index 3581fca1a..000000000 --- a/src/BasicGUI/BasicGUI_VectorDlg.cxx +++ /dev/null @@ -1,416 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BasicGUI_VectorDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "BasicGUI_VectorDlg.h" - -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include - -#include "GEOMImpl_Types.hxx" - -#include "utilities.h" - -using namespace std; - -//================================================================================= -// class : BasicGUI_VectorDlg() -// purpose : Constructs a BasicGUI_VectorDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -BasicGUI_VectorDlg::BasicGUI_VectorDlg(GeometryGUI* theGeometryGUI, QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, fl ), myGeometryGUI(theGeometryGUI) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_VECTOR_2P"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_VECTOR_DXYZ"))); - QPixmap image2(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_VECTOR_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_VECTOR")); - RadioButton1->setPixmap(image0); - RadioButton2->setPixmap(image1); - RadioButton3->close(TRUE); - - GroupPoints = new DlgRef_2Sel_QTD(this, "GroupPoints"); - GroupPoints->GroupBox1->setTitle(tr("GEOM_POINTS")); - GroupPoints->TextLabel1->setText(tr("GEOM_POINT_I").arg("1")); - GroupPoints->TextLabel2->setText(tr("GEOM_POINT_I").arg("2")); - GroupPoints->PushButton1->setPixmap(image2); - GroupPoints->PushButton2->setPixmap(image2); - - GroupPoints->LineEdit1->setReadOnly( true ); - GroupPoints->LineEdit2->setReadOnly( true ); - - GroupDimensions = new DlgRef_3Spin1Check(this, "GroupDimensions"); - GroupDimensions->GroupBox1->setTitle(tr("GEOM_COORDINATES")); - GroupDimensions->TextLabel1->setText(tr("GEOM_DX")); - GroupDimensions->TextLabel2->setText(tr("GEOM_DY")); - GroupDimensions->TextLabel3->setText(tr("GEOM_DZ")); - GroupDimensions->CheckBox1->setText(tr("GEOM_REVERSE_VECTOR")); - - Layout1->addWidget(GroupPoints, 2, 0); - Layout1->addWidget(GroupDimensions, 2, 0); - /***************************************************************/ - - /* Initialisations */ - Init(); -} - - -//================================================================================= -// function : ~BasicGUI_VectorDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -BasicGUI_VectorDlg::~BasicGUI_VectorDlg() -{ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void BasicGUI_VectorDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = GroupPoints->LineEdit1; - - myPoint1 = GEOM::GEOM_Object::_nil(); - myPoint2 = GEOM::GEOM_Object::_nil(); - - /* Get setting of step value from file configuration */ - SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); - double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100); - - /* min, max, step and decimals for spin boxes */ - GroupDimensions->SpinBox_DX->RangeStepAndValidator(-999.999, 999.999, step, 3); - GroupDimensions->SpinBox_DY->RangeStepAndValidator(-999.999, 999.999, step, 3); - GroupDimensions->SpinBox_DZ->RangeStepAndValidator(-999.999, 999.999, step, 3); - - double dx( 0. ), dy( 0. ), dz( 200. ); - GroupDimensions->SpinBox_DX->SetValue( dx ); - GroupDimensions->SpinBox_DY->SetValue( dy ); - GroupDimensions->SpinBox_DZ->SetValue( dz ); - - GroupDimensions->CheckBox1->setChecked(FALSE); - - /* signals and slots connections */ - connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel())); - connect(myGeometryGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog())); - connect(myGeometryGUI, SIGNAL(SignalCloseAllDialogs()), this, SLOT(ClickOnCancel())); - - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - connect(GroupConstructors, SIGNAL(clicked(int)), this, SLOT(ConstructorsClicked(int))); - - connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupPoints->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - - connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(GroupPoints->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect(GroupDimensions->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - connect(GroupDimensions->SpinBox_DY, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - connect(GroupDimensions->SpinBox_DZ, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupDimensions->SpinBox_DX, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupDimensions->SpinBox_DY, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupDimensions->SpinBox_DZ, SLOT(SetStep(double))); - - connect(GroupDimensions->CheckBox1, SIGNAL(stateChanged(int)), this, SLOT(ReverseVector(int))); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - initName( tr("GEOM_VECTOR") ); - - GroupDimensions->hide(); - ConstructorsClicked( 0 ); -} - - -//================================================================================= -// function : ConstructorsClicked() -// purpose : Radio button management -//================================================================================= -void BasicGUI_VectorDlg::ConstructorsClicked( int constructorId ) -{ - disconnect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), 0, this, 0); - myPoint1 = GEOM::GEOM_Object::_nil(); - myPoint2 = GEOM::GEOM_Object::_nil(); - - switch (constructorId) - { - case 0: - { - GroupDimensions->hide(); - resize(0, 0); - GroupPoints->show(); - - myEditCurrentArgument = GroupPoints->LineEdit1; - GroupPoints->LineEdit1->setText(""); - GroupPoints->LineEdit2->setText(""); - - globalSelection( GEOM_POINT ); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - break; - } - case 1: - { - GroupPoints->hide(); - resize( 0, 0 ); - GroupDimensions->show(); - - double dx( 0. ), dy( 0. ), dz( 0. ); - GroupDimensions->SpinBox_DX->SetValue( dx ); - GroupDimensions->SpinBox_DY->SetValue( dy ); - GroupDimensions->SpinBox_DZ->SetValue( dz ); - - GroupDimensions->CheckBox1->setChecked( FALSE ); - break; - } - } - - displayPreview(); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void BasicGUI_VectorDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - -//======================================================================= -// function : ClickOnCancel() -// purpose : -//======================================================================= -void BasicGUI_VectorDlg::ClickOnCancel() -{ - GEOMBase_Skeleton::ClickOnCancel(); -} - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool BasicGUI_VectorDlg::ClickOnApply() -{ - buttonApply->setFocus(); - - if ( !onAccept() ) - return false; - - initName(); - if ( getConstructorId() != 1 ) - ConstructorsClicked( getConstructorId() ); - return true; -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection as changed or other case -//================================================================================= -void BasicGUI_VectorDlg::SelectionIntoArgument() -{ - myEditCurrentArgument->setText(""); - - if ( IObjectCount() != 1 ) - { - if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) - myPoint1 = GEOM::GEOM_Object::_nil(); - else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) - myPoint2 = GEOM::GEOM_Object::_nil(); - return; - } - - // nbSel == 1 - Standard_Boolean aRes = Standard_False; - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), aRes ); - if ( !CORBA::is_nil( aSelectedObject ) && aRes ) - { - myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) ); - if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) myPoint1 = aSelectedObject; - else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) myPoint2 = aSelectedObject; - } - - displayPreview(); -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void BasicGUI_VectorDlg::SetEditCurrentArgument() -{ - QPushButton* send = (QPushButton*)sender(); - if ( send == GroupPoints->PushButton1 ) myEditCurrentArgument = GroupPoints->LineEdit1; - else if ( send == GroupPoints->PushButton2 ) myEditCurrentArgument = GroupPoints->LineEdit2; - myEditCurrentArgument->setFocus(); - SelectionIntoArgument(); -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void BasicGUI_VectorDlg::LineEditReturnPressed() -{ - QLineEdit* send = (QLineEdit*)sender(); - if ( send == GroupPoints->LineEdit1 ) myEditCurrentArgument = GroupPoints->LineEdit1; - else if ( send == GroupPoints->LineEdit2 ) myEditCurrentArgument = GroupPoints->LineEdit2; - else return; - GEOMBase_Skeleton::LineEditReturnPressed(); -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void BasicGUI_VectorDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - ConstructorsClicked( getConstructorId() ); -} - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : public slot to deactivate if active -//================================================================================= -void BasicGUI_VectorDlg::DeactivateActiveDialog() -{ - // myGeometryGUI->SetState( -1 ); - GEOMBase_Skeleton::DeactivateActiveDialog(); -} - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void BasicGUI_VectorDlg::enterEvent(QEvent* e) -{ - if ( !GroupConstructors->isEnabled() ) - ActivateThisDialog(); -} - -//================================================================================= -// function : ValueChangedInSpinBox() -// purpose : -//================================================================================= -void BasicGUI_VectorDlg::ValueChangedInSpinBox( double newValue ) -{ - displayPreview(); -} - -//================================================================================= -// function : ReverseVector() -// purpose : 'state' not used here -//================================================================================= -void BasicGUI_VectorDlg::ReverseVector(int state) -{ - double dx = -GroupDimensions->SpinBox_DX->GetValue(); - double dy = -GroupDimensions->SpinBox_DY->GetValue(); - double dz = -GroupDimensions->SpinBox_DZ->GetValue(); - - GroupDimensions->SpinBox_DX->SetValue( dx ); - GroupDimensions->SpinBox_DY->SetValue( dy ); - GroupDimensions->SpinBox_DZ->SetValue( dz ); - - displayPreview(); -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr BasicGUI_VectorDlg::createOperation() -{ - return myGeometryGUI->GetGeomGen()->GetIBasicOperations( getStudyId() ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool BasicGUI_VectorDlg::isValid( QString& msg ) -{ - return getConstructorId() == 0 ? !myPoint1->_is_nil() && !myPoint2->_is_nil(): true; -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool BasicGUI_VectorDlg::execute( ObjectList& objects ) -{ - bool res = false; - - GEOM::GEOM_Object_var anObj; - - switch ( getConstructorId() ) { - case 0 : - anObj = GEOM::GEOM_IBasicOperations::_narrow( getOperation() )->MakeVectorTwoPnt( myPoint1, myPoint2 ); - res = true; - break; - - case 1 : - { - double dx = GroupDimensions->SpinBox_DX->GetValue(); - double dy = GroupDimensions->SpinBox_DY->GetValue(); - double dz = GroupDimensions->SpinBox_DZ->GetValue(); - anObj = GEOM::GEOM_IBasicOperations::_narrow( getOperation() )->MakeVectorDXDYDZ( dx,dy,dz ); - res = true; - break; - } - } - - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - - return res; -} - diff --git a/src/BasicGUI/BasicGUI_VectorDlg.h b/src/BasicGUI/BasicGUI_VectorDlg.h deleted file mode 100644 index 8e87f2b84..000000000 --- a/src/BasicGUI/BasicGUI_VectorDlg.h +++ /dev/null @@ -1,91 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BasicGUI_VectorDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_VECTOR_H -#define DIALOGBOX_VECTOR_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_2Sel_QTD.h" -#include "DlgRef_3Spin1Check.h" - -#include "BasicGUI.h" -//#include "GEOM_ShapeTypeFilter.hxx" - -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define BASICGUI_WNT_EXPORT __declspec( dllexport ) -#else -#define BASICGUI_WNT_EXPORT -#endif -//================================================================================= -// class : BasicGUI_VectorDlg -// purpose : -//================================================================================= -class BasicGUI_VectorDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - BasicGUI_VectorDlg(GeometryGUI* theGeometryGUI, QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~BasicGUI_VectorDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& ); - virtual bool execute( ObjectList& objects ); - -private : - void Init(); - void enterEvent(QEvent* e); - - GeometryGUI* myGeometryGUI; - - GEOM::GEOM_Object_var myPoint1; - GEOM::GEOM_Object_var myPoint2; - - DlgRef_2Sel_QTD* GroupPoints; - DlgRef_3Spin1Check* GroupDimensions; - -private slots: - void ClickOnOk(); - void ClickOnCancel(); - bool ClickOnApply(); - - void ActivateThisDialog(); - void DeactivateActiveDialog(); - - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - void ConstructorsClicked(int constructorId); - void ValueChangedInSpinBox(double newValue); - void ReverseVector(int state); - -}; - -#endif // DIALOGBOX_VECTOR_H diff --git a/src/BasicGUI/BasicGUI_WorkingPlaneDlg.cxx b/src/BasicGUI/BasicGUI_WorkingPlaneDlg.cxx deleted file mode 100644 index cf56ed78c..000000000 --- a/src/BasicGUI/BasicGUI_WorkingPlaneDlg.cxx +++ /dev/null @@ -1,468 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BasicGUI_WorkingPlaneDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM - -#include "BasicGUI_WorkingPlaneDlg.h" - -#include "GEOMBase.h" - -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "GEOMImpl_Types.hxx" - -#include -#include - -using namespace std; - -//================================================================================= -// class : BasicGUI_WorkingPlaneDlg() -// purpose : Constructs a BasicGUI_WorkingPlaneDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -BasicGUI_WorkingPlaneDlg::BasicGUI_WorkingPlaneDlg(GeometryGUI* theGeometryGUI , QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu), myGeometryGUI(theGeometryGUI) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_WPLANE_FACE"))); - QPixmap image2(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_WPLANE_VECTOR"))); - QPixmap image3(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_WPLANE_ORIGIN"))); - - setCaption(tr("GEOM_WPLANE_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_WPLANE")); - RadioButton1->setPixmap(image1); - RadioButton2->setPixmap(image2); - RadioButton3->setPixmap(image3); - - Group1 = new DlgRef_1Sel_QTD(this, "Group1"); - Group1->GroupBox1->setTitle(tr("GEOM_WPLANE_FACE")); - Group1->TextLabel1->setText(tr("GEOM_SELECTION")); - Group1->PushButton1->setPixmap(image0); - Group1->LineEdit1->setReadOnly( true ); - - Group2 = new DlgRef_2Sel_QTD(this, "Group2"); - Group2->GroupBox1->setTitle(tr("GEOM_WPLANE_VECTOR")); - Group2->TextLabel1->setText(tr("GEOM_WPLANE_VX")); - Group2->TextLabel2->setText(tr("GEOM_WPLANE_VZ")); - Group2->PushButton1->setPixmap(image0); - Group2->PushButton2->setPixmap(image0); - Group2->LineEdit1->setReadOnly( true ); - Group2->LineEdit2->setReadOnly( true ); - - Group3 = new DlgRef_3Check_QTD(this, "Group3"); - Group3->GroupBox1->setTitle(tr("GEOM_WPLANE_ORIGIN")); - Group3->RadioButton1->setText(tr("GEOM_WPLANE_OXY")); - Group3->RadioButton2->setText(tr("GEOM_WPLANE_OYZ")); - Group3->RadioButton3->setText(tr("GEOM_WPLANE_OZX")); - - Layout1->addWidget(Group1, 1, 0); - Layout1->addWidget(Group2, 1, 0); - Layout1->addWidget(Group3, 1, 0); - /***************************************************************/ - - Init(); -} - -//================================================================================= -// function : ~BasicGUI_WorkingPlaneDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -BasicGUI_WorkingPlaneDlg::~BasicGUI_WorkingPlaneDlg() -{ -} - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void BasicGUI_WorkingPlaneDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = Group1->LineEdit1; - myWPlane = myGeometryGUI->GetWorkingPlane(); - - // myGeometryGUI->SetState( 0 ); - - myFace = GEOM::GEOM_Object::_nil(); - myVectX = GEOM::GEOM_Object::_nil(); - myVectZ = GEOM::GEOM_Object::_nil(); - - aOriginType = 1; - - /* Filter definition */ - globalSelection( GEOM_PLANE ); - - /* signals and slots connections */ - connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel())); - connect(myGeometryGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog())); - connect(myGeometryGUI, SIGNAL(SignalCloseAllDialogs()), this, SLOT(ClickOnCancel())); - connect(GroupConstructors, SIGNAL(clicked(int)), this, SLOT(ConstructorsClicked(int))); - - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - - connect(Group1->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(Group1->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - - connect(Group2->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(Group2->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(Group2->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(Group2->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - - connect(Group3->GroupBox1, SIGNAL(clicked(int)), this, SLOT(GroupClicked(int))); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - initName( tr( "GEOM_WPLANE" ) ); - ConstructorsClicked(0); -} - -//================================================================================= -// function : ConstructorsClicked() -// purpose : Radio button management -//================================================================================= -void BasicGUI_WorkingPlaneDlg::ConstructorsClicked(int constructorId) -{ - disconnect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), 0, this, 0); - // myGeometryGUI->SetState( 0 ); - - switch (constructorId) - { - case 0: - { - globalSelection( GEOM_PLANE ); - - Group2->hide(); - Group3->hide(); - resize(0, 0); - Group1->show(); - - myEditCurrentArgument = Group1->LineEdit1; - Group1->LineEdit1->setText(""); - myFace = GEOM::GEOM_Object::_nil(); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - break; - } - case 1: - { - globalSelection( GEOM_LINE ); - - Group1->hide(); - Group3->hide(); - resize(0, 0); - Group2->show(); - - myEditCurrentArgument = Group2->LineEdit1; - Group2->LineEdit1->setText(""); - Group2->LineEdit2->setText(""); - myVectX = GEOM::GEOM_Object::_nil(); - myVectZ = GEOM::GEOM_Object::_nil(); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - break; - } - case 2: - { - Group1->hide(); - Group2->hide(); - resize(0, 0); - Group3->show(); - - Group3->RadioButton1->setChecked(true); - aOriginType = 1; - break; - } - } - displayPreview(); -} - -//================================================================================= -// function : GroupClicked() -// purpose : Radio button management -//================================================================================= -void BasicGUI_WorkingPlaneDlg::GroupClicked(int groupId) -{ - aOriginType = groupId; -} - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void BasicGUI_WorkingPlaneDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool BasicGUI_WorkingPlaneDlg::ClickOnApply() -{ - buttonApply->setFocus(); - myGeometryGUI->application()->putInfo(tr("")); - const int id = getConstructorId(); - - if (id == 0) { - if ( !CORBA::is_nil( myFace ) ) { - TopoDS_Face aPlaneShape; - if ( GEOMBase::GetShape( myFace, aPlaneShape, TopAbs_FACE ) ) { - Handle(Geom_Surface) aGS = BRep_Tool::Surface( TopoDS::Face( aPlaneShape ) ); - if ( !aGS.IsNull() && aGS->IsKind( STANDARD_TYPE( Geom_Plane ) ) ) { - Handle(Geom_Plane) aGPlane = Handle(Geom_Plane)::DownCast( aGS ); - gp_Pln aPln = aGPlane->Pln(); - - myWPlane = aPln.Position(); - myGeometryGUI->SetWorkingPlane(myWPlane); - myGeometryGUI->ActiveWorkingPlane(); - return true; - } - } - } - } else if (id == 1) { - if ( CORBA::is_nil( myVectX ) || CORBA::is_nil( myVectZ ) ) { - showError( "Two vectors have to be selected" ); - return false; - } - - TopoDS_Edge aVectX, aVectZ; - TopoDS_Vertex V1, V2; - gp_Vec aVX, aVZ; - if (GEOMBase::GetShape( myVectX, aVectX, TopAbs_EDGE ) && - GEOMBase::GetShape( myVectZ, aVectZ, TopAbs_EDGE )) { - TopExp::Vertices(aVectZ, V1, V2, Standard_True); - if (!V1.IsNull() && !V2.IsNull()) - aVZ = gp_Vec(BRep_Tool::Pnt(V1), BRep_Tool::Pnt(V2)); - else { - showError( "Bad OZ vector" ); - return false; - } - - TopExp::Vertices(aVectX, V1, V2, Standard_True); - if (!V1.IsNull() && !V2.IsNull()) - aVX = gp_Vec(BRep_Tool::Pnt(V1), BRep_Tool::Pnt(V2)); - else { - showError( "Bad OX vector" ); - return false; - } - - gp_Dir aDirZ = gp_Dir(aVZ.X(), aVZ.Y(), aVZ.Z()); - gp_Dir aDirX = gp_Dir(aVX.X(), aVX.Y(), aVX.Z()); - - if (aDirX.IsParallel(aDirZ, Precision::Confusion())) { - showError( "Parallel vectors selected" ); - return false; - } - - myWPlane = gp_Ax3(BRep_Tool::Pnt(V1), aDirZ, aDirX); - - myGeometryGUI->SetWorkingPlane(myWPlane); - myGeometryGUI->ActiveWorkingPlane(); - return true; - } - } else if (id == 2) { - gp_Pnt P1 = gp_Pnt(0., 0., 0.); - gp_Dir aDirZ, aDirX; - - if (aOriginType == 1) { - aDirZ = gp_Dir(0., 0., 1.); - aDirX = gp_Dir(1., 0., 0.); - } - else if (aOriginType == 2) { - aDirZ = gp_Dir(1., 0., 0.); - aDirX = gp_Dir(0., 1., 0.); - } - else if (aOriginType == 0) { - aDirZ = gp_Dir(0., 1., 0.); - aDirX = gp_Dir(0., 0., 1.); - } - - myWPlane = gp_Ax3(P1, aDirZ, aDirX); - - myGeometryGUI->SetWorkingPlane(myWPlane); - myGeometryGUI->ActiveWorkingPlane(); - return true; - } - return false; -} - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection as changed or other case -//================================================================================= -void BasicGUI_WorkingPlaneDlg::SelectionIntoArgument() -{ - myEditCurrentArgument->setText(""); - - const int id = getConstructorId(); - if ( IObjectCount() != 1 ) { - if(id == 0) - myFace = GEOM::GEOM_Object::_nil(); - else if(id == 1) { - if (myEditCurrentArgument == Group2->LineEdit1) - myVectX = GEOM::GEOM_Object::_nil(); - else if (myEditCurrentArgument == Group2->LineEdit2) - myVectZ = GEOM::GEOM_Object::_nil(); - } - return; - } - - // nbSel == 1 - Standard_Boolean aRes = Standard_False; - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject(firstIObject(), aRes); - - if(!aRes || CORBA::is_nil( aSelectedObject )) - return; - - if(myEditCurrentArgument == Group1->LineEdit1) - myFace = aSelectedObject; - else if(myEditCurrentArgument == Group2->LineEdit1) - myVectX = aSelectedObject; - else if(myEditCurrentArgument == Group2->LineEdit2) - myVectZ = aSelectedObject; - - myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) ); -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void BasicGUI_WorkingPlaneDlg::SetEditCurrentArgument() -{ - QPushButton* send = (QPushButton*)sender(); - - if(send == Group1->PushButton1) { - myEditCurrentArgument = Group1->LineEdit1; - globalSelection( GEOM_PLANE ); - } - else if(send == Group2->PushButton1) { - myEditCurrentArgument = Group2->LineEdit1; - globalSelection( GEOM_LINE ); - } - else if(send == Group2->PushButton2) { - myEditCurrentArgument = Group2->LineEdit2; - globalSelection( GEOM_LINE ); - } - - myEditCurrentArgument->setFocus(); - SelectionIntoArgument(); -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void BasicGUI_WorkingPlaneDlg::LineEditReturnPressed() -{ - QLineEdit* send = (QLineEdit*)sender(); - if(send == Group1->LineEdit1 || send == Group2->LineEdit1 || send == Group2->LineEdit2) { - myEditCurrentArgument = send; - GEOMBase_Skeleton::LineEditReturnPressed(); - } -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void BasicGUI_WorkingPlaneDlg::ActivateThisDialog( ) -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - ConstructorsClicked( getConstructorId() ); -} - - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : public slot to deactivate if active -//================================================================================= -void BasicGUI_WorkingPlaneDlg::DeactivateActiveDialog() -{ - // myGeometryGUI->SetState( -1 ); - GEOMBase_Skeleton::DeactivateActiveDialog(); -} - -//======================================================================= -// function : ClickOnCancel() -// purpose : -//======================================================================= -void BasicGUI_WorkingPlaneDlg::ClickOnCancel() -{ - GEOMBase_Skeleton::ClickOnCancel(); -} - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void BasicGUI_WorkingPlaneDlg::enterEvent(QEvent* e) -{ - if ( !GroupConstructors->isEnabled() ) - ActivateThisDialog(); -} - -//================================================================================= -// function : closeEvent -// purpose : -//================================================================================= -void BasicGUI_WorkingPlaneDlg::closeEvent( QCloseEvent* e ) -{ - // myGeometryGUI->SetState( -1 ); - GEOMBase_Skeleton::closeEvent( e ); -} diff --git a/src/BasicGUI/BasicGUI_WorkingPlaneDlg.h b/src/BasicGUI/BasicGUI_WorkingPlaneDlg.h deleted file mode 100644 index 4ee7a785d..000000000 --- a/src/BasicGUI/BasicGUI_WorkingPlaneDlg.h +++ /dev/null @@ -1,88 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BasicGUI_WorkingPlaneDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM - -#ifndef DIALOGBOX_WORKINGPLANE_H -#define DIALOGBOX_WORKINGPLANE_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_1Sel_QTD.h" -#include "DlgRef_2Sel_QTD.h" -#include "DlgRef_3Check_QTD.h" - -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define BASICGUI_WNT_EXPORT __declspec( dllexport ) -#else -#define BASICGUI_WNT_EXPORT -#endif -//================================================================================= -// class : BasicGUI_WorkingPlaneDlg -// purpose : -//================================================================================= -class BASICGUI_WNT_EXPORT BasicGUI_WorkingPlaneDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - BasicGUI_WorkingPlaneDlg( GeometryGUI* theGeometryGUI, QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); - ~BasicGUI_WorkingPlaneDlg(); - virtual void closeEvent( QCloseEvent* e ); - -private: - void Init(); - void enterEvent(QEvent* e); - - GeometryGUI* myGeometryGUI; - - GEOM::GEOM_Object_var myFace; - GEOM::GEOM_Object_var myVectX; - GEOM::GEOM_Object_var myVectZ; - - int aOriginType; - - DlgRef_1Sel_QTD* Group1; - DlgRef_2Sel_QTD* Group2; - DlgRef_3Check_QTD* Group3; - - gp_Ax3 myWPlane; - -private slots: - void ClickOnOk(); - void ClickOnCancel(); - bool ClickOnApply(); - - void ConstructorsClicked(int constructorId); - void GroupClicked(int groupId); - void SetEditCurrentArgument(); - void SelectionIntoArgument(); - void LineEditReturnPressed(); - - void ActivateThisDialog(); - void DeactivateActiveDialog(); - -}; - -#endif // DIALOGBOX_WORKINGPLANE_H diff --git a/src/BasicGUI/Makefile.in b/src/BasicGUI/Makefile.in deleted file mode 100644 index 4bbaaa7f6..000000000 --- a/src/BasicGUI/Makefile.in +++ /dev/null @@ -1,78 +0,0 @@ -# GEOM BASICGUI : -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Author : Damien COQUERET (OCC) -# Module : GEOM -# $Header: - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -# header files -EXPORT_HEADERS= BasicGUI_PointDlg.h - -# Libraries targets -LIB = libBasicGUI.la - -LIB_SRC = BasicGUI.cxx \ - BasicGUI_PointDlg.cxx \ - BasicGUI_LineDlg.cxx \ - BasicGUI_CircleDlg.cxx \ - BasicGUI_EllipseDlg.cxx \ - BasicGUI_ArcDlg.cxx \ - BasicGUI_VectorDlg.cxx \ - BasicGUI_PlaneDlg.cxx \ - BasicGUI_WorkingPlaneDlg.cxx \ - BasicGUI_CurveDlg.cxx \ - BasicGUI_MarkerDlg.cxx - -LIB_MOC = \ - BasicGUI_PointDlg.h \ - BasicGUI_LineDlg.h \ - BasicGUI_CircleDlg.h \ - BasicGUI_EllipseDlg.h \ - BasicGUI_ArcDlg.h \ - BasicGUI_VectorDlg.h \ - BasicGUI_PlaneDlg.h \ - BasicGUI_WorkingPlaneDlg.h \ - BasicGUI_CurveDlg.h \ - BasicGUI_MarkerDlg.h - -LIB_CLIENT_IDL = SALOME_GenericObj.idl SALOME_Exception.idl SALOME_Component.idl - -LIB_SERVER_IDL = - -# additionnal information to compil and link file - -CPPFLAGS += $(QT_INCLUDES) $(VTK_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES) $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome -CXXFLAGS += -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome - -LDFLAGS += -lGEOMFiltersSelection -lGEOMBase -lGEOM - -@CONCLUDE@ diff --git a/src/BlocksGUI/BlocksGUI.cxx b/src/BlocksGUI/BlocksGUI.cxx deleted file mode 100644 index 30abf2a66..000000000 --- a/src/BlocksGUI/BlocksGUI.cxx +++ /dev/null @@ -1,136 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 CEA -// -// 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. -// -// 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.org -// -// -// -// File : BooleanGUI.cxx -// Author : Julia DOOVSKIKH -// Module : GEOM -// $Header$ - -#include "BlocksGUI.h" - -#include "BlocksGUI_QuadFaceDlg.h" -#include "BlocksGUI_BlockDlg.h" -#include "BlocksGUI_TrsfDlg.h" -//#include "BlocksGUI_CheckMultiBlockDlg.h" -#include "BlocksGUI_ExplodeDlg.h" -#include "BlocksGUI_PropagateDlg.h" - -#include "GeometryGUI.h" - -#include "SUIT_Desktop.h" -#include "SUIT_MessageBox.h" -#include "SUIT_Session.h" - -BlocksGUI* BlocksGUI::myGUIObject = 0; - -//======================================================================= -// function : GetBlocksGUI() -// purpose : Get the only BlocksGUI object [ static ] -//======================================================================= -BlocksGUI* BlocksGUI::GetBlocksGUI( GeometryGUI* parent ) -{ - if ( myGUIObject == 0 ) - myGUIObject = new BlocksGUI( parent ); - - return myGUIObject; -} - -//======================================================================= -// function : BlocksGUI() -// purpose : Constructor -//======================================================================= -BlocksGUI::BlocksGUI( GeometryGUI* parent ) - : GEOMGUI( parent ) -{ -} - -//======================================================================= -// function : ~BlocksGUI() -// purpose : Destructor -//======================================================================= -BlocksGUI::~BlocksGUI() -{ -} - -//======================================================================= -// function : OnGUIEvent() -// purpose : -//======================================================================= -bool BlocksGUI::OnGUIEvent( int theCommandID, SUIT_Desktop* parent ) -{ - getGeometryGUI()->EmitSignalDeactivateDialog(); - - QDialog* aDlg = NULL; - - switch (theCommandID) - { - case 9999: - aDlg = new BlocksGUI_BlockDlg (parent); - break; - - case 9998: - aDlg = new BlocksGUI_TrsfDlg (parent); - break; - - case 9997: - aDlg = new BlocksGUI_QuadFaceDlg (parent); - break; - - case 9996: -// aDlg = new BlocksGUI_CheckMultiBlockDlg (parent, Sel); - SUIT_MessageBox::warn1 (parent, - QObject::tr("WRN_WARNING"), - QObject::tr("WRN_NOT_IMPLEMENTED"), - QObject::tr("BUT_OK")); - break; - - case 9995: - aDlg = new BlocksGUI_ExplodeDlg (parent); - break; - case 99991: - aDlg = new BlocksGUI_PropagateDlg (parent, ""); - break; - - default: - SUIT_Session::session()->activeApplication()->putInfo(tr("GEOM_PRP_COMMAND").arg(theCommandID)); - break; - } - - if (aDlg != NULL) - aDlg->show(); - - return true; -} - -//===================================================================================== -// EXPORTED METHODS -//===================================================================================== -extern "C" -{ -#ifdef WNT - __declspec( dllexport ) -#endif - GEOMGUI* GetLibGUI( GeometryGUI* parent ) - { - return BlocksGUI::GetBlocksGUI( parent ); - } -} diff --git a/src/BlocksGUI/BlocksGUI.h b/src/BlocksGUI/BlocksGUI.h deleted file mode 100644 index eab79022e..000000000 --- a/src/BlocksGUI/BlocksGUI.h +++ /dev/null @@ -1,54 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 CEA -// -// 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. -// -// 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.org -// -// -// -// File : BuildGUI.h -// Author : Julia DOROVSKIKH -// Module : GEOM -// $Header$ - -#ifndef BLOCKSGUI_H -#define BLOCKSGUI_H - -#include "GEOMGUI.h" - -//================================================================================= -// class : BlocksGUI -// purpose : -//================================================================================= -class BlocksGUI : public GEOMGUI -{ - protected: - BlocksGUI( GeometryGUI* parent ); // hide constructor to avoid direct creation - - public: - ~BlocksGUI(); - - // Get the only BuildGUI object - static BlocksGUI* GetBlocksGUI( GeometryGUI* parent ); - - bool OnGUIEvent (int theCommandID, SUIT_Desktop* parent); - -private: - static BlocksGUI* myGUIObject; // the only BlocksGUI object -}; - -#endif diff --git a/src/BlocksGUI/BlocksGUI_BlockDlg.cxx b/src/BlocksGUI/BlocksGUI_BlockDlg.cxx deleted file mode 100644 index 059c8facd..000000000 --- a/src/BlocksGUI/BlocksGUI_BlockDlg.cxx +++ /dev/null @@ -1,400 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 CEA -// -// 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. -// -// 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.org -// -// -// -// File : BlocksGUI_BlockDlg.cxx -// Author : Julia DOROVSKIKH -// Module : GEOM -// $Header$ - -#include "BlocksGUI_BlockDlg.h" - -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include "GEOMImpl_Types.hxx" - -using namespace std; - -#include - -//================================================================================= -// class : BlocksGUI_BlockDlg() -// purpose : Constructs a BlocksGUI_BlockDlg which is a child of 'parent'. -//================================================================================= -BlocksGUI_BlockDlg::BlocksGUI_BlockDlg (QWidget* parent, - bool modal) - : GEOMBase_Skeleton(parent, "BlockDlg", modal, - WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) -{ - QPixmap image0 (SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM", tr("ICON_DLG_BLOCK_2F"))); - QPixmap image1 (SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM", tr("ICON_DLG_BLOCK_6F"))); - QPixmap imageS (SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM", tr("ICON_SELECT"))); - - setCaption(tr("GEOM_BLOCK_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_BLOCK")); - - RadioButton1->setPixmap(image0); - RadioButton2->setPixmap(image1); - RadioButton3->close(TRUE); - - // Create first group - Group2F = new DlgRef_2Sel_QTD(this, "Group2F"); - Group2F->GroupBox1->setTitle(tr("GEOM_ARGUMENTS")); - Group2F->TextLabel1->setText(tr("FACE_1")); - Group2F->TextLabel2->setText(tr("FACE_2")); - Group2F->PushButton1->setPixmap(imageS); - Group2F->PushButton2->setPixmap(imageS); - - // Create second group - Group6F = new DlgRef_6Sel_QTD(this, "Group2F"); - Group6F->GroupBox1->setTitle(tr("GEOM_ARGUMENTS")); - Group6F->TextLabel1->setText(tr("FACE_1")); - Group6F->TextLabel2->setText(tr("FACE_2")); - Group6F->TextLabel3->setText(tr("FACE_3")); - Group6F->TextLabel4->setText(tr("FACE_4")); - Group6F->TextLabel5->setText(tr("FACE_5")); - Group6F->TextLabel6->setText(tr("FACE_6")); - Group6F->PushButton1->setPixmap(imageS); - Group6F->PushButton2->setPixmap(imageS); - Group6F->PushButton3->setPixmap(imageS); - Group6F->PushButton4->setPixmap(imageS); - Group6F->PushButton5->setPixmap(imageS); - Group6F->PushButton6->setPixmap(imageS); - - // Add groups to layout - Layout1->addWidget(Group2F, 2, 0); - Layout1->addWidget(Group6F, 2, 0); - /***************************************************************/ - - Init(); -} - -//================================================================================= -// function : ~BlocksGUI_BlockDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -BlocksGUI_BlockDlg::~BlocksGUI_BlockDlg() -{ - // no need to delete child widgets, Qt does it all for us -} - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void BlocksGUI_BlockDlg::Init() -{ - // init variables - Group2F->LineEdit1->setReadOnly(true); - Group2F->LineEdit2->setReadOnly(true); - - Group6F->LineEdit1->setReadOnly(true); - Group6F->LineEdit2->setReadOnly(true); - Group6F->LineEdit3->setReadOnly(true); - Group6F->LineEdit4->setReadOnly(true); - Group6F->LineEdit5->setReadOnly(true); - Group6F->LineEdit6->setReadOnly(true); - - // signals and slots connections - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - connect(GroupConstructors, SIGNAL(clicked(int)), this, SLOT(ConstructorsClicked(int))); - - connect(Group2F->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(Group2F->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - - connect(Group6F->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(Group6F->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(Group6F->PushButton3, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(Group6F->PushButton4, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(Group6F->PushButton5, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(Group6F->PushButton6, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - - // init controls and fields - initName(tr("GEOM_BLOCK")); - - myConstructorId = -1; - ConstructorsClicked(0); -} - -//================================================================================= -// function : ConstructorsClicked() -// purpose : Radio button management -//================================================================================= -void BlocksGUI_BlockDlg::ConstructorsClicked (int constructorId) -{ - if (myConstructorId == constructorId) - return; - - myConstructorId = constructorId; - - switch (constructorId) { - case 0: - Group6F->hide(); - resize(0, 0); - Group2F->show(); - - myEditCurrentArgument = Group2F->LineEdit1; - Group2F->LineEdit1->setText(tr("")); - Group2F->LineEdit2->setText(tr("")); - break; - case 1: - Group2F->hide(); - resize(0, 0); - Group6F->show(); - - myEditCurrentArgument = Group6F->LineEdit1; - Group6F->LineEdit1->setText(tr("")); - Group6F->LineEdit2->setText(tr("")); - Group6F->LineEdit3->setText(tr("")); - Group6F->LineEdit4->setText(tr("")); - Group6F->LineEdit5->setText(tr("")); - Group6F->LineEdit6->setText(tr("")); - break; - default: - break; - } - - // init fields - myFace1 = myFace2 = GEOM::GEOM_Object::_nil(); - myFace3 = myFace4 = myFace5 = myFace6 = myFace1; - - globalSelection(GEOM_FACE); - SelectionIntoArgument(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); -} - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void BlocksGUI_BlockDlg::ClickOnOk() -{ - if (ClickOnApply()) - ClickOnCancel(); -} - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool BlocksGUI_BlockDlg::ClickOnApply() -{ - if (!onAccept()) - return false; - - initName(); - return true; -} - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection as changed or other case -//================================================================================= -void BlocksGUI_BlockDlg::SelectionIntoArgument() -{ - erasePreview(); - myEditCurrentArgument->setText(""); - - if (IObjectCount() != 1) - { - if (myEditCurrentArgument == Group2F->LineEdit1 || - myEditCurrentArgument == Group6F->LineEdit1) - myFace1 = GEOM::GEOM_Object::_nil(); - else if (myEditCurrentArgument == Group2F->LineEdit2 || - myEditCurrentArgument == Group6F->LineEdit2) - myFace2 = GEOM::GEOM_Object::_nil(); - else if (myEditCurrentArgument == Group6F->LineEdit3) - myFace3 = GEOM::GEOM_Object::_nil(); - else if (myEditCurrentArgument == Group6F->LineEdit4) - myFace4 = GEOM::GEOM_Object::_nil(); - else if (myEditCurrentArgument == Group6F->LineEdit5) - myFace5 = GEOM::GEOM_Object::_nil(); - else if (myEditCurrentArgument == Group6F->LineEdit6) - myFace6 = GEOM::GEOM_Object::_nil(); - return; - } - - // nbSel == 1 - Standard_Boolean testResult = Standard_False; - GEOM::GEOM_Object_var aSelectedObject = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); - - if (!testResult || CORBA::is_nil( aSelectedObject )) - return; - - if (myEditCurrentArgument == Group2F->LineEdit1 || - myEditCurrentArgument == Group6F->LineEdit1) - myFace1 = aSelectedObject; - else if (myEditCurrentArgument == Group2F->LineEdit2 || - myEditCurrentArgument == Group6F->LineEdit2) - myFace2 = aSelectedObject; - else if (myEditCurrentArgument == Group6F->LineEdit3) - myFace3 = aSelectedObject; - else if (myEditCurrentArgument == Group6F->LineEdit4) - myFace4 = aSelectedObject; - else if (myEditCurrentArgument == Group6F->LineEdit5) - myFace5 = aSelectedObject; - else if (myEditCurrentArgument == Group6F->LineEdit6) - myFace6 = aSelectedObject; - - myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) ); - - displayPreview(); -} - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void BlocksGUI_BlockDlg::SetEditCurrentArgument() -{ - QPushButton* aSender = (QPushButton*)sender(); - - if (aSender == Group2F->PushButton1) { - myEditCurrentArgument = Group2F->LineEdit1; - } else if (aSender == Group2F->PushButton2) { - myEditCurrentArgument = Group2F->LineEdit2; - - } else if (aSender == Group6F->PushButton1) { - myEditCurrentArgument = Group6F->LineEdit1; - } else if (aSender == Group6F->PushButton2) { - myEditCurrentArgument = Group6F->LineEdit2; - } else if (aSender == Group6F->PushButton3) { - myEditCurrentArgument = Group6F->LineEdit3; - } else if (aSender == Group6F->PushButton4) { - myEditCurrentArgument = Group6F->LineEdit4; - } else if (aSender == Group6F->PushButton5) { - myEditCurrentArgument = Group6F->LineEdit5; - } else if (aSender == Group6F->PushButton6) { - myEditCurrentArgument = Group6F->LineEdit6; - } - - globalSelection(GEOM_FACE); - - myEditCurrentArgument->setFocus(); - SelectionIntoArgument(); -} - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void BlocksGUI_BlockDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - globalSelection(GEOM_FACE); - - SelectionIntoArgument(); -} - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void BlocksGUI_BlockDlg::enterEvent (QEvent* e) -{ - if (!GroupConstructors->isEnabled()) - ActivateThisDialog(); -} - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : public slot to deactivate if active -//================================================================================= -//void BlocksGUI_BlockDlg::DeactivateActiveDialog() -//{ -// GEOMBase_Skeleton::DeactivateActiveDialog(); -//} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr BlocksGUI_BlockDlg::createOperation() -{ - return getGeomEngine()->GetIBlocksOperations(getStudyId()); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool BlocksGUI_BlockDlg::isValid (QString&) -{ - switch (getConstructorId()) { - case 0: - return !(myFace1->_is_nil() || myFace2->_is_nil()); - case 1: - return !(myFace1->_is_nil() || myFace2->_is_nil() || - myFace3->_is_nil() || myFace4->_is_nil() || - myFace5->_is_nil() || myFace6->_is_nil()); - default: - return false; - } - return false; -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool BlocksGUI_BlockDlg::execute (ObjectList& objects) -{ - bool res = false; - - GEOM::GEOM_Object_var anObj; - - switch (getConstructorId()) { - case 0: - if (!CORBA::is_nil(myFace1) && !CORBA::is_nil(myFace2)) { - anObj = GEOM::GEOM_IBlocksOperations::_narrow(getOperation())-> - MakeHexa2Faces(myFace1, myFace2); - res = true; - } - break; - case 1: - if (!CORBA::is_nil(myFace1) && !CORBA::is_nil(myFace2) && - !CORBA::is_nil(myFace3) && !CORBA::is_nil(myFace4) && - !CORBA::is_nil(myFace5) && !CORBA::is_nil(myFace6)) { - anObj = GEOM::GEOM_IBlocksOperations::_narrow(getOperation())-> - MakeHexa(myFace1, myFace2, myFace3, myFace4, myFace5, myFace6); - res = true; - } - break; - } - - if (!anObj->_is_nil()) - objects.push_back(anObj._retn()); - - return res; -} diff --git a/src/BlocksGUI/BlocksGUI_BlockDlg.h b/src/BlocksGUI/BlocksGUI_BlockDlg.h deleted file mode 100644 index 567538c32..000000000 --- a/src/BlocksGUI/BlocksGUI_BlockDlg.h +++ /dev/null @@ -1,79 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 CEA -// -// 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. -// -// 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.org -// -// -// -// File : BlocksGUI_BlockDlg.h -// Author : Julia DOROVSKIKH -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_BLOCK_H -#define DIALOGBOX_BLOCK_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_2Sel_QTD.h" -#include "DlgRef_6Sel_QTD.h" - - -//================================================================================= -// class : BlocksGUI_BlockDlg -// purpose : -//================================================================================= -class BlocksGUI_BlockDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - BlocksGUI_BlockDlg (QWidget* parent, - bool modal = FALSE); - ~BlocksGUI_BlockDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid (QString&); - virtual bool execute (ObjectList& objects); - -private: - void Init(); - void enterEvent (QEvent* e); - -private: - int myConstructorId; - - GEOM::GEOM_Object_var myFace1, myFace2; - GEOM::GEOM_Object_var myFace3, myFace4, myFace5, myFace6; - - DlgRef_2Sel_QTD* Group2F; - DlgRef_6Sel_QTD* Group6F; - -private slots: - void ClickOnOk(); - bool ClickOnApply(); - void ActivateThisDialog(); -// void DeactivateActiveDialog(); - void ConstructorsClicked (int constructorId); - - void SelectionIntoArgument(); - void SetEditCurrentArgument(); -}; - -#endif // DIALOGBOX_BLOCK_H diff --git a/src/BlocksGUI/BlocksGUI_ExplodeDlg.cxx b/src/BlocksGUI/BlocksGUI_ExplodeDlg.cxx deleted file mode 100644 index 9ebdd93ec..000000000 --- a/src/BlocksGUI/BlocksGUI_ExplodeDlg.cxx +++ /dev/null @@ -1,505 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 CEA -// -// 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. -// -// 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.org -// -// -// -// File : BlocksGUI_ExplodeDlg.cxx -// Author : Julia DOROVSKIKH -// Module : GEOM -// $Header$ - -#include "BlocksGUI_ExplodeDlg.h" - -#include "DlgRef_SpinBox.h" - -#include "GEOM_Displayer.h" - -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" -#include "OCCViewer_ViewModel.h" -#include "SALOME_ListIteratorOfListIO.hxx" - -#include "utilities.h" - -#include - -#include -#include -#include -#include - -//================================================================================= -// class : BlocksGUI_ExplodeDlg() -// purpose : Constructs a BlocksGUI_ExplodeDlg which is a child of 'parent'. -//================================================================================= -BlocksGUI_ExplodeDlg::BlocksGUI_ExplodeDlg (QWidget* parent, - bool modal) - : GEOMBase_Skeleton(parent, "ExplodeDlg", modal, - WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) -{ - QPixmap image1 (SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_BLOCK_EXPLODE"))); - QPixmap imageS (SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_BLOCK_EXPLODE_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_BLOCK_EXPLODE")); - - RadioButton1->setPixmap(image1); - RadioButton2->close(TRUE); - RadioButton3->close(TRUE); - - // Create first group - myGrp1 = new QGroupBox(1, Qt::Horizontal, tr("GEOM_ARGUMENTS"), this); - - QGroupBox* aSelGrp = new QGroupBox(3, Qt::Horizontal, myGrp1); - aSelGrp->setFrameStyle(QFrame::NoFrame); - aSelGrp->setInsideMargin(0); - - new QLabel(tr("GEOM_MAIN_OBJECT"), aSelGrp); - mySelBtn = new QPushButton(aSelGrp); - mySelBtn->setPixmap(imageS); - mySelName = new QLineEdit(aSelGrp); - mySelName->setReadOnly(true); - - QGroupBox* aSpinGrp = new QGroupBox(2, Qt::Horizontal, myGrp1); - aSpinGrp->setFrameStyle(QFrame::NoFrame); - aSpinGrp->setInsideMargin(0); - - new QLabel(tr("NB_FACES_MIN"), aSpinGrp); - mySpinBoxMin = new DlgRef_SpinBox(aSpinGrp); - - new QLabel(tr("NB_FACES_MAX"), aSpinGrp); - mySpinBoxMax = new DlgRef_SpinBox(aSpinGrp); - - QGroupBox* anInfoGrp = new QGroupBox(2, Qt::Horizontal, myGrp1); - anInfoGrp->setFrameStyle(QFrame::NoFrame); - anInfoGrp->setInsideMargin(0); - - myBlocksNb = new QTextEdit(anInfoGrp); - myBlocksNb->setReadOnly(true); - - QGroupBox* aCheckGrp = new QGroupBox(3, Qt::Horizontal, myGrp1); - aCheckGrp->setFrameStyle(QFrame::NoFrame); - aCheckGrp->setInsideMargin(0); - - myCheckBtn = new QCheckBox(aCheckGrp, "CheckButton1"); - myCheckBtn->setText(tr("GEOM_SUBSHAPE_SELECT")); - - // Add groups to layout - Layout1->addWidget(myGrp1, 1, 0); - /***************************************************************/ - - Init(); -} - -//================================================================================= -// function : ~BlocksGUI_ExplodeDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -BlocksGUI_ExplodeDlg::~BlocksGUI_ExplodeDlg() -{ - // no need to delete child widgets, Qt does it all for us - clearTemporary(); -} - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void BlocksGUI_ExplodeDlg::Init() -{ - // Set range of spinboxes - double SpecificStep = 1.0; - mySpinBoxMin->RangeStepAndValidator(0.0, 999.0, SpecificStep, 3); - mySpinBoxMax->RangeStepAndValidator(0.0, 999.0, SpecificStep, 3); - - if (SUIT_Session::session()->activeApplication()->desktop()->activeWindow()->getViewManager()->getType() - != OCCViewer_Viewer::Type()) - myCheckBtn->setEnabled(false); - - // signals and slots connections - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - - connect(mySelBtn, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - - connect(mySpinBoxMin, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - connect(mySpinBoxMax, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - - connect(myCheckBtn, SIGNAL(stateChanged(int)), this, SLOT(SubShapeToggled())); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - - myConstructorId = -1; - ConstructorsClicked(0); -} - -//================================================================================= -// function : ConstructorsClicked() -// purpose : Radio button management -//================================================================================= -void BlocksGUI_ExplodeDlg::ConstructorsClicked (int constructorId) -{ - if (myConstructorId == constructorId) - return; - - myConstructorId = constructorId; - - switch (constructorId) { - case 0: - myGrp1->show(); - mySpinBoxMin->SetValue(6.0); - mySpinBoxMax->SetValue(6.0); - myCheckBtn->setChecked(FALSE); - break; - default: - break; - } - - // init fields - myEditCurrentArgument = mySelName; - myObject = GEOM::GEOM_Object::_nil(); - - activateSelection(); -} - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void BlocksGUI_ExplodeDlg::ClickOnOk() -{ - if (ClickOnApply()) - ClickOnCancel(); -} - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool BlocksGUI_ExplodeDlg::ClickOnApply() -{ - SUIT_Session::session()->activeApplication()->putInfo(tr("")); - - // Explode all sub shapes - if (isAllSubShapes()) { - // More than 30 subshapes : ask confirmation - if (myNbBlocks > 30) { - const QString caption = tr("GEOM_CONFIRM"); - const QString text = tr("GEOM_CONFIRM_INFO").arg(myNbBlocks); - const QString button0 = tr("GEOM_BUT_EXPLODE"); - const QString button1 = tr("GEOM_BUT_CANCEL"); - - if (QMessageBox::warning(this, caption, text, button0, button1) != 0) - return false; /* aborted */ - } - } - - if (!onAccept()) - return false; - - activateSelection(); - - return true; -} - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection has changed -//================================================================================= -void BlocksGUI_ExplodeDlg::SelectionIntoArgument() -{ - if (!isAllSubShapes()) - return; - - myObject = GEOM::GEOM_Object::_nil(); - mySelName->setText(""); - - if (IObjectCount() == 1) { - Standard_Boolean aResult = Standard_False; - GEOM::GEOM_Object_var anObj = - GEOMBase::ConvertIOinGEOMObject(firstIObject(), aResult); - - if ( aResult && !anObj->_is_nil() && GEOMBase::IsShape( anObj ) ) { - myObject = anObj; - mySelName->setText(GEOMBase::GetName(anObj)); - } - } - - updateButtonState(); -} - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void BlocksGUI_ExplodeDlg::SetEditCurrentArgument() -{ - QPushButton* aSender = (QPushButton*)sender(); - - if (mySelBtn == aSender) { - mySelName->setFocus(); - myEditCurrentArgument = mySelName; - myCheckBtn->setChecked(FALSE); - } - - activateSelection(); -} - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void BlocksGUI_ExplodeDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - - activateSelection(); -} - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void BlocksGUI_ExplodeDlg::enterEvent (QEvent* e) -{ - if (!GroupConstructors->isEnabled()) - this->ActivateThisDialog(); -} - -//================================================================================= -// function : ValueChangedInSpinBox() -// purpose : -//================================================================================= -void BlocksGUI_ExplodeDlg::ValueChangedInSpinBox (double newValue) -{ - if (!isAllSubShapes()) - activateSelection(); - else - updateButtonState(); -} - -//================================================================================= -// function : SubShapeToggled() -// purpose : Allow user selection of all or only selected sub shapes -// : Called when 'myCheckBtn' state change -//================================================================================= -void BlocksGUI_ExplodeDlg::SubShapeToggled() -{ - activateSelection(); -} - -//================================================================================= -// function : activateSelection -// purpose : Redisplay preview and Activate selection -//================================================================================= -void BlocksGUI_ExplodeDlg::activateSelection() -{ - clearTemporary(); - erasePreview(true); - - if (isAllSubShapes()) { // Sub-shapes selection disabled - disconnect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - globalSelection( GEOM_ALLSHAPES ); - if (myObject->_is_nil()) { - SelectionIntoArgument(); - } - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - } else { - displayPreview(true, true, false); - globalSelection(GEOM_PREVIEW); - } -} - -//================================================================================= -// function : updateButtonState -// purpose : -//================================================================================= -void BlocksGUI_ExplodeDlg::updateButtonState() -{ - if (SUIT_Session::session()->activeApplication()->desktop()->activeWindow()->getViewManager()->getType() - != OCCViewer_Viewer::Type() || myObject->_is_nil()) { - myCheckBtn->setChecked(FALSE); - myCheckBtn->setEnabled(FALSE); - } else { - myCheckBtn->setEnabled(TRUE); - } - - myNbBlocks = 0; - - if (myObject->_is_nil()) { - myBlocksNb->setText(""); - } else { - bool isOnlyBlocks = GEOM::GEOM_IBlocksOperations::_narrow - (getOperation())->IsCompoundOfBlocks(myObject, - (int)mySpinBoxMin->GetValue(), - (int)mySpinBoxMax->GetValue(), - myNbBlocks); - if (isOnlyBlocks) - myBlocksNb->setText(tr("GEOM_NB_BLOCKS_NO_OTHERS").arg(myNbBlocks)); - else - myBlocksNb->setText(tr("GEOM_NB_BLOCKS_SOME_OTHERS").arg(myNbBlocks)); - } -} - -//================================================================================= -// function : isAllSubShapes -// purpose : -//================================================================================= -bool BlocksGUI_ExplodeDlg::isAllSubShapes() const -{ - return !myCheckBtn->isChecked() || !myCheckBtn->isEnabled(); -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr BlocksGUI_ExplodeDlg::createOperation() -{ - return getGeomEngine()->GetIBlocksOperations(getStudyId()); -} - -//================================================================================= -// function : isValid() -// purpose : Verify validity of input data -//================================================================================= -bool BlocksGUI_ExplodeDlg::isValid (QString&) -{ - switch (getConstructorId()) { - case 0: - if (IsPreview()) - return !myObject->_is_nil(); - else - return !myObject->_is_nil() && (isAllSubShapes() || IObjectCount()); - default: - return false; - } - - return false; -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool BlocksGUI_ExplodeDlg::execute (ObjectList& objects) -{ - GEOM::ListOfGO_var aList; - - switch (getConstructorId()) { - case 0: - aList = GEOM::GEOM_IBlocksOperations::_narrow(getOperation())->ExplodeCompoundOfBlocks - (myObject, - (int)mySpinBoxMin->GetValue(), - (int)mySpinBoxMax->GetValue()); - break; - } - - if (!aList->length()) - return false; - - if (IsPreview()) { - clearTemporary(); - - // Store objects. They will be put in study when "Apply" is pressed - for (int i = 0, n = aList->length(); i < n; i++) { - objects.push_back(GEOM::GEOM_Object::_duplicate(aList[i])); - myTmpObjs.push_back(GEOM::GEOM_Object::_duplicate(aList[i])); - } - - return objects.size() ? true : false; - } - - // Throw away sub-shapes not selected by user if not in preview mode - // and manual selection is active - if (!isAllSubShapes()) - { - QMap selected; - - // Get names of selected objects - SALOME_ListIteratorOfListIO it (selectedIO()); - for (; it.More(); it.Next()) { - selected.insert(it.Value()->getName(), 0); - } - - // Iterate through result and select objects with names from selection - ObjectList toRemoveFromEnggine; - ObjectList::iterator anIter; - for (anIter = myTmpObjs.begin(); anIter != myTmpObjs.end(); ++anIter) { - if (selected.contains(myGeomGUI->getApp()->orb()->object_to_string(*anIter))) - objects.push_back(*anIter); - else - toRemoveFromEnggine.push_back(*anIter); - } - - // Remove from engine useless objects - ObjectList::iterator anIter2 = toRemoveFromEnggine.begin(); - for (; anIter2 != toRemoveFromEnggine.end(); ++anIter2) - getGeomEngine()->RemoveObject(*anIter2); - - myTmpObjs.clear(); - - } else { - for (int i = 0, n = aList->length(); i < n; i++) - objects.push_back(GEOM::GEOM_Object::_duplicate(aList[i])); - } - - return objects.size(); -} - -//================================================================================= -// function : clearTemporary -// purpose : Remove temporary objects from engine -//================================================================================= -void BlocksGUI_ExplodeDlg::clearTemporary() -{ - ObjectList::iterator anIter; - for (anIter = myTmpObjs.begin(); anIter != myTmpObjs.end(); ++anIter) - getGeomEngine()->RemoveObject(*anIter); - - myTmpObjs.clear(); -} - -//================================================================ -// Function : getFather -// Purpose : Get father object for object to be added in study -// ( called with addInStudy method ) -//================================================================ -GEOM::GEOM_Object_ptr BlocksGUI_ExplodeDlg::getFather (GEOM::GEOM_Object_ptr) -{ - return myObject; -} - -//================================================================ -// Function : getNewObjectName -// Purpose : Redefine this method to return proper name for a new object -//================================================================ -const char* BlocksGUI_ExplodeDlg::getNewObjectName() const -{ - return ""; -} diff --git a/src/BlocksGUI/BlocksGUI_ExplodeDlg.h b/src/BlocksGUI/BlocksGUI_ExplodeDlg.h deleted file mode 100644 index 7c83e73bf..000000000 --- a/src/BlocksGUI/BlocksGUI_ExplodeDlg.h +++ /dev/null @@ -1,105 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 CEA -// -// 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. -// -// 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.org -// -// -// -// File : BlocksGUI_ExplodeDlg.h -// Author : Julia DOROVSKIKH -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_BLOCK_EXPLODE_H -#define DIALOGBOX_BLOCK_EXPLODE_H - -#include "GEOMBase_Skeleton.h" - -class DlgRef_SpinBox; -class QTextEdit; -class QCheckBox; - -//================================================================================= -// class : BlocksGUI_ExplodeDlg -// purpose : -//================================================================================= -class BlocksGUI_ExplodeDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - BlocksGUI_ExplodeDlg (QWidget* parent, - bool modal = FALSE); - ~BlocksGUI_ExplodeDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid (QString& msg); - virtual bool execute (ObjectList& objects); - virtual GEOM::GEOM_Object_ptr getFather(GEOM::GEOM_Object_ptr theObj); - - virtual const char* getNewObjectName() const; - -private: - void Init(); - void enterEvent (QEvent* e); - - void activateSelection(); - - void updateButtonState(); - bool isAllSubShapes() const; - int shapeType() const; - - void clearTemporary(); - -private: - int myConstructorId; - - CORBA::Long myNbBlocks; - GEOM::GEOM_Object_var myObject; - - ObjectList myTmpObjs; - - QFrame* myGrp1; - - QPushButton* mySelBtn; - QLineEdit* mySelName; - - DlgRef_SpinBox* mySpinBoxMin; - DlgRef_SpinBox* mySpinBoxMax; - - QTextEdit* myBlocksNb; - - QCheckBox* myCheckBtn; - -private slots: - void ClickOnOk(); - bool ClickOnApply(); - void ActivateThisDialog(); - void ConstructorsClicked (int constructorId); - - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - - void SubShapeToggled(); - - void ValueChangedInSpinBox (double newValue); -}; - -#endif // DIALOGBOX_BLOCK_EXPLODE_H diff --git a/src/BlocksGUI/BlocksGUI_PropagateDlg.cxx b/src/BlocksGUI/BlocksGUI_PropagateDlg.cxx deleted file mode 100644 index de52f9992..000000000 --- a/src/BlocksGUI/BlocksGUI_PropagateDlg.cxx +++ /dev/null @@ -1,319 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BlocksGUI_PropagateDlg.cxx -// Author : VKN -// Module : GEOM -// $Header$ - -#include "BlocksGUI_PropagateDlg.h" -#include "GEOMImpl_Types.hxx" - -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include - -#include - -using namespace std; - -//================================================================================= -// class : BlocksGUI_PropagateDlg() -// purpose : Constructs a BlocksGUI_PropagateDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -BlocksGUI_PropagateDlg::BlocksGUI_PropagateDlg(QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_PROPAGATE"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_PROPAGATE_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_PROPAGATE_TITLE")); - RadioButton1->setPixmap(image0); - RadioButton2->close(TRUE); - RadioButton3->close(TRUE); - - QGroupBox* aMainGrp = new QGroupBox( 1, Qt::Horizontal, tr( "GEOM_SELECTED_SHAPE" ), this ); - QGroupBox* aSelGrp = new QGroupBox(3, Qt::Horizontal, aMainGrp); - aSelGrp->setFrameStyle(QFrame::NoFrame); - aSelGrp->setInsideMargin(0); - - new QLabel(tr("GEOM_OBJECT"), aSelGrp); - mySelBtn = new QPushButton(aSelGrp); - mySelBtn->setPixmap(image1); - mySelName = new QLineEdit(aSelGrp); - mySelName->setReadOnly(true); - - Layout1->addWidget(aMainGrp, 1, 0); - - /***************************************************************/ - - Init(); -} - - -//================================================================================= -// function : ~BlocksGUI_PropagateDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -BlocksGUI_PropagateDlg::~BlocksGUI_PropagateDlg() -{ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void BlocksGUI_PropagateDlg::Init() -{ - /* init variables */ - - myObject = GEOM::GEOM_Object::_nil(); - ResultName->setText( "" ); - - //myGeomGUI->SetState( 0 ); - - /* signals and slots connections */ - connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel())); - connect(myGeomGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog())); - connect(myGeomGUI, SIGNAL(SignalCloseAllDialogs()), this, SLOT(ClickOnCancel())); - - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - - connect(mySelBtn, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(mySelName, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - activateSelection(); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : Same than click on apply but close this dialog. -//================================================================================= -void BlocksGUI_PropagateDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool BlocksGUI_PropagateDlg::ClickOnApply() -{ - if ( !onAccept() ) - return false; - - initName(); - - mySelName->setText(""); - myObject = GEOM::GEOM_Object::_nil(); - - activateSelection(); - - return true; -} - - -//================================================================================= -// function : ClickOnCancel() -// purpose : -//================================================================================= -void BlocksGUI_PropagateDlg::ClickOnCancel() -{ - GEOMBase_Skeleton::ClickOnCancel(); -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection -//================================================================================= -void BlocksGUI_PropagateDlg::SelectionIntoArgument() -{ - mySelName->setText(""); - myObject = GEOM::GEOM_Object::_nil(); - - if ( IObjectCount() == 1 ) { - Handle(SALOME_InteractiveObject) anIO = firstIObject(); - Standard_Boolean aRes; - myObject = GEOMBase::ConvertIOinGEOMObject( anIO, aRes ); - if ( aRes ) - mySelName->setText( GEOMBase::GetName( myObject ) ); - } -} - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void BlocksGUI_PropagateDlg::SetEditCurrentArgument() -{ - const QObject* send = sender(); - if ( send == mySelBtn ) { - mySelName->setFocus(); - } - activateSelection(); -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void BlocksGUI_PropagateDlg::LineEditReturnPressed() -{ - const QObject* send = sender(); - if( send == mySelName ) { - GEOMBase_Skeleton::LineEditReturnPressed(); - } -} - - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : -//================================================================================= -void BlocksGUI_PropagateDlg::DeactivateActiveDialog() -{ - //myGeomGUI->SetState( -1 ); - GEOMBase_Skeleton::DeactivateActiveDialog(); -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void BlocksGUI_PropagateDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - - mySelName->setText(""); - myObject = GEOM::GEOM_Object::_nil(); - - //myGeomGUI->SetState( 0 ); - activateSelection(); -} - - -//================================================================================= -// function : enterEvent() -// purpose : Mouse enter onto the dialog to activate it -//================================================================================= -void BlocksGUI_PropagateDlg::enterEvent(QEvent* e) -{ - if ( !GroupConstructors->isEnabled() ) - ActivateThisDialog(); -} - - -//================================================================================= -// function : closeEvent() -// purpose : -//================================================================================= -void BlocksGUI_PropagateDlg::closeEvent(QCloseEvent* e) -{ - //myGeomGUI->SetState( -1 ); - GEOMBase_Skeleton::closeEvent( e ); -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr BlocksGUI_PropagateDlg::createOperation() -{ - return getGeomEngine()->GetIBlocksOperations( getStudyId() ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool BlocksGUI_PropagateDlg::isValid( QString& msg ) -{ - return !myObject->_is_nil() ; -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool BlocksGUI_PropagateDlg::execute( ObjectList& objects ) -{ - - GEOM::ListOfGO_var aList = GEOM::GEOM_IBlocksOperations::_narrow( getOperation() )->Propagate( myObject ); - ResultName->setText( "" ); - - if ( !aList->length() ) - return false; - - for ( int i = 0, n = aList->length(); i < n; i++ ) - { - objects.push_back(aList[i]._retn()); - } - - return objects.size() ? true : false; -} - -//================================================================================= -// function : activateSelection -// purpose : Activate selection -//================================================================================= -void BlocksGUI_PropagateDlg::activateSelection() -{ - TColStd_MapOfInteger aMap; - aMap.Add( GEOM_SOLID ); - aMap.Add( GEOM_COMPOUND ); - globalSelection( aMap ); - if (myObject->_is_nil()) { - SelectionIntoArgument(); - } - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; -} - -//================================================================ -// Function : getFather -// Purpose : Get father object for object to be added in study -// ( called with addInStudy method ) -//================================================================ -GEOM::GEOM_Object_ptr BlocksGUI_PropagateDlg::getFather (GEOM::GEOM_Object_ptr) -{ - return myObject; -} - diff --git a/src/BlocksGUI/BlocksGUI_PropagateDlg.h b/src/BlocksGUI/BlocksGUI_PropagateDlg.h deleted file mode 100644 index db860194b..000000000 --- a/src/BlocksGUI/BlocksGUI_PropagateDlg.h +++ /dev/null @@ -1,80 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BlocksGUI_PropagateDlg.h -// Author : VKN -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_BlocksGUI_PropagateDlg_H -#define DIALOGBOX_BlocksGUI_PropagateDlg_H - -#include "GEOMBase_Skeleton.h" - - -//================================================================================= -// class : BlocksGUI_PropagateDlg -// purpose : -//================================================================================= -class BlocksGUI_PropagateDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - BlocksGUI_PropagateDlg(QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~BlocksGUI_PropagateDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& ); - virtual bool execute( ObjectList& objects ); - virtual GEOM::GEOM_Object_ptr getFather(GEOM::GEOM_Object_ptr theObj); - -private slots: - void ClickOnOk(); - bool ClickOnApply(); - void ClickOnCancel(); - - void ActivateThisDialog(); - void DeactivateActiveDialog(); - - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - -private : - void Init(); - void enterEvent(QEvent* e); - void closeEvent(QCloseEvent* e); - void activateSelection(); - -private : - - GEOM::GEOM_Object_var myObject; - QPushButton* mySelBtn; - QLineEdit* mySelName; - -}; - -#endif // DIALOGBOX_BlocksGUI_PropagateDlg_H diff --git a/src/BlocksGUI/BlocksGUI_QuadFaceDlg.cxx b/src/BlocksGUI/BlocksGUI_QuadFaceDlg.cxx deleted file mode 100644 index 72f017df2..000000000 --- a/src/BlocksGUI/BlocksGUI_QuadFaceDlg.cxx +++ /dev/null @@ -1,413 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 CEA -// -// 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. -// -// 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.org -// -// -// -// File : BlocksGUI_QuadFaceDlg.cxx -// Author : Julia DOROVSKIKH -// Module : GEOM -// $Header$ - -#include "BlocksGUI_QuadFaceDlg.h" -#include "GEOMImpl_Types.hxx" - -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -//using namespace std; - -#include - -//================================================================================= -// class : BlocksGUI_QuadFaceDlg() -// purpose : Constructs a BlocksGUI_QuadFaceDlg which is a child of 'parent'. -//================================================================================= -BlocksGUI_QuadFaceDlg::BlocksGUI_QuadFaceDlg (QWidget* parent, - bool modal) - : GEOMBase_Skeleton(parent, "QuadFaceDlg", modal, - WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) -{ - QPixmap image1 (SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_QUAD_FACE_4_VERT"))); - QPixmap image2 (SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_QUAD_FACE_2_EDGE"))); - QPixmap image3 (SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_QUAD_FACE_4_EDGE"))); - QPixmap imageS (SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_QUAD_FACE_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_QUAD_FACE")); - - RadioButton1->setPixmap(image1); - RadioButton2->setPixmap(image2); - RadioButton3->setPixmap(image3); - - // Create first group - myGrp1 = new QGroupBox(1, Qt::Horizontal, tr("GEOM_ARGUMENTS"), this); - - QGroupBox* aSelGrp1 = new QGroupBox(3, Qt::Horizontal, myGrp1); - aSelGrp1->setFrameStyle(QFrame::NoFrame); - aSelGrp1->setInsideMargin(0); - - createSelWg(tr("VERTEX_1"), imageS, aSelGrp1, Vertex1); - createSelWg(tr("VERTEX_2"), imageS, aSelGrp1, Vertex2); - createSelWg(tr("VERTEX_3"), imageS, aSelGrp1, Vertex3); - createSelWg(tr("VERTEX_4"), imageS, aSelGrp1, Vertex4); - - // Create second group - myGrp2 = new QGroupBox(1, Qt::Horizontal, tr("GEOM_ARGUMENTS"), this); - - QGroupBox* aSelGrp2 = new QGroupBox(3, Qt::Horizontal, myGrp2); - aSelGrp2->setFrameStyle(QFrame::NoFrame); - aSelGrp2->setInsideMargin(0); - - createSelWg(tr("EDGE_1"), imageS, aSelGrp2, Edge12); - createSelWg(tr("EDGE_2"), imageS, aSelGrp2, Edge22); - - // Create fird group - myGrp3 = new QGroupBox(1, Qt::Horizontal, tr("GEOM_ARGUMENTS"), this); - - QGroupBox* aSelGrp3 = new QGroupBox(3, Qt::Horizontal, myGrp3); - aSelGrp3->setFrameStyle(QFrame::NoFrame); - aSelGrp3->setInsideMargin(0); - - createSelWg(tr("EDGE_1"), imageS, aSelGrp3, Edge14); - createSelWg(tr("EDGE_2"), imageS, aSelGrp3, Edge24); - createSelWg(tr("EDGE_3"), imageS, aSelGrp3, Edge34); - createSelWg(tr("EDGE_4"), imageS, aSelGrp3, Edge44); - - (new QLabel(myGrp3))->setSizePolicy( - QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); - - // Add groups to layout - Layout1->addWidget(myGrp1, 2, 0); - Layout1->addWidget(myGrp2, 2, 0); - Layout1->addWidget(myGrp3, 2, 0); - /***************************************************************/ - - Init(); -} - -//================================================================================= -// function : ~BlocksGUI_QuadFaceDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -BlocksGUI_QuadFaceDlg::~BlocksGUI_QuadFaceDlg() -{ - // no need to delete child widgets, Qt does it all for us -} - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void BlocksGUI_QuadFaceDlg::Init() -{ - // signals and slots connections - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - connect(GroupConstructors, SIGNAL(clicked(int)), this, SLOT(ConstructorsClicked(int))); - - QMap::iterator anIterBtn; - for (anIterBtn = mySelBtn.begin(); anIterBtn != mySelBtn.end(); ++anIterBtn) - connect(anIterBtn.data(), SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - - // init controls and fields - initName(tr("GEOM_QUAD_FACE")); - - myConstructorId = -1; - ConstructorsClicked(0); -} - -//================================================================================= -// function : ConstructorsClicked() -// purpose : Radio button management -//================================================================================= -void BlocksGUI_QuadFaceDlg::ConstructorsClicked (int constructorId) -{ - if (myConstructorId == constructorId) - return; - - myConstructorId = constructorId; - - switch (constructorId) { - case 0: - myGrp2->hide(); - myGrp3->hide(); - myGrp1->show(); - myEditCurrentArgument = mySelName[Vertex1]; - break; - case 1: - myGrp1->hide(); - myGrp3->hide(); - myGrp2->show(); - myEditCurrentArgument = mySelName[Edge12]; - break; - case 2: - myGrp1->hide(); - myGrp2->hide(); - myGrp3->show(); - myEditCurrentArgument = mySelName[Edge14]; - break; - default: - break; - } - - // clear line edits - QMap::iterator anIterLE; - for (anIterLE = mySelName.begin(); anIterLE != mySelName.end(); ++anIterLE) - anIterLE.data()->setText(""); - - // init fields - myShape1 = myShape2 = GEOM::GEOM_Object::_nil(); - myShape3 = myShape4 = myShape1; - - activateSelection(); -} - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void BlocksGUI_QuadFaceDlg::ClickOnOk() -{ - if (ClickOnApply()) - ClickOnCancel(); -} - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool BlocksGUI_QuadFaceDlg::ClickOnApply() -{ - if (!onAccept()) - return false; - - initName(); - return true; -} - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection has changed -//================================================================================= -void BlocksGUI_QuadFaceDlg::SelectionIntoArgument() -{ - erasePreview(); - myEditCurrentArgument->setText(""); - - // Get index of current selection focus - int aCurrFocus = -1; - QMap::iterator anIter; - for (anIter = mySelName.begin(); anIter != mySelName.end(); ++anIter) { - if (myEditCurrentArgument == anIter.data()) { - aCurrFocus = anIter.key(); - break; - } - } - - GEOM::GEOM_Object_var anObj; - Standard_Boolean aResult = Standard_False; - if (IObjectCount() == 1) { - anObj = GEOMBase::ConvertIOinGEOMObject(firstIObject(), aResult); - if (aResult) { - if (anObj->_is_nil()) { - aResult = Standard_False; - } else { - mySelName[aCurrFocus]->setText(GEOMBase::GetName(anObj)); - } - } else { - anObj = GEOM::GEOM_Object::_nil(); - } - } - - if (aCurrFocus == Vertex1 || aCurrFocus == Edge12 || aCurrFocus == Edge14) { - myShape1 = anObj; - } else if (aCurrFocus == Vertex2 || aCurrFocus == Edge22 || aCurrFocus == Edge24) { - myShape2 = anObj; - } else if (aCurrFocus == Vertex3 || aCurrFocus == Edge34) { - myShape3 = anObj; - } else if (aCurrFocus == Vertex4 || aCurrFocus == Edge44) { - myShape4 = anObj; - } else { - return; - } - - displayPreview(); -} - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void BlocksGUI_QuadFaceDlg::SetEditCurrentArgument() -{ - QPushButton* aSender = (QPushButton*)sender(); - - QMap::iterator anIter; - for (anIter = mySelBtn.begin(); anIter != mySelBtn.end(); ++anIter) { - if (anIter.data() == aSender) { - mySelName[anIter.key()]->setFocus(); - myEditCurrentArgument = mySelName[anIter.key()]; - } - } - - activateSelection(); -} - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void BlocksGUI_QuadFaceDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - - activateSelection(); - displayPreview(); -} - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void BlocksGUI_QuadFaceDlg::enterEvent (QEvent* e) -{ - if (!GroupConstructors->isEnabled()) - this->ActivateThisDialog(); -} - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : -//================================================================================= -//void BlocksGUI_QuadFaceDlg::DeactivateActiveDialog() -//{ -// // disconnect selection -// GEOMBase_Skeleton::DeactivateActiveDialog(); -//} - -//================================================================================= -// function : createSelWg() -// purpose : -//================================================================================= -void BlocksGUI_QuadFaceDlg::createSelWg (const QString& theLbl, - QPixmap& thePix, - QWidget* theParent, - const int theId) -{ - new QLabel(theLbl, theParent); - mySelBtn[theId] = new QPushButton(theParent); - mySelBtn[theId]->setPixmap(thePix); - mySelName[theId] = new QLineEdit(theParent); - mySelName[theId]->setReadOnly(true); -} - -//================================================================================= -// function : activateSelection -// purpose : Activate selection in accordance with myEditCurrentArgument -//================================================================================= -void BlocksGUI_QuadFaceDlg::activateSelection() -{ - if (myEditCurrentArgument == mySelName[Vertex1] || - myEditCurrentArgument == mySelName[Vertex2] || - myEditCurrentArgument == mySelName[Vertex3] || - myEditCurrentArgument == mySelName[Vertex4]) { - - globalSelection(GEOM_POINT); - - } else { - globalSelection(GEOM_EDGE); - } - - SelectionIntoArgument(); -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr BlocksGUI_QuadFaceDlg::createOperation() -{ - return getGeomEngine()->GetIBlocksOperations(getStudyId()); -} - -//================================================================================= -// function : isValid -// purpose : Verify validity of input data -//================================================================================= -bool BlocksGUI_QuadFaceDlg::isValid (QString&) -{ - switch (getConstructorId()) { - case 0: - return (!myShape1->_is_nil() && !myShape2->_is_nil() && - !myShape3->_is_nil() && !myShape4->_is_nil()); - case 1: - return (!myShape1->_is_nil() && !myShape2->_is_nil()); - case 2: - return (!myShape1->_is_nil() && !myShape2->_is_nil() && - !myShape3->_is_nil() && !myShape4->_is_nil()); - default: - return false; - } - return false; -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool BlocksGUI_QuadFaceDlg::execute (ObjectList& objects) -{ - bool res = false; - - GEOM::GEOM_Object_var anObj; - - switch (getConstructorId()) { - case 0: - anObj = GEOM::GEOM_IBlocksOperations::_narrow(getOperation())->MakeQuad4Vertices - (myShape1, myShape2, myShape3, myShape4); - res = true; - break; - case 1: - anObj = GEOM::GEOM_IBlocksOperations::_narrow(getOperation())->MakeQuad2Edges - (myShape1, myShape2); - res = true; - break; - case 2: - anObj = GEOM::GEOM_IBlocksOperations::_narrow(getOperation())->MakeQuad - (myShape1, myShape2, myShape3, myShape4); - res = true; - break; - default: - break; - } - - if (!anObj->_is_nil()) - objects.push_back(anObj._retn()); - - return res; -} diff --git a/src/BlocksGUI/BlocksGUI_QuadFaceDlg.h b/src/BlocksGUI/BlocksGUI_QuadFaceDlg.h deleted file mode 100644 index 0df8ae01c..000000000 --- a/src/BlocksGUI/BlocksGUI_QuadFaceDlg.h +++ /dev/null @@ -1,89 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 CEA -// -// 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. -// -// 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.org -// -// -// -// File : BlocksGUI_QuadFaceDlg.h -// Author : Julia DOROVSKIKH -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_QUAD_FACE_H -#define DIALOGBOX_QUAD_FACE_H - -#include "GEOMBase_Skeleton.h" - -//================================================================================= -// class : BlocksGUI_QuadFaceDlg -// purpose : -//================================================================================= -class BlocksGUI_QuadFaceDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - - enum { Vertex1, Vertex2, Vertex3, Vertex4, - Edge12, Edge22, - Edge14, Edge24, Edge34, Edge44 }; - -public: - BlocksGUI_QuadFaceDlg (QWidget* parent, - bool modal = FALSE); - ~BlocksGUI_QuadFaceDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid (QString& msg); - virtual bool execute (ObjectList& objects); - -private: - void Init(); - void enterEvent (QEvent* e); - - void createSelWg (const QString&, QPixmap&, QWidget*, const int); - void activateSelection(); - -private: - int myConstructorId; - - GEOM::GEOM_Object_var myShape1; - GEOM::GEOM_Object_var myShape2; - GEOM::GEOM_Object_var myShape3; - GEOM::GEOM_Object_var myShape4; - - QFrame* myGrp1; - QFrame* myGrp2; - QFrame* myGrp3; - - QMap mySelBtn; - QMap mySelName; - -private slots: - void ClickOnOk(); - bool ClickOnApply(); - void ActivateThisDialog(); -// void DeactivateActiveDialog(); - void ConstructorsClicked( int constructorId ); - - void SelectionIntoArgument(); - void SetEditCurrentArgument(); -}; - -#endif // DIALOGBOX_QUAD_FACE_H diff --git a/src/BlocksGUI/BlocksGUI_TrsfDlg.cxx b/src/BlocksGUI/BlocksGUI_TrsfDlg.cxx deleted file mode 100644 index 7dca35c48..000000000 --- a/src/BlocksGUI/BlocksGUI_TrsfDlg.cxx +++ /dev/null @@ -1,520 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 CEA -// -// 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. -// -// 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.org -// -// -// -// File : BlocksGUI_TrsfDlg.cxx -// Author : Julia DOROVSKIKH -// Module : GEOM -// $Header$ - -#include "BlocksGUI_TrsfDlg.h" - -#include "DlgRef_SpinBox.h" - -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" -#include "OCCViewer_ViewModel.h" - -#include - -#include - -//================================================================================= -// class : BlocksGUI_TrsfDlg() -// purpose : Constructs a BlocksGUI_TrsfDlg which is a child of 'parent'. -//================================================================================= -BlocksGUI_TrsfDlg::BlocksGUI_TrsfDlg (QWidget* parent, - bool modal) - : GEOMBase_Skeleton(parent, "TrsfDlg", modal, - WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) -{ - QPixmap image1 (SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_BLOCK_MULTITRSF_SIMPLE"))); - QPixmap image2 (SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_BLOCK_MULTITRSF_DOUBLE"))); - QPixmap imageS (SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_BLOCK_MULTITRSF_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_BLOCK_MULTITRSF")); - - RadioButton1->setPixmap(image1); - RadioButton2->setPixmap(image2); - RadioButton3->close(TRUE); - - // Create first group - myGrp1 = new QGroupBox(1, Qt::Horizontal, tr("GEOM_BLOCK_MULTITRSF_SIMPLE"), this); - - QGroupBox* aSelGrp1 = new QGroupBox(3, Qt::Horizontal, myGrp1); - aSelGrp1->setFrameStyle(QFrame::NoFrame); - aSelGrp1->setInsideMargin(0); - - createSelWg(tr("GEOM_MAIN_OBJECT"), imageS, aSelGrp1, MainObj1); - createSelWg(tr("FACE_1"), imageS, aSelGrp1, Face1); - createSelWg(tr("FACE_2"), imageS, aSelGrp1, Face2); - - QGroupBox* aSpinGrp1 = new QGroupBox(1, Qt::Vertical, myGrp1); - aSpinGrp1->setFrameStyle(QFrame::NoFrame); - aSpinGrp1->setInsideMargin(0); - - new QLabel(tr("GEOM_NB_TIMES"), aSpinGrp1); - mySpinBox[SpinBox1] = new DlgRef_SpinBox(aSpinGrp1); - - // Create second group - myGrp2 = new QGroupBox(1, Qt::Horizontal, tr("GEOM_BLOCK_MULTITRSF_DOUBLE"), this); - - // U trsf - QGroupBox* aSelGrp2U = new QGroupBox(3, Qt::Horizontal, myGrp2); - aSelGrp2U->setFrameStyle(QFrame::NoFrame); - aSelGrp2U->setInsideMargin(0); - - createSelWg(tr("GEOM_MAIN_OBJECT"), imageS, aSelGrp2U, MainObj2); - createSelWg(tr("FACE_1U"), imageS, aSelGrp2U, Face1U); - createSelWg(tr("FACE_2U"), imageS, aSelGrp2U, Face2U); - - QGroupBox* aSpinGrp2U = new QGroupBox(1, Qt::Vertical, myGrp2); - aSpinGrp2U->setFrameStyle(QFrame::NoFrame); - aSpinGrp2U->setInsideMargin(0); - - new QLabel(tr("GEOM_NB_TIMES_U"), aSpinGrp2U); - mySpinBox[SpinBox2U] = new DlgRef_SpinBox(aSpinGrp2U); - - // V trsf - QGroupBox* aSelGrp2V = new QGroupBox(3, Qt::Horizontal, myGrp2); - aSelGrp2V->setFrameStyle(QFrame::NoFrame); - aSelGrp2V->setInsideMargin(0); - - createSelWg(tr("FACE_1V"), imageS, aSelGrp2V, Face1V); - createSelWg(tr("FACE_2V"), imageS, aSelGrp2V, Face2V); - - QGroupBox* aSpinGrp2V = new QGroupBox(1, Qt::Vertical, myGrp2); - aSpinGrp2V->setFrameStyle(QFrame::NoFrame); - aSpinGrp2V->setInsideMargin(0); - - new QLabel(tr("GEOM_NB_TIMES_V"), aSpinGrp2V); - mySpinBox[SpinBox2V] = new DlgRef_SpinBox(aSpinGrp2V); - - (new QLabel(myGrp2))->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); - - // Add groups to layout - Layout1->addWidget( myGrp1, 2, 0 ); - Layout1->addWidget( myGrp2, 2, 0 ); - /***************************************************************/ - - Init(); -} - -//================================================================================= -// function : ~BlocksGUI_TrsfDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -BlocksGUI_TrsfDlg::~BlocksGUI_TrsfDlg() -{ - // no need to delete child widgets, Qt does it all for us -} - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void BlocksGUI_TrsfDlg::Init() -{ - // Set range of spinboxes - double SpecificStep = 1.0; - QMap::iterator anIter; - for (anIter = mySpinBox.begin(); anIter != mySpinBox.end(); ++anIter) { - anIter.data()->RangeStepAndValidator(1.0, 999.999, SpecificStep, 3); - } - - // signals and slots connections - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - connect(GroupConstructors, SIGNAL(clicked(int)), this, SLOT(ConstructorsClicked(int))); - - QMap::iterator anIterBtn; - for (anIterBtn = mySelBtn.begin(); anIterBtn != mySelBtn.end(); ++anIterBtn) - connect(anIterBtn.data(), SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - - QMap::iterator anIterSpin; - for (anIterSpin = mySpinBox.begin(); anIterSpin != mySpinBox.end(); ++anIterSpin) - connect(anIterSpin.data(), SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - - // init controls and fields - initName(tr("GEOM_BLOCK_MULTITRSF")); - - myConstructorId = -1; - ConstructorsClicked(0); -} - -//================================================================================= -// function : ConstructorsClicked() -// purpose : Radio button management -//================================================================================= -void BlocksGUI_TrsfDlg::ConstructorsClicked (int constructorId) -{ - if (myConstructorId == constructorId) - return; - - myConstructorId = constructorId; - - switch (constructorId) { - case 0: - myGrp2->hide(); - myGrp1->show(); - mySpinBox[SpinBox1]->SetValue(2.0); - myEditCurrentArgument = mySelName[MainObj1]; - myFaces[Face1] = -1; - myFaces[Face2] = -1; - break; - case 1: - myGrp1->hide(); - myGrp2->show(); - mySpinBox[SpinBox2U]->SetValue(2.0); - mySpinBox[SpinBox2V]->SetValue(2.0); - myEditCurrentArgument = mySelName[MainObj2]; - myFaces[Face1U] = -1; - myFaces[Face2U] = -1; - myFaces[Face1V] = -1; - myFaces[Face2V] = -1; - break; - default: - break; - } - - // clear line edits - QMap::iterator anIterLE; - for (anIterLE = mySelName.begin(); anIterLE != mySelName.end(); ++anIterLE) - anIterLE.data()->setText(""); - - // init fields - myShape = GEOM::GEOM_Object::_nil(); - - activateSelection(); -// enableWidgets(); -// displayPreview(); -} - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void BlocksGUI_TrsfDlg::ClickOnOk() -{ - if (ClickOnApply()) - ClickOnCancel(); -} - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool BlocksGUI_TrsfDlg::ClickOnApply() -{ - if (!onAccept()) - return false; - - initName(); - return true; -} - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection has changed -//================================================================================= -void BlocksGUI_TrsfDlg::SelectionIntoArgument() -{ - erasePreview(); - myEditCurrentArgument->setText(""); - - // Get index of current selection focus - int aCurrFocus = -1; - QMap::iterator anIter; - for (anIter = mySelName.begin(); anIter != mySelName.end(); ++anIter) { - if (myEditCurrentArgument == anIter.data()) { - aCurrFocus = anIter.key(); - break; - } - } - - // If selection of main object is activated - if (aCurrFocus == MainObj1 || aCurrFocus == MainObj2) { - if (IObjectCount() == 1) { - Standard_Boolean aResult = Standard_False; - GEOM::GEOM_Object_var anObj = - GEOMBase::ConvertIOinGEOMObject(firstIObject(), aResult); - - if (aResult && !anObj->_is_nil() && GEOMBase::IsShape( anObj ) ) { - myShape = anObj; - mySelName[aCurrFocus]->setText(GEOMBase::GetName(anObj)); - enableWidgets(); - return; - } - } - - myShape = GEOM::GEOM_Object::_nil(); - enableWidgets(); - } - // If face selection is activated - else if (aCurrFocus == Face1 || aCurrFocus == Face2 || - aCurrFocus == Face1U || aCurrFocus == Face2U || - aCurrFocus == Face1V || aCurrFocus == Face2V) { - if (IObjectCount() == 1) { - Standard_Boolean aResult = Standard_False; - GEOM::GEOM_Object_var anObj = - GEOMBase::ConvertIOinGEOMObject(firstIObject(), aResult); - - if ( aResult && !anObj->_is_nil() && GEOMBase::IsShape( anObj ) ) { - TColStd_IndexedMapOfInteger anIndexes; - ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr()->GetIndexes( firstIObject(), anIndexes ); - - if (anIndexes.Extent() == 1) { - int anIndex = anIndexes(1); - QString aFaceName = QString(GEOMBase::GetName(anObj)) + ":%1"; - myEditCurrentArgument->setText(aFaceName.arg(anIndex)); - myFaces[aCurrFocus] = anIndex; - displayPreview(); - return; - } - } - } - - myFaces[aCurrFocus] = -1; - } -} - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void BlocksGUI_TrsfDlg::SetEditCurrentArgument() -{ - QPushButton* aSender = (QPushButton*)sender(); - - QMap::iterator anIter; - for (anIter = mySelBtn.begin(); anIter != mySelBtn.end(); ++anIter) { - if (anIter.data() == aSender) { - mySelName[anIter.key()]->setFocus(); - myEditCurrentArgument = mySelName[anIter.key()]; - break; - } - } - - activateSelection(); -} - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void BlocksGUI_TrsfDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - - activateSelection(); - displayPreview(); -} - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void BlocksGUI_TrsfDlg::enterEvent (QEvent* e) -{ - if (!GroupConstructors->isEnabled()) - this->ActivateThisDialog(); -} - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : -//================================================================================= -//void BlocksGUI_TrsfDlg::DeactivateActiveDialog() -//{ -// // disconnect selection -// GEOMBase_Skeleton::DeactivateActiveDialog(); -//} - -//================================================================================= -// function : ValueChangedInSpinBox() -// purpose : -//================================================================================= -void BlocksGUI_TrsfDlg::ValueChangedInSpinBox (double newValue) -{ - displayPreview(); -} - -//================================================================================= -// function : createSelWg() -// purpose : -//================================================================================= -void BlocksGUI_TrsfDlg::createSelWg (const QString& theLbl, - QPixmap& thePix, - QWidget* theParent, - const int theId) -{ - new QLabel(theLbl, theParent); - mySelBtn[theId] = new QPushButton(theParent); - mySelBtn[theId]->setPixmap(thePix); - mySelName[theId] = new QLineEdit(theParent); - mySelName[theId]->setReadOnly(true); -} - -//================================================================================= -// function : activateSelection -// purpose : Activate selection in accordance with myEditCurrentArgument -//================================================================================= -void BlocksGUI_TrsfDlg::activateSelection() -{ - if (!myShape->_is_nil() && - (myEditCurrentArgument == mySelName[ Face1 ] || - myEditCurrentArgument == mySelName[ Face2 ] || - myEditCurrentArgument == mySelName[ Face1U ] || - myEditCurrentArgument == mySelName[ Face2U ] || - myEditCurrentArgument == mySelName[ Face1V ] || - myEditCurrentArgument == mySelName[ Face2V ])) { - - // Local selection is available only in the OCC Viewer - if (SUIT_Session::session()->activeApplication()->desktop()->activeWindow()->getViewManager()->getType() - == OCCViewer_Viewer::Type()) { - localSelection(myShape, TopAbs_FACE); - } else { - return; - } - } else { - globalSelection( GEOM_ALLSHAPES ); - } - - SelectionIntoArgument(); -} - -//================================================================================= -// function : enableWidgets -// purpose : Enable widgets of faces in accordance with value of main object -//================================================================================= -void BlocksGUI_TrsfDlg::enableWidgets() -{ - int anId = getConstructorId(); - - bool toEnable = !myShape->_is_nil(); - - if (anId == 0) { - mySelName[Face1]->setEnabled(toEnable); - mySelName[Face2]->setEnabled(toEnable); - mySelBtn[Face1]->setEnabled(toEnable); - mySelBtn[Face2]->setEnabled(toEnable); - - if (!toEnable) { - mySelName[Face1]->setText(""); - mySelName[Face2]->setText(""); - myFaces[Face1] = -1; - myFaces[Face2] = -1; - } - } else if (anId == 1) { - mySelName[Face1U]->setEnabled(toEnable); - mySelName[Face2U]->setEnabled(toEnable); - mySelName[Face1V]->setEnabled(toEnable); - mySelName[Face2V]->setEnabled(toEnable); - mySelBtn[Face1U]->setEnabled(toEnable); - mySelBtn[Face2U]->setEnabled(toEnable); - mySelBtn[Face1V]->setEnabled(toEnable); - mySelBtn[Face2V]->setEnabled(toEnable); - - if (!toEnable) { - mySelName[Face1U]->setText(""); - mySelName[Face2U]->setText(""); - mySelName[Face1V]->setText(""); - mySelName[Face2V]->setText(""); - myFaces[Face1U] = -1; - myFaces[Face2U] = -1; - myFaces[Face1V] = -1; - myFaces[Face2V] = -1; - } - } -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr BlocksGUI_TrsfDlg::createOperation() -{ - return getGeomEngine()->GetIBlocksOperations(getStudyId()); -} - -//================================================================================= -// function : ClickOnApply() -// purpose : Verify validity of input data -//================================================================================= -bool BlocksGUI_TrsfDlg::isValid (QString&) -{ - switch (getConstructorId()) { - case 0: - return !myShape->_is_nil() && myFaces[Face1] > 0; - case 1: - return !myShape->_is_nil() && myFaces[Face1U] > 0 && myFaces[Face1V] > 0; - default: - return false; - } - return false; -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool BlocksGUI_TrsfDlg::execute (ObjectList& objects) -{ - bool res = false; - - GEOM::GEOM_Object_var anObj; - - switch (getConstructorId()) { - case 0: - anObj = GEOM::GEOM_IBlocksOperations::_narrow(getOperation())->MakeMultiTransformation1D - (myShape, - myFaces[Face1], - myFaces[Face2], - (int)mySpinBox[SpinBox1]->GetValue()); - res = true; - break; - case 1: - anObj = GEOM::GEOM_IBlocksOperations::_narrow(getOperation())->MakeMultiTransformation2D - (myShape, - myFaces[Face1U], - myFaces[Face2U], - (int)mySpinBox[SpinBox2U]->GetValue(), - myFaces[Face1V], - myFaces[Face2V], - (int)mySpinBox[SpinBox2V]->GetValue()); - res = true; - break; - } - - if (!anObj->_is_nil()) - objects.push_back(anObj._retn()); - - return res; -} diff --git a/src/BlocksGUI/BlocksGUI_TrsfDlg.h b/src/BlocksGUI/BlocksGUI_TrsfDlg.h deleted file mode 100644 index a5bdc30d6..000000000 --- a/src/BlocksGUI/BlocksGUI_TrsfDlg.h +++ /dev/null @@ -1,91 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 CEA -// -// 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. -// -// 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.org -// -// -// -// File : BlocksGUI_TrsfDlg.h -// Author : Julia DOROVSKIKH -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_BLOCK_MULTITRSF_H -#define DIALOGBOX_BLOCK_MULTITRSF_H - -#include "GEOMBase_Skeleton.h" - -class DlgRef_SpinBox; - -//================================================================================= -// class : BlocksGUI_TrsfDlg -// purpose : -//================================================================================= -class BlocksGUI_TrsfDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - - enum { MainObj1, Face1, Face2, MainObj2, Face1U, Face2U, Face1V, Face2V }; - enum { SpinBox1, SpinBox2U, SpinBox2V }; - -public: - BlocksGUI_TrsfDlg (QWidget* parent, - bool modal = FALSE); - ~BlocksGUI_TrsfDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid (QString& msg); - virtual bool execute (ObjectList& objects); - -private: - void Init(); - void enterEvent (QEvent* e); - - void createSelWg (const QString&, QPixmap&, QWidget*, const int); - void activateSelection(); - void enableWidgets(); - -private: - int myConstructorId; - - GEOM::GEOM_Object_var myShape; - QMap myFaces; - - QFrame* myGrp1; - QFrame* myGrp2; - - QMap mySelBtn; - QMap mySelName; - QMap mySpinBox; - -private slots: - void ClickOnOk(); - bool ClickOnApply(); - void ActivateThisDialog(); -// void DeactivateActiveDialog(); - void ConstructorsClicked (int constructorId); - - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - - void ValueChangedInSpinBox (double newValue); -}; - -#endif // DIALOGBOX_BLOCK_MULTITRSF_H diff --git a/src/BlocksGUI/Makefile.in b/src/BlocksGUI/Makefile.in deleted file mode 100644 index 99cbd1e09..000000000 --- a/src/BlocksGUI/Makefile.in +++ /dev/null @@ -1,68 +0,0 @@ -# GEOM BUILDGUI : -# -# Copyright (C) 2003 CEA -# -# 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. -# -# 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.org -# -# -# -# File : Makefile.in -# Author : Julia DOROVSKIKH (OCC) -# Module : GEOM -# $Header$ - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -# header files -EXPORT_HEADERS= - -# Libraries targets -LIB = libBlocksGUI.la - -LIB_SRC = \ - BlocksGUI.cxx \ - BlocksGUI_QuadFaceDlg.cxx \ - BlocksGUI_BlockDlg.cxx \ - BlocksGUI_ExplodeDlg.cxx \ - BlocksGUI_PropagateDlg.cxx \ - BlocksGUI_TrsfDlg.cxx - -LIB_MOC = \ - BlocksGUI_QuadFaceDlg.h \ - BlocksGUI_BlockDlg.h \ - BlocksGUI_ExplodeDlg.h \ - BlocksGUI_PropagateDlg.h \ - BlocksGUI_TrsfDlg.h - -LIB_CLIENT_IDL = SALOME_Exception.idl SALOME_GenericObj.idl SALOME_Component.idl - -LIB_SERVER_IDL = - -# additionnal information to compil and link file - -CPPFLAGS += $(QT_INCLUDES) $(VTK_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES) $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome -CXXFLAGS += -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome - -LDFLAGS += -lGEOMFiltersSelection -lGEOMBase - -@CONCLUDE@ diff --git a/src/BooleanGUI/BooleanGUI.cxx b/src/BooleanGUI/BooleanGUI.cxx deleted file mode 100644 index 5f0865f6c..000000000 --- a/src/BooleanGUI/BooleanGUI.cxx +++ /dev/null @@ -1,110 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BooleanGUI.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header$ - - -#include "BooleanGUI.h" - -#include "SUIT_Desktop.h" -#include "BooleanGUI_Dialog.h" - -#include "GeometryGUI.h" - -using namespace std; - -BooleanGUI* BooleanGUI::myGUIObject = 0; - -//======================================================================= -// function : GetBooleanGUI() -// purpose : Get the only BooleanGUI object [ static ] -//======================================================================= -BooleanGUI* BooleanGUI::GetBooleanGUI( GeometryGUI* parent ) -{ - if ( myGUIObject == 0 ) { - // init BooleanGUI only once - myGUIObject = new BooleanGUI( parent ); - } - return myGUIObject; -} - -//======================================================================= -// function : BooleanGUI() -// purpose : Constructor -//======================================================================= -BooleanGUI::BooleanGUI( GeometryGUI* parent ) : GEOMGUI( parent ) -{ -} - - -//======================================================================= -// function : ~BooleanGUI() -// purpose : Destructor -//======================================================================= -BooleanGUI::~BooleanGUI() -{ -} - - -//======================================================================= -// function : OnGUIEvent() -// purpose : -//======================================================================= -bool BooleanGUI::OnGUIEvent(int theCommandID, SUIT_Desktop* parent) -{ - getGeometryGUI()->EmitSignalDeactivateDialog(); - - int anOperation = 0; - if ( theCommandID == 5011 ) - anOperation = FUSE; - else if ( theCommandID == 5012 ) - anOperation = COMMON; - else if ( theCommandID == 5013 ) - anOperation = CUT; - else if ( theCommandID == 5014 ) - anOperation = SECTION; - else - return false; - - QDialog* aDlg = new BooleanGUI_Dialog( anOperation, parent, ""); - aDlg->show(); - - return true; -} - -//===================================================================================== -// EXPORTED METHODS -//===================================================================================== -extern "C" -{ -#ifdef WNT - __declspec( dllexport ) -#endif - GEOMGUI* GetLibGUI( GeometryGUI* parent ) - { - return BooleanGUI::GetBooleanGUI( parent ); - } -} diff --git a/src/BooleanGUI/BooleanGUI.h b/src/BooleanGUI/BooleanGUI.h deleted file mode 100644 index a0fdf6c23..000000000 --- a/src/BooleanGUI/BooleanGUI.h +++ /dev/null @@ -1,57 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BooleanGUI.h -// Author : Damien COQUERET -// Module : GEOM -// $Header$ - -#ifndef BOOLEANGUI_H -#define BOOLEANGUI_H - -#include "GEOMGUI.h" - -//================================================================================= -// class : BooleanGUI -// purpose : -//================================================================================= -class BooleanGUI : public GEOMGUI -{ -protected: - BooleanGUI( GeometryGUI* parent ); // hide constructor to avoid direct creation - -public: - enum BooleanOperation { COMMON = 1, CUT = 2, FUSE = 3, SECTION = 4 }; - - ~BooleanGUI(); - - // Get the only BooleanGUI object - static BooleanGUI* GetBooleanGUI( GeometryGUI* parent ); - - bool OnGUIEvent(int theCommandID, SUIT_Desktop* parent); - -private: - static BooleanGUI* myGUIObject; // the only BooleanGUI object -}; - -#endif diff --git a/src/BooleanGUI/BooleanGUI_Dialog.cxx b/src/BooleanGUI/BooleanGUI_Dialog.cxx deleted file mode 100644 index a50f0881c..000000000 --- a/src/BooleanGUI/BooleanGUI_Dialog.cxx +++ /dev/null @@ -1,289 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BooleanGUI_Dialog.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "BooleanGUI_Dialog.h" -#include "BooleanGUI.h" -#include "DlgRef_2Sel_QTD.h" - -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include - -using namespace std; - -//================================================================================= -// class : BooleanGUI_Dialog() -// purpose : Constructs a BooleanGUI_Dialog which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -BooleanGUI_Dialog::BooleanGUI_Dialog( const int theOperation, QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, fl), - myOperation( theOperation ) -{ - QPixmap image0; - QString aTitle, aCaption; - switch ( myOperation ) - { - case BooleanGUI::COMMON: - image0 = QPixmap( SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_COMMON"))); - aTitle = tr("GEOM_COMMON"); - aCaption = tr("GEOM_COMMON_TITLE"); - break; - case BooleanGUI::CUT: - image0 = QPixmap( SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_CUT"))); - aTitle = tr("GEOM_CUT"); - aCaption = tr("GEOM_CUT_TITLE"); - break; - case BooleanGUI::FUSE: - image0 = QPixmap( SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_FUSE"))); - aTitle = tr("GEOM_FUSE"); - aCaption = tr("GEOM_FUSE_TITLE"); - break; - case BooleanGUI::SECTION: - image0 = QPixmap( SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_SECTION"))); - aTitle = tr("GEOM_SECTION"); - aCaption = tr("GEOM_SECTION_TITLE"); - break; - } - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption( aCaption ); - - /***************************************************************/ - GroupConstructors->setTitle( aTitle ); - RadioButton1->setPixmap( image0 ); - RadioButton2->close(TRUE); - RadioButton3->close(TRUE); - - myGroup = new DlgRef_2Sel_QTD(this, "GroupCommon"); - myGroup->GroupBox1->setTitle(tr("GEOM_ARGUMENTS")); - if ( myOperation != BooleanGUI::CUT ) - { - myGroup->TextLabel1->setText(tr("GEOM_OBJECT_I").arg("1")); - myGroup->TextLabel2->setText(tr("GEOM_OBJECT_I").arg("2")); - } - else - { - myGroup->TextLabel1->setText(tr("GEOM_MAIN_OBJECT")); - myGroup->TextLabel2->setText(tr("GEOM_TOOL_OBJECT")); - } - - myGroup->PushButton1->setPixmap(image1); - myGroup->PushButton2->setPixmap(image1); - myGroup->LineEdit1->setReadOnly( true ); - myGroup->LineEdit2->setReadOnly( true ); - - Layout1->addWidget(myGroup, 2, 0); - /***************************************************************/ - - /* Initialisation */ - Init(); -} - - -//================================================================================= -// function : ~BooleanGUI_Dialog() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -BooleanGUI_Dialog::~BooleanGUI_Dialog() -{ -} - - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void BooleanGUI_Dialog::Init() -{ - /* init variables */ - myEditCurrentArgument = myGroup->LineEdit1; - - /* signals and slots connections */ - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - - connect(myGroup->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(myGroup->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect(myGroup->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(myGroup->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - - initName( GroupConstructors->title() ); - - globalSelection( GEOM_ALLSHAPES ); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void BooleanGUI_Dialog::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool BooleanGUI_Dialog::ClickOnApply() -{ - if ( !onAccept() ) - return false; - - initName(); - return true; -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection has changed -//================================================================================= -void BooleanGUI_Dialog::SelectionIntoArgument() -{ - myEditCurrentArgument->setText( "" ); - - if ( IObjectCount() != 1 ) - { - if ( myEditCurrentArgument == myGroup->LineEdit1 ) myObject1 = GEOM::GEOM_Object::_nil(); - else if ( myEditCurrentArgument == myGroup->LineEdit2 ) myObject2 = GEOM::GEOM_Object::_nil(); - return; - } - - // nbSel == 1 - Standard_Boolean aRes = Standard_False; - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), aRes ); - if ( !CORBA::is_nil( aSelectedObject ) && aRes && GEOMBase::IsShape( aSelectedObject ) ) - { - myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) ); - if ( myEditCurrentArgument == myGroup->LineEdit1 ) myObject1 = aSelectedObject; - else if ( myEditCurrentArgument == myGroup->LineEdit2 ) myObject2 = aSelectedObject; - } -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void BooleanGUI_Dialog::SetEditCurrentArgument() -{ - QPushButton* send = (QPushButton*)sender(); - - if ( send == myGroup->PushButton1 ) myEditCurrentArgument = myGroup->LineEdit1; - else if ( send == myGroup->PushButton2 ) myEditCurrentArgument = myGroup->LineEdit2; - - myEditCurrentArgument->setFocus(); - SelectionIntoArgument(); -} - - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void BooleanGUI_Dialog::LineEditReturnPressed() -{ - QLineEdit* send = (QLineEdit*)sender(); - if ( send == myGroup->LineEdit1 || send == myGroup->LineEdit2 ) - { - myEditCurrentArgument = send; - GEOMBase_Skeleton::LineEditReturnPressed(); - } -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void BooleanGUI_Dialog::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - globalSelection( GEOM_ALLSHAPES ); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; -} - - -//================================================================================= -// function : enterEvent() -// purpose : when mouse enter onto the QWidget -//================================================================================= -void BooleanGUI_Dialog::enterEvent(QEvent * e) -{ - if ( !GroupConstructors->isEnabled() ) - ActivateThisDialog(); -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr BooleanGUI_Dialog::createOperation() -{ - return getGeomEngine()->GetIBooleanOperations( getStudyId() ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool BooleanGUI_Dialog::isValid( QString& msg ) -{ - return !CORBA::is_nil( myObject1 ) && !CORBA::is_nil( myObject2 ); -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool BooleanGUI_Dialog::execute( ObjectList& objects ) -{ - GEOM::GEOM_Object_var anObj; - - anObj = GEOM::GEOM_IBooleanOperations::_narrow( getOperation() )->MakeBoolean( myObject1, myObject2, myOperation ); - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - - return true; -} diff --git a/src/BooleanGUI/BooleanGUI_Dialog.h b/src/BooleanGUI/BooleanGUI_Dialog.h deleted file mode 100644 index 70f6c4b75..000000000 --- a/src/BooleanGUI/BooleanGUI_Dialog.h +++ /dev/null @@ -1,75 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BooleanGUI_Dialog.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef BooleanGUI_Dialog_H -#define BooleanGUI_Dialog_H - -#include "GEOMBase_Skeleton.h" - -class DlgRef_2Sel_QTD; - -//================================================================================= -// class : BooleanGUI_Dialog -// purpose : -//================================================================================= -class BooleanGUI_Dialog : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - BooleanGUI_Dialog( const int theOperation, QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~BooleanGUI_Dialog(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& ); - virtual bool execute( ObjectList& objects ); - -private: - int myOperation; - - void Init(); - void enterEvent(QEvent * e); - - GEOM::GEOM_Object_var myObject1; - GEOM::GEOM_Object_var myObject2; - - DlgRef_2Sel_QTD* myGroup; - -private slots: - void ClickOnOk(); - bool ClickOnApply(); - void SetEditCurrentArgument(); - void SelectionIntoArgument(); - void LineEditReturnPressed(); - void ActivateThisDialog(); - -}; - -#endif // BooleanGUI_Dialog_H diff --git a/src/BooleanGUI/Makefile.in b/src/BooleanGUI/Makefile.in deleted file mode 100644 index f90b5d458..000000000 --- a/src/BooleanGUI/Makefile.in +++ /dev/null @@ -1,60 +0,0 @@ -# GEOM BOOLEANGUI : -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Author : Damien COQUERET (OCC) -# Module : GEOM -# $Header: - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -# header files -EXPORT_HEADERS= - -# Libraries targets -LIB = libBooleanGUI.la - -LIB_SRC = BooleanGUI.cxx \ - BooleanGUI_Dialog.cxx - -LIB_MOC = \ - BooleanGUI_Dialog.h - -LIB_CLIENT_IDL = SALOME_Exception.idl SALOME_GenericObj.idl SALOME_Component.idl - -LIB_SERVER_IDL = - -# additionnal information to compil and link file - -CPPFLAGS += $(QT_INCLUDES) $(VTK_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES) $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome -CXXFLAGS += -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome - -LDFLAGS += -lGEOMBase - -@CONCLUDE@ diff --git a/src/BuildGUI/BuildGUI.cxx b/src/BuildGUI/BuildGUI.cxx deleted file mode 100644 index bb0c98a2c..000000000 --- a/src/BuildGUI/BuildGUI.cxx +++ /dev/null @@ -1,118 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BooleanGUI.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header$ - -#include "BuildGUI.h" - -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" - -#include "BuildGUI_EdgeDlg.h" // Method EDGE -#include "BuildGUI_WireDlg.h" // Method WIRE -#include "BuildGUI_FaceDlg.h" // Method FACE -#include "BuildGUI_ShellDlg.h" // Method SHELL -#include "BuildGUI_SolidDlg.h" // Method SOLID -#include "BuildGUI_CompoundDlg.h" // Method COMPOUND - -#include "GeometryGUI.h" - -BuildGUI* BuildGUI::myGUIObject = 0; - -//======================================================================= -// function : GetBuildGUI() -// purpose : Get the only BuildGUI object [ static ] -//======================================================================= -BuildGUI* BuildGUI::GetBuildGUI( GeometryGUI* parent ) -{ - if ( myGUIObject == 0 ) - myGUIObject = new BuildGUI( parent ); - - return myGUIObject; -} - -//======================================================================= -// function : BuildGUI() -// purpose : Constructor -//======================================================================= -BuildGUI::BuildGUI( GeometryGUI* parent ) -: GEOMGUI( parent ) -{ -} - - -//======================================================================= -// function : ~BuildGUI() -// purpose : Destructor -//======================================================================= -BuildGUI::~BuildGUI() -{ -} - - -//======================================================================= -// function : OnGUIEvent() -// purpose : -//======================================================================= -bool BuildGUI::OnGUIEvent( int theCommandID, SUIT_Desktop* parent ) -{ - getGeometryGUI()->EmitSignalDeactivateDialog(); - - QDialog* aDlg = NULL; - - switch ( theCommandID ) - { - case 4081: aDlg = new BuildGUI_EdgeDlg ( parent, "" ); break; - case 4082: aDlg = new BuildGUI_WireDlg ( parent, "" ); break; - case 4083: aDlg = new BuildGUI_FaceDlg ( parent, "" ); break; - case 4084: aDlg = new BuildGUI_ShellDlg ( parent, "" ); break; - case 4085: aDlg = new BuildGUI_SolidDlg ( parent, "" ); break; - case 4086: aDlg = new BuildGUI_CompoundDlg( parent, "" ); break; - - default: - SUIT_Session::session()->activeApplication()->putInfo( tr( "GEOM_PRP_COMMAND" ).arg( theCommandID ) ); - break; - } - - if ( aDlg != NULL ) - aDlg->show(); - - return true; -} - -//===================================================================================== -// EXPORTED METHODS -//===================================================================================== -extern "C" -{ -#ifdef WNT - __declspec( dllexport ) -#endif - GEOMGUI* GetLibGUI( GeometryGUI* parent ) - { - return BuildGUI::GetBuildGUI( parent ); - } -} diff --git a/src/BuildGUI/BuildGUI.h b/src/BuildGUI/BuildGUI.h deleted file mode 100644 index 25b11cfa8..000000000 --- a/src/BuildGUI/BuildGUI.h +++ /dev/null @@ -1,55 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BuildGUI.h -// Author : Damien COQUERET -// Module : GEOM -// $Header$ - -#ifndef BUILDGUI_H -#define BUILDGUI_H - -#include "GEOMGUI.h" - -//================================================================================= -// class : BuildGUI -// purpose : -//================================================================================= -class BuildGUI : public GEOMGUI -{ -protected: - BuildGUI( GeometryGUI* parent ); // hide constructor to avoid direct creation - -public : - ~BuildGUI(); - - // Get the only BuildGUI object - static BuildGUI* GetBuildGUI( GeometryGUI* parent ); - - bool OnGUIEvent( int theCommandID, SUIT_Desktop* parent ); - -private: - static BuildGUI* myGUIObject; // the only BuildGUI object -}; - -#endif diff --git a/src/BuildGUI/BuildGUI_CompoundDlg.cxx b/src/BuildGUI/BuildGUI_CompoundDlg.cxx deleted file mode 100644 index df8814144..000000000 --- a/src/BuildGUI/BuildGUI_CompoundDlg.cxx +++ /dev/null @@ -1,227 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BuildGUI_CompoundDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "BuildGUI_CompoundDlg.h" -#include "GEOMImpl_Types.hxx" - -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include - -//================================================================================= -// class : BuildGUI_CompoundDlg() -// purpose : Constructs a BuildGUI_CompoundDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -BuildGUI_CompoundDlg::BuildGUI_CompoundDlg(QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_BUILD_COMPOUND"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_COMPOUND_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_COMPOUND")); - RadioButton1->setPixmap(image0); - RadioButton2->close(TRUE); - RadioButton3->close(TRUE); - - GroupShapes = new DlgRef_1Sel_QTD(this, "GroupShapes"); - GroupShapes->GroupBox1->setTitle(tr("GEOM_ARGUMENTS")); - GroupShapes->TextLabel1->setText(tr("GEOM_OBJECTS")); - GroupShapes->PushButton1->setPixmap(image1); - GroupShapes->LineEdit1->setReadOnly( true ); - - Layout1->addWidget(GroupShapes, 2, 0); - /***************************************************************/ - - /* Initialisations */ - Init(); -} - - -//================================================================================= -// function : ~BuildGUI_CompoundDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -BuildGUI_CompoundDlg::~BuildGUI_CompoundDlg() -{ - // no need to delete child widgets, Qt does it all for us -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void BuildGUI_CompoundDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = GroupShapes->LineEdit1; - GroupShapes->LineEdit1->setReadOnly( true ); - - myOkShapes = false; - - /* signals and slots connections */ - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - connect(GroupShapes->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - - globalSelection( GEOM_ALLSHAPES ); - - initName( tr( "GEOM_COMPOUND" ) ); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void BuildGUI_CompoundDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool BuildGUI_CompoundDlg::ClickOnApply() -{ - if ( !onAccept() ) - return false; - - initName(); - return true; -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection as changed or other case -//================================================================================= -void BuildGUI_CompoundDlg::SelectionIntoArgument() -{ - myEditCurrentArgument->setText( "" ); - QString aString = ""; /* name of selection */ - - myOkShapes = false; - int nbSel = GEOMBase::GetNameOfSelectedIObjects( selectedIO(), aString, true ); - if ( nbSel == 0 ) - return; - if ( nbSel != 1 ) - aString = QString( "%1_objects").arg( nbSel ); - - GEOMBase::ConvertListOfIOInListOfGO( selectedIO(), myShapes, true ); - myEditCurrentArgument->setText( aString ); - myOkShapes = true; -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void BuildGUI_CompoundDlg::SetEditCurrentArgument() -{ - QPushButton* send = (QPushButton*)sender(); - if (send != GroupShapes->PushButton1) - return; - - myEditCurrentArgument = GroupShapes->LineEdit1; - - myEditCurrentArgument->setFocus(); - SelectionIntoArgument(); -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void BuildGUI_CompoundDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - globalSelection( GEOM_ALLSHAPES ); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; -} - - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void BuildGUI_CompoundDlg::enterEvent(QEvent* e) -{ - if ( !GroupConstructors->isEnabled() ) - ActivateThisDialog(); -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr BuildGUI_CompoundDlg::createOperation() -{ - return getGeomEngine()->GetIShapesOperations( getStudyId() ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool BuildGUI_CompoundDlg::isValid( QString& ) -{ - return myOkShapes; -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool BuildGUI_CompoundDlg::execute( ObjectList& objects ) -{ - GEOM::GEOM_Object_var anObj; - - anObj = GEOM::GEOM_IShapesOperations::_narrow( getOperation() )->MakeCompound( myShapes ); - - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - - return true; -} diff --git a/src/BuildGUI/BuildGUI_CompoundDlg.h b/src/BuildGUI/BuildGUI_CompoundDlg.h deleted file mode 100644 index eef0b2fb1..000000000 --- a/src/BuildGUI/BuildGUI_CompoundDlg.h +++ /dev/null @@ -1,71 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOMBase_CompoundDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_COMPOUND_H -#define DIALOGBOX_COMPOUND_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_1Sel_QTD.h" - -//================================================================================= -// class : BuildGUI_CompoundDlg -// purpose : -//================================================================================= -class BuildGUI_CompoundDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - BuildGUI_CompoundDlg(QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~BuildGUI_CompoundDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& msg ); - virtual bool execute( ObjectList& objects ); - -private: - void Init(); - void enterEvent(QEvent* e); - - GEOM::ListOfGO myShapes; - bool myOkShapes; - - DlgRef_1Sel_QTD* GroupShapes; - -private slots: - void ClickOnOk(); - bool ClickOnApply(); - void ActivateThisDialog(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - -}; - -#endif // DIALOGBOX_COMPOUND_H diff --git a/src/BuildGUI/BuildGUI_EdgeDlg.cxx b/src/BuildGUI/BuildGUI_EdgeDlg.cxx deleted file mode 100644 index ae8150407..000000000 --- a/src/BuildGUI/BuildGUI_EdgeDlg.cxx +++ /dev/null @@ -1,283 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BuildGUI_EdgeDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "BuildGUI_EdgeDlg.h" - -#include -#include - -#include "utilities.h" -#include "GEOMImpl_Types.hxx" - -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include - -//================================================================================= -// class : BuildGUI_EdgeDlg() -// purpose : Constructs a BuildGUI_EdgeDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -BuildGUI_EdgeDlg::BuildGUI_EdgeDlg(QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_BUILD_EDGE"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_EDGE_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_EDGE")); - RadioButton1->setPixmap(image0); - RadioButton2->close(TRUE); - RadioButton3->close(TRUE); - - GroupPoints = new DlgRef_2Sel_QTD(this, "GroupPoints"); - GroupPoints->GroupBox1->setTitle(tr("GEOM_POINTS")); - GroupPoints->TextLabel1->setText(tr("GEOM_POINT_I").arg("1")); - GroupPoints->TextLabel2->setText(tr("GEOM_POINT_I").arg("2")); - GroupPoints->PushButton1->setPixmap(image1); - GroupPoints->PushButton2->setPixmap(image1); - - GroupPoints->LineEdit1->setReadOnly( true ); - GroupPoints->LineEdit2->setReadOnly( true ); - - Layout1->addWidget(GroupPoints, 2, 0); - /***************************************************************/ - - /* Initialisations */ - Init(); -} - - -//================================================================================= -// function : ~BuildGUI_EdgeDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -BuildGUI_EdgeDlg::~BuildGUI_EdgeDlg() -{ - // no need to delete child widgets, Qt does it all for us -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void BuildGUI_EdgeDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = GroupPoints->LineEdit1; - GroupPoints->LineEdit1->setReadOnly( true ); - GroupPoints->LineEdit2->setReadOnly( true ); - - myOkPoint1 = myOkPoint2 = false; - - globalSelection( GEOM_POINT ); - - /* signals and slots connections */ - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - - connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupPoints->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - - connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(GroupPoints->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - - initName( tr( "GEOM_EDGE") ); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void BuildGUI_EdgeDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool BuildGUI_EdgeDlg::ClickOnApply() -{ - if ( !onAccept() ) - return false; - - initName(); - return true; -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection as changed or other case -//================================================================================= -void BuildGUI_EdgeDlg::SelectionIntoArgument() -{ - erasePreview(); - myEditCurrentArgument->setText(""); - - if(IObjectCount() != 1) { - if(myEditCurrentArgument == GroupPoints->LineEdit1) - myOkPoint1 = false; - else if(myEditCurrentArgument == GroupPoints->LineEdit2) - myOkPoint2 = false; - return; - } - - // nbSel == 1 - Standard_Boolean testResult = Standard_False; - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject(firstIObject(), testResult ); - - if(!testResult) - return; - - if(myEditCurrentArgument == GroupPoints->LineEdit1) { - myPoint1 = aSelectedObject; - myOkPoint1 = true; - } - else if(myEditCurrentArgument == GroupPoints->LineEdit2) { - myPoint2 = aSelectedObject; - myOkPoint2 = true; - } - - myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) ); - - displayPreview(); -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void BuildGUI_EdgeDlg::LineEditReturnPressed() -{ - QLineEdit* send = (QLineEdit*)sender(); - if(send == GroupPoints->LineEdit1 || send == GroupPoints->LineEdit2) - { - myEditCurrentArgument = send; - GEOMBase_Skeleton::LineEditReturnPressed(); - } -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void BuildGUI_EdgeDlg::SetEditCurrentArgument() -{ - - QPushButton* send = (QPushButton*)sender(); - globalSelection(); - - if(send == GroupPoints->PushButton1) { - myEditCurrentArgument = GroupPoints->LineEdit1; - globalSelection( GEOM_POINT ); - } - else if(send == GroupPoints->PushButton2) { - myEditCurrentArgument = GroupPoints->LineEdit2; - globalSelection( GEOM_POINT ); - } - - myEditCurrentArgument->setFocus(); - SelectionIntoArgument(); -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void BuildGUI_EdgeDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - globalSelection( GEOM_POINT ); - displayPreview(); -} - - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void BuildGUI_EdgeDlg::enterEvent(QEvent* e) -{ - if ( !GroupConstructors->isEnabled() ) - ActivateThisDialog(); -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr BuildGUI_EdgeDlg::createOperation() -{ - return getGeomEngine()->GetIShapesOperations( getStudyId() ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool BuildGUI_EdgeDlg::isValid( QString& ) -{ - return myOkPoint1 && myOkPoint2; -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool BuildGUI_EdgeDlg::execute( ObjectList& objects ) -{ - GEOM::GEOM_Object_var anObj; - - anObj = GEOM::GEOM_IShapesOperations::_narrow( getOperation() )->MakeEdge( myPoint1, myPoint2 ); - - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - - return true; -} diff --git a/src/BuildGUI/BuildGUI_EdgeDlg.h b/src/BuildGUI/BuildGUI_EdgeDlg.h deleted file mode 100644 index 2d3af1aba..000000000 --- a/src/BuildGUI/BuildGUI_EdgeDlg.h +++ /dev/null @@ -1,73 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BuildGUI_EdgeDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_EDGE_H -#define DIALOGBOX_EDGE_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_2Sel_QTD.h" - -//================================================================================= -// class : BuildGUI_EdgeDlg -// purpose : -//================================================================================= -class BuildGUI_EdgeDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - BuildGUI_EdgeDlg(QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~BuildGUI_EdgeDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& msg ); - virtual bool execute( ObjectList& objects ); - -private : - void Init(); - void enterEvent(QEvent* e); - - GEOM::GEOM_Object_var myPoint1, myPoint2; /* Points containing the edge */ - bool myOkPoint1; /* true when myPoint is defined */ - bool myOkPoint2; - - DlgRef_2Sel_QTD* GroupPoints; - -private slots: - void ClickOnOk(); - bool ClickOnApply(); - void ActivateThisDialog(); - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - -}; - -#endif // DIALOGBOX_EDGE_H diff --git a/src/BuildGUI/BuildGUI_FaceDlg.cxx b/src/BuildGUI/BuildGUI_FaceDlg.cxx deleted file mode 100644 index 3b7a2c08a..000000000 --- a/src/BuildGUI/BuildGUI_FaceDlg.cxx +++ /dev/null @@ -1,243 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BuildGUI_FaceDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "BuildGUI_FaceDlg.h" -#include "GEOMImpl_Types.hxx" - -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -//Qt includes -#include -#include - -using namespace std; - -//================================================================================= -// class : BuildGUI_FaceDlg() -// purpose : Constructs a BuildGUI_FaceDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -BuildGUI_FaceDlg::BuildGUI_FaceDlg(QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_BUILD_FACE"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_FACE_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_FACE")); - RadioButton1->setPixmap(image0); - RadioButton2->close(TRUE); - RadioButton3->close(TRUE); - - GroupWire = new DlgRef_1Sel1Check_QTD(this, "GroupWire"); - GroupWire->GroupBox1->setTitle(tr("GEOM_FACE_FFW")); - GroupWire->TextLabel1->setText(tr("GEOM_WIRES")); - GroupWire->CheckButton1->setText(tr("GEOM_FACE_OPT")); - GroupWire->PushButton1->setPixmap(image1); - - Layout1->addWidget(GroupWire, 2, 0); - /***************************************************************/ - - /* Initialisations */ - Init(); -} - - -//================================================================================= -// function : ~BuildGUI_FaceDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -BuildGUI_FaceDlg::~BuildGUI_FaceDlg() -{ - // no need to delete child widgets, Qt does it all for us -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void BuildGUI_FaceDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = GroupWire->LineEdit1; - GroupWire->LineEdit1->setReadOnly( true ); - - GroupWire->CheckButton1->setChecked(TRUE); - - globalSelection( GEOM_WIRE ); - - /* signals and slots connections */ - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - connect(GroupWire->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(GroupWire->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - - initName(tr("GEOM_FACE")); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void BuildGUI_FaceDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool BuildGUI_FaceDlg::ClickOnApply() -{ - if ( !onAccept() ) - return false; - - initName(); - return true; -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection as changed or other case -//================================================================================= -void BuildGUI_FaceDlg::SelectionIntoArgument() -{ - myEditCurrentArgument->setText(""); - QString aName; - - int aNbSel = GEOMBase::GetNameOfSelectedIObjects(selectedIO(), aName); - - if(aNbSel < 1) - { - myWires.length(0); - return; - } - - GEOMBase::ConvertListOfIOInListOfGO(selectedIO(), myWires); - if (!myWires.length()) - return; - if(aNbSel != 1) - aName = tr("%1_wires").arg(aNbSel); - - myEditCurrentArgument->setText( aName ); - - myEditCurrentArgument->setText( aName ); -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void BuildGUI_FaceDlg::SetEditCurrentArgument() -{ - QPushButton* send = (QPushButton*)sender(); - if (send != GroupWire->PushButton1) - return; - - globalSelection( GEOM_WIRE ); - myEditCurrentArgument = GroupWire->LineEdit1; - - myEditCurrentArgument->setFocus(); - SelectionIntoArgument(); -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void BuildGUI_FaceDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - globalSelection( GEOM_WIRE ); -} - - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void BuildGUI_FaceDlg::enterEvent(QEvent* e) -{ - if ( !GroupConstructors->isEnabled() ) - ActivateThisDialog(); -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr BuildGUI_FaceDlg::createOperation() -{ - return getGeomEngine()->GetIShapesOperations( getStudyId() ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool BuildGUI_FaceDlg::isValid( QString& ) -{ - return (myWires.length() != 0); -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool BuildGUI_FaceDlg::execute( ObjectList& objects ) -{ - GEOM::GEOM_Object_var anObj; - - bool isPlanarWanted = GroupWire->CheckButton1->isChecked(); - anObj = GEOM::GEOM_IShapesOperations::_narrow( - getOperation() )->MakeFaceWires( myWires, isPlanarWanted ); - - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - - return true; -} - diff --git a/src/BuildGUI/BuildGUI_FaceDlg.h b/src/BuildGUI/BuildGUI_FaceDlg.h deleted file mode 100644 index f59189fd6..000000000 --- a/src/BuildGUI/BuildGUI_FaceDlg.h +++ /dev/null @@ -1,70 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BuildGUI_FaceDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_FACE_H -#define DIALOGBOX_FACE_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_1Sel1Check_QTD.h" - -//================================================================================= -// class : BuildGUI_FaceDlg -// purpose : -//================================================================================= -class BuildGUI_FaceDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - BuildGUI_FaceDlg(QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~BuildGUI_FaceDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& msg ); - virtual bool execute( ObjectList& objects ); - -private: - void Init(); - void enterEvent(QEvent* e); - - GEOM::ListOfGO myWires; - - DlgRef_1Sel1Check_QTD* GroupWire; - -private slots: - void ClickOnOk(); - bool ClickOnApply(); - void ActivateThisDialog(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - -}; - -#endif // DIALOGBOX_FACE_H diff --git a/src/BuildGUI/BuildGUI_ShellDlg.cxx b/src/BuildGUI/BuildGUI_ShellDlg.cxx deleted file mode 100644 index 5972e2994..000000000 --- a/src/BuildGUI/BuildGUI_ShellDlg.cxx +++ /dev/null @@ -1,246 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BuildGUI_ShellDlg.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#include "BuildGUI_ShellDlg.h" -#include "GEOMImpl_Types.hxx" - -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include "TColStd_MapOfInteger.hxx" - -#include - -//================================================================================= -// class : BuildGUI_ShellDlg() -// purpose : Constructs a BuildGUI_ShellDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -BuildGUI_ShellDlg::BuildGUI_ShellDlg(QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM", tr("ICON_DLG_BUILD_SHELL"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM", tr("ICON_SELECT"))); - - setCaption(tr("GEOM_SHELL_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_SHELL")); - RadioButton1->setPixmap(image0); - RadioButton2->close(TRUE); - RadioButton3->close(TRUE); - - GroupShell = new DlgRef_1Sel_QTD(this, "GroupShell"); - GroupShell->GroupBox1->setTitle(tr("GEOM_ARGUMENTS")); - GroupShell->TextLabel1->setText(tr("GEOM_OBJECTS")); - GroupShell->PushButton1->setPixmap(image1); - GroupShell->LineEdit1->setReadOnly( true ); - - Layout1->addWidget(GroupShell, 2, 0); - /***************************************************************/ - - /* Initialisations */ - Init(); -} - - -//================================================================================= -// function : ~BuildGUI_ShellDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -BuildGUI_ShellDlg::~BuildGUI_ShellDlg() -{ - // no need to delete child widgets, Qt does it all for us -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void BuildGUI_ShellDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = GroupShell->LineEdit1; - GroupShell->LineEdit1->setReadOnly( true ); - - myOkFacesAndShells = false; - - TColStd_MapOfInteger aMap; - aMap.Add(GEOM_SHELL); - aMap.Add(GEOM_FACE); - globalSelection( aMap ); - - /* signals and slots connections */ - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - - connect(GroupShell->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - - initName(tr("GEOM_SHELL")); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void BuildGUI_ShellDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool BuildGUI_ShellDlg::ClickOnApply() -{ - if ( !onAccept() ) - return false; - - initName(); - return true; -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection as changed or other case -//================================================================================= -void BuildGUI_ShellDlg::SelectionIntoArgument() -{ - myEditCurrentArgument->setText( "" ); - QString aString; - - myOkFacesAndShells = false; - int nbSel = GEOMBase::GetNameOfSelectedIObjects( selectedIO(), aString, true ); - if ( nbSel == 0 ) - return; - if ( nbSel != 1 ) - aString = QString( "%1_objects ").arg( nbSel ); - - GEOMBase::ConvertListOfIOInListOfGO( selectedIO(), myFacesAndShells, true ); - if ( !myFacesAndShells.length() ) - return; - - myEditCurrentArgument->setText( aString ); - myOkFacesAndShells = true; -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void BuildGUI_ShellDlg::SetEditCurrentArgument() -{ - QPushButton* send = (QPushButton*)sender(); - if (send != GroupShell->PushButton1) - return; - - TColStd_MapOfInteger aMap; - aMap.Add(GEOM_SHELL); - aMap.Add(GEOM_FACE); - globalSelection( aMap ); - myEditCurrentArgument = GroupShell->LineEdit1; - - myEditCurrentArgument->setFocus(); - SelectionIntoArgument(); -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void BuildGUI_ShellDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - TColStd_MapOfInteger aMap; - aMap.Add(GEOM_SHELL); - aMap.Add(GEOM_FACE); - globalSelection( aMap ); -} - - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void BuildGUI_ShellDlg::enterEvent(QEvent* e) -{ - if ( !GroupConstructors->isEnabled() ) - ActivateThisDialog(); -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr BuildGUI_ShellDlg::createOperation() -{ - return getGeomEngine()->GetIShapesOperations( getStudyId() ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool BuildGUI_ShellDlg::isValid( QString& ) -{ - return myOkFacesAndShells; -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool BuildGUI_ShellDlg::execute( ObjectList& objects ) -{ - GEOM::GEOM_Object_var anObj; - - anObj = GEOM::GEOM_IShapesOperations::_narrow( - getOperation() )->MakeShell( myFacesAndShells ); - - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - - return true; -} - diff --git a/src/BuildGUI/BuildGUI_ShellDlg.h b/src/BuildGUI/BuildGUI_ShellDlg.h deleted file mode 100644 index 345fa7519..000000000 --- a/src/BuildGUI/BuildGUI_ShellDlg.h +++ /dev/null @@ -1,71 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BuildGUI_ShellDlg.h -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#ifndef DIALOGBOX_SHELL_H -#define DIALOGBOX_SHELL_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_1Sel_QTD.h" - -//================================================================================= -// class : BuildGUI_ShellDlg -// purpose : -//================================================================================= -class BuildGUI_ShellDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - BuildGUI_ShellDlg(QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~BuildGUI_ShellDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& msg ); - virtual bool execute( ObjectList& objects ); - -private: - void Init(); - void enterEvent(QEvent * e); - - GEOM::ListOfGO myFacesAndShells; - bool myOkFacesAndShells; /* to check when arguments is defined */ - - DlgRef_1Sel_QTD* GroupShell; - -private slots: - void ClickOnOk(); - bool ClickOnApply(); - void SetEditCurrentArgument(); - void SelectionIntoArgument(); - void ActivateThisDialog(); - -}; - -#endif // DIALOGBOX_SHELL_H diff --git a/src/BuildGUI/BuildGUI_SolidDlg.cxx b/src/BuildGUI/BuildGUI_SolidDlg.cxx deleted file mode 100644 index f871dbf79..000000000 --- a/src/BuildGUI/BuildGUI_SolidDlg.cxx +++ /dev/null @@ -1,262 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BuildGUI_SolidDlg.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#include "BuildGUI_SolidDlg.h" -#include "GEOMImpl_Types.hxx" - -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -//Qt includes -#include -#include - -//================================================================================= -// class : BuildGUI_SolidDlg() -// purpose : Constructs a BuildGUI_SolidDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -BuildGUI_SolidDlg::BuildGUI_SolidDlg(QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM", tr("ICON_DLG_BUILD_SOLID"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM", tr("ICON_SELECT"))); - - setCaption(tr("GEOM_SOLID_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_SOLID")); - RadioButton1->setPixmap(image0); - RadioButton2->close(TRUE); - RadioButton3->close(TRUE); - - GroupSolid = new DlgRef_1Sel1Check_QTD(this, "GroupSolid"); - GroupSolid->GroupBox1->setTitle(tr("GEOM_ARGUMENTS")); - GroupSolid->TextLabel1->setText(tr("GEOM_OBJECTS")); - GroupSolid->CheckButton1->setText(tr("GEOM_CREATE_SINGLE_SOLID")); - GroupSolid->PushButton1->setPixmap(image1); - GroupSolid->LineEdit1->setReadOnly( true ); - - Layout1->addWidget(GroupSolid, 2, 0); - /***************************************************************/ - - /* Initialisations */ - Init(); -} - - -//================================================================================= -// function : ~BuildGUI_SolidDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -BuildGUI_SolidDlg::~BuildGUI_SolidDlg() -{ - // no need to delete child widgets, Qt does it all for us -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void BuildGUI_SolidDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = GroupSolid->LineEdit1; - GroupSolid->LineEdit1->setReadOnly( true ); - GroupSolid->CheckButton1->setChecked( true ); - - myOkShells = false; - - globalSelection( GEOM_SHELL ); - - /* signals and slots connections */ - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - - connect(GroupSolid->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupSolid->CheckButton1, SIGNAL(toggled(bool)), this, SLOT(EnableNameField(bool))); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - - initName(tr("GEOM_SOLID")); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void BuildGUI_SolidDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool BuildGUI_SolidDlg::ClickOnApply() -{ - if ( !onAccept() ) - return false; - - initName(); - return true; -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection as changed or other case -//================================================================================= -void BuildGUI_SolidDlg::SelectionIntoArgument() -{ - myEditCurrentArgument->setText(""); - QString aString = ""; - - myOkShells = false; - int nbSel = GEOMBase::GetNameOfSelectedIObjects(selectedIO(), aString); - if (nbSel == 0) - return; - if(nbSel != 1) - aString = tr("%1_objects").arg(nbSel); - - GEOMBase::ConvertListOfIOInListOfGO(selectedIO(), myShells); - if (!myShells.length()) - return; - - myEditCurrentArgument->setText(aString); - myOkShells = true; -} - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void BuildGUI_SolidDlg::SetEditCurrentArgument() -{ - QPushButton* send = (QPushButton*)sender(); - if(send != GroupSolid->PushButton1) - return; - - globalSelection( GEOM_SHELL ); - myEditCurrentArgument = GroupSolid->LineEdit1; - - myEditCurrentArgument->setFocus(); - SelectionIntoArgument(); -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void BuildGUI_SolidDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - globalSelection( GEOM_SHELL ); -} - - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void BuildGUI_SolidDlg::enterEvent(QEvent* e) -{ - if ( !GroupConstructors->isEnabled() ) - ActivateThisDialog(); -} - - -//================================================================================= -// function : EnableNameField() -// purpose : -//================================================================================= -void BuildGUI_SolidDlg::EnableNameField(bool toEnable) -{ - this->GroupBoxName->setEnabled(toEnable); -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr BuildGUI_SolidDlg::createOperation() -{ - return getGeomEngine()->GetIShapesOperations( getStudyId() ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool BuildGUI_SolidDlg::isValid( QString& ) -{ - return myOkShells; -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool BuildGUI_SolidDlg::execute( ObjectList& objects ) -{ - bool toCreateSingleSolid = GroupSolid->CheckButton1->isChecked(); - - if ( toCreateSingleSolid ) - { - GEOM::GEOM_Object_var anObj = GEOM::GEOM_IShapesOperations::_narrow( - getOperation() )->MakeSolidShells( myShells ); - - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - } - else - { - for ( int i = 0, n = myShells.length(); i< n; i++ ) - { - GEOM::GEOM_Object_var anObj = GEOM::GEOM_IShapesOperations::_narrow( - getOperation() )->MakeSolidShell( myShells[ i ] ); - - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - } - } - - return true; -} - diff --git a/src/BuildGUI/BuildGUI_SolidDlg.h b/src/BuildGUI/BuildGUI_SolidDlg.h deleted file mode 100644 index c85fef588..000000000 --- a/src/BuildGUI/BuildGUI_SolidDlg.h +++ /dev/null @@ -1,73 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BuildGUI_SolidDlg.h -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#ifndef DIALOGBOX_SOLID_H -#define DIALOGBOX_SOLID_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_1Sel1Check_QTD.h" - -//================================================================================= -// class : BuildGUI_SolidDlg -// purpose : -//================================================================================= -class BuildGUI_SolidDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - BuildGUI_SolidDlg(QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~BuildGUI_SolidDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& msg ); - virtual bool execute( ObjectList& objects ); - -private: - void Init(); - void enterEvent(QEvent * e); - - GEOM::ListOfGO myShells; - bool myOkShells; /* to check when arguments is defined and - all shells are closed */ - - DlgRef_1Sel1Check_QTD* GroupSolid; - -private slots: - void ClickOnOk(); - bool ClickOnApply(); - void SetEditCurrentArgument(); - void SelectionIntoArgument(); - void ActivateThisDialog(); - void EnableNameField(bool toEnable); - -}; - -#endif // DIALOGBOX_SOLID_H diff --git a/src/BuildGUI/BuildGUI_WireDlg.cxx b/src/BuildGUI/BuildGUI_WireDlg.cxx deleted file mode 100644 index 425cb14a0..000000000 --- a/src/BuildGUI/BuildGUI_WireDlg.cxx +++ /dev/null @@ -1,245 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BuildGUI_WireDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "BuildGUI_WireDlg.h" -#include "GEOMImpl_Types.hxx" - -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include "TColStd_MapOfInteger.hxx" - -#include - -//================================================================================= -// class : BuildGUI_WireDlg() -// purpose : Constructs a BuildGUI_WireDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -BuildGUI_WireDlg::BuildGUI_WireDlg(QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_BUILD_WIRE"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_WIRE_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_WIRE")); - RadioButton1->setPixmap(image0); - RadioButton2->close(TRUE); - RadioButton3->close(TRUE); - - GroupPoints = new DlgRef_1Sel_QTD(this, "GroupPoints"); - GroupPoints->GroupBox1->setTitle(tr("GEOM_WIRE_CONNECT")); - GroupPoints->TextLabel1->setText(tr("GEOM_OBJECTS")); - GroupPoints->PushButton1->setPixmap(image1); - GroupPoints->LineEdit1->setReadOnly( true ); - - Layout1->addWidget(GroupPoints, 2, 0); - /***************************************************************/ - - /* Initialisations */ - Init(); -} - - -//================================================================================= -// function : ~BuildGUI_WireDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -BuildGUI_WireDlg::~BuildGUI_WireDlg() -{ - // no need to delete child widgets, Qt does it all for us -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void BuildGUI_WireDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = GroupPoints->LineEdit1; - GroupPoints->LineEdit1->setReadOnly( true ); - - myOkEdgesAndWires = false; - - TColStd_MapOfInteger aMap; - aMap.Add(GEOM_WIRE); - aMap.Add(GEOM_EDGE); - globalSelection( aMap ); - - /* signals and slots connections */ - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - - initName(tr("GEOM_WIRE")); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void BuildGUI_WireDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool BuildGUI_WireDlg::ClickOnApply() -{ - if ( !onAccept() ) - return false; - - initName(); - return true; -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection as changed or other case -//================================================================================= -void BuildGUI_WireDlg::SelectionIntoArgument() -{ - myEditCurrentArgument->setText(""); - QString aString = ""; /* name of selection */ - - myOkEdgesAndWires = false; - int nbSel = GEOMBase::GetNameOfSelectedIObjects(selectedIO(), aString); - - if(nbSel == 0) - return; - if(nbSel != 1) - aString = tr("%1_objects").arg(nbSel); - - GEOMBase::ConvertListOfIOInListOfGO(selectedIO(), myEdgesAndWires); - if (!myEdgesAndWires.length()) - return; - - myEditCurrentArgument->setText(aString); - myOkEdgesAndWires = true; -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void BuildGUI_WireDlg::SetEditCurrentArgument() -{ - QPushButton* send = (QPushButton*)sender(); - if (send != GroupPoints->PushButton1) - return; - - TColStd_MapOfInteger aMap; - aMap.Add(GEOM_WIRE); - aMap.Add(GEOM_EDGE); - globalSelection( aMap ); - myEditCurrentArgument = GroupPoints->LineEdit1; - - myEditCurrentArgument->setFocus(); - SelectionIntoArgument(); -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void BuildGUI_WireDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - TColStd_MapOfInteger aMap; - aMap.Add(GEOM_WIRE); - aMap.Add(GEOM_EDGE); - globalSelection( aMap ); -} - - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void BuildGUI_WireDlg::enterEvent(QEvent* e) -{ - if ( !GroupConstructors->isEnabled() ) - ActivateThisDialog(); -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr BuildGUI_WireDlg::createOperation() -{ - return getGeomEngine()->GetIShapesOperations( getStudyId() ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool BuildGUI_WireDlg::isValid( QString& ) -{ - return myOkEdgesAndWires; -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool BuildGUI_WireDlg::execute( ObjectList& objects ) -{ - GEOM::GEOM_Object_var anObj; - - anObj = GEOM::GEOM_IShapesOperations::_narrow( - getOperation() )->MakeWire( myEdgesAndWires ); - - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - - return true; -} - diff --git a/src/BuildGUI/BuildGUI_WireDlg.h b/src/BuildGUI/BuildGUI_WireDlg.h deleted file mode 100644 index 2f53e2534..000000000 --- a/src/BuildGUI/BuildGUI_WireDlg.h +++ /dev/null @@ -1,71 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : BuildGUI_WireDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_WIRE_H -#define DIALOGBOX_WIRE_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_1Sel_QTD.h" - -//================================================================================= -// class : BuildGUI_WireDlg -// purpose : -//================================================================================= -class BuildGUI_WireDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - BuildGUI_WireDlg(QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~BuildGUI_WireDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& msg ); - virtual bool execute( ObjectList& objects ); - -private: - void Init(); - void enterEvent(QEvent* e); - - GEOM::ListOfGO myEdgesAndWires; - bool myOkEdgesAndWires; /* to check when arguments is defined */ - - DlgRef_1Sel_QTD* GroupPoints; - -private slots: - void ClickOnOk(); - bool ClickOnApply(); - void ActivateThisDialog(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - -}; - -#endif // DIALOGBOX_WIRE_H diff --git a/src/BuildGUI/Makefile.in b/src/BuildGUI/Makefile.in deleted file mode 100644 index 36d4f80de..000000000 --- a/src/BuildGUI/Makefile.in +++ /dev/null @@ -1,70 +0,0 @@ -# GEOM BUILDGUI : -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Author : Damien COQUERET (OCC) -# Module : GEOM -# $Header: - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -# header files -EXPORT_HEADERS= - -# Libraries targets -LIB = libBuildGUI.la - -LIB_SRC = BuildGUI.cxx \ - BuildGUI_EdgeDlg.cxx \ - BuildGUI_WireDlg.cxx \ - BuildGUI_FaceDlg.cxx \ - BuildGUI_ShellDlg.cxx \ - BuildGUI_SolidDlg.cxx \ - BuildGUI_CompoundDlg.cxx - -LIB_MOC = \ - BuildGUI_EdgeDlg.h \ - BuildGUI_WireDlg.h \ - BuildGUI_FaceDlg.h \ - BuildGUI_ShellDlg.h \ - BuildGUI_SolidDlg.h \ - BuildGUI_CompoundDlg.h - -LIB_CLIENT_IDL = SALOME_Exception.idl SALOME_GenericObj.idl SALOME_Component.idl - -LIB_SERVER_IDL = - -# additionnal information to compil and link file - -CPPFLAGS += $(QT_INCLUDES) $(VTK_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES) $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome -CXXFLAGS += -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome - -LDFLAGS += -lGEOMFiltersSelection -lGEOMBase - -@CONCLUDE@ diff --git a/src/DisplayGUI/DisplayGUI.h b/src/DisplayGUI/DisplayGUI.h deleted file mode 100644 index 64bfd1e1f..000000000 --- a/src/DisplayGUI/DisplayGUI.h +++ /dev/null @@ -1,92 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DisplayGUI.h -// Author : Damien COQUERET -// Module : GEOM -// $Header$ - -#ifndef DISPLAYGUI_H -#define DISPLAYGUI_H - -#include "GEOMGUI.h" -#include "GEOMBase.h" -//#ifdef WNT -//#include -//#else -//#define SALOME_WNT_EXPORT -//#endif -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DISPLAYGUI_WNT_EXPORT __declspec( dllexport ) -#else -#define DISPLAYGUI_WNT_EXPORT -#endif -//================================================================================= -// class : GEOMBase_Display -// purpose : -//================================================================================= -//class QAD_ViewFrame; -class SUIT_ViewWindow; -class DisplayGUI : public GEOMGUI -{ -protected: - DisplayGUI( GeometryGUI* parent ); // hide constructor to avoid direct creation - -public : - ~DisplayGUI(); - - // Get the only DisplayGUI object - static DisplayGUI* GetDisplayGUI( GeometryGUI* parent ); - - // Dispatch menu command - bool OnGUIEvent(int theCommandID, SUIT_Desktop* parent); - - // Display all GEOM objects - void DisplayAll(); - // Erase all GEOM objects - void EraseAll(); - // Display selected GEOM objects - void Display(); - // Display selected GEOM objects and erase other - void DisplayOnly(); - // Erase selected GEOM objects - void Erase(); - - // DISPLAY MODE methods : 0 - wireframe, 1 - shading - // Set display mode for the viewer (current viewer if - 0 ) - void SetDisplayMode( const int mode, SUIT_ViewWindow* viewWindow = 0 ); - // Get display mode of the viewer (current viewer if - 0 ) - int GetDisplayMode( SUIT_ViewWindow* viewWindow = 0 ); - // Invert display mode ( shadin <-> wireframe ) for the viewer - // (current viewer if = 0 ) - void InvertDisplayMode( SUIT_ViewWindow* viewWindow = 0 ); - - // Set display mode for selected objects in the viewer given - // (current viewer if = 0 ) - void ChangeDisplayMode( const int mode, SUIT_ViewWindow* viewWindo = 0 ); - -private: - static DisplayGUI* myGUIObject; // the only DisplayGUI object -}; - -#endif diff --git a/src/DisplayGUI/Makefile.in b/src/DisplayGUI/Makefile.in deleted file mode 100644 index 59d22518b..000000000 --- a/src/DisplayGUI/Makefile.in +++ /dev/null @@ -1,58 +0,0 @@ -# GEOM DISPLAYGUI : -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Author : Damien COQUERET (OCC) -# Module : GEOM -# $Header: - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -# Libraries targets -LIB = libDisplayGUI.la - -# header files -EXPORT_HEADERS= DisplayGUI.h - -LIB_SRC = DisplayGUI.cxx - -LIB_MOC = - -LIB_CLIENT_IDL = SALOME_Exception.idl SALOME_GenericObj.idl SALOME_Component.idl - -LIB_SERVER_IDL = - -# additionnal information to compil and link file - -CPPFLAGS += $(QT_INCLUDES) $(VTK_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES) $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome -CXXFLAGS += -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome - -LDFLAGS += -lGEOM - -@CONCLUDE@ diff --git a/src/DlgRef/DlgRef_1List1Spin1Btn_QTD.cxx b/src/DlgRef/DlgRef_1List1Spin1Btn_QTD.cxx deleted file mode 100644 index 271cd6d1c..000000000 --- a/src/DlgRef/DlgRef_1List1Spin1Btn_QTD.cxx +++ /dev/null @@ -1,73 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'DlgRef_1List1Spin1Btn_QTD.ui' -** -** Created: Wed Mar 17 11:29:24 2004 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "DlgRef_1List1Spin1Btn_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a DlgRef_1List1Spin1Btn_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -DlgRef_1List1Spin1Btn_QTD::DlgRef_1List1Spin1Btn_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "DlgRef_1List1Spin1Btn_QTD" ); - resize( 204, 148 ); - setCaption( trUtf8( "DlgRef_3Sel4Spin2Check_QTD" ) ); - DlgRef_1List1Spin1Btn_QTDLayout = new QGridLayout( this, 1, 1, 11, 6, "DlgRef_1List1Spin1Btn_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setTitle( trUtf8( "" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - QSpacerItem* spacer = new QSpacerItem( 0, 23, QSizePolicy::Minimum, QSizePolicy::Expanding ); - GroupBox1Layout->addItem( spacer, 3, 1 ); - - ListView1 = new QListView( GroupBox1, "ListView1" ); - - GroupBox1Layout->addMultiCellWidget( ListView1, 0, 3, 0, 0 ); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - GroupBox1Layout->addWidget( TextLabel1, 0, 1 ); - - SpinBox1 = new QSpinBox( GroupBox1, "SpinBox1" ); - - GroupBox1Layout->addWidget( SpinBox1, 1, 1 ); - - PushButton1 = new QPushButton( GroupBox1, "PushButton1" ); - PushButton1->setText( trUtf8( "" ) ); - - GroupBox1Layout->addWidget( PushButton1, 2, 1 ); - - DlgRef_1List1Spin1Btn_QTDLayout->addWidget( GroupBox1, 0, 0 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_1List1Spin1Btn_QTD::~DlgRef_1List1Spin1Btn_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/DlgRef/DlgRef_1List1Spin1Btn_QTD.h b/src/DlgRef/DlgRef_1List1Spin1Btn_QTD.h deleted file mode 100644 index 140977959..000000000 --- a/src/DlgRef/DlgRef_1List1Spin1Btn_QTD.h +++ /dev/null @@ -1,50 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'DlgRef_1List1Spin1Btn_QTD.ui' -** -** Created: Wed Mar 17 11:29:24 2004 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef DLGREF_1LIST1SPIN1BTN_QTD_H -#define DLGREF_1LIST1SPIN1BTN_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QGroupBox; -class QLabel; -class QListView; -class QListViewItem; -class QPushButton; -class QSpinBox; - -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif - -class DLGREF_WNT_EXPORT DlgRef_1List1Spin1Btn_QTD : public QWidget -{ - Q_OBJECT - -public: - DlgRef_1List1Spin1Btn_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~DlgRef_1List1Spin1Btn_QTD(); - - QGroupBox* GroupBox1; - QListView* ListView1; - QLabel* TextLabel1; - QSpinBox* SpinBox1; - QPushButton* PushButton1; - - -protected: - QGridLayout* DlgRef_1List1Spin1Btn_QTDLayout; - QGridLayout* GroupBox1Layout; -}; - -#endif // DLGREF_1LIST1SPIN1BTN_QTD_H diff --git a/src/DlgRef/DlgRef_1Sel1Check1List_QTD.cxx b/src/DlgRef/DlgRef_1Sel1Check1List_QTD.cxx deleted file mode 100644 index b629360ef..000000000 --- a/src/DlgRef/DlgRef_1Sel1Check1List_QTD.cxx +++ /dev/null @@ -1,91 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'DlgRef_1Sel1Check1List_QTD.ui' -** -** Created: lun oct 27 16:18:55 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "DlgRef_1Sel1Check1List_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a DlgRef_1Sel1Check1List_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -DlgRef_1Sel1Check1List_QTD::DlgRef_1Sel1Check1List_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "DlgRef_1Sel1Check1List_QTD" ); - resize( 129, 104 ); - setCaption( trUtf8( "DlgRef_1Sel1Check1List_QTD" ) ); - DlgRef_1Sel1Check1List_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "DlgRef_1Sel1Check1List_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setTitle( trUtf8( "" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - QSpacerItem* spacer = new QSpacerItem( 0, 166, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout1->addItem( spacer, 3, 2 ); - - CheckButton1 = new QRadioButton( GroupBox1, "CheckButton1" ); - CheckButton1->setText( trUtf8( "" ) ); - - Layout1->addMultiCellWidget( CheckButton1, 2, 2, 0, 2 ); - - TextLabel2 = new QLabel( GroupBox1, "TextLabel2" ); - TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) ); - TextLabel2->setText( trUtf8( "TL2" ) ); - - Layout1->addMultiCellWidget( TextLabel2, 1, 1, 0, 1 ); - - ComboBox1 = new QComboBox( FALSE, GroupBox1, "ComboBox1" ); - ComboBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, ComboBox1->sizePolicy().hasHeightForWidth() ) ); - - Layout1->addWidget( ComboBox1, 1, 2 ); - - LineEdit1 = new QLineEdit( GroupBox1, "LineEdit1" ); - - Layout1->addWidget( LineEdit1, 0, 2 ); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - Layout1->addWidget( TextLabel1, 0, 0 ); - - PushButton1 = new QPushButton( GroupBox1, "PushButton1" ); - PushButton1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton1->sizePolicy().hasHeightForWidth() ) ); - PushButton1->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton1, 0, 1 ); - - GroupBox1Layout->addLayout( Layout1, 0, 0 ); - - DlgRef_1Sel1Check1List_QTDLayout->addWidget( GroupBox1, 0, 0 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_1Sel1Check1List_QTD::~DlgRef_1Sel1Check1List_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/DlgRef/DlgRef_1Sel1Check1List_QTD.h b/src/DlgRef/DlgRef_1Sel1Check1List_QTD.h deleted file mode 100644 index ac7fad08b..000000000 --- a/src/DlgRef/DlgRef_1Sel1Check1List_QTD.h +++ /dev/null @@ -1,53 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'DlgRef_1Sel1Check1List_QTD.ui' -** -** Created: lun oct 27 16:18:55 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef DLGREF_1SEL1CHECK1LIST_QTD_H -#define DLGREF_1SEL1CHECK1LIST_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QComboBox; -class QGroupBox; -class QLabel; -class QLineEdit; -class QPushButton; -class QRadioButton; - -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif - -class DLGREF_WNT_EXPORT DlgRef_1Sel1Check1List_QTD : public QWidget -{ - Q_OBJECT - -public: - DlgRef_1Sel1Check1List_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~DlgRef_1Sel1Check1List_QTD(); - - QGroupBox* GroupBox1; - QRadioButton* CheckButton1; - QLabel* TextLabel2; - QComboBox* ComboBox1; - QLineEdit* LineEdit1; - QLabel* TextLabel1; - QPushButton* PushButton1; - - -protected: - QGridLayout* DlgRef_1Sel1Check1List_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* Layout1; -}; - -#endif // DLGREF_1SEL1CHECK1LIST_QTD_H diff --git a/src/DlgRef/DlgRef_1Sel1Check_QTD.cxx b/src/DlgRef/DlgRef_1Sel1Check_QTD.cxx deleted file mode 100644 index 7010f4115..000000000 --- a/src/DlgRef/DlgRef_1Sel1Check_QTD.cxx +++ /dev/null @@ -1,83 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'DlgRef_1Sel1Check_QTD.ui' -** -** Created: Thu May 20 11:55:05 2004 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "DlgRef_1Sel1Check_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a DlgRef_1Sel1Check_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -DlgRef_1Sel1Check_QTD::DlgRef_1Sel1Check_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "DlgRef_1Sel1Check_QTD" ); - resize( 382, 219 ); - setCaption( trUtf8( "DlgRef_1Sel1Check_QTD" ) ); - DlgRef_1Sel1Check_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "DlgRef_1Sel1Check_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setTitle( trUtf8( "" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout3 = new QGridLayout( 0, 1, 1, 0, 6, "Layout3"); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - Layout3->addWidget( TextLabel1, 0, 0 ); - - PushButton1 = new QPushButton( GroupBox1, "PushButton1" ); - PushButton1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton1->sizePolicy().hasHeightForWidth() ) ); - PushButton1->setText( trUtf8( "" ) ); - - Layout3->addWidget( PushButton1, 0, 1 ); - - CheckButton1 = new QCheckBox( GroupBox1, "CheckButton1" ); - CheckButton1->setText( trUtf8( "" ) ); - - Layout3->addMultiCellWidget( CheckButton1, 1, 1, 0, 2 ); - QSpacerItem* spacer = new QSpacerItem( 0, 16, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout3->addItem( spacer, 2, 2 ); - - LineEdit1 = new QLineEdit( GroupBox1, "LineEdit1" ); - - Layout3->addWidget( LineEdit1, 0, 2 ); - - GroupBox1Layout->addLayout( Layout3, 0, 0 ); - - DlgRef_1Sel1Check_QTDLayout->addWidget( GroupBox1, 0, 0 ); - - // tab order - setTabOrder( PushButton1, LineEdit1 ); - setTabOrder( LineEdit1, CheckButton1 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_1Sel1Check_QTD::~DlgRef_1Sel1Check_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/DlgRef/DlgRef_1Sel1Check_QTD.h b/src/DlgRef/DlgRef_1Sel1Check_QTD.h deleted file mode 100644 index 0c5ad2b99..000000000 --- a/src/DlgRef/DlgRef_1Sel1Check_QTD.h +++ /dev/null @@ -1,50 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'DlgRef_1Sel1Check_QTD.ui' -** -** Created: Thu May 20 11:55:05 2004 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef DLGREF_1SEL1CHECK_QTD_H -#define DLGREF_1SEL1CHECK_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QCheckBox; -class QGroupBox; -class QLabel; -class QLineEdit; -class QPushButton; - -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif - -class DLGREF_WNT_EXPORT DlgRef_1Sel1Check_QTD : public QWidget -{ - Q_OBJECT - -public: - DlgRef_1Sel1Check_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~DlgRef_1Sel1Check_QTD(); - - QGroupBox* GroupBox1; - QLabel* TextLabel1; - QPushButton* PushButton1; - QCheckBox* CheckButton1; - QLineEdit* LineEdit1; - - -protected: - QGridLayout* DlgRef_1Sel1Check_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* Layout3; -}; - -#endif // DLGREF_1SEL1CHECK_QTD_H diff --git a/src/DlgRef/DlgRef_1Sel1Spin.cxx b/src/DlgRef/DlgRef_1Sel1Spin.cxx deleted file mode 100644 index 86be0f2dd..000000000 --- a/src/DlgRef/DlgRef_1Sel1Spin.cxx +++ /dev/null @@ -1,54 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_1Sel1Spin.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#include "DlgRef_1Sel1Spin.h" - -#include -#include -#include - -/* - * Constructs a DlgRef_1Sel1Spin which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' - */ -DlgRef_1Sel1Spin::DlgRef_1Sel1Spin(QWidget* parent, const char* name, WFlags fl) - :DlgRef_1Sel1Spin_QTD(parent, name, fl) -{ - SpinBox1->close(TRUE); - SpinBox_DX = new DlgRef_SpinBox(GroupBox1, "SpinBox_DX"); - Layout2->addWidget(SpinBox_DX, 0, 1); -} - - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_1Sel1Spin::~DlgRef_1Sel1Spin() -{ - // no need to delete child widgets, Qt does it all for us -} diff --git a/src/DlgRef/DlgRef_1Sel1Spin.h b/src/DlgRef/DlgRef_1Sel1Spin.h deleted file mode 100644 index dbf001657..000000000 --- a/src/DlgRef/DlgRef_1Sel1Spin.h +++ /dev/null @@ -1,57 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_1Sel1Spin.h -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#ifndef DLGREF_1SEL1SPIN_H -#define DLGREF_1SEL1SPIN_H - -#include "DlgRef_1Sel1Spin_QTD.h" -#include "DlgRef_SpinBox.h" -//#if defined WNT -//#include -//#else -//#define SALOME_WNT_EXPORT -//#endif -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif - -class DLGREF_WNT_EXPORT DlgRef_1Sel1Spin : public DlgRef_1Sel1Spin_QTD -{ - Q_OBJECT - -public: - DlgRef_1Sel1Spin( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~DlgRef_1Sel1Spin(); - - DlgRef_SpinBox* SpinBox_DX; - -}; - -#endif // DLGREF_1SEL1SPIN_H diff --git a/src/DlgRef/DlgRef_1Sel1Spin1Check.cxx b/src/DlgRef/DlgRef_1Sel1Spin1Check.cxx deleted file mode 100644 index 89196c2fc..000000000 --- a/src/DlgRef/DlgRef_1Sel1Spin1Check.cxx +++ /dev/null @@ -1,54 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_1Sel1Spin1Check.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#include "DlgRef_1Sel1Spin1Check.h" - -#include -#include -#include - -/* - * Constructs a DlgRef_1Sel1Spin which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' - */ -DlgRef_1Sel1Spin1Check::DlgRef_1Sel1Spin1Check(QWidget* parent, const char* name, WFlags fl) - :DlgRef_1Sel1Spin1Check_QTD(parent, name, fl) -{ - SpinBox1->close(TRUE); - SpinBox_DX = new DlgRef_SpinBox(GroupBox1, "SpinBox_DX"); - Layout2->addWidget(SpinBox_DX, 0, 1); -} - - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_1Sel1Spin1Check::~DlgRef_1Sel1Spin1Check() -{ - // no need to delete child widgets, Qt does it all for us -} diff --git a/src/DlgRef/DlgRef_1Sel1Spin1Check.h b/src/DlgRef/DlgRef_1Sel1Spin1Check.h deleted file mode 100644 index c08788e0d..000000000 --- a/src/DlgRef/DlgRef_1Sel1Spin1Check.h +++ /dev/null @@ -1,53 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_1Sel1Spin1Check.h -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#ifndef DLGREF_1SEL1SPIN1CHECK_H -#define DLGREF_1SEL1SPIN1CHECK_H - -#include "DlgRef_1Sel1Spin1Check_QTD.h" -#include "DlgRef_SpinBox.h" - -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif - -class DLGREF_WNT_EXPORT DlgRef_1Sel1Spin1Check : public DlgRef_1Sel1Spin1Check_QTD -{ - Q_OBJECT - -public: - DlgRef_1Sel1Spin1Check(QWidget* parent = 0, const char* name = 0, WFlags fl = 0); - ~DlgRef_1Sel1Spin1Check(); - - DlgRef_SpinBox* SpinBox_DX; - -}; - -#endif // DLGREF_1SEL1SPIN1CHECK_H diff --git a/src/DlgRef/DlgRef_1Sel1Spin1Check_QTD.cxx b/src/DlgRef/DlgRef_1Sel1Spin1Check_QTD.cxx deleted file mode 100644 index 86f49fb17..000000000 --- a/src/DlgRef/DlgRef_1Sel1Spin1Check_QTD.cxx +++ /dev/null @@ -1,95 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'DlgRef_1Sel1Spin1Check_QTD.ui' -** -** Created: Mon May 24 15:59:03 2004 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "DlgRef_1Sel1Spin1Check_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a DlgRef_1Sel1Spin1Check_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -DlgRef_1Sel1Spin1Check_QTD::DlgRef_1Sel1Spin1Check_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "DlgRef_1Sel1Spin1Check_QTD" ); - resize( 163, 109 ); - setCaption( trUtf8( "DlgRef_1Sel1Spin1Check_QTD" ) ); - DlgRef_1Sel1Spin1Check_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "DlgRef_1Sel1Spin1Check_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setTitle( trUtf8( "" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout8 = new QGridLayout( 0, 1, 1, 0, 6, "Layout8"); - - Layout2 = new QGridLayout( 0, 1, 1, 0, 6, "Layout2"); - - SpinBox1 = new QSpinBox( GroupBox1, "SpinBox1" ); - SpinBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox1->sizePolicy().hasHeightForWidth() ) ); - - Layout2->addWidget( SpinBox1, 0, 1 ); - - TextLabel2 = new QLabel( GroupBox1, "TextLabel2" ); - TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) ); - TextLabel2->setText( trUtf8( "TL2" ) ); - - Layout2->addWidget( TextLabel2, 0, 0 ); - - Layout8->addMultiCellLayout( Layout2, 1, 1, 0, 2 ); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - Layout8->addWidget( TextLabel1, 0, 0 ); - - LineEdit1 = new QLineEdit( GroupBox1, "LineEdit1" ); - - Layout8->addWidget( LineEdit1, 0, 2 ); - - PushButton1 = new QPushButton( GroupBox1, "PushButton1" ); - PushButton1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton1->sizePolicy().hasHeightForWidth() ) ); - PushButton1->setText( trUtf8( "" ) ); - - Layout8->addWidget( PushButton1, 0, 1 ); - - CheckButton1 = new QCheckBox( GroupBox1, "CheckButton1" ); - CheckButton1->setText( trUtf8( "" ) ); - - Layout8->addMultiCellWidget( CheckButton1, 2, 2, 0, 2 ); - QSpacerItem* spacer = new QSpacerItem( 0, 16, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout8->addItem( spacer, 3, 2 ); - - GroupBox1Layout->addLayout( Layout8, 0, 0 ); - - DlgRef_1Sel1Spin1Check_QTDLayout->addWidget( GroupBox1, 0, 0 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_1Sel1Spin1Check_QTD::~DlgRef_1Sel1Spin1Check_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/DlgRef/DlgRef_1Sel1Spin1Check_QTD.h b/src/DlgRef/DlgRef_1Sel1Spin1Check_QTD.h deleted file mode 100644 index a14bb56e6..000000000 --- a/src/DlgRef/DlgRef_1Sel1Spin1Check_QTD.h +++ /dev/null @@ -1,48 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'DlgRef_1Sel1Spin1Check_QTD.ui' -** -** Created: Mon May 24 15:59:03 2004 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef DLGREF_1SEL1SPIN1CHECK_QTD_H -#define DLGREF_1SEL1SPIN1CHECK_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QCheckBox; -class QGroupBox; -class QLabel; -class QLineEdit; -class QPushButton; -class QSpinBox; - -class DlgRef_1Sel1Spin1Check_QTD : public QWidget -{ - Q_OBJECT - -public: - DlgRef_1Sel1Spin1Check_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~DlgRef_1Sel1Spin1Check_QTD(); - - QGroupBox* GroupBox1; - QSpinBox* SpinBox1; - QLabel* TextLabel2; - QLabel* TextLabel1; - QLineEdit* LineEdit1; - QPushButton* PushButton1; - QCheckBox* CheckButton1; - - -protected: - QGridLayout* DlgRef_1Sel1Spin1Check_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* Layout8; - QGridLayout* Layout2; -}; - -#endif // DLGREF_1SEL1SPIN1CHECK_QTD_H diff --git a/src/DlgRef/DlgRef_1Sel1Spin_QTD.cxx b/src/DlgRef/DlgRef_1Sel1Spin_QTD.cxx deleted file mode 100644 index 34846e0e9..000000000 --- a/src/DlgRef/DlgRef_1Sel1Spin_QTD.cxx +++ /dev/null @@ -1,89 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'DlgRef_1Sel1Spin_QTD.ui' -** -** Created: mar sep 23 16:05:08 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "DlgRef_1Sel1Spin_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a DlgRef_1Sel1Spin_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -DlgRef_1Sel1Spin_QTD::DlgRef_1Sel1Spin_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "DlgRef_1Sel1Spin_QTD" ); - resize( 129, 87 ); - setCaption( trUtf8( "DlgRef_1Sel1Spin_QTD" ) ); - DlgRef_1Sel1Spin_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "DlgRef_1Sel1Spin_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setTitle( trUtf8( "" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - - PushButton1 = new QPushButton( GroupBox1, "PushButton1" ); - PushButton1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton1->sizePolicy().hasHeightForWidth() ) ); - PushButton1->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton1, 0, 1 ); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - Layout1->addWidget( TextLabel1, 0, 0 ); - - LineEdit1 = new QLineEdit( GroupBox1, "LineEdit1" ); - - Layout1->addWidget( LineEdit1, 0, 2 ); - - Layout2 = new QGridLayout( 0, 1, 1, 0, 6, "Layout2"); - - TextLabel2 = new QLabel( GroupBox1, "TextLabel2" ); - TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) ); - TextLabel2->setText( trUtf8( "TL2" ) ); - - Layout2->addWidget( TextLabel2, 0, 0 ); - - SpinBox1 = new QSpinBox( GroupBox1, "SpinBox1" ); - SpinBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox1->sizePolicy().hasHeightForWidth() ) ); - - Layout2->addWidget( SpinBox1, 0, 1 ); - - Layout1->addMultiCellLayout( Layout2, 1, 1, 0, 2 ); - QSpacerItem* spacer = new QSpacerItem( 0, 16, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout1->addItem( spacer, 2, 2 ); - - GroupBox1Layout->addLayout( Layout1, 0, 0 ); - - DlgRef_1Sel1Spin_QTDLayout->addWidget( GroupBox1, 0, 0 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_1Sel1Spin_QTD::~DlgRef_1Sel1Spin_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/DlgRef/DlgRef_1Sel1Spin_QTD.h b/src/DlgRef/DlgRef_1Sel1Spin_QTD.h deleted file mode 100644 index b70d054c2..000000000 --- a/src/DlgRef/DlgRef_1Sel1Spin_QTD.h +++ /dev/null @@ -1,50 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'DlgRef_1Sel1Spin_QTD.ui' -** -** Created: mar sep 23 16:05:08 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef DLGREF_1SEL1SPIN_QTD_H -#define DLGREF_1SEL1SPIN_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QGroupBox; -class QLabel; -class QLineEdit; -class QPushButton; -class QSpinBox; -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif -class DLGREF_WNT_EXPORT DlgRef_1Sel1Spin_QTD : public QWidget -{ - Q_OBJECT - -public: - DlgRef_1Sel1Spin_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~DlgRef_1Sel1Spin_QTD(); - - QGroupBox* GroupBox1; - QPushButton* PushButton1; - QLabel* TextLabel1; - QLineEdit* LineEdit1; - QLabel* TextLabel2; - QSpinBox* SpinBox1; - - -protected: - QGridLayout* DlgRef_1Sel1Spin_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* Layout1; - QGridLayout* Layout2; -}; - -#endif // DLGREF_1SEL1SPIN_QTD_H diff --git a/src/DlgRef/DlgRef_1Sel2Spin.cxx b/src/DlgRef/DlgRef_1Sel2Spin.cxx deleted file mode 100644 index f8471b369..000000000 --- a/src/DlgRef/DlgRef_1Sel2Spin.cxx +++ /dev/null @@ -1,60 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_1Sel2Spin.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#include "DlgRef_1Sel2Spin.h" - -#include -#include -#include - -/* - * Constructs a DlgRef_1Sel2Spin which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' - */ -DlgRef_1Sel2Spin::DlgRef_1Sel2Spin(QWidget* parent, const char* name, WFlags fl) - :DlgRef_1Sel2Spin_QTD(parent, name, fl) -{ - SpinBox1->close(TRUE); - SpinBox2->close(TRUE); - - SpinBox_DX = new DlgRef_SpinBox(GroupBox1, "SpinBox_DX"); - Layout2->addWidget(SpinBox_DX, 0, 1); - - SpinBox_DY = new DlgRef_SpinBox( GroupBox1, "SpinBox_DY"); - Layout2->addWidget(SpinBox_DY, 1, 1); - -} - - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_1Sel2Spin::~DlgRef_1Sel2Spin() -{ - // no need to delete child widgets, Qt does it all for us -} diff --git a/src/DlgRef/DlgRef_1Sel2Spin.h b/src/DlgRef/DlgRef_1Sel2Spin.h deleted file mode 100644 index 33a11f4f5..000000000 --- a/src/DlgRef/DlgRef_1Sel2Spin.h +++ /dev/null @@ -1,48 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_1Sel2Spin.h -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#ifndef DLGREF_1SEL2SPIN_H -#define DLGREF_1SEL2SPIN_H - -#include "DlgRef_1Sel2Spin_QTD.h" -#include "DlgRef_SpinBox.h" - -class DlgRef_1Sel2Spin : public DlgRef_1Sel2Spin_QTD -{ - Q_OBJECT - -public: - DlgRef_1Sel2Spin(QWidget* parent = 0, const char* name = 0, WFlags fl = 0); - ~DlgRef_1Sel2Spin(); - - DlgRef_SpinBox* SpinBox_DX; - DlgRef_SpinBox* SpinBox_DY; - -}; - -#endif // DLGREF_1SEL2SPIN_H diff --git a/src/DlgRef/DlgRef_1Sel2Spin_QTD.cxx b/src/DlgRef/DlgRef_1Sel2Spin_QTD.cxx deleted file mode 100644 index 9e0e82546..000000000 --- a/src/DlgRef/DlgRef_1Sel2Spin_QTD.cxx +++ /dev/null @@ -1,100 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'DlgRef_1Sel2Spin_QTD.ui' -** -** Created: jeu oct 2 11:08:05 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "DlgRef_1Sel2Spin_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a DlgRef_1Sel2Spin_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -DlgRef_1Sel2Spin_QTD::DlgRef_1Sel2Spin_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "DlgRef_1Sel2Spin_QTD" ); - resize( 129, 115 ); - setCaption( trUtf8( "DlgRef_1Sel2Spin_QTD" ) ); - DlgRef_1Sel2Spin_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "DlgRef_1Sel2Spin_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setTitle( trUtf8( "" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - - Layout2 = new QGridLayout( 0, 1, 1, 0, 6, "Layout2"); - - TextLabel3 = new QLabel( GroupBox1, "TextLabel3" ); - TextLabel3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel3->sizePolicy().hasHeightForWidth() ) ); - TextLabel3->setText( trUtf8( "TL3" ) ); - - Layout2->addWidget( TextLabel3, 1, 0 ); - - SpinBox1 = new QSpinBox( GroupBox1, "SpinBox1" ); - SpinBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox1->sizePolicy().hasHeightForWidth() ) ); - - Layout2->addWidget( SpinBox1, 0, 1 ); - - TextLabel2 = new QLabel( GroupBox1, "TextLabel2" ); - TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) ); - TextLabel2->setText( trUtf8( "TL2" ) ); - - Layout2->addWidget( TextLabel2, 0, 0 ); - - SpinBox2 = new QSpinBox( GroupBox1, "SpinBox2" ); - SpinBox2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox2->sizePolicy().hasHeightForWidth() ) ); - - Layout2->addWidget( SpinBox2, 1, 1 ); - - Layout1->addMultiCellLayout( Layout2, 1, 1, 0, 2 ); - - LineEdit1 = new QLineEdit( GroupBox1, "LineEdit1" ); - - Layout1->addWidget( LineEdit1, 0, 2 ); - QSpacerItem* spacer = new QSpacerItem( 0, 30, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout1->addItem( spacer, 2, 2 ); - - PushButton1 = new QPushButton( GroupBox1, "PushButton1" ); - PushButton1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton1->sizePolicy().hasHeightForWidth() ) ); - PushButton1->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton1, 0, 1 ); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - Layout1->addWidget( TextLabel1, 0, 0 ); - - GroupBox1Layout->addLayout( Layout1, 0, 0 ); - - DlgRef_1Sel2Spin_QTDLayout->addWidget( GroupBox1, 0, 0 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_1Sel2Spin_QTD::~DlgRef_1Sel2Spin_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/DlgRef/DlgRef_1Sel2Spin_QTD.h b/src/DlgRef/DlgRef_1Sel2Spin_QTD.h deleted file mode 100644 index 82cae8783..000000000 --- a/src/DlgRef/DlgRef_1Sel2Spin_QTD.h +++ /dev/null @@ -1,48 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'DlgRef_1Sel2Spin_QTD.ui' -** -** Created: jeu oct 2 11:08:05 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef DLGREF_1SEL2SPIN_QTD_H -#define DLGREF_1SEL2SPIN_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QGroupBox; -class QLabel; -class QLineEdit; -class QPushButton; -class QSpinBox; - -class DlgRef_1Sel2Spin_QTD : public QWidget -{ - Q_OBJECT - -public: - DlgRef_1Sel2Spin_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~DlgRef_1Sel2Spin_QTD(); - - QGroupBox* GroupBox1; - QLabel* TextLabel3; - QSpinBox* SpinBox1; - QLabel* TextLabel2; - QSpinBox* SpinBox2; - QLineEdit* LineEdit1; - QPushButton* PushButton1; - QLabel* TextLabel1; - - -protected: - QGridLayout* DlgRef_1Sel2Spin_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* Layout1; - QGridLayout* Layout2; -}; - -#endif // DLGREF_1SEL2SPIN_QTD_H diff --git a/src/DlgRef/DlgRef_1Sel3Check_QTD.cxx b/src/DlgRef/DlgRef_1Sel3Check_QTD.cxx deleted file mode 100644 index 7f35197cc..000000000 --- a/src/DlgRef/DlgRef_1Sel3Check_QTD.cxx +++ /dev/null @@ -1,95 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'DlgRef_1Sel3Check_QTD.ui' -** -** Created: Thu May 20 10:15:08 2004 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "DlgRef_1Sel3Check_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a DlgRef_1Sel3Check_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -DlgRef_1Sel3Check_QTD::DlgRef_1Sel3Check_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "DlgRef_1Sel3Check_QTD" ); - resize( 163, 116 ); - setCaption( trUtf8( "DlgRef_1Sel3Check_QTD" ) ); - DlgRef_1Sel3Check_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "DlgRef_1Sel3Check_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setTitle( trUtf8( "" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout6 = new QGridLayout( 0, 1, 1, 0, 6, "Layout6"); - QSpacerItem* spacer = new QSpacerItem( 0, 16, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout6->addItem( spacer, 4, 2 ); - - LineEdit1 = new QLineEdit( GroupBox1, "LineEdit1" ); - - Layout6->addWidget( LineEdit1, 0, 2 ); - - CheckButton2 = new QCheckBox( GroupBox1, "CheckButton2" ); - CheckButton2->setText( trUtf8( "" ) ); - - Layout6->addMultiCellWidget( CheckButton2, 2, 2, 0, 2 ); - - CheckButton1 = new QCheckBox( GroupBox1, "CheckButton1" ); - CheckButton1->setText( trUtf8( "" ) ); - - Layout6->addMultiCellWidget( CheckButton1, 1, 1, 0, 2 ); - - CheckButton3 = new QCheckBox( GroupBox1, "CheckButton3" ); - CheckButton3->setText( trUtf8( "" ) ); - - Layout6->addMultiCellWidget( CheckButton3, 3, 3, 0, 2 ); - - PushButton1 = new QPushButton( GroupBox1, "PushButton1" ); - PushButton1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton1->sizePolicy().hasHeightForWidth() ) ); - PushButton1->setText( trUtf8( "" ) ); - - Layout6->addWidget( PushButton1, 0, 1 ); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - Layout6->addWidget( TextLabel1, 0, 0 ); - - GroupBox1Layout->addLayout( Layout6, 0, 0 ); - - DlgRef_1Sel3Check_QTDLayout->addWidget( GroupBox1, 0, 0 ); - - // tab order - setTabOrder( PushButton1, LineEdit1 ); - setTabOrder( LineEdit1, CheckButton1 ); - setTabOrder( CheckButton1, CheckButton2 ); - setTabOrder( CheckButton2, CheckButton3 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_1Sel3Check_QTD::~DlgRef_1Sel3Check_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/DlgRef/DlgRef_1Sel3Check_QTD.h b/src/DlgRef/DlgRef_1Sel3Check_QTD.h deleted file mode 100644 index a63e25ea7..000000000 --- a/src/DlgRef/DlgRef_1Sel3Check_QTD.h +++ /dev/null @@ -1,46 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'DlgRef_1Sel3Check_QTD.ui' -** -** Created: Thu May 20 10:15:07 2004 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef DLGREF_1SEL3CHECK_QTD_H -#define DLGREF_1SEL3CHECK_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QCheckBox; -class QGroupBox; -class QLabel; -class QLineEdit; -class QPushButton; - -class DlgRef_1Sel3Check_QTD : public QWidget -{ - Q_OBJECT - -public: - DlgRef_1Sel3Check_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~DlgRef_1Sel3Check_QTD(); - - QGroupBox* GroupBox1; - QLineEdit* LineEdit1; - QCheckBox* CheckButton2; - QCheckBox* CheckButton1; - QCheckBox* CheckButton3; - QPushButton* PushButton1; - QLabel* TextLabel1; - - -protected: - QGridLayout* DlgRef_1Sel3Check_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* Layout6; -}; - -#endif // DLGREF_1SEL3CHECK_QTD_H diff --git a/src/DlgRef/DlgRef_1Sel3Spin.cxx b/src/DlgRef/DlgRef_1Sel3Spin.cxx deleted file mode 100644 index 8cf310421..000000000 --- a/src/DlgRef/DlgRef_1Sel3Spin.cxx +++ /dev/null @@ -1,63 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_1Sel3Spin.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#include "DlgRef_1Sel3Spin.h" - -#include -#include -#include - -/* - * Constructs a DlgRef_1Sel3Spin which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' - */ -DlgRef_1Sel3Spin::DlgRef_1Sel3Spin(QWidget* parent, const char* name, WFlags fl) - :DlgRef_1Sel3Spin_QTD(parent, name, fl) -{ - SpinBox1->close(TRUE); - SpinBox2->close(TRUE); - SpinBox3->close(TRUE); - - SpinBox_DX = new DlgRef_SpinBox(GroupBox1, "SpinBox_DX"); - Layout2->addWidget(SpinBox_DX, 0, 1); - - SpinBox_DY = new DlgRef_SpinBox( GroupBox1, "SpinBox_DY"); - Layout2->addWidget(SpinBox_DY, 1, 1); - - SpinBox_DZ = new DlgRef_SpinBox( GroupBox1, "SpinBox_DZ"); - Layout2->addWidget(SpinBox_DZ, 2, 1); -} - - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_1Sel3Spin::~DlgRef_1Sel3Spin() -{ - // no need to delete child widgets, Qt does it all for us -} diff --git a/src/DlgRef/DlgRef_1Sel3Spin.h b/src/DlgRef/DlgRef_1Sel3Spin.h deleted file mode 100644 index 510090565..000000000 --- a/src/DlgRef/DlgRef_1Sel3Spin.h +++ /dev/null @@ -1,60 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_1Sel3Spin.h -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#ifndef DLGREF_1SEL3SPIN_H -#define DLGREF_1SEL3SPIN_H - -#include "DlgRef_1Sel3Spin_QTD.h" -#include "DlgRef_SpinBox.h" -//#if defined WNT -//#include -//#else -//#define SALOME_WNT_EXPORT -//#endif - -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif - -class DLGREF_WNT_EXPORT DlgRef_1Sel3Spin : public DlgRef_1Sel3Spin_QTD -{ - Q_OBJECT - -public: - DlgRef_1Sel3Spin(QWidget* parent = 0, const char* name = 0, WFlags fl = 0); - ~DlgRef_1Sel3Spin(); - - DlgRef_SpinBox* SpinBox_DX; - DlgRef_SpinBox* SpinBox_DY; - DlgRef_SpinBox* SpinBox_DZ; - -}; - -#endif // DLGREF_1SEL3SPIN_H diff --git a/src/DlgRef/DlgRef_1Sel3Spin_QTD.cxx b/src/DlgRef/DlgRef_1Sel3Spin_QTD.cxx deleted file mode 100644 index a4c3cb2d8..000000000 --- a/src/DlgRef/DlgRef_1Sel3Spin_QTD.cxx +++ /dev/null @@ -1,111 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'DlgRef_1Sel3Spin_QTD.ui' -** -** Created: ven oct 24 15:55:11 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "DlgRef_1Sel3Spin_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a DlgRef_1Sel3Spin_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -DlgRef_1Sel3Spin_QTD::DlgRef_1Sel3Spin_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "DlgRef_1Sel3Spin_QTD" ); - resize( 129, 143 ); - setCaption( trUtf8( "DlgRef_1Sel3Spin_QTD" ) ); - DlgRef_1Sel3Spin_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "DlgRef_1Sel3Spin_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setTitle( trUtf8( "" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - Layout1->addWidget( TextLabel1, 0, 0 ); - - PushButton1 = new QPushButton( GroupBox1, "PushButton1" ); - PushButton1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton1->sizePolicy().hasHeightForWidth() ) ); - PushButton1->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton1, 0, 1 ); - - LineEdit1 = new QLineEdit( GroupBox1, "LineEdit1" ); - - Layout1->addWidget( LineEdit1, 0, 2 ); - QSpacerItem* spacer = new QSpacerItem( 0, 150, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout1->addItem( spacer, 2, 2 ); - - Layout2 = new QGridLayout( 0, 1, 1, 0, 6, "Layout2"); - - SpinBox2 = new QSpinBox( GroupBox1, "SpinBox2" ); - SpinBox2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox2->sizePolicy().hasHeightForWidth() ) ); - - Layout2->addWidget( SpinBox2, 1, 1 ); - - TextLabel3 = new QLabel( GroupBox1, "TextLabel3" ); - TextLabel3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel3->sizePolicy().hasHeightForWidth() ) ); - TextLabel3->setText( trUtf8( "TL3" ) ); - - Layout2->addWidget( TextLabel3, 1, 0 ); - - SpinBox3 = new QSpinBox( GroupBox1, "SpinBox3" ); - SpinBox3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox3->sizePolicy().hasHeightForWidth() ) ); - - Layout2->addWidget( SpinBox3, 2, 1 ); - - SpinBox1 = new QSpinBox( GroupBox1, "SpinBox1" ); - SpinBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox1->sizePolicy().hasHeightForWidth() ) ); - - Layout2->addWidget( SpinBox1, 0, 1 ); - - TextLabel4 = new QLabel( GroupBox1, "TextLabel4" ); - TextLabel4->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel4->sizePolicy().hasHeightForWidth() ) ); - TextLabel4->setText( trUtf8( "TL4" ) ); - - Layout2->addWidget( TextLabel4, 2, 0 ); - - TextLabel2 = new QLabel( GroupBox1, "TextLabel2" ); - TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) ); - TextLabel2->setText( trUtf8( "TL2" ) ); - - Layout2->addWidget( TextLabel2, 0, 0 ); - - Layout1->addMultiCellLayout( Layout2, 1, 1, 0, 2 ); - - GroupBox1Layout->addLayout( Layout1, 0, 0 ); - - DlgRef_1Sel3Spin_QTDLayout->addWidget( GroupBox1, 0, 0 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_1Sel3Spin_QTD::~DlgRef_1Sel3Spin_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/DlgRef/DlgRef_1Sel3Spin_QTD.h b/src/DlgRef/DlgRef_1Sel3Spin_QTD.h deleted file mode 100644 index 8283cd9b7..000000000 --- a/src/DlgRef/DlgRef_1Sel3Spin_QTD.h +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'DlgRef_1Sel3Spin_QTD.ui' -** -** Created: ven oct 24 15:55:10 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef DLGREF_1SEL3SPIN_QTD_H -#define DLGREF_1SEL3SPIN_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QGroupBox; -class QLabel; -class QLineEdit; -class QPushButton; -class QSpinBox; -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif -class DLGREF_WNT_EXPORT DlgRef_1Sel3Spin_QTD : public QWidget -{ - Q_OBJECT - -public: - DlgRef_1Sel3Spin_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~DlgRef_1Sel3Spin_QTD(); - - QGroupBox* GroupBox1; - QLabel* TextLabel1; - QPushButton* PushButton1; - QLineEdit* LineEdit1; - QSpinBox* SpinBox2; - QLabel* TextLabel3; - QSpinBox* SpinBox3; - QSpinBox* SpinBox1; - QLabel* TextLabel4; - QLabel* TextLabel2; - - -protected: - QGridLayout* DlgRef_1Sel3Spin_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* Layout1; - QGridLayout* Layout2; -}; - -#endif // DLGREF_1SEL3SPIN_QTD_H diff --git a/src/DlgRef/DlgRef_1Sel4Spin.cxx b/src/DlgRef/DlgRef_1Sel4Spin.cxx deleted file mode 100644 index 107e5a426..000000000 --- a/src/DlgRef/DlgRef_1Sel4Spin.cxx +++ /dev/null @@ -1,67 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_1Sel4Spin.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#include "DlgRef_1Sel4Spin.h" - -#include -#include -#include - -/* - * Constructs a DlgRef_1Sel4Spin which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' - */ -DlgRef_1Sel4Spin::DlgRef_1Sel4Spin(QWidget* parent, const char* name, WFlags fl) - :DlgRef_1Sel4Spin_QTD(parent, name, fl) -{ - SpinBox1->close(TRUE); - SpinBox2->close(TRUE); - SpinBox3->close(TRUE); - SpinBox4->close(TRUE); - - SpinBox_DX = new DlgRef_SpinBox(GroupBox1, "SpinBox_DX"); - Layout3->addWidget(SpinBox_DX, 0, 2); - - SpinBox_DY = new DlgRef_SpinBox( GroupBox1, "SpinBox_DY"); - Layout3->addWidget(SpinBox_DY, 0, 4); - - SpinBox_DZ = new DlgRef_SpinBox( GroupBox1, "SpinBox_DZ"); - Layout3->addWidget(SpinBox_DZ, 0, 6); - - SpinBox_S = new DlgRef_SpinBox( GroupBox1, "SpinBox_S"); - Layout4->addWidget(SpinBox_S, 0, 1); -} - - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_1Sel4Spin::~DlgRef_1Sel4Spin() -{ - // no need to delete child widgets, Qt does it all for us -} diff --git a/src/DlgRef/DlgRef_1Sel4Spin.h b/src/DlgRef/DlgRef_1Sel4Spin.h deleted file mode 100644 index db4d2560d..000000000 --- a/src/DlgRef/DlgRef_1Sel4Spin.h +++ /dev/null @@ -1,51 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_1Sel4Spin.h -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#ifndef DLGREF_1SEL4SPIN_H -#define DLGREF_1SEL4SPIN_H - -#include "DlgRef_1Sel4Spin_QTD.h" -#include "DlgRef_SpinBox.h" - -class DlgRef_1Sel4Spin : public DlgRef_1Sel4Spin_QTD -{ - Q_OBJECT - -public: - DlgRef_1Sel4Spin( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~DlgRef_1Sel4Spin(); - - DlgRef_SpinBox* SpinBox_DX; - DlgRef_SpinBox* SpinBox_DY; - DlgRef_SpinBox* SpinBox_DZ; - - DlgRef_SpinBox* SpinBox_S; - -}; - -#endif // DLGREF_1SEL4SPIN_H diff --git a/src/DlgRef/DlgRef_1Sel4Spin_QTD.cxx b/src/DlgRef/DlgRef_1Sel4Spin_QTD.cxx deleted file mode 100644 index 319249c03..000000000 --- a/src/DlgRef/DlgRef_1Sel4Spin_QTD.cxx +++ /dev/null @@ -1,132 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'DlgRef_1Sel4Spin_QTD.ui' -** -** Created: mar sep 23 16:05:09 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "DlgRef_1Sel4Spin_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a DlgRef_1Sel4Spin_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -DlgRef_1Sel4Spin_QTD::DlgRef_1Sel4Spin_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "DlgRef_1Sel4Spin_QTD" ); - resize( 284, 119 ); - setCaption( trUtf8( "DlgRef_1Sel4Spin_QTD" ) ); - DlgRef_1Sel4Spin_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "DlgRef_1Sel4Spin_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setTitle( trUtf8( "" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - - Layout3 = new QGridLayout( 0, 1, 1, 0, 6, "Layout3"); - - TextLabel5 = new QLabel( GroupBox1, "TextLabel5" ); - TextLabel5->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel5->sizePolicy().hasHeightForWidth() ) ); - TextLabel5->setText( trUtf8( "TL5" ) ); - - Layout3->addWidget( TextLabel5, 0, 5 ); - - TextLabel3 = new QLabel( GroupBox1, "TextLabel3" ); - TextLabel3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel3->sizePolicy().hasHeightForWidth() ) ); - TextLabel3->setText( trUtf8( "TL3" ) ); - - Layout3->addWidget( TextLabel3, 0, 1 ); - - TextLabel4 = new QLabel( GroupBox1, "TextLabel4" ); - TextLabel4->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel4->sizePolicy().hasHeightForWidth() ) ); - TextLabel4->setText( trUtf8( "TL4" ) ); - - Layout3->addWidget( TextLabel4, 0, 3 ); - - SpinBox3 = new QSpinBox( GroupBox1, "SpinBox3" ); - SpinBox3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox3->sizePolicy().hasHeightForWidth() ) ); - - Layout3->addWidget( SpinBox3, 0, 6 ); - - SpinBox1 = new QSpinBox( GroupBox1, "SpinBox1" ); - SpinBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox1->sizePolicy().hasHeightForWidth() ) ); - - Layout3->addWidget( SpinBox1, 0, 2 ); - - TextLabel2 = new QLabel( GroupBox1, "TextLabel2" ); - TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) ); - TextLabel2->setText( trUtf8( "TL2" ) ); - - Layout3->addWidget( TextLabel2, 0, 0 ); - - SpinBox2 = new QSpinBox( GroupBox1, "SpinBox2" ); - SpinBox2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox2->sizePolicy().hasHeightForWidth() ) ); - - Layout3->addWidget( SpinBox2, 0, 4 ); - - Layout1->addLayout( Layout3, 1, 0 ); - QSpacerItem* spacer = new QSpacerItem( 0, 16, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout1->addItem( spacer, 3, 0 ); - - Layout4 = new QGridLayout( 0, 1, 1, 0, 6, "Layout4"); - - TextLabel6 = new QLabel( GroupBox1, "TextLabel6" ); - TextLabel6->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel6->sizePolicy().hasHeightForWidth() ) ); - TextLabel6->setText( trUtf8( "TL6" ) ); - - Layout4->addWidget( TextLabel6, 0, 0 ); - - SpinBox4 = new QSpinBox( GroupBox1, "SpinBox4" ); - - Layout4->addWidget( SpinBox4, 0, 1 ); - - Layout1->addLayout( Layout4, 2, 0 ); - - Layout2 = new QHBoxLayout( 0, 0, 6, "Layout2"); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - Layout2->addWidget( TextLabel1 ); - - PushButton1 = new QPushButton( GroupBox1, "PushButton1" ); - PushButton1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton1->sizePolicy().hasHeightForWidth() ) ); - PushButton1->setText( trUtf8( "" ) ); - Layout2->addWidget( PushButton1 ); - - LineEdit1 = new QLineEdit( GroupBox1, "LineEdit1" ); - Layout2->addWidget( LineEdit1 ); - - Layout1->addLayout( Layout2, 0, 0 ); - - GroupBox1Layout->addLayout( Layout1, 0, 0 ); - - DlgRef_1Sel4Spin_QTDLayout->addWidget( GroupBox1, 0, 0 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_1Sel4Spin_QTD::~DlgRef_1Sel4Spin_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/DlgRef/DlgRef_1Sel4Spin_QTD.h b/src/DlgRef/DlgRef_1Sel4Spin_QTD.h deleted file mode 100644 index db64ea6ae..000000000 --- a/src/DlgRef/DlgRef_1Sel4Spin_QTD.h +++ /dev/null @@ -1,55 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'DlgRef_1Sel4Spin_QTD.ui' -** -** Created: mar sep 23 16:05:09 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef DLGREF_1SEL4SPIN_QTD_H -#define DLGREF_1SEL4SPIN_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QGroupBox; -class QLabel; -class QLineEdit; -class QPushButton; -class QSpinBox; - -class DlgRef_1Sel4Spin_QTD : public QWidget -{ - Q_OBJECT - -public: - DlgRef_1Sel4Spin_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~DlgRef_1Sel4Spin_QTD(); - - QGroupBox* GroupBox1; - QLabel* TextLabel5; - QLabel* TextLabel3; - QLabel* TextLabel4; - QSpinBox* SpinBox3; - QSpinBox* SpinBox1; - QLabel* TextLabel2; - QSpinBox* SpinBox2; - QLabel* TextLabel6; - QSpinBox* SpinBox4; - QLabel* TextLabel1; - QPushButton* PushButton1; - QLineEdit* LineEdit1; - - -protected: - QGridLayout* DlgRef_1Sel4Spin_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* Layout1; - QGridLayout* Layout3; - QGridLayout* Layout4; - QHBoxLayout* Layout2; -}; - -#endif // DLGREF_1SEL4SPIN_QTD_H diff --git a/src/DlgRef/DlgRef_1Sel5Spin.cxx b/src/DlgRef/DlgRef_1Sel5Spin.cxx deleted file mode 100644 index bc150405c..000000000 --- a/src/DlgRef/DlgRef_1Sel5Spin.cxx +++ /dev/null @@ -1,71 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_1Sel5Spin.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#include "DlgRef_1Sel5Spin.h" - -#include -#include -#include - -/* - * Constructs a DlgRef_1Sel5Spin which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' - */ -DlgRef_1Sel5Spin::DlgRef_1Sel5Spin(QWidget* parent, const char* name, WFlags fl) - :DlgRef_1Sel5Spin_QTD(parent, name, fl) -{ - SpinBox1->close(TRUE); - SpinBox2->close(TRUE); - SpinBox3->close(TRUE); - SpinBox4->close(TRUE); - SpinBox5->close(TRUE); - - SpinBox_1 = new DlgRef_SpinBox(GroupBox1, "SpinBox_1"); - Layout2->addWidget(SpinBox_1, 0, 1); - - SpinBox_2 = new DlgRef_SpinBox(GroupBox1, "SpinBox_2"); - Layout2->addWidget(SpinBox_2, 0, 3); - - SpinBox_3 = new DlgRef_SpinBox(GroupBox1, "SpinBox_3"); - Layout2->addWidget(SpinBox_3, 2, 1); - - SpinBox_4 = new DlgRef_SpinBox(GroupBox1, "SpinBox_4"); - Layout2->addWidget(SpinBox_4, 1, 1); - - SpinBox_5 = new DlgRef_SpinBox(GroupBox1, "SpinBox_5"); - Layout2->addWidget(SpinBox_5, 1, 3); -} - - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_1Sel5Spin::~DlgRef_1Sel5Spin() -{ - // no need to delete child widgets, Qt does it all for us -} diff --git a/src/DlgRef/DlgRef_1Sel5Spin.h b/src/DlgRef/DlgRef_1Sel5Spin.h deleted file mode 100644 index 8cd0a46da..000000000 --- a/src/DlgRef/DlgRef_1Sel5Spin.h +++ /dev/null @@ -1,57 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_1Sel5Spin.h -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#ifndef DLGREF_1SEL5SPIN_H -#define DLGREF_1SEL5SPIN_H - -#include "DlgRef_1Sel5Spin_QTD.h" -#include "DlgRef_SpinBox.h" - -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif - -class DLGREF_WNT_EXPORT DlgRef_1Sel5Spin : public DlgRef_1Sel5Spin_QTD -{ - Q_OBJECT - -public: - DlgRef_1Sel5Spin( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~DlgRef_1Sel5Spin(); - - DlgRef_SpinBox* SpinBox_1; - DlgRef_SpinBox* SpinBox_2; - DlgRef_SpinBox* SpinBox_3; - DlgRef_SpinBox* SpinBox_4; - DlgRef_SpinBox* SpinBox_5; - -}; - -#endif // DLGREF_1SEL5SPIN_H diff --git a/src/DlgRef/DlgRef_1Sel5Spin_QTD.cxx b/src/DlgRef/DlgRef_1Sel5Spin_QTD.cxx deleted file mode 100644 index b93242062..000000000 --- a/src/DlgRef/DlgRef_1Sel5Spin_QTD.cxx +++ /dev/null @@ -1,133 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'DlgRef_1Sel5Spin_QTD.ui' -** -** Created: mar nov 18 11:19:14 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "DlgRef_1Sel5Spin_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a DlgRef_1Sel5Spin_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -DlgRef_1Sel5Spin_QTD::DlgRef_1Sel5Spin_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "DlgRef_1Sel5Spin_QTD" ); - resize( 162, 143 ); - setCaption( trUtf8( "DlgRef_1Sel5Spin_QTD" ) ); - DlgRef_1Sel5Spin_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "DlgRef_1Sel5Spin_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setTitle( trUtf8( "" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - Layout1->addWidget( TextLabel1, 0, 0 ); - - PushButton1 = new QPushButton( GroupBox1, "PushButton1" ); - PushButton1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton1->sizePolicy().hasHeightForWidth() ) ); - PushButton1->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton1, 0, 1 ); - - Layout2 = new QGridLayout( 0, 1, 1, 0, 6, "Layout2"); - - SpinBox2 = new QSpinBox( GroupBox1, "SpinBox2" ); - SpinBox2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox2->sizePolicy().hasHeightForWidth() ) ); - - Layout2->addWidget( SpinBox2, 0, 3 ); - - SpinBox3 = new QSpinBox( GroupBox1, "SpinBox3" ); - SpinBox3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox3->sizePolicy().hasHeightForWidth() ) ); - - Layout2->addWidget( SpinBox3, 2, 1 ); - - TextLabel5 = new QLabel( GroupBox1, "TextLabel5" ); - TextLabel5->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel5->sizePolicy().hasHeightForWidth() ) ); - TextLabel5->setText( trUtf8( "TL5" ) ); - - Layout2->addWidget( TextLabel5, 1, 0 ); - - TextLabel3 = new QLabel( GroupBox1, "TextLabel3" ); - TextLabel3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel3->sizePolicy().hasHeightForWidth() ) ); - TextLabel3->setText( trUtf8( "TL3" ) ); - - Layout2->addWidget( TextLabel3, 0, 2 ); - - TextLabel4 = new QLabel( GroupBox1, "TextLabel4" ); - TextLabel4->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel4->sizePolicy().hasHeightForWidth() ) ); - TextLabel4->setText( trUtf8( "TL4" ) ); - - Layout2->addWidget( TextLabel4, 2, 0 ); - - SpinBox4 = new QSpinBox( GroupBox1, "SpinBox4" ); - SpinBox4->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox4->sizePolicy().hasHeightForWidth() ) ); - - Layout2->addWidget( SpinBox4, 1, 1 ); - - SpinBox1 = new QSpinBox( GroupBox1, "SpinBox1" ); - SpinBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox1->sizePolicy().hasHeightForWidth() ) ); - - Layout2->addWidget( SpinBox1, 0, 1 ); - - TextLabel6 = new QLabel( GroupBox1, "TextLabel6" ); - TextLabel6->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel6->sizePolicy().hasHeightForWidth() ) ); - TextLabel6->setText( trUtf8( "TL6" ) ); - - Layout2->addWidget( TextLabel6, 1, 2 ); - - TextLabel2 = new QLabel( GroupBox1, "TextLabel2" ); - TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) ); - TextLabel2->setText( trUtf8( "TL2" ) ); - - Layout2->addWidget( TextLabel2, 0, 0 ); - - SpinBox5 = new QSpinBox( GroupBox1, "SpinBox5" ); - SpinBox5->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox5->sizePolicy().hasHeightForWidth() ) ); - - Layout2->addWidget( SpinBox5, 1, 3 ); - - Layout1->addMultiCellLayout( Layout2, 1, 1, 0, 2 ); - QSpacerItem* spacer = new QSpacerItem( 0, 120, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout1->addItem( spacer, 2, 2 ); - - LineEdit1 = new QLineEdit( GroupBox1, "LineEdit1" ); - - Layout1->addWidget( LineEdit1, 0, 2 ); - - GroupBox1Layout->addLayout( Layout1, 0, 0 ); - - DlgRef_1Sel5Spin_QTDLayout->addWidget( GroupBox1, 0, 0 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_1Sel5Spin_QTD::~DlgRef_1Sel5Spin_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/DlgRef/DlgRef_1Sel5Spin_QTD.h b/src/DlgRef/DlgRef_1Sel5Spin_QTD.h deleted file mode 100644 index 5ec3e33cd..000000000 --- a/src/DlgRef/DlgRef_1Sel5Spin_QTD.h +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'DlgRef_1Sel5Spin_QTD.ui' -** -** Created: mar nov 18 11:19:13 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef DLGREF_1SEL5SPIN_QTD_H -#define DLGREF_1SEL5SPIN_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QGroupBox; -class QLabel; -class QLineEdit; -class QPushButton; -class QSpinBox; - -class DlgRef_1Sel5Spin_QTD : public QWidget -{ - Q_OBJECT - -public: - DlgRef_1Sel5Spin_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~DlgRef_1Sel5Spin_QTD(); - - QGroupBox* GroupBox1; - QLabel* TextLabel1; - QPushButton* PushButton1; - QSpinBox* SpinBox2; - QSpinBox* SpinBox3; - QLabel* TextLabel5; - QLabel* TextLabel3; - QLabel* TextLabel4; - QSpinBox* SpinBox4; - QSpinBox* SpinBox1; - QLabel* TextLabel6; - QLabel* TextLabel2; - QSpinBox* SpinBox5; - QLineEdit* LineEdit1; - - -protected: - QGridLayout* DlgRef_1Sel5Spin_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* Layout1; - QGridLayout* Layout2; -}; - -#endif // DLGREF_1SEL5SPIN_QTD_H diff --git a/src/DlgRef/DlgRef_1Sel_Ext.h b/src/DlgRef/DlgRef_1Sel_Ext.h deleted file mode 100644 index c973f00cd..000000000 --- a/src/DlgRef/DlgRef_1Sel_Ext.h +++ /dev/null @@ -1,34 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'DlgRef_1Sel_QTD.ui' -** -** Created: lun sep 22 17:38:05 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef DlgRef_1Sel_Ext_H -#define DlgRef_1Sel_Ext_H - -#include "DlgRef_1Sel_QTD.h" - -class QGridLayout; - -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif - -class DLGREF_WNT_EXPORT DlgRef_1Sel_Ext : public DlgRef_1Sel_QTD -{ - Q_OBJECT - -public: - DlgRef_1Sel_Ext( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ) - : DlgRef_1Sel_QTD( parent, name, fl ) {}; - ~DlgRef_1Sel_Ext() {}; - - QGridLayout* getGroupBoxLayout() { return GroupBox1Layout; } -}; - -#endif // DlgRef_1Sel_Ext_H diff --git a/src/DlgRef/DlgRef_1Sel_QTD.cxx b/src/DlgRef/DlgRef_1Sel_QTD.cxx deleted file mode 100644 index 90a136249..000000000 --- a/src/DlgRef/DlgRef_1Sel_QTD.cxx +++ /dev/null @@ -1,74 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'DlgRef_1Sel_QTD.ui' -** -** Created: lun sep 22 17:38:06 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "DlgRef_1Sel_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a DlgRef_1Sel_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -DlgRef_1Sel_QTD::DlgRef_1Sel_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "DlgRef_1Sel_QTD" ); - resize( 129, 57 ); - setCaption( trUtf8( "DlgRef_1Sel_QTD" ) ); - DlgRef_1Sel_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "DlgRef_1Sel_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)7, 0, 0, GroupBox1->sizePolicy().hasHeightForWidth() ) ); - GroupBox1->setTitle( trUtf8( "" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - - PushButton1 = new QPushButton( GroupBox1, "PushButton1" ); - PushButton1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton1->sizePolicy().hasHeightForWidth() ) ); - PushButton1->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton1, 0, 1 ); - QSpacerItem* spacer = new QSpacerItem( 0, 16, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout1->addItem( spacer, 1, 2 ); - - LineEdit1 = new QLineEdit( GroupBox1, "LineEdit1" ); - - Layout1->addWidget( LineEdit1, 0, 2 ); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - Layout1->addWidget( TextLabel1, 0, 0 ); - - GroupBox1Layout->addLayout( Layout1, 0, 0 ); - - DlgRef_1Sel_QTDLayout->addWidget( GroupBox1, 0, 0 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_1Sel_QTD::~DlgRef_1Sel_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/DlgRef/DlgRef_1Sel_QTD.h b/src/DlgRef/DlgRef_1Sel_QTD.h deleted file mode 100644 index 58b6ba1bf..000000000 --- a/src/DlgRef/DlgRef_1Sel_QTD.h +++ /dev/null @@ -1,48 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'DlgRef_1Sel_QTD.ui' -** -** Created: lun sep 22 17:38:05 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef DLGREF_1SEL_QTD_H -#define DLGREF_1SEL_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QGroupBox; -class QLabel; -class QLineEdit; -class QPushButton; - -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif - -class DLGREF_WNT_EXPORT DlgRef_1Sel_QTD : public QWidget -{ - Q_OBJECT - -public: - DlgRef_1Sel_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~DlgRef_1Sel_QTD(); - - QGroupBox* GroupBox1; - QPushButton* PushButton1; - QLineEdit* LineEdit1; - QLabel* TextLabel1; - - -protected: - QGridLayout* DlgRef_1Sel_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* Layout1; -}; - -#endif // DLGREF_1SEL_QTD_H diff --git a/src/DlgRef/DlgRef_1Spin.cxx b/src/DlgRef/DlgRef_1Spin.cxx deleted file mode 100644 index 20778cd4b..000000000 --- a/src/DlgRef/DlgRef_1Spin.cxx +++ /dev/null @@ -1,56 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_1Spin.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#include "DlgRef_1Spin.h" - -#include -#include -#include - -/* - * Constructs a DlgRef_1Spin which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' - */ -DlgRef_1Spin::DlgRef_1Spin(QWidget* parent, const char* name, WFlags fl) - :DlgRef_1Spin_QTD(parent, name, fl) -{ - SpinBox1->close(TRUE); - - SpinBox_DX = new DlgRef_SpinBox(GroupBox1, "SpinBox_DX"); - Layout1->addWidget(SpinBox_DX, 0, 1); - -} - - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_1Spin::~DlgRef_1Spin() -{ - // no need to delete child widgets, Qt does it all for us -} diff --git a/src/DlgRef/DlgRef_1Spin.h b/src/DlgRef/DlgRef_1Spin.h deleted file mode 100644 index ccf88983c..000000000 --- a/src/DlgRef/DlgRef_1Spin.h +++ /dev/null @@ -1,51 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_1Spin.h -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#ifndef DLGREF_1SPIN_H -#define DLGREF_1SPIN_H - -#include "DlgRef_1Spin_QTD.h" -#include "DlgRef_SpinBox.h" -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif -class DLGREF_WNT_EXPORT DlgRef_1Spin : public DlgRef_1Spin_QTD -{ - Q_OBJECT - -public: - DlgRef_1Spin(QWidget* parent = 0, const char* name = 0, WFlags fl = 0); - ~DlgRef_1Spin(); - - DlgRef_SpinBox* SpinBox_DX; - -}; - -#endif // DLGREF_1SPIN_H diff --git a/src/DlgRef/DlgRef_1Spin_QTD.cxx b/src/DlgRef/DlgRef_1Spin_QTD.cxx deleted file mode 100644 index aa54d9ad8..000000000 --- a/src/DlgRef/DlgRef_1Spin_QTD.cxx +++ /dev/null @@ -1,68 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'DlgRef_1Spin_QTD.ui' -** -** Created: jeu sep 25 12:22:29 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "DlgRef_1Spin_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a DlgRef_1Spin_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -DlgRef_1Spin_QTD::DlgRef_1Spin_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "DlgRef_1Spin_QTD" ); - resize( 124, 55 ); - setCaption( trUtf8( "DlgRef_1Spin_QTD" ) ); - DlgRef_1Spin_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "DlgRef_1Spin_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setTitle( trUtf8( "" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - QSpacerItem* spacer = new QSpacerItem( 0, 16, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout1->addItem( spacer, 3, 1 ); - - SpinBox1 = new QSpinBox( GroupBox1, "SpinBox1" ); - SpinBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox1->sizePolicy().hasHeightForWidth() ) ); - - Layout1->addWidget( SpinBox1, 0, 1 ); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - Layout1->addWidget( TextLabel1, 0, 0 ); - - GroupBox1Layout->addLayout( Layout1, 0, 0 ); - - DlgRef_1Spin_QTDLayout->addWidget( GroupBox1, 0, 0 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_1Spin_QTD::~DlgRef_1Spin_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/DlgRef/DlgRef_1Spin_QTD.h b/src/DlgRef/DlgRef_1Spin_QTD.h deleted file mode 100644 index 38dfc0703..000000000 --- a/src/DlgRef/DlgRef_1Spin_QTD.h +++ /dev/null @@ -1,44 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'DlgRef_1Spin_QTD.ui' -** -** Created: jeu sep 25 12:22:29 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef DLGREF_1SPIN_QTD_H -#define DLGREF_1SPIN_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QGroupBox; -class QLabel; -class QSpinBox; -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif -class DLGREF_WNT_EXPORT DlgRef_1Spin_QTD : public QWidget -{ - Q_OBJECT - -public: - DlgRef_1Spin_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~DlgRef_1Spin_QTD(); - - QGroupBox* GroupBox1; - QSpinBox* SpinBox1; - QLabel* TextLabel1; - - -protected: - QGridLayout* DlgRef_1Spin_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* Layout1; -}; - -#endif // DLGREF_1SPIN_QTD_H diff --git a/src/DlgRef/DlgRef_2Sel1Spin.cxx b/src/DlgRef/DlgRef_2Sel1Spin.cxx deleted file mode 100644 index b42b334cf..000000000 --- a/src/DlgRef/DlgRef_2Sel1Spin.cxx +++ /dev/null @@ -1,59 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_2Sel1Spin.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#include "DlgRef_2Sel1Spin.h" - -#include -#include -#include -#include - -/* - * Constructs a DlgRef_2Sel1Spin which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' - */ -DlgRef_2Sel1Spin::DlgRef_2Sel1Spin(QWidget* parent, const char* name, WFlags fl) - :DlgRef_2Sel1Spin_QTD(parent, name, fl) -{ - SpinBox1->close(TRUE); - SpinBox_DX = new DlgRef_SpinBox(GroupBox1, "SpinBox_DX"); - Layout2->addWidget(SpinBox_DX, 0, 1); - - // PAL 6532 - PushButton1->setAutoDefault( false ); - PushButton2->setAutoDefault( false ); -} - - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_2Sel1Spin::~DlgRef_2Sel1Spin() -{ - // no need to delete child widgets, Qt does it all for us -} diff --git a/src/DlgRef/DlgRef_2Sel1Spin.h b/src/DlgRef/DlgRef_2Sel1Spin.h deleted file mode 100644 index 8141a2085..000000000 --- a/src/DlgRef/DlgRef_2Sel1Spin.h +++ /dev/null @@ -1,57 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_2Sel1Spin.h -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#ifndef DLGREF_2SEL1SPIN_H -#define DLGREF_2SEL1SPIN_H - -#include "DlgRef_2Sel1Spin_QTD.h" -#include "DlgRef_SpinBox.h" -//#if defined WNT -//#include -//#else -//#define SALOME_WNT_EXPORT -//#endif -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif - -class DLGREF_WNT_EXPORT DlgRef_2Sel1Spin : public DlgRef_2Sel1Spin_QTD -{ - Q_OBJECT - -public: - DlgRef_2Sel1Spin( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~DlgRef_2Sel1Spin(); - - DlgRef_SpinBox* SpinBox_DX; - -}; - -#endif // DLGREF_2SEL1SPIN_H diff --git a/src/DlgRef/DlgRef_2Sel1Spin2Check.cxx b/src/DlgRef/DlgRef_2Sel1Spin2Check.cxx deleted file mode 100644 index 717897572..000000000 --- a/src/DlgRef/DlgRef_2Sel1Spin2Check.cxx +++ /dev/null @@ -1,54 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_2Sel1Spin2Check.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#include "DlgRef_2Sel1Spin2Check.h" - -#include -#include -#include - -/* - * Constructs a DlgRef_2Sel1Spin2Check which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' - */ -DlgRef_2Sel1Spin2Check::DlgRef_2Sel1Spin2Check(QWidget* parent, const char* name, WFlags fl) - :DlgRef_2Sel1Spin2Check_QTD(parent, name, fl) -{ - SpinBox1->close(TRUE); - SpinBox_DX = new DlgRef_SpinBox(GroupBox1, "SpinBox_DX"); - Layout1->addWidget(SpinBox_DX, 2, 2); -} - - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_2Sel1Spin2Check::~DlgRef_2Sel1Spin2Check() -{ - // no need to delete child widgets, Qt does it all for us -} diff --git a/src/DlgRef/DlgRef_2Sel1Spin2Check.h b/src/DlgRef/DlgRef_2Sel1Spin2Check.h deleted file mode 100644 index 7bd7e50f8..000000000 --- a/src/DlgRef/DlgRef_2Sel1Spin2Check.h +++ /dev/null @@ -1,52 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_2Sel1Spin2Check.h -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#ifndef DLGREF_2SEL1SPIN2CHECK_H -#define DLGREF_2SEL1SPIN2CHECK_H - -#include "DlgRef_2Sel1Spin2Check_QTD.h" -#include "DlgRef_SpinBox.h" - -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif -class DLGREF_WNT_EXPORT DlgRef_2Sel1Spin2Check : public DlgRef_2Sel1Spin2Check_QTD -{ - Q_OBJECT - -public: - DlgRef_2Sel1Spin2Check(QWidget* parent = 0, const char* name = 0, WFlags fl = 0); - ~DlgRef_2Sel1Spin2Check(); - - DlgRef_SpinBox* SpinBox_DX; - -}; - -#endif // DLGREF_2SEL1SPIN2CHECK_H diff --git a/src/DlgRef/DlgRef_2Sel1Spin2Check_QTD.cxx b/src/DlgRef/DlgRef_2Sel1Spin2Check_QTD.cxx deleted file mode 100644 index 7b54bed10..000000000 --- a/src/DlgRef/DlgRef_2Sel1Spin2Check_QTD.cxx +++ /dev/null @@ -1,120 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'DlgRef_2Sel1Spin2Check_QTD.ui' -** -** Created: Fri Aug 13 15:32:26 2004 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "DlgRef_2Sel1Spin2Check_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a DlgRef_2Sel1Spin2Check_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -DlgRef_2Sel1Spin2Check_QTD::DlgRef_2Sel1Spin2Check_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "DlgRef_2Sel1Spin2Check_QTD" ); - resize( 256, 139 ); - setCaption( trUtf8( "DlgRef_2Sel1Spin2Check_QTD" ) ); - DlgRef_2Sel1Spin2Check_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "DlgRef_2Sel1Spin2Check_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setTitle( trUtf8( "" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - - TextLabel2 = new QLabel( GroupBox1, "TextLabel2" ); - TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) ); - TextLabel2->setText( trUtf8( "TL2" ) ); - - Layout1->addWidget( TextLabel2, 1, 0 ); - - PushButton1 = new QPushButton( GroupBox1, "PushButton1" ); - PushButton1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton1->sizePolicy().hasHeightForWidth() ) ); - PushButton1->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton1, 0, 1 ); - - TextLabel3 = new QLabel( GroupBox1, "TextLabel3" ); - TextLabel3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel3->sizePolicy().hasHeightForWidth() ) ); - TextLabel3->setText( trUtf8( "TL3" ) ); - - Layout1->addWidget( TextLabel3, 2, 0 ); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - Layout1->addWidget( TextLabel1, 0, 0 ); - QSpacerItem* spacer = new QSpacerItem( 0, 316, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout1->addItem( spacer, 4, 2 ); - - CheckButton2 = new QCheckBox( GroupBox1, "CheckButton2" ); - CheckButton2->setText( trUtf8( "" ) ); - - Layout1->addWidget( CheckButton2, 2, 3 ); - - LineEdit2 = new QLineEdit( GroupBox1, "LineEdit2" ); - - Layout1->addMultiCellWidget( LineEdit2, 1, 1, 2, 3 ); - - PushButton2 = new QPushButton( GroupBox1, "PushButton2" ); - PushButton2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton2->sizePolicy().hasHeightForWidth() ) ); - PushButton2->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton2, 1, 1 ); - - LineEdit1 = new QLineEdit( GroupBox1, "LineEdit1" ); - - Layout1->addMultiCellWidget( LineEdit1, 0, 0, 2, 3 ); - - CheckButton1 = new QCheckBox( GroupBox1, "CheckButton1" ); - CheckButton1->setText( trUtf8( "" ) ); - - Layout1->addMultiCellWidget( CheckButton1, 3, 3, 0, 3 ); - - SpinBox1 = new QSpinBox( GroupBox1, "SpinBox1" ); - SpinBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox1->sizePolicy().hasHeightForWidth() ) ); - - Layout1->addWidget( SpinBox1, 2, 2 ); - - GroupBox1Layout->addLayout( Layout1, 0, 0 ); - - DlgRef_2Sel1Spin2Check_QTDLayout->addWidget( GroupBox1, 0, 0 ); - - // tab order - setTabOrder( PushButton1, LineEdit1 ); - setTabOrder( LineEdit1, PushButton2 ); - setTabOrder( PushButton2, LineEdit2 ); - setTabOrder( LineEdit2, SpinBox1 ); - setTabOrder( SpinBox1, CheckButton2 ); - setTabOrder( CheckButton2, CheckButton1 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_2Sel1Spin2Check_QTD::~DlgRef_2Sel1Spin2Check_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/DlgRef/DlgRef_2Sel1Spin2Check_QTD.h b/src/DlgRef/DlgRef_2Sel1Spin2Check_QTD.h deleted file mode 100644 index d090065d8..000000000 --- a/src/DlgRef/DlgRef_2Sel1Spin2Check_QTD.h +++ /dev/null @@ -1,51 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'DlgRef_2Sel1Spin2Check_QTD.ui' -** -** Created: Fri Aug 13 15:32:26 2004 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef DLGREF_2SEL1SPIN2CHECK_QTD_H -#define DLGREF_2SEL1SPIN2CHECK_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QCheckBox; -class QGroupBox; -class QLabel; -class QLineEdit; -class QPushButton; -class QSpinBox; - -class DlgRef_2Sel1Spin2Check_QTD : public QWidget -{ - Q_OBJECT - -public: - DlgRef_2Sel1Spin2Check_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~DlgRef_2Sel1Spin2Check_QTD(); - - QGroupBox* GroupBox1; - QLabel* TextLabel2; - QPushButton* PushButton1; - QLabel* TextLabel3; - QLabel* TextLabel1; - QCheckBox* CheckButton2; - QLineEdit* LineEdit2; - QPushButton* PushButton2; - QLineEdit* LineEdit1; - QCheckBox* CheckButton1; - QSpinBox* SpinBox1; - - -protected: - QGridLayout* DlgRef_2Sel1Spin2Check_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* Layout1; -}; - -#endif // DLGREF_2SEL1SPIN2CHECK_QTD_H diff --git a/src/DlgRef/DlgRef_2Sel1Spin_QTD.cxx b/src/DlgRef/DlgRef_2Sel1Spin_QTD.cxx deleted file mode 100644 index cc32e36cb..000000000 --- a/src/DlgRef/DlgRef_2Sel1Spin_QTD.cxx +++ /dev/null @@ -1,113 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'DlgRef_2Sel1Spin_QTD.ui' -** -** Created: Tue Jun 1 16:15:00 2004 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "DlgRef_2Sel1Spin_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a DlgRef_2Sel1Spin_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -DlgRef_2Sel1Spin_QTD::DlgRef_2Sel1Spin_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "DlgRef_2Sel1Spin_QTD" ); - resize( 163, 122 ); - setCaption( trUtf8( "DlgRef_2Sel1Spin_QTD" ) ); - DlgRef_2Sel1Spin_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "DlgRef_2Sel1Spin_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setTitle( trUtf8( "" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - - LineEdit1 = new QLineEdit( GroupBox1, "LineEdit1" ); - - Layout1->addWidget( LineEdit1, 0, 2 ); - - PushButton2 = new QPushButton( GroupBox1, "PushButton2" ); - PushButton2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton2->sizePolicy().hasHeightForWidth() ) ); - PushButton2->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton2, 1, 1 ); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - Layout1->addWidget( TextLabel1, 0, 0 ); - - LineEdit2 = new QLineEdit( GroupBox1, "LineEdit2" ); - - Layout1->addWidget( LineEdit2, 1, 2 ); - - PushButton1 = new QPushButton( GroupBox1, "PushButton1" ); - PushButton1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton1->sizePolicy().hasHeightForWidth() ) ); - PushButton1->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton1, 0, 1 ); - - TextLabel2 = new QLabel( GroupBox1, "TextLabel2" ); - TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) ); - TextLabel2->setFrameShape( QLabel::NoFrame ); - TextLabel2->setFrameShadow( QLabel::Plain ); - TextLabel2->setText( trUtf8( "TL2" ) ); - - Layout1->addWidget( TextLabel2, 1, 0 ); - - Layout2 = new QGridLayout( 0, 1, 1, 0, 6, "Layout2"); - - SpinBox1 = new QSpinBox( GroupBox1, "SpinBox1" ); - SpinBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox1->sizePolicy().hasHeightForWidth() ) ); - - Layout2->addWidget( SpinBox1, 0, 1 ); - - TextLabel3 = new QLabel( GroupBox1, "TextLabel3" ); - TextLabel3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel3->sizePolicy().hasHeightForWidth() ) ); - TextLabel3->setText( trUtf8( "TL3" ) ); - - Layout2->addWidget( TextLabel3, 0, 0 ); - - Layout1->addMultiCellLayout( Layout2, 2, 2, 0, 2 ); - QSpacerItem* spacer = new QSpacerItem( 0, 16, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout1->addItem( spacer, 3, 2 ); - - GroupBox1Layout->addLayout( Layout1, 0, 0 ); - - DlgRef_2Sel1Spin_QTDLayout->addWidget( GroupBox1, 0, 0 ); - - // tab order - setTabOrder( PushButton1, LineEdit1 ); - setTabOrder( LineEdit1, PushButton2 ); - setTabOrder( PushButton2, LineEdit2 ); - setTabOrder( LineEdit2, SpinBox1 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_2Sel1Spin_QTD::~DlgRef_2Sel1Spin_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/DlgRef/DlgRef_2Sel1Spin_QTD.h b/src/DlgRef/DlgRef_2Sel1Spin_QTD.h deleted file mode 100644 index bb0775373..000000000 --- a/src/DlgRef/DlgRef_2Sel1Spin_QTD.h +++ /dev/null @@ -1,55 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'DlgRef_2Sel1Spin_QTD.ui' -** -** Created: Tue Jun 1 16:14:59 2004 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef DLGREF_2SEL1SPIN_QTD_H -#define DLGREF_2SEL1SPIN_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QGroupBox; -class QLabel; -class QLineEdit; -class QPushButton; -class QSpinBox; - -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif - -class DLGREF_WNT_EXPORT DlgRef_2Sel1Spin_QTD : public QWidget -{ - Q_OBJECT - -public: - DlgRef_2Sel1Spin_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~DlgRef_2Sel1Spin_QTD(); - - QGroupBox* GroupBox1; - QLineEdit* LineEdit1; - QPushButton* PushButton2; - QLabel* TextLabel1; - QLineEdit* LineEdit2; - QPushButton* PushButton1; - QLabel* TextLabel2; - QSpinBox* SpinBox1; - QLabel* TextLabel3; - - -protected: - QGridLayout* DlgRef_2Sel1Spin_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* Layout1; - QGridLayout* Layout2; -}; - -#endif // DLGREF_2SEL1SPIN_QTD_H diff --git a/src/DlgRef/DlgRef_2Sel2Spin.cxx b/src/DlgRef/DlgRef_2Sel2Spin.cxx deleted file mode 100644 index 660206876..000000000 --- a/src/DlgRef/DlgRef_2Sel2Spin.cxx +++ /dev/null @@ -1,57 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_2Sel2Spin.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#include "DlgRef_2Sel2Spin.h" - -#include -#include -#include - -/* - * Constructs a DlgRef_2Sel1Spin which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' - */ -DlgRef_2Sel2Spin::DlgRef_2Sel2Spin(QWidget* parent, const char* name, WFlags fl) - :DlgRef_2Sel2Spin_QTD(parent, name, fl) -{ - SpinBox1->close(TRUE); - SpinBox2->close(TRUE); - SpinBox_DX = new DlgRef_SpinBox(GroupBox1, "SpinBox_DX"); - Layout2->addWidget(SpinBox_DX, 0, 1); - SpinBox_DY = new DlgRef_SpinBox(GroupBox1, "SpinBox_DY"); - Layout2->addWidget(SpinBox_DY, 1, 1); -} - - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_2Sel2Spin::~DlgRef_2Sel2Spin() -{ - // no need to delete child widgets, Qt does it all for us -} diff --git a/src/DlgRef/DlgRef_2Sel2Spin.h b/src/DlgRef/DlgRef_2Sel2Spin.h deleted file mode 100644 index 7a0b41076..000000000 --- a/src/DlgRef/DlgRef_2Sel2Spin.h +++ /dev/null @@ -1,57 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_2Sel2Spin.h -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#ifndef DLGREF_2SEL2SPIN_H -#define DLGREF_2SEL2SPIN_H - -#include "DlgRef_2Sel2Spin_QTD.h" -#include "DlgRef_SpinBox.h" -//#if defined WNT -//#include -//#else -//#define SALOME_WNT_EXPORT -//#endif -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif -class DLGREF_WNT_EXPORT DlgRef_2Sel2Spin : public DlgRef_2Sel2Spin_QTD -{ - Q_OBJECT - -public: - DlgRef_2Sel2Spin(QWidget* parent = 0, const char* name = 0, WFlags fl = 0); - ~DlgRef_2Sel2Spin(); - - DlgRef_SpinBox* SpinBox_DX; - DlgRef_SpinBox* SpinBox_DY; - -}; - -#endif // DLGREF_2SEL2SPIN_H diff --git a/src/DlgRef/DlgRef_2Sel2Spin1Check.cxx b/src/DlgRef/DlgRef_2Sel2Spin1Check.cxx deleted file mode 100644 index f8ac135da..000000000 --- a/src/DlgRef/DlgRef_2Sel2Spin1Check.cxx +++ /dev/null @@ -1,62 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_2Sel1Spin1Check.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#include "DlgRef_2Sel2Spin1Check.h" - -#include -#include -#include -#include - -/* - * Constructs a DlgRef_2Sel1Spin which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' - */ -DlgRef_2Sel2Spin1Check::DlgRef_2Sel2Spin1Check(QWidget* parent, const char* name, WFlags fl) - :DlgRef_2Sel2Spin1Check_QTD(parent, name, fl) -{ - SpinBox1->close(TRUE); - SpinBox2->close(TRUE); - SpinBox_DX = new DlgRef_SpinBox(GroupBox1, "SpinBox_DX"); - SpinBox_DY = new DlgRef_SpinBox(GroupBox1, "SpinBox_DY"); - Layout2->addWidget(SpinBox_DX, 0, 1); - Layout2->addWidget(SpinBox_DY, 1, 1); - - // PAL 6532 - PushButton1->setAutoDefault( false ); - PushButton2->setAutoDefault( false ); -} - - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_2Sel2Spin1Check::~DlgRef_2Sel2Spin1Check() -{ - // no need to delete child widgets, Qt does it all for us -} diff --git a/src/DlgRef/DlgRef_2Sel2Spin1Check.h b/src/DlgRef/DlgRef_2Sel2Spin1Check.h deleted file mode 100644 index 532075853..000000000 --- a/src/DlgRef/DlgRef_2Sel2Spin1Check.h +++ /dev/null @@ -1,54 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_2Sel1Spin1Check.h -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#ifndef DLGREF_2SEL2SPIN1CHECK_H -#define DLGREF_2SEL2SPIN1CHECK_H - -#include "DlgRef_2Sel2Spin1Check_QTD.h" -#include "DlgRef_SpinBox.h" - -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif - -class DLGREF_WNT_EXPORT DlgRef_2Sel2Spin1Check : public DlgRef_2Sel2Spin1Check_QTD -{ - Q_OBJECT - -public: - DlgRef_2Sel2Spin1Check(QWidget* parent = 0, const char* name = 0, WFlags fl = 0); - ~DlgRef_2Sel2Spin1Check(); - - DlgRef_SpinBox* SpinBox_DX; - DlgRef_SpinBox* SpinBox_DY; - -}; - -#endif // DLGREF_2SEL2SPIN1CHECK_H diff --git a/src/DlgRef/DlgRef_2Sel2Spin1Check_QTD.cxx b/src/DlgRef/DlgRef_2Sel2Spin1Check_QTD.cxx deleted file mode 100644 index 5a1b88e5c..000000000 --- a/src/DlgRef/DlgRef_2Sel2Spin1Check_QTD.cxx +++ /dev/null @@ -1,130 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'DlgRef_2Sel2Spin1Check_QTD.ui' -** -** Created: Tue Jun 1 16:29:28 2004 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "DlgRef_2Sel2Spin1Check_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a DlgRef_2Sel2Spin1Check_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -DlgRef_2Sel2Spin1Check_QTD::DlgRef_2Sel2Spin1Check_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "DlgRef_2Sel2Spin1Check_QTD" ); - resize( 163, 170 ); - setCaption( trUtf8( "DlgRef_2Sel2Spin1Check_QTD" ) ); - DlgRef_2Sel2Spin1Check_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "DlgRef_2Sel2Spin1Check_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setTitle( trUtf8( "" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - - TextLabel2 = new QLabel( GroupBox1, "TextLabel2" ); - TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) ); - TextLabel2->setText( trUtf8( "TL2" ) ); - - Layout1->addWidget( TextLabel2, 1, 0 ); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - Layout1->addWidget( TextLabel1, 0, 0 ); - - Layout2 = new QGridLayout( 0, 1, 1, 0, 6, "Layout2"); - - SpinBox1 = new QSpinBox( GroupBox1, "SpinBox1" ); - SpinBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox1->sizePolicy().hasHeightForWidth() ) ); - - Layout2->addWidget( SpinBox1, 0, 1 ); - - TextLabel3 = new QLabel( GroupBox1, "TextLabel3" ); - TextLabel3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel3->sizePolicy().hasHeightForWidth() ) ); - TextLabel3->setText( trUtf8( "TL3" ) ); - - Layout2->addWidget( TextLabel3, 0, 0 ); - - TextLabel4 = new QLabel( GroupBox1, "TextLabel4" ); - TextLabel4->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel4->sizePolicy().hasHeightForWidth() ) ); - TextLabel4->setText( trUtf8( "TL4" ) ); - - Layout2->addWidget( TextLabel4, 1, 0 ); - - SpinBox2 = new QSpinBox( GroupBox1, "SpinBox2" ); - SpinBox2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox2->sizePolicy().hasHeightForWidth() ) ); - - Layout2->addWidget( SpinBox2, 1, 1 ); - - Layout1->addMultiCellLayout( Layout2, 2, 2, 0, 2 ); - - LineEdit1 = new QLineEdit( GroupBox1, "LineEdit1" ); - - Layout1->addWidget( LineEdit1, 0, 2 ); - QSpacerItem* spacer = new QSpacerItem( 0, 16, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout1->addItem( spacer, 4, 2 ); - - CheckButton1 = new QCheckBox( GroupBox1, "CheckButton1" ); - CheckButton1->setText( trUtf8( "" ) ); - - Layout1->addMultiCellWidget( CheckButton1, 3, 3, 0, 2 ); - - LineEdit2 = new QLineEdit( GroupBox1, "LineEdit2" ); - - Layout1->addWidget( LineEdit2, 1, 2 ); - - PushButton2 = new QPushButton( GroupBox1, "PushButton2" ); - PushButton2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton2->sizePolicy().hasHeightForWidth() ) ); - PushButton2->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton2, 1, 1 ); - - PushButton1 = new QPushButton( GroupBox1, "PushButton1" ); - PushButton1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton1->sizePolicy().hasHeightForWidth() ) ); - PushButton1->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton1, 0, 1 ); - - GroupBox1Layout->addLayout( Layout1, 0, 0 ); - - DlgRef_2Sel2Spin1Check_QTDLayout->addWidget( GroupBox1, 0, 0 ); - - // tab order - setTabOrder( PushButton1, LineEdit1 ); - setTabOrder( LineEdit1, PushButton2 ); - setTabOrder( PushButton2, LineEdit2 ); - setTabOrder( LineEdit2, SpinBox1 ); - setTabOrder( SpinBox1, SpinBox2 ); - setTabOrder( SpinBox2, CheckButton1 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_2Sel2Spin1Check_QTD::~DlgRef_2Sel2Spin1Check_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/DlgRef/DlgRef_2Sel2Spin1Check_QTD.h b/src/DlgRef/DlgRef_2Sel2Spin1Check_QTD.h deleted file mode 100644 index dda68e4bb..000000000 --- a/src/DlgRef/DlgRef_2Sel2Spin1Check_QTD.h +++ /dev/null @@ -1,53 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'DlgRef_2Sel2Spin1Check_QTD.ui' -** -** Created: Tue Jun 1 16:29:28 2004 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef DLGREF_2SEL2SPIN1CHECK_QTD_H -#define DLGREF_2SEL2SPIN1CHECK_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QCheckBox; -class QGroupBox; -class QLabel; -class QLineEdit; -class QPushButton; -class QSpinBox; - -class DlgRef_2Sel2Spin1Check_QTD : public QWidget -{ - Q_OBJECT - -public: - DlgRef_2Sel2Spin1Check_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~DlgRef_2Sel2Spin1Check_QTD(); - - QGroupBox* GroupBox1; - QLabel* TextLabel2; - QLabel* TextLabel1; - QSpinBox* SpinBox1; - QLabel* TextLabel3; - QLabel* TextLabel4; - QSpinBox* SpinBox2; - QLineEdit* LineEdit1; - QCheckBox* CheckButton1; - QLineEdit* LineEdit2; - QPushButton* PushButton2; - QPushButton* PushButton1; - - -protected: - QGridLayout* DlgRef_2Sel2Spin1Check_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* Layout1; - QGridLayout* Layout2; -}; - -#endif // DLGREF_2SEL2SPIN1CHECK_QTD_H diff --git a/src/DlgRef/DlgRef_2Sel2Spin_QTD.cxx b/src/DlgRef/DlgRef_2Sel2Spin_QTD.cxx deleted file mode 100644 index 045cf651b..000000000 --- a/src/DlgRef/DlgRef_2Sel2Spin_QTD.cxx +++ /dev/null @@ -1,116 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'DlgRef_2Sel2Spin_QTD.ui' -** -** Created: jeu sep 25 12:10:29 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "DlgRef_2Sel2Spin_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a DlgRef_2Sel2Spin_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -DlgRef_2Sel2Spin_QTD::DlgRef_2Sel2Spin_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "DlgRef_2Sel2Spin_QTD" ); - resize( 129, 145 ); - setCaption( trUtf8( "DlgRef_2Sel2Spin_QTD" ) ); - DlgRef_2Sel2Spin_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "DlgRef_2Sel2Spin_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setTitle( trUtf8( "" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - - LineEdit1 = new QLineEdit( GroupBox1, "LineEdit1" ); - - Layout1->addWidget( LineEdit1, 0, 2 ); - - Layout2 = new QGridLayout( 0, 1, 1, 0, 6, "Layout2"); - - SpinBox2 = new QSpinBox( GroupBox1, "SpinBox2" ); - SpinBox2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox2->sizePolicy().hasHeightForWidth() ) ); - - Layout2->addWidget( SpinBox2, 1, 1 ); - - TextLabel4 = new QLabel( GroupBox1, "TextLabel4" ); - TextLabel4->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel4->sizePolicy().hasHeightForWidth() ) ); - TextLabel4->setText( trUtf8( "TL4" ) ); - - Layout2->addWidget( TextLabel4, 1, 0 ); - - TextLabel3 = new QLabel( GroupBox1, "TextLabel3" ); - TextLabel3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel3->sizePolicy().hasHeightForWidth() ) ); - TextLabel3->setText( trUtf8( "TL3" ) ); - - Layout2->addWidget( TextLabel3, 0, 0 ); - - SpinBox1 = new QSpinBox( GroupBox1, "SpinBox1" ); - SpinBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox1->sizePolicy().hasHeightForWidth() ) ); - - Layout2->addWidget( SpinBox1, 0, 1 ); - - Layout1->addMultiCellLayout( Layout2, 2, 2, 0, 2 ); - - PushButton2 = new QPushButton( GroupBox1, "PushButton2" ); - PushButton2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton2->sizePolicy().hasHeightForWidth() ) ); - PushButton2->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton2, 1, 1 ); - - TextLabel2 = new QLabel( GroupBox1, "TextLabel2" ); - TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) ); - TextLabel2->setText( trUtf8( "TL2" ) ); - - Layout1->addWidget( TextLabel2, 1, 0 ); - QSpacerItem* spacer = new QSpacerItem( 0, 20, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout1->addItem( spacer, 3, 2 ); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - Layout1->addWidget( TextLabel1, 0, 0 ); - - PushButton1 = new QPushButton( GroupBox1, "PushButton1" ); - PushButton1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton1->sizePolicy().hasHeightForWidth() ) ); - PushButton1->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton1, 0, 1 ); - - LineEdit2 = new QLineEdit( GroupBox1, "LineEdit2" ); - - Layout1->addWidget( LineEdit2, 1, 2 ); - - GroupBox1Layout->addLayout( Layout1, 0, 0 ); - - DlgRef_2Sel2Spin_QTDLayout->addWidget( GroupBox1, 0, 0 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_2Sel2Spin_QTD::~DlgRef_2Sel2Spin_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/DlgRef/DlgRef_2Sel2Spin_QTD.h b/src/DlgRef/DlgRef_2Sel2Spin_QTD.h deleted file mode 100644 index 4012cecbc..000000000 --- a/src/DlgRef/DlgRef_2Sel2Spin_QTD.h +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'DlgRef_2Sel2Spin_QTD.ui' -** -** Created: jeu sep 25 12:10:29 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef DLGREF_2SEL2SPIN_QTD_H -#define DLGREF_2SEL2SPIN_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QGroupBox; -class QLabel; -class QLineEdit; -class QPushButton; -class QSpinBox; - -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif - -class DLGREF_WNT_EXPORT DlgRef_2Sel2Spin_QTD : public QWidget -{ - Q_OBJECT - -public: - DlgRef_2Sel2Spin_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~DlgRef_2Sel2Spin_QTD(); - - QGroupBox* GroupBox1; - QLineEdit* LineEdit1; - QSpinBox* SpinBox2; - QLabel* TextLabel4; - QLabel* TextLabel3; - QSpinBox* SpinBox1; - QPushButton* PushButton2; - QLabel* TextLabel2; - QLabel* TextLabel1; - QPushButton* PushButton1; - QLineEdit* LineEdit2; - - -protected: - QGridLayout* DlgRef_2Sel2Spin_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* Layout1; - QGridLayout* Layout2; -}; - -#endif // DLGREF_2SEL2SPIN_QTD_H diff --git a/src/DlgRef/DlgRef_2Sel3Spin.cxx b/src/DlgRef/DlgRef_2Sel3Spin.cxx deleted file mode 100644 index a0a9999f8..000000000 --- a/src/DlgRef/DlgRef_2Sel3Spin.cxx +++ /dev/null @@ -1,60 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_2Sel3Spin.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#include "DlgRef_2Sel3Spin.h" - -#include -#include -#include - -/* - * Constructs a DlgRef_2Sel1Spin which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' - */ -DlgRef_2Sel3Spin::DlgRef_2Sel3Spin(QWidget* parent, const char* name, WFlags fl) - :DlgRef_2Sel3Spin_QTD(parent, name, fl) -{ - SpinBox1->close(TRUE); - SpinBox2->close(TRUE); - SpinBox3->close(TRUE); - SpinBox_DX = new DlgRef_SpinBox(GroupBox1, "SpinBox_DX"); - Layout2->addWidget(SpinBox_DX, 0, 1); - SpinBox_DY = new DlgRef_SpinBox(GroupBox1, "SpinBox_DY"); - Layout2->addWidget(SpinBox_DY, 1, 1); - SpinBox_DZ = new DlgRef_SpinBox(GroupBox1, "SpinBox_DZ"); - Layout2->addWidget(SpinBox_DZ, 2, 1); -} - - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_2Sel3Spin::~DlgRef_2Sel3Spin() -{ - // no need to delete child widgets, Qt does it all for us -} diff --git a/src/DlgRef/DlgRef_2Sel3Spin.h b/src/DlgRef/DlgRef_2Sel3Spin.h deleted file mode 100644 index 0624d581f..000000000 --- a/src/DlgRef/DlgRef_2Sel3Spin.h +++ /dev/null @@ -1,55 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_2Sel3Spin.h -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#ifndef DLGREF_2SEL3SPIN_H -#define DLGREF_2SEL3SPIN_H - -#include "DlgRef_2Sel3Spin_QTD.h" -#include "DlgRef_SpinBox.h" - -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif - -class DLGREF_WNT_EXPORT DlgRef_2Sel3Spin : public DlgRef_2Sel3Spin_QTD -{ - Q_OBJECT - -public: - DlgRef_2Sel3Spin(QWidget* parent = 0, const char* name = 0, WFlags fl = 0); - ~DlgRef_2Sel3Spin(); - - DlgRef_SpinBox* SpinBox_DX; - DlgRef_SpinBox* SpinBox_DY; - DlgRef_SpinBox* SpinBox_DZ; - -}; - -#endif // DLGREF_2SEL3SPIN_H diff --git a/src/DlgRef/DlgRef_2Sel3Spin_QTD.cxx b/src/DlgRef/DlgRef_2Sel3Spin_QTD.cxx deleted file mode 100644 index be815e3ec..000000000 --- a/src/DlgRef/DlgRef_2Sel3Spin_QTD.cxx +++ /dev/null @@ -1,127 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'DlgRef_2Sel3Spin_QTD.ui' -** -** Created: jeu sep 25 16:18:43 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "DlgRef_2Sel3Spin_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a DlgRef_2Sel3Spin_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -DlgRef_2Sel3Spin_QTD::DlgRef_2Sel3Spin_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "DlgRef_2Sel3Spin_QTD" ); - resize( 129, 173 ); - setCaption( trUtf8( "DlgRef_2Sel3Spin_QTD" ) ); - DlgRef_2Sel3Spin_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "DlgRef_2Sel3Spin_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setTitle( trUtf8( "" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - - LineEdit1 = new QLineEdit( GroupBox1, "LineEdit1" ); - - Layout1->addWidget( LineEdit1, 0, 2 ); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - Layout1->addWidget( TextLabel1, 0, 0 ); - - TextLabel2 = new QLabel( GroupBox1, "TextLabel2" ); - TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) ); - TextLabel2->setText( trUtf8( "TL2" ) ); - - Layout1->addWidget( TextLabel2, 1, 0 ); - - Layout2 = new QGridLayout( 0, 1, 1, 0, 6, "Layout2"); - - TextLabel3 = new QLabel( GroupBox1, "TextLabel3" ); - TextLabel3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel3->sizePolicy().hasHeightForWidth() ) ); - TextLabel3->setText( trUtf8( "TL3" ) ); - - Layout2->addWidget( TextLabel3, 0, 0 ); - - SpinBox2 = new QSpinBox( GroupBox1, "SpinBox2" ); - SpinBox2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox2->sizePolicy().hasHeightForWidth() ) ); - - Layout2->addWidget( SpinBox2, 1, 1 ); - - TextLabel4 = new QLabel( GroupBox1, "TextLabel4" ); - TextLabel4->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel4->sizePolicy().hasHeightForWidth() ) ); - TextLabel4->setText( trUtf8( "TL4" ) ); - - Layout2->addWidget( TextLabel4, 1, 0 ); - - TextLabel5 = new QLabel( GroupBox1, "TextLabel5" ); - TextLabel5->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel5->sizePolicy().hasHeightForWidth() ) ); - TextLabel5->setText( trUtf8( "TL4" ) ); - - Layout2->addWidget( TextLabel5, 2, 0 ); - - SpinBox1 = new QSpinBox( GroupBox1, "SpinBox1" ); - SpinBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox1->sizePolicy().hasHeightForWidth() ) ); - - Layout2->addWidget( SpinBox1, 0, 1 ); - - SpinBox3 = new QSpinBox( GroupBox1, "SpinBox3" ); - SpinBox3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox3->sizePolicy().hasHeightForWidth() ) ); - - Layout2->addWidget( SpinBox3, 2, 1 ); - - Layout1->addMultiCellLayout( Layout2, 2, 2, 0, 2 ); - - PushButton1 = new QPushButton( GroupBox1, "PushButton1" ); - PushButton1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton1->sizePolicy().hasHeightForWidth() ) ); - PushButton1->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton1, 0, 1 ); - QSpacerItem* spacer = new QSpacerItem( 0, 20, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout1->addItem( spacer, 3, 2 ); - - LineEdit2 = new QLineEdit( GroupBox1, "LineEdit2" ); - - Layout1->addWidget( LineEdit2, 1, 2 ); - - PushButton2 = new QPushButton( GroupBox1, "PushButton2" ); - PushButton2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton2->sizePolicy().hasHeightForWidth() ) ); - PushButton2->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton2, 1, 1 ); - - GroupBox1Layout->addLayout( Layout1, 0, 0 ); - - DlgRef_2Sel3Spin_QTDLayout->addWidget( GroupBox1, 0, 0 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_2Sel3Spin_QTD::~DlgRef_2Sel3Spin_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/DlgRef/DlgRef_2Sel3Spin_QTD.h b/src/DlgRef/DlgRef_2Sel3Spin_QTD.h deleted file mode 100644 index 000ebb03b..000000000 --- a/src/DlgRef/DlgRef_2Sel3Spin_QTD.h +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'DlgRef_2Sel3Spin_QTD.ui' -** -** Created: jeu sep 25 16:18:43 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef DLGREF_2SEL3SPIN_QTD_H -#define DLGREF_2SEL3SPIN_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QGroupBox; -class QLabel; -class QLineEdit; -class QPushButton; -class QSpinBox; -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif -class DLGREF_WNT_EXPORT DlgRef_2Sel3Spin_QTD : public QWidget -{ - Q_OBJECT - -public: - DlgRef_2Sel3Spin_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~DlgRef_2Sel3Spin_QTD(); - - QGroupBox* GroupBox1; - QLineEdit* LineEdit1; - QLabel* TextLabel1; - QLabel* TextLabel2; - QLabel* TextLabel3; - QSpinBox* SpinBox2; - QLabel* TextLabel4; - QLabel* TextLabel5; - QSpinBox* SpinBox1; - QSpinBox* SpinBox3; - QPushButton* PushButton1; - QLineEdit* LineEdit2; - QPushButton* PushButton2; - - -protected: - QGridLayout* DlgRef_2Sel3Spin_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* Layout1; - QGridLayout* Layout2; -}; - -#endif // DLGREF_2SEL3SPIN_QTD_H diff --git a/src/DlgRef/DlgRef_2Sel4Spin1Check.cxx b/src/DlgRef/DlgRef_2Sel4Spin1Check.cxx deleted file mode 100644 index 2a039dd2b..000000000 --- a/src/DlgRef/DlgRef_2Sel4Spin1Check.cxx +++ /dev/null @@ -1,68 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_2Sel4Spin1Check.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#include "DlgRef_2Sel4Spin1Check.h" - -#include -#include -#include -#include - -/* - * Constructs a DlgRef_2Sel1Spin which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' - */ -DlgRef_2Sel4Spin1Check::DlgRef_2Sel4Spin1Check(QWidget* parent, const char* name, WFlags fl) - :DlgRef_2Sel4Spin1Check_QTD(parent, name, fl) -{ - SpinBox1->close(TRUE); - SpinBox2->close(TRUE); - SpinBox3->close(TRUE); - SpinBox4->close(TRUE); - SpinBox_DX1 = new DlgRef_SpinBox(GroupBox1, "SpinBox_DX1"); - SpinBox_DY1 = new DlgRef_SpinBox(GroupBox1, "SpinBox_DY1"); - SpinBox_DX2 = new DlgRef_SpinBox(GroupBox1, "SpinBox_DX2"); - SpinBox_DY2 = new DlgRef_SpinBox(GroupBox1, "SpinBox_DY2"); - Layout2->addWidget(SpinBox_DX1, 0, 1); - Layout2->addWidget(SpinBox_DY1, 1, 1); - Layout3->addWidget(SpinBox_DX2, 0, 1); - Layout3->addWidget(SpinBox_DY2, 1, 1); - - // PAL 6532 - PushButton1->setAutoDefault( false ); - PushButton2->setAutoDefault( false ); -} - - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_2Sel4Spin1Check::~DlgRef_2Sel4Spin1Check() -{ - // no need to delete child widgets, Qt does it all for us -} diff --git a/src/DlgRef/DlgRef_2Sel4Spin1Check.h b/src/DlgRef/DlgRef_2Sel4Spin1Check.h deleted file mode 100644 index 3dc1af1c4..000000000 --- a/src/DlgRef/DlgRef_2Sel4Spin1Check.h +++ /dev/null @@ -1,56 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_2Sel4Spin1Check.h -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#ifndef DLGREF_2SEL4SPIN1CHECK_H -#define DLGREF_2SEL4SPIN1CHECK_H - -#include "DlgRef_2Sel4Spin1Check_QTD.h" -#include "DlgRef_SpinBox.h" - -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif - -class DLGREF_WNT_EXPORT DlgRef_2Sel4Spin1Check : public DlgRef_2Sel4Spin1Check_QTD -{ - Q_OBJECT - -public: - DlgRef_2Sel4Spin1Check(QWidget* parent = 0, const char* name = 0, WFlags fl = 0); - ~DlgRef_2Sel4Spin1Check(); - - DlgRef_SpinBox* SpinBox_DX1; - DlgRef_SpinBox* SpinBox_DY1; - DlgRef_SpinBox* SpinBox_DX2; - DlgRef_SpinBox* SpinBox_DY2; - -}; - -#endif // DLGREF_2SEL4SPIN1CHECK_H diff --git a/src/DlgRef/DlgRef_2Sel4Spin1Check_QTD.cxx b/src/DlgRef/DlgRef_2Sel4Spin1Check_QTD.cxx deleted file mode 100644 index a59e6c6df..000000000 --- a/src/DlgRef/DlgRef_2Sel4Spin1Check_QTD.cxx +++ /dev/null @@ -1,158 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'DlgRef_2Sel4Spin1Check_QTD.ui' -** -** Created: Tue Jun 1 12:38:04 2004 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "DlgRef_2Sel4Spin1Check_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a DlgRef_2Sel4Spin1Check_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -DlgRef_2Sel4Spin1Check_QTD::DlgRef_2Sel4Spin1Check_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "DlgRef_2Sel4Spin1Check_QTD" ); - resize( 262, 230 ); - setCaption( trUtf8( "DlgRef_2Sel4Spin1Check_QTD" ) ); - DlgRef_2Sel4Spin1Check_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "DlgRef_2Sel4Spin1Check_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setTitle( trUtf8( "" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout5 = new QGridLayout( 0, 1, 1, 0, 6, "Layout5"); - - PushButton1 = new QPushButton( GroupBox1, "PushButton1" ); - PushButton1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton1->sizePolicy().hasHeightForWidth() ) ); - PushButton1->setText( trUtf8( "" ) ); - - Layout5->addWidget( PushButton1, 0, 1 ); - - CheckButton1 = new QCheckBox( GroupBox1, "CheckButton1" ); - CheckButton1->setText( trUtf8( "" ) ); - - Layout5->addMultiCellWidget( CheckButton1, 3, 3, 0, 3 ); - - Layout2 = new QGridLayout( 0, 1, 1, 0, 6, "Layout2"); - - TextLabel3 = new QLabel( GroupBox1, "TextLabel3" ); - TextLabel3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel3->sizePolicy().hasHeightForWidth() ) ); - TextLabel3->setText( trUtf8( "TL3" ) ); - - Layout2->addWidget( TextLabel3, 0, 0 ); - - SpinBox1 = new QSpinBox( GroupBox1, "SpinBox1" ); - SpinBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox1->sizePolicy().hasHeightForWidth() ) ); - - Layout2->addWidget( SpinBox1, 0, 1 ); - - SpinBox2 = new QSpinBox( GroupBox1, "SpinBox2" ); - SpinBox2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox2->sizePolicy().hasHeightForWidth() ) ); - - Layout2->addWidget( SpinBox2, 1, 1 ); - - TextLabel4 = new QLabel( GroupBox1, "TextLabel4" ); - TextLabel4->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel4->sizePolicy().hasHeightForWidth() ) ); - TextLabel4->setText( trUtf8( "TL4" ) ); - - Layout2->addWidget( TextLabel4, 1, 0 ); - - Layout5->addMultiCellLayout( Layout2, 2, 2, 0, 2 ); - - LineEdit2 = new QLineEdit( GroupBox1, "LineEdit2" ); - - Layout5->addWidget( LineEdit2, 1, 2 ); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - Layout5->addWidget( TextLabel1, 0, 0 ); - - LineEdit1 = new QLineEdit( GroupBox1, "LineEdit1" ); - - Layout5->addWidget( LineEdit1, 0, 2 ); - QSpacerItem* spacer = new QSpacerItem( 0, 16, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout5->addItem( spacer, 5, 3 ); - - PushButton2 = new QPushButton( GroupBox1, "PushButton2" ); - PushButton2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton2->sizePolicy().hasHeightForWidth() ) ); - PushButton2->setText( trUtf8( "" ) ); - - Layout5->addWidget( PushButton2, 1, 1 ); - - TextLabel2 = new QLabel( GroupBox1, "TextLabel2" ); - TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) ); - TextLabel2->setText( trUtf8( "TL2" ) ); - - Layout5->addWidget( TextLabel2, 1, 0 ); - - Layout3 = new QGridLayout( 0, 1, 1, 0, 6, "Layout3"); - - SpinBox4 = new QSpinBox( GroupBox1, "SpinBox4" ); - SpinBox4->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox4->sizePolicy().hasHeightForWidth() ) ); - - Layout3->addWidget( SpinBox4, 1, 1 ); - - TextLabel5 = new QLabel( GroupBox1, "TextLabel5" ); - TextLabel5->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel5->sizePolicy().hasHeightForWidth() ) ); - TextLabel5->setText( trUtf8( "TL5" ) ); - - Layout3->addWidget( TextLabel5, 0, 0 ); - - SpinBox3 = new QSpinBox( GroupBox1, "SpinBox3" ); - SpinBox3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox3->sizePolicy().hasHeightForWidth() ) ); - - Layout3->addWidget( SpinBox3, 0, 1 ); - - TextLabel6 = new QLabel( GroupBox1, "TextLabel6" ); - TextLabel6->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel6->sizePolicy().hasHeightForWidth() ) ); - TextLabel6->setText( trUtf8( "TL6" ) ); - - Layout3->addWidget( TextLabel6, 1, 0 ); - - Layout5->addMultiCellLayout( Layout3, 4, 4, 0, 2 ); - - GroupBox1Layout->addLayout( Layout5, 0, 0 ); - - DlgRef_2Sel4Spin1Check_QTDLayout->addWidget( GroupBox1, 0, 0 ); - - // tab order - setTabOrder( PushButton1, LineEdit1 ); - setTabOrder( LineEdit1, PushButton2 ); - setTabOrder( PushButton2, LineEdit2 ); - setTabOrder( LineEdit2, SpinBox1 ); - setTabOrder( SpinBox1, SpinBox2 ); - setTabOrder( SpinBox2, CheckButton1 ); - setTabOrder( CheckButton1, SpinBox3 ); - setTabOrder( SpinBox3, SpinBox4 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_2Sel4Spin1Check_QTD::~DlgRef_2Sel4Spin1Check_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/DlgRef/DlgRef_2Sel4Spin1Check_QTD.h b/src/DlgRef/DlgRef_2Sel4Spin1Check_QTD.h deleted file mode 100644 index 57e27f7fc..000000000 --- a/src/DlgRef/DlgRef_2Sel4Spin1Check_QTD.h +++ /dev/null @@ -1,58 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'DlgRef_2Sel4Spin1Check_QTD.ui' -** -** Created: Tue Jun 1 12:38:04 2004 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef DLGREF_2SEL4SPIN1CHECK_QTD_H -#define DLGREF_2SEL4SPIN1CHECK_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QCheckBox; -class QGroupBox; -class QLabel; -class QLineEdit; -class QPushButton; -class QSpinBox; - -class DlgRef_2Sel4Spin1Check_QTD : public QWidget -{ - Q_OBJECT - -public: - DlgRef_2Sel4Spin1Check_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~DlgRef_2Sel4Spin1Check_QTD(); - - QGroupBox* GroupBox1; - QPushButton* PushButton1; - QCheckBox* CheckButton1; - QLabel* TextLabel3; - QSpinBox* SpinBox1; - QSpinBox* SpinBox2; - QLabel* TextLabel4; - QLineEdit* LineEdit2; - QLabel* TextLabel1; - QLineEdit* LineEdit1; - QPushButton* PushButton2; - QLabel* TextLabel2; - QSpinBox* SpinBox4; - QLabel* TextLabel5; - QSpinBox* SpinBox3; - QLabel* TextLabel6; - - -protected: - QGridLayout* DlgRef_2Sel4Spin1Check_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* Layout5; - QGridLayout* Layout2; - QGridLayout* Layout3; -}; - -#endif // DLGREF_2SEL4SPIN1CHECK_QTD_H diff --git a/src/DlgRef/DlgRef_2Sel_QTD.cxx b/src/DlgRef/DlgRef_2Sel_QTD.cxx deleted file mode 100644 index 8dc9f08e4..000000000 --- a/src/DlgRef/DlgRef_2Sel_QTD.cxx +++ /dev/null @@ -1,90 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'DlgRef_2Sel_QTD.ui' -** -** Created: mar sep 23 16:05:09 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "DlgRef_2Sel_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a DlgRef_2Sel_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -DlgRef_2Sel_QTD::DlgRef_2Sel_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "DlgRef_2Sel_QTD" ); - resize( 129, 87 ); - setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)7, 0, 0, sizePolicy().hasHeightForWidth() ) ); - setCaption( trUtf8( "DlgRef_2Sel_QTD" ) ); - DlgRef_2Sel_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "DlgRef_2Sel_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setTitle( trUtf8( "" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - - PushButton1 = new QPushButton( GroupBox1, "PushButton1" ); - PushButton1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton1->sizePolicy().hasHeightForWidth() ) ); - PushButton1->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton1, 0, 1 ); - QSpacerItem* spacer = new QSpacerItem( 0, 16, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout1->addItem( spacer, 2, 2 ); - - LineEdit2 = new QLineEdit( GroupBox1, "LineEdit2" ); - - Layout1->addWidget( LineEdit2, 1, 2 ); - - PushButton2 = new QPushButton( GroupBox1, "PushButton2" ); - PushButton2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton2->sizePolicy().hasHeightForWidth() ) ); - PushButton2->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton2, 1, 1 ); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - Layout1->addWidget( TextLabel1, 0, 0 ); - - TextLabel2 = new QLabel( GroupBox1, "TextLabel2" ); - TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) ); - TextLabel2->setText( trUtf8( "TL2" ) ); - - Layout1->addWidget( TextLabel2, 1, 0 ); - - LineEdit1 = new QLineEdit( GroupBox1, "LineEdit1" ); - - Layout1->addWidget( LineEdit1, 0, 2 ); - - GroupBox1Layout->addLayout( Layout1, 0, 0 ); - - DlgRef_2Sel_QTDLayout->addWidget( GroupBox1, 0, 0 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_2Sel_QTD::~DlgRef_2Sel_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/DlgRef/DlgRef_2Sel_QTD.h b/src/DlgRef/DlgRef_2Sel_QTD.h deleted file mode 100644 index 94ede9505..000000000 --- a/src/DlgRef/DlgRef_2Sel_QTD.h +++ /dev/null @@ -1,51 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'DlgRef_2Sel_QTD.ui' -** -** Created: mar sep 23 16:05:09 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef DLGREF_2SEL_QTD_H -#define DLGREF_2SEL_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QGroupBox; -class QLabel; -class QLineEdit; -class QPushButton; - -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif - -class DLGREF_WNT_EXPORT DlgRef_2Sel_QTD : public QWidget -{ - Q_OBJECT - -public: - DlgRef_2Sel_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~DlgRef_2Sel_QTD(); - - QGroupBox* GroupBox1; - QPushButton* PushButton1; - QLineEdit* LineEdit2; - QPushButton* PushButton2; - QLabel* TextLabel1; - QLabel* TextLabel2; - QLineEdit* LineEdit1; - - -protected: - QGridLayout* DlgRef_2Sel_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* Layout1; -}; - -#endif // DLGREF_2SEL_QTD_H diff --git a/src/DlgRef/DlgRef_2Spin.cxx b/src/DlgRef/DlgRef_2Spin.cxx deleted file mode 100644 index f66c33baa..000000000 --- a/src/DlgRef/DlgRef_2Spin.cxx +++ /dev/null @@ -1,60 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_2Spin.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#include "DlgRef_2Spin.h" - -#include -#include -#include - -/* - * Constructs a DlgRef_2Spin which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' - */ -DlgRef_2Spin::DlgRef_2Spin(QWidget* parent, const char* name, WFlags fl) - :DlgRef_2Spin_QTD(parent, name, fl) -{ - SpinBox1->close(TRUE); - SpinBox2->close(TRUE); - - SpinBox_DX = new DlgRef_SpinBox(GroupBox1, "SpinBox_DX"); - Layout1->addWidget(SpinBox_DX, 0, 1); - - SpinBox_DY = new DlgRef_SpinBox(GroupBox1, "SpinBox_DY"); - Layout1->addWidget(SpinBox_DY, 1, 1); - -} - - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_2Spin::~DlgRef_2Spin() -{ - // no need to delete child widgets, Qt does it all for us -} diff --git a/src/DlgRef/DlgRef_2Spin.h b/src/DlgRef/DlgRef_2Spin.h deleted file mode 100644 index a10517a0c..000000000 --- a/src/DlgRef/DlgRef_2Spin.h +++ /dev/null @@ -1,52 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_2Spin.h -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#ifndef DLGREF_2SPIN_H -#define DLGREF_2SPIN_H - -#include "DlgRef_2Spin_QTD.h" -#include "DlgRef_SpinBox.h" -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif -class DLGREF_WNT_EXPORT DlgRef_2Spin : public DlgRef_2Spin_QTD -{ - Q_OBJECT - -public: - DlgRef_2Spin(QWidget* parent = 0, const char* name = 0, WFlags fl = 0); - ~DlgRef_2Spin(); - - DlgRef_SpinBox* SpinBox_DX; - DlgRef_SpinBox* SpinBox_DY; - -}; - -#endif // DLGREF_2SPIN_H diff --git a/src/DlgRef/DlgRef_2Spin_QTD.cxx b/src/DlgRef/DlgRef_2Spin_QTD.cxx deleted file mode 100644 index bb6948f73..000000000 --- a/src/DlgRef/DlgRef_2Spin_QTD.cxx +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'DlgRef_2Spin_QTD.ui' -** -** Created: jeu sep 25 12:10:30 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "DlgRef_2Spin_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a DlgRef_2Spin_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -DlgRef_2Spin_QTD::DlgRef_2Spin_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "DlgRef_2Spin_QTD" ); - resize( 124, 83 ); - setCaption( trUtf8( "DlgRef_2Spin_QTD" ) ); - DlgRef_2Spin_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "DlgRef_2Spin_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setTitle( trUtf8( "" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - - SpinBox2 = new QSpinBox( GroupBox1, "SpinBox2" ); - SpinBox2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox2->sizePolicy().hasHeightForWidth() ) ); - - Layout1->addWidget( SpinBox2, 1, 1 ); - QSpacerItem* spacer = new QSpacerItem( 0, 16, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout1->addItem( spacer, 3, 1 ); - - SpinBox1 = new QSpinBox( GroupBox1, "SpinBox1" ); - SpinBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox1->sizePolicy().hasHeightForWidth() ) ); - - Layout1->addWidget( SpinBox1, 0, 1 ); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - Layout1->addWidget( TextLabel1, 0, 0 ); - - TextLabel2 = new QLabel( GroupBox1, "TextLabel2" ); - TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) ); - TextLabel2->setText( trUtf8( "TL2" ) ); - - Layout1->addWidget( TextLabel2, 1, 0 ); - - GroupBox1Layout->addLayout( Layout1, 0, 0 ); - - DlgRef_2Spin_QTDLayout->addWidget( GroupBox1, 0, 0 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_2Spin_QTD::~DlgRef_2Spin_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/DlgRef/DlgRef_2Spin_QTD.h b/src/DlgRef/DlgRef_2Spin_QTD.h deleted file mode 100644 index aa7fb3dbd..000000000 --- a/src/DlgRef/DlgRef_2Spin_QTD.h +++ /dev/null @@ -1,46 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'DlgRef_2Spin_QTD.ui' -** -** Created: jeu sep 25 12:10:30 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef DLGREF_2SPIN_QTD_H -#define DLGREF_2SPIN_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QGroupBox; -class QLabel; -class QSpinBox; -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif -class DLGREF_WNT_EXPORT DlgRef_2Spin_QTD : public QWidget -{ - Q_OBJECT - -public: - DlgRef_2Spin_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~DlgRef_2Spin_QTD(); - - QGroupBox* GroupBox1; - QSpinBox* SpinBox2; - QSpinBox* SpinBox1; - QLabel* TextLabel1; - QLabel* TextLabel2; - - -protected: - QGridLayout* DlgRef_2Spin_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* Layout1; -}; - -#endif // DLGREF_2SPIN_QTD_H diff --git a/src/DlgRef/DlgRef_3Check_QTD.cxx b/src/DlgRef/DlgRef_3Check_QTD.cxx deleted file mode 100644 index 1e24399b7..000000000 --- a/src/DlgRef/DlgRef_3Check_QTD.cxx +++ /dev/null @@ -1,75 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'DlgRef_3Check_QTD.ui' -** -** Created: Tue Aug 24 11:27:47 2004 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "DlgRef_3Check_QTD.h" - -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a DlgRef_3Check_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -DlgRef_3Check_QTD::DlgRef_3Check_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "DlgRef_3Check_QTD" ); - resize( 135, 108 ); - setCaption( trUtf8( "DlgRef_3Check_QTD" ) ); - DlgRef_3Check_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "DlgRef_3Check_QTDLayout"); - - GroupBox1 = new QButtonGroup( this, "GroupBox1" ); - GroupBox1->setTitle( trUtf8( "" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - - RadioButton3 = new QRadioButton( GroupBox1, "RadioButton3" ); - RadioButton3->setText( trUtf8( "RadioButton3" ) ); - - Layout1->addWidget( RadioButton3, 2, 0 ); - - RadioButton1 = new QRadioButton( GroupBox1, "RadioButton1" ); - RadioButton1->setText( trUtf8( "RadioButton1" ) ); - - Layout1->addWidget( RadioButton1, 0, 0 ); - - RadioButton2 = new QRadioButton( GroupBox1, "RadioButton2" ); - RadioButton2->setText( trUtf8( "RadioButton2" ) ); - - Layout1->addWidget( RadioButton2, 1, 0 ); - QSpacerItem* spacer = new QSpacerItem( 0, 91, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout1->addItem( spacer, 3, 0 ); - - GroupBox1Layout->addLayout( Layout1, 0, 0 ); - - DlgRef_3Check_QTDLayout->addWidget( GroupBox1, 0, 0 ); - - // tab order - setTabOrder( RadioButton1, RadioButton2 ); - setTabOrder( RadioButton2, RadioButton3 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_3Check_QTD::~DlgRef_3Check_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/DlgRef/DlgRef_3Check_QTD.h b/src/DlgRef/DlgRef_3Check_QTD.h deleted file mode 100644 index d83b4093c..000000000 --- a/src/DlgRef/DlgRef_3Check_QTD.h +++ /dev/null @@ -1,46 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'DlgRef_3Check_QTD.ui' -** -** Created: Tue Aug 24 11:27:47 2004 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef DLGREF_3CHECK_QTD_H -#define DLGREF_3CHECK_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QButtonGroup; -class QRadioButton; - -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif - -class DLGREF_WNT_EXPORT DlgRef_3Check_QTD : public QWidget -{ - Q_OBJECT - -public: - DlgRef_3Check_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~DlgRef_3Check_QTD(); - - QButtonGroup* GroupBox1; - QRadioButton* RadioButton3; - QRadioButton* RadioButton1; - QRadioButton* RadioButton2; - - -protected: - QGridLayout* DlgRef_3Check_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* Layout1; -}; - -#endif // DLGREF_3CHECK_QTD_H diff --git a/src/DlgRef/DlgRef_3Sel1Spin.cxx b/src/DlgRef/DlgRef_3Sel1Spin.cxx deleted file mode 100644 index 76de7351e..000000000 --- a/src/DlgRef/DlgRef_3Sel1Spin.cxx +++ /dev/null @@ -1,55 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File: DlgRef_3Sel1Spin.cxx -// Created: Thu May 13 12:19:31 2004 -// Author: Alexander SLADKOV -// - - -#include "DlgRef_3Sel1Spin.h" - -//================================================================================= -// class : DlgRef_3Sel1Spin -// purpose : -//================================================================================= -DlgRef_3Sel1Spin::DlgRef_3Sel1Spin( QWidget* parent, const char* name, WFlags fl ) - :DlgRef_3Sel_QTD( parent, name, fl ) -{ - Layout2 = new QGridLayout( 0, 1, 1, 0, 6, "Layout2"); - - TextLabel4 = new QLabel( (QWidget*)GroupBox1, "TextLabel4" ); - TextLabel4->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel3->sizePolicy().hasHeightForWidth() ) ); - Layout2->addWidget( TextLabel4, 0, 0 ); - - SpinBox_DX = new DlgRef_SpinBox( (QWidget*)GroupBox1, "SpinBox_DX" ); - Layout2->addWidget( SpinBox_DX, 0, 1 ); - - Layout1->addMultiCellLayout( Layout2, 3, 3, 0, 2 ); - QSpacerItem* spacer = new QSpacerItem( 0, 16, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout1->addItem( spacer, 4, 2 ); -} - -DlgRef_3Sel1Spin::~DlgRef_3Sel1Spin() -{ -} diff --git a/src/DlgRef/DlgRef_3Sel1Spin.h b/src/DlgRef/DlgRef_3Sel1Spin.h deleted file mode 100644 index 3d806d127..000000000 --- a/src/DlgRef/DlgRef_3Sel1Spin.h +++ /dev/null @@ -1,65 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_3Sel1Spin.h -// Author : Alexander SLADKOV -// Module : GEOM -// $Header$ - -#ifndef DlgRef_3SEL_1SPIN_H -#define DlgRef_3SEL_1SPIN_H - -#include "DlgRef_3Sel_QTD.h" -#include "DlgRef_SpinBox.h" -#include -#include -//#if defined WNT -//#include -//#else -//#define SALOME_WNT_EXPORT -//#endif -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif -//================================================================================= -// class : DlgRef_3Sel1Spin -// purpose : extension of a DlgRef_3Sel_QTD class, 1 additional spin box is added -//================================================================================= -class DLGREF_WNT_EXPORT DlgRef_3Sel1Spin : public DlgRef_3Sel_QTD -{ - Q_OBJECT - - public: - DlgRef_3Sel1Spin( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~DlgRef_3Sel1Spin(); - - QLabel* TextLabel4; - DlgRef_SpinBox* SpinBox_DX; - - protected: - QGridLayout* Layout2; -}; - -#endif // DlgRef_3SEL_1SPIN_H diff --git a/src/DlgRef/DlgRef_3Sel3Spin1Check.cxx b/src/DlgRef/DlgRef_3Sel3Spin1Check.cxx deleted file mode 100644 index e8b60c9b9..000000000 --- a/src/DlgRef/DlgRef_3Sel3Spin1Check.cxx +++ /dev/null @@ -1,114 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_3Sel3Spin1Check.cxx -// Author : Michael Zorin -// Module : GEOM -// $Header: - -#include -#include -#include -#include -#include -#include -#include -#include - - -/* - * Constructs a DlgRef_3Sel3Spin1Check which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' - */ -DlgRef_3Sel3Spin1Check::DlgRef_3Sel3Spin1Check(QWidget* parent, const char* name, WFlags fl) - :DlgRef_3Sel3Spin1Check_QTD(parent, name, fl) -{ - SpinBox_1->close(TRUE); - SpinBox_2->close(TRUE); - SpinBox_3->close(TRUE); - SpinBox1 = new DlgRef_SpinBox(GroupBox1, "SpinBox_DX"); - SpinBox2 = new DlgRef_SpinBox(GroupBox1, "SpinBox_DY"); - SpinBox3 = new DlgRef_SpinBox(GroupBox1, "SpinBox_DZ"); - Layout1->addWidget(SpinBox1, 3, 2); - Layout1->addWidget(SpinBox2, 4, 2); - Layout1->addWidget(SpinBox3, 5, 2); -} - - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_3Sel3Spin1Check::~DlgRef_3Sel3Spin1Check() -{ - // no need to delete child widgets, Qt does it all for us -} - -void DlgRef_3Sel3Spin1Check:: ShowRows(int fromRow, int toRow, bool toShow) -{ - typedef void (QWidget::* ShowFun)(); - ShowFun pShowFun; - - if (toShow) - pShowFun = &QWidget::show; - else - pShowFun = &QWidget::hide; - - if (fromRow >= 0 && toRow>=0 && toRow >= fromRow) - { - if ( fromRow == 0) - { - (TextLabel1->*pShowFun)(); - (PushButton1->*pShowFun)(); - (LineEdit1->*pShowFun)(); - } - if ( fromRow <= 1 && 1 <= toRow) - { - (TextLabel2->*pShowFun)(); - (PushButton2->*pShowFun)(); - (LineEdit2->*pShowFun)(); - } - if ( fromRow <= 2 && 2 <= toRow) - { - (TextLabel3->*pShowFun)(); - (PushButton3->*pShowFun)(); - (LineEdit3->*pShowFun)(); - } - if ( fromRow <= 3 && 3 <= toRow) - { - (TextLabel4->*pShowFun)(); - (SpinBox1->*pShowFun)(); - } - if ( fromRow <= 4 && 4 <= toRow) - { - (TextLabel5->*pShowFun)(); - (SpinBox2->*pShowFun)(); - } - if ( fromRow <= 5 && 5 <= toRow) - { - (TextLabel6->*pShowFun)(); - (SpinBox3->*pShowFun)(); - } - if ( fromRow <= 6 && 6 <= toRow) - (CheckBox1->*pShowFun)(); - } -} diff --git a/src/DlgRef/DlgRef_3Sel3Spin1Check.h b/src/DlgRef/DlgRef_3Sel3Spin1Check.h deleted file mode 100644 index e4768659e..000000000 --- a/src/DlgRef/DlgRef_3Sel3Spin1Check.h +++ /dev/null @@ -1,57 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_3Sel3Spin1Check.h -// Author : Michael ZORIN -// Module : GEOM -// $Header: - -#ifndef DLGREF_3SEL3SPIN1CHECK_H -#define DLGREF_3SEL3SPIN1CHECK_H - -#include "DlgRef_3Sel3Spin1Check_QTD.h" -#include "DlgRef_SpinBox.h" - -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif - -class DLGREF_WNT_EXPORT DlgRef_3Sel3Spin1Check : public DlgRef_3Sel3Spin1Check_QTD -{ - Q_OBJECT - -public: - DlgRef_3Sel3Spin1Check( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~DlgRef_3Sel3Spin1Check(); - - DlgRef_SpinBox* SpinBox1; - DlgRef_SpinBox* SpinBox2; - DlgRef_SpinBox* SpinBox3; - - void ShowRows(int fromRow, int toRow, bool toShow = true); - -}; - -#endif // DLGREF_3SEL3SPIN1CHECK_H diff --git a/src/DlgRef/DlgRef_3Sel3Spin1Check_QTD.cxx b/src/DlgRef/DlgRef_3Sel3Spin1Check_QTD.cxx deleted file mode 100644 index 1110add18..000000000 --- a/src/DlgRef/DlgRef_3Sel3Spin1Check_QTD.cxx +++ /dev/null @@ -1,158 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'DlgRef_3Sel3Spin1Check_QTD.ui' -** -** Created: Mon Apr 19 16:36:48 2004 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "DlgRef_3Sel3Spin1Check_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a DlgRef_3Sel3Spin1Check_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -DlgRef_3Sel3Spin1Check_QTD::DlgRef_3Sel3Spin1Check_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "DlgRef_3Sel3Spin1Check_QTD" ); - resize( 380, 229 ); - setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)5, 0, 0, sizePolicy().hasHeightForWidth() ) ); - setCaption( trUtf8( "DlgRef_3Sel3Spin1Check_QTD" ) ); - DlgRef_3Sel3Spin1Check_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "DlgRef_3Sel3Spin1Check_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)5, 0, 0, GroupBox1->sizePolicy().hasHeightForWidth() ) ); - GroupBox1->setTitle( trUtf8( "" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - - SpinBox_2 = new QSpinBox( GroupBox1, "SpinBox_2" ); - SpinBox_2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox_2->sizePolicy().hasHeightForWidth() ) ); - - Layout1->addWidget( SpinBox_2, 4, 2 ); - - LineEdit3 = new QLineEdit( GroupBox1, "LineEdit3" ); - - Layout1->addWidget( LineEdit3, 2, 2 ); - - SpinBox_3 = new QSpinBox( GroupBox1, "SpinBox_3" ); - SpinBox_3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox_3->sizePolicy().hasHeightForWidth() ) ); - - Layout1->addWidget( SpinBox_3, 5, 2 ); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - Layout1->addWidget( TextLabel1, 0, 0 ); - - TextLabel3 = new QLabel( GroupBox1, "TextLabel3" ); - TextLabel3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel3->sizePolicy().hasHeightForWidth() ) ); - TextLabel3->setText( trUtf8( "TL3" ) ); - - Layout1->addWidget( TextLabel3, 2, 0 ); - - CheckBox1 = new QCheckBox( GroupBox1, "CheckBox1" ); - CheckBox1->setText( trUtf8( "" ) ); - - Layout1->addMultiCellWidget( CheckBox1, 6, 6, 0, 1 ); - - PushButton1 = new QPushButton( GroupBox1, "PushButton1" ); - PushButton1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton1->sizePolicy().hasHeightForWidth() ) ); - PushButton1->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton1, 0, 1 ); - - TextLabel4 = new QLabel( GroupBox1, "TextLabel4" ); - TextLabel4->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel4->sizePolicy().hasHeightForWidth() ) ); - TextLabel4->setText( trUtf8( "TL4" ) ); - - Layout1->addWidget( TextLabel4, 3, 0 ); - - LineEdit2 = new QLineEdit( GroupBox1, "LineEdit2" ); - - Layout1->addWidget( LineEdit2, 1, 2 ); - - PushButton3 = new QPushButton( GroupBox1, "PushButton3" ); - PushButton3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton3->sizePolicy().hasHeightForWidth() ) ); - PushButton3->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton3, 2, 1 ); - - TextLabel6 = new QLabel( GroupBox1, "TextLabel6" ); - TextLabel6->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel6->sizePolicy().hasHeightForWidth() ) ); - TextLabel6->setText( trUtf8( "TL6" ) ); - - Layout1->addWidget( TextLabel6, 5, 0 ); - - SpinBox_1 = new QSpinBox( GroupBox1, "SpinBox_1" ); - SpinBox_1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox_1->sizePolicy().hasHeightForWidth() ) ); - - Layout1->addWidget( SpinBox_1, 3, 2 ); - - TextLabel5 = new QLabel( GroupBox1, "TextLabel5" ); - TextLabel5->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel5->sizePolicy().hasHeightForWidth() ) ); - TextLabel5->setText( trUtf8( "TL5" ) ); - - Layout1->addWidget( TextLabel5, 4, 0 ); - - TextLabel2 = new QLabel( GroupBox1, "TextLabel2" ); - TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) ); - TextLabel2->setText( trUtf8( "TL2" ) ); - - Layout1->addWidget( TextLabel2, 1, 0 ); - - LineEdit1 = new QLineEdit( GroupBox1, "LineEdit1" ); - - Layout1->addWidget( LineEdit1, 0, 2 ); - - PushButton2 = new QPushButton( GroupBox1, "PushButton2" ); - PushButton2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton2->sizePolicy().hasHeightForWidth() ) ); - PushButton2->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton2, 1, 1 ); - QSpacerItem* spacer = new QSpacerItem( 0, 250, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout1->addItem( spacer, 7, 2 ); - - GroupBox1Layout->addLayout( Layout1, 0, 0 ); - - DlgRef_3Sel3Spin1Check_QTDLayout->addWidget( GroupBox1, 0, 0 ); - - // tab order - setTabOrder( PushButton1, LineEdit1 ); - setTabOrder( LineEdit1, PushButton2 ); - setTabOrder( PushButton2, LineEdit2 ); - setTabOrder( LineEdit2, PushButton3 ); - setTabOrder( PushButton3, LineEdit3 ); - setTabOrder( LineEdit3, SpinBox_1 ); - setTabOrder( SpinBox_1, SpinBox_2 ); - setTabOrder( SpinBox_2, SpinBox_3 ); - setTabOrder( SpinBox_3, CheckBox1 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_3Sel3Spin1Check_QTD::~DlgRef_3Sel3Spin1Check_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/DlgRef/DlgRef_3Sel3Spin1Check_QTD.h b/src/DlgRef/DlgRef_3Sel3Spin1Check_QTD.h deleted file mode 100644 index 024549bc7..000000000 --- a/src/DlgRef/DlgRef_3Sel3Spin1Check_QTD.h +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'DlgRef_3Sel3Spin1Check_QTD.ui' -** -** Created: Mon Apr 19 16:36:48 2004 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef DLGREF_3SEL3SPIN1CHECK_QTD_H -#define DLGREF_3SEL3SPIN1CHECK_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QCheckBox; -class QGroupBox; -class QLabel; -class QLineEdit; -class QPushButton; -class QSpinBox; - -class DlgRef_3Sel3Spin1Check_QTD : public QWidget -{ - Q_OBJECT - -public: - DlgRef_3Sel3Spin1Check_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~DlgRef_3Sel3Spin1Check_QTD(); - - QGroupBox* GroupBox1; - QSpinBox* SpinBox_2; - QLineEdit* LineEdit3; - QSpinBox* SpinBox_3; - QLabel* TextLabel1; - QLabel* TextLabel3; - QCheckBox* CheckBox1; - QPushButton* PushButton1; - QLabel* TextLabel4; - QLineEdit* LineEdit2; - QPushButton* PushButton3; - QLabel* TextLabel6; - QSpinBox* SpinBox_1; - QLabel* TextLabel5; - QLabel* TextLabel2; - QLineEdit* LineEdit1; - QPushButton* PushButton2; - - -protected: - QGridLayout* DlgRef_3Sel3Spin1Check_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* Layout1; -}; - -#endif // DLGREF_3SEL3SPIN1CHECK_QTD_H diff --git a/src/DlgRef/DlgRef_3Sel4Spin2Check.cxx b/src/DlgRef/DlgRef_3Sel4Spin2Check.cxx deleted file mode 100644 index b290b918a..000000000 --- a/src/DlgRef/DlgRef_3Sel4Spin2Check.cxx +++ /dev/null @@ -1,69 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_3Sel4Spin2Check.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#include "DlgRef_3Sel4Spin2Check.h" - -#include -#include -#include -#include - -/* - * Constructs a DlgRef_2Sel1Spin which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' - */ -DlgRef_3Sel4Spin2Check::DlgRef_3Sel4Spin2Check(QWidget* parent, const char* name, WFlags fl) - :DlgRef_3Sel4Spin2Check_QTD(parent, name, fl) -{ - SpinBox1->close(TRUE); - SpinBox2->close(TRUE); - SpinBox3->close(TRUE); - SpinBox4->close(TRUE); - SpinBox_DX1 = new DlgRef_SpinBox(GroupBox1, "SpinBox_DX1"); - SpinBox_DY1 = new DlgRef_SpinBox(GroupBox1, "SpinBox_DY1"); - SpinBox_DX2 = new DlgRef_SpinBox(GroupBox1, "SpinBox_DX2"); - SpinBox_DY2 = new DlgRef_SpinBox(GroupBox1, "SpinBox_DY2"); - Layout2->addWidget(SpinBox_DX1, 0, 1); - Layout2->addWidget(SpinBox_DY1, 1, 1); - Layout3->addWidget(SpinBox_DX2, 0, 1); - Layout3->addWidget(SpinBox_DY2, 1, 1); - - // PAL6532 - PushButton1->setAutoDefault( false ); - PushButton2->setAutoDefault( false ); - PushButton3->setAutoDefault( false ); -} - - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_3Sel4Spin2Check::~DlgRef_3Sel4Spin2Check() -{ - // no need to delete child widgets, Qt does it all for us -} diff --git a/src/DlgRef/DlgRef_3Sel4Spin2Check.h b/src/DlgRef/DlgRef_3Sel4Spin2Check.h deleted file mode 100644 index 62708139e..000000000 --- a/src/DlgRef/DlgRef_3Sel4Spin2Check.h +++ /dev/null @@ -1,56 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_3Sel4Spin2Check.h -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#ifndef DLGREF_3SEL4SPIN2CHECK_H -#define DLGREF_3SEL4SPIN2CHECK_H - -#include "DlgRef_3Sel4Spin2Check_QTD.h" -#include "DlgRef_SpinBox.h" - -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif - -class DLGREF_WNT_EXPORT DlgRef_3Sel4Spin2Check : public DlgRef_3Sel4Spin2Check_QTD -{ - Q_OBJECT - -public: - DlgRef_3Sel4Spin2Check(QWidget* parent = 0, const char* name = 0, WFlags fl = 0); - ~DlgRef_3Sel4Spin2Check(); - - DlgRef_SpinBox* SpinBox_DX1; - DlgRef_SpinBox* SpinBox_DY1; - DlgRef_SpinBox* SpinBox_DX2; - DlgRef_SpinBox* SpinBox_DY2; - -}; - -#endif // DLGREF_3SEL4SPIN2CHECK_H diff --git a/src/DlgRef/DlgRef_3Sel4Spin2Check_QTD.cxx b/src/DlgRef/DlgRef_3Sel4Spin2Check_QTD.cxx deleted file mode 100644 index b79ae4b55..000000000 --- a/src/DlgRef/DlgRef_3Sel4Spin2Check_QTD.cxx +++ /dev/null @@ -1,182 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'DlgRef_3Sel4Spin2Check_QTD.ui' -** -** Created: Tue Jun 1 16:29:29 2004 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "DlgRef_3Sel4Spin2Check_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a DlgRef_3Sel4Spin2Check_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -DlgRef_3Sel4Spin2Check_QTD::DlgRef_3Sel4Spin2Check_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "DlgRef_3Sel4Spin2Check_QTD" ); - resize( 269, 281 ); - setCaption( trUtf8( "DlgRef_3Sel4Spin2Check_QTD" ) ); - DlgRef_3Sel4Spin2Check_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "DlgRef_3Sel4Spin2Check_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setTitle( trUtf8( "" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - - CheckButton2 = new QCheckBox( GroupBox1, "CheckButton2" ); - CheckButton2->setText( trUtf8( "" ) ); - - Layout1->addMultiCellWidget( CheckButton2, 6, 6, 0, 2 ); - - LineEdit1 = new QLineEdit( GroupBox1, "LineEdit1" ); - - Layout1->addWidget( LineEdit1, 0, 2 ); - - TextLabel3 = new QLabel( GroupBox1, "TextLabel3" ); - TextLabel3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel3->sizePolicy().hasHeightForWidth() ) ); - TextLabel3->setText( trUtf8( "TL3" ) ); - - Layout1->addWidget( TextLabel3, 2, 0 ); - - PushButton2 = new QPushButton( GroupBox1, "PushButton2" ); - PushButton2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton2->sizePolicy().hasHeightForWidth() ) ); - PushButton2->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton2, 1, 1 ); - - LineEdit3 = new QLineEdit( GroupBox1, "LineEdit3" ); - - Layout1->addWidget( LineEdit3, 2, 2 ); - - PushButton1 = new QPushButton( GroupBox1, "PushButton1" ); - PushButton1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton1->sizePolicy().hasHeightForWidth() ) ); - PushButton1->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton1, 0, 1 ); - - Layout3 = new QGridLayout( 0, 1, 1, 0, 6, "Layout3"); - - SpinBox4 = new QSpinBox( GroupBox1, "SpinBox4" ); - SpinBox4->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox4->sizePolicy().hasHeightForWidth() ) ); - - Layout3->addWidget( SpinBox4, 1, 1 ); - - SpinBox3 = new QSpinBox( GroupBox1, "SpinBox3" ); - SpinBox3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox3->sizePolicy().hasHeightForWidth() ) ); - - Layout3->addWidget( SpinBox3, 0, 1 ); - - TextLabel7 = new QLabel( GroupBox1, "TextLabel7" ); - TextLabel7->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel7->sizePolicy().hasHeightForWidth() ) ); - TextLabel7->setText( trUtf8( "TL7" ) ); - - Layout3->addWidget( TextLabel7, 1, 0 ); - - TextLabel6 = new QLabel( GroupBox1, "TextLabel6" ); - TextLabel6->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel6->sizePolicy().hasHeightForWidth() ) ); - TextLabel6->setText( trUtf8( "TL6" ) ); - - Layout3->addWidget( TextLabel6, 0, 0 ); - - Layout1->addMultiCellLayout( Layout3, 5, 5, 0, 2 ); - - CheckButton1 = new QCheckBox( GroupBox1, "CheckButton1" ); - CheckButton1->setText( trUtf8( "" ) ); - - Layout1->addMultiCellWidget( CheckButton1, 4, 4, 0, 2 ); - - PushButton3 = new QPushButton( GroupBox1, "PushButton3" ); - PushButton3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton3->sizePolicy().hasHeightForWidth() ) ); - PushButton3->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton3, 2, 1 ); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - Layout1->addWidget( TextLabel1, 0, 0 ); - QSpacerItem* spacer = new QSpacerItem( 0, 16, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout1->addItem( spacer, 7, 2 ); - - LineEdit2 = new QLineEdit( GroupBox1, "LineEdit2" ); - - Layout1->addWidget( LineEdit2, 1, 2 ); - - Layout2 = new QGridLayout( 0, 1, 1, 0, 6, "Layout2"); - - TextLabel5 = new QLabel( GroupBox1, "TextLabel5" ); - TextLabel5->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel5->sizePolicy().hasHeightForWidth() ) ); - TextLabel5->setText( trUtf8( "TL5" ) ); - - Layout2->addWidget( TextLabel5, 1, 0 ); - - TextLabel4 = new QLabel( GroupBox1, "TextLabel4" ); - TextLabel4->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel4->sizePolicy().hasHeightForWidth() ) ); - TextLabel4->setText( trUtf8( "TL4" ) ); - - Layout2->addWidget( TextLabel4, 0, 0 ); - - SpinBox1 = new QSpinBox( GroupBox1, "SpinBox1" ); - SpinBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox1->sizePolicy().hasHeightForWidth() ) ); - - Layout2->addWidget( SpinBox1, 0, 1 ); - - SpinBox2 = new QSpinBox( GroupBox1, "SpinBox2" ); - SpinBox2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox2->sizePolicy().hasHeightForWidth() ) ); - - Layout2->addWidget( SpinBox2, 1, 1 ); - - Layout1->addMultiCellLayout( Layout2, 3, 3, 0, 2 ); - - TextLabel2 = new QLabel( GroupBox1, "TextLabel2" ); - TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) ); - TextLabel2->setText( trUtf8( "TL2" ) ); - - Layout1->addWidget( TextLabel2, 1, 0 ); - - GroupBox1Layout->addLayout( Layout1, 0, 0 ); - - DlgRef_3Sel4Spin2Check_QTDLayout->addWidget( GroupBox1, 0, 0 ); - - // tab order - setTabOrder( PushButton1, LineEdit1 ); - setTabOrder( LineEdit1, PushButton2 ); - setTabOrder( PushButton2, LineEdit2 ); - setTabOrder( LineEdit2, PushButton3 ); - setTabOrder( PushButton3, LineEdit3 ); - setTabOrder( LineEdit3, SpinBox1 ); - setTabOrder( SpinBox1, SpinBox2 ); - setTabOrder( SpinBox2, CheckButton1 ); - setTabOrder( CheckButton1, SpinBox3 ); - setTabOrder( SpinBox3, SpinBox4 ); - setTabOrder( SpinBox4, CheckButton2 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_3Sel4Spin2Check_QTD::~DlgRef_3Sel4Spin2Check_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/DlgRef/DlgRef_3Sel4Spin2Check_QTD.h b/src/DlgRef/DlgRef_3Sel4Spin2Check_QTD.h deleted file mode 100644 index ef704cbe4..000000000 --- a/src/DlgRef/DlgRef_3Sel4Spin2Check_QTD.h +++ /dev/null @@ -1,62 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'DlgRef_3Sel4Spin2Check_QTD.ui' -** -** Created: Tue Jun 1 16:29:29 2004 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef DLGREF_3SEL4SPIN2CHECK_QTD_H -#define DLGREF_3SEL4SPIN2CHECK_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QCheckBox; -class QGroupBox; -class QLabel; -class QLineEdit; -class QPushButton; -class QSpinBox; - -class DlgRef_3Sel4Spin2Check_QTD : public QWidget -{ - Q_OBJECT - -public: - DlgRef_3Sel4Spin2Check_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~DlgRef_3Sel4Spin2Check_QTD(); - - QGroupBox* GroupBox1; - QCheckBox* CheckButton2; - QLineEdit* LineEdit1; - QLabel* TextLabel3; - QPushButton* PushButton2; - QLineEdit* LineEdit3; - QPushButton* PushButton1; - QSpinBox* SpinBox4; - QSpinBox* SpinBox3; - QLabel* TextLabel7; - QLabel* TextLabel6; - QCheckBox* CheckButton1; - QPushButton* PushButton3; - QLabel* TextLabel1; - QLineEdit* LineEdit2; - QLabel* TextLabel5; - QLabel* TextLabel4; - QSpinBox* SpinBox1; - QSpinBox* SpinBox2; - QLabel* TextLabel2; - - -protected: - QGridLayout* DlgRef_3Sel4Spin2Check_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* Layout1; - QGridLayout* Layout3; - QGridLayout* Layout2; -}; - -#endif // DLGREF_3SEL4SPIN2CHECK_QTD_H diff --git a/src/DlgRef/DlgRef_3Sel_QTD.cxx b/src/DlgRef/DlgRef_3Sel_QTD.cxx deleted file mode 100644 index 832f64940..000000000 --- a/src/DlgRef/DlgRef_3Sel_QTD.cxx +++ /dev/null @@ -1,106 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'DlgRef_3Sel_QTD.ui' -** -** Created: lun sep 29 11:05:21 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "DlgRef_3Sel_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a DlgRef_3Sel_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -DlgRef_3Sel_QTD::DlgRef_3Sel_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "DlgRef_3Sel_QTD" ); - resize( 129, 117 ); - setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)7, 0, 0, sizePolicy().hasHeightForWidth() ) ); - setCaption( trUtf8( "DlgRef_3Sel_QTD" ) ); - DlgRef_3Sel_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "DlgRef_3Sel_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setTitle( trUtf8( "" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - - LineEdit3 = new QLineEdit( GroupBox1, "LineEdit3" ); - - Layout1->addWidget( LineEdit3, 2, 2 ); - - PushButton1 = new QPushButton( GroupBox1, "PushButton1" ); - PushButton1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton1->sizePolicy().hasHeightForWidth() ) ); - PushButton1->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton1, 0, 1 ); - - LineEdit2 = new QLineEdit( GroupBox1, "LineEdit2" ); - - Layout1->addWidget( LineEdit2, 1, 2 ); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - Layout1->addWidget( TextLabel1, 0, 0 ); - - TextLabel3 = new QLabel( GroupBox1, "TextLabel3" ); - TextLabel3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel3->sizePolicy().hasHeightForWidth() ) ); - TextLabel3->setText( trUtf8( "TL3" ) ); - - Layout1->addWidget( TextLabel3, 2, 0 ); - - LineEdit1 = new QLineEdit( GroupBox1, "LineEdit1" ); - - Layout1->addWidget( LineEdit1, 0, 2 ); - QSpacerItem* spacer = new QSpacerItem( 0, 159, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout1->addItem( spacer, 3, 2 ); - - TextLabel2 = new QLabel( GroupBox1, "TextLabel2" ); - TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) ); - TextLabel2->setText( trUtf8( "TL2" ) ); - - Layout1->addWidget( TextLabel2, 1, 0 ); - - PushButton3 = new QPushButton( GroupBox1, "PushButton3" ); - PushButton3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton3->sizePolicy().hasHeightForWidth() ) ); - PushButton3->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton3, 2, 1 ); - - PushButton2 = new QPushButton( GroupBox1, "PushButton2" ); - PushButton2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton2->sizePolicy().hasHeightForWidth() ) ); - PushButton2->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton2, 1, 1 ); - - GroupBox1Layout->addLayout( Layout1, 0, 0 ); - - DlgRef_3Sel_QTDLayout->addWidget( GroupBox1, 0, 0 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_3Sel_QTD::~DlgRef_3Sel_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/DlgRef/DlgRef_3Sel_QTD.h b/src/DlgRef/DlgRef_3Sel_QTD.h deleted file mode 100644 index da7a9d79e..000000000 --- a/src/DlgRef/DlgRef_3Sel_QTD.h +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'DlgRef_3Sel_QTD.ui' -** -** Created: lun sep 29 11:05:21 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef DLGREF_3SEL_QTD_H -#define DLGREF_3SEL_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QGroupBox; -class QLabel; -class QLineEdit; -class QPushButton; - -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif - -class DLGREF_WNT_EXPORT DlgRef_3Sel_QTD : public QWidget -{ - Q_OBJECT - -public: - DlgRef_3Sel_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~DlgRef_3Sel_QTD(); - - QGroupBox* GroupBox1; - QLineEdit* LineEdit3; - QPushButton* PushButton1; - QLineEdit* LineEdit2; - QLabel* TextLabel1; - QLabel* TextLabel3; - QLineEdit* LineEdit1; - QLabel* TextLabel2; - QPushButton* PushButton3; - QPushButton* PushButton2; - - -protected: - QGridLayout* DlgRef_3Sel_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* Layout1; -}; - -#endif // DLGREF_3SEL_QTD_H diff --git a/src/DlgRef/DlgRef_3Spin.cxx b/src/DlgRef/DlgRef_3Spin.cxx deleted file mode 100644 index 07237c2ed..000000000 --- a/src/DlgRef/DlgRef_3Spin.cxx +++ /dev/null @@ -1,63 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_3Spin.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#include "DlgRef_3Spin.h" - -#include -#include -#include - -/* - * Constructs a DlgRef_3Spin which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' - */ -DlgRef_3Spin::DlgRef_3Spin(QWidget* parent, const char* name, WFlags fl) - :DlgRef_3Spin_QTD(parent, name, fl) -{ - SpinBox1->close(TRUE); - SpinBox2->close(TRUE); - SpinBox3->close(TRUE); - - SpinBox_DX = new DlgRef_SpinBox(GroupBox1, "SpinBox_DX"); - Layout1->addWidget(SpinBox_DX, 0, 1); - - SpinBox_DY = new DlgRef_SpinBox(GroupBox1, "SpinBox_DY"); - Layout1->addWidget(SpinBox_DY, 1, 1); - - SpinBox_DZ = new DlgRef_SpinBox(GroupBox1, "SpinBox_DZ"); - Layout1->addWidget(SpinBox_DZ, 2, 1); -} - - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_3Spin::~DlgRef_3Spin() -{ - // no need to delete child widgets, Qt does it all for us -} diff --git a/src/DlgRef/DlgRef_3Spin.h b/src/DlgRef/DlgRef_3Spin.h deleted file mode 100644 index 60c28ce36..000000000 --- a/src/DlgRef/DlgRef_3Spin.h +++ /dev/null @@ -1,58 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_3Spin.h -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#ifndef DLGREF_3SPIN_H -#define DLGREF_3SPIN_H - -#include "DlgRef_3Spin_QTD.h" -#include "DlgRef_SpinBox.h" -//#if defined WNT -//#include -//#else -//#define SALOME_WNT_EXPORT -//#endif -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif -class DLGREF_WNT_EXPORT DlgRef_3Spin : public DlgRef_3Spin_QTD -{ - Q_OBJECT - -public: - DlgRef_3Spin( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~DlgRef_3Spin(); - - DlgRef_SpinBox* SpinBox_DX; - DlgRef_SpinBox* SpinBox_DY; - DlgRef_SpinBox* SpinBox_DZ; - -}; - -#endif // DLGREF_3SPIN_H diff --git a/src/DlgRef/DlgRef_3Spin1Check.cxx b/src/DlgRef/DlgRef_3Spin1Check.cxx deleted file mode 100644 index 7e622ab82..000000000 --- a/src/DlgRef/DlgRef_3Spin1Check.cxx +++ /dev/null @@ -1,63 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_3Spin1Check.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#include "DlgRef_3Spin1Check.h" - -#include -#include -#include - -/* - * Constructs a DlgRef_3Spin which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' - */ -DlgRef_3Spin1Check::DlgRef_3Spin1Check(QWidget* parent, const char* name, WFlags fl) - :DlgRef_3Spin1Check_QTD(parent, name, fl) -{ - SpinBox1->close(TRUE); - SpinBox2->close(TRUE); - SpinBox3->close(TRUE); - - SpinBox_DX = new DlgRef_SpinBox(GroupBox1, "SpinBox_DX"); - Layout1->addWidget(SpinBox_DX, 0, 1); - - SpinBox_DY = new DlgRef_SpinBox(GroupBox1, "SpinBox_DY"); - Layout1->addWidget(SpinBox_DY, 1, 1); - - SpinBox_DZ = new DlgRef_SpinBox(GroupBox1, "SpinBox_DZ"); - Layout1->addWidget(SpinBox_DZ, 2, 1); -} - - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_3Spin1Check::~DlgRef_3Spin1Check() -{ - // no need to delete child widgets, Qt does it all for us -} diff --git a/src/DlgRef/DlgRef_3Spin1Check.h b/src/DlgRef/DlgRef_3Spin1Check.h deleted file mode 100644 index 54beec576..000000000 --- a/src/DlgRef/DlgRef_3Spin1Check.h +++ /dev/null @@ -1,54 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_3Spin.h -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#ifndef DLGREF_3SPIN1CHECK_H -#define DLGREF_3SPIN1CHECK_H - -#include "DlgRef_3Spin1Check_QTD.h" -#include "DlgRef_SpinBox.h" - -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif -class DLGREF_WNT_EXPORT DlgRef_3Spin1Check : public DlgRef_3Spin1Check_QTD -{ - Q_OBJECT - -public: - DlgRef_3Spin1Check(QWidget* parent = 0, const char* name = 0, WFlags fl = 0); - ~DlgRef_3Spin1Check(); - - DlgRef_SpinBox* SpinBox_DX; - DlgRef_SpinBox* SpinBox_DY; - DlgRef_SpinBox* SpinBox_DZ; - -}; - -#endif // DLGREF_3SPIN1CHECK_H diff --git a/src/DlgRef/DlgRef_3Spin1Check_QTD.cxx b/src/DlgRef/DlgRef_3Spin1Check_QTD.cxx deleted file mode 100644 index 2509bd63b..000000000 --- a/src/DlgRef/DlgRef_3Spin1Check_QTD.cxx +++ /dev/null @@ -1,96 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'DlgRef_3Spin1Check_QTD.ui' -** -** Created: dim sep 28 18:11:19 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "DlgRef_3Spin1Check_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a DlgRef_3Spin1Check_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -DlgRef_3Spin1Check_QTD::DlgRef_3Spin1Check_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "DlgRef_3Spin1Check_QTD" ); - resize( 124, 130 ); - setCaption( trUtf8( "DlgRef_3Spin1Check_QTD" ) ); - DlgRef_3Spin1Check_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "DlgRef_3Spin1Check_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setTitle( trUtf8( "" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - - CheckBox1 = new QRadioButton( GroupBox1, "CheckBox1" ); - CheckBox1->setText( trUtf8( "" ) ); - - Layout1->addMultiCellWidget( CheckBox1, 3, 3, 0, 1 ); - QSpacerItem* spacer = new QSpacerItem( 0, 20, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout1->addItem( spacer, 4, 1 ); - - SpinBox2 = new QSpinBox( GroupBox1, "SpinBox2" ); - SpinBox2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox2->sizePolicy().hasHeightForWidth() ) ); - - Layout1->addWidget( SpinBox2, 1, 1 ); - - TextLabel3 = new QLabel( GroupBox1, "TextLabel3" ); - TextLabel3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel3->sizePolicy().hasHeightForWidth() ) ); - TextLabel3->setText( trUtf8( "TL3" ) ); - - Layout1->addWidget( TextLabel3, 2, 0 ); - - SpinBox3 = new QSpinBox( GroupBox1, "SpinBox3" ); - SpinBox3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox3->sizePolicy().hasHeightForWidth() ) ); - - Layout1->addWidget( SpinBox3, 2, 1 ); - - SpinBox1 = new QSpinBox( GroupBox1, "SpinBox1" ); - SpinBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox1->sizePolicy().hasHeightForWidth() ) ); - - Layout1->addWidget( SpinBox1, 0, 1 ); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - Layout1->addWidget( TextLabel1, 0, 0 ); - - TextLabel2 = new QLabel( GroupBox1, "TextLabel2" ); - TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) ); - TextLabel2->setText( trUtf8( "TL2" ) ); - - Layout1->addWidget( TextLabel2, 1, 0 ); - - GroupBox1Layout->addLayout( Layout1, 0, 0 ); - - DlgRef_3Spin1Check_QTDLayout->addWidget( GroupBox1, 0, 0 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_3Spin1Check_QTD::~DlgRef_3Spin1Check_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/DlgRef/DlgRef_3Spin1Check_QTD.h b/src/DlgRef/DlgRef_3Spin1Check_QTD.h deleted file mode 100644 index 2df127740..000000000 --- a/src/DlgRef/DlgRef_3Spin1Check_QTD.h +++ /dev/null @@ -1,52 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'DlgRef_3Spin1Check_QTD.ui' -** -** Created: dim sep 28 18:11:19 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef DLGREF_3SPIN1CHECK_QTD_H -#define DLGREF_3SPIN1CHECK_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QGroupBox; -class QLabel; -class QRadioButton; -class QSpinBox; - -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif - -class DLGREF_WNT_EXPORT DlgRef_3Spin1Check_QTD : public QWidget -{ - Q_OBJECT - -public: - DlgRef_3Spin1Check_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~DlgRef_3Spin1Check_QTD(); - - QGroupBox* GroupBox1; - QRadioButton* CheckBox1; - QSpinBox* SpinBox2; - QLabel* TextLabel3; - QSpinBox* SpinBox3; - QSpinBox* SpinBox1; - QLabel* TextLabel1; - QLabel* TextLabel2; - - -protected: - QGridLayout* DlgRef_3Spin1Check_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* Layout1; -}; - -#endif // DLGREF_3SPIN1CHECK_QTD_H diff --git a/src/DlgRef/DlgRef_3Spin_QTD.cxx b/src/DlgRef/DlgRef_3Spin_QTD.cxx deleted file mode 100644 index 2066934c5..000000000 --- a/src/DlgRef/DlgRef_3Spin_QTD.cxx +++ /dev/null @@ -1,90 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'DlgRef_3Spin_QTD.ui' -** -** Created: mar sep 23 16:05:10 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "DlgRef_3Spin_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a DlgRef_3Spin_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -DlgRef_3Spin_QTD::DlgRef_3Spin_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "DlgRef_3Spin_QTD" ); - resize( 124, 111 ); - setCaption( trUtf8( "DlgRef_3Spin_QTD" ) ); - DlgRef_3Spin_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "DlgRef_3Spin_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setTitle( trUtf8( "" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - - SpinBox2 = new QSpinBox( GroupBox1, "SpinBox2" ); - SpinBox2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox2->sizePolicy().hasHeightForWidth() ) ); - - Layout1->addWidget( SpinBox2, 1, 1 ); - QSpacerItem* spacer = new QSpacerItem( 0, 16, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout1->addItem( spacer, 3, 1 ); - - TextLabel3 = new QLabel( GroupBox1, "TextLabel3" ); - TextLabel3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel3->sizePolicy().hasHeightForWidth() ) ); - TextLabel3->setText( trUtf8( "TL3" ) ); - - Layout1->addWidget( TextLabel3, 2, 0 ); - - SpinBox1 = new QSpinBox( GroupBox1, "SpinBox1" ); - SpinBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox1->sizePolicy().hasHeightForWidth() ) ); - - Layout1->addWidget( SpinBox1, 0, 1 ); - - SpinBox3 = new QSpinBox( GroupBox1, "SpinBox3" ); - SpinBox3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox3->sizePolicy().hasHeightForWidth() ) ); - - Layout1->addWidget( SpinBox3, 2, 1 ); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - Layout1->addWidget( TextLabel1, 0, 0 ); - - TextLabel2 = new QLabel( GroupBox1, "TextLabel2" ); - TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) ); - TextLabel2->setText( trUtf8( "TL2" ) ); - - Layout1->addWidget( TextLabel2, 1, 0 ); - - GroupBox1Layout->addLayout( Layout1, 0, 0 ); - - DlgRef_3Spin_QTDLayout->addWidget( GroupBox1, 0, 0 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_3Spin_QTD::~DlgRef_3Spin_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/DlgRef/DlgRef_3Spin_QTD.h b/src/DlgRef/DlgRef_3Spin_QTD.h deleted file mode 100644 index 0ffe263b7..000000000 --- a/src/DlgRef/DlgRef_3Spin_QTD.h +++ /dev/null @@ -1,49 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'DlgRef_3Spin_QTD.ui' -** -** Created: mar sep 23 16:05:09 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef DLGREF_3SPIN_QTD_H -#define DLGREF_3SPIN_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QGroupBox; -class QLabel; -class QSpinBox; - -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif -class DLGREF_WNT_EXPORT DlgRef_3Spin_QTD : public QWidget -{ - Q_OBJECT - -public: - DlgRef_3Spin_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~DlgRef_3Spin_QTD(); - - QGroupBox* GroupBox1; - QSpinBox* SpinBox2; - QLabel* TextLabel3; - QSpinBox* SpinBox1; - QSpinBox* SpinBox3; - QLabel* TextLabel1; - QLabel* TextLabel2; - - -protected: - QGridLayout* DlgRef_3Spin_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* Layout1; -}; - -#endif // DLGREF_3SPIN_QTD_H diff --git a/src/DlgRef/DlgRef_4Sel1List1Check_QTD.cxx b/src/DlgRef/DlgRef_4Sel1List1Check_QTD.cxx deleted file mode 100644 index cd7664335..000000000 --- a/src/DlgRef/DlgRef_4Sel1List1Check_QTD.cxx +++ /dev/null @@ -1,176 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'DlgRef_4Sel1List1Check_QTD.ui' -** -** Created: lun oct 27 17:21:04 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "DlgRef_4Sel1List1Check_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a DlgRef_4Sel1List1Check_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -DlgRef_4Sel1List1Check_QTD::DlgRef_4Sel1List1Check_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "DlgRef_4Sel1List1Check_QTD" ); - resize( 129, 210 ); - setCaption( trUtf8( "DlgRef_4Sel1List1Check_QTD" ) ); - DlgRef_4Sel1List1Check_QTDLayout = - new QGridLayout( this, 1, 1, 0, 6, "DlgRef_4Sel1List1Check_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setTitle( trUtf8( "" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - Layout1->addWidget( TextLabel1, 0, 0 ); - - PushButton1 = new QPushButton( GroupBox1, "PushButton1" ); - PushButton1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton1->sizePolicy().hasHeightForWidth() ) ); - PushButton1->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton1, 0, 1 ); - - LineEdit1 = new QLineEdit( GroupBox1, "LineEdit1" ); - - Layout1->addWidget( LineEdit1, 0, 2 ); - - - TextLabel2 = new QLabel( GroupBox1, "TextLabel2" ); - TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) ); - TextLabel2->setText( trUtf8( "TL2" ) ); - - Layout1->addWidget( TextLabel2, 1, 0 ); - - PushButton2 = new QPushButton( GroupBox1, "PushButton2" ); - PushButton2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton2->sizePolicy().hasHeightForWidth() ) ); - PushButton2->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton2, 1, 1 ); - - LineEdit2 = new QLineEdit( GroupBox1, "LineEdit2" ); - - Layout1->addWidget( LineEdit2, 1, 2 ); - - - TextLabel3 = new QLabel( GroupBox1, "TextLabel3" ); - TextLabel3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel3->sizePolicy().hasHeightForWidth() ) ); - TextLabel3->setText( trUtf8( "TL3" ) ); - - Layout1->addMultiCellWidget( TextLabel3, 2, 2, 0, 1 ); - - ComboBox1 = new QComboBox( FALSE, GroupBox1, "ComboBox1" ); - ComboBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, ComboBox1->sizePolicy().hasHeightForWidth() ) ); - - Layout1->addWidget( ComboBox1, 2, 2 ); - - - GroupBox1Layout->addLayout( Layout1, 0, 0 ); - - DlgRef_4Sel1List1Check_QTDLayout->addWidget( GroupBox1, 0, 0 ); - - - GroupBox2 = new QGroupBox( this, "GroupBox2" ); - GroupBox2->setTitle( trUtf8( "" ) ); - GroupBox2->setColumnLayout(0, Qt::Vertical ); - GroupBox2->layout()->setSpacing( 6 ); - GroupBox2->layout()->setMargin( 11 ); - GroupBox2Layout = new QGridLayout( GroupBox2->layout() ); - GroupBox2Layout->setAlignment( Qt::AlignTop ); - - Layout2 = new QGridLayout( 0, 1, 1, 0, 6, "Layout2"); - - TextLabel4 = new QLabel( GroupBox2, "TextLabel4" ); - TextLabel4->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel4->sizePolicy().hasHeightForWidth() ) ); - TextLabel4->setText( trUtf8( "TL4" ) ); - - Layout2->addWidget( TextLabel4, 0, 0 ); - QSpacerItem* spacer = new QSpacerItem( 0, 80, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout1->addItem( spacer, 5, 2 ); - - PushButton3 = new QPushButton( GroupBox2, "PushButton3" ); - PushButton3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton3->sizePolicy().hasHeightForWidth() ) ); - PushButton3->setText( trUtf8( "" ) ); - - Layout2->addWidget( PushButton3, 0, 1 ); - - LineEdit3 = new QLineEdit( GroupBox2, "LineEdit3" ); - - Layout2->addWidget( LineEdit3, 0, 2 ); - - - TextLabel5 = new QLabel( GroupBox2, "TextLabel5" ); - TextLabel5->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel5->sizePolicy().hasHeightForWidth() ) ); - TextLabel5->setText( trUtf8( "TL5" ) ); - - Layout2->addWidget( TextLabel5, 1, 0 ); - - PushButton4 = new QPushButton( GroupBox2, "PushButton4" ); - PushButton4->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton4->sizePolicy().hasHeightForWidth() ) ); - PushButton4->setText( trUtf8( "" ) ); - - Layout2->addWidget( PushButton4, 1, 1 ); - - LineEdit4 = new QLineEdit( GroupBox2, "LineEdit4" ); - - Layout2->addWidget( LineEdit4, 1, 2 ); - - CheckBox1 = new QCheckBox( GroupBox1, "CheckBox1" ); - CheckBox1->setText( trUtf8( "" ) ); - Layout1->addMultiCellWidget( CheckBox1, 5, 5, 0, 1 ); - - PushButton5 = new QPushButton( GroupBox1, "PushButton5" ); - PushButton5->setText( trUtf8( "" ) ); - Layout1->addWidget( PushButton5, 5, 2 ); - - GroupBox2Layout->addLayout( Layout2, 0, 0 ); - - DlgRef_4Sel1List1Check_QTDLayout->addWidget( GroupBox2, 1, 0 ); - - // tab order - setTabOrder(PushButton1 , LineEdit1); - setTabOrder(LineEdit1 , PushButton2); - setTabOrder(PushButton2 , LineEdit2); - setTabOrder(LineEdit2, ComboBox1); - setTabOrder(ComboBox1, CheckBox1); - setTabOrder(CheckBox1, PushButton5); - setTabOrder(PushButton5, PushButton3); - setTabOrder(PushButton3 , LineEdit3); - setTabOrder(LineEdit3, PushButton4 ); - setTabOrder(PushButton4 , LineEdit4); - -} - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_4Sel1List1Check_QTD::~DlgRef_4Sel1List1Check_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/DlgRef/DlgRef_4Sel1List1Check_QTD.h b/src/DlgRef/DlgRef_4Sel1List1Check_QTD.h deleted file mode 100644 index 4f298bc6c..000000000 --- a/src/DlgRef/DlgRef_4Sel1List1Check_QTD.h +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'DlgRef_4Sel1List1Check_QTD.ui' -** -** Created: lun oct 27 17:21:03 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef DLGREF_4SEL1LIST1CHECK_QTD_H -#define DLGREF_4SEL1LIST1CHECK_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QComboBox; -class QGroupBox; -class QLabel; -class QLineEdit; -class QPushButton; -class QCheckBox; -class QPushButton; - -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif - -class DLGREF_WNT_EXPORT DlgRef_4Sel1List1Check_QTD : public QWidget -{ - Q_OBJECT - -public: - DlgRef_4Sel1List1Check_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~DlgRef_4Sel1List1Check_QTD(); - - QGroupBox* GroupBox1; - QGroupBox* GroupBox2; - QLabel* TextLabel1; - QLabel* TextLabel2; - QLabel* TextLabel3; - QLabel* TextLabel4; - QLabel* TextLabel5; - QPushButton* PushButton1; - QPushButton* PushButton2; - QPushButton* PushButton3; - QPushButton* PushButton4; - QLineEdit* LineEdit1; - QLineEdit* LineEdit2; - QLineEdit* LineEdit3; - QLineEdit* LineEdit4; - QComboBox* ComboBox1; - QCheckBox* CheckBox1; - QPushButton* PushButton5; - -protected: - QGridLayout* DlgRef_4Sel1List1Check_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* GroupBox2Layout; - QGridLayout* Layout1; - QGridLayout* Layout2; -}; - -#endif // DLGREF_4SEL1LIST1CHECK_QTD_H diff --git a/src/DlgRef/DlgRef_4Sel1List_QTD.cxx b/src/DlgRef/DlgRef_4Sel1List_QTD.cxx deleted file mode 100644 index 04b28ef15..000000000 --- a/src/DlgRef/DlgRef_4Sel1List_QTD.cxx +++ /dev/null @@ -1,152 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'DlgRef_4Sel1List_QTD.ui' -** -** Created: lun oct 27 17:21:04 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "DlgRef_4Sel1List_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a DlgRef_4Sel1List_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -DlgRef_4Sel1List_QTD::DlgRef_4Sel1List_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "DlgRef_4Sel1List_QTD" ); - resize( 129, 175 ); - setCaption( trUtf8( "DlgRef_4Sel1List_QTD" ) ); - DlgRef_4Sel1List_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "DlgRef_4Sel1List_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setTitle( trUtf8( "" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - Layout1->addWidget( TextLabel1, 0, 0 ); - - PushButton1 = new QPushButton( GroupBox1, "PushButton1" ); - PushButton1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton1->sizePolicy().hasHeightForWidth() ) ); - PushButton1->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton1, 0, 1 ); - - LineEdit1 = new QLineEdit( GroupBox1, "LineEdit1" ); - - Layout1->addWidget( LineEdit1, 0, 2 ); - - - TextLabel2 = new QLabel( GroupBox1, "TextLabel2" ); - TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) ); - TextLabel2->setText( trUtf8( "TL2" ) ); - - Layout1->addWidget( TextLabel2, 1, 0 ); - - PushButton2 = new QPushButton( GroupBox1, "PushButton2" ); - PushButton2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton2->sizePolicy().hasHeightForWidth() ) ); - PushButton2->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton2, 1, 1 ); - - LineEdit2 = new QLineEdit( GroupBox1, "LineEdit2" ); - - Layout1->addWidget( LineEdit2, 1, 2 ); - - - TextLabel3 = new QLabel( GroupBox1, "TextLabel3" ); - TextLabel3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel3->sizePolicy().hasHeightForWidth() ) ); - TextLabel3->setText( trUtf8( "TL3" ) ); - - Layout1->addMultiCellWidget( TextLabel3, 2, 2, 0, 1 ); - - ComboBox1 = new QComboBox( FALSE, GroupBox1, "ComboBox1" ); - ComboBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, ComboBox1->sizePolicy().hasHeightForWidth() ) ); - - Layout1->addWidget( ComboBox1, 2, 2 ); - - - GroupBox1Layout->addLayout( Layout1, 0, 0 ); - - DlgRef_4Sel1List_QTDLayout->addWidget( GroupBox1, 0, 0 ); - - - GroupBox2 = new QGroupBox( this, "GroupBox2" ); - GroupBox2->setTitle( trUtf8( "" ) ); - GroupBox2->setColumnLayout(0, Qt::Vertical ); - GroupBox2->layout()->setSpacing( 6 ); - GroupBox2->layout()->setMargin( 11 ); - GroupBox2Layout = new QGridLayout( GroupBox2->layout() ); - GroupBox2Layout->setAlignment( Qt::AlignTop ); - - Layout2 = new QGridLayout( 0, 1, 1, 0, 6, "Layout2"); - - TextLabel4 = new QLabel( GroupBox2, "TextLabel4" ); - TextLabel4->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel4->sizePolicy().hasHeightForWidth() ) ); - TextLabel4->setText( trUtf8( "TL4" ) ); - - Layout2->addWidget( TextLabel4, 0, 0 ); - QSpacerItem* spacer = new QSpacerItem( 0, 80, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout1->addItem( spacer, 5, 2 ); - - PushButton3 = new QPushButton( GroupBox2, "PushButton3" ); - PushButton3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton3->sizePolicy().hasHeightForWidth() ) ); - PushButton3->setText( trUtf8( "" ) ); - - Layout2->addWidget( PushButton3, 0, 1 ); - - LineEdit3 = new QLineEdit( GroupBox2, "LineEdit3" ); - - Layout2->addWidget( LineEdit3, 0, 2 ); - - - TextLabel5 = new QLabel( GroupBox2, "TextLabel5" ); - TextLabel5->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel5->sizePolicy().hasHeightForWidth() ) ); - TextLabel5->setText( trUtf8( "TL5" ) ); - - Layout2->addWidget( TextLabel5, 1, 0 ); - - PushButton4 = new QPushButton( GroupBox2, "PushButton4" ); - PushButton4->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton4->sizePolicy().hasHeightForWidth() ) ); - PushButton4->setText( trUtf8( "" ) ); - - Layout2->addWidget( PushButton4, 1, 1 ); - - LineEdit4 = new QLineEdit( GroupBox2, "LineEdit4" ); - - Layout2->addWidget( LineEdit4, 1, 2 ); - - GroupBox2Layout->addLayout( Layout2, 0, 0 ); - - DlgRef_4Sel1List_QTDLayout->addWidget( GroupBox2, 1, 0 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_4Sel1List_QTD::~DlgRef_4Sel1List_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/DlgRef/DlgRef_4Sel1List_QTD.h b/src/DlgRef/DlgRef_4Sel1List_QTD.h deleted file mode 100644 index d8390e2a2..000000000 --- a/src/DlgRef/DlgRef_4Sel1List_QTD.h +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'DlgRef_4Sel1List_QTD.ui' -** -** Created: lun oct 27 17:21:03 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef DLGREF_4SEL1LIST_QTD_H -#define DLGREF_4SEL1LIST_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QComboBox; -class QGroupBox; -class QLabel; -class QLineEdit; -class QPushButton; - -class DlgRef_4Sel1List_QTD : public QWidget -{ - Q_OBJECT - -public: - DlgRef_4Sel1List_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~DlgRef_4Sel1List_QTD(); - - QGroupBox* GroupBox1; - QGroupBox* GroupBox2; - QLineEdit* LineEdit2; - QPushButton* PushButton4; - QPushButton* PushButton1; - QLineEdit* LineEdit4; - QPushButton* PushButton3; - QPushButton* PushButton2; - QLabel* TextLabel1; - QLabel* TextLabel4; - QLineEdit* LineEdit1; - QLabel* TextLabel5; - QLineEdit* LineEdit3; - QLabel* TextLabel2; - QComboBox* ComboBox1; - QLabel* TextLabel3; - - -protected: - QGridLayout* DlgRef_4Sel1List_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* GroupBox2Layout; - QGridLayout* Layout1; - QGridLayout* Layout2; -}; - -#endif // DLGREF_4SEL1LIST_QTD_H diff --git a/src/DlgRef/DlgRef_6Sel_QTD.cxx b/src/DlgRef/DlgRef_6Sel_QTD.cxx deleted file mode 100644 index 238416e69..000000000 --- a/src/DlgRef/DlgRef_6Sel_QTD.cxx +++ /dev/null @@ -1,152 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'DlgRef_6Sel_QTD.ui' -** -** Created: Tue Aug 24 18:18:57 2004 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "DlgRef_6Sel_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a DlgRef_6Sel_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -DlgRef_6Sel_QTD::DlgRef_6Sel_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "DlgRef_6Sel_QTD" ); - resize( 235, 196 ); - setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)7, 0, 0, sizePolicy().hasHeightForWidth() ) ); - setCaption( trUtf8( "DlgRef_6Sel_QTD" ) ); - DlgRef_6Sel_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "DlgRef_6Sel_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setTitle( trUtf8( "" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - Layout1->addWidget( TextLabel1, 0, 0 ); - - TextLabel2 = new QLabel( GroupBox1, "TextLabel2" ); - TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) ); - TextLabel2->setText( trUtf8( "TL2" ) ); - - Layout1->addWidget( TextLabel2, 1, 0 ); - - TextLabel3 = new QLabel( GroupBox1, "TextLabel3" ); - TextLabel3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel3->sizePolicy().hasHeightForWidth() ) ); - TextLabel3->setText( trUtf8( "TL3" ) ); - - Layout1->addWidget( TextLabel3, 2, 0 ); - - TextLabel4 = new QLabel( GroupBox1, "TextLabel4" ); - TextLabel4->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel4->sizePolicy().hasHeightForWidth() ) ); - TextLabel4->setText( trUtf8( "TL4" ) ); - - Layout1->addWidget( TextLabel4, 3, 0 ); - - TextLabel5 = new QLabel( GroupBox1, "TextLabel5" ); - TextLabel5->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel5->sizePolicy().hasHeightForWidth() ) ); - TextLabel5->setText( trUtf8( "TL5" ) ); - - Layout1->addWidget( TextLabel5, 4, 0 ); - - TextLabel6 = new QLabel( GroupBox1, "TextLabel6" ); - TextLabel6->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel6->sizePolicy().hasHeightForWidth() ) ); - TextLabel6->setText( trUtf8( "TL6" ) ); - - Layout1->addWidget( TextLabel6, 5, 0 ); - - PushButton1 = new QPushButton( GroupBox1, "PushButton1" ); - PushButton1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton1->sizePolicy().hasHeightForWidth() ) ); - PushButton1->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton1, 0, 1 ); - - PushButton2 = new QPushButton( GroupBox1, "PushButton2" ); - PushButton2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton2->sizePolicy().hasHeightForWidth() ) ); - PushButton2->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton2, 1, 1 ); - - PushButton3 = new QPushButton( GroupBox1, "PushButton3" ); - PushButton3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton3->sizePolicy().hasHeightForWidth() ) ); - PushButton3->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton3, 2, 1 ); - - PushButton4 = new QPushButton( GroupBox1, "PushButton4" ); - PushButton4->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton4->sizePolicy().hasHeightForWidth() ) ); - PushButton4->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton4, 3, 1 ); - - PushButton5 = new QPushButton( GroupBox1, "PushButton5" ); - PushButton5->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton5->sizePolicy().hasHeightForWidth() ) ); - PushButton5->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton5, 4, 1 ); - - PushButton6 = new QPushButton( GroupBox1, "PushButton6" ); - PushButton6->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton6->sizePolicy().hasHeightForWidth() ) ); - PushButton6->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton6, 5, 1 ); - - LineEdit1 = new QLineEdit( GroupBox1, "LineEdit1" ); - - Layout1->addWidget( LineEdit1, 0, 2 ); - - LineEdit2 = new QLineEdit( GroupBox1, "LineEdit2" ); - - Layout1->addWidget( LineEdit2, 1, 2 ); - - LineEdit3 = new QLineEdit( GroupBox1, "LineEdit3" ); - - Layout1->addWidget( LineEdit3, 2, 2 ); - - LineEdit4 = new QLineEdit( GroupBox1, "LineEdit4" ); - - Layout1->addWidget( LineEdit4, 3, 2 ); - - LineEdit5 = new QLineEdit( GroupBox1, "LineEdit5" ); - - Layout1->addWidget( LineEdit5, 4, 2 ); - - LineEdit6 = new QLineEdit( GroupBox1, "LineEdit6" ); - - Layout1->addWidget( LineEdit6, 5, 2 ); - - GroupBox1Layout->addLayout( Layout1, 0, 0 ); - - DlgRef_6Sel_QTDLayout->addWidget( GroupBox1, 0, 0 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_6Sel_QTD::~DlgRef_6Sel_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/DlgRef/DlgRef_6Sel_QTD.h b/src/DlgRef/DlgRef_6Sel_QTD.h deleted file mode 100644 index a80bc433a..000000000 --- a/src/DlgRef/DlgRef_6Sel_QTD.h +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'DlgRef_6Sel_QTD.ui' -** -** Created: Tue Aug 24 18:18:28 2004 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef DLGREF_6SEL_QTD_H -#define DLGREF_6SEL_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QGroupBox; -class QLabel; -class QLineEdit; -class QPushButton; - -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif - -class DLGREF_WNT_EXPORT DlgRef_6Sel_QTD : public QWidget -{ - Q_OBJECT - -public: - DlgRef_6Sel_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~DlgRef_6Sel_QTD(); - - QGroupBox* GroupBox1; - QLabel* TextLabel1; - QLabel* TextLabel2; - QLabel* TextLabel3; - QLabel* TextLabel4; - QLabel* TextLabel5; - QLabel* TextLabel6; - QPushButton* PushButton1; - QPushButton* PushButton2; - QPushButton* PushButton3; - QPushButton* PushButton4; - QPushButton* PushButton5; - QPushButton* PushButton6; - QLineEdit* LineEdit1; - QLineEdit* LineEdit2; - QLineEdit* LineEdit3; - QLineEdit* LineEdit4; - QLineEdit* LineEdit5; - QLineEdit* LineEdit6; - - -protected: - QGridLayout* DlgRef_6Sel_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* Layout1; -}; - -#endif // DLGREF_6SEL_QTD_H diff --git a/src/DlgRef/DlgRef_Skeleton_QTD.cxx b/src/DlgRef/DlgRef_Skeleton_QTD.cxx deleted file mode 100644 index b612a9a42..000000000 --- a/src/DlgRef/DlgRef_Skeleton_QTD.cxx +++ /dev/null @@ -1,139 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'DlgRef_Skeleton_QTD.ui' -** -** Created: Wed Aug 11 18:42:51 2004 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "DlgRef_Skeleton_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a DlgRef_Skeleton_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - * - * The dialog will by default be modeless, unless you set 'modal' to - * TRUE to construct a modal dialog. - */ -DlgRef_Skeleton_QTD::DlgRef_Skeleton_QTD( QWidget* parent, const char* name, bool modal, WFlags fl ) - : QDialog( parent, name, modal, fl ) -{ - if ( !name ) - setName( "DlgRef_Skeleton_QTD" ); - resize( 307, 378 ); - setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)7, 0, 0, sizePolicy().hasHeightForWidth() ) ); - setCaption( trUtf8( "DlgRef_Skeleton_QTD" ) ); - setSizeGripEnabled( TRUE ); - DlgRef_Skeleton_QTDLayout = new QGridLayout( this, 1, 1, 11, 6, "DlgRef_Skeleton_QTDLayout"); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - - GroupMedium = new QGroupBox( this, "GroupMedium" ); - GroupMedium->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)7, 0, 0, GroupMedium->sizePolicy().hasHeightForWidth() ) ); - GroupMedium->setTitle( trUtf8( "" ) ); - - Layout1->addWidget( GroupMedium, 2, 0 ); - - GroupButtons = new QGroupBox( this, "GroupButtons" ); - GroupButtons->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, GroupButtons->sizePolicy().hasHeightForWidth() ) ); - GroupButtons->setTitle( trUtf8( "" ) ); - GroupButtons->setColumnLayout(0, Qt::Vertical ); - GroupButtons->layout()->setSpacing( 6 ); - GroupButtons->layout()->setMargin( 11 ); - GroupButtonsLayout = new QHBoxLayout( GroupButtons->layout() ); - GroupButtonsLayout->setAlignment( Qt::AlignTop ); - - Layout3 = new QHBoxLayout( 0, 0, 6, "Layout3"); - - buttonOk = new QPushButton( GroupButtons, "buttonOk" ); - buttonOk->setText( trUtf8( "&Ok" ) ); - Layout3->addWidget( buttonOk ); - - buttonApply = new QPushButton( GroupButtons, "buttonApply" ); - buttonApply->setText( trUtf8( "&Apply" ) ); - Layout3->addWidget( buttonApply ); - QSpacerItem* spacer = new QSpacerItem( 91, 0, QSizePolicy::Expanding, QSizePolicy::Minimum ); - Layout3->addItem( spacer ); - - buttonCancel = new QPushButton( GroupButtons, "buttonCancel" ); - buttonCancel->setText( trUtf8( "&Cancel" ) ); - Layout3->addWidget( buttonCancel ); - GroupButtonsLayout->addLayout( Layout3 ); - - Layout1->addWidget( GroupButtons, 3, 0 ); - - GroupConstructors = new QButtonGroup( this, "GroupConstructors" ); - GroupConstructors->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)0, 0, 0, GroupConstructors->sizePolicy().hasHeightForWidth() ) ); - GroupConstructors->setTitle( trUtf8( "" ) ); - GroupConstructors->setColumnLayout(0, Qt::Vertical ); - GroupConstructors->layout()->setSpacing( 6 ); - GroupConstructors->layout()->setMargin( 11 ); - GroupConstructorsLayout = new QHBoxLayout( GroupConstructors->layout() ); - GroupConstructorsLayout->setAlignment( Qt::AlignTop ); - - Layout2 = new QHBoxLayout( 0, 0, 6, "Layout2"); - - RadioButton1 = new QRadioButton( GroupConstructors, "RadioButton1" ); - RadioButton1->setText( trUtf8( "" ) ); - Layout2->addWidget( RadioButton1 ); - - RadioButton2 = new QRadioButton( GroupConstructors, "RadioButton2" ); - RadioButton2->setText( trUtf8( "" ) ); - Layout2->addWidget( RadioButton2 ); - - RadioButton3 = new QRadioButton( GroupConstructors, "RadioButton3" ); - RadioButton3->setText( trUtf8( "" ) ); - Layout2->addWidget( RadioButton3 ); - - RadioButton4 = new QRadioButton( GroupConstructors, "RadioButton4" ); - RadioButton4->setText( trUtf8( "" ) ); - Layout2->addWidget( RadioButton4 ); - GroupConstructorsLayout->addLayout( Layout2 ); - - Layout1->addWidget( GroupConstructors, 0, 0 ); - - GroupBoxName = new QGroupBox( this, "GroupBoxName" ); - GroupBoxName->setTitle( trUtf8( "Result name" ) ); - GroupBoxName->setColumnLayout(0, Qt::Vertical ); - GroupBoxName->layout()->setSpacing( 6 ); - GroupBoxName->layout()->setMargin( 11 ); - GroupBoxNameLayout = new QGridLayout( GroupBoxName->layout() ); - GroupBoxNameLayout->setAlignment( Qt::AlignTop ); - - Layout66 = new QGridLayout( 0, 1, 1, 0, 6, "Layout66"); - - ResultName = new QLineEdit( GroupBoxName, "ResultName" ); - - Layout66->addWidget( ResultName, 0, 1 ); - - NameLabel = new QLabel( GroupBoxName, "NameLabel" ); - NameLabel->setText( trUtf8( "Name" ) ); - - Layout66->addWidget( NameLabel, 0, 0 ); - - GroupBoxNameLayout->addLayout( Layout66, 0, 0 ); - - Layout1->addWidget( GroupBoxName, 1, 0 ); - - DlgRef_Skeleton_QTDLayout->addLayout( Layout1, 0, 0 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -DlgRef_Skeleton_QTD::~DlgRef_Skeleton_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/DlgRef/DlgRef_Skeleton_QTD.h b/src/DlgRef/DlgRef_Skeleton_QTD.h deleted file mode 100644 index d1a2e3cf9..000000000 --- a/src/DlgRef/DlgRef_Skeleton_QTD.h +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'DlgRef_Skeleton_QTD.ui' -** -** Created: Wed Aug 11 18:42:51 2004 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef DLGREF_SKELETON_QTD_H -#define DLGREF_SKELETON_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QButtonGroup; -class QGroupBox; -class QLabel; -class QLineEdit; -class QPushButton; -class QRadioButton; - -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif - -class DLGREF_WNT_EXPORT DlgRef_Skeleton_QTD : public QDialog -{ - Q_OBJECT - -public: - DlgRef_Skeleton_QTD( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); - ~DlgRef_Skeleton_QTD(); - - QGroupBox* GroupMedium; - QGroupBox* GroupButtons; - QPushButton* buttonOk; - QPushButton* buttonApply; - QPushButton* buttonCancel; - QButtonGroup* GroupConstructors; - QRadioButton* RadioButton1; - QRadioButton* RadioButton2; - QRadioButton* RadioButton3; - QRadioButton* RadioButton4; - QGroupBox* GroupBoxName; - QLineEdit* ResultName; - QLabel* NameLabel; - - -protected: - QGridLayout* DlgRef_Skeleton_QTDLayout; - QGridLayout* Layout1; - QHBoxLayout* GroupButtonsLayout; - QHBoxLayout* Layout3; - QHBoxLayout* GroupConstructorsLayout; - QHBoxLayout* Layout2; - QGridLayout* GroupBoxNameLayout; - QGridLayout* Layout66; -}; - -#endif // DLGREF_SKELETON_QTD_H diff --git a/src/DlgRef/DlgRef_SpinBox.cxx b/src/DlgRef/DlgRef_SpinBox.cxx deleted file mode 100644 index fde1b235e..000000000 --- a/src/DlgRef/DlgRef_SpinBox.cxx +++ /dev/null @@ -1,102 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_SpinBox.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "DlgRef_SpinBox.h" - -#include - -//================================================================================= -// class : DlgRef_SpinBox() -// purpose : constructor of specific widget accepting floats in double precision. -//================================================================================= -DlgRef_SpinBox::DlgRef_SpinBox(QWidget* parent, const char* name) - : QtxDblSpinBox(parent, name) -{ -} - - -//================================================================================= -// function : ~DlgRef_SpinBox() -// purpose : destructor -//================================================================================= -DlgRef_SpinBox::~DlgRef_SpinBox() -{ -} - - -//================================================================================= -// function : SetStep() [SLOT] -// purpose : -//================================================================================= -void DlgRef_SpinBox::SetStep(double newStep) -{ - setLineStep(newStep); -} - - -//================================================================================= -// function : SetValue() -// purpose : -//================================================================================= -void DlgRef_SpinBox::SetValue(double v) -{ - setValue(v); -} - - -//================================================================================= -// function : GetValue() -// purpose : returns a double -//================================================================================= -double DlgRef_SpinBox::GetValue() -{ - return value(); -} - - -//================================================================================= -// function : GetString() -// purpose : returns a QString -//================================================================================= -QString DlgRef_SpinBox::GetString() -{ - return cleanText(); -} - - -//================================================================================= -// function : RangeStepAndValidator() -// purpose : -//================================================================================= -void DlgRef_SpinBox::RangeStepAndValidator(double min, double max,double step, - unsigned short decimals) -{ - setRange(min, max); - setLineStep(step); - ((QDoubleValidator*)validator())->setRange(min, max, decimals); -} diff --git a/src/DlgRef/DlgRef_SpinBox.h b/src/DlgRef/DlgRef_SpinBox.h deleted file mode 100644 index e2c3f96a6..000000000 --- a/src/DlgRef/DlgRef_SpinBox.h +++ /dev/null @@ -1,66 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : DlgRef_SpinBox.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef GEOMSPINBOX_H -#define GEOMSPINBOX_H - -#include "QtxDblSpinBox.h" -//#if defined WNT -//#include -//#else -//#define SALOME_WNT_EXPORT -//#endif -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define DLGREF_WNT_EXPORT __declspec( dllexport ) -#else -#define DLGREF_WNT_EXPORT -#endif -//================================================================================= -// class : DlgRef_SpinBox -// purpose : Derivated from QSpinBox class and modified to accept floats -//================================================================================= -class DLGREF_WNT_EXPORT DlgRef_SpinBox : public QtxDblSpinBox -{ - Q_OBJECT - -public : - DlgRef_SpinBox(QWidget* parent, const char* name = 0); - ~DlgRef_SpinBox(); - - void RangeStepAndValidator(double min = -1000000.0, double max = +1000000.0, - double step = 100.0, unsigned short decimals = 3); - void SetValue(double v); - double GetValue(); - QString GetString(); - -public slots: - void SetStep(double newStep); - -}; - -#endif // GEOMSPINBOX_H diff --git a/src/DlgRef/Makefile.in b/src/DlgRef/Makefile.in deleted file mode 100644 index 9cafbd1cd..000000000 --- a/src/DlgRef/Makefile.in +++ /dev/null @@ -1,157 +0,0 @@ -# GEOM DLGREF : -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Author : Damien COQUERET (OCC) -# Module : GEOM -# $Header: - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -# Libraries targets -LIB = libDlgRef.la - -LIB_SRC = DlgRef_Skeleton_QTD.cxx \ - DlgRef_1Sel_QTD.cxx \ - DlgRef_2Sel_QTD.cxx \ - DlgRef_3Sel_QTD.cxx \ - DlgRef_1Sel1Check_QTD.cxx \ - DlgRef_1Sel3Check_QTD.cxx \ - DlgRef_1Sel1Check1List_QTD.cxx \ - DlgRef_1Sel1Spin_QTD.cxx \ - DlgRef_1Sel2Spin_QTD.cxx \ - DlgRef_1Sel3Spin_QTD.cxx \ - DlgRef_1Sel4Spin_QTD.cxx \ - DlgRef_1Sel5Spin_QTD.cxx \ - DlgRef_2Sel1Spin_QTD.cxx \ - DlgRef_2Sel2Spin_QTD.cxx \ - DlgRef_2Sel3Spin_QTD.cxx \ - DlgRef_1Sel1Spin1Check_QTD.cxx \ - DlgRef_2Sel1Spin2Check_QTD.cxx \ - DlgRef_2Sel2Spin1Check_QTD.cxx \ - DlgRef_2Sel4Spin1Check_QTD.cxx \ - DlgRef_3Sel4Spin2Check_QTD.cxx \ - DlgRef_4Sel1List_QTD.cxx \ - DlgRef_1List1Spin1Btn_QTD.cxx \ - DlgRef_4Sel1List1Check_QTD.cxx \ - DlgRef_1Spin_QTD.cxx \ - DlgRef_2Spin_QTD.cxx \ - DlgRef_3Spin_QTD.cxx \ - DlgRef_3Spin1Check_QTD.cxx \ - DlgRef_3Sel3Spin1Check_QTD.cxx \ - DlgRef_SpinBox.cxx \ - DlgRef_1Sel1Spin.cxx \ - DlgRef_1Sel2Spin.cxx \ - DlgRef_1Sel3Spin.cxx \ - DlgRef_1Sel4Spin.cxx \ - DlgRef_1Sel5Spin.cxx \ - DlgRef_2Sel1Spin.cxx \ - DlgRef_2Sel2Spin.cxx \ - DlgRef_2Sel3Spin.cxx \ - DlgRef_1Sel1Spin1Check.cxx \ - DlgRef_2Sel1Spin2Check.cxx \ - DlgRef_2Sel2Spin1Check.cxx \ - DlgRef_2Sel4Spin1Check.cxx \ - DlgRef_3Sel4Spin2Check.cxx \ - DlgRef_3Sel3Spin1Check.cxx \ - DlgRef_1Spin.cxx \ - DlgRef_2Spin.cxx \ - DlgRef_3Spin.cxx \ - DlgRef_3Spin1Check.cxx \ - DlgRef_3Sel1Spin.cxx \ - DlgRef_3Check_QTD.cxx \ - DlgRef_6Sel_QTD.cxx - -LIB_MOC = \ - DlgRef_Skeleton_QTD.h \ - DlgRef_1Sel_QTD.h \ - DlgRef_2Sel_QTD.h \ - DlgRef_3Sel_QTD.h \ - DlgRef_1Sel1Check_QTD.h \ - DlgRef_1Sel3Check_QTD.h \ - DlgRef_1Sel1Check1List_QTD.h \ - DlgRef_1Sel1Spin_QTD.h \ - DlgRef_1Sel2Spin_QTD.h \ - DlgRef_1Sel3Spin_QTD.h \ - DlgRef_1Sel4Spin_QTD.h \ - DlgRef_1Sel5Spin_QTD.h \ - DlgRef_2Sel1Spin_QTD.h \ - DlgRef_2Sel2Spin_QTD.h \ - DlgRef_2Sel3Spin_QTD.h \ - DlgRef_1Sel1Spin1Check_QTD.h \ - DlgRef_2Sel1Spin2Check_QTD.h \ - DlgRef_2Sel2Spin1Check_QTD.h \ - DlgRef_2Sel4Spin1Check_QTD.h \ - DlgRef_3Sel4Spin2Check_QTD.h \ - DlgRef_4Sel1List_QTD.h \ - DlgRef_1List1Spin1Btn_QTD.h \ - DlgRef_4Sel1List1Check_QTD.h \ - DlgRef_1Spin_QTD.h \ - DlgRef_2Spin_QTD.h \ - DlgRef_3Spin_QTD.h \ - DlgRef_3Spin1Check_QTD.h \ - DlgRef_3Sel3Spin1Check_QTD.h \ - DlgRef_SpinBox.h \ - DlgRef_1Sel1Spin.h \ - DlgRef_1Sel2Spin.h \ - DlgRef_1Sel3Spin.h \ - DlgRef_1Sel4Spin.h \ - DlgRef_1Sel5Spin.h \ - DlgRef_2Sel1Spin.h \ - DlgRef_2Sel2Spin.h \ - DlgRef_2Sel3Spin.h \ - DlgRef_1Sel1Spin1Check.h \ - DlgRef_2Sel1Spin2Check.h \ - DlgRef_2Sel2Spin1Check.h \ - DlgRef_2Sel4Spin1Check.h \ - DlgRef_3Sel4Spin2Check.h \ - DlgRef_3Sel3Spin1Check.h \ - DlgRef_1Spin.h \ - DlgRef_2Spin.h \ - DlgRef_3Spin.h \ - DlgRef_3Spin1Check.h \ - DlgRef_3Sel1Spin.h \ - DlgRef_1Sel_Ext.h \ - DlgRef_3Check_QTD.h \ - DlgRef_6Sel_QTD.h - -# header files -EXPORT_HEADERS= $(LIB_MOC) - -LIB_CLIENT_IDL = - -LIB_SERVER_IDL = - -# additionnal information to compil and link file -CPPFLAGS += $(QT_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome -CXXFLAGS += -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome - -LDFLAGS += $(QT_MT_LIBS) -L${GUI_ROOT_DIR}/lib/salome -lqtx - -@CONCLUDE@ diff --git a/src/DlgRef/UIFiles/DlgRef_1List1Spin1Btn_QTD.ui b/src/DlgRef/UIFiles/DlgRef_1List1Spin1Btn_QTD.ui deleted file mode 100644 index 6366a74a7..000000000 --- a/src/DlgRef/UIFiles/DlgRef_1List1Spin1Btn_QTD.ui +++ /dev/null @@ -1,93 +0,0 @@ - -DlgRef_1List1Spin1Btn_QTD - - - DlgRef_1List1Spin1Btn_QTD - - - - 0 - 0 - 204 - 148 - - - - DlgRef_3Sel4Spin2Check_QTD - - - - unnamed - - - 11 - - - 6 - - - - GroupBox1 - - - - - - - unnamed - - - 11 - - - 6 - - - - Spacer1 - - - Vertical - - - Expanding - - - - 0 - 23 - - - - - - ListView1 - - - - - TextLabel1 - - - TL1 - - - - - SpinBox1 - - - - - PushButton1 - - - - - - - - - - - diff --git a/src/DlgRef/UIFiles/DlgRef_1Sel1Check1List_QTD.ui b/src/DlgRef/UIFiles/DlgRef_1Sel1Check1List_QTD.ui deleted file mode 100644 index 677fe88ff..000000000 --- a/src/DlgRef/UIFiles/DlgRef_1Sel1Check1List_QTD.ui +++ /dev/null @@ -1,157 +0,0 @@ - -DlgRef_1Sel1Check1List_QTD - - - DlgRef_1Sel1Check1List_QTD - - - - 0 - 0 - 129 - 104 - - - - DlgRef_1Sel1Check1List_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - Spacer5 - - - Vertical - - - Expanding - - - - 0 - 166 - - - - - - CheckButton1 - - - - - - - - TextLabel2 - - - - 0 - 0 - 0 - 0 - - - - TL2 - - - - - ComboBox1 - - - - 7 - 0 - 0 - 0 - - - - - - LineEdit1 - - - - - TextLabel1 - - - - 0 - 0 - 0 - 0 - - - - TL1 - - - - - PushButton1 - - - - 0 - 0 - 0 - 0 - - - - - - - - - - - - - - diff --git a/src/DlgRef/UIFiles/DlgRef_1Sel1Check_QTD.ui b/src/DlgRef/UIFiles/DlgRef_1Sel1Check_QTD.ui deleted file mode 100644 index f86081355..000000000 --- a/src/DlgRef/UIFiles/DlgRef_1Sel1Check_QTD.ui +++ /dev/null @@ -1,133 +0,0 @@ - -DlgRef_1Sel1Check_QTD - - - DlgRef_1Sel1Check_QTD - - - - 0 - 0 - 382 - 219 - - - - DlgRef_1Sel1Check_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout3 - - - - unnamed - - - 0 - - - 6 - - - - TextLabel1 - - - - 0 - 0 - 0 - 0 - - - - TL1 - - - - - PushButton1 - - - - 0 - 0 - 0 - 0 - - - - - - - - - CheckButton1 - - - - - - - - Spacer5 - - - Vertical - - - Expanding - - - - 0 - 16 - - - - - - LineEdit1 - - - - - - - - - - PushButton1 - LineEdit1 - CheckButton1 - - - diff --git a/src/DlgRef/UIFiles/DlgRef_1Sel1Spin1Check_QTD.ui b/src/DlgRef/UIFiles/DlgRef_1Sel1Spin1Check_QTD.ui deleted file mode 100644 index c90e9c67e..000000000 --- a/src/DlgRef/UIFiles/DlgRef_1Sel1Spin1Check_QTD.ui +++ /dev/null @@ -1,179 +0,0 @@ - -DlgRef_1Sel1Spin1Check_QTD - - - DlgRef_1Sel1Spin1Check_QTD - - - - 0 - 0 - 163 - 109 - - - - DlgRef_1Sel1Spin1Check_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout8 - - - - unnamed - - - 0 - - - 6 - - - - Layout2 - - - - unnamed - - - 0 - - - 6 - - - - SpinBox1 - - - - 7 - 0 - 0 - 0 - - - - - - TextLabel2 - - - - 0 - 0 - 0 - 0 - - - - TL2 - - - - - - - TextLabel1 - - - - 0 - 0 - 0 - 0 - - - - TL1 - - - - - LineEdit1 - - - - - PushButton1 - - - - 0 - 0 - 0 - 0 - - - - - - - - - CheckButton1 - - - - - - - - Spacer5 - - - Vertical - - - Expanding - - - - 0 - 16 - - - - - - - - - - - PushButton1 - LineEdit1 - SpinBox1 - CheckButton1 - - - diff --git a/src/DlgRef/UIFiles/DlgRef_1Sel1Spin_QTD.ui b/src/DlgRef/UIFiles/DlgRef_1Sel1Spin_QTD.ui deleted file mode 100644 index e3551d166..000000000 --- a/src/DlgRef/UIFiles/DlgRef_1Sel1Spin_QTD.ui +++ /dev/null @@ -1,165 +0,0 @@ - -DlgRef_1Sel1Spin_QTD - - - DlgRef_1Sel1Spin_QTD - - - - 0 - 0 - 129 - 87 - - - - DlgRef_1Sel1Spin_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - PushButton1 - - - - 0 - 0 - 0 - 0 - - - - - - - - - TextLabel1 - - - - 0 - 0 - 0 - 0 - - - - TL1 - - - - - LineEdit1 - - - - - Layout2 - - - - unnamed - - - 0 - - - 6 - - - - TextLabel2 - - - - 0 - 0 - 0 - 0 - - - - TL2 - - - - - SpinBox1 - - - - 7 - 0 - 0 - 0 - - - - - - - - Spacer7 - - - Vertical - - - Expanding - - - - 0 - 16 - - - - - - - - - - - diff --git a/src/DlgRef/UIFiles/DlgRef_1Sel2Spin_QTD.ui b/src/DlgRef/UIFiles/DlgRef_1Sel2Spin_QTD.ui deleted file mode 100644 index 641264bb6..000000000 --- a/src/DlgRef/UIFiles/DlgRef_1Sel2Spin_QTD.ui +++ /dev/null @@ -1,194 +0,0 @@ - -DlgRef_1Sel2Spin_QTD - - - DlgRef_1Sel2Spin_QTD - - - - 0 - 0 - 129 - 115 - - - - DlgRef_1Sel2Spin_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - Layout2 - - - - unnamed - - - 0 - - - 6 - - - - TextLabel3 - - - - 0 - 0 - 0 - 0 - - - - TL3 - - - - - SpinBox1 - - - - 7 - 0 - 0 - 0 - - - - - - TextLabel2 - - - - 0 - 0 - 0 - 0 - - - - TL2 - - - - - SpinBox2 - - - - 7 - 0 - 0 - 0 - - - - - - - - LineEdit1 - - - - - Spacer7 - - - Vertical - - - Expanding - - - - 0 - 30 - - - - - - PushButton1 - - - - 0 - 0 - 0 - 0 - - - - - - - - - TextLabel1 - - - - 0 - 0 - 0 - 0 - - - - TL1 - - - - - - - - - - diff --git a/src/DlgRef/UIFiles/DlgRef_1Sel3Check_QTD.ui b/src/DlgRef/UIFiles/DlgRef_1Sel3Check_QTD.ui deleted file mode 100644 index c2e482a23..000000000 --- a/src/DlgRef/UIFiles/DlgRef_1Sel3Check_QTD.ui +++ /dev/null @@ -1,151 +0,0 @@ - -DlgRef_1Sel3Check_QTD - - - DlgRef_1Sel3Check_QTD - - - - 0 - 0 - 163 - 116 - - - - DlgRef_1Sel3Check_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout6 - - - - unnamed - - - 0 - - - 6 - - - - Spacer5 - - - Vertical - - - Expanding - - - - 0 - 16 - - - - - - LineEdit1 - - - - - CheckButton2 - - - - - - - - CheckButton1 - - - - - - - - CheckButton3 - - - - - - - - PushButton1 - - - - 0 - 0 - 0 - 0 - - - - - - - - - TextLabel1 - - - - 0 - 0 - 0 - 0 - - - - TL1 - - - - - - - - - - PushButton1 - LineEdit1 - CheckButton1 - CheckButton2 - CheckButton3 - - - diff --git a/src/DlgRef/UIFiles/DlgRef_1Sel3Spin_QTD.ui b/src/DlgRef/UIFiles/DlgRef_1Sel3Spin_QTD.ui deleted file mode 100644 index de8d35e33..000000000 --- a/src/DlgRef/UIFiles/DlgRef_1Sel3Spin_QTD.ui +++ /dev/null @@ -1,223 +0,0 @@ - -DlgRef_1Sel3Spin_QTD - - - DlgRef_1Sel3Spin_QTD - - - - 0 - 0 - 129 - 143 - - - - DlgRef_1Sel3Spin_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - TextLabel1 - - - - 0 - 0 - 0 - 0 - - - - TL1 - - - - - PushButton1 - - - - 0 - 0 - 0 - 0 - - - - - - - - - LineEdit1 - - - - - Spacer6 - - - Vertical - - - Expanding - - - - 0 - 150 - - - - - - Layout2 - - - - unnamed - - - 0 - - - 6 - - - - SpinBox2 - - - - 7 - 0 - 0 - 0 - - - - - - TextLabel3 - - - - 0 - 0 - 0 - 0 - - - - TL3 - - - - - SpinBox3 - - - - 7 - 0 - 0 - 0 - - - - - - SpinBox1 - - - - 7 - 0 - 0 - 0 - - - - - - TextLabel4 - - - - 0 - 0 - 0 - 0 - - - - TL4 - - - - - TextLabel2 - - - - 0 - 0 - 0 - 0 - - - - TL2 - - - - - - - - - - - - diff --git a/src/DlgRef/UIFiles/DlgRef_1Sel4Spin_QTD.ui b/src/DlgRef/UIFiles/DlgRef_1Sel4Spin_QTD.ui deleted file mode 100644 index 49a0cd1c2..000000000 --- a/src/DlgRef/UIFiles/DlgRef_1Sel4Spin_QTD.ui +++ /dev/null @@ -1,292 +0,0 @@ - -DlgRef_1Sel4Spin_QTD - - - DlgRef_1Sel4Spin_QTD - - - - 0 - 0 - 284 - 119 - - - - DlgRef_1Sel4Spin_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - Layout3 - - - - unnamed - - - 0 - - - 6 - - - - TextLabel5 - - - - 0 - 0 - 0 - 0 - - - - TL5 - - - - - TextLabel3 - - - - 0 - 0 - 0 - 0 - - - - TL3 - - - - - TextLabel4 - - - - 0 - 0 - 0 - 0 - - - - TL4 - - - - - SpinBox3 - - - - 7 - 0 - 0 - 0 - - - - - - SpinBox1 - - - - 7 - 0 - 0 - 0 - - - - - - TextLabel2 - - - - 0 - 0 - 0 - 0 - - - - TL2 - - - - - SpinBox2 - - - - 7 - 0 - 0 - 0 - - - - - - - - Spacer6 - - - Vertical - - - Expanding - - - - 0 - 16 - - - - - - Layout4 - - - - unnamed - - - 0 - - - 6 - - - - TextLabel6 - - - - 0 - 0 - 0 - 0 - - - - TL6 - - - - - SpinBox4 - - - - - - - Layout2 - - - - unnamed - - - 0 - - - 6 - - - - TextLabel1 - - - - 0 - 0 - 0 - 0 - - - - TL1 - - - - - PushButton1 - - - - 0 - 0 - 0 - 0 - - - - - - - - - LineEdit1 - - - - - - - - - - - - diff --git a/src/DlgRef/UIFiles/DlgRef_1Sel5Spin_QTD.ui b/src/DlgRef/UIFiles/DlgRef_1Sel5Spin_QTD.ui deleted file mode 100644 index c1bca88db..000000000 --- a/src/DlgRef/UIFiles/DlgRef_1Sel5Spin_QTD.ui +++ /dev/null @@ -1,281 +0,0 @@ - -DlgRef_1Sel5Spin_QTD - - - DlgRef_1Sel5Spin_QTD - - - - 0 - 0 - 162 - 143 - - - - DlgRef_1Sel5Spin_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - TextLabel1 - - - - 0 - 0 - 0 - 0 - - - - TL1 - - - - - PushButton1 - - - - 0 - 0 - 0 - 0 - - - - - - - - - Layout2 - - - - unnamed - - - 0 - - - 6 - - - - SpinBox2 - - - - 7 - 0 - 0 - 0 - - - - - - SpinBox3 - - - - 7 - 0 - 0 - 0 - - - - - - TextLabel5 - - - - 0 - 0 - 0 - 0 - - - - TL5 - - - - - TextLabel3 - - - - 0 - 0 - 0 - 0 - - - - TL3 - - - - - TextLabel4 - - - - 0 - 0 - 0 - 0 - - - - TL4 - - - - - SpinBox4 - - - - 7 - 0 - 0 - 0 - - - - - - SpinBox1 - - - - 7 - 0 - 0 - 0 - - - - - - TextLabel6 - - - - 0 - 0 - 0 - 0 - - - - TL6 - - - - - TextLabel2 - - - - 0 - 0 - 0 - 0 - - - - TL2 - - - - - SpinBox5 - - - - 7 - 0 - 0 - 0 - - - - - - - - Spacer6 - - - Vertical - - - Expanding - - - - 0 - 120 - - - - - - LineEdit1 - - - - - - - - - - diff --git a/src/DlgRef/UIFiles/DlgRef_1Sel_QTD.ui b/src/DlgRef/UIFiles/DlgRef_1Sel_QTD.ui deleted file mode 100644 index 3816fd110..000000000 --- a/src/DlgRef/UIFiles/DlgRef_1Sel_QTD.ui +++ /dev/null @@ -1,128 +0,0 @@ - -DlgRef_1Sel_QTD - - - DlgRef_1Sel_QTD - - - - 0 - 0 - 129 - 57 - - - - DlgRef_1Sel_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - - 7 - 7 - 0 - 0 - - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - PushButton1 - - - - 0 - 0 - 0 - 0 - - - - - - - - - Spacer8 - - - Vertical - - - Expanding - - - - 0 - 16 - - - - - - LineEdit1 - - - - - TextLabel1 - - - - 0 - 0 - 0 - 0 - - - - TL1 - - - - - - - - - - diff --git a/src/DlgRef/UIFiles/DlgRef_1Spin_QTD.ui b/src/DlgRef/UIFiles/DlgRef_1Spin_QTD.ui deleted file mode 100644 index ddeca8757..000000000 --- a/src/DlgRef/UIFiles/DlgRef_1Spin_QTD.ui +++ /dev/null @@ -1,112 +0,0 @@ - -DlgRef_1Spin_QTD - - - DlgRef_1Spin_QTD - - - - 0 - 0 - 124 - 55 - - - - DlgRef_1Spin_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - Spacer1 - - - Vertical - - - Expanding - - - - 0 - 16 - - - - - - SpinBox1 - - - - 7 - 0 - 0 - 0 - - - - - - TextLabel1 - - - - 0 - 0 - 0 - 0 - - - - TL1 - - - - - - - - - - diff --git a/src/DlgRef/UIFiles/DlgRef_2Sel1Spin2Check_QTD.ui b/src/DlgRef/UIFiles/DlgRef_2Sel1Spin2Check_QTD.ui deleted file mode 100644 index a2e4e0ace..000000000 --- a/src/DlgRef/UIFiles/DlgRef_2Sel1Spin2Check_QTD.ui +++ /dev/null @@ -1,211 +0,0 @@ - -DlgRef_2Sel1Spin2Check_QTD - - - DlgRef_2Sel1Spin2Check_QTD - - - - 0 - 0 - 256 - 139 - - - - DlgRef_2Sel1Spin2Check_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - TextLabel2 - - - - 0 - 0 - 0 - 0 - - - - TL2 - - - - - PushButton1 - - - - 0 - 0 - 0 - 0 - - - - - - - - - TextLabel3 - - - - 0 - 0 - 0 - 0 - - - - TL3 - - - - - TextLabel1 - - - - 0 - 0 - 0 - 0 - - - - TL1 - - - - - Spacer5 - - - Vertical - - - Expanding - - - - 0 - 316 - - - - - - CheckButton2 - - - - - - - - LineEdit2 - - - - - PushButton2 - - - - 0 - 0 - 0 - 0 - - - - - - - - - LineEdit1 - - - - - CheckButton1 - - - - - - - - SpinBox1 - - - - 7 - 0 - 0 - 0 - - - - - - - - - - - PushButton1 - LineEdit1 - PushButton2 - LineEdit2 - SpinBox1 - CheckButton2 - CheckButton1 - - - diff --git a/src/DlgRef/UIFiles/DlgRef_2Sel1Spin_QTD.ui b/src/DlgRef/UIFiles/DlgRef_2Sel1Spin_QTD.ui deleted file mode 100644 index df952819a..000000000 --- a/src/DlgRef/UIFiles/DlgRef_2Sel1Spin_QTD.ui +++ /dev/null @@ -1,215 +0,0 @@ - -DlgRef_2Sel1Spin_QTD - - - DlgRef_2Sel1Spin_QTD - - - - 0 - 0 - 163 - 122 - - - - DlgRef_2Sel1Spin_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - LineEdit1 - - - - - PushButton2 - - - - 0 - 0 - 0 - 0 - - - - - - - - - TextLabel1 - - - - 0 - 0 - 0 - 0 - - - - TL1 - - - - - LineEdit2 - - - - - PushButton1 - - - - 0 - 0 - 0 - 0 - - - - - - - - - TextLabel2 - - - - 0 - 0 - 0 - 0 - - - - NoFrame - - - Plain - - - TL2 - - - - - Layout2 - - - - unnamed - - - 0 - - - 6 - - - - SpinBox1 - - - - 7 - 0 - 0 - 0 - - - - - - TextLabel3 - - - - 0 - 0 - 0 - 0 - - - - TL3 - - - - - - - Spacer5 - - - Vertical - - - Expanding - - - - 0 - 16 - - - - - - - - - - - PushButton1 - LineEdit1 - PushButton2 - LineEdit2 - SpinBox1 - - - diff --git a/src/DlgRef/UIFiles/DlgRef_2Sel2Spin1Check_QTD.ui b/src/DlgRef/UIFiles/DlgRef_2Sel2Spin1Check_QTD.ui deleted file mode 100644 index 1a97c8724..000000000 --- a/src/DlgRef/UIFiles/DlgRef_2Sel2Spin1Check_QTD.ui +++ /dev/null @@ -1,248 +0,0 @@ - -DlgRef_2Sel2Spin1Check_QTD - - - DlgRef_2Sel2Spin1Check_QTD - - - - 0 - 0 - 163 - 170 - - - - DlgRef_2Sel2Spin1Check_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - TextLabel2 - - - - 0 - 0 - 0 - 0 - - - - TL2 - - - - - TextLabel1 - - - - 0 - 0 - 0 - 0 - - - - TL1 - - - - - Layout2 - - - - unnamed - - - 0 - - - 6 - - - - SpinBox1 - - - - 7 - 0 - 0 - 0 - - - - - - TextLabel3 - - - - 0 - 0 - 0 - 0 - - - - TL3 - - - - - TextLabel4 - - - - 0 - 0 - 0 - 0 - - - - TL4 - - - - - SpinBox2 - - - - 7 - 0 - 0 - 0 - - - - - - - - LineEdit1 - - - - - Spacer1 - - - Vertical - - - Expanding - - - - 0 - 16 - - - - - - CheckButton1 - - - - - - - - LineEdit2 - - - - - PushButton2 - - - - 0 - 0 - 0 - 0 - - - - - - - - - PushButton1 - - - - 0 - 0 - 0 - 0 - - - - - - - - - - - - - - PushButton1 - LineEdit1 - PushButton2 - LineEdit2 - SpinBox1 - SpinBox2 - CheckButton1 - - - diff --git a/src/DlgRef/UIFiles/DlgRef_2Sel2Spin_QTD.ui b/src/DlgRef/UIFiles/DlgRef_2Sel2Spin_QTD.ui deleted file mode 100644 index b935dc89a..000000000 --- a/src/DlgRef/UIFiles/DlgRef_2Sel2Spin_QTD.ui +++ /dev/null @@ -1,231 +0,0 @@ - -DlgRef_2Sel2Spin_QTD - - - DlgRef_2Sel2Spin_QTD - - - - 0 - 0 - 129 - 145 - - - - DlgRef_2Sel2Spin_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - LineEdit1 - - - - - Layout2 - - - - unnamed - - - 0 - - - 6 - - - - SpinBox2 - - - - 7 - 0 - 0 - 0 - - - - - - TextLabel4 - - - - 0 - 0 - 0 - 0 - - - - TL4 - - - - - TextLabel3 - - - - 0 - 0 - 0 - 0 - - - - TL3 - - - - - SpinBox1 - - - - 7 - 0 - 0 - 0 - - - - - - - - PushButton2 - - - - 0 - 0 - 0 - 0 - - - - - - - - - TextLabel2 - - - - 0 - 0 - 0 - 0 - - - - TL2 - - - - - Spacer5 - - - Vertical - - - Expanding - - - - 0 - 20 - - - - - - TextLabel1 - - - - 0 - 0 - 0 - 0 - - - - TL1 - - - - - PushButton1 - - - - 0 - 0 - 0 - 0 - - - - - - - - - LineEdit2 - - - - - - - - - - diff --git a/src/DlgRef/UIFiles/DlgRef_2Sel3Spin_QTD.ui b/src/DlgRef/UIFiles/DlgRef_2Sel3Spin_QTD.ui deleted file mode 100644 index e51bd758a..000000000 --- a/src/DlgRef/UIFiles/DlgRef_2Sel3Spin_QTD.ui +++ /dev/null @@ -1,260 +0,0 @@ - -DlgRef_2Sel3Spin_QTD - - - DlgRef_2Sel3Spin_QTD - - - - 0 - 0 - 129 - 173 - - - - DlgRef_2Sel3Spin_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - LineEdit1 - - - - - TextLabel1 - - - - 0 - 0 - 0 - 0 - - - - TL1 - - - - - TextLabel2 - - - - 0 - 0 - 0 - 0 - - - - TL2 - - - - - Layout2 - - - - unnamed - - - 0 - - - 6 - - - - TextLabel3 - - - - 0 - 0 - 0 - 0 - - - - TL3 - - - - - SpinBox2 - - - - 7 - 0 - 0 - 0 - - - - - - TextLabel4 - - - - 0 - 0 - 0 - 0 - - - - TL4 - - - - - TextLabel5 - - - - 0 - 0 - 0 - 0 - - - - TL4 - - - - - SpinBox1 - - - - 7 - 0 - 0 - 0 - - - - - - SpinBox3 - - - - 7 - 0 - 0 - 0 - - - - - - - - PushButton1 - - - - 0 - 0 - 0 - 0 - - - - - - - - - Spacer5 - - - Vertical - - - Expanding - - - - 0 - 20 - - - - - - LineEdit2 - - - - - PushButton2 - - - - 0 - 0 - 0 - 0 - - - - - - - - - - - - - - diff --git a/src/DlgRef/UIFiles/DlgRef_2Sel4Spin1Check_QTD.ui b/src/DlgRef/UIFiles/DlgRef_2Sel4Spin1Check_QTD.ui deleted file mode 100644 index f148e2c89..000000000 --- a/src/DlgRef/UIFiles/DlgRef_2Sel4Spin1Check_QTD.ui +++ /dev/null @@ -1,324 +0,0 @@ - -DlgRef_2Sel4Spin1Check_QTD - - - DlgRef_2Sel4Spin1Check_QTD - - - - 0 - 0 - 262 - 230 - - - - DlgRef_2Sel4Spin1Check_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout5 - - - - unnamed - - - 0 - - - 6 - - - - PushButton1 - - - - 0 - 0 - 0 - 0 - - - - - - - - - CheckButton1 - - - - - - - - Layout2 - - - - unnamed - - - 0 - - - 6 - - - - TextLabel3 - - - - 0 - 0 - 0 - 0 - - - - TL3 - - - - - SpinBox1 - - - - 7 - 0 - 0 - 0 - - - - - - SpinBox2 - - - - 7 - 0 - 0 - 0 - - - - - - TextLabel4 - - - - 0 - 0 - 0 - 0 - - - - TL4 - - - - - - - LineEdit2 - - - - - TextLabel1 - - - - 0 - 0 - 0 - 0 - - - - TL1 - - - - - LineEdit1 - - - - - Spacer1 - - - Vertical - - - Expanding - - - - 0 - 16 - - - - - - PushButton2 - - - - 0 - 0 - 0 - 0 - - - - - - - - - TextLabel2 - - - - 0 - 0 - 0 - 0 - - - - TL2 - - - - - Layout3 - - - - unnamed - - - 0 - - - 6 - - - - SpinBox4 - - - - 7 - 0 - 0 - 0 - - - - - - TextLabel5 - - - - 0 - 0 - 0 - 0 - - - - TL5 - - - - - SpinBox3 - - - - 7 - 0 - 0 - 0 - - - - - - TextLabel6 - - - - 0 - 0 - 0 - 0 - - - - TL6 - - - - - - - - - - - - PushButton1 - LineEdit1 - PushButton2 - LineEdit2 - SpinBox1 - SpinBox2 - CheckButton1 - SpinBox3 - SpinBox4 - - - diff --git a/src/DlgRef/UIFiles/DlgRef_2Sel_QTD.ui b/src/DlgRef/UIFiles/DlgRef_2Sel_QTD.ui deleted file mode 100644 index 46e7f5b7e..000000000 --- a/src/DlgRef/UIFiles/DlgRef_2Sel_QTD.ui +++ /dev/null @@ -1,165 +0,0 @@ - -DlgRef_2Sel_QTD - - - DlgRef_2Sel_QTD - - - - 0 - 0 - 129 - 87 - - - - - 5 - 7 - 0 - 0 - - - - DlgRef_2Sel_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - PushButton1 - - - - 0 - 0 - 0 - 0 - - - - - - - - - Spacer3 - - - Vertical - - - Expanding - - - - 0 - 16 - - - - - - LineEdit2 - - - - - PushButton2 - - - - 0 - 0 - 0 - 0 - - - - - - - - - TextLabel1 - - - - 0 - 0 - 0 - 0 - - - - TL1 - - - - - TextLabel2 - - - - 0 - 0 - 0 - 0 - - - - TL2 - - - - - LineEdit1 - - - - - - - - - - diff --git a/src/DlgRef/UIFiles/DlgRef_2Spin_QTD.ui b/src/DlgRef/UIFiles/DlgRef_2Spin_QTD.ui deleted file mode 100644 index 3fe8a9fe0..000000000 --- a/src/DlgRef/UIFiles/DlgRef_2Spin_QTD.ui +++ /dev/null @@ -1,141 +0,0 @@ - -DlgRef_2Spin_QTD - - - DlgRef_2Spin_QTD - - - - 0 - 0 - 124 - 83 - - - - DlgRef_2Spin_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - SpinBox2 - - - - 7 - 0 - 0 - 0 - - - - - - Spacer1 - - - Vertical - - - Expanding - - - - 0 - 16 - - - - - - SpinBox1 - - - - 7 - 0 - 0 - 0 - - - - - - TextLabel1 - - - - 0 - 0 - 0 - 0 - - - - TL1 - - - - - TextLabel2 - - - - 0 - 0 - 0 - 0 - - - - TL2 - - - - - - - - - - diff --git a/src/DlgRef/UIFiles/DlgRef_3Check_QTD.ui b/src/DlgRef/UIFiles/DlgRef_3Check_QTD.ui deleted file mode 100644 index 9573bb295..000000000 --- a/src/DlgRef/UIFiles/DlgRef_3Check_QTD.ui +++ /dev/null @@ -1,112 +0,0 @@ - -DlgRef_3Check_QTD - - - DlgRef_3Check_QTD - - - - 0 - 0 - 135 - 108 - - - - DlgRef_3Check_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - RadioButton3 - - - RadioButton3 - - - - - RadioButton1 - - - RadioButton1 - - - - - RadioButton2 - - - RadioButton2 - - - - - Spacer1 - - - Vertical - - - Expanding - - - - 0 - 91 - - - - - - - - - - - RadioButton1 - RadioButton2 - RadioButton3 - - - diff --git a/src/DlgRef/UIFiles/DlgRef_3Sel3Spin1Check_QTD.ui b/src/DlgRef/UIFiles/DlgRef_3Sel3Spin1Check_QTD.ui deleted file mode 100644 index c48cc30c3..000000000 --- a/src/DlgRef/UIFiles/DlgRef_3Sel3Spin1Check_QTD.ui +++ /dev/null @@ -1,317 +0,0 @@ - -DlgRef_3Sel3Spin1Check_QTD - - - DlgRef_3Sel3Spin1Check_QTD - - - - 0 - 0 - 380 - 229 - - - - - 5 - 5 - 0 - 0 - - - - DlgRef_3Sel3Spin1Check_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - - 5 - 5 - 0 - 0 - - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - SpinBox_2 - - - - 7 - 0 - 0 - 0 - - - - - - LineEdit3 - - - - - SpinBox_3 - - - - 7 - 0 - 0 - 0 - - - - - - TextLabel1 - - - - 0 - 0 - 0 - 0 - - - - TL1 - - - - - TextLabel3 - - - - 0 - 0 - 0 - 0 - - - - TL3 - - - - - CheckBox1 - - - - - - - - PushButton1 - - - - 0 - 0 - 0 - 0 - - - - - - - - - TextLabel4 - - - - 0 - 0 - 0 - 0 - - - - TL4 - - - - - LineEdit2 - - - - - PushButton3 - - - - 0 - 0 - 0 - 0 - - - - - - - - - TextLabel6 - - - - 0 - 0 - 0 - 0 - - - - TL6 - - - - - SpinBox_1 - - - - 7 - 0 - 0 - 0 - - - - - - TextLabel5 - - - - 0 - 0 - 0 - 0 - - - - TL5 - - - - - TextLabel2 - - - - 0 - 0 - 0 - 0 - - - - TL2 - - - - - LineEdit1 - - - - - PushButton2 - - - - 0 - 0 - 0 - 0 - - - - - - - - - Spacer3 - - - Vertical - - - Expanding - - - - 0 - 250 - - - - - - - - - - - PushButton1 - LineEdit1 - PushButton2 - LineEdit2 - PushButton3 - LineEdit3 - SpinBox_1 - SpinBox_2 - SpinBox_3 - CheckBox1 - - - diff --git a/src/DlgRef/UIFiles/DlgRef_3Sel4Spin2Check_QTD.ui b/src/DlgRef/UIFiles/DlgRef_3Sel4Spin2Check_QTD.ui deleted file mode 100644 index 441a99a72..000000000 --- a/src/DlgRef/UIFiles/DlgRef_3Sel4Spin2Check_QTD.ui +++ /dev/null @@ -1,372 +0,0 @@ - -DlgRef_3Sel4Spin2Check_QTD - - - DlgRef_3Sel4Spin2Check_QTD - - - - 0 - 0 - 269 - 281 - - - - DlgRef_3Sel4Spin2Check_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - CheckButton2 - - - - - - - - LineEdit1 - - - - - TextLabel3 - - - - 0 - 0 - 0 - 0 - - - - TL3 - - - - - PushButton2 - - - - 0 - 0 - 0 - 0 - - - - - - - - - LineEdit3 - - - - - PushButton1 - - - - 0 - 0 - 0 - 0 - - - - - - - - - Layout3 - - - - unnamed - - - 0 - - - 6 - - - - SpinBox4 - - - - 7 - 0 - 0 - 0 - - - - - - SpinBox3 - - - - 7 - 0 - 0 - 0 - - - - - - TextLabel7 - - - - 0 - 0 - 0 - 0 - - - - TL7 - - - - - TextLabel6 - - - - 0 - 0 - 0 - 0 - - - - TL6 - - - - - - - CheckButton1 - - - - - - - - PushButton3 - - - - 0 - 0 - 0 - 0 - - - - - - - - - TextLabel1 - - - - 0 - 0 - 0 - 0 - - - - TL1 - - - - - Spacer1 - - - Vertical - - - Expanding - - - - 0 - 16 - - - - - - LineEdit2 - - - - - Layout2 - - - - unnamed - - - 0 - - - 6 - - - - TextLabel5 - - - - 0 - 0 - 0 - 0 - - - - TL5 - - - - - TextLabel4 - - - - 0 - 0 - 0 - 0 - - - - TL4 - - - - - SpinBox1 - - - - 7 - 0 - 0 - 0 - - - - - - SpinBox2 - - - - 7 - 0 - 0 - 0 - - - - - - - - TextLabel2 - - - - 0 - 0 - 0 - 0 - - - - TL2 - - - - - - - - - - PushButton1 - LineEdit1 - PushButton2 - LineEdit2 - PushButton3 - LineEdit3 - SpinBox1 - SpinBox2 - CheckButton1 - SpinBox3 - SpinBox4 - CheckButton2 - - - diff --git a/src/DlgRef/UIFiles/DlgRef_3Sel_QTD.ui b/src/DlgRef/UIFiles/DlgRef_3Sel_QTD.ui deleted file mode 100644 index 0fe998827..000000000 --- a/src/DlgRef/UIFiles/DlgRef_3Sel_QTD.ui +++ /dev/null @@ -1,202 +0,0 @@ - -DlgRef_3Sel_QTD - - - DlgRef_3Sel_QTD - - - - 0 - 0 - 129 - 117 - - - - - 5 - 7 - 0 - 0 - - - - DlgRef_3Sel_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - LineEdit3 - - - - - PushButton1 - - - - 0 - 0 - 0 - 0 - - - - - - - - - LineEdit2 - - - - - TextLabel1 - - - - 0 - 0 - 0 - 0 - - - - TL1 - - - - - TextLabel3 - - - - 0 - 0 - 0 - 0 - - - - TL3 - - - - - LineEdit1 - - - - - Spacer3 - - - Vertical - - - Expanding - - - - 0 - 159 - - - - - - TextLabel2 - - - - 0 - 0 - 0 - 0 - - - - TL2 - - - - - PushButton3 - - - - 0 - 0 - 0 - 0 - - - - - - - - - PushButton2 - - - - 0 - 0 - 0 - 0 - - - - - - - - - - - - - - diff --git a/src/DlgRef/UIFiles/DlgRef_3Spin1Check_QTD.ui b/src/DlgRef/UIFiles/DlgRef_3Spin1Check_QTD.ui deleted file mode 100644 index fd3317f2d..000000000 --- a/src/DlgRef/UIFiles/DlgRef_3Spin1Check_QTD.ui +++ /dev/null @@ -1,178 +0,0 @@ - -DlgRef_3Spin1Check_QTD - - - DlgRef_3Spin1Check_QTD - - - - 0 - 0 - 124 - 130 - - - - DlgRef_3Spin1Check_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - CheckBox1 - - - - - - - - Spacer1 - - - Vertical - - - Expanding - - - - 0 - 20 - - - - - - SpinBox2 - - - - 7 - 0 - 0 - 0 - - - - - - TextLabel3 - - - - 0 - 0 - 0 - 0 - - - - TL3 - - - - - SpinBox3 - - - - 7 - 0 - 0 - 0 - - - - - - SpinBox1 - - - - 7 - 0 - 0 - 0 - - - - - - TextLabel1 - - - - 0 - 0 - 0 - 0 - - - - TL1 - - - - - TextLabel2 - - - - 0 - 0 - 0 - 0 - - - - TL2 - - - - - - - - - - diff --git a/src/DlgRef/UIFiles/DlgRef_3Spin_QTD.ui b/src/DlgRef/UIFiles/DlgRef_3Spin_QTD.ui deleted file mode 100644 index 96f6b4dfb..000000000 --- a/src/DlgRef/UIFiles/DlgRef_3Spin_QTD.ui +++ /dev/null @@ -1,170 +0,0 @@ - -DlgRef_3Spin_QTD - - - DlgRef_3Spin_QTD - - - - 0 - 0 - 124 - 111 - - - - DlgRef_3Spin_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - SpinBox2 - - - - 7 - 0 - 0 - 0 - - - - - - Spacer1 - - - Vertical - - - Expanding - - - - 0 - 16 - - - - - - TextLabel3 - - - - 0 - 0 - 0 - 0 - - - - TL3 - - - - - SpinBox1 - - - - 7 - 0 - 0 - 0 - - - - - - SpinBox3 - - - - 7 - 0 - 0 - 0 - - - - - - TextLabel1 - - - - 0 - 0 - 0 - 0 - - - - TL1 - - - - - TextLabel2 - - - - 0 - 0 - 0 - 0 - - - - TL2 - - - - - - - - - - diff --git a/src/DlgRef/UIFiles/DlgRef_4Sel1List_QTD.ui b/src/DlgRef/UIFiles/DlgRef_4Sel1List_QTD.ui deleted file mode 100644 index 831768d79..000000000 --- a/src/DlgRef/UIFiles/DlgRef_4Sel1List_QTD.ui +++ /dev/null @@ -1,260 +0,0 @@ - -DlgRef_4Sel1List_QTD - - - DlgRef_4Sel1List_QTD - - - - 0 - 0 - 129 - 175 - - - - DlgRef_4Sel1List_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - LineEdit2 - - - - - PushButton4 - - - - 0 - 0 - 0 - 0 - - - - - - - - - PushButton1 - - - - 0 - 0 - 0 - 0 - - - - - - - - - LineEdit4 - - - - - PushButton3 - - - - 0 - 0 - 0 - 0 - - - - - - - - - PushButton2 - - - - 0 - 0 - 0 - 0 - - - - - - - - - TextLabel1 - - - - 0 - 0 - 0 - 0 - - - - TL1 - - - - - TextLabel4 - - - - 0 - 0 - 0 - 0 - - - - TL4 - - - - - Spacer5 - - - Vertical - - - Expanding - - - - 0 - 80 - - - - - - LineEdit1 - - - - - TextLabel5 - - - - 0 - 0 - 0 - 0 - - - - TL5 - - - - - LineEdit3 - - - - - TextLabel2 - - - - 0 - 0 - 0 - 0 - - - - TL2 - - - - - ComboBox1 - - - - 7 - 0 - 0 - 0 - - - - - - TextLabel3 - - - - 0 - 0 - 0 - 0 - - - - TL3 - - - - - - - - - - diff --git a/src/DlgRef/UIFiles/DlgRef_6Sel_QTD.ui b/src/DlgRef/UIFiles/DlgRef_6Sel_QTD.ui deleted file mode 100644 index c5ff40649..000000000 --- a/src/DlgRef/UIFiles/DlgRef_6Sel_QTD.ui +++ /dev/null @@ -1,296 +0,0 @@ - -DlgRef_6Sel_QTD - - - DlgRef_6Sel_QTD - - - - 0 - 0 - 235 - 196 - - - - - 5 - 7 - 0 - 0 - - - - DlgRef_6Sel_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - TextLabel1 - - - - 0 - 0 - 0 - 0 - - - - TL1 - - - - - TextLabel2 - - - - 0 - 0 - 0 - 0 - - - - TL2 - - - - - TextLabel3 - - - - 0 - 0 - 0 - 0 - - - - TL3 - - - - - TextLabel4 - - - - 0 - 0 - 0 - 0 - - - - TL4 - - - - - TextLabel5 - - - - 0 - 0 - 0 - 0 - - - - TL5 - - - - - TextLabel6 - - - - 0 - 0 - 0 - 0 - - - - TL6 - - - - - PushButton1 - - - - 0 - 0 - 0 - 0 - - - - - - - - - PushButton2 - - - - 0 - 0 - 0 - 0 - - - - - - - - - PushButton3 - - - - 0 - 0 - 0 - 0 - - - - - - - - - PushButton4 - - - - 0 - 0 - 0 - 0 - - - - - - - - - PushButton5 - - - - 0 - 0 - 0 - 0 - - - - - - - - - PushButton6 - - - - 0 - 0 - 0 - 0 - - - - - - - - - LineEdit1 - - - - - LineEdit2 - - - - - LineEdit3 - - - - - LineEdit4 - - - - - LineEdit5 - - - - - LineEdit6 - - - - - - - - - - diff --git a/src/DlgRef/UIFiles/DlgRef_Skeleton_QTD.ui b/src/DlgRef/UIFiles/DlgRef_Skeleton_QTD.ui deleted file mode 100644 index 1098d6c46..000000000 --- a/src/DlgRef/UIFiles/DlgRef_Skeleton_QTD.ui +++ /dev/null @@ -1,281 +0,0 @@ - -DlgRef_Skeleton_QTD - - - DlgRef_Skeleton_QTD - - - - 0 - 0 - 307 - 378 - - - - - 5 - 7 - 0 - 0 - - - - DlgRef_Skeleton_QTD - - - true - - - - unnamed - - - 11 - - - 6 - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - GroupMedium - - - - 7 - 7 - 0 - 0 - - - - - - - - - GroupButtons - - - - 7 - 0 - 0 - 0 - - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout3 - - - - unnamed - - - 0 - - - 6 - - - - buttonOk - - - &Ok - - - - - buttonApply - - - &Apply - - - - - Spacer1 - - - Horizontal - - - Expanding - - - - 91 - 0 - - - - - - buttonCancel - - - &Cancel - - - - - - - - - GroupConstructors - - - - 5 - 0 - 0 - 0 - - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout2 - - - - unnamed - - - 0 - - - 6 - - - - RadioButton1 - - - - - - - - RadioButton2 - - - - - - - - RadioButton3 - - - - - - - - RadioButton4 - - - - - - - - - - - - GroupBoxName - - - Result name - - - - unnamed - - - 11 - - - 6 - - - - Layout66 - - - - unnamed - - - 0 - - - 6 - - - - ResultName - - - - - NameLabel - - - Name - - - - - - - - - - - - diff --git a/src/DlgRef/UIFiles/ui_to_cxx b/src/DlgRef/UIFiles/ui_to_cxx deleted file mode 100755 index b042efa8e..000000000 --- a/src/DlgRef/UIFiles/ui_to_cxx +++ /dev/null @@ -1,85 +0,0 @@ -#!/bin/sh - -#uic -o DlgRef_Skeleton_QTD.h DlgRef_Skeleton_QTD.ui -#uic -o DlgRef_Skeleton_QTD.cxx -impl DlgRef_Skeleton_QTD.h DlgRef_Skeleton_QTD.ui - -#uic -o DlgRef_1Sel_QTD.h DlgRef_1Sel_QTD.ui -#uic -o DlgRef_1Sel_QTD.cxx -impl DlgRef_1Sel_QTD.h DlgRef_1Sel_QTD.ui - -#uic -o DlgRef_1Sel1Spin_QTD.h DlgRef_1Sel1Spin_QTD.ui -#uic -o DlgRef_1Sel1Spin_QTD.cxx -impl DlgRef_1Sel1Spin_QTD.h DlgRef_1Sel1Spin_QTD.ui - -#uic -o DlgRef_1Sel1Spin1Check_QTD.h DlgRef_1Sel1Spin1Check_QTD.ui -#uic -o DlgRef_1Sel1Spin1Check_QTD.cxx -impl DlgRef_1Sel1Spin1Check_QTD.h DlgRef_1Sel1Spin1Check_QTD.ui - -#uic -o DlgRef_1Sel2Spin_QTD.h DlgRef_1Sel2Spin_QTD.ui -#uic -o DlgRef_1Sel2Spin_QTD.cxx -impl DlgRef_1Sel2Spin_QTD.h DlgRef_1Sel2Spin_QTD.ui - -#uic -o DlgRef_1Sel3Spin_QTD.h DlgRef_1Sel3Spin_QTD.ui -#uic -o DlgRef_1Sel3Spin_QTD.cxx -impl DlgRef_1Sel3Spin_QTD.h DlgRef_1Sel3Spin_QTD.ui - -#uic -o DlgRef_1Sel4Spin_QTD.h DlgRef_1Sel4Spin_QTD.ui -#uic -o DlgRef_1Sel4Spin_QTD.cxx -impl DlgRef_1Sel4Spin_QTD.h DlgRef_1Sel4Spin_QTD.ui - -#uic -o DlgRef_1Sel5Spin_QTD.h DlgRef_1Sel5Spin_QTD.ui -#uic -o DlgRef_1Sel5Spin_QTD.cxx -impl DlgRef_1Sel5Spin_QTD.h DlgRef_1Sel5Spin_QTD.ui - -#uic -o DlgRef_1Sel1Check_QTD.h DlgRef_1Sel1Check_QTD.ui -#uic -o DlgRef_1Sel1Check_QTD.cxx -impl DlgRef_1Sel1Check_QTD.h DlgRef_1Sel1Check_QTD.ui - -#uic -o DlgRef_1Sel3Check_QTD.h DlgRef_1Sel3Check_QTD.ui -#uic -o DlgRef_1Sel3Check_QTD.cxx -impl DlgRef_1Sel3Check_QTD.h DlgRef_1Sel3Check_QTD.ui - -#uic -o DlgRef_1Sel1Check1List_QTD.h DlgRef_1Sel1Check1List_QTD.ui -#uic -o DlgRef_1Sel1Check1List_QTD.cxx -impl DlgRef_1Sel1Check1List_QTD.h DlgRef_1Sel1Check1List_QTD.ui - -#uic -o DlgRef_2Sel_QTD.h DlgRef_2Sel_QTD.ui -#uic -o DlgRef_2Sel_QTD.cxx -impl DlgRef_2Sel_QTD.h DlgRef_2Sel_QTD.ui - -#uic -o DlgRef_2Sel1Spin_QTD.h DlgRef_2Sel1Spin_QTD.ui -#uic -o DlgRef_2Sel1Spin_QTD.cxx -impl DlgRef_2Sel1Spin_QTD.h DlgRef_2Sel1Spin_QTD.ui - -#uic -o DlgRef_2Sel1Spin2Check_QTD.h DlgRef_2Sel1Spin2Check_QTD.ui -#uic -o DlgRef_2Sel1Spin2Check_QTD.cxx -impl DlgRef_2Sel1Spin2Check_QTD.h DlgRef_2Sel1Spin2Check_QTD.ui - -#uic -o DlgRef_2Sel2Spin_QTD.h DlgRef_2Sel2Spin_QTD.ui -#uic -o DlgRef_2Sel2Spin_QTD.cxx -impl DlgRef_2Sel2Spin_QTD.h DlgRef_2Sel2Spin_QTD.ui - -#uic -o DlgRef_2Sel2Spin1Check_QTD.h DlgRef_2Sel2Spin1Check_QTD.ui -#uic -o DlgRef_2Sel2Spin1Check_QTD.cxx -impl DlgRef_2Sel2Spin1Check_QTD.h DlgRef_2Sel2Spin1Check_QTD.ui - -#uic -o DlgRef_2Sel3Spin_QTD.h DlgRef_2Sel3Spin_QTD.ui -#uic -o DlgRef_2Sel3Spin_QTD.cxx -impl DlgRef_2Sel3Spin_QTD.h DlgRef_2Sel3Spin_QTD.ui - -#uic -o DlgRef_2Sel4Spin1Check_QTD.h DlgRef_2Sel4Spin1Check_QTD.ui -#uic -o DlgRef_2Sel4Spin1Check_QTD.cxx -impl DlgRef_2Sel4Spin1Check_QTD.h DlgRef_2Sel4Spin1Check_QTD.ui - -#uic -o DlgRef_4Sel1List_QTD.h DlgRef_4Sel1List_QTD.ui -#uic -o DlgRef_4Sel1List_QTD.cxx -impl DlgRef_4Sel1List_QTD.h DlgRef_4Sel1List_QTD.ui - -#uic -o DlgRef_3Sel_QTD.h DlgRef_3Sel_QTD.ui -#uic -o DlgRef_3Sel_QTD.cxx -impl DlgRef_3Sel_QTD.h DlgRef_3Sel_QTD.ui - -#uic -o DlgRef_3Sel4Spin2Check_QTD.h DlgRef_3Sel4Spin2Check_QTD.ui -#uic -o DlgRef_3Sel4Spin2Check_QTD.cxx -impl DlgRef_3Sel4Spin2Check_QTD.h DlgRef_3Sel4Spin2Check_QTD.ui - -#uic -o DlgRef_1Spin_QTD.h DlgRef_1Spin_QTD.ui -#uic -o DlgRef_1Spin_QTD.cxx -impl DlgRef_1Spin_QTD.h DlgRef_1Spin_QTD.ui - -#uic -o DlgRef_2Spin_QTD.h DlgRef_2Spin_QTD.ui -#uic -o DlgRef_2Spin_QTD.cxx -impl DlgRef_2Spin_QTD.h DlgRef_2Spin_QTD.ui - -#uic -o DlgRef_3Spin_QTD.h DlgRef_3Spin_QTD.ui -#uic -o DlgRef_3Spin_QTD.cxx -impl DlgRef_3Spin_QTD.h DlgRef_3Spin_QTD.ui - -#uic -o DlgRef_3Spin1Check_QTD.h DlgRef_3Spin1Check_QTD.ui -#uic -o DlgRef_3Spin1Check_QTD.cxx -impl DlgRef_3Spin1Check_QTD.h DlgRef_3Spin1Check_QTD.ui - -#uic -o DlgRef_3Sel3Spin1Check_QTD.h DlgRef_3Sel3Spin1Check_QTD.ui -#uic -o DlgRef_3Sel3Spin1Check_QTD.cxx -impl DlgRef_3Sel3Spin1Check_QTD.h DlgRef_3Sel3Spin1Check_QTD.ui - -#uic -o DlgRef_6Sel_QTD.h DlgRef_6Sel_QTD.ui -#uic -o DlgRef_6Sel_QTD.cxx -impl DlgRef_6Sel_QTD.h DlgRef_6Sel_QTD.ui - -uic -o DlgRef_3Check_QTD.h DlgRef_3Check_QTD.ui -uic -o DlgRef_3Check_QTD.cxx -impl DlgRef_3Check_QTD.h DlgRef_3Check_QTD.ui diff --git a/src/EntityGUI/EntityGUI.cxx b/src/EntityGUI/EntityGUI.cxx deleted file mode 100644 index c1af4be77..000000000 --- a/src/EntityGUI/EntityGUI.cxx +++ /dev/null @@ -1,678 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : EntityGUI.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header$ - -#include "EntityGUI.h" -#include "GeometryGUI.h" -#include "GEOM_AssemblyBuilder.h" - -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" -#include "SUIT_ViewWindow.h" -#include "OCCViewer_ViewModel.h" -#include "OCCViewer_ViewManager.h" -#include "VTKViewer_ViewModel.h" -#include "SalomeApp_Study.h" -#include "SalomeApp_Tools.h" -//#include "SALOMEGUI_ImportOperation.h" - -#include -#include -#include - -#include "EntityGUI_SketcherDlg.h" // Sketcher -#include "EntityGUI_SubShapeDlg.h" // Method SUBSHAPE - -#include "utilities.h" - -using namespace boost; -using namespace std; - -EntityGUI* EntityGUI::myGUIObject = 0; - -//======================================================================= -// function : GetEntityGUI() -// purpose : Get the only EntityGUI object [ static ] -//======================================================================= -EntityGUI* EntityGUI::GetEntityGUI( GeometryGUI* parent ) -{ - if ( myGUIObject == 0 ) { - // init EntityGUI only once - myGUIObject = new EntityGUI( parent ); - } - return myGUIObject; -} - -//======================================================================= -// function : EntityGUI() -// purpose : Constructor -//======================================================================= -EntityGUI::EntityGUI( GeometryGUI* parent ) : GEOMGUI( parent ) -{ - myGeomBase = new GEOMBase(); - myGeom = GEOM::GEOM_Gen::_duplicate( GeometryGUI::GetGeomGen() ); - - mySimulationShape1 = new AIS_Shape(TopoDS_Shape()); - mySimulationShape2 = new AIS_Shape(TopoDS_Shape()); -} - - -//======================================================================= -// function : ~EntityGUI() -// purpose : Destructor -//======================================================================= -EntityGUI::~EntityGUI() -{ -} - - -//======================================================================= -// function : OnGUIEvent() -// purpose : -//======================================================================= -bool EntityGUI::OnGUIEvent(int theCommandID, SUIT_Desktop* parent) -{ - getGeometryGUI()->EmitSignalDeactivateDialog(); - QDialog* aDlg = NULL; - - switch (theCommandID) - { - case 404: // SKETCHER - getGeometryGUI()->ActiveWorkingPlane(); - aDlg = new EntityGUI_SketcherDlg(getGeometryGUI(), parent, ""); - break; - case 407: // EXPLODE : use ic - aDlg = new EntityGUI_SubShapeDlg(parent, ""); - break; - default: - SUIT_Session::session()->activeApplication()->putInfo(tr("GEOM_PRP_COMMAND").arg(theCommandID)); - break; - } - if ( aDlg ) - aDlg->show(); - - return true; -} - - -//======================================================================= -// function : OnSketchEnd() -// purpose : -//======================================================================= -void EntityGUI::OnSketchEnd(const char *Cmd) -{ - /* QAD_Application::getDesktop()->putInfo("Create sketch functionality is NOT implemented in new GEOM kernel - (no such Corba interface method). Waiting for SRN to create it..."); - - try { - GEOM::GEOM_Shape_var result = myGeom->MakeSketcher(Cmd); - if(result->_is_nil()) { - QAD_Application::getDesktop()->putInfo(tr("GEOM_PRP_NULLSHAPE")); - return; - } - result->NameType(tr("GEOM_WIRE")); - if(myGeomBase->Display(result)) - QAD_Application::getDesktop()->putInfo(tr("GEOM_PRP_DONE")); - } - catch(const SALOME::SALOME_Exception& S_ex) { - SalomeApp_Tools::QtCatchCorbaException(S_ex); - } - */ - return; -} - - -//===================================================================================== -// function : DisplaySimulationShape() -// purpose : Displays 'this->mySimulationShape' a pure graphical shape from a TopoDS_Shape -//===================================================================================== -void EntityGUI::DisplaySimulationShape(const TopoDS_Shape& S1, const TopoDS_Shape& S2) -{ - //NRI DEBUG : 14/02/2002 - if( SUIT_Session::session()->activeApplication()->desktop()->activeWindow()->getViewManager()->getType() - != OCCViewer_Viewer::Type() ) - return; - - OCCViewer_Viewer* v3d = - ((OCCViewer_ViewManager*)(SUIT_Session::session()->activeApplication()->desktop()->activeWindow()->getViewManager()))->getOCCViewer(); - Handle(AIS_InteractiveContext) ic = v3d->getAISContext(); - try { - if(!S1.IsNull()) { - /* erase any previous */ - ic->Erase(mySimulationShape1, Standard_True, Standard_False); - ic->ClearPrs(mySimulationShape1); - - mySimulationShape1 = new AIS_Shape(TopoDS_Shape()); - mySimulationShape1->Set(S1); - mySimulationShape1->SetColor(Quantity_NOC_RED); - - ic->Deactivate(mySimulationShape1); - ic->Display(mySimulationShape1, Standard_False); - mySimulationShape1->UnsetColor(); - } - if(!S2.IsNull()) { - ic->Erase(mySimulationShape2, Standard_True, Standard_False); - ic->ClearPrs(mySimulationShape2); - - mySimulationShape2 = new AIS_Shape(TopoDS_Shape()); - mySimulationShape2->Set(S2); - mySimulationShape2->SetColor(Quantity_NOC_VIOLET); - - ic->Deactivate(mySimulationShape2); - ic->Display(mySimulationShape2, Standard_False); - mySimulationShape2->UnsetColor(); - } - ic->UpdateCurrentViewer(); - } - catch(Standard_Failure) { - MESSAGE("Exception catched in EntityGUI::DisplaySimulationShape "); - } - return; -} - - -//================================================================================== -// function : EraseSimulationShape() -// purpose : Clears the display of 'mySimulationShape' a pure graphical shape -//================================================================================== -void EntityGUI::EraseSimulationShape() -{ - // get all view windows at the desktop - QPtrList aWndLst = SUIT_Session::session()->activeApplication()->desktop()->windows(); - //get all view windows, which belong to the active study - QPtrList aWndLstAS; - SUIT_ViewWindow* vw; - for ( vw = aWndLst.first(); vw; vw = aWndLst.next() ) - if ( vw->getViewManager()->study() == SUIT_Session::session()->activeApplication()->activeStudy() ) - aWndLstAS.append( vw ); - - for ( vw = aWndLstAS.first(); vw; vw = aWndLstAS.next() ) { - if ( vw->getViewManager()->getType() == OCCViewer_Viewer::Type() ) { - OCCViewer_Viewer* v3d = ((OCCViewer_ViewManager*)(vw->getViewManager()))->getOCCViewer(); - Handle(AIS_InteractiveContext) ic = v3d->getAISContext(); - ic->Erase(mySimulationShape1, Standard_True, Standard_False); - ic->ClearPrs(mySimulationShape1); - ic->Erase(mySimulationShape2, Standard_True, Standard_False); - ic->ClearPrs(mySimulationShape2); - ic->UpdateCurrentViewer(); - } - } -} - -//===================================================================================== -// function : SObjectExist() -// purpose : -//===================================================================================== -bool EntityGUI::SObjectExist(const _PTR(SObject)& theFatherObject, const char* IOR) -{ - SalomeApp_Study* appStudy = dynamic_cast( SUIT_Session::session()->activeApplication()->activeStudy() ); - if ( !appStudy ) return false; - _PTR(Study) aStudy = appStudy->studyDS(); - _PTR(ChildIterator) it ( aStudy->NewChildIterator(theFatherObject) ); - _PTR(SObject) RefSO; - _PTR(GenericAttribute) anAttr; - for(; it->More();it->Next()) { - _PTR(SObject) SO ( it->Value() ); - if(SO->FindAttribute(anAttr, "AttributeIOR")) { - _PTR(AttributeIOR) anIOR ( anAttr ); - if(strcmp( anIOR->Value().c_str(), IOR ) == 0) - return true; - } - if(SO->ReferencedObject(RefSO)) { - if(RefSO->FindAttribute(anAttr, "AttributeIOR")) { - _PTR(AttributeIOR) anIOR ( anAttr ); - if(strcmp(anIOR->Value().c_str(), IOR) == 0) - return true; - } - } - } - return false; -} - - -//===================================================================================== -// function : OnSubShapeGetAll() -// purpose : Explode a shape in all sub shapes with a SubShapeType -//===================================================================================== -bool EntityGUI::OnSubShapeGetAll(const TopoDS_Shape& ShapeTopo, const char* ShapeTopoIOR, const int SubShapeType) -{ - SUIT_Session::session()->activeApplication()->putInfo("OnSubShapeGetAll method from EntityGUI should be reimplemented ..."); - /* - SALOMEDS::Study_var aStudy = QAD_Application::getDesktop()->getActiveStudy()->getStudyDocument(); - SALOMEDS::SObject_var theObj = aStudy->FindObjectIOR(ShapeTopoIOR); - if(theObj->_is_nil()) { - QAD_Application::getDesktop()->putInfo(tr("GEOM_PRP_SHAPE_IN_STUDY")); - return false; - } - - SALOMEDS::StudyBuilder_var aStudyBuilder = aStudy->NewBuilder(); - SALOMEDS::SObject_var fatherSF = aStudy->FindObjectID(QAD_Application::getDesktop()->getActiveStudy()->getActiveStudyFrame()->entry()); - SALOMEDS::GenericAttribute_var anAttr; - SALOMEDS::AttributeName_var aName; - SALOMEDS::AttributeIOR_var anIOR; - SALOMEDS::AttributePixMap_var aPixmap; - - // We create a sub object for each sub shape as attribute of the main object - // Each sub object contains list (length=1) containing its index in the main shape - GEOM::GEOM_Shape_var aShape = myGeom->GetIORFromString(ShapeTopoIOR); - GEOM::GEOM_Gen::ListOfGeomShapes_var listGeomShapes = new GEOM::GEOM_Gen::ListOfGeomShapes; - GEOM::GEOM_Shape_var aResult; - - try { - listGeomShapes = myGeom->SubShapeAll(aShape, SubShapeType); - if(listGeomShapes->length() < 1) { - QAD_Application::getDesktop()->putInfo (tr("GEOM_PRP_ABORT")); - return false; - } - } - catch(const SALOME::SALOME_Exception& S_ex) { - SalomeApp_Tools::QtCatchCorbaException(S_ex); - } - - // open transaction - QAD_Operation* op = new SALOMEGUI_ImportOperation(QAD_Application::getDesktop()->getActiveStudy()); - op->start(); - - TopoDS_Shape mainTopo = myGeomGUI->GetShapeReader().GetShape(myGeom, aShape); - TopoDS_Shape mainShape; - bool main = false; - while(!main) { - if(aShape->IsMainShape()) { - mainShape = myGeomGUI->GetShapeReader().GetShape(myGeom, aShape); - main = true; - } - else - aShape = myGeom->GetIORFromString(aShape->MainName()); - } - - // Loop on each sub shape created - // int i = 1 ; index for the nameType - for(int j=0; jlength(); j++) { - // Get each sub shape extracted CORBA and OCC - aResult = listGeomShapes[j] ; - TopoDS_Shape S = myGeomGUI->GetShapeReader().GetShape(myGeom, aResult); - - if (S.IsNull()) { - QAD_Application::getDesktop()->putInfo (tr("GEOM_PRP_ABORT")); - return false; - } - - // Set the nameType of sub shape - char* nameG = (char *)malloc(20); - Standard_CString Type; - if(myGeomBase->GetShapeTypeString(S, Type)) { - aResult->NameType(Type); - sprintf(nameG, "%s_%d", Type, myGeomBase->GetIndex(S, mainShape, SubShapeType)); - } - else { - aResult->NameType(tr("GEOM_SHAPE")); - sprintf(nameG, "%s_%d", tr("GEOM_SHAPE").latin1(), myGeomGUI->myNbGeom++); - } - SALOMEDS::SObject_var SO = aStudy->FindObjectIOR(aResult->Name()); - - bool allreadyexist = false; - - if(QAD_Application::getDesktop()->getActiveStudy()->getActiveStudyFrame()->getTypeView() == VIEW_OCC) { - OCCViewer_Viewer3d* v3d = ((OCCViewer_ViewFrame*)QAD_Application::getDesktop()->getActiveStudy()->getActiveStudyFrame()->getRightFrame()->getViewFrame())->getViewer(); - Handle (AIS_InteractiveContext) ic = v3d->getAISContext(); - - Handle(GEOM_AISShape) result = new GEOM_AISShape(S, nameG); - Handle(GEOM_InteractiveObject) IO = new GEOM_InteractiveObject(aResult->Name(), myGeomGUI->GetFatherior(), "GEOM"); - - MESSAGE ("SO->_is_nil() " << SO->_is_nil()) - - if(SO->_is_nil()) { - SALOMEDS::SObject_var newObj = aStudyBuilder->NewObject(theObj); - anAttr = aStudyBuilder->FindOrCreateAttribute(newObj, "AttributeName"); - aName = SALOMEDS::AttributeName::_narrow(anAttr); - aName->SetValue(nameG); - anAttr = aStudyBuilder->FindOrCreateAttribute(newObj, "AttributeIOR"); - anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr); - anIOR->SetValue(aResult->Name()); - - anAttr = aStudyBuilder->FindOrCreateAttribute(newObj, "AttributePixMap"); - aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr); - MESSAGE(" Type " << S.ShapeType()) - if (S.ShapeType() == TopAbs_COMPOUND) - aPixmap->SetPixMap("ICON_OBJBROWSER_COMPOUND"); - else if(S.ShapeType() == TopAbs_COMPSOLID) - aPixmap->SetPixMap("ICON_OBJBROWSER_COMPSOLID"); - else if(S.ShapeType() == TopAbs_SOLID) - aPixmap->SetPixMap("ICON_OBJBROWSER_SOLID"); - else if(S.ShapeType() == TopAbs_SHELL) - aPixmap->SetPixMap("ICON_OBJBROWSER_SHELL"); - else if(S.ShapeType() == TopAbs_FACE) - aPixmap->SetPixMap("ICON_OBJBROWSER_FACE"); - else if(S.ShapeType() == TopAbs_WIRE) - aPixmap->SetPixMap("ICON_OBJBROWSER_WIRE"); - else if(S.ShapeType() == TopAbs_EDGE) - aPixmap->SetPixMap("ICON_OBJBROWSER_EDGE"); - else if(S.ShapeType() == TopAbs_VERTEX) - aPixmap->SetPixMap("ICON_OBJBROWSER_VERTEX"); - - MESSAGE(" aPixmap->GetPixMap " << aPixmap->GetPixMap()) - - SALOMEDS::SObject_var newObj1 = aStudyBuilder->NewObject(fatherSF); - aStudyBuilder->Addreference(newObj1, newObj); - IO->setEntry(newObj->GetID()); - - aResult->StudyShapeId(newObj->GetID()); - } - else { - allreadyexist = true; - if(!this->SObjectExist(theObj, aResult->Name())) { - SALOMEDS::SObject_var newObj1 = aStudyBuilder->NewObject(theObj); - aStudyBuilder->Addreference(newObj1, SO); - IO->setEntry(SO->GetID()); - aResult->StudyShapeId(SO->GetID()); - } - } - - result->setIO(IO); - result->setName(nameG); - if(!allreadyexist) - ic->Display(result); - - } - else if(QAD_Application::getDesktop()->getActiveStudy()->getActiveStudyFrame()->getTypeView() == VIEW_VTK) { - VTKViewer_RenderWindowInteractor* myRenderInter= ((VTKViewer_ViewFrame*)QAD_Application::getDesktop()->getActiveStudy()->getActiveStudyFrame()->getRightFrame()->getViewFrame())->getRWInteractor(); - - int themode = myRenderInter->GetDisplayMode(); - vtkRenderer *theRenderer = ((VTKViewer_ViewFrame*)QAD_Application::getDesktop()->getActiveStudy()->getActiveStudyFrame()->getRightFrame()->getViewFrame())->getRenderer(); - vtkRenderWindow *renWin = theRenderer->GetRenderWindow(); - - Handle(GEOM_InteractiveObject) IO = new GEOM_InteractiveObject(aResult->Name(), myGeomGUI->GetFatherior(), "GEOM"); - - if(SO->_is_nil()) { - SALOMEDS::SObject_var newObj = aStudyBuilder->NewObject(theObj); - anAttr = aStudyBuilder->FindOrCreateAttribute(newObj, "AttributeIOR"); - anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr); - anIOR->SetValue(aResult->Name()); - anAttr = aStudyBuilder->FindOrCreateAttribute(newObj, "AttributeName"); - aName = SALOMEDS::AttributeName::_narrow(anAttr); - aName->SetValue(nameG); - - anAttr = aStudyBuilder->FindOrCreateAttribute(newObj, "AttributePixMap"); - aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr); - if(S.ShapeType() == TopAbs_COMPOUND) - aPixmap->SetPixMap("ICON_OBJBROWSER_COMPOUND"); - else if(S.ShapeType() == TopAbs_COMPSOLID) - aPixmap->SetPixMap("ICON_OBJBROWSER_COMPSOLID"); - else if(S.ShapeType() == TopAbs_SOLID) - aPixmap->SetPixMap("ICON_OBJBROWSER_SOLID"); - else if(S.ShapeType() == TopAbs_SHELL) - aPixmap->SetPixMap("ICON_OBJBROWSER_SHELL"); - else if(S.ShapeType() == TopAbs_FACE) - aPixmap->SetPixMap("ICON_OBJBROWSER_FACE"); - else if(S.ShapeType() == TopAbs_WIRE) - aPixmap->SetPixMap("ICON_OBJBROWSER_WIRE"); - else if(S.ShapeType() == TopAbs_EDGE) - aPixmap->SetPixMap("ICON_OBJBROWSER_EDGE"); - else if(S.ShapeType() == TopAbs_VERTEX) - aPixmap->SetPixMap("ICON_OBJBROWSER_VERTEX"); - - SALOMEDS::SObject_var newObj1 = aStudyBuilder->NewObject(fatherSF); - aStudyBuilder->Addreference(newObj1, newObj); - IO->setEntry(newObj->GetID()); - } - else { - allreadyexist = true; - if(!this->SObjectExist(theObj, aResult->Name())) { - SALOMEDS::SObject_var newObj1 = aStudyBuilder->NewObject(theObj); - aStudyBuilder->Addreference(newObj1, SO); - IO->setEntry(SO->GetID()); - } - } - - if(!allreadyexist) { - vtkActorCollection* theActors = GEOM_AssemblyBuilder::BuildActors(S,0,themode,Standard_True); - theActors->InitTraversal(); - vtkActor* anActor = (vtkActor*)theActors->GetNextActor(); - while(!(anActor==NULL)) { - GEOM_Actor* GActor = GEOM_Actor::SafeDownCast(anActor); - GActor->setIO(IO); - GActor->setName(nameG); - theRenderer->AddActor(GActor); - renWin->Render(); - anActor = (vtkActor*)theActors->GetNextActor(); - } - } - } - } - - // commit transaction - op->finish(); - - QAD_Application::getDesktop()->getActiveStudy()->updateObjBrowser(); - QAD_Application::getDesktop()->putInfo (tr("GEOM_PRP_READY")); - */ - return true; -} - - -//===================================================================================== -// function : OnSubShapeGetSelected() -// purpose : -//===================================================================================== -bool EntityGUI::OnSubShapeGetSelected(const TopoDS_Shape& ShapeTopo, const char* ShapeTopoIOR, const int SubShapeType, Standard_Integer& aLocalContextId, bool& myUseLocalContext) -{ - SUIT_Session::session()->activeApplication()->putInfo("OnSubShapeGetSelected method from EntityGUI should be reimplemented ..."); - // //* Test the type of viewer */ -// if(QAD_Application::getDesktop()->getActiveStudy()->getActiveStudyFrame()->getTypeView() > VIEW_OCC) -// return false; - -// SALOMEDS::Study_var aStudy = QAD_Application::getDesktop()->getActiveStudy()->getStudyDocument(); -// SALOMEDS::SObject_var theObj = aStudy->FindObjectIOR(ShapeTopoIOR); -// if(theObj->_is_nil()) { -// QAD_Application::getDesktop()->putInfo(tr("GEOM_PRP_SHAPE_IN_STUDY")); -// return false; -// } - -// OCCViewer_Viewer3d* v3d = ((OCCViewer_ViewFrame*)QAD_Application::getDesktop()->getActiveStudy()->getActiveStudyFrame()->getRightFrame()->getViewFrame())->getViewer(); -// Handle(AIS_InteractiveContext) ic = v3d->getAISContext(); - -// if( myUseLocalContext == false ) { -// /* local context is from DialogBox */ -// MESSAGE("Error : No local context opened for sub shapes method" << endl ) ; -// return false ; -// } - -// GEOM::GEOM_Shape_var aShape = myGeom->GetIORFromString( ShapeTopoIOR ); -// TopoDS_Shape mainTopo = myGeomGUI->GetShapeReader().GetShape(myGeom, aShape); - -// TopoDS_Shape mainShape; -// bool main = false; -// while(!main) { -// if(aShape->IsMainShape()) { -// mainShape = myGeomGUI->GetShapeReader().GetShape(myGeom, aShape); -// main = true; -// } -// else -// aShape = myGeom->GetIORFromString(aShape->MainName()); -// } - -// GEOM::GEOM_Shape::ListOfSubShapeID_var ListOfID = new GEOM::GEOM_Shape::ListOfSubShapeID; -// ic->InitSelected(); -// int nbSelected = ic->NbSelected(); -// ListOfID->length(nbSelected); - -// TopoDS_Compound compound; -// ic->InitSelected(); /* to init again */ -// BRep_Builder B; -// B.MakeCompound(compound); - -// int i = 0; -// /* We create a unique compound containing all the sub shapes selected by user as attribute of the main shape */ -// /* the compound is homogenous by selection */ -// while(ic->MoreSelected()) { -// int index = myGeomBase->GetIndex(ic->SelectedShape(), mainShape, SubShapeType); -// ListOfID[i] = index; -// B.Add(compound, ic->SelectedShape()); -// i++; -// ic->NextSelected(); -// } - -// /* Test if user has selected sub shapes */ -// if(ListOfID->length() < 1) -// return false; - -// GEOM::GEOM_Shape_var aResult; -// try { -// aResult = myGeom->SubShape(aShape, SubShapeType, ListOfID); -// } -// catch (const SALOME::SALOME_Exception& S_ex) { -// SalomeApp_Tools::QtCatchCorbaException(S_ex); -// } - -// /* local context from DialogBox */ -// ic->CloseLocalContext(aLocalContextId); -// myUseLocalContext = false ; - -// char* nameG = (char *)malloc(20); -// Standard_CString Type; - -// Handle(GEOM_AISShape) result; -// Handle(GEOM_InteractiveObject) IO; - -// if(nbSelected == 1) { -// TopExp_Explorer Exp (compound, TopAbs_ShapeEnum(SubShapeType)); -// if(Exp.More()) { -// if(myGeomBase->GetShapeTypeString(Exp.Current(),Type)) { -// aResult->NameType(Type); -// sprintf (nameG, "%s_%d", Type, myGeomBase->GetIndex( Exp.Current(), mainTopo, SubShapeType)); -// } -// else { -// aResult->NameType(tr("GEOM_SHAPE")); -// sprintf (nameG, "%s_%d", tr("GEOM_SHAPE").latin1(), myGeomGUI->myNbGeom++); -// } -// result = new GEOM_AISShape(Exp.Current(), nameG); -// IO = new GEOM_InteractiveObject(aResult->Name(), myGeomGUI->GetFatherior(), "GEOM"); -// } -// } -// else { -// if ( myGeomBase->GetShapeTypeString(compound,Type)) { -// aResult->NameType(Type); -// sprintf (nameG, "%s_%d", Type, myGeomGUI->myNbGeom++); -// } else { -// aResult->NameType(tr("GEOM_SHAPE")); -// sprintf (nameG, "%s_%d", tr("GEOM_SHAPE").latin1(), myGeomGUI->myNbGeom++); -// } -// result = new GEOM_AISShape(compound, nameG); -// IO = new GEOM_InteractiveObject(aResult->Name(), myGeomGUI->GetFatherior(), "GEOM"); -// } - -// SALOMEDS::SObject_var SO = aStudy->FindObjectIOR(aResult->Name()); - -// /* open transaction */ -// QAD_Operation* op = new SALOMEGUI_ImportOperation(QAD_Application::getDesktop()->getActiveStudy()); -// op->start(); - -// SALOMEDS::StudyBuilder_var aStudyBuilder = aStudy->NewBuilder(); -// SALOMEDS::SObject_var fatherSF = aStudy->FindObjectID(QAD_Application::getDesktop()->getActiveStudy()->getActiveStudyFrame()->entry()); -// SALOMEDS::GenericAttribute_var anAttr; -// SALOMEDS::AttributeName_var aName; -// SALOMEDS::AttributeIOR_var anIOR; -// SALOMEDS::AttributePixMap_var aPixmap; - -// bool allreadyexist = false; - -// if(SO->_is_nil()) { -// SALOMEDS::SObject_var newObj = aStudyBuilder->NewObject(theObj); -// anAttr = aStudyBuilder->FindOrCreateAttribute(newObj, "AttributeIOR"); -// anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr); -// anIOR->SetValue(aResult->Name()); -// anAttr = aStudyBuilder->FindOrCreateAttribute(newObj, "AttributeName"); -// aName = SALOMEDS::AttributeName::_narrow(anAttr); -// aName->SetValue(result->getName()); - -// anAttr = aStudyBuilder->FindOrCreateAttribute(newObj, "AttributePixMap"); -// aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr); -// if(result->Shape().ShapeType() == TopAbs_COMPOUND) -// aPixmap->SetPixMap("ICON_OBJBROWSER_COMPOUND"); -// else if(result->Shape().ShapeType() == TopAbs_COMPSOLID) -// aPixmap->SetPixMap("ICON_OBJBROWSER_COMPSOLID"); -// else if(result->Shape().ShapeType() == TopAbs_SOLID) -// aPixmap->SetPixMap("ICON_OBJBROWSER_SOLID"); -// else if(result->Shape().ShapeType() == TopAbs_SHELL) -// aPixmap->SetPixMap("ICON_OBJBROWSER_SHELL"); -// else if(result->Shape().ShapeType() == TopAbs_FACE) -// aPixmap->SetPixMap("ICON_OBJBROWSER_FACE"); -// else if(result->Shape().ShapeType() == TopAbs_WIRE) -// aPixmap->SetPixMap("ICON_OBJBROWSER_WIRE"); -// else if(result->Shape().ShapeType() == TopAbs_EDGE) -// aPixmap->SetPixMap("ICON_OBJBROWSER_EDGE"); -// else if(result->Shape().ShapeType() == TopAbs_VERTEX) -// aPixmap->SetPixMap("ICON_OBJBROWSER_VERTEX"); - -// SALOMEDS::SObject_var newObj1 = aStudyBuilder->NewObject(fatherSF); -// aStudyBuilder->Addreference(newObj1, newObj); - -// IO->setEntry(newObj->GetID()); -// aResult->StudyShapeId(newObj->GetID()); -// } -// else { -// allreadyexist = true; -// if(!this->SObjectExist(theObj, aResult->Name())) { -// SALOMEDS::SObject_var newObj1 = aStudyBuilder->NewObject(theObj); -// aStudyBuilder->Addreference(newObj1, SO); - -// IO->setEntry(SO->GetID()); -// aResult->StudyShapeId(SO->GetID()); -// } -// } - -// /* commit transaction */ -// op->finish(); - -// result->setIO(IO); -// result->setName(nameG); - -// if(!allreadyexist) -// ic->Display(result); - -// DisplayGUI* myDisplayGUI = new DisplayGUI(); -// myDisplayGUI->OnDisplayAll(true); - -// QAD_Application::getDesktop()->getActiveStudy()->updateObjBrowser(); -// QAD_Application::getDesktop()->putInfo (tr("GEOM_PRP_READY")); - return true; -} - - -//===================================================================================== -// EXPORTED METHODS -//===================================================================================== -extern "C" -{ -#ifdef WNT - __declspec( dllexport ) -#endif - GEOMGUI* GetLibGUI( GeometryGUI* parent ) - { - return EntityGUI::GetEntityGUI( parent ); - } -} diff --git a/src/EntityGUI/EntityGUI.h b/src/EntityGUI/EntityGUI.h deleted file mode 100644 index fe2f7d816..000000000 --- a/src/EntityGUI/EntityGUI.h +++ /dev/null @@ -1,79 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : EntityGUI.h -// Author : Damien COQUERET -// Module : GEOM -// $Header$ - -#ifndef ENTITYGUI_H -#define ENTITYGUI_H - -#include "GEOMGUI.h" -#include "GEOMBase.h" - -#include "SALOMEDSClient.hxx" - -//================================================================================= -// class : EntityGUI -// purpose : -//================================================================================= -class EntityGUI : public GEOMGUI -{ -protected: - EntityGUI( GeometryGUI* parent ); // hide constructor to avoid direct creation - -public : - ~EntityGUI(); - - // Get the only EntityGUI object - static EntityGUI* GetEntityGUI( GeometryGUI* parent ); - - bool OnGUIEvent(int theCommandID, SUIT_Desktop* parent); - - void OnSketchEnd(const char *Cmd); - - void DisplaySimulationShape(const TopoDS_Shape& S1, const TopoDS_Shape& S2); - void EraseSimulationShape(); - - void MakeInterpolAndDisplay(GEOM::string_array& listShapesIOR); - void MakeBezierAndDisplay(GEOM::string_array& listShapesIOR); - - /* Methods for sub shapes explode */ - bool SObjectExist(const _PTR(SObject)& theFatherObject, const char* IOR); - bool OnSubShapeGetAll(const TopoDS_Shape& ShapeTopo, const char* ShapeTopoIOR, const int SubShapeType); - bool OnSubShapeGetSelected(const TopoDS_Shape& ShapeTopo, const char* ShapeTopoIOR, const int SubShapeType, - Standard_Integer& aLocalContextId, bool& myUseLocalContext); - - /* AIS shape used only during topo/geom simulations */ - Handle(AIS_Shape) mySimulationShape1; - Handle(AIS_Shape) mySimulationShape2; - - GEOMBase* myGeomBase; - GEOM::GEOM_Gen_var myGeom; /* Current Geom Component */ - -private: - static EntityGUI* myGUIObject; // the only EntityGUI object -}; - -#endif diff --git a/src/EntityGUI/EntityGUI_1Sel_QTD.cxx b/src/EntityGUI/EntityGUI_1Sel_QTD.cxx deleted file mode 100644 index 824a6ecc7..000000000 --- a/src/EntityGUI/EntityGUI_1Sel_QTD.cxx +++ /dev/null @@ -1,103 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'EntityGUI_1Sel_QTD.ui' -** -** Created: Thu Aug 12 19:03:19 2004 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "EntityGUI_1Sel_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a EntityGUI_1Sel_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -EntityGUI_1Sel_QTD::EntityGUI_1Sel_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "EntityGUI_1Sel_QTD" ); - resize( 329, 112 ); - setCaption( trUtf8( "EntityGUI_1Sel_QTD" ) ); - EntityGUI_1Sel_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "EntityGUI_1Sel_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setTitle( trUtf8( "Values" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout4 = new QGridLayout( 0, 1, 1, 0, 6, "Layout4"); - - Layout3 = new QGridLayout( 0, 1, 1, 0, 6, "Layout3"); - QSpacerItem* spacer = new QSpacerItem( 0, 163, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout3->addItem( spacer, 2, 0 ); - - buttonApply = new QPushButton( GroupBox1, "buttonApply" ); - buttonApply->setText( trUtf8( "Create" ) ); - - Layout3->addWidget( buttonApply, 0, 0 ); - - Layout2 = new QGridLayout( 0, 1, 1, 0, 6, "Layout2"); - - buttonRedo = new QPushButton( GroupBox1, "buttonRedo" ); - buttonRedo->setText( trUtf8( "Redo" ) ); - - Layout2->addWidget( buttonRedo, 0, 1 ); - - buttonUndo = new QPushButton( GroupBox1, "buttonUndo" ); - buttonUndo->setText( trUtf8( "Undo" ) ); - - Layout2->addWidget( buttonUndo, 0, 0 ); - - Layout3->addLayout( Layout2, 1, 0 ); - - Layout4->addLayout( Layout3, 0, 1 ); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - Layout1->addWidget( TextLabel1, 0, 0 ); - QSpacerItem* spacer_2 = new QSpacerItem( 0, 180, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout1->addItem( spacer_2, 1, 2 ); - - PushButton1 = new QPushButton( GroupBox1, "PushButton1" ); - PushButton1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton1->sizePolicy().hasHeightForWidth() ) ); - PushButton1->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton1, 0, 1 ); - - LineEdit1 = new QLineEdit( GroupBox1, "LineEdit1" ); - LineEdit1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)3, (QSizePolicy::SizeType)0, 0, 0, LineEdit1->sizePolicy().hasHeightForWidth() ) ); - - Layout1->addWidget( LineEdit1, 0, 2 ); - - Layout4->addLayout( Layout1, 0, 0 ); - - GroupBox1Layout->addLayout( Layout4, 0, 0 ); - - EntityGUI_1Sel_QTDLayout->addWidget( GroupBox1, 0, 0 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -EntityGUI_1Sel_QTD::~EntityGUI_1Sel_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/EntityGUI/EntityGUI_1Sel_QTD.h b/src/EntityGUI/EntityGUI_1Sel_QTD.h deleted file mode 100644 index 36e13768e..000000000 --- a/src/EntityGUI/EntityGUI_1Sel_QTD.h +++ /dev/null @@ -1,48 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'EntityGUI_1Sel_QTD.ui' -** -** Created: Fri Jul 30 16:06:00 2004 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef ENTITYGUI_1SEL_QTD_H -#define ENTITYGUI_1SEL_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QGroupBox; -class QLabel; -class QLineEdit; -class QPushButton; - -class EntityGUI_1Sel_QTD : public QWidget -{ - Q_OBJECT - -public: - EntityGUI_1Sel_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~EntityGUI_1Sel_QTD(); - - QGroupBox* GroupBox1; - QPushButton* buttonApply; - QPushButton* buttonRedo; - QPushButton* buttonUndo; - QLabel* TextLabel1; - QPushButton* PushButton1; - QLineEdit* LineEdit1; - - -protected: - QGridLayout* EntityGUI_1Sel_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* Layout4; - QGridLayout* Layout3; - QGridLayout* Layout2; - QGridLayout* Layout1; -}; - -#endif // ENTITYGUI_1SEL_QTD_H diff --git a/src/EntityGUI/EntityGUI_1Spin.cxx b/src/EntityGUI/EntityGUI_1Spin.cxx deleted file mode 100644 index 131a45500..000000000 --- a/src/EntityGUI/EntityGUI_1Spin.cxx +++ /dev/null @@ -1,56 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : EntityGUI_1Spin.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#include "EntityGUI_1Spin.h" - -#include -#include -#include - -/* - * Constructs a EntityGUI_1Spin which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' - */ -EntityGUI_1Spin::EntityGUI_1Spin(QWidget* parent, const char* name, WFlags fl) - :EntityGUI_1Spin_QTD(parent, name, fl) -{ - SpinBox1->close(TRUE); - - SpinBox_DX = new DlgRef_SpinBox(GroupBox1, "SpinBox_DX"); - Layout1->addWidget(SpinBox_DX, 0, 1); - -} - - -/* - * Destroys the object and frees any allocated resources - */ -EntityGUI_1Spin::~EntityGUI_1Spin() -{ - // no need to delete child widgets, Qt does it all for us -} diff --git a/src/EntityGUI/EntityGUI_1Spin.h b/src/EntityGUI/EntityGUI_1Spin.h deleted file mode 100644 index fb5814ca2..000000000 --- a/src/EntityGUI/EntityGUI_1Spin.h +++ /dev/null @@ -1,47 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : EntityGUI_1Spin.h -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#ifndef ENTITYGUI_1SPIN_H -#define ENTITYGUI_1SPIN_H - -#include "EntityGUI_1Spin_QTD.h" -#include "DlgRef_SpinBox.h" - -class EntityGUI_1Spin : public EntityGUI_1Spin_QTD -{ - Q_OBJECT - -public: - EntityGUI_1Spin(QWidget* parent = 0, const char* name = 0, WFlags fl = 0); - ~EntityGUI_1Spin(); - - DlgRef_SpinBox* SpinBox_DX; - -}; - -#endif // ENTITYGUI_1SPIN_H diff --git a/src/EntityGUI/EntityGUI_1Spin_QTD.cxx b/src/EntityGUI/EntityGUI_1Spin_QTD.cxx deleted file mode 100644 index b96c0e18a..000000000 --- a/src/EntityGUI/EntityGUI_1Spin_QTD.cxx +++ /dev/null @@ -1,97 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'EntityGUI_1Spin_QTD.ui' -** -** Created: Fri Jul 30 16:05:59 2004 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "EntityGUI_1Spin_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a EntityGUI_1Spin_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -EntityGUI_1Spin_QTD::EntityGUI_1Spin_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "EntityGUI_1Spin_QTD" ); - resize( 255, 112 ); - setCaption( trUtf8( "EntityGUI_1Spin_QTD" ) ); - EntityGUI_1Spin_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "EntityGUI_1Spin_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setTitle( trUtf8( "Values" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout4 = new QGridLayout( 0, 1, 1, 0, 6, "Layout4"); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - Layout1->addWidget( TextLabel1, 0, 0 ); - - SpinBox1 = new QSpinBox( GroupBox1, "SpinBox1" ); - SpinBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox1->sizePolicy().hasHeightForWidth() ) ); - - Layout1->addWidget( SpinBox1, 0, 1 ); - QSpacerItem* spacer = new QSpacerItem( 0, 82, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout1->addItem( spacer, 3, 1 ); - - Layout4->addLayout( Layout1, 0, 0 ); - - Layout3 = new QGridLayout( 0, 1, 1, 0, 6, "Layout3"); - - Layout2 = new QGridLayout( 0, 1, 1, 0, 6, "Layout2"); - - buttonRedo = new QPushButton( GroupBox1, "buttonRedo" ); - buttonRedo->setText( trUtf8( "Redo" ) ); - - Layout2->addWidget( buttonRedo, 0, 1 ); - - buttonUndo = new QPushButton( GroupBox1, "buttonUndo" ); - buttonUndo->setText( trUtf8( "Undo" ) ); - - Layout2->addWidget( buttonUndo, 0, 0 ); - - Layout3->addLayout( Layout2, 1, 0 ); - - buttonApply = new QPushButton( GroupBox1, "buttonApply" ); - buttonApply->setText( trUtf8( "Create" ) ); - - Layout3->addWidget( buttonApply, 0, 0 ); - QSpacerItem* spacer_2 = new QSpacerItem( 0, 40, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout3->addItem( spacer_2, 2, 0 ); - - Layout4->addLayout( Layout3, 0, 1 ); - - GroupBox1Layout->addLayout( Layout4, 0, 0 ); - - EntityGUI_1Spin_QTDLayout->addWidget( GroupBox1, 0, 0 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -EntityGUI_1Spin_QTD::~EntityGUI_1Spin_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/EntityGUI/EntityGUI_1Spin_QTD.h b/src/EntityGUI/EntityGUI_1Spin_QTD.h deleted file mode 100644 index 9e5498776..000000000 --- a/src/EntityGUI/EntityGUI_1Spin_QTD.h +++ /dev/null @@ -1,47 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'EntityGUI_1Spin_QTD.ui' -** -** Created: Fri Jul 30 16:05:59 2004 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef ENTITYGUI_1SPIN_QTD_H -#define ENTITYGUI_1SPIN_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QGroupBox; -class QLabel; -class QPushButton; -class QSpinBox; - -class EntityGUI_1Spin_QTD : public QWidget -{ - Q_OBJECT - -public: - EntityGUI_1Spin_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~EntityGUI_1Spin_QTD(); - - QGroupBox* GroupBox1; - QLabel* TextLabel1; - QSpinBox* SpinBox1; - QPushButton* buttonRedo; - QPushButton* buttonUndo; - QPushButton* buttonApply; - - -protected: - QGridLayout* EntityGUI_1Spin_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* Layout4; - QGridLayout* Layout1; - QGridLayout* Layout3; - QGridLayout* Layout2; -}; - -#endif // ENTITYGUI_1SPIN_QTD_H diff --git a/src/EntityGUI/EntityGUI_2Spin.cxx b/src/EntityGUI/EntityGUI_2Spin.cxx deleted file mode 100644 index b71d731ae..000000000 --- a/src/EntityGUI/EntityGUI_2Spin.cxx +++ /dev/null @@ -1,60 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : EntityGUI_2Spin.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#include "EntityGUI_2Spin.h" - -#include -#include -#include - -/* - * Constructs a EntityGUI_2Spin which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' - */ -EntityGUI_2Spin::EntityGUI_2Spin(QWidget* parent, const char* name, WFlags fl) - :EntityGUI_2Spin_QTD(parent, name, fl) -{ - SpinBox1->close(TRUE); - SpinBox2->close(TRUE); - - SpinBox_DX = new DlgRef_SpinBox(GroupBox1, "SpinBox_DX"); - Layout1->addWidget(SpinBox_DX, 0, 1); - - SpinBox_DY = new DlgRef_SpinBox(GroupBox1, "SpinBox_DY"); - Layout1->addWidget(SpinBox_DY, 1, 1); - -} - - -/* - * Destroys the object and frees any allocated resources - */ -EntityGUI_2Spin::~EntityGUI_2Spin() -{ - // no need to delete child widgets, Qt does it all for us -} diff --git a/src/EntityGUI/EntityGUI_2Spin.h b/src/EntityGUI/EntityGUI_2Spin.h deleted file mode 100644 index 4d0dd21a3..000000000 --- a/src/EntityGUI/EntityGUI_2Spin.h +++ /dev/null @@ -1,48 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : EntityGUI_2Spin.h -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#ifndef ENTITYGUI_2SPIN_H -#define ENTITYGUI_2SPIN_H - -#include "EntityGUI_2Spin_QTD.h" -#include "DlgRef_SpinBox.h" - -class EntityGUI_2Spin : public EntityGUI_2Spin_QTD -{ - Q_OBJECT - -public: - EntityGUI_2Spin(QWidget* parent = 0, const char* name = 0, WFlags fl = 0); - ~EntityGUI_2Spin(); - - DlgRef_SpinBox* SpinBox_DX; - DlgRef_SpinBox* SpinBox_DY; - -}; - -#endif // ENTITYGUI_2SPIN_H diff --git a/src/EntityGUI/EntityGUI_2Spin_QTD.cxx b/src/EntityGUI/EntityGUI_2Spin_QTD.cxx deleted file mode 100644 index a742db393..000000000 --- a/src/EntityGUI/EntityGUI_2Spin_QTD.cxx +++ /dev/null @@ -1,108 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'EntityGUI_2Spin_QTD.ui' -** -** Created: Fri Jul 30 16:06:00 2004 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "EntityGUI_2Spin_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a EntityGUI_2Spin_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -EntityGUI_2Spin_QTD::EntityGUI_2Spin_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "EntityGUI_2Spin_QTD" ); - resize( 255, 112 ); - setCaption( trUtf8( "EntityGUI_2Spin_QTD" ) ); - EntityGUI_2Spin_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "EntityGUI_2Spin_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setTitle( trUtf8( "Values" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout4 = new QGridLayout( 0, 1, 1, 0, 6, "Layout4"); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - - TextLabel2 = new QLabel( GroupBox1, "TextLabel2" ); - TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) ); - TextLabel2->setText( trUtf8( "TL2" ) ); - - Layout1->addWidget( TextLabel2, 1, 0 ); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - Layout1->addWidget( TextLabel1, 0, 0 ); - - SpinBox1 = new QSpinBox( GroupBox1, "SpinBox1" ); - SpinBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox1->sizePolicy().hasHeightForWidth() ) ); - - Layout1->addWidget( SpinBox1, 0, 1 ); - - SpinBox2 = new QSpinBox( GroupBox1, "SpinBox2" ); - SpinBox2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox2->sizePolicy().hasHeightForWidth() ) ); - - Layout1->addWidget( SpinBox2, 1, 1 ); - QSpacerItem* spacer = new QSpacerItem( 0, 82, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout1->addItem( spacer, 3, 1 ); - - Layout4->addLayout( Layout1, 0, 0 ); - - Layout3 = new QGridLayout( 0, 1, 1, 0, 6, "Layout3"); - QSpacerItem* spacer_2 = new QSpacerItem( 0, 51, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout3->addItem( spacer_2, 2, 0 ); - - Layout2 = new QGridLayout( 0, 1, 1, 0, 6, "Layout2"); - - buttonUndo = new QPushButton( GroupBox1, "buttonUndo" ); - buttonUndo->setText( trUtf8( "Undo" ) ); - - Layout2->addWidget( buttonUndo, 0, 0 ); - - buttonRedo = new QPushButton( GroupBox1, "buttonRedo" ); - buttonRedo->setText( trUtf8( "Redo" ) ); - - Layout2->addWidget( buttonRedo, 0, 1 ); - - Layout3->addLayout( Layout2, 1, 0 ); - - buttonApply = new QPushButton( GroupBox1, "buttonApply" ); - buttonApply->setText( trUtf8( "Create" ) ); - - Layout3->addWidget( buttonApply, 0, 0 ); - - Layout4->addLayout( Layout3, 0, 1 ); - - GroupBox1Layout->addLayout( Layout4, 0, 0 ); - - EntityGUI_2Spin_QTDLayout->addWidget( GroupBox1, 0, 0 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -EntityGUI_2Spin_QTD::~EntityGUI_2Spin_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/EntityGUI/EntityGUI_2Spin_QTD.h b/src/EntityGUI/EntityGUI_2Spin_QTD.h deleted file mode 100644 index 8c23b2326..000000000 --- a/src/EntityGUI/EntityGUI_2Spin_QTD.h +++ /dev/null @@ -1,49 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'EntityGUI_2Spin_QTD.ui' -** -** Created: Fri Jul 30 16:06:00 2004 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef ENTITYGUI_2SPIN_QTD_H -#define ENTITYGUI_2SPIN_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QGroupBox; -class QLabel; -class QPushButton; -class QSpinBox; - -class EntityGUI_2Spin_QTD : public QWidget -{ - Q_OBJECT - -public: - EntityGUI_2Spin_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~EntityGUI_2Spin_QTD(); - - QGroupBox* GroupBox1; - QLabel* TextLabel2; - QLabel* TextLabel1; - QSpinBox* SpinBox1; - QSpinBox* SpinBox2; - QPushButton* buttonUndo; - QPushButton* buttonRedo; - QPushButton* buttonApply; - - -protected: - QGridLayout* EntityGUI_2Spin_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* Layout4; - QGridLayout* Layout1; - QGridLayout* Layout3; - QGridLayout* Layout2; -}; - -#endif // ENTITYGUI_2SPIN_QTD_H diff --git a/src/EntityGUI/EntityGUI_3Spin.cxx b/src/EntityGUI/EntityGUI_3Spin.cxx deleted file mode 100644 index fe73aeba5..000000000 --- a/src/EntityGUI/EntityGUI_3Spin.cxx +++ /dev/null @@ -1,63 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : EntityGUI_3Spin.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#include "EntityGUI_3Spin.h" - -#include -#include -#include - -/* - * Constructs a EntityGUI_3Spin which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' - */ -EntityGUI_3Spin::EntityGUI_3Spin(QWidget* parent, const char* name, WFlags fl) - :EntityGUI_3Spin_QTD(parent, name, fl) -{ - SpinBox1->close(TRUE); - SpinBox2->close(TRUE); - SpinBox3->close(TRUE); - - SpinBox_DX = new DlgRef_SpinBox(GroupBox1, "SpinBox_DX"); - Layout1->addWidget(SpinBox_DX, 0, 1); - - SpinBox_DY = new DlgRef_SpinBox(GroupBox1, "SpinBox_DY"); - Layout1->addWidget(SpinBox_DY, 1, 1); - - SpinBox_DZ = new DlgRef_SpinBox(GroupBox1, "SpinBox_DZ"); - Layout1->addWidget(SpinBox_DZ, 2, 1); -} - - -/* - * Destroys the object and frees any allocated resources - */ -EntityGUI_3Spin::~EntityGUI_3Spin() -{ - // no need to delete child widgets, Qt does it all for us -} diff --git a/src/EntityGUI/EntityGUI_3Spin.h b/src/EntityGUI/EntityGUI_3Spin.h deleted file mode 100644 index 58b732d31..000000000 --- a/src/EntityGUI/EntityGUI_3Spin.h +++ /dev/null @@ -1,49 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : EntityGUI_3Spin.h -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#ifndef ENTITYGUI_3SPIN_H -#define ENTITYGUI_3SPIN_H - -#include "EntityGUI_3Spin_QTD.h" -#include "DlgRef_SpinBox.h" - -class EntityGUI_3Spin : public EntityGUI_3Spin_QTD -{ - Q_OBJECT - -public: - EntityGUI_3Spin( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~EntityGUI_3Spin(); - - DlgRef_SpinBox* SpinBox_DX; - DlgRef_SpinBox* SpinBox_DY; - DlgRef_SpinBox* SpinBox_DZ; - -}; - -#endif // ENTITYGUI_3SPIN_H diff --git a/src/EntityGUI/EntityGUI_3Spin_QTD.cxx b/src/EntityGUI/EntityGUI_3Spin_QTD.cxx deleted file mode 100644 index 9a2dd4795..000000000 --- a/src/EntityGUI/EntityGUI_3Spin_QTD.cxx +++ /dev/null @@ -1,119 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'EntityGUI_3Spin_QTD.ui' -** -** Created: Fri Jul 30 16:06:00 2004 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "EntityGUI_3Spin_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a EntityGUI_3Spin_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -EntityGUI_3Spin_QTD::EntityGUI_3Spin_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "EntityGUI_3Spin_QTD" ); - resize( 255, 125 ); - setCaption( trUtf8( "EntityGUI_3Spin_QTD" ) ); - EntityGUI_3Spin_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "EntityGUI_3Spin_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setTitle( trUtf8( "Values" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout4 = new QGridLayout( 0, 1, 1, 0, 6, "Layout4"); - - Layout3 = new QGridLayout( 0, 1, 1, 0, 6, "Layout3"); - - buttonApply = new QPushButton( GroupBox1, "buttonApply" ); - buttonApply->setText( trUtf8( "Create" ) ); - - Layout3->addWidget( buttonApply, 0, 0 ); - QSpacerItem* spacer = new QSpacerItem( 0, 121, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout3->addItem( spacer, 2, 0 ); - - Layout2 = new QGridLayout( 0, 1, 1, 0, 6, "Layout2"); - - buttonUndo = new QPushButton( GroupBox1, "buttonUndo" ); - buttonUndo->setText( trUtf8( "Undo" ) ); - - Layout2->addWidget( buttonUndo, 0, 0 ); - - buttonRedo = new QPushButton( GroupBox1, "buttonRedo" ); - buttonRedo->setText( trUtf8( "Redo" ) ); - - Layout2->addWidget( buttonRedo, 0, 1 ); - - Layout3->addLayout( Layout2, 1, 0 ); - - Layout4->addLayout( Layout3, 0, 1 ); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - - TextLabel2 = new QLabel( GroupBox1, "TextLabel2" ); - TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) ); - TextLabel2->setText( trUtf8( "TL2" ) ); - - Layout1->addWidget( TextLabel2, 1, 0 ); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - Layout1->addWidget( TextLabel1, 0, 0 ); - - SpinBox1 = new QSpinBox( GroupBox1, "SpinBox1" ); - SpinBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox1->sizePolicy().hasHeightForWidth() ) ); - - Layout1->addWidget( SpinBox1, 0, 1 ); - - SpinBox2 = new QSpinBox( GroupBox1, "SpinBox2" ); - SpinBox2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox2->sizePolicy().hasHeightForWidth() ) ); - - Layout1->addWidget( SpinBox2, 1, 1 ); - - TextLabel3 = new QLabel( GroupBox1, "TextLabel3" ); - TextLabel3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel3->sizePolicy().hasHeightForWidth() ) ); - TextLabel3->setText( trUtf8( "TL3" ) ); - - Layout1->addWidget( TextLabel3, 2, 0 ); - QSpacerItem* spacer_2 = new QSpacerItem( 0, 82, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout1->addItem( spacer_2, 3, 1 ); - - SpinBox3 = new QSpinBox( GroupBox1, "SpinBox3" ); - SpinBox3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox3->sizePolicy().hasHeightForWidth() ) ); - - Layout1->addWidget( SpinBox3, 2, 1 ); - - Layout4->addLayout( Layout1, 0, 0 ); - - GroupBox1Layout->addLayout( Layout4, 0, 0 ); - - EntityGUI_3Spin_QTDLayout->addWidget( GroupBox1, 0, 0 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -EntityGUI_3Spin_QTD::~EntityGUI_3Spin_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/EntityGUI/EntityGUI_3Spin_QTD.h b/src/EntityGUI/EntityGUI_3Spin_QTD.h deleted file mode 100644 index 314ca5796..000000000 --- a/src/EntityGUI/EntityGUI_3Spin_QTD.h +++ /dev/null @@ -1,51 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'EntityGUI_3Spin_QTD.ui' -** -** Created: Fri Jul 30 16:06:00 2004 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef ENTITYGUI_3SPIN_QTD_H -#define ENTITYGUI_3SPIN_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QGroupBox; -class QLabel; -class QPushButton; -class QSpinBox; - -class EntityGUI_3Spin_QTD : public QWidget -{ - Q_OBJECT - -public: - EntityGUI_3Spin_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~EntityGUI_3Spin_QTD(); - - QGroupBox* GroupBox1; - QPushButton* buttonApply; - QPushButton* buttonUndo; - QPushButton* buttonRedo; - QLabel* TextLabel2; - QLabel* TextLabel1; - QSpinBox* SpinBox1; - QSpinBox* SpinBox2; - QLabel* TextLabel3; - QSpinBox* SpinBox3; - - -protected: - QGridLayout* EntityGUI_3Spin_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* Layout4; - QGridLayout* Layout3; - QGridLayout* Layout2; - QGridLayout* Layout1; -}; - -#endif // ENTITYGUI_3SPIN_QTD_H diff --git a/src/EntityGUI/EntityGUI_4Spin.cxx b/src/EntityGUI/EntityGUI_4Spin.cxx deleted file mode 100644 index 29aa398a1..000000000 --- a/src/EntityGUI/EntityGUI_4Spin.cxx +++ /dev/null @@ -1,67 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : EntityGUI_4Spin.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#include "EntityGUI_4Spin.h" - -#include -#include -#include - -/* - * Constructs a EntityGUI_4Spin which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' - */ -EntityGUI_4Spin::EntityGUI_4Spin(QWidget* parent, const char* name, WFlags fl) - :EntityGUI_4Spin_QTD(parent, name, fl) -{ - SpinBox1->close(TRUE); - SpinBox2->close(TRUE); - SpinBox3->close(TRUE); - SpinBox4->close(TRUE); - - SpinBox_DX = new DlgRef_SpinBox(GroupBox1, "SpinBox_DX"); - Layout1->addWidget(SpinBox_DX, 0, 1); - - SpinBox_DY = new DlgRef_SpinBox(GroupBox1, "SpinBox_DY"); - Layout1->addWidget(SpinBox_DY, 1, 1); - - SpinBox_DZ = new DlgRef_SpinBox(GroupBox1, "SpinBox_DZ"); - Layout1->addWidget(SpinBox_DZ, 2, 1); - - SpinBox_DS = new DlgRef_SpinBox(GroupBox1, "SpinBox_DS"); - Layout1->addWidget(SpinBox_DS, 3, 1); -} - - -/* - * Destroys the object and frees any allocated resources - */ -EntityGUI_4Spin::~EntityGUI_4Spin() -{ - // no need to delete child widgets, Qt does it all for us -} diff --git a/src/EntityGUI/EntityGUI_4Spin.h b/src/EntityGUI/EntityGUI_4Spin.h deleted file mode 100644 index 9a97fff1e..000000000 --- a/src/EntityGUI/EntityGUI_4Spin.h +++ /dev/null @@ -1,50 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : EntityGUI_4Spin.h -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#ifndef ENTITYGUI_4SPIN_H -#define ENTITYGUI_4SPIN_H - -#include "EntityGUI_4Spin_QTD.h" -#include "DlgRef_SpinBox.h" - -class EntityGUI_4Spin : public EntityGUI_4Spin_QTD -{ - Q_OBJECT - -public: - EntityGUI_4Spin( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~EntityGUI_4Spin(); - - DlgRef_SpinBox* SpinBox_DX; - DlgRef_SpinBox* SpinBox_DY; - DlgRef_SpinBox* SpinBox_DZ; - DlgRef_SpinBox* SpinBox_DS; - -}; - -#endif // ENTITYGUI_4SPIN_H diff --git a/src/EntityGUI/EntityGUI_4Spin_QTD.cxx b/src/EntityGUI/EntityGUI_4Spin_QTD.cxx deleted file mode 100644 index d449befc7..000000000 --- a/src/EntityGUI/EntityGUI_4Spin_QTD.cxx +++ /dev/null @@ -1,130 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'EntityGUI_4Spin_QTD.ui' -** -** Created: Fri Jul 30 16:06:00 2004 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "EntityGUI_4Spin_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a EntityGUI_4Spin_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -EntityGUI_4Spin_QTD::EntityGUI_4Spin_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "EntityGUI_4Spin_QTD" ); - resize( 255, 154 ); - setCaption( trUtf8( "EntityGUI_4Spin_QTD" ) ); - EntityGUI_4Spin_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "EntityGUI_4Spin_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setTitle( trUtf8( "Values" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout4 = new QGridLayout( 0, 1, 1, 0, 6, "Layout4"); - - Layout3 = new QGridLayout( 0, 1, 1, 0, 6, "Layout3"); - - Layout2 = new QGridLayout( 0, 1, 1, 0, 6, "Layout2"); - - buttonRedo = new QPushButton( GroupBox1, "buttonRedo" ); - buttonRedo->setText( trUtf8( "Redo" ) ); - - Layout2->addWidget( buttonRedo, 0, 1 ); - - buttonUndo = new QPushButton( GroupBox1, "buttonUndo" ); - buttonUndo->setText( trUtf8( "Undo" ) ); - - Layout2->addWidget( buttonUndo, 0, 0 ); - - Layout3->addLayout( Layout2, 1, 0 ); - QSpacerItem* spacer = new QSpacerItem( 0, 45, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout3->addItem( spacer, 2, 0 ); - - buttonApply = new QPushButton( GroupBox1, "buttonApply" ); - buttonApply->setText( trUtf8( "Create" ) ); - - Layout3->addWidget( buttonApply, 0, 0 ); - - Layout4->addLayout( Layout3, 0, 1 ); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - - SpinBox3 = new QSpinBox( GroupBox1, "SpinBox3" ); - SpinBox3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox3->sizePolicy().hasHeightForWidth() ) ); - - Layout1->addWidget( SpinBox3, 2, 1 ); - - SpinBox2 = new QSpinBox( GroupBox1, "SpinBox2" ); - SpinBox2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox2->sizePolicy().hasHeightForWidth() ) ); - - Layout1->addWidget( SpinBox2, 1, 1 ); - - TextLabel2 = new QLabel( GroupBox1, "TextLabel2" ); - TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) ); - TextLabel2->setText( trUtf8( "TL2" ) ); - - Layout1->addWidget( TextLabel2, 1, 0 ); - QSpacerItem* spacer_2 = new QSpacerItem( 0, 70, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout1->addItem( spacer_2, 4, 1 ); - - SpinBox4 = new QSpinBox( GroupBox1, "SpinBox4" ); - SpinBox4->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox4->sizePolicy().hasHeightForWidth() ) ); - - Layout1->addWidget( SpinBox4, 3, 1 ); - - TextLabel3 = new QLabel( GroupBox1, "TextLabel3" ); - TextLabel3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel3->sizePolicy().hasHeightForWidth() ) ); - TextLabel3->setText( trUtf8( "TL3" ) ); - - Layout1->addWidget( TextLabel3, 2, 0 ); - - SpinBox1 = new QSpinBox( GroupBox1, "SpinBox1" ); - SpinBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox1->sizePolicy().hasHeightForWidth() ) ); - - Layout1->addWidget( SpinBox1, 0, 1 ); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - Layout1->addWidget( TextLabel1, 0, 0 ); - - TextLabel4 = new QLabel( GroupBox1, "TextLabel4" ); - TextLabel4->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel4->sizePolicy().hasHeightForWidth() ) ); - TextLabel4->setText( trUtf8( "TL4" ) ); - - Layout1->addWidget( TextLabel4, 3, 0 ); - - Layout4->addLayout( Layout1, 0, 0 ); - - GroupBox1Layout->addLayout( Layout4, 0, 0 ); - - EntityGUI_4Spin_QTDLayout->addWidget( GroupBox1, 0, 0 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -EntityGUI_4Spin_QTD::~EntityGUI_4Spin_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/EntityGUI/EntityGUI_4Spin_QTD.h b/src/EntityGUI/EntityGUI_4Spin_QTD.h deleted file mode 100644 index 13d983fd4..000000000 --- a/src/EntityGUI/EntityGUI_4Spin_QTD.h +++ /dev/null @@ -1,53 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'EntityGUI_4Spin_QTD.ui' -** -** Created: Fri Jul 30 16:06:00 2004 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef ENTITYGUI_4SPIN_QTD_H -#define ENTITYGUI_4SPIN_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QGroupBox; -class QLabel; -class QPushButton; -class QSpinBox; - -class EntityGUI_4Spin_QTD : public QWidget -{ - Q_OBJECT - -public: - EntityGUI_4Spin_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~EntityGUI_4Spin_QTD(); - - QGroupBox* GroupBox1; - QPushButton* buttonRedo; - QPushButton* buttonUndo; - QPushButton* buttonApply; - QSpinBox* SpinBox3; - QSpinBox* SpinBox2; - QLabel* TextLabel2; - QSpinBox* SpinBox4; - QLabel* TextLabel3; - QSpinBox* SpinBox1; - QLabel* TextLabel1; - QLabel* TextLabel4; - - -protected: - QGridLayout* EntityGUI_4Spin_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* Layout4; - QGridLayout* Layout3; - QGridLayout* Layout2; - QGridLayout* Layout1; -}; - -#endif // ENTITYGUI_4SPIN_QTD_H diff --git a/src/EntityGUI/EntityGUI_Dir1_QTD.cxx b/src/EntityGUI/EntityGUI_Dir1_QTD.cxx deleted file mode 100644 index 40b070b47..000000000 --- a/src/EntityGUI/EntityGUI_Dir1_QTD.cxx +++ /dev/null @@ -1,80 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'EntityGUI_Dir1_QTD.ui' -** -** Created: ven déc 12 11:17:09 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "EntityGUI_Dir1_QTD.h" - -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a EntityGUI_Dir1_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -EntityGUI_Dir1_QTD::EntityGUI_Dir1_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "EntityGUI_Dir1_QTD" ); - resize( 131, 123 ); - setCaption( trUtf8( "EntityGUI_Dir1_QTD" ) ); - EntityGUI_Dir1_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "EntityGUI_Dir1_QTDLayout"); - - GroupDir1 = new QButtonGroup( this, "GroupDir1" ); - GroupDir1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, GroupDir1->sizePolicy().hasHeightForWidth() ) ); - GroupDir1->setTitle( trUtf8( "Direction" ) ); - GroupDir1->setColumnLayout(0, Qt::Vertical ); - GroupDir1->layout()->setSpacing( 6 ); - GroupDir1->layout()->setMargin( 11 ); - GroupDir1Layout = new QGridLayout( GroupDir1->layout() ); - GroupDir1Layout->setAlignment( Qt::AlignTop ); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - - RB_Dir12 = new QRadioButton( GroupDir1, "RB_Dir12" ); - RB_Dir12->setText( trUtf8( "Perpendicular" ) ); - - Layout1->addWidget( RB_Dir12, 1, 0 ); - - RB_Dir13 = new QRadioButton( GroupDir1, "RB_Dir13" ); - RB_Dir13->setText( trUtf8( "Tangent" ) ); - - Layout1->addWidget( RB_Dir13, 2, 0 ); - - RB_Dir11 = new QRadioButton( GroupDir1, "RB_Dir11" ); - RB_Dir11->setText( trUtf8( "Angle" ) ); - - Layout1->addWidget( RB_Dir11, 0, 0 ); - - RB_Dir14 = new QRadioButton( GroupDir1, "RB_Dir14" ); - RB_Dir14->setText( trUtf8( "VX-VY" ) ); - - Layout1->addWidget( RB_Dir14, 3, 0 ); - - GroupDir1Layout->addLayout( Layout1, 0, 0 ); - - EntityGUI_Dir1_QTDLayout->addWidget( GroupDir1, 0, 0 ); - - // tab order - setTabOrder( RB_Dir11, RB_Dir12 ); - setTabOrder( RB_Dir12, RB_Dir13 ); - setTabOrder( RB_Dir13, RB_Dir14 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -EntityGUI_Dir1_QTD::~EntityGUI_Dir1_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/EntityGUI/EntityGUI_Dir1_QTD.h b/src/EntityGUI/EntityGUI_Dir1_QTD.h deleted file mode 100644 index 31a85e8bb..000000000 --- a/src/EntityGUI/EntityGUI_Dir1_QTD.h +++ /dev/null @@ -1,41 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'EntityGUI_Dir1_QTD.ui' -** -** Created: ven déc 12 11:17:09 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef ENTITYGUI_DIR1_QTD_H -#define ENTITYGUI_DIR1_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QButtonGroup; -class QRadioButton; - -class EntityGUI_Dir1_QTD : public QWidget -{ - Q_OBJECT - -public: - EntityGUI_Dir1_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~EntityGUI_Dir1_QTD(); - - QButtonGroup* GroupDir1; - QRadioButton* RB_Dir12; - QRadioButton* RB_Dir13; - QRadioButton* RB_Dir11; - QRadioButton* RB_Dir14; - - -protected: - QGridLayout* EntityGUI_Dir1_QTDLayout; - QGridLayout* GroupDir1Layout; - QGridLayout* Layout1; -}; - -#endif // ENTITYGUI_DIR1_QTD_H diff --git a/src/EntityGUI/EntityGUI_Dir2_QTD.cxx b/src/EntityGUI/EntityGUI_Dir2_QTD.cxx deleted file mode 100644 index 6fee0814c..000000000 --- a/src/EntityGUI/EntityGUI_Dir2_QTD.cxx +++ /dev/null @@ -1,76 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'EntityGUI_Dir2_QTD.ui' -** -** Created: ven déc 12 11:17:10 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "EntityGUI_Dir2_QTD.h" - -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a EntityGUI_Dir2_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -EntityGUI_Dir2_QTD::EntityGUI_Dir2_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "EntityGUI_Dir2_QTD" ); - resize( 124, 106 ); - setCaption( trUtf8( "EntityGUI_Dir2_QTD" ) ); - EntityGUI_Dir2_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "EntityGUI_Dir2_QTDLayout"); - - GroupDir2 = new QButtonGroup( this, "GroupDir2" ); - GroupDir2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)7, 0, 0, GroupDir2->sizePolicy().hasHeightForWidth() ) ); - GroupDir2->setTitle( trUtf8( "Direction" ) ); - GroupDir2->setColumnLayout(0, Qt::Vertical ); - GroupDir2->layout()->setSpacing( 6 ); - GroupDir2->layout()->setMargin( 11 ); - GroupDir2Layout = new QGridLayout( GroupDir2->layout() ); - GroupDir2Layout->setAlignment( Qt::AlignTop ); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - - RB_Dir22 = new QRadioButton( GroupDir2, "RB_Dir22" ); - RB_Dir22->setText( trUtf8( "X" ) ); - - Layout1->addWidget( RB_Dir22, 1, 0 ); - - RB_Dir23 = new QRadioButton( GroupDir2, "RB_Dir23" ); - RB_Dir23->setText( trUtf8( "Y" ) ); - - Layout1->addWidget( RB_Dir23, 2, 0 ); - QSpacerItem* spacer = new QSpacerItem( 0, 20, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout1->addItem( spacer, 3, 0 ); - - RB_Dir21 = new QRadioButton( GroupDir2, "RB_Dir21" ); - RB_Dir21->setText( trUtf8( "Length" ) ); - - Layout1->addWidget( RB_Dir21, 0, 0 ); - - GroupDir2Layout->addLayout( Layout1, 0, 0 ); - - EntityGUI_Dir2_QTDLayout->addWidget( GroupDir2, 0, 0 ); - - // tab order - setTabOrder( RB_Dir21, RB_Dir22 ); - setTabOrder( RB_Dir22, RB_Dir23 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -EntityGUI_Dir2_QTD::~EntityGUI_Dir2_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/EntityGUI/EntityGUI_Dir2_QTD.h b/src/EntityGUI/EntityGUI_Dir2_QTD.h deleted file mode 100644 index 04ae7382f..000000000 --- a/src/EntityGUI/EntityGUI_Dir2_QTD.h +++ /dev/null @@ -1,40 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'EntityGUI_Dir2_QTD.ui' -** -** Created: ven déc 12 11:17:09 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef ENTITYGUI_DIR2_QTD_H -#define ENTITYGUI_DIR2_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QButtonGroup; -class QRadioButton; - -class EntityGUI_Dir2_QTD : public QWidget -{ - Q_OBJECT - -public: - EntityGUI_Dir2_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~EntityGUI_Dir2_QTD(); - - QButtonGroup* GroupDir2; - QRadioButton* RB_Dir22; - QRadioButton* RB_Dir23; - QRadioButton* RB_Dir21; - - -protected: - QGridLayout* EntityGUI_Dir2_QTDLayout; - QGridLayout* GroupDir2Layout; - QGridLayout* Layout1; -}; - -#endif // ENTITYGUI_DIR2_QTD_H diff --git a/src/EntityGUI/EntityGUI_Point_QTD.cxx b/src/EntityGUI/EntityGUI_Point_QTD.cxx deleted file mode 100644 index 901a14fe2..000000000 --- a/src/EntityGUI/EntityGUI_Point_QTD.cxx +++ /dev/null @@ -1,74 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'EntityGUI_Point_QTD.ui' -** -** Created: ven déc 12 11:17:08 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "EntityGUI_Point_QTD.h" - -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a EntityGUI_Point_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -EntityGUI_Point_QTD::EntityGUI_Point_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "EntityGUI_Point_QTD" ); - resize( 124, 106 ); - setCaption( trUtf8( "EntityGUI_Point_QTD" ) ); - EntityGUI_Point_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "EntityGUI_Point_QTDLayout"); - - GroupPoint = new QButtonGroup( this, "GroupPoint" ); - GroupPoint->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, GroupPoint->sizePolicy().hasHeightForWidth() ) ); - GroupPoint->setTitle( trUtf8( "Point" ) ); - GroupPoint->setColumnLayout(0, Qt::Vertical ); - GroupPoint->layout()->setSpacing( 6 ); - GroupPoint->layout()->setMargin( 11 ); - GroupPointLayout = new QGridLayout( GroupPoint->layout() ); - GroupPointLayout->setAlignment( Qt::AlignTop ); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - - RB_Point2 = new QRadioButton( GroupPoint, "RB_Point2" ); - RB_Point2->setText( trUtf8( "Relative" ) ); - - Layout1->addWidget( RB_Point2, 1, 0 ); - - RB_Point1 = new QRadioButton( GroupPoint, "RB_Point1" ); - RB_Point1->setText( trUtf8( "Absolute" ) ); - - Layout1->addWidget( RB_Point1, 0, 0 ); - - RB_Point3 = new QRadioButton( GroupPoint, "RB_Point3" ); - RB_Point3->setText( trUtf8( "Selection" ) ); - - Layout1->addWidget( RB_Point3, 2, 0 ); - - GroupPointLayout->addLayout( Layout1, 0, 0 ); - - EntityGUI_Point_QTDLayout->addWidget( GroupPoint, 0, 0 ); - - // tab order - setTabOrder( RB_Point1, RB_Point2 ); - setTabOrder( RB_Point2, RB_Point3 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -EntityGUI_Point_QTD::~EntityGUI_Point_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/EntityGUI/EntityGUI_Point_QTD.h b/src/EntityGUI/EntityGUI_Point_QTD.h deleted file mode 100644 index 8b58ee2d0..000000000 --- a/src/EntityGUI/EntityGUI_Point_QTD.h +++ /dev/null @@ -1,40 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'EntityGUI_Point_QTD.ui' -** -** Created: ven déc 12 11:17:08 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef ENTITYGUI_POINT_QTD_H -#define ENTITYGUI_POINT_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QButtonGroup; -class QRadioButton; - -class EntityGUI_Point_QTD : public QWidget -{ - Q_OBJECT - -public: - EntityGUI_Point_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~EntityGUI_Point_QTD(); - - QButtonGroup* GroupPoint; - QRadioButton* RB_Point2; - QRadioButton* RB_Point1; - QRadioButton* RB_Point3; - - -protected: - QGridLayout* EntityGUI_Point_QTDLayout; - QGridLayout* GroupPointLayout; - QGridLayout* Layout1; -}; - -#endif // ENTITYGUI_POINT_QTD_H diff --git a/src/EntityGUI/EntityGUI_Skeleton_QTD.cxx b/src/EntityGUI/EntityGUI_Skeleton_QTD.cxx deleted file mode 100644 index 8298731f4..000000000 --- a/src/EntityGUI/EntityGUI_Skeleton_QTD.cxx +++ /dev/null @@ -1,176 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'EntityGUI_Skeleton_QTD.ui' -** -** Created: ven déc 12 11:17:08 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "EntityGUI_Skeleton_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a EntityGUI_Skeleton_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - * - * The dialog will by default be modeless, unless you set 'modal' to - * TRUE to construct a modal dialog. - */ -EntityGUI_Skeleton_QTD::EntityGUI_Skeleton_QTD( QWidget* parent, const char* name, bool modal, WFlags fl ) - : QDialog( parent, name, modal, fl ) -{ - if ( !name ) - setName( "EntityGUI_Skeleton_QTD" ); - resize( 317, 276 ); - setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)7, 0, 0, sizePolicy().hasHeightForWidth() ) ); - setCaption( trUtf8( "EntityGUI_Skeleton_QTD" ) ); - EntityGUI_Skeleton_QTDLayout = new QGridLayout( this, 1, 1, 11, 6, "EntityGUI_Skeleton_QTDLayout"); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - - GroupVal = new QGroupBox( this, "GroupVal" ); - GroupVal->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)7, 0, 0, GroupVal->sizePolicy().hasHeightForWidth() ) ); - GroupVal->setTitle( trUtf8( "" ) ); - - Layout1->addWidget( GroupVal, 2, 0 ); - - GroupConstructors = new QButtonGroup( this, "GroupConstructors" ); - GroupConstructors->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)0, 0, 0, GroupConstructors->sizePolicy().hasHeightForWidth() ) ); - GroupConstructors->setTitle( trUtf8( "Element Type" ) ); - GroupConstructors->setColumnLayout(0, Qt::Vertical ); - GroupConstructors->layout()->setSpacing( 6 ); - GroupConstructors->layout()->setMargin( 11 ); - GroupConstructorsLayout = new QGridLayout( GroupConstructors->layout() ); - GroupConstructorsLayout->setAlignment( Qt::AlignTop ); - - Layout2 = new QHBoxLayout( 0, 0, 6, "Layout2"); - - RadioButton1 = new QRadioButton( GroupConstructors, "RadioButton1" ); - RadioButton1->setText( trUtf8( "Segment" ) ); - Layout2->addWidget( RadioButton1 ); - - RadioButton2 = new QRadioButton( GroupConstructors, "RadioButton2" ); - RadioButton2->setText( trUtf8( "Arc" ) ); - Layout2->addWidget( RadioButton2 ); - - GroupConstructorsLayout->addLayout( Layout2, 0, 0 ); - - Layout1->addWidget( GroupConstructors, 0, 0 ); - - GroupDest = new QGroupBox( this, "GroupDest" ); - GroupDest->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, GroupDest->sizePolicy().hasHeightForWidth() ) ); - GroupDest->setTitle( trUtf8( "Destination" ) ); - GroupDest->setColumnLayout(0, Qt::Vertical ); - GroupDest->layout()->setSpacing( 6 ); - GroupDest->layout()->setMargin( 11 ); - GroupDestLayout = new QGridLayout( GroupDest->layout() ); - GroupDestLayout->setAlignment( Qt::AlignTop ); - - Layout5 = new QGridLayout( 0, 1, 1, 0, 6, "Layout5"); - - GroupDest1 = new QButtonGroup( GroupDest, "GroupDest1" ); - GroupDest1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, GroupDest1->sizePolicy().hasHeightForWidth() ) ); - GroupDest1->setTitle( trUtf8( "Type" ) ); - GroupDest1->setColumnLayout(0, Qt::Vertical ); - GroupDest1->layout()->setSpacing( 6 ); - GroupDest1->layout()->setMargin( 11 ); - GroupDest1Layout = new QGridLayout( GroupDest1->layout() ); - GroupDest1Layout->setAlignment( Qt::AlignTop ); - - Layout4 = new QGridLayout( 0, 1, 1, 0, 6, "Layout4"); - - RB_Dest2 = new QRadioButton( GroupDest1, "RB_Dest2" ); - RB_Dest2->setText( trUtf8( "Direction" ) ); - - Layout4->addWidget( RB_Dest2, 0, 1 ); - - RB_Dest1 = new QRadioButton( GroupDest1, "RB_Dest1" ); - RB_Dest1->setText( trUtf8( "Point" ) ); - - Layout4->addWidget( RB_Dest1, 0, 0 ); - - GroupDest1Layout->addLayout( Layout4, 0, 0 ); - - Layout5->addMultiCellWidget( GroupDest1, 0, 0, 0, 1 ); - - GroupDest2 = new QButtonGroup( GroupDest, "GroupDest2" ); - GroupDest2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)7, 0, 0, GroupDest2->sizePolicy().hasHeightForWidth() ) ); - GroupDest2->setTitle( trUtf8( "" ) ); - GroupDest2->setColumnLayout(0, Qt::Vertical ); - GroupDest2->layout()->setSpacing( 6 ); - GroupDest2->layout()->setMargin( 11 ); - GroupDest2Layout = new QGridLayout( GroupDest2->layout() ); - GroupDest2Layout->setAlignment( Qt::AlignTop ); - - Layout5->addWidget( GroupDest2, 1, 0 ); - - GroupDest3 = new QButtonGroup( GroupDest, "GroupDest3" ); - GroupDest3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)7, 0, 0, GroupDest3->sizePolicy().hasHeightForWidth() ) ); - GroupDest3->setTitle( trUtf8( "" ) ); - GroupDest3->setColumnLayout(0, Qt::Vertical ); - GroupDest3->layout()->setSpacing( 6 ); - GroupDest3->layout()->setMargin( 11 ); - GroupDest3Layout = new QGridLayout( GroupDest3->layout() ); - GroupDest3Layout->setAlignment( Qt::AlignTop ); - - Layout5->addWidget( GroupDest3, 1, 1 ); - - GroupDestLayout->addLayout( Layout5, 0, 0 ); - - Layout1->addWidget( GroupDest, 1, 0 ); - - GroupButtons = new QGroupBox( this, "GroupButtons" ); - GroupButtons->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, GroupButtons->sizePolicy().hasHeightForWidth() ) ); - GroupButtons->setTitle( trUtf8( "" ) ); - GroupButtons->setColumnLayout(0, Qt::Vertical ); - GroupButtons->layout()->setSpacing( 6 ); - GroupButtons->layout()->setMargin( 11 ); - GroupButtonsLayout = new QHBoxLayout( GroupButtons->layout() ); - GroupButtonsLayout->setAlignment( Qt::AlignTop ); - - Layout3 = new QHBoxLayout( 0, 0, 6, "Layout3"); - - buttonEnd = new QPushButton( GroupButtons, "buttonEnd" ); - buttonEnd->setText( trUtf8( "End Sketch" ) ); - Layout3->addWidget( buttonEnd ); - - buttonClose = new QPushButton( GroupButtons, "buttonClose" ); - buttonClose->setText( trUtf8( "Close Sketch" ) ); - Layout3->addWidget( buttonClose ); - QSpacerItem* spacer = new QSpacerItem( 91, 0, QSizePolicy::Expanding, QSizePolicy::Minimum ); - Layout3->addItem( spacer ); - - buttonCancel = new QPushButton( GroupButtons, "buttonCancel" ); - buttonCancel->setText( trUtf8( "&Cancel" ) ); - Layout3->addWidget( buttonCancel ); - GroupButtonsLayout->addLayout( Layout3 ); - - Layout1->addWidget( GroupButtons, 3, 0 ); - - EntityGUI_Skeleton_QTDLayout->addLayout( Layout1, 0, 0 ); - - // tab order - setTabOrder( RadioButton1, RadioButton2 ); - setTabOrder( RadioButton2, RB_Dest1 ); - setTabOrder( RB_Dest1, RB_Dest2 ); - setTabOrder( RB_Dest2, buttonEnd ); - setTabOrder( buttonEnd, buttonClose ); - setTabOrder( buttonClose, buttonCancel ); -} - -/* - * Destroys the object and frees any allocated resources - */ -EntityGUI_Skeleton_QTD::~EntityGUI_Skeleton_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/EntityGUI/EntityGUI_Skeleton_QTD.h b/src/EntityGUI/EntityGUI_Skeleton_QTD.h deleted file mode 100644 index 534f52ca3..000000000 --- a/src/EntityGUI/EntityGUI_Skeleton_QTD.h +++ /dev/null @@ -1,61 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'EntityGUI_Skeleton_QTD.ui' -** -** Created: ven déc 12 11:17:07 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef ENTITYGUI_SKELETON_QTD_H -#define ENTITYGUI_SKELETON_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QButtonGroup; -class QGroupBox; -class QPushButton; -class QRadioButton; - -class EntityGUI_Skeleton_QTD : public QDialog -{ - Q_OBJECT - -public: - EntityGUI_Skeleton_QTD( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); - ~EntityGUI_Skeleton_QTD(); - - QGroupBox* GroupVal; - QButtonGroup* GroupConstructors; - QRadioButton* RadioButton1; - QRadioButton* RadioButton2; - QGroupBox* GroupDest; - QButtonGroup* GroupDest1; - QRadioButton* RB_Dest2; - QRadioButton* RB_Dest1; - QButtonGroup* GroupDest2; - QButtonGroup* GroupDest3; - QGroupBox* GroupButtons; - QPushButton* buttonEnd; - QPushButton* buttonClose; - QPushButton* buttonCancel; - - -protected: - QGridLayout* EntityGUI_Skeleton_QTDLayout; - QGridLayout* Layout1; - QGridLayout* GroupConstructorsLayout; - QHBoxLayout* Layout2; - QGridLayout* GroupDestLayout; - QGridLayout* Layout5; - QGridLayout* GroupDest1Layout; - QGridLayout* Layout4; - QGridLayout* GroupDest2Layout; - QGridLayout* GroupDest3Layout; - QHBoxLayout* GroupButtonsLayout; - QHBoxLayout* Layout3; -}; - -#endif // ENTITYGUI_SKELETON_QTD_H diff --git a/src/EntityGUI/EntityGUI_SketcherDlg.cxx b/src/EntityGUI/EntityGUI_SketcherDlg.cxx deleted file mode 100644 index 8224cc581..000000000 --- a/src/EntityGUI/EntityGUI_SketcherDlg.cxx +++ /dev/null @@ -1,1406 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : EntityGUI_SketcherDlg.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#include "EntityGUI_SketcherDlg.h" -#include "Sketcher_Profile.hxx" -#include "GEOM_Displayer.h" - -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" -#include "SUIT_MessageBox.h" -#include "SUIT_ResourceMgr.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include "GEOMImpl_Types.hxx" - -#include "utilities.h" - -using namespace std; - -//================================================================================= -// class : EntityGUI_SketcherDlg() -// purpose : Constructs a EntityGUI_SketcherDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -EntityGUI_SketcherDlg::EntityGUI_SketcherDlg(GeometryGUI* GUI, QWidget* parent, const char* name, bool modal, WFlags fl) - :EntityGUI_Skeleton_QTD(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu | WDestructiveClose), myIsAllAdded( false ), - GEOMBase_Helper( dynamic_cast( parent ) ), - myGeometryGUI( GUI ) -{ - myGeometryGUI->SetActiveDialogBox(this); - - if ( !name ) setName("EntityGUI_SketcherDlg"); - - buttonCancel->setText(tr("GEOM_BUT_CANCEL")); - buttonEnd->setText(tr("GEOM_BUT_END_SKETCH")); - buttonClose->setText(tr("GEOM_BUT_CLOSE_SKETCH")); - - GroupVal->close(TRUE); - GroupDest2->close(TRUE); - GroupDest3->close(TRUE); - - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_UNDO"))); - QPixmap image2(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_REDO"))); - - setCaption(tr("GEOM_SKETCHER_TITLE")); - - GroupConstructors->setTitle(tr("GEOM_SKETCHER_EL")); - RadioButton1->setText(tr("GEOM_SKETCHER_SEGMENT")); - RadioButton2->setText(tr("GEOM_SKETCHER_ARC")); - GroupDest->setTitle(tr("GEOM_SKETCHER_DEST")); - GroupDest1->setTitle(tr("GEOM_SKETCHER_TYPE")); - RB_Dest1->setText(tr("GEOM_SKETCHER_POINT")); - RB_Dest2->setText(tr("GEOM_SKETCHER_DIR")); - - /***************************************************************/ - GroupPt = new EntityGUI_Point_QTD(GroupDest, "GroupPt"); - GroupPt->GroupPoint->setTitle(tr("GEOM_SKETCHER_POINT")); - GroupPt->RB_Point1->setText(tr("GEOM_SKETCHER_ABS")); - GroupPt->RB_Point2->setText(tr("GEOM_SKETCHER_REL")); - GroupPt->RB_Point3->setText(tr("GEOM_SKETCHER_SEL")); - - GroupD1 = new EntityGUI_Dir1_QTD(GroupDest, "GroupD1"); - GroupD1->GroupDir1->setTitle(tr("GEOM_SKETCHER_DIR")); - GroupD1->RB_Dir11->setText(tr("GEOM_SKETCHER_ANGLE")); - GroupD1->RB_Dir12->setText(tr("GEOM_SKETCHER_PER")); - GroupD1->RB_Dir13->setText(tr("GEOM_SKETCHER_TAN")); - GroupD1->RB_Dir14->setText(tr("GEOM_SKETCHER_VXVY")); - - GroupD2 = new EntityGUI_Dir2_QTD(GroupDest, "GroupD2"); - GroupD2->GroupDir2->setTitle(tr("GEOM_SKETCHER_DIR")); - GroupD2->RB_Dir21->setText(tr("GEOM_SKETCHER_LENGTH")); - GroupD2->RB_Dir22->setText(tr("GEOM_SKETCHER_X")); - GroupD2->RB_Dir23->setText(tr("GEOM_SKETCHER_Y")); - - Group1Sel = new EntityGUI_1Sel_QTD(this, "Group1Sel"); - Group1Sel->TextLabel1->setText(tr("GEOM_SKETCHER_POINT2")); - Group1Sel->GroupBox1->setTitle(tr("GEOM_SKETCHER_VALUES")); - Group1Sel->buttonApply->setText(tr("GEOM_SKETCHER_APPLY")); - Group1Sel->PushButton1->setPixmap(image0); - Group1Sel->buttonUndo->setPixmap(image1); - Group1Sel->buttonRedo->setPixmap(image2); - Group1Sel->LineEdit1->setReadOnly( true ); - - Group1Spin = new EntityGUI_1Spin(this, "Group1Spin"); - Group1Spin->GroupBox1->setTitle(tr("GEOM_SKETCHER_VALUES")); - Group1Spin->buttonApply->setText(tr("GEOM_SKETCHER_APPLY")); - Group1Spin->buttonUndo->setPixmap(image1); - Group1Spin->buttonRedo->setPixmap(image2); - - Group2Spin = new EntityGUI_2Spin(this, "Group2Spin"); - Group2Spin->GroupBox1->setTitle(tr("GEOM_SKETCHER_VALUES")); - Group2Spin->buttonApply->setText(tr("GEOM_SKETCHER_APPLY")); - Group2Spin->buttonUndo->setPixmap(image1); - Group2Spin->buttonRedo->setPixmap(image2); - - Group3Spin = new EntityGUI_3Spin(this, "Group3Spin"); - Group3Spin->GroupBox1->setTitle(tr("GEOM_SKETCHER_VALUES")); - Group3Spin->buttonApply->setText(tr("GEOM_SKETCHER_APPLY")); - Group3Spin->buttonUndo->setPixmap(image1); - Group3Spin->buttonRedo->setPixmap(image2); - - Group4Spin = new EntityGUI_4Spin(this, "Group4Spin"); - Group4Spin->GroupBox1->setTitle(tr("GEOM_SKETCHER_VALUES")); - Group4Spin->buttonApply->setText(tr("GEOM_SKETCHER_APPLY")); - Group4Spin->buttonUndo->setPixmap(image1); - Group4Spin->buttonRedo->setPixmap(image2); - - Layout5->addMultiCellWidget(GroupPt, 1, 1, 0, 1); - Layout5->addWidget(GroupD1, 1, 0); - Layout5->addWidget(GroupD2, 1, 1); - - Layout1->addWidget(Group1Sel, 2, 0); - Layout1->addWidget(Group1Spin, 2, 0); - Layout1->addWidget(Group2Spin, 2, 0); - Layout1->addWidget(Group3Spin, 2, 0); - Layout1->addWidget(Group4Spin, 2, 0); - /***************************************************************/ - - /* signals and slots connections */ - connect(buttonEnd, SIGNAL(clicked()), this, SLOT(ClickOnEnd())); - connect(buttonClose, SIGNAL(clicked()), this, SLOT(ClickOnEnd())); - connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel())); - - connect(Group1Sel->buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - connect(Group1Sel->buttonUndo, SIGNAL(clicked()), this, SLOT(ClickOnUndo())); - connect(Group1Sel->buttonRedo, SIGNAL(clicked()), this, SLOT(ClickOnRedo())); - connect(Group1Spin->buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - connect(Group1Spin->buttonUndo, SIGNAL(clicked()), this, SLOT(ClickOnUndo())); - connect(Group1Spin->buttonRedo, SIGNAL(clicked()), this, SLOT(ClickOnRedo())); - connect(Group2Spin->buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - connect(Group2Spin->buttonUndo, SIGNAL(clicked()), this, SLOT(ClickOnUndo())); - connect(Group2Spin->buttonRedo, SIGNAL(clicked()), this, SLOT(ClickOnRedo())); - connect(Group3Spin->buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - connect(Group3Spin->buttonUndo, SIGNAL(clicked()), this, SLOT(ClickOnUndo())); - connect(Group3Spin->buttonRedo, SIGNAL(clicked()), this, SLOT(ClickOnRedo())); - connect(Group4Spin->buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - connect(Group4Spin->buttonUndo, SIGNAL(clicked()), this, SLOT(ClickOnUndo())); - connect(Group4Spin->buttonRedo, SIGNAL(clicked()), this, SLOT(ClickOnRedo())); - - connect(GroupConstructors, SIGNAL(clicked(int)), this, SLOT(TypeClicked(int))); - connect(GroupDest1, SIGNAL(clicked(int)), this, SLOT(DestClicked(int))); - connect(GroupPt->GroupPoint, SIGNAL(clicked(int)), this, SLOT(PointClicked(int))); - connect(GroupD1->GroupDir1, SIGNAL(clicked(int)), this, SLOT(Dir1Clicked(int))); - connect(GroupD2->GroupDir2, SIGNAL(clicked(int)), this, SLOT(Dir2Clicked(int))); - - connect(Group1Sel->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(Group1Sel->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - - connect(Group1Spin->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - connect(Group2Spin->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - connect(Group2Spin->SpinBox_DY, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - connect(Group3Spin->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - connect(Group3Spin->SpinBox_DY, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - connect(Group3Spin->SpinBox_DZ, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - connect(Group4Spin->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - connect(Group4Spin->SpinBox_DY, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - connect(Group4Spin->SpinBox_DZ, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - connect(Group4Spin->SpinBox_DS, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), Group1Spin->SpinBox_DX, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), Group2Spin->SpinBox_DX, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), Group2Spin->SpinBox_DY, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), Group3Spin->SpinBox_DX, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), Group3Spin->SpinBox_DY, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), Group3Spin->SpinBox_DZ, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), Group4Spin->SpinBox_DX, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), Group4Spin->SpinBox_DY, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), Group4Spin->SpinBox_DZ, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), Group4Spin->SpinBox_DS, SLOT(SetStep(double))); - - connect(myGeometryGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog())); - connect(myGeometryGUI, SIGNAL(SignalCloseAllDialogs()), this, SLOT(ClickOnCancel())); - - Init(); -} - - -//================================================================================= -// function : ~EntityGUI_SketcherDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -EntityGUI_SketcherDlg::~EntityGUI_SketcherDlg() -{ - myGeometryGUI->SetActiveDialogBox( 0 ); -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void EntityGUI_SketcherDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = Group1Sel->LineEdit1; - myCommand.append( "Sketcher" ); - myUndoCommand.append( "Sketcher" ); - - mySketchState = FIRST_POINT; - globalSelection( GEOM_POINT ); - - myLastX1 = 0.0; - myLastY1 = 0.0; - myLastX2 = 0.0; - myLastY2 = 0.0; - - /* Get setting of step value from file configuration */ - double step = SUIT_Session::session()->resourceMgr()->doubleValue( "Geometry", "SettingsGeomStep", 100.0 ); - - /* min, max, step and decimals for spin boxes */ - Group1Spin->SpinBox_DX->RangeStepAndValidator(-999999.999, 999999.999, step, 3); - Group2Spin->SpinBox_DX->RangeStepAndValidator(-999999.999, 999999.999, step, 3); - Group2Spin->SpinBox_DY->RangeStepAndValidator(-999999.999, 999999.999, step, 3); - Group3Spin->SpinBox_DX->RangeStepAndValidator(-999999.999, 999999.999, step, 3); - Group3Spin->SpinBox_DY->RangeStepAndValidator(-999999.999, 999999.999, step, 3); - Group3Spin->SpinBox_DZ->RangeStepAndValidator(-999999.999, 999999.999, step, 3); - Group4Spin->SpinBox_DX->RangeStepAndValidator(-999999.999, 999999.999, 0.1, 3); - Group4Spin->SpinBox_DY->RangeStepAndValidator(-999999.999, 999999.999, 0.1, 3); - Group4Spin->SpinBox_DZ->RangeStepAndValidator(-999999.999, 999999.999, step, 3); - Group4Spin->SpinBox_DS->RangeStepAndValidator(-999999.999, 999999.999, 5., 3); - - /* displays Dialog */ - GroupConstructors->setEnabled(false); - GroupDest1->setEnabled(false); - setEnabledUndo(false); - setEnabledRedo(false); - - RadioButton1->setChecked(true); - - resize( 0, 0 ); - TypeClicked(0); - - GEOMBase_Helper::displayPreview(); -} - - -//================================================================================= -// function : InitClick() -// purpose : -//================================================================================= -void EntityGUI_SketcherDlg::InitClick() -{ - disconnect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), 0, this, 0); - - Group1Sel->hide(); - Group1Spin->hide(); - Group2Spin->hide(); - Group3Spin->hide(); - Group4Spin->hide(); - - resize(0, 0); -} - - -//================================================================================= -// function : TypeClicked() -// purpose : Radio button management -//================================================================================= -void EntityGUI_SketcherDlg::TypeClicked(int constructorId) -{ - myConstructorId = constructorId; - if ( myConstructorId == 0 ) // SEGMENT - { - GroupD2->setEnabled(true); - RB_Dest1->setEnabled(true); - RB_Dest1->setChecked(true); - DestClicked(1); - } - else if ( myConstructorId == 1 ) // ARC - { - GroupD2->setEnabled(false); - RB_Dest1->setEnabled(false); - RB_Dest2->setChecked(true); - DestClicked(0); - } -} - - -//================================================================================= -// function : DestClicked() -// purpose : Radio button management -//================================================================================= -void EntityGUI_SketcherDlg::DestClicked( int constructorId ) -{ - GroupPt->hide(); - GroupD1->hide(); - GroupD2->hide(); - - if ( constructorId == 1 ) - { // Point - GroupPt->RB_Point1->setChecked(true); - GroupPt->show(); - PointClicked(1); // XY - } - else if ( constructorId == 0 ) - { // Direction - GroupD1->RB_Dir11->setChecked(true); - GroupD1->show(); - GroupD2->show(); - Dir1Clicked(2); // Angle - } -} - - -//================================================================================= -// function : PointClicked() -// purpose : Radio button management -//================================================================================= -void EntityGUI_SketcherDlg::PointClicked(int constructorId) -{ - InitClick(); - - if ( myConstructorId == 0 ) - { // SEGMENT - if ( constructorId == 1 ) - { // XY - mySketchType = PT_ABS; - Group2Spin->SpinBox_DX->RangeStepAndValidator(-999999.999, 999999.999, 100., 3); - Group2Spin->SpinBox_DY->RangeStepAndValidator(-999999.999, 999999.999, 100., 3); - Group2Spin->TextLabel1->setText(tr("GEOM_SKETCHER_X2")); - Group2Spin->TextLabel2->setText(tr("GEOM_SKETCHER_Y2")); - myX = 0.0; - Group2Spin->SpinBox_DX->SetValue(myX); - myY = 0.0; - Group2Spin->SpinBox_DY->SetValue(myY); - Group2Spin->show(); - Group2Spin->buttonApply->setFocus(); - - GEOMBase_Helper::displayPreview(); - } - else if ( constructorId == 0 ) - { // DXDY - mySketchType = PT_RELATIVE; - Group2Spin->SpinBox_DX->RangeStepAndValidator(-999999.999, 999999.999, 100., 3); - Group2Spin->SpinBox_DY->RangeStepAndValidator(-999999.999, 999999.999, 100., 3); - Group2Spin->TextLabel1->setText(tr("GEOM_SKETCHER_DX2")); - Group2Spin->TextLabel2->setText(tr("GEOM_SKETCHER_DY2")); - myDX = 0.0; - Group2Spin->SpinBox_DX->SetValue(myDX); - myDY = 0.0; - Group2Spin->SpinBox_DY->SetValue(myDY); - Group2Spin->show(); - Group2Spin->buttonApply->setFocus(); - - GEOMBase_Helper::displayPreview(); - } - else if ( constructorId == 2 ) - { // Selection - mySketchType = PT_SEL; - myEditCurrentArgument = Group1Sel->LineEdit1; - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - Group1Sel->show(); - Group1Sel->buttonApply->setFocus(); - SelectionIntoArgument(); - } - } -} - - -//================================================================================= -// function : Dir1Clicked() -// purpose : Radio button management -//================================================================================= -void EntityGUI_SketcherDlg::Dir1Clicked(int constructorId) -{ - myConstructorDirId = constructorId; - GroupD2->RB_Dir21->setChecked(true); - Dir2Clicked(2); -} - - -//================================================================================= -// function : Dir2Clicked() -// purpose : Radio button management -//================================================================================= -void EntityGUI_SketcherDlg::Dir2Clicked(int constructorId) -{ - InitClick(); - myAngle = 0.0; - - if ( myConstructorId == 0 ) - { // SEGMENT - myX = 0.0; - myY = 0.0; - myLength = 100.0; - if ( myConstructorDirId == 2 ) - { // Angle - Group2Spin->SpinBox_DX->RangeStepAndValidator(-999999.999, 999999.999, 5., 3); - Group2Spin->SpinBox_DY->RangeStepAndValidator(-999999.999, 999999.999, 100., 3); - Group2Spin->TextLabel1->setText(tr("GEOM_SKETCHER_ANGLE2")); - Group2Spin->SpinBox_DX->SetValue(myAngle); - Group2Spin->buttonApply->setFocus(); - Group2Spin->show(); - - if ( constructorId == 2 ) - { // Length - mySketchType = DIR_ANGLE_LENGTH; - Group2Spin->TextLabel2->setText(tr("GEOM_SKETCHER_LENGTH2")); - Group2Spin->SpinBox_DY->SetValue(myLength); - } - else if ( constructorId == 0 ) - { // X - mySketchType = DIR_ANGLE_X; - Group2Spin->TextLabel2->setText(tr("GEOM_SKETCHER_X3")); - Group2Spin->SpinBox_DY->SetValue(myX); - } - else if ( constructorId == 1 ) - { // Y - mySketchType = DIR_ANGLE_Y; - Group2Spin->TextLabel2->setText(tr("GEOM_SKETCHER_Y3")); - Group2Spin->SpinBox_DY->SetValue(myY); - } - } - else if ( myConstructorDirId == 0 ) - { // Perpendicular - Group1Spin->show(); - Group1Spin->buttonApply->setFocus(); - - if ( constructorId == 2 ) - { // Length - mySketchType = DIR_PER_LENGTH; - Group1Spin->TextLabel1->setText(tr("GEOM_SKETCHER_LENGTH2")); - Group1Spin->SpinBox_DX->SetValue(myLength); - } - else if ( constructorId == 0 ) - { // X - mySketchType = DIR_PER_X; - Group1Spin->TextLabel1->setText(tr("GEOM_SKETCHER_X3")); - Group1Spin->SpinBox_DX->SetValue(myX); - } - else if ( constructorId == 1 ) - { // Y - mySketchType = DIR_PER_Y; - Group1Spin->TextLabel1->setText(tr("GEOM_SKETCHER_Y3")); - Group1Spin->SpinBox_DX->SetValue(myY); - } - } - else if ( myConstructorDirId == 1 ) - { // Tangent - Group1Spin->show(); - Group1Spin->buttonApply->setFocus(); - - if ( constructorId == 2 ) - { // Length - mySketchType = DIR_TAN_LENGTH; - Group1Spin->TextLabel1->setText(tr("GEOM_SKETCHER_LENGTH2")); - Group1Spin->SpinBox_DX->SetValue(myLength); - } - else if ( constructorId == 0 ) - { // X - mySketchType = DIR_TAN_X; - Group1Spin->TextLabel1->setText(tr("GEOM_SKETCHER_X3")); - Group1Spin->SpinBox_DX->SetValue(myX); - } - else if ( constructorId == 1 ) - { // Y - mySketchType = DIR_TAN_Y; - Group1Spin->TextLabel1->setText(tr("GEOM_SKETCHER_Y3")); - Group1Spin->SpinBox_DX->SetValue(myY); - } - } - else if ( myConstructorDirId == 3 ) - { // DXDY - Group3Spin->SpinBox_DX->RangeStepAndValidator(-999999.999, 999999.999, 0.1, 3); - Group3Spin->SpinBox_DY->RangeStepAndValidator(-999999.999, 999999.999, 0.1, 3); - Group3Spin->SpinBox_DZ->RangeStepAndValidator(-999999.999, 999999.999, 100., 3); - Group3Spin->TextLabel1->setText(tr("GEOM_SKETCHER_VX2")); - Group3Spin->TextLabel2->setText(tr("GEOM_SKETCHER_VY2")); - myDX = 0.0; - Group3Spin->SpinBox_DX->SetValue(myDX); - myDY = 0.0; - Group3Spin->SpinBox_DY->SetValue(myDY); - Group3Spin->show(); - Group3Spin->buttonApply->setFocus(); - - if ( constructorId == 2 ) - { // Length - mySketchType = DIR_DXDY_LENGTH; - Group3Spin->TextLabel3->setText(tr("GEOM_SKETCHER_LENGTH2")); - Group3Spin->SpinBox_DZ->SetValue(myLength); - } - else if ( constructorId == 0 ) - { // X - mySketchType = DIR_DXDY_X; - Group3Spin->TextLabel3->setText(tr("GEOM_SKETCHER_X3")); - Group3Spin->SpinBox_DZ->SetValue(myX); - } - else if ( constructorId == 1 ) - { // Y - mySketchType = DIR_DXDY_Y; - Group3Spin->TextLabel3->setText(tr("GEOM_SKETCHER_Y3")); - Group3Spin->SpinBox_DZ->SetValue(myY); - } - } - } - else if ( myConstructorId == 1 ) - { // ARC - if ( myConstructorDirId == 2 ) - { // Angle - if ( constructorId == 2 ) - { // Length - mySketchType = DIR_ANGLE_LENGTH; - Group3Spin->SpinBox_DX->RangeStepAndValidator(-999999.999, 999999.999, 5., 3); - Group3Spin->SpinBox_DY->RangeStepAndValidator(-999999.999, 999999.999, 100., 3); - Group3Spin->SpinBox_DZ->RangeStepAndValidator(-999999.999, 999999.999, 5., 3); - Group3Spin->TextLabel1->setText(tr("GEOM_SKETCHER_ANGLE2")); - Group3Spin->TextLabel2->setText(tr("GEOM_SKETCHER_RADIUS2")); - Group3Spin->TextLabel3->setText(tr("GEOM_SKETCHER_ANGLE2")); - Group3Spin->SpinBox_DX->SetValue(myAngle); - myRadius = 100.0; - Group3Spin->SpinBox_DY->SetValue(myRadius); - myLength = 30.0; - Group3Spin->SpinBox_DZ->SetValue(myLength); - Group3Spin->show(); - Group3Spin->buttonApply->setFocus(); - } - } - else if ( myConstructorDirId == 0 ) - { // Perpendicular - if ( constructorId == 2 ) - { // Length - mySketchType = DIR_PER_LENGTH; - Group2Spin->SpinBox_DY->RangeStepAndValidator(-999999.999, 999999.999, 100., 3); - Group2Spin->SpinBox_DY->RangeStepAndValidator(-999999.999, 999999.999, 5., 3); - Group2Spin->TextLabel1->setText(tr("GEOM_SKETCHER_RADIUS2")); - Group2Spin->TextLabel2->setText(tr("GEOM_SKETCHER_ANGLE2")); - myRadius = 100.0; - Group2Spin->SpinBox_DX->SetValue(myRadius); - myLength = 30.0; - Group2Spin->SpinBox_DY->SetValue(myLength); - Group2Spin->show(); - Group2Spin->buttonApply->setFocus(); - } - } - else if ( myConstructorDirId == 1 ) - { // Tangent - if ( constructorId == 2 ) - { // Length - mySketchType = DIR_TAN_LENGTH; - Group2Spin->SpinBox_DY->RangeStepAndValidator(-999999.999, 999999.999, 100., 3); - Group2Spin->SpinBox_DY->RangeStepAndValidator(-999999.999, 999999.999, 5., 3); - Group2Spin->TextLabel1->setText(tr("GEOM_SKETCHER_RADIUS2")); - Group2Spin->TextLabel2->setText(tr("GEOM_SKETCHER_ANGLE2")); - myRadius = 100.0; - Group2Spin->SpinBox_DX->SetValue(myRadius); - myLength = 30.0; - Group2Spin->SpinBox_DY->SetValue(myLength); - Group2Spin->show(); - Group2Spin->buttonApply->setFocus(); - } - } - else if ( myConstructorDirId == 3 ) - { // DXDY - if ( constructorId == 2 ) - { // Length - mySketchType = DIR_DXDY_LENGTH; - Group4Spin->TextLabel1->setText(tr("GEOM_SKETCHER_VX2")); - Group4Spin->TextLabel2->setText(tr("GEOM_SKETCHER_VY2")); - Group4Spin->TextLabel3->setText(tr("GEOM_SKETCHER_RADIUS2")); - Group4Spin->TextLabel4->setText(tr("GEOM_SKETCHER_ANGLE2")); - myDX = 0.0; - Group4Spin->SpinBox_DX->SetValue(myDX); - myDY = 0.0; - Group4Spin->SpinBox_DY->SetValue(myDY); - myRadius = 100.0; - Group4Spin->SpinBox_DZ->SetValue(myRadius); - myLength = 30.0; - Group4Spin->SpinBox_DS->SetValue(myLength); - Group4Spin->show(); - Group4Spin->buttonApply->setFocus(); - } - } - } - - GEOMBase_Helper::displayPreview(); -} - - -//================================================================================= -// function : ClickOnCancel() -// purpose : -//================================================================================= -void EntityGUI_SketcherDlg::ClickOnCancel() -{ - close(); -} - - -//================================================================================= -// function : ClickOnEnd() -// purpose : connected to buttonEnd AND buttonClose -//================================================================================= -void EntityGUI_SketcherDlg::ClickOnEnd() -{ - if ( sender() == buttonClose ) - { - // Verify validity of commands - if ( myCommand.count() <= 2 ) - { - SUIT_MessageBox::error1( SUIT_Session::session()->activeApplication()->desktop(), - tr( "GEOM_ERROR_STATUS" ), tr( "CANNOT_CLOSE" ), tr( "BUT_OK" ) ); - return; - } - - QString Command = myCommand.join( "" ) + GetNewCommand(); - Sketcher_Profile aProfile (Command.ascii()); - - Command = myCommand.join( "" ); - aProfile = Sketcher_Profile(Command.ascii()); - TopoDS_Shape myShape; - if ( aProfile.IsDone() ) - myShape = aProfile.GetShape(); - - if(myShape.ShapeType() != TopAbs_VERTEX) - myCommand.append( ":WW" ); - } - else - myIsAllAdded = true; - - if( myCommand.size() > 2 ) - if( !onAccept() ) - return; - - close(); -} - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool EntityGUI_SketcherDlg::ClickOnApply() -{ - myCommand.append( GetNewCommand() ); - mySketchState = NEXT_POINT; - - myUndoCommand.clear(); - myUndoCommand.append( "Sketcher" ); - - GroupConstructors->setEnabled(true); - GroupDest1->setEnabled(true); - setEnabledUndo(true); - setEnabledRedo(false); - - GEOMBase_Helper::displayPreview(); - - return true; -} - -//================================================================================= -// function : ClickOnUndo() -// purpose : -//================================================================================= -void EntityGUI_SketcherDlg::ClickOnUndo() -{ - myUndoCommand.append( myCommand.last() ); - myCommand.pop_back(); - - if(myCommand.count() == 1) { - mySketchState = FIRST_POINT; - - RadioButton1->setChecked(true); - TypeClicked(0); - - GroupConstructors->setEnabled(false); - GroupDest1->setEnabled(false); - setEnabledUndo(false); - } - - setEnabledRedo(true); - - GEOMBase_Helper::displayPreview(); -} - -//================================================================================= -// function : ClickOnRedo() -// purpose : -//================================================================================= -void EntityGUI_SketcherDlg::ClickOnRedo() -{ - myCommand.append( myUndoCommand.last() ); - myUndoCommand.pop_back(); - - mySketchState = NEXT_POINT; - - GroupConstructors->setEnabled(true); - GroupDest1->setEnabled(true); - setEnabledUndo(true); - - if(myUndoCommand.count() == 1) - setEnabledRedo(false); - - GEOMBase_Helper::displayPreview(); -} - -//================================================================================= -// function : setEnabledUndo() -// purpose : -//================================================================================= -void EntityGUI_SketcherDlg::setEnabledUndo(bool value) -{ - Group1Sel->buttonUndo->setEnabled(value); - Group1Spin->buttonUndo->setEnabled(value); - Group2Spin->buttonUndo->setEnabled(value); - Group3Spin->buttonUndo->setEnabled(value); - Group4Spin->buttonUndo->setEnabled(value); -} - -//================================================================================= -// function : setEnabledRedo() -// purpose : -//================================================================================= -void EntityGUI_SketcherDlg::setEnabledRedo(bool value) -{ - Group1Sel->buttonRedo->setEnabled(value); - Group1Spin->buttonRedo->setEnabled(value); - Group2Spin->buttonRedo->setEnabled(value); - Group3Spin->buttonRedo->setEnabled(value); - Group4Spin->buttonRedo->setEnabled(value); -} - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection as changed -//================================================================================= -void EntityGUI_SketcherDlg::SelectionIntoArgument() -{ - myEditCurrentArgument->setText(""); - myX = myLastX1; - myY = myLastY1; - - int nbSel = IObjectCount(); - if ( nbSel == 1 && myEditCurrentArgument == Group1Sel->LineEdit1 ) - { - Standard_Boolean aRes = Standard_False; - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), aRes ); - if ( !CORBA::is_nil( aSelectedObject ) && aRes ) { - TopoDS_Shape aShape; - if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_VERTEX ) ) { - gp_Trsf aTrans; - gp_Ax3 aWPlane = myGeometryGUI->GetWorkingPlane(); - - aTrans.SetTransformation(aWPlane); - BRepBuilderAPI_Transform aTransformation(aShape, aTrans, Standard_False); - aShape = aTransformation.Shape(); - - gp_Pnt aPnt; - if ( GEOMBase::VertexToPoint( aShape, aPnt ) ) { - myX = aPnt.X(); - myY = aPnt.Y(); - Group1Sel->LineEdit1->setText( GEOMBase::GetName( aSelectedObject ) ); - } - } - } - } - - GEOMBase_Helper::displayPreview(); -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void EntityGUI_SketcherDlg::SetEditCurrentArgument() -{ - if ( sender() == Group1Sel->PushButton1 ) - { - myEditCurrentArgument = Group1Sel->LineEdit1; - myEditCurrentArgument->setFocus(); - } - SelectionIntoArgument(); -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void EntityGUI_SketcherDlg::LineEditReturnPressed() -{ - if ( sender() == Group1Sel->LineEdit1 ) - { - myEditCurrentArgument = Group1Sel->LineEdit1; - - /* User name of object input management */ - /* If successfull the selection is changed and signal emitted... */ - /* so SelectionIntoArgument() is automatically called. */ - const QString objectUserName = myEditCurrentArgument->text(); - QWidget* thisWidget = (QWidget*)this; - if(GEOMBase::SelectionByNameInDialogs(thisWidget, objectUserName, selectedIO())) - myEditCurrentArgument->setText(objectUserName); - } -} - - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : -//================================================================================= -void EntityGUI_SketcherDlg::DeactivateActiveDialog() -{ - //myGeometryGUI->SetState( -1 ); - - setEnabled( false ); - globalSelection(); - disconnect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), 0, this, 0); - myGeometryGUI->SetActiveDialogBox(0); -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void EntityGUI_SketcherDlg::ActivateThisDialog() -{ - myGeometryGUI->EmitSignalDeactivateDialog(); - setEnabled(true); - myGeometryGUI->SetActiveDialogBox((QDialog*)this); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - - //myGeometryGUI->SetState( 0 ); - globalSelection( GEOM_POINT ); - - myEditCurrentArgument = Group1Sel->LineEdit1; - myEditCurrentArgument->setFocus(); - - GEOMBase_Helper::displayPreview(); -} - - -//================================================================================= -// function : enterEvent [REDEFINED] -// purpose : -//================================================================================= -void EntityGUI_SketcherDlg::enterEvent(QEvent* e) -{ - if ( !GroupConstructors->isEnabled()) - ActivateThisDialog(); -} - - -//================================================================================= -// function : closeEvent() -// purpose : -//================================================================================= -void EntityGUI_SketcherDlg::closeEvent(QCloseEvent* e) -{ - //myGeometryGUI->SetState( -1 ); - disconnect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), 0, this, 0); - QDialog::closeEvent( e ); -} - - -//================================================================================= -// function : ValueChangedInSpinBox() -// purpose : -//================================================================================= -void EntityGUI_SketcherDlg::ValueChangedInSpinBox(double newValue) -{ - QObject* send = (QObject*)sender(); - Standard_Real vx, vy, vz, vs; - vx = vy = vz = vs = 0.0; - - if ( send == Group1Spin->SpinBox_DX) - { - vx = newValue; - } - else if ( send == Group2Spin->SpinBox_DX ) - { - vx = newValue; - vy = Group2Spin->SpinBox_DY->GetValue(); - } - else if ( send == Group2Spin->SpinBox_DY) - { - vx = Group2Spin->SpinBox_DX->GetValue(); - vy = newValue; - } - else if ( send == Group3Spin->SpinBox_DX) - { - vx = newValue; - vy = Group3Spin->SpinBox_DY->GetValue(); - vz = Group3Spin->SpinBox_DZ->GetValue(); - } - else if ( send == Group3Spin->SpinBox_DY) - { - vx = Group3Spin->SpinBox_DX->GetValue(); - vy = newValue; - vz = Group3Spin->SpinBox_DZ->GetValue(); - } - else if ( send == Group3Spin->SpinBox_DZ) - { - vx = Group3Spin->SpinBox_DX->GetValue(); - vy = Group3Spin->SpinBox_DY->GetValue(); - vz = newValue; - } - else if ( send == Group4Spin->SpinBox_DX) - { - vx = newValue; - vy = Group4Spin->SpinBox_DY->GetValue(); - vz = Group4Spin->SpinBox_DZ->GetValue(); - vs = Group4Spin->SpinBox_DS->GetValue(); - } - else if ( send == Group4Spin->SpinBox_DY) - { - vx = Group4Spin->SpinBox_DX->GetValue(); - vy = newValue; - vz = Group4Spin->SpinBox_DZ->GetValue(); - vs = Group4Spin->SpinBox_DS->GetValue(); - } - else if ( send == Group4Spin->SpinBox_DZ) - { - vx = Group4Spin->SpinBox_DX->GetValue(); - vy = Group4Spin->SpinBox_DY->GetValue(); - vz = newValue; - vs = Group4Spin->SpinBox_DS->GetValue(); - } - else if ( send == Group4Spin->SpinBox_DS) - { - vx = Group4Spin->SpinBox_DX->GetValue(); - vy = Group4Spin->SpinBox_DY->GetValue(); - vz = Group4Spin->SpinBox_DZ->GetValue(); - vs = newValue; - } - - if ( myConstructorId == 0 ) - { // SEGMENT - if ( mySketchType == PT_ABS) - { - myX = vx; - myY = vy; - } - else if ( mySketchType == PT_RELATIVE) - { - myDX = vx; - myDY = vy; - } - else if ( mySketchType == DIR_ANGLE_LENGTH) - { - myAngle = vx; - myLength = vy; - } - else if ( mySketchType == DIR_ANGLE_X) - { - myAngle = vx; - myX = vy; - } - else if ( mySketchType == DIR_ANGLE_Y) - { - myAngle = vx; - myY = vy; - } - else if ( mySketchType == DIR_PER_LENGTH) - { - myLength = vx; - } - else if ( mySketchType == DIR_PER_X) - { - myX = vx; - } - else if ( mySketchType == DIR_PER_Y) - { - myY = vx; - } - else if ( mySketchType == DIR_TAN_LENGTH) - { - myLength = vx; - } - else if ( mySketchType == DIR_TAN_X) - { - myX = vx; - } - else if ( mySketchType == DIR_TAN_Y) - { - myY = vx; - } - else if ( mySketchType == DIR_DXDY_LENGTH) - { - myDX = vx; - myDY = vy; - myLength = vz; - } - else if ( mySketchType == DIR_DXDY_X) - { - myDX = vx; - myDY = vy; - myX = vz; - } - else if ( mySketchType == DIR_DXDY_Y) - { - myDX = vx; - myDY = vy; - myY = vz; - } - } - else if ( myConstructorId == 1 ) - { // ARC - if ( mySketchType == DIR_ANGLE_LENGTH) - { - myAngle = vx; - myRadius = vy; - myLength = vz; - } - else if ( mySketchType == DIR_PER_LENGTH) - { - myRadius = vx; - myLength = vy; - } - else if ( mySketchType == DIR_TAN_LENGTH) - { - myRadius = vx; - myLength = vy; - } - else if ( mySketchType == DIR_DXDY_LENGTH) - { - myDX = vx; - myDY = vy; - myRadius = vz; - myLength = vs; - } - } - - GEOMBase_Helper::displayPreview(); -} - - -//================================================================================= -// function : GetNewCommand() -// purpose : Build the new command with context -//================================================================================= -QString EntityGUI_SketcherDlg::GetNewCommand() -{ - QString myNewCommand = ":"; - if ( mySketchState == FIRST_POINT ) { - if ( mySketchType == PT_ABS || mySketchType == PT_SEL) - myNewCommand = myNewCommand + "F " + QString::number(myX) + " " + QString::number(myY); - if ( mySketchType == PT_RELATIVE) - myNewCommand = myNewCommand + "F " + QString::number(myDX) + " " + QString::number(myDY); - return myNewCommand; - } - - if ( myConstructorId == 0 ) - { // SEGMENT - if ( mySketchType == PT_ABS || mySketchType == PT_SEL) - myNewCommand = myNewCommand + "TT " + QString::number(myX) + " " + QString::number(myY); - if ( mySketchType == PT_RELATIVE) - myNewCommand = myNewCommand + "T " + QString::number(myDX) + " " + QString::number(myDY); - if ( mySketchType == DIR_ANGLE_LENGTH) - { - myNewCommand = myNewCommand + "R " + QString::number(myAngle); - myNewCommand = myNewCommand + ":" + "L " + QString::number(myLength); - } - if ( mySketchType == DIR_ANGLE_X) - { - myNewCommand = myNewCommand + "R " + QString::number(myAngle); - myNewCommand = myNewCommand + ":" + "IX " + QString::number(myX); - } - if ( mySketchType == DIR_ANGLE_Y) - { - myNewCommand = myNewCommand + "R " + QString::number(myAngle); - myNewCommand = myNewCommand + ":" + "IY " + QString::number(myY); - } - if ( mySketchType == DIR_PER_LENGTH) - { - myNewCommand = myNewCommand + "R " + QString::number(90.0); - myNewCommand = myNewCommand + ":" + "L " + QString::number(myLength); - } - if ( mySketchType == DIR_PER_X) - { - myNewCommand = myNewCommand + "R " + QString::number(90.0); - myNewCommand = myNewCommand + ":" + "IX " + QString::number(myX); - } - if ( mySketchType == DIR_PER_Y) - { - myNewCommand = myNewCommand + "R " + QString::number(90.0); - myNewCommand = myNewCommand + ":" + "IY " + QString::number(myY); - } - if ( mySketchType == DIR_TAN_LENGTH) - myNewCommand = myNewCommand + "L " + QString::number(myLength); - if ( mySketchType == DIR_TAN_X) - myNewCommand = myNewCommand + "IX " + QString::number(myX); - if ( mySketchType == DIR_TAN_Y) - myNewCommand = myNewCommand + "IY " + QString::number(myY); - if ( mySketchType == DIR_DXDY_LENGTH) - { - myNewCommand = myNewCommand + "D " + QString::number(myDX) + " " + QString::number(myDY); - myNewCommand = myNewCommand + ":" + "L " + QString::number(myLength); - } - if ( mySketchType == DIR_DXDY_X) - { - myNewCommand = myNewCommand + "D " + QString::number(myDX) + " " + QString::number(myDY); - myNewCommand = myNewCommand + ":" + "IX " + QString::number(myX); - } - if ( mySketchType == DIR_DXDY_Y) - { - myNewCommand = myNewCommand + "D " + QString::number(myDX) + " " + QString::number(myDY); - myNewCommand = myNewCommand + ":" + "IY " + QString::number(myY); - } - } - else if ( myConstructorId == 1 ) - { // ARC - if ( mySketchType == DIR_ANGLE_LENGTH) - { - myNewCommand = myNewCommand + "R " + QString::number(myAngle); - myNewCommand = myNewCommand + ":" + "C " + QString::number(myRadius) + " " + QString::number(myLength); - } - if ( mySketchType == DIR_PER_LENGTH) - { - myNewCommand = myNewCommand + "R " + QString::number(90.0); - myNewCommand = myNewCommand + ":" + "C " + QString::number(myRadius) + " " + QString::number(myLength); - } - if ( mySketchType == DIR_TAN_LENGTH) - { - myNewCommand = myNewCommand + "C " + QString::number(myRadius) + " " + QString::number(myLength); - } - if ( mySketchType == DIR_DXDY_LENGTH) - { - myNewCommand = myNewCommand + "D " + QString::number(myDX) + " " + QString::number(myDY); - myNewCommand = myNewCommand + ":" + "C " + QString::number(myRadius) + " " + QString::number(myLength); - } - } - return myNewCommand; -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr EntityGUI_SketcherDlg::createOperation() -{ - return getGeomEngine()->GetICurvesOperations( getStudyId() ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool EntityGUI_SketcherDlg::isValid( QString& msg ) -{ - return true; -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool EntityGUI_SketcherDlg::execute( ObjectList& objects ) -{ - if(mySketchState == FIRST_POINT) { - myLastX2 = myX; - myLastY2 = myY; - } - else { - //Test if the current point is the same as the last one - TopoDS_Shape myShape1, myShape2; - - //Last Shape - QString Command1 = myCommand.join( "" ); - Sketcher_Profile aProfile1 (Command1.ascii()); - if(aProfile1.IsDone()) - myShape1 = aProfile1.GetShape(); - - //Current Shape - QString Command2 = Command1 + GetNewCommand(); - Sketcher_Profile aProfile2 (Command2.ascii()); - if(aProfile2.IsDone()) - myShape2 = aProfile2.GetShape(); - - if(myShape2.IsNull()) { - //the current point is the same as the last one - myLastX2 = myLastX1; - myLastY2 = myLastY1; - } - else { - TopoDS_Vertex V1, V2; - gp_Pnt pt; - if(myShape1.ShapeType() == TopAbs_VERTEX) { - //the last shape is the first point - pt = BRep_Tool::Pnt(TopoDS::Vertex(myShape1)); - myLastX1 = pt.X(); - myLastY1 = pt.Y(); - } - else { - TopExp::Vertices(TopoDS::Wire(myShape1), V1, V2); - pt = BRep_Tool::Pnt(V2); - myLastX1 = pt.X(); - myLastY1 = pt.Y(); - } - TopExp::Vertices(TopoDS::Wire(myShape2), V1, V2); - pt = BRep_Tool::Pnt(V2); - myLastX2 = pt.X(); - myLastY2 = pt.Y(); - } - } - - QString cmd; - if( ( mySketchState != FIRST_POINT && myLastX1 == myLastX2 && myLastY1 == myLastY2 ) || myIsAllAdded ) { - cmd = myCommand.join( "" ); - - if ( Group1Sel->isVisible() ) { - Group1Sel->buttonApply->setEnabled(false); - Group1Sel->buttonApply->setFocus(); - } - if ( Group1Spin->isVisible() ) { - Group1Spin->buttonApply->setEnabled(false); - Group1Spin->buttonApply->setFocus(); - } - if ( Group2Spin->isVisible() ) { - Group2Spin->buttonApply->setEnabled(false); - Group2Spin->buttonApply->setFocus(); - } - if ( Group3Spin->isVisible() ) { - Group3Spin->buttonApply->setEnabled(false); - Group3Spin->buttonApply->setFocus(); - } - if ( Group4Spin->isVisible() ) { - Group4Spin->buttonApply->setEnabled(false); - Group4Spin->buttonApply->setFocus(); - } - } - else { - cmd = myCommand.join( "" ) + GetNewCommand(); - - if ( Group1Sel->isVisible() ) { - Group1Sel->buttonApply->setEnabled(true); - Group1Sel->buttonApply->setFocus(); - } - if ( Group1Spin->isVisible() ) { - Group1Spin->buttonApply->setEnabled(true); - Group1Spin->buttonApply->setFocus(); - } - if ( Group2Spin->isVisible() ) { - Group2Spin->buttonApply->setEnabled(true); - Group2Spin->buttonApply->setFocus(); - } - if ( Group3Spin->isVisible() ) { - Group3Spin->buttonApply->setEnabled(true); - Group3Spin->buttonApply->setFocus(); - } - if ( Group4Spin->isVisible() ) { - Group4Spin->buttonApply->setEnabled(true); - Group4Spin->buttonApply->setFocus(); - } - } - - gp_Ax3 myWPlane = myGeometryGUI->GetWorkingPlane(); - GEOM::ListOfDouble_var WPlane = new GEOM::ListOfDouble; - WPlane->length(9); - WPlane[0] = myWPlane.Location().X(); - WPlane[1] = myWPlane.Location().Y(); - WPlane[2] = myWPlane.Location().Z(); - - WPlane[3] = myWPlane.Direction().X(); - WPlane[4] = myWPlane.Direction().Y(); - WPlane[5] = myWPlane.Direction().Z(); - - WPlane[6] = myWPlane.XDirection().X(); - WPlane[7] = myWPlane.XDirection().Y(); - WPlane[8] = myWPlane.XDirection().Z(); - - GEOM::GEOM_Object_var anObj = GEOM::GEOM_ICurvesOperations::_narrow( getOperation() )->MakeSketcher( cmd.latin1(), WPlane ); - - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - - return true; -} - -//================================================================ -// Function : displayPreview -// Purpose : Method for displaying preview of resulting shape -// Redefined from GEOMBase_Helper. -//================================================================ -void EntityGUI_SketcherDlg::displayPreview( GEOM::GEOM_Object_ptr object, - const bool append, - const bool activate, - const bool update, - const double lineWidth ) -{ - // Set color for preview shape - getDisplayer()->SetColor( Quantity_NOC_RED ); - - // set width of displayed shape - getDisplayer()->SetWidth( lineWidth ); - - // Disable activation of selection - getDisplayer()->SetToActivate( activate ); - - // Make a reference to GEOM_Object - getDisplayer()->SetName( myGeometryGUI->getApp()->orb()->object_to_string( object ) ); - - // Create wire from applayed object - TopoDS_Shape anApplyedWire, aLastSegment; - if ( !createShapes( object, anApplyedWire, aLastSegment ) ) - return; - - // Build prs - SALOME_Prs* aPrs = getDisplayer()->BuildPrs( anApplyedWire ); - if ( aPrs != 0 && !aPrs->IsNull() ) - GEOMBase_Helper::displayPreview( aPrs, append, update ); - - getDisplayer()->SetColor( Quantity_NOC_VIOLET ); - aPrs = getDisplayer()->BuildPrs( aLastSegment ); - if ( aPrs != 0 && !aPrs->IsNull() ) - GEOMBase_Helper::displayPreview( aPrs, append, update ); - - getDisplayer()->UnsetName(); - - // Enable activation of displayed objects - getDisplayer()->SetToActivate( true ); -} - -//================================================================ -// Function : createShapes -// Purpose : Create applyed wire, and last segment from entry object -//================================================================ -bool EntityGUI_SketcherDlg::createShapes( GEOM::GEOM_Object_ptr theObject, - TopoDS_Shape& theApplyedWire, - TopoDS_Shape& theLastSegment ) -{ - TopoDS_Shape aShape; - if ( !GEOMBase::GetShape( theObject, aShape ) || - aShape.ShapeType() != TopAbs_WIRE && aShape.ShapeType() != TopAbs_VERTEX ) - return false; - - if ( Group1Sel->isVisible() && !Group1Sel->buttonApply->isEnabled() || - Group1Spin->isVisible() && !Group1Spin->buttonApply->isEnabled() || - Group2Spin->isVisible() && !Group2Spin->buttonApply->isEnabled() || - Group3Spin->isVisible() && !Group3Spin->buttonApply->isEnabled() || - Group4Spin->isVisible() && !Group4Spin->buttonApply->isEnabled() ) - { - theApplyedWire = aShape; - return true; - } - - BRepBuilderAPI_MakeWire aBuilder; - TopExp_Explorer anExp( aShape, TopAbs_EDGE ); - while( 1 ) - { - TopoDS_Shape anEdge = anExp.Current(); - anExp.Next(); - if ( anExp.More() ) // i.e. non-last edge - aBuilder.Add( TopoDS::Edge( anEdge ) ); - else - { - theLastSegment = anEdge; - break; - } - } - - if ( aBuilder.IsDone() ) - theApplyedWire = aBuilder.Shape(); - - return true; -} - - - - - - - - diff --git a/src/EntityGUI/EntityGUI_SketcherDlg.h b/src/EntityGUI/EntityGUI_SketcherDlg.h deleted file mode 100644 index 2546a5fe2..000000000 --- a/src/EntityGUI/EntityGUI_SketcherDlg.h +++ /dev/null @@ -1,152 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : EntityGUI_SketcherDlg.h -// Author : Damine COQUERET -// Module : GEOM -// $Header: - -#ifndef ENTITYGUI_SKETCHERDLG_H -#define ENTITYGUI_SKETCHERDLG_H - -#include "GEOMBase_Helper.h" - -#include "EntityGUI_Skeleton_QTD.h" -#include "EntityGUI_Point_QTD.h" -#include "EntityGUI_Dir1_QTD.h" -#include "EntityGUI_Dir2_QTD.h" - -#include "EntityGUI_1Sel_QTD.h" -#include "EntityGUI_1Spin.h" -#include "EntityGUI_2Spin.h" -#include "EntityGUI_3Spin.h" -#include "EntityGUI_4Spin.h" - -#include "EntityGUI.h" -#include "GeometryGUI.h" - -#include - -#include -#include -#include -#include -#include -#include - -//================================================================================= -// class : EntityGUI_Dlg -// purpose : -//================================================================================= -class EntityGUI_SketcherDlg : public EntityGUI_Skeleton_QTD, public GEOMBase_Helper -{ - Q_OBJECT - -public: - EntityGUI_SketcherDlg(GeometryGUI* GUI, QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~EntityGUI_SketcherDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& ); - virtual bool execute( ObjectList& objects ); - - void closeEvent( QCloseEvent* e ); - -private : - void Init(); - void enterEvent(QEvent* e); - void InitClick(); - void setEnabledUndo(bool value); - void setEnabledRedo(bool value); - - QString GetNewCommand(); - - int myConstructorId; - int myConstructorDirId; - int mySketchType; - int mySketchState; - - bool myIsAllAdded; - - QLineEdit* myEditCurrentArgument; /* Current LineEdit */ - - QStringList myCommand; - QStringList myUndoCommand; - - Standard_Real myX, myY, myDX, myDY; - Standard_Real myLength, myAngle, myRadius; - Standard_Real myLastX1, myLastY1; - Standard_Real myLastX2, myLastY2; - - EntityGUI_Point_QTD* GroupPt; - EntityGUI_Dir1_QTD* GroupD1; - EntityGUI_Dir2_QTD* GroupD2; - - EntityGUI_1Sel_QTD* Group1Sel; - EntityGUI_1Spin* Group1Spin; - EntityGUI_2Spin* Group2Spin; - EntityGUI_3Spin* Group3Spin; - EntityGUI_4Spin* Group4Spin; - - GeometryGUI* myGeometryGUI; - - enum SketchState {FIRST_POINT, NEXT_POINT}; - - enum SketchType {PT_ABS, PT_RELATIVE, PT_SEL, - DIR_ANGLE_LENGTH, DIR_ANGLE_X, DIR_ANGLE_Y, - DIR_PER_LENGTH, DIR_PER_X, DIR_PER_Y, - DIR_TAN_LENGTH, DIR_TAN_X, DIR_TAN_Y, - DIR_DXDY_LENGTH, DIR_DXDY_X, DIR_DXDY_Y}; - - virtual void displayPreview ( GEOM::GEOM_Object_ptr obj, - const bool append = false, - const bool activate = false, - const bool update = true, - const double lineWidth = -1 ); - - bool createShapes( GEOM::GEOM_Object_ptr theObject, - TopoDS_Shape& theApplyedWire, - TopoDS_Shape& theLastSegment ); -private slots: - void ClickOnEnd(); - void ClickOnCancel(); - bool ClickOnApply(); - void ClickOnUndo(); - void ClickOnRedo(); - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - void DeactivateActiveDialog(); - void ActivateThisDialog(); - void TypeClicked(int constructorId); - void DestClicked(int constructorId); - void PointClicked(int constructorId); - void Dir1Clicked(int constructorId); - void Dir2Clicked(int constructorId); - void ValueChangedInSpinBox(double newValue); - -}; - -#endif // ENTITYGUI_SKETCHERDLG_H diff --git a/src/EntityGUI/EntityGUI_SubShapeDlg.cxx b/src/EntityGUI/EntityGUI_SubShapeDlg.cxx deleted file mode 100644 index 0e55e14cc..000000000 --- a/src/EntityGUI/EntityGUI_SubShapeDlg.cxx +++ /dev/null @@ -1,596 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : EntityGUI_SubShapeDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "EntityGUI_SubShapeDlg.h" -#include "GEOM_Displayer.h" - -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" -#include "OCCViewer_ViewModel.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" -#include "SALOME_ListIteratorOfListIO.hxx" - -#include -#include -#include -#include - -#include -#include -#include - -//================================================================================= -// class : EntityGUI_SubShapeDlg -// purpose : Constructs a EntityGUI_SubShapeDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -EntityGUI_SubShapeDlg::EntityGUI_SubShapeDlg(QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, fl) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_SUBSHAPE"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_SUBSHAPE_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_SUB_SHAPE")); - RadioButton1->setPixmap(image0); - RadioButton2->close(TRUE); - RadioButton3->close(TRUE); - - GroupPoints = new DlgRef_1Sel1Check1List_QTD(this, "GroupPoints"); - GroupPoints->GroupBox1->setTitle(tr("GEOM_ARGUMENTS")); - GroupPoints->TextLabel1->setText(tr("GEOM_MAIN_OBJECT")); - GroupPoints->TextLabel2->setText(tr("GEOM_SUBSHAPE_TYPE")); - GroupPoints->CheckButton1->setText(tr("GEOM_SUBSHAPE_SELECT")); - GroupPoints->PushButton1->setPixmap(image1); - GroupPoints->LineEdit1->setReadOnly( true ); - - Layout1->addWidget(GroupPoints, 1, 0); - /***************************************************************/ - - Init(); -} - - -//================================================================================= -// function : ~EntityGUI_SubShapeDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -EntityGUI_SubShapeDlg::~EntityGUI_SubShapeDlg() -{ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void EntityGUI_SubShapeDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = GroupPoints->LineEdit1; - myObject = GEOM::GEOM_Object::_nil(); - - myWithShape = true; - - /* type for sub shape selection */ - GroupPoints->ComboBox1->insertItem("Compound"); - GroupPoints->ComboBox1->insertItem("Compsolid"); - GroupPoints->ComboBox1->insertItem("Solid"); - GroupPoints->ComboBox1->insertItem("Shell"); - GroupPoints->ComboBox1->insertItem("Face"); - GroupPoints->ComboBox1->insertItem("Wire"); - GroupPoints->ComboBox1->insertItem("Edge"); - GroupPoints->ComboBox1->insertItem("Vertex"); - GroupPoints->ComboBox1->insertItem("Shape"); - - if (SUIT_Session::session()->activeApplication()->desktop()->activeWindow()->getViewManager()->getType() - != OCCViewer_Viewer::Type()) - GroupPoints->CheckButton1->setEnabled(false); - - /* signals and slots connections */ - connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel())); - connect(myGeomGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog())); - connect(myGeomGUI, SIGNAL(SignalCloseAllDialogs()), this, SLOT(ClickOnCancel())); - - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - - connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect(GroupPoints->ComboBox1, SIGNAL(activated(int)), this, SLOT(ComboTextChanged())); - connect(GroupPoints->CheckButton1, SIGNAL(stateChanged(int)), this, SLOT(SubShapeToggled())); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - - updateButtonState(); - - SelectionIntoArgument(); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void EntityGUI_SubShapeDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool EntityGUI_SubShapeDlg::ClickOnApply() -{ - SUIT_Session::session()->activeApplication()->putInfo(tr("")); - - /* Explode all sub shapes */ - if( isAllSubShapes() ) { - /* More than 30 subshapes : ask confirmation */ - unsigned int nb = NumberOfSubShapes(myShape, shapeType()); - if(nb > 30) { - const QString caption = tr("GEOM_CONFIRM"); - const QString text = tr("GEOM_CONFIRM_INFO").arg(nb); - const QString button0 = tr("GEOM_BUT_EXPLODE"); - const QString button1 = tr("GEOM_BUT_CANCEL"); - - if(QMessageBox::warning(this, caption, text, button0, button1) != 0) - return false; /* aborted */ - } - } - - return onAccept(); -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection as changed or other case -// : used only by SelectButtonC1A1 (LineEditC1A1) -//================================================================================= -void EntityGUI_SubShapeDlg::SelectionIntoArgument() -{ - if ( !isAllSubShapes() ) - return; - - ResetStateOfDialog(); - - QString aString = ""; /* name of selection */ - - int nbSel = GEOMBase::GetNameOfSelectedIObjects( selectedIO(), aString, true ); - if( nbSel != 1 ) - return; - - TopoDS_Shape S; - Handle(SALOME_InteractiveObject) IO = firstIObject(); - if ( !IO->hasEntry() ) - { - SUIT_Session::session()->activeApplication()->putInfo( tr( "GEOM_PRP_SHAPE_IN_STUDY" ) ); - updateButtonState(); - return; - } - - if ( !myGeomBase->GetTopoFromSelection( selectedIO(), S ) || - S.IsNull() || - S.ShapeType() == TopAbs_VERTEX ) - { - updateButtonState(); - return; - } - - - Standard_Boolean testResult; - myObject = GEOMBase::ConvertIOinGEOMObject( IO, testResult ); - if ( !testResult || myObject->_is_nil() ) - { - updateButtonState(); - return; - } - - myShape = S; - GroupPoints->LineEdit1->setText( aString ); - - - int SelectedShapeType = GroupPoints->ComboBox1->currentItem(); - int count = GroupPoints->ComboBox1->count(); - - if ( myWithShape ) - count = count - 1; - - int i = 0; - // Solving PAL5590 - if ( myShape.ShapeType() == TopAbs_COMPOUND ) { - unsigned int nb = NumberOfSubShapes(myShape, TopAbs_COMPOUND); - if (nb > 0) - i++; - } - while ( i <= myShape.ShapeType()) - { - GroupPoints->ComboBox1->removeItem( 0 ); - i++; - } - - if ( myShape.ShapeType() == TopAbs_COMPOUND ) - { - if ( myWithShape == false ) - { - GroupPoints->ComboBox1->insertItem( "Shape" ); - myWithShape = true; - } - } - else - { - if ( myWithShape == true ) - { - GroupPoints->ComboBox1->removeItem( GroupPoints->ComboBox1->count() - 1 ); - myWithShape = false; - } - } - - int count1 = GroupPoints->ComboBox1->count(); - if ( myWithShape ) - count1 = count1 - 1; - - if ( SelectedShapeType > myShape.ShapeType() ) - { - if ( SelectedShapeType == 8 ) - { - if ( myShape.ShapeType() != TopAbs_COMPOUND ) - { - GroupPoints->ComboBox1->setCurrentItem( 0 ); - ComboTextChanged(); - } - } - else - GroupPoints->ComboBox1->setCurrentItem(count1 - count + SelectedShapeType); - } - else - { - GroupPoints->ComboBox1->setCurrentItem( 0 ); - ComboTextChanged(); - } - - updateButtonState(); -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void EntityGUI_SubShapeDlg::SetEditCurrentArgument() -{ - GroupPoints->LineEdit1->setFocus(); - myEditCurrentArgument = GroupPoints->LineEdit1; - - GroupPoints->CheckButton1->setChecked( FALSE ); - SubShapeToggled(); - SelectionIntoArgument(); -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void EntityGUI_SubShapeDlg::LineEditReturnPressed() -{ - QLineEdit* send = (QLineEdit*)sender(); - if(send == GroupPoints->LineEdit1) - SetEditCurrentArgument(); - else - return; - - GEOMBase_Skeleton::LineEditReturnPressed(); -} - - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : -//================================================================================= -void EntityGUI_SubShapeDlg::DeactivateActiveDialog() -{ - if(GroupConstructors->isEnabled()) { - GEOMBase_Skeleton::DeactivateActiveDialog(); - } -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void EntityGUI_SubShapeDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - SubShapeToggled(); - updateButtonState(); -} - - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void EntityGUI_SubShapeDlg::enterEvent(QEvent* e) -{ - if(GroupConstructors->isEnabled()) - return; - ActivateThisDialog(); -} - -//================================================================================= -// function : ResetStateOfDialog() -// purpose : Completely reset the state of method including local context -//================================================================================= -void EntityGUI_SubShapeDlg::ResetStateOfDialog() -{ - myObject = GEOM::GEOM_Object::_nil(); - myShape.Nullify(); - myEditCurrentArgument->setText(""); - - int SelectedShapeType = GroupPoints->ComboBox1->currentItem(); - int count = GroupPoints->ComboBox1->count(); - if ( myWithShape ) - count = count - 1; - - /* type for sub shape selection */ - GroupPoints->ComboBox1->clear(); - GroupPoints->ComboBox1->insertItem("Compound"); - GroupPoints->ComboBox1->insertItem("Compsolid"); - GroupPoints->ComboBox1->insertItem("Solid"); - GroupPoints->ComboBox1->insertItem("Shell"); - GroupPoints->ComboBox1->insertItem("Face"); - GroupPoints->ComboBox1->insertItem("Wire"); - GroupPoints->ComboBox1->insertItem("Edge"); - GroupPoints->ComboBox1->insertItem("Vertex"); - GroupPoints->ComboBox1->insertItem("Shape"); - - myWithShape = true; - - GroupPoints->ComboBox1->setCurrentItem( 8 - count + SelectedShapeType ); - ComboTextChanged(); - - updateButtonState(); -} - - -//================================================================================= -// function : SubShapeToggled() -// purpose : Allow user selection of all or only selected sub shapes -// : Called when 'CheckButton1' state change -//================================================================================= -void EntityGUI_SubShapeDlg::SubShapeToggled() -{ - if ( isAllSubShapes() ) - globalSelection( GEOM_ALLSHAPES ); - else - localSelection( myObject, shapeType() ); -} - - -//================================================================================= -// function : ComboTextChanged() -// purpose : -//================================================================================= -void EntityGUI_SubShapeDlg::ComboTextChanged() -{ - /* Select sub shapes mode not checked */ - updateButtonState(); - SubShapeToggled(); -} - - -//================================================================================= -// function : NumberOfSubShapes() -// purpose : -//================================================================================= -unsigned int EntityGUI_SubShapeDlg::NumberOfSubShapes (const TopoDS_Shape& S, - const int shapeType) const -{ - if (S.IsNull()) - return 0; - - unsigned int index = 0; - TopTools_MapOfShape M; - - if (S.ShapeType() == TopAbs_COMPOUND && - (TopAbs_ShapeEnum(shapeType) == TopAbs_SHAPE || - TopAbs_ShapeEnum(shapeType) == TopAbs_COMPSOLID || - TopAbs_ShapeEnum(shapeType) == TopAbs_COMPOUND)) { - TopoDS_Iterator It (S, Standard_True, Standard_True); - for (; It.More(); It.Next()) { - if (M.Add(It.Value())) { - if (TopAbs_ShapeEnum(shapeType) == TopAbs_SHAPE || - TopAbs_ShapeEnum(shapeType) == It.Value().ShapeType()) { - index++; - } - } - } - } else { - TopExp_Explorer Exp (S, TopAbs_ShapeEnum(shapeType)); - for (; Exp.More(); Exp.Next()) { - if (M.Add(Exp.Current())) { - index++; - } - } - } - - M.Clear(); - return index; -} - -//================================================================================= -// function : updateButtonState -// purpose : -//================================================================================= -void EntityGUI_SubShapeDlg::updateButtonState() -{ - if ( SUIT_Session::session()->activeApplication()->desktop()->activeWindow()->getViewManager()->getType() != OCCViewer_Viewer::Type() || - myObject->_is_nil() || shapeType() == TopAbs_SHAPE || shapeType() == TopAbs_COMPOUND ) { - GroupPoints->CheckButton1->setChecked( FALSE ); - GroupPoints->CheckButton1->setEnabled( FALSE ); - } - else - GroupPoints->CheckButton1->setEnabled( TRUE ); -} - -//================================================================================= -// function : isAllSubShapes -// purpose : -//================================================================================= -bool EntityGUI_SubShapeDlg::isAllSubShapes() const -{ - return !GroupPoints->CheckButton1->isChecked() || !GroupPoints->CheckButton1->isEnabled(); -} - -//================================================================================= -// function : shapeType -// purpose : -//================================================================================= -int EntityGUI_SubShapeDlg::shapeType() const -{ - int type = GroupPoints->ComboBox1->currentItem(); - - if (myObject->_is_nil()) - return type; - - // Solving PAL5590 - type += myShape.ShapeType() + 1; - if (myShape.ShapeType() == TopAbs_COMPOUND && - NumberOfSubShapes(myShape, TopAbs_COMPOUND) > 0) { - type--; - } - - return type; -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr EntityGUI_SubShapeDlg::createOperation() -{ - return getGeomEngine()->GetIShapesOperations( getStudyId() ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool EntityGUI_SubShapeDlg::isValid( QString& msg ) -{ - bool isOk = false; - if ( !myObject->_is_nil() ) { - if ( isAllSubShapes() ) - isOk = true; - else if ( IObjectCount() == 1 ) { - Standard_Boolean aResult = Standard_False; - GEOM::GEOM_Object_var anObj = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), aResult ); - - if ( aResult && !anObj->_is_nil() ) { - TColStd_IndexedMapOfInteger aMapIndex; - ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr()->GetIndexes( firstIObject(), aMapIndex ); - isOk = aMapIndex.Extent() > 0; - if ( !isOk ) - msg += tr( "NO_SUBSHAPES_SELECTED" ); - } - } - } - return isOk; -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool EntityGUI_SubShapeDlg::execute( ObjectList& objects ) -{ - GEOM::ListOfGO_var aList = GEOM::GEOM_IShapesOperations::_narrow( - getOperation() )->MakeExplode( myObject, shapeType(), false ); - - if ( !aList->length() ) - return false; - - // Throw away sub-shapes not selected by user if not in preview mode - // and manual selection is active - if ( !isAllSubShapes() ) - { - if ( IObjectCount() == 1 ) { - Standard_Boolean aResult = Standard_False; - GEOM::GEOM_Object_var anObj = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), aResult ); - - if ( aResult && !anObj->_is_nil() ) { - TColStd_IndexedMapOfInteger aMapIndex; - ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr()->GetIndexes( firstIObject(), aMapIndex ); - - GEOM::GEOM_ILocalOperations_var aLocOp = - getGeomEngine()->GetILocalOperations( getStudyId() ); - - for ( int i = 0, n = aList->length(); i < n; i++ ) - if ( aMapIndex.Contains( aLocOp->GetSubShapeIndex( myObject, aList[i] ) ) ) - objects.push_back( GEOM::GEOM_Object::_duplicate( aList[i] ) ); - } - } - } - else - for ( int i = 0, n = aList->length(); i < n; i++ ) - objects.push_back( GEOM::GEOM_Object::_duplicate( aList[i] ) ); - - return objects.size(); -} - -//================================================================ -// Function : getFather -// Purpose : Get father object for object to be added in study -// ( called with addInStudy method ) -//================================================================ -GEOM::GEOM_Object_ptr EntityGUI_SubShapeDlg::getFather( GEOM::GEOM_Object_ptr ) -{ - return myObject; -} - -const char* EntityGUI_SubShapeDlg::getNewObjectName() const -{ - return ""; -} diff --git a/src/EntityGUI/EntityGUI_SubShapeDlg.h b/src/EntityGUI/EntityGUI_SubShapeDlg.h deleted file mode 100644 index 59fa1e016..000000000 --- a/src/EntityGUI/EntityGUI_SubShapeDlg.h +++ /dev/null @@ -1,93 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : EntityGUI_SubShapeDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_SUBSHAPE_H -#define DIALOGBOX_SUBSHAPE_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_1Sel1Check1List_QTD.h" - - -//================================================================================= -// class : EntityGUI_SubShapeDlg -// purpose : -//================================================================================= -class EntityGUI_SubShapeDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - EntityGUI_SubShapeDlg( QWidget* parent = 0, - const char* name = 0, - bool modal = FALSE, - WFlags fl = 0 ); - ~EntityGUI_SubShapeDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& ); - virtual bool execute( ObjectList& objects ); - virtual GEOM::GEOM_Object_ptr getFather( GEOM::GEOM_Object_ptr theObj ); - virtual const char* getNewObjectName() const; - -private slots: - void ClickOnOk(); - bool ClickOnApply(); - void ActivateThisDialog(); - void DeactivateActiveDialog(); - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - void SubShapeToggled(); - void ComboTextChanged(); - -private : - void Init(); - void enterEvent( QEvent* e ); - - void ResetStateOfDialog(); - unsigned int NumberOfSubShapes (const TopoDS_Shape& S, - const int shapeType) const; - - void updateButtonState(); - bool isAllSubShapes() const; - int shapeType() const; - -private: - - TopoDS_Shape myShape; - GEOM::GEOM_Object_var myObject; - - bool myWithShape; - - DlgRef_1Sel1Check1List_QTD* GroupPoints; - ObjectList myResult; -}; - -#endif // DIALOGBOX_SUBSHAPE_H diff --git a/src/EntityGUI/Makefile.in b/src/EntityGUI/Makefile.in deleted file mode 100644 index 720b6f7e9..000000000 --- a/src/EntityGUI/Makefile.in +++ /dev/null @@ -1,88 +0,0 @@ -# GEOM ENTITYGUI : -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Author : Damien COQUERET (OCC) -# Module : GEOM -# $Header: - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -# Libraries targets -LIB = libEntityGUI.la - -# header files -EXPORT_HEADERS= - -LIB_SRC = EntityGUI.cxx \ - EntityGUI_Skeleton_QTD.cxx \ - EntityGUI_Point_QTD.cxx \ - EntityGUI_Dir1_QTD.cxx \ - EntityGUI_Dir2_QTD.cxx \ - EntityGUI_1Sel_QTD.cxx \ - EntityGUI_1Spin_QTD.cxx \ - EntityGUI_2Spin_QTD.cxx \ - EntityGUI_3Spin_QTD.cxx \ - EntityGUI_4Spin_QTD.cxx \ - EntityGUI_1Spin.cxx \ - EntityGUI_2Spin.cxx \ - EntityGUI_3Spin.cxx \ - EntityGUI_4Spin.cxx \ - EntityGUI_SketcherDlg.cxx \ - EntityGUI_SubShapeDlg.cxx - -LIB_MOC = \ - EntityGUI_Skeleton_QTD.h \ - EntityGUI_Point_QTD.h \ - EntityGUI_Dir1_QTD.h \ - EntityGUI_Dir2_QTD.h \ - EntityGUI_1Sel_QTD.h \ - EntityGUI_1Spin_QTD.h \ - EntityGUI_2Spin_QTD.h \ - EntityGUI_3Spin_QTD.h \ - EntityGUI_4Spin_QTD.h \ - EntityGUI_1Spin.h \ - EntityGUI_2Spin.h \ - EntityGUI_3Spin.h \ - EntityGUI_4Spin.h \ - EntityGUI_SketcherDlg.h \ - EntityGUI_SubShapeDlg.h - -LIB_CLIENT_IDL = SALOME_Exception.idl SALOME_GenericObj.idl SALOME_Component.idl - -LIB_SERVER_IDL = - -# additionnal information to compil and link file - -CPPFLAGS += $(QT_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(PYTHON_INCLUDES) $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome -CXXFLAGS += -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome - -LDFLAGS += -lGEOMFiltersSelection -lGEOMSketcher -lGEOMBase -lGEOM - -@CONCLUDE@ diff --git a/src/EntityGUI/UIFiles/EntityGUI_1Sel_QTD.ui b/src/EntityGUI/UIFiles/EntityGUI_1Sel_QTD.ui deleted file mode 100644 index c88df1ae6..000000000 --- a/src/EntityGUI/UIFiles/EntityGUI_1Sel_QTD.ui +++ /dev/null @@ -1,218 +0,0 @@ - -EntityGUI_1Sel_QTD - - - EntityGUI_1Sel_QTD - - - - 0 - 0 - 329 - 112 - - - - EntityGUI_1Sel_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - Values - - - - unnamed - - - 11 - - - 6 - - - - Layout4 - - - - unnamed - - - 0 - - - 6 - - - - Layout3 - - - - unnamed - - - 0 - - - 6 - - - - Spacer5 - - - Vertical - - - Expanding - - - - 0 - 163 - - - - - - buttonApply - - - Create - - - - - Layout2 - - - - unnamed - - - 0 - - - 6 - - - - buttonRedo - - - Redo - - - - - buttonUndo - - - Undo - - - - - - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - TextLabel1 - - - - 0 - 0 - 0 - 0 - - - - TL1 - - - - - Spacer1 - - - Vertical - - - Expanding - - - - 0 - 180 - - - - - - PushButton1 - - - - 0 - 0 - 0 - 0 - - - - - - - - - LineEdit1 - - - - 3 - 0 - 0 - 0 - - - - - - - - - - - - - - diff --git a/src/EntityGUI/UIFiles/EntityGUI_1Spin_QTD.ui b/src/EntityGUI/UIFiles/EntityGUI_1Spin_QTD.ui deleted file mode 100644 index e1d0a7151..000000000 --- a/src/EntityGUI/UIFiles/EntityGUI_1Spin_QTD.ui +++ /dev/null @@ -1,201 +0,0 @@ - -EntityGUI_1Spin_QTD - - - EntityGUI_1Spin_QTD - - - - 0 - 0 - 255 - 112 - - - - EntityGUI_1Spin_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - Values - - - - unnamed - - - 11 - - - 6 - - - - Layout4 - - - - unnamed - - - 0 - - - 6 - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - TextLabel1 - - - - 0 - 0 - 0 - 0 - - - - TL1 - - - - - SpinBox1 - - - - 7 - 0 - 0 - 0 - - - - - - Spacer1 - - - Vertical - - - Expanding - - - - 0 - 82 - - - - - - - - Layout3 - - - - unnamed - - - 0 - - - 6 - - - - Layout2 - - - - unnamed - - - 0 - - - 6 - - - - buttonRedo - - - Redo - - - - - buttonUndo - - - Undo - - - - - - - buttonApply - - - Create - - - - - Spacer5 - - - Vertical - - - Expanding - - - - 0 - 40 - - - - - - - - - - - - - diff --git a/src/EntityGUI/UIFiles/EntityGUI_2Spin_QTD.ui b/src/EntityGUI/UIFiles/EntityGUI_2Spin_QTD.ui deleted file mode 100644 index 938383c07..000000000 --- a/src/EntityGUI/UIFiles/EntityGUI_2Spin_QTD.ui +++ /dev/null @@ -1,230 +0,0 @@ - -EntityGUI_2Spin_QTD - - - EntityGUI_2Spin_QTD - - - - 0 - 0 - 255 - 112 - - - - EntityGUI_2Spin_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - Values - - - - unnamed - - - 11 - - - 6 - - - - Layout4 - - - - unnamed - - - 0 - - - 6 - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - TextLabel2 - - - - 0 - 0 - 0 - 0 - - - - TL2 - - - - - TextLabel1 - - - - 0 - 0 - 0 - 0 - - - - TL1 - - - - - SpinBox1 - - - - 7 - 0 - 0 - 0 - - - - - - SpinBox2 - - - - 7 - 0 - 0 - 0 - - - - - - Spacer1 - - - Vertical - - - Expanding - - - - 0 - 82 - - - - - - - - Layout3 - - - - unnamed - - - 0 - - - 6 - - - - Spacer5 - - - Vertical - - - Expanding - - - - 0 - 51 - - - - - - Layout2 - - - - unnamed - - - 0 - - - 6 - - - - buttonUndo - - - Undo - - - - - buttonRedo - - - Redo - - - - - - - buttonApply - - - Create - - - - - - - - - - - - diff --git a/src/EntityGUI/UIFiles/EntityGUI_3Spin_QTD.ui b/src/EntityGUI/UIFiles/EntityGUI_3Spin_QTD.ui deleted file mode 100644 index c094d5791..000000000 --- a/src/EntityGUI/UIFiles/EntityGUI_3Spin_QTD.ui +++ /dev/null @@ -1,259 +0,0 @@ - -EntityGUI_3Spin_QTD - - - EntityGUI_3Spin_QTD - - - - 0 - 0 - 255 - 125 - - - - EntityGUI_3Spin_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - Values - - - - unnamed - - - 11 - - - 6 - - - - Layout4 - - - - unnamed - - - 0 - - - 6 - - - - Layout3 - - - - unnamed - - - 0 - - - 6 - - - - buttonApply - - - Create - - - - - Spacer5 - - - Vertical - - - Expanding - - - - 0 - 121 - - - - - - Layout2 - - - - unnamed - - - 0 - - - 6 - - - - buttonUndo - - - Undo - - - - - buttonRedo - - - Redo - - - - - - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - TextLabel2 - - - - 0 - 0 - 0 - 0 - - - - TL2 - - - - - TextLabel1 - - - - 0 - 0 - 0 - 0 - - - - TL1 - - - - - SpinBox1 - - - - 7 - 0 - 0 - 0 - - - - - - SpinBox2 - - - - 7 - 0 - 0 - 0 - - - - - - TextLabel3 - - - - 0 - 0 - 0 - 0 - - - - TL3 - - - - - Spacer1 - - - Vertical - - - Expanding - - - - 0 - 82 - - - - - - SpinBox3 - - - - 7 - 0 - 0 - 0 - - - - - - - - - - - - - diff --git a/src/EntityGUI/UIFiles/EntityGUI_4Spin_QTD.ui b/src/EntityGUI/UIFiles/EntityGUI_4Spin_QTD.ui deleted file mode 100644 index 956ce0d1b..000000000 --- a/src/EntityGUI/UIFiles/EntityGUI_4Spin_QTD.ui +++ /dev/null @@ -1,288 +0,0 @@ - -EntityGUI_4Spin_QTD - - - EntityGUI_4Spin_QTD - - - - 0 - 0 - 255 - 154 - - - - EntityGUI_4Spin_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - Values - - - - unnamed - - - 11 - - - 6 - - - - Layout4 - - - - unnamed - - - 0 - - - 6 - - - - Layout3 - - - - unnamed - - - 0 - - - 6 - - - - Layout2 - - - - unnamed - - - 0 - - - 6 - - - - buttonRedo - - - Redo - - - - - buttonUndo - - - Undo - - - - - - - Spacer5 - - - Vertical - - - Expanding - - - - 0 - 45 - - - - - - buttonApply - - - Create - - - - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - SpinBox3 - - - - 7 - 0 - 0 - 0 - - - - - - SpinBox2 - - - - 7 - 0 - 0 - 0 - - - - - - TextLabel2 - - - - 0 - 0 - 0 - 0 - - - - TL2 - - - - - Spacer1 - - - Vertical - - - Expanding - - - - 0 - 70 - - - - - - SpinBox4 - - - - 7 - 0 - 0 - 0 - - - - - - TextLabel3 - - - - 0 - 0 - 0 - 0 - - - - TL3 - - - - - SpinBox1 - - - - 7 - 0 - 0 - 0 - - - - - - TextLabel1 - - - - 0 - 0 - 0 - 0 - - - - TL1 - - - - - TextLabel4 - - - - 0 - 0 - 0 - 0 - - - - TL4 - - - - - - - - - - - - diff --git a/src/EntityGUI/UIFiles/EntityGUI_Dir1_QTD.ui b/src/EntityGUI/UIFiles/EntityGUI_Dir1_QTD.ui deleted file mode 100644 index 59f644641..000000000 --- a/src/EntityGUI/UIFiles/EntityGUI_Dir1_QTD.ui +++ /dev/null @@ -1,112 +0,0 @@ - -EntityGUI_Dir1_QTD - - - EntityGUI_Dir1_QTD - - - - 0 - 0 - 131 - 123 - - - - EntityGUI_Dir1_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupDir1 - - - - 7 - 0 - 0 - 0 - - - - Direction - - - - unnamed - - - 11 - - - 6 - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - RB_Dir12 - - - Perpendicular - - - - - RB_Dir13 - - - Tangent - - - - - RB_Dir11 - - - Angle - - - - - RB_Dir14 - - - VX-VY - - - - - - - - - - RB_Dir11 - RB_Dir12 - RB_Dir13 - RB_Dir14 - - - diff --git a/src/EntityGUI/UIFiles/EntityGUI_Dir2_QTD.ui b/src/EntityGUI/UIFiles/EntityGUI_Dir2_QTD.ui deleted file mode 100644 index 617d3c3f6..000000000 --- a/src/EntityGUI/UIFiles/EntityGUI_Dir2_QTD.ui +++ /dev/null @@ -1,120 +0,0 @@ - -EntityGUI_Dir2_QTD - - - EntityGUI_Dir2_QTD - - - - 0 - 0 - 124 - 106 - - - - EntityGUI_Dir2_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupDir2 - - - - 7 - 7 - 0 - 0 - - - - Direction - - - - unnamed - - - 11 - - - 6 - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - RB_Dir22 - - - X - - - - - RB_Dir23 - - - Y - - - - - Spacer4 - - - Vertical - - - Expanding - - - - 0 - 20 - - - - - - RB_Dir21 - - - Length - - - - - - - - - - RB_Dir21 - RB_Dir22 - RB_Dir23 - - - diff --git a/src/EntityGUI/UIFiles/EntityGUI_Point_QTD.ui b/src/EntityGUI/UIFiles/EntityGUI_Point_QTD.ui deleted file mode 100644 index 8e0bd22ad..000000000 --- a/src/EntityGUI/UIFiles/EntityGUI_Point_QTD.ui +++ /dev/null @@ -1,103 +0,0 @@ - -EntityGUI_Point_QTD - - - EntityGUI_Point_QTD - - - - 0 - 0 - 124 - 106 - - - - EntityGUI_Point_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupPoint - - - - 7 - 0 - 0 - 0 - - - - Point - - - - unnamed - - - 11 - - - 6 - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - RB_Point2 - - - Relative - - - - - RB_Point1 - - - Absolute - - - - - RB_Point3 - - - Selection - - - - - - - - - - RB_Point1 - RB_Point2 - RB_Point3 - - - diff --git a/src/EntityGUI/UIFiles/EntityGUI_Skeleton_QTD.ui b/src/EntityGUI/UIFiles/EntityGUI_Skeleton_QTD.ui deleted file mode 100644 index 1a27ca107..000000000 --- a/src/EntityGUI/UIFiles/EntityGUI_Skeleton_QTD.ui +++ /dev/null @@ -1,379 +0,0 @@ - -EntityGUI_Skeleton_QTD - - - EntityGUI_Skeleton_QTD - - - - 0 - 0 - 317 - 276 - - - - - 5 - 7 - 0 - 0 - - - - EntityGUI_Skeleton_QTD - - - - unnamed - - - 11 - - - 6 - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - GroupVal - - - - 7 - 7 - 0 - 0 - - - - - - - - - GroupConstructors - - - - 5 - 0 - 0 - 0 - - - - Element Type - - - - unnamed - - - 11 - - - 6 - - - - Layout2 - - - - unnamed - - - 0 - - - 6 - - - - RadioButton1 - - - Segment - - - - - RadioButton2 - - - Arc - - - - - - - - - GroupDest - - - - 7 - 0 - 0 - 0 - - - - Destination - - - - unnamed - - - 11 - - - 6 - - - - Layout5 - - - - unnamed - - - 0 - - - 6 - - - - GroupDest1 - - - - 7 - 0 - 0 - 0 - - - - Type - - - - unnamed - - - 11 - - - 6 - - - - Layout4 - - - - unnamed - - - 0 - - - 6 - - - - RB_Dest2 - - - Direction - - - - - RB_Dest1 - - - Point - - - - - - - - - GroupDest2 - - - - 7 - 7 - 0 - 0 - - - - - - - - unnamed - - - 11 - - - 6 - - - - - - GroupDest3 - - - - 7 - 7 - 0 - 0 - - - - - - - - unnamed - - - 11 - - - 6 - - - - - - - - - - GroupButtons - - - - 7 - 0 - 0 - 0 - - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout3 - - - - unnamed - - - 0 - - - 6 - - - - buttonEnd - - - End Sketch - - - - - buttonClose - - - Close Sketch - - - - - Spacer1 - - - Horizontal - - - Expanding - - - - 91 - 0 - - - - - - buttonCancel - - - &Cancel - - - - - - - - - - - - RadioButton1 - RadioButton2 - RB_Dest1 - RB_Dest2 - buttonEnd - buttonClose - buttonCancel - - - diff --git a/src/EntityGUI/UIFiles/ui_to_cxx b/src/EntityGUI/UIFiles/ui_to_cxx deleted file mode 100755 index e370f446a..000000000 --- a/src/EntityGUI/UIFiles/ui_to_cxx +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh - -uic -o EntityGUI_Skeleton_QTD.h EntityGUI_Skeleton_QTD.ui -uic -o EntityGUI_Skeleton_QTD.cxx -impl EntityGUI_Skeleton_QTD.h EntityGUI_Skeleton_QTD.ui - -uic -o EntityGUI_Point_QTD.h EntityGUI_Point_QTD.ui -uic -o EntityGUI_Point_QTD.cxx -impl EntityGUI_Point_QTD.h EntityGUI_Point_QTD.ui - -uic -o EntityGUI_Dir1_QTD.h EntityGUI_Dir1_QTD.ui -uic -o EntityGUI_Dir1_QTD.cxx -impl EntityGUI_Dir1_QTD.h EntityGUI_Dir1_QTD.ui - -uic -o EntityGUI_Dir2_QTD.h EntityGUI_Dir2_QTD.ui -uic -o EntityGUI_Dir2_QTD.cxx -impl EntityGUI_Dir2_QTD.h EntityGUI_Dir2_QTD.ui - -uic -o EntityGUI_1Spin_QTD.h EntityGUI_1Spin_QTD.ui -uic -o EntityGUI_1Spin_QTD.cxx -impl EntityGUI_1Spin_QTD.h EntityGUI_1Spin_QTD.ui - -uic -o EntityGUI_2Spin_QTD.h EntityGUI_2Spin_QTD.ui -uic -o EntityGUI_2Spin_QTD.cxx -impl EntityGUI_2Spin_QTD.h EntityGUI_2Spin_QTD.ui - -uic -o EntityGUI_3Spin_QTD.h EntityGUI_3Spin_QTD.ui -uic -o EntityGUI_3Spin_QTD.cxx -impl EntityGUI_3Spin_QTD.h EntityGUI_3Spin_QTD.ui - -uic -o EntityGUI_4Spin_QTD.h EntityGUI_4Spin_QTD.ui -uic -o EntityGUI_4Spin_QTD.cxx -impl EntityGUI_4Spin_QTD.h EntityGUI_4Spin_QTD.ui - -uic -o EntityGUI_1Sel_QTD.h EntityGUI_1Sel_QTD.ui -uic -o EntityGUI_1Sel_QTD.cxx -impl EntityGUI_1Sel_QTD.h EntityGUI_1Sel_QTD.ui diff --git a/src/GEOM/GEOM_Application.cxx b/src/GEOM/GEOM_Application.cxx deleted file mode 100644 index 1424696a1..000000000 --- a/src/GEOM/GEOM_Application.cxx +++ /dev/null @@ -1,39 +0,0 @@ - -#include -#include - -//======================================================================= -//function : GEOM_Application -//purpose : -//======================================================================= - -GEOM_Application::GEOM_Application() -{ -} - - -//======================================================================= -//function : Formats -//purpose : -//======================================================================= - -void GEOM_Application::Formats(TColStd_SequenceOfExtendedString& Formats) -{ - Formats.Append(TCollection_ExtendedString ("SALOME_GEOM")); -} - - -//======================================================================= -//function : ResourcesName -//purpose : -//======================================================================= - -Standard_CString GEOM_Application::ResourcesName() -{ - return Standard_CString ("GEOMDS_Resources"); -} - - - - - diff --git a/src/GEOM/GEOM_Application.hxx b/src/GEOM/GEOM_Application.hxx deleted file mode 100644 index cf866a881..000000000 --- a/src/GEOM/GEOM_Application.hxx +++ /dev/null @@ -1,89 +0,0 @@ -// File : GEOM_Application.hxx -// Module : GEOM - -#ifndef _GEOM_Application_HeaderFile -#define _GEOM_Application_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_GEOM_Application_HeaderFile -#include -#endif - -#ifndef _TDocStd_Application_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif -class TColStd_SequenceOfExtendedString; - - -class GEOM_Application : public TDocStd_Application { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } -// inline void operator delete(void *anAddress, size_t size) -// { -// if (anAddress) Standard::Free((Standard_Address&)anAddress,size); -// } - // Methods PUBLIC - // -Standard_EXPORT GEOM_Application(); -Standard_EXPORT virtual void Formats(TColStd_SequenceOfExtendedString& Formats) ; -Standard_EXPORT Standard_CString ResourcesName() ; -Standard_EXPORT ~GEOM_Application(); - - - - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& GEOM_Application_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOM/GEOM_Application.ixx b/src/GEOM/GEOM_Application.ixx deleted file mode 100644 index 77f5bf9fc..000000000 --- a/src/GEOM/GEOM_Application.ixx +++ /dev/null @@ -1,63 +0,0 @@ -// File : GEOM_Application.ixx -// Module : GEOM - -#include "GEOM_Application.jxx" - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -GEOM_Application::~GEOM_Application() {} - - - -Standard_EXPORT Handle_Standard_Type& GEOM_Application_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TDocStd_Application); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TDocStd_Application); - static Handle_Standard_Type aType2 = STANDARD_TYPE(CDF_Application); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(CDF_Application); - static Handle_Standard_Type aType3 = STANDARD_TYPE(CDM_Application); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(CDM_Application); - static Handle_Standard_Type aType4 = STANDARD_TYPE(Standard_Transient); - if ( aType4.IsNull()) aType4 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,aType4,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOM_Application", - sizeof(GEOM_Application), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -// DownCast method -// allow safe downcasting - - -const Handle(GEOM_Application) Handle(GEOM_Application)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOM_Application) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOM_Application))) { - _anOtherObject = Handle(GEOM_Application)((Handle(GEOM_Application)&)AnObject); - } - } - - return _anOtherObject ; -} - - -const Handle(Standard_Type)& GEOM_Application::DynamicType() const -{ - return STANDARD_TYPE(GEOM_Application) ; -} -Standard_Boolean GEOM_Application::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(GEOM_Application) == AType || TDocStd_Application::IsKind(AType)); -} -Handle_GEOM_Application::~Handle_GEOM_Application() {} diff --git a/src/GEOM/GEOM_Application.jxx b/src/GEOM/GEOM_Application.jxx deleted file mode 100644 index 948f69196..000000000 --- a/src/GEOM/GEOM_Application.jxx +++ /dev/null @@ -1,9 +0,0 @@ -// File : GEOM_Application.jxx -// Module : GEOM - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _GEOM_Application_HeaderFile -#include "GEOM_Application.hxx" -#endif diff --git a/src/GEOM/GEOM_DataMapIteratorOfDataMapOfAsciiStringTransient.hxx b/src/GEOM/GEOM_DataMapIteratorOfDataMapOfAsciiStringTransient.hxx deleted file mode 100644 index dc78bfb92..000000000 --- a/src/GEOM/GEOM_DataMapIteratorOfDataMapOfAsciiStringTransient.hxx +++ /dev/null @@ -1,86 +0,0 @@ - -#ifndef _GEOM_DataMapIteratorOfDataMapOfAsciiStringTransient_HeaderFile -#define _GEOM_DataMapIteratorOfDataMapOfAsciiStringTransient_HeaderFile - -#ifndef _TCollection_BasicMapIterator_HeaderFile -#include -#endif -#ifndef _Handle_Standard_Transient_HeaderFile -#include -#endif -#ifndef _Handle_GEOM_DataMapNodeOfDataMapOfAsciiStringTransient_HeaderFile -#include -#endif -class Standard_NoSuchObject; -class TCollection_AsciiString; -class Standard_Transient; -class GEOM_DataMapOfAsciiStringTransient; -class GEOM_DataMapNodeOfDataMapOfAsciiStringTransient; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class GEOM_DataMapIteratorOfDataMapOfAsciiStringTransient : public TCollection_BasicMapIterator { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT GEOM_DataMapIteratorOfDataMapOfAsciiStringTransient(); -Standard_EXPORT GEOM_DataMapIteratorOfDataMapOfAsciiStringTransient(const GEOM_DataMapOfAsciiStringTransient& aMap); -Standard_EXPORT void Initialize(const GEOM_DataMapOfAsciiStringTransient& aMap) ; -Standard_EXPORT const TCollection_AsciiString& Key() const; -Standard_EXPORT const Handle_Standard_Transient& Value() const; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOM/GEOM_DataMapIteratorOfDataMapOfAsciiStringTransient_0.cxx b/src/GEOM/GEOM_DataMapIteratorOfDataMapOfAsciiStringTransient_0.cxx deleted file mode 100644 index 5ef372f1d..000000000 --- a/src/GEOM/GEOM_DataMapIteratorOfDataMapOfAsciiStringTransient_0.cxx +++ /dev/null @@ -1,36 +0,0 @@ - -#include - -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _TCollection_AsciiString_HeaderFile -#include -#endif -#ifndef _Standard_Transient_HeaderFile -#include -#endif -#ifndef _GEOM_DataMapOfAsciiStringTransient_HeaderFile -#include -#endif -#ifndef _GEOM_DataMapNodeOfDataMapOfAsciiStringTransient_HeaderFile -#include -#endif - - -#define TheKey TCollection_AsciiString -#define TheKey_hxx -#define TheItem Handle_Standard_Transient -#define TheItem_hxx -#define Hasher TCollection_AsciiString -#define Hasher_hxx -#define TCollection_DataMapNode GEOM_DataMapNodeOfDataMapOfAsciiStringTransient -#define TCollection_DataMapNode_hxx -#define TCollection_DataMapIterator GEOM_DataMapIteratorOfDataMapOfAsciiStringTransient -#define TCollection_DataMapIterator_hxx -#define Handle_TCollection_DataMapNode Handle_GEOM_DataMapNodeOfDataMapOfAsciiStringTransient -#define TCollection_DataMapNode_Type_() GEOM_DataMapNodeOfDataMapOfAsciiStringTransient_Type_() -#define TCollection_DataMap GEOM_DataMapOfAsciiStringTransient -#define TCollection_DataMap_hxx -#include - diff --git a/src/GEOM/GEOM_DataMapNodeOfDataMapOfAsciiStringTransient.hxx b/src/GEOM/GEOM_DataMapNodeOfDataMapOfAsciiStringTransient.hxx deleted file mode 100644 index fb095128d..000000000 --- a/src/GEOM/GEOM_DataMapNodeOfDataMapOfAsciiStringTransient.hxx +++ /dev/null @@ -1,123 +0,0 @@ - -#ifndef _GEOM_DataMapNodeOfDataMapOfAsciiStringTransient_HeaderFile -#define _GEOM_DataMapNodeOfDataMapOfAsciiStringTransient_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_GEOM_DataMapNodeOfDataMapOfAsciiStringTransient_HeaderFile -#include -#endif - -#ifndef _TCollection_AsciiString_HeaderFile -#include -#endif -#ifndef _Handle_Standard_Transient_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -class Standard_Transient; -class TCollection_AsciiString; -class GEOM_DataMapOfAsciiStringTransient; -class GEOM_DataMapIteratorOfDataMapOfAsciiStringTransient; - - -class GEOM_DataMapNodeOfDataMapOfAsciiStringTransient : public TCollection_MapNode { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -GEOM_DataMapNodeOfDataMapOfAsciiStringTransient(const TCollection_AsciiString& K,const Handle(Standard_Transient)& I,const TCollection_MapNodePtr& n); - TCollection_AsciiString& Key() const; - Handle_Standard_Transient& Value() const; -Standard_EXPORT ~GEOM_DataMapNodeOfDataMapOfAsciiStringTransient(); - - - - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& GEOM_DataMapNodeOfDataMapOfAsciiStringTransient_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -TCollection_AsciiString myKey; -Handle_Standard_Transient myValue; - - -}; - -#define TheKey TCollection_AsciiString -#define TheKey_hxx -#define TheItem Handle_Standard_Transient -#define TheItem_hxx -#define Hasher TCollection_AsciiString -#define Hasher_hxx -#define TCollection_DataMapNode GEOM_DataMapNodeOfDataMapOfAsciiStringTransient -#define TCollection_DataMapNode_hxx -#define TCollection_DataMapIterator GEOM_DataMapIteratorOfDataMapOfAsciiStringTransient -#define TCollection_DataMapIterator_hxx -#define Handle_TCollection_DataMapNode Handle_GEOM_DataMapNodeOfDataMapOfAsciiStringTransient -#define TCollection_DataMapNode_Type_() GEOM_DataMapNodeOfDataMapOfAsciiStringTransient_Type_() -#define TCollection_DataMap GEOM_DataMapOfAsciiStringTransient -#define TCollection_DataMap_hxx - -#include - -#undef TheKey -#undef TheKey_hxx -#undef TheItem -#undef TheItem_hxx -#undef Hasher -#undef Hasher_hxx -#undef TCollection_DataMapNode -#undef TCollection_DataMapNode_hxx -#undef TCollection_DataMapIterator -#undef TCollection_DataMapIterator_hxx -#undef Handle_TCollection_DataMapNode -#undef TCollection_DataMapNode_Type_ -#undef TCollection_DataMap -#undef TCollection_DataMap_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOM/GEOM_DataMapNodeOfDataMapOfAsciiStringTransient_0.cxx b/src/GEOM/GEOM_DataMapNodeOfDataMapOfAsciiStringTransient_0.cxx deleted file mode 100644 index 1836c2e0f..000000000 --- a/src/GEOM/GEOM_DataMapNodeOfDataMapOfAsciiStringTransient_0.cxx +++ /dev/null @@ -1,85 +0,0 @@ - -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_Transient_HeaderFile -#include -#endif -#ifndef _TCollection_AsciiString_HeaderFile -#include -#endif -#ifndef _GEOM_DataMapOfAsciiStringTransient_HeaderFile -#include -#endif -#ifndef _GEOM_DataMapIteratorOfDataMapOfAsciiStringTransient_HeaderFile -#include -#endif -GEOM_DataMapNodeOfDataMapOfAsciiStringTransient::~GEOM_DataMapNodeOfDataMapOfAsciiStringTransient() {} - - - -Standard_EXPORT Handle_Standard_Type& GEOM_DataMapNodeOfDataMapOfAsciiStringTransient_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOM_DataMapNodeOfDataMapOfAsciiStringTransient", - sizeof(GEOM_DataMapNodeOfDataMapOfAsciiStringTransient), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(GEOM_DataMapNodeOfDataMapOfAsciiStringTransient) Handle(GEOM_DataMapNodeOfDataMapOfAsciiStringTransient)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOM_DataMapNodeOfDataMapOfAsciiStringTransient) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOM_DataMapNodeOfDataMapOfAsciiStringTransient))) { - _anOtherObject = Handle(GEOM_DataMapNodeOfDataMapOfAsciiStringTransient)((Handle(GEOM_DataMapNodeOfDataMapOfAsciiStringTransient)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& GEOM_DataMapNodeOfDataMapOfAsciiStringTransient::DynamicType() const -{ - return STANDARD_TYPE(GEOM_DataMapNodeOfDataMapOfAsciiStringTransient) ; -} -Standard_Boolean GEOM_DataMapNodeOfDataMapOfAsciiStringTransient::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(GEOM_DataMapNodeOfDataMapOfAsciiStringTransient) == AType || TCollection_MapNode::IsKind(AType)); -} -Handle_GEOM_DataMapNodeOfDataMapOfAsciiStringTransient::~Handle_GEOM_DataMapNodeOfDataMapOfAsciiStringTransient() {} -#define TheKey TCollection_AsciiString -#define TheKey_hxx -#define TheItem Handle_Standard_Transient -#define TheItem_hxx -#define Hasher TCollection_AsciiString -#define Hasher_hxx -#define TCollection_DataMapNode GEOM_DataMapNodeOfDataMapOfAsciiStringTransient -#define TCollection_DataMapNode_hxx -#define TCollection_DataMapIterator GEOM_DataMapIteratorOfDataMapOfAsciiStringTransient -#define TCollection_DataMapIterator_hxx -#define Handle_TCollection_DataMapNode Handle_GEOM_DataMapNodeOfDataMapOfAsciiStringTransient -#define TCollection_DataMapNode_Type_() GEOM_DataMapNodeOfDataMapOfAsciiStringTransient_Type_() -#define TCollection_DataMap GEOM_DataMapOfAsciiStringTransient -#define TCollection_DataMap_hxx -#include - diff --git a/src/GEOM/GEOM_DataMapOfAsciiStringTransient.hxx b/src/GEOM/GEOM_DataMapOfAsciiStringTransient.hxx deleted file mode 100644 index 2225272fc..000000000 --- a/src/GEOM/GEOM_DataMapOfAsciiStringTransient.hxx +++ /dev/null @@ -1,118 +0,0 @@ - -#ifndef _GEOM_DataMapOfAsciiStringTransient_HeaderFile -#define _GEOM_DataMapOfAsciiStringTransient_HeaderFile - -#ifndef _TCollection_BasicMap_HeaderFile -#include -#endif -#ifndef _Handle_Standard_Transient_HeaderFile -#include -#endif -#ifndef _Handle_GEOM_DataMapNodeOfDataMapOfAsciiStringTransient_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_DomainError; -class Standard_NoSuchObject; -class TCollection_AsciiString; -class Standard_Transient; -class GEOM_DataMapNodeOfDataMapOfAsciiStringTransient; -class GEOM_DataMapIteratorOfDataMapOfAsciiStringTransient; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class GEOM_DataMapOfAsciiStringTransient : public TCollection_BasicMap { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT GEOM_DataMapOfAsciiStringTransient(const Standard_Integer NbBuckets = 1); -Standard_EXPORT GEOM_DataMapOfAsciiStringTransient& Assign(const GEOM_DataMapOfAsciiStringTransient& Other) ; - GEOM_DataMapOfAsciiStringTransient& operator =(const GEOM_DataMapOfAsciiStringTransient& Other) -{ - return Assign(Other); -} - -Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; -Standard_EXPORT void Clear() ; -~GEOM_DataMapOfAsciiStringTransient() -{ - Clear(); -} - -Standard_EXPORT Standard_Boolean Bind(const TCollection_AsciiString& K,const Handle(Standard_Transient)& I) ; -Standard_EXPORT Standard_Boolean IsBound(const TCollection_AsciiString& K) const; -Standard_EXPORT Standard_Boolean UnBind(const TCollection_AsciiString& K) ; -Standard_EXPORT const Handle_Standard_Transient& Find(const TCollection_AsciiString& K) const; - const Handle_Standard_Transient& operator()(const TCollection_AsciiString& K) const -{ - return Find(K); -} - -Standard_EXPORT Handle_Standard_Transient& ChangeFind(const TCollection_AsciiString& K) ; - Handle_Standard_Transient& operator()(const TCollection_AsciiString& K) -{ - return ChangeFind(K); -} - - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // -Standard_EXPORT GEOM_DataMapOfAsciiStringTransient(const GEOM_DataMapOfAsciiStringTransient& Other); - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOM/GEOM_DataMapOfAsciiStringTransient_0.cxx b/src/GEOM/GEOM_DataMapOfAsciiStringTransient_0.cxx deleted file mode 100644 index fbb69911d..000000000 --- a/src/GEOM/GEOM_DataMapOfAsciiStringTransient_0.cxx +++ /dev/null @@ -1,39 +0,0 @@ - -#include - -#ifndef _Standard_DomainError_HeaderFile -#include -#endif -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _TCollection_AsciiString_HeaderFile -#include -#endif -#ifndef _Standard_Transient_HeaderFile -#include -#endif -#ifndef _GEOM_DataMapNodeOfDataMapOfAsciiStringTransient_HeaderFile -#include -#endif -#ifndef _GEOM_DataMapIteratorOfDataMapOfAsciiStringTransient_HeaderFile -#include -#endif - - -#define TheKey TCollection_AsciiString -#define TheKey_hxx -#define TheItem Handle_Standard_Transient -#define TheItem_hxx -#define Hasher TCollection_AsciiString -#define Hasher_hxx -#define TCollection_DataMapNode GEOM_DataMapNodeOfDataMapOfAsciiStringTransient -#define TCollection_DataMapNode_hxx -#define TCollection_DataMapIterator GEOM_DataMapIteratorOfDataMapOfAsciiStringTransient -#define TCollection_DataMapIterator_hxx -#define Handle_TCollection_DataMapNode Handle_GEOM_DataMapNodeOfDataMapOfAsciiStringTransient -#define TCollection_DataMapNode_Type_() GEOM_DataMapNodeOfDataMapOfAsciiStringTransient_Type_() -#define TCollection_DataMap GEOM_DataMapOfAsciiStringTransient -#define TCollection_DataMap_hxx -#include - diff --git a/src/GEOM/GEOM_Engine.cxx b/src/GEOM/GEOM_Engine.cxx deleted file mode 100644 index 5c3fbee79..000000000 --- a/src/GEOM/GEOM_Engine.cxx +++ /dev/null @@ -1,632 +0,0 @@ -#ifdef WNT -#pragma warning( disable:4786 ) -#endif - -#include "GEOM_Engine.hxx" - -#include "GEOM_Solver.hxx" -#include "GEOM_Function.hxx" -#include "GEOM_ISubShape.hxx" -#include "GEOM_SubShapeDriver.hxx" -#include "GEOM_DataMapIteratorOfDataMapOfAsciiStringTransient.hxx" -#include "GEOM_PythonDump.hxx" - -#include "utilities.h" - -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include - -#include -#include - -#include -#include - -#include // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC - -static GEOM_Engine* TheEngine = NULL; - -static TCollection_AsciiString BuildIDFromObject(Handle(GEOM_Object)& theObject) -{ - TCollection_AsciiString anID(theObject->GetDocID()), anEntry; - TDF_Tool::Entry(theObject->GetEntry(), anEntry); - anID+=(TCollection_AsciiString("_")+anEntry); - return anID; -} - -static TCollection_AsciiString BuildID(Standard_Integer theDocID, char* theEntry) -{ - TCollection_AsciiString anID(theDocID); - anID+=(TCollection_AsciiString("_")+theEntry); - return anID; -} - -static Standard_Integer ExtractDocID(TCollection_AsciiString& theID) -{ - TCollection_AsciiString aDocID = theID.Token("_"); - if(aDocID.Length() < 1) return -1; - return aDocID.IntegerValue(); -} - -void ProcessFunction(Handle(GEOM_Function)& theFunction, - TCollection_AsciiString& theScript, - TColStd_MapOfTransient& theProcessed); - -Handle(TColStd_HSequenceOfInteger) FindEntries(TCollection_AsciiString& theString); - -//============================================================================= -/*! - * GetEngine - */ -//============================================================================= -GEOM_Engine* GEOM_Engine::GetEngine() { return TheEngine; } - - -//============================================================================= -/*! - * SetEngine - */ -//============================================================================= -void GEOM_Engine::SetEngine(GEOM_Engine* theEngine) { TheEngine = theEngine; } - -//============================================================================= -/*! - * Constructor - */ -//============================================================================= -GEOM_Engine::GEOM_Engine() -{ - TFunction_DriverTable::Get()->AddDriver(GEOM_Object::GetSubShapeID(), new GEOM_SubShapeDriver()); - - _OCAFApp = new GEOM_Application(); - _UndoLimit = 10; -} - -//============================================================================= -/*! - * GetDocument - */ -//============================================================================= -Handle(TDocStd_Document) GEOM_Engine::GetDocument(int theDocID) -{ - Handle(TDocStd_Document) aDoc; - if(!_mapIDDocument.IsBound(theDocID)) { - _OCAFApp->NewDocument("SALOME_GEOM", aDoc); - aDoc->SetUndoLimit(_UndoLimit); - _mapIDDocument.Bind(theDocID, aDoc); - TDataStd_Integer::Set(aDoc->Main(), theDocID); - } - - return Handle(TDocStd_Document)::DownCast(_mapIDDocument(theDocID)); -} - -//============================================================================= -/*! - * GetDocID - */ -//============================================================================= -int GEOM_Engine::GetDocID(Handle(TDocStd_Document) theDocument) -{ - if(theDocument.IsNull()) return -1; - for(Interface_DataMapIteratorOfDataMapOfIntegerTransient anItr(_mapIDDocument); anItr.More(); anItr.Next()) - if(anItr.Value() == theDocument) return anItr.Key(); - - return -1; - -} - -//============================================================================= -/*! - * GetObject - */ -//============================================================================= -Handle(GEOM_Object) GEOM_Engine::GetObject(int theDocID, char* theEntry) -{ - TCollection_AsciiString anID = BuildID(theDocID, theEntry); - if(_objects.IsBound(anID)) return Handle(GEOM_Object)::DownCast(_objects(anID)); - - TDF_Label aLabel; - Handle(TDocStd_Document) aDoc = GetDocument(theDocID); - TDF_Tool::Label(aDoc->Main().Data(), theEntry, aLabel, Standard_True); - Handle(GEOM_Object) anObject = new GEOM_Object(aLabel); - - _objects.Bind(anID, anObject); - - return anObject; -} - -//============================================================================= -/*! - * AddObject - */ -//============================================================================= -Handle(GEOM_Object) GEOM_Engine::AddObject(int theDocID, int theType) -{ - Handle(TDocStd_Document) aDoc = GetDocument(theDocID); - Handle(TDataStd_TreeNode) aRoot = TDataStd_TreeNode::Set(aDoc->Main()); - - TDF_Label aChild = TDF_TagSource::NewChild(aDoc->Main()); - Handle(GEOM_Object) anObject = new GEOM_Object(aChild, theType); - - //Put an object in the map of created objects - TCollection_AsciiString anID = BuildIDFromObject(anObject); - if(_objects.IsBound(anID)) _objects.UnBind(anID); - _objects.Bind(anID, anObject); - - return anObject; -} - -//============================================================================= -/*! - * AddSubShape - */ -//============================================================================= -Handle(GEOM_Object) GEOM_Engine::AddSubShape(Handle(GEOM_Object) theMainShape, - Handle(TColStd_HArray1OfInteger) theIndices, - bool isStandaloneOperation) -{ - if(theMainShape.IsNull() || theIndices.IsNull()) return NULL; - - Handle(TDocStd_Document) aDoc = GetDocument(theMainShape->GetDocID()); - Handle(TDataStd_TreeNode) aRoot = TDataStd_TreeNode::Set(aDoc->Main()); - - TDF_Label aChild = TDF_TagSource::NewChild(aDoc->Main()); - - Handle(GEOM_Function) aMainShape = theMainShape->GetLastFunction(); - Handle(GEOM_Object) anObject = new GEOM_Object(aChild, 28); //28 is SUBSHAPE type - Handle(GEOM_Function) aFunction = anObject->AddFunction(GEOM_Object::GetSubShapeID(), 1); - - GEOM_ISubShape aSSI(aFunction); - aSSI.SetMainShape(aMainShape); - aSSI.SetIndices(theIndices); - - try { - GEOM_Solver aSolver (GEOM_Engine::GetEngine()); - if (!aSolver.ComputeFunction(aFunction)) { - MESSAGE("GEOM_Engine::AddSubShape Error: Can't build a sub shape"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - MESSAGE("GEOM_Engine::AddSubShape Error: " << aFail->GetMessageString()); - return NULL; - } - - //Put an object in the map of created objects - TCollection_AsciiString anID = BuildIDFromObject(anObject); - if(_objects.IsBound(anID)) _objects.UnBind(anID); - _objects.Bind(anID, anObject); - - GEOM::TPythonDump pd (aFunction); - - if (isStandaloneOperation) { - pd << anObject << " = geompy.GetSubShape(" << theMainShape << ", ["; - Standard_Integer i = theIndices->Lower(), up = theIndices->Upper(); - for (; i <= up - 1; i++) { - pd << theIndices->Value(i) << ", "; - } - pd << theIndices->Value(up) << "])"; - } - else - pd << "None"; - - return anObject; -} - -//============================================================================= -/*! - * RemoveObject - */ -//============================================================================= -bool GEOM_Engine::RemoveObject(Handle(GEOM_Object) theObject) -{ - if(!theObject) return false; - - //Remove an object from the map of available objects - TCollection_AsciiString anID = BuildIDFromObject(theObject); - if(_objects.IsBound(anID)) _objects.UnBind(anID); - - int nb = theObject->GetNbFunctions(); - Handle(TDataStd_TreeNode) aNode; - for(int i = 1; i<=nb; i++) { - Handle(GEOM_Function) aFunction = theObject->GetFunction(i); - if(aFunction->GetEntry().FindAttribute(GEOM_Function::GetFunctionTreeID(), aNode)) - aNode->Remove(); - } - - TDF_Label aLabel = theObject->GetEntry(); - aLabel.ForgetAllAttributes(Standard_True); - - theObject.Nullify(); - - return true; -} - -//============================================================================= -/*! - * Undo - */ -//============================================================================= -void GEOM_Engine::Undo(int theDocID) -{ - GetDocument(theDocID)->Undo(); -} - -//============================================================================= -/*! - * Redo - */ -//============================================================================= -void GEOM_Engine::Redo(int theDocID) -{ - GetDocument(theDocID)->Redo(); -} - -//============================================================================= -/*! - * Save - */ -//============================================================================= -bool GEOM_Engine::Save(int theDocID, char* theFileName) -{ - if(!_mapIDDocument.IsBound(theDocID)) return false; - Handle(TDocStd_Document) aDoc = Handle(TDocStd_Document)::DownCast(_mapIDDocument(theDocID)); - - _OCAFApp->SaveAs(aDoc, theFileName); - - return true; -} - -//============================================================================= -/*! - * Load - */ -//============================================================================= -bool GEOM_Engine::Load(int theDocID, char* theFileName) -{ - Handle(TDocStd_Document) aDoc; - if(_OCAFApp->Open(theFileName, aDoc) != CDF_RS_OK) { - return false; - } - - aDoc->SetUndoLimit(_UndoLimit); - - if(_mapIDDocument.IsBound(theDocID)) _mapIDDocument.UnBind(theDocID); - _mapIDDocument.Bind(theDocID, aDoc); - - TDataStd_Integer::Set(aDoc->Main(), theDocID); - - return true; -} - -//============================================================================= -/*! - * Close - */ -//============================================================================= -void GEOM_Engine::Close(int theDocID) -{ - if(_mapIDDocument.IsBound(theDocID)) { - Handle(TDocStd_Document) aDoc = Handle(TDocStd_Document)::DownCast(_mapIDDocument(theDocID)); - - //Remove all GEOM Objects associated to the given document - TColStd_SequenceOfAsciiString aSeq; - GEOM_DataMapIteratorOfDataMapOfAsciiStringTransient It(_objects); - for(; It.More(); It.Next()) { - TCollection_AsciiString anObjID(It.Key()); - Standard_Integer anID = ExtractDocID(anObjID); - if(theDocID == anID) aSeq.Append(It.Key()); - } - for(Standard_Integer i=1; i<=aSeq.Length(); i++) _objects.UnBind(aSeq.Value(i)); - - _mapIDDocument.UnBind(theDocID); - _OCAFApp->Close(aDoc); - aDoc.Nullify(); - } -} - -//============================================================================= -/*! - * DumpPython - */ -//============================================================================= -TCollection_AsciiString GEOM_Engine::DumpPython(int theDocID, - Resource_DataMapOfAsciiStringAsciiString& theObjectNames, - bool isPublished, - bool& aValidScript) -{ - TCollection_AsciiString aScript; - Handle(TDocStd_Document) aDoc = GetDocument(theDocID); - - if(aDoc.IsNull()) return TCollection_AsciiString("def RebuildData(theStudy): pass\n"); - - aScript = "import geompy\n"; - aScript += "import math\n\n"; - aScript += "def RebuildData(theStudy):"; - aScript += "\n\tgeompy.init_geom(theStudy)"; - - Standard_Integer posToInertGlobalVars = aScript.Length() + 1; - - Handle(TDataStd_TreeNode) aNode, aRoot; - Handle(GEOM_Function) aFunction; - TColStd_MapOfTransient aMap; - - if(aDoc->Main().FindAttribute(GEOM_Function::GetFunctionTreeID(), aRoot)) { - TDataStd_ChildNodeIterator Itr(aRoot); - for(; Itr.More(); Itr.Next()) { - aNode = Itr.Value(); - aFunction = GEOM_Function::GetFunction(aNode->Label()); - if(aFunction.IsNull()) { - cout << "Null function !!!!" << endl; - continue; - } - ProcessFunction(aFunction, aScript, aMap); - } - } - - Resource_DataMapOfAsciiStringAsciiString aEntry2StEntry, aStEntry2Entry; - Resource_DataMapIteratorOfDataMapOfAsciiStringAsciiString anEntryToNameIt; - // build maps entry <-> studyEntry - for (anEntryToNameIt.Initialize( theObjectNames ); - anEntryToNameIt.More(); - anEntryToNameIt.Next()) - { - const TCollection_AsciiString& aEntry = anEntryToNameIt.Key(); - // look for an object by entry - TDF_Label L; - TDF_Tool::Label( aDoc->GetData(), aEntry, L ); - if ( L.IsNull() ) continue; - Handle(GEOM_Object) obj = GEOM_Object::GetObject( L ); - // fill maps - if ( !obj.IsNull() ) { - TCollection_AsciiString aStudyEntry (obj->GetAuxData()); - aEntry2StEntry.Bind( aEntry, aStudyEntry); - aStEntry2Entry.Bind( aStudyEntry, aEntry ); - } - } - - Handle(TColStd_HSequenceOfInteger) aSeq = FindEntries(aScript); - Standard_Integer aLen = aSeq->Length(), objectCounter = 0, aStart = 1, aScriptLength = aScript.Length(); - Resource_DataMapOfAsciiStringAsciiString aNameToEntry, anEntryToBadName; - - //Replace entries by the names - TCollection_AsciiString anUpdatedScript, anEntry, aName, aBaseName("geomObj_"), - allowedChars ("qwertyuioplkjhgfdsazxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM0987654321_"); - if(aLen == 0) anUpdatedScript = aScript; - - for(Standard_Integer i = 1; i <= aLen; i+=2) { - anUpdatedScript += aScript.SubString(aStart, aSeq->Value(i)-1); - anEntry = aScript.SubString(aSeq->Value(i), aSeq->Value(i+1)); - if(theObjectNames.IsBound(anEntry)) { - aName = theObjectNames.Find(anEntry); - // check validity of aName - bool isValidName = true; - if ( aName.IsIntegerValue() ) { // aName must not start with a digit - aName.Insert( 1, 'a' ); - isValidName = false; - } - int p, p2=1; // replace not allowed chars - while ((p = aName.FirstLocationNotInSet(allowedChars, p2, aName.Length()))) { - aName.SetValue(p, '_'); - p2=p; - isValidName = false; - } - if ( aNameToEntry.IsBound( aName ) && anEntry != aNameToEntry( aName )) - { // diff objects have same name - make a new name by appending a digit - TCollection_AsciiString aName2; - Standard_Integer i = 0; - do { - aName2 = aName + "_" + ++i; - } while ( aNameToEntry.IsBound( aName2 ) && anEntry != aNameToEntry( aName2 )); - aName = aName2; - isValidName = false; - } - if ( !isValidName ) { - if ( isPublished ) - anEntryToBadName.Bind( anEntry, theObjectNames.Find(anEntry) ); - theObjectNames( anEntry ) = aName; - } - } - else { - do { - aName = aBaseName + TCollection_AsciiString(++objectCounter); - } while(aNameToEntry.IsBound(aName)); - theObjectNames.Bind(anEntry, aName); - } - aNameToEntry.Bind(aName, anEntry); // to detect same name of diff objects - - anUpdatedScript += aName; - aStart = aSeq->Value(i+1) + 1; - } - - //Add final part of the script - if(aSeq->Value(aLen) < aScriptLength) anUpdatedScript += aScript.SubString(aSeq->Value(aLen)+1, aScriptLength); - - // Make script to publish in study - if ( isPublished ) - { - map< int, string > anEntryToCommandMap; // sort publishing commands by object entry - for (anEntryToNameIt.Initialize( theObjectNames ); - anEntryToNameIt.More(); - anEntryToNameIt.Next()) - { - const TCollection_AsciiString& aEntry = anEntryToNameIt.Key(); - const TCollection_AsciiString& aName = anEntryToNameIt.Value(); - if ( !aEntry2StEntry.IsBound( aEntry )) - continue; // was not published - TCollection_AsciiString aCommand("\n\tgeompy."), aFatherEntry; - - // find a father entry - const TCollection_AsciiString& aStudyEntry = aEntry2StEntry( aEntry ); - TCollection_AsciiString aFatherStudyEntry = - aStudyEntry.SubString( 1, aStudyEntry.SearchFromEnd(":") - 1 ); - if ( aStEntry2Entry.IsBound( aFatherStudyEntry )) - aFatherEntry = aStEntry2Entry( aFatherStudyEntry ); - - // make a command - if ( !aFatherEntry.IsEmpty() && theObjectNames.IsBound( aFatherEntry )) { - aCommand += "addToStudyInFather( "; - aCommand += theObjectNames( aFatherEntry ) + ", "; - } - else - aCommand += "addToStudy( "; - if ( anEntryToBadName.IsBound( aEntry )) - aCommand += aName + ", \"" + anEntryToBadName( aEntry ) + "\" )"; - else - aCommand += aName + ", \"" + aName + "\" )"; - - // bind a command to the last digit of the entry - int tag = - aEntry.SubString( aEntry.SearchFromEnd(":")+1, aEntry.Length() ).IntegerValue(); - anEntryToCommandMap.insert( make_pair( tag, aCommand.ToCString() )); - } - - // add publishing commands to the script - map< int, string >::iterator anEntryToCommand = anEntryToCommandMap.begin(); - for ( ; anEntryToCommand != anEntryToCommandMap.end(); ++anEntryToCommand ) { - anUpdatedScript += (char*)anEntryToCommand->second.c_str(); - } - } - - anUpdatedScript += "\n\tpass\n"; - aValidScript = true; - - // fill _studyEntry2NameMap and build globalVars - TCollection_AsciiString globalVars; - _studyEntry2NameMap.Clear(); - Resource_DataMapIteratorOfDataMapOfAsciiStringAsciiString aStEntryToEntryIt; - for (aStEntryToEntryIt.Initialize( aStEntry2Entry ); - aStEntryToEntryIt.More(); - aStEntryToEntryIt.Next() ) - { - const TCollection_AsciiString & name = theObjectNames( aStEntryToEntryIt.Value() ); - _studyEntry2NameMap.Bind (aStEntryToEntryIt.Key(), name ); - if ( !globalVars.IsEmpty() ) - globalVars += ", "; - globalVars += name; - } - if ( !globalVars.IsEmpty() ) { - globalVars.Insert( 1, "\n\tglobal " ); - anUpdatedScript.Insert( posToInertGlobalVars, globalVars ); - } - - return anUpdatedScript; -} - -//======================================================================= -//function : GetDumpName -//purpose : -//======================================================================= - -const char* GEOM_Engine::GetDumpName (const char* theStudyEntry) const -{ - if ( _studyEntry2NameMap.IsBound( (char*)theStudyEntry )) - return _studyEntry2NameMap( (char*)theStudyEntry ).ToCString(); - - return NULL; -} - -//======================================================================= -//function : GetAllDumpNames -//purpose : -//======================================================================= - -Handle(TColStd_HSequenceOfAsciiString) GEOM_Engine::GetAllDumpNames() const -{ - Handle(TColStd_HSequenceOfAsciiString) aRetSeq = new TColStd_HSequenceOfAsciiString; - - Resource_DataMapIteratorOfDataMapOfAsciiStringAsciiString it (_studyEntry2NameMap); - for (; it.More(); it.Next()) { - aRetSeq->Append(it.Value()); - } - - return aRetSeq; -} - - -//=========================================================================== -// Internal functions -//=========================================================================== -void ProcessFunction(Handle(GEOM_Function)& theFunction, - TCollection_AsciiString& theScript, - TColStd_MapOfTransient& theProcessed) -{ - if(theFunction.IsNull() || theProcessed.Contains(theFunction)) return; - -/* - TDF_LabelSequence aSeq; - theFunction->GetDependency(aSeq); - Standard_Integer aLen = aSeq.Length(); - for(Standard_Integer i = 1; i<= aLen; i++) { - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(aSeq.Value(i)); - if(aFunction.IsNull()) continue; - ProcessFunction(aFunction, theScript, theProcessed); - } -*/ - - TCollection_AsciiString aDescr = theFunction->GetDescription(); - if(aDescr.Length() == 0) { - //cout << "Warning: the function has no description" << endl; - return; - } - //Check if its internal function which doesn't requires dumping - if(aDescr == "None") return; - - theScript += "\n\t"; - theScript += aDescr; - - theProcessed.Add(theFunction); - return; -} - -//============================================================================= -/*! - * FindEntries: Returns a sequence of start/end positions of entries in the string - */ -//============================================================================= -Handle(TColStd_HSequenceOfInteger) FindEntries(TCollection_AsciiString& theString) -{ - Handle(TColStd_HSequenceOfInteger) aSeq = new TColStd_HSequenceOfInteger; - Standard_Integer aLen = theString.Length(); - Standard_Boolean isFound = Standard_False; - - char* arr = theString.ToCString(); - Standard_Integer i = 0, j; - - while(i < aLen) { - int c = (int)arr[i]; - j = i+1; - if(c >= 48 && c <= 57) { //Is digit? - - isFound = Standard_False; - while((j < aLen) && ((c >= 48 && c <= 57) || c == 58) ) { //Check if it is an entry - c = (int)arr[j++]; - if(c == 58) isFound = Standard_True; - } - - if(isFound && arr[j-2] != 58) { // last char should be a diggit - aSeq->Append(i+1); // +1 because AsciiString starts from 1 - aSeq->Append(j-1); - } - } - - i = j; - } - - return aSeq; -} diff --git a/src/GEOM/GEOM_Engine.hxx b/src/GEOM/GEOM_Engine.hxx deleted file mode 100644 index bb1a5db11..000000000 --- a/src/GEOM/GEOM_Engine.hxx +++ /dev/null @@ -1,87 +0,0 @@ - -#ifndef _GEOM_Engine_HXX_ -#define _GEOM_Engine_HXX_ - -#include "GEOM_Application.hxx" -#include "GEOM_Object.hxx" -#include "GEOM_DataMapOfAsciiStringTransient.hxx" - -#include -#include -#include -#include -#include - -class GEOM_Engine -{ - public: - Standard_EXPORT GEOM_Engine(); - Standard_EXPORT ~GEOM_Engine() { _mapIDDocument.Clear(); _objects.Clear(); } - - //Retuns the engine - Standard_EXPORT static GEOM_Engine* GetEngine(); - - //Returns the OCAF document by its ID, if document doesn't exists it will be created - Standard_EXPORT Handle(TDocStd_Document) GetDocument(int theDocID); - - //Returns the ID of the given OCAF document - Standard_EXPORT int GetDocID(Handle(TDocStd_Document) theDocument); - - //Returns the OCAF appliaction - Standard_EXPORT Handle(TDocStd_Application) GetApplication() { return _OCAFApp; } - - //Returns a pointer to GEOM_Object defined by a document and the entry - Standard_EXPORT Handle(GEOM_Object) GetObject(int theDocID, char* theEntry); - - //Adds a new object of the type theType in the OCAF document - Standard_EXPORT Handle(GEOM_Object) AddObject(int theDocID, int theType); - - //Removes the object from the OCAF document - Standard_EXPORT bool RemoveObject(Handle(GEOM_Object) theObject); - - //Saves the OCAF document with ID = theDocID with file with name theFileName - Standard_EXPORT bool Save(int theDocID, char* theFileName); - - //Loads the OCAF document into the application and assigns to it an ID = theDocID - Standard_EXPORT bool Load(int theDocID, char* theFileName); - - //Closes the document with ID = theDocID - Standard_EXPORT void Close(int theDocID); - - //Sets the number of Undos (default value = 10) - Standard_EXPORT void SetUndoLimit(int theLimit) { _UndoLimit = theLimit; } - - //Applies an Undo to document with ID = theDocID - Standard_EXPORT void Undo(int theDocID); - - //Applies an Redo to document with ID = theDocID - Standard_EXPORT void Redo(int theDocID); - - //Adds a new sub shape object of the MainShape object - Standard_EXPORT Handle(GEOM_Object) AddSubShape(Handle(GEOM_Object) theMainShape, - Handle(TColStd_HArray1OfInteger) theIndices, - bool isStandaloneOperation = false); - - Standard_EXPORT TCollection_AsciiString DumpPython(int theDocID, - Resource_DataMapOfAsciiStringAsciiString& theObjectNames, - bool isPublished, - bool& aValidScript); - - Standard_EXPORT const char* GetDumpName (const char* theStudyEntry) const; - - Standard_EXPORT Handle(TColStd_HSequenceOfAsciiString) GetAllDumpNames() const; - - protected: - Standard_EXPORT static void SetEngine(GEOM_Engine* theEngine); - - private: - - Handle(GEOM_Application) _OCAFApp; - Interface_DataMapOfIntegerTransient _mapIDDocument; - int _UndoLimit; - GEOM_DataMapOfAsciiStringTransient _objects; - - Resource_DataMapOfAsciiStringAsciiString _studyEntry2NameMap; -}; - -#endif diff --git a/src/GEOM/GEOM_Function.cxx b/src/GEOM/GEOM_Function.cxx deleted file mode 100644 index 78455858e..000000000 --- a/src/GEOM/GEOM_Function.cxx +++ /dev/null @@ -1,681 +0,0 @@ - -#include - -#include -#include -#include - -#include "utilities.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC - -#define ARGUMENT_LABEL 1 -#define RESULT_LABEL 2 -#define DESCRIPTION_LABEL 3 -#define HISTORY_LABEL 4 - -#define ARGUMENTS _label.FindChild((ARGUMENT_LABEL)) -#define ARGUMENT(thePosition) _label.FindChild((ARGUMENT_LABEL)).FindChild((thePosition)) -#define SUB_ARGUMENT(thePos1, thePos2) _label.FindChild((ARGUMENT_LABEL)).FindChild((thePos1)).FindChild((thePos2)) - -//======================================================================= -//function : GetFunctionTreeID -//purpose : -//======================================================================= -const Standard_GUID& GEOM_Function::GetFunctionTreeID() -{ - static Standard_GUID aFunctionTreeID("FF1BBB00-5D14-4df2-980B-3A668264EA16"); - return aFunctionTreeID; -} - - -//======================================================================= -//function : GetDependencyID -//purpose : -//======================================================================= -const Standard_GUID& GEOM_Function::GetDependencyID() -{ - static Standard_GUID aDependencyID("E2620650-2354-41bd-8C2C-210CFCD00948"); - return aDependencyID; -} - -//============================================================================= -/*! - * GetFunction: - */ -//============================================================================= -Handle(GEOM_Function) GEOM_Function::GetFunction(const TDF_Label& theEntry) -{ - if(!theEntry.IsAttribute(TFunction_Function::GetID())) return NULL; - - return new GEOM_Function(theEntry); -} - -//============================================================================= -/*! - * Constructor: - */ -//============================================================================= -GEOM_Function::GEOM_Function(const TDF_Label& theEntry, const Standard_GUID& theGUID, int theType) -: _label(theEntry) -{ - TFunction_Function::Set(theEntry, theGUID); - TDataStd_Integer::Set(theEntry, theType); - - //Add function to a function tree - Handle(TDocStd_Document) aDoc = TDocStd_Owner::GetDocument(theEntry.Data()); - Handle(TDataStd_TreeNode) aRoot, aNode; - if(!aDoc->Main().FindAttribute(GetFunctionTreeID(), aRoot)) - aRoot = TDataStd_TreeNode::Set(aDoc->Main(), GetFunctionTreeID()); - - aNode = TDataStd_TreeNode::Set(theEntry, GetFunctionTreeID()); - aRoot->Append(aNode); -} - -//============================================================================= -/*! - * GetOwner - */ -//============================================================================= -TDF_Label GEOM_Function::GetOwnerEntry() -{ - TDF_Label aFather = _label.Father(); - while(!aFather.IsRoot()) { - if(aFather.IsAttribute(GEOM_Object::GetObjectID())) return aFather; - aFather = aFather.Father(); - } - - return TDF_Label(); -} - -//============================================================================= -/*! - * GetType - */ -//============================================================================= -int GEOM_Function::GetType() -{ - _isDone = false; - Handle(TDataStd_Integer) aType; - if(!_label.FindAttribute(TDataStd_Integer::GetID(), aType)) return 0; - _isDone = true; - return aType->Get(); -} - -//============================================================================= -/*! - * GetValue - */ -//============================================================================= -TopoDS_Shape GEOM_Function::GetValue() -{ - _isDone = false; - - TopoDS_Shape aShape; - TDF_Label aLabel = GetOwnerEntry(); - if(aLabel.IsRoot()) return aShape; - Handle(GEOM_Object) anObject = GEOM_Object::GetObject(aLabel); - if(anObject.IsNull()) return aShape; - if(!anObject->IsMainShape()) { - try { - GEOM_Solver aSolver(GEOM_Engine::GetEngine()); - if (!aSolver.ComputeFunction(this)) { - MESSAGE("GEOM_Object::GetValue Error : Can't build a sub shape"); - return aShape; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - MESSAGE("GEOM_Function::GetValue Error: " << aFail->GetMessageString()); - return aShape; - } - } - - TDF_Label aResultLabel = _label.FindChild(RESULT_LABEL); - Handle(TNaming_NamedShape) aNS; - if(!aResultLabel.FindAttribute(TNaming_NamedShape::GetID(), aNS)) return aShape; - - aShape = aNS->Get(); - - _isDone = true; - return aShape; -} - -//============================================================================= -/*! - * GetValue - */ -//============================================================================= -void GEOM_Function::SetValue(TopoDS_Shape& theShape) -{ - _isDone = false; - TDF_Label aResultLabel = _label.FindChild(RESULT_LABEL); - TNaming_Builder aBuilder(aResultLabel); - - aBuilder.Generated(theShape); - - _isDone = true; -} - -//============================================================================= -/*! - * GetDriverGUID - */ -//============================================================================= -Standard_GUID GEOM_Function::GetDriverGUID() -{ - Handle(TFunction_Function) aFunction; - if(!_label.FindAttribute(TFunction_Function::GetID(), aFunction)) { - return TDF::LowestID(); - } - - return aFunction->GetDriverGUID(); -} - -//============================================================================= -/*! - * GetDescription - */ -//============================================================================= -TCollection_AsciiString GEOM_Function::GetDescription() -{ - Handle(TDataStd_Comment) aComment; - TDF_Label aChild = _label.FindChild(DESCRIPTION_LABEL); - if(!aChild.FindAttribute(TDataStd_Comment::GetID(), aComment)) return TCollection_AsciiString(); - TCollection_AsciiString aDescr(aComment->Get()); - return aDescr; -} - -//============================================================================= -/*! - * SetDescription - */ -//============================================================================= -void GEOM_Function::SetDescription(const TCollection_AsciiString& theDescription) -{ - TDF_Label aChild = _label.FindChild(DESCRIPTION_LABEL); - Handle(TDataStd_Comment) aComment = - TDataStd_Comment::Set(aChild, TCollection_ExtendedString(theDescription)); -} - -//============================================================================= -/*! - * SetReal - */ -//============================================================================= -void GEOM_Function::SetReal(int thePosition, double theValue) -{ - _isDone = false; - if(thePosition <= 0) return; - TDF_Label anArgLabel = ARGUMENT(thePosition); - TDataStd_Real::Set(anArgLabel, theValue); - _isDone = true; -} - -//============================================================================= -/*! - * SetRealArray - */ -//============================================================================= -void GEOM_Function::SetRealArray (int thePosition, - const Handle(TColStd_HArray1OfReal)& theArray) -{ - _isDone = false; - if(thePosition <= 0) return; - TDF_Label anArgLabel = ARGUMENT(thePosition); - Handle(TDataStd_RealArray) anAttr = - TDataStd_RealArray::Set(anArgLabel, theArray->Lower(), theArray->Upper()); - anAttr->ChangeArray(theArray); - _isDone = true; -} - -//============================================================================= -/*! - * GetReal - */ -//============================================================================= -double GEOM_Function::GetReal(int thePosition) -{ - _isDone = false; - if(thePosition <= 0) return 0.0; - Handle(TDataStd_Real) aReal; - TDF_Label anArgLabel = ARGUMENT(thePosition); - if(!anArgLabel.FindAttribute(TDataStd_Real::GetID(), aReal)) return 0.0; - - _isDone = true; - return aReal->Get(); -} - -//============================================================================= -/*! - * GetRealArray - */ -//============================================================================= -Handle(TColStd_HArray1OfReal) GEOM_Function::GetRealArray(int thePosition) -{ - _isDone = false; - if(thePosition <= 0) return NULL; - Handle(TDataStd_RealArray) aRealArray; - TDF_Label anArgLabel = ARGUMENT(thePosition); - if(!anArgLabel.FindAttribute(TDataStd_RealArray::GetID(), aRealArray)) return NULL; - - _isDone = true; - return aRealArray->Array(); -} - -//============================================================================= -/*! - * SetInteger - */ -//============================================================================= -void GEOM_Function::SetInteger(int thePosition, int theValue) -{ - _isDone = false; - if(thePosition <= 0) return; - TDF_Label anArgLabel = ARGUMENT(thePosition); - TDataStd_Integer::Set(anArgLabel, theValue); - _isDone = true; -} - -//============================================================================= -/*! - * SetIntegerArray - */ -//============================================================================= -void GEOM_Function::SetIntegerArray (int thePosition, - const Handle(TColStd_HArray1OfInteger)& theArray) -{ - _isDone = false; - if(thePosition <= 0) return; - TDF_Label anArgLabel = ARGUMENT(thePosition); - Handle(TDataStd_IntegerArray) anAttr = - TDataStd_IntegerArray::Set(anArgLabel, theArray->Lower(), theArray->Upper()); - anAttr->ChangeArray(theArray); - _isDone = true; -} - -//============================================================================= -/*! - * GetInteger - */ -//============================================================================= -int GEOM_Function::GetInteger(int thePosition) -{ - _isDone = false; - if(thePosition <= 0) return 0; - Handle(TDataStd_Integer) anInteger; - TDF_Label anArgLabel = ARGUMENT(thePosition); - if(!anArgLabel.FindAttribute(TDataStd_Integer::GetID(), anInteger)) return 0; - - _isDone = true; - return anInteger->Get(); -} - -//============================================================================= -/*! - * GetIntegerArray - */ -//============================================================================= -Handle(TColStd_HArray1OfInteger) GEOM_Function::GetIntegerArray(int thePosition) -{ - _isDone = false; - if(thePosition <= 0) return 0; - Handle(TDataStd_IntegerArray) anIntegerArray; - TDF_Label anArgLabel = ARGUMENT(thePosition); - if(!anArgLabel.FindAttribute(TDataStd_IntegerArray::GetID(), anIntegerArray)) return 0; - - _isDone = true; - return anIntegerArray->Array(); -} - -//============================================================================= -/*! - * SetString - */ -//============================================================================= -void GEOM_Function::SetString(int thePosition, const TCollection_AsciiString& theValue) -{ - _isDone = false; - if(thePosition <= 0) return; - TDF_Label anArgLabel = ARGUMENT(thePosition); - TDataStd_Comment::Set(anArgLabel, theValue); - _isDone = true; -} - -//============================================================================= -/*! - * GetString - */ -//============================================================================= -TCollection_AsciiString GEOM_Function::GetString(int thePosition) -{ - _isDone = false; - TCollection_AsciiString aRes; - if(thePosition <= 0) return aRes; - Handle(TDataStd_Comment) aString; - TDF_Label anArgLabel = ARGUMENT(thePosition); - if(!anArgLabel.FindAttribute(TDataStd_Comment::GetID(), aString)) return aRes; - - _isDone = true; - aRes = TCollection_AsciiString(aString->Get()); - return aRes; -} - -//============================================================================= -/*! - * SetReference - */ -//============================================================================= -void GEOM_Function::SetReference(int thePosition, Handle(GEOM_Function) theReference) -{ - _isDone = false; - if(thePosition <= 0) return; - if(theReference.IsNull()) return; - TDF_Label anArgLabel = ARGUMENT(thePosition); - TDF_Reference::Set(anArgLabel, theReference->GetEntry()); - TDataStd_UAttribute::Set(anArgLabel, GetDependencyID()); - _isDone = true; - return; -} - -//============================================================================= -/*! - * GetReference - */ -//============================================================================= -Handle(GEOM_Function) GEOM_Function::GetReference(int thePosition) -{ - _isDone = false; - if(thePosition <= 0) return NULL; - TDF_Label anArgLabel = ARGUMENT(thePosition); - Handle(TDF_Reference) aRef; - if(!anArgLabel.FindAttribute(TDF_Reference::GetID(), aRef)) return NULL; - - _isDone = true; - return GetFunction(aRef->Get()); -} - - -//============================================================================= -/*! - * SetStringArray - */ -//============================================================================= -void GEOM_Function::SetStringArray(int thePosition, const Handle(TColStd_HArray1OfExtendedString)& theArray) -{ - _isDone = false; - if(thePosition <= 0 || theArray.IsNull()) return; - TDF_Label anArgLabel = ARGUMENT(thePosition); - - Handle(TDataStd_ExtStringArray) anArray = new TDataStd_ExtStringArray; - anArray->ChangeArray(theArray); - anArgLabel.AddAttribute(anArray); - - _isDone = true; -} - - -//============================================================================= -/*! - * GetStringArray - */ -//============================================================================= -Handle(TColStd_HArray1OfExtendedString) GEOM_Function::GetStringArray(int thePosition) -{ - _isDone = false; - if(thePosition <= 0) return NULL; - TDF_Label anArgLabel = ARGUMENT(thePosition); - Handle(TDataStd_ExtStringArray) anArray; - if(!anArgLabel.FindAttribute(TDataStd_ExtStringArray::GetID(), anArray)) return NULL; - - _isDone = true; - return anArray->Array(); -} - -//======================================================================= -//function : GetReferencesTreeID -//purpose : -//======================================================================= -const Standard_GUID& GEOM_Function::GetReferencesTreeID() -{ - static Standard_GUID aReferencesTreeID("FF1BBB10-5D14-4df2-980B-3A668264EA16"); - return aReferencesTreeID; -} - -//============================================================================= -/*! - * SetReferenceList - */ -//============================================================================= -void GEOM_Function::SetReferenceList (int thePosition, - const Handle(TColStd_HSequenceOfTransient)& theRefList) -{ - _isDone = false; - if(thePosition <= 0) return; - - // parent label for the list of references - TDF_Label anArgLabel = ARGUMENT(thePosition); - anArgLabel.ForgetAllAttributes(); - - // set TreeNode on the parent label - Handle(TDataStd_TreeNode) aRoot, aNode; - aRoot = TDataStd_TreeNode::Set(anArgLabel, GetReferencesTreeID()); - - // store references on sub-labels of the parent label - Handle(GEOM_Function) aFunc; - Standard_Integer ind, len = theRefList->Length(); - for (ind = 1; ind <= len; ind++) { - aFunc = Handle(GEOM_Function)::DownCast(theRefList->Value(ind)); - if (aFunc.IsNull()) continue; - TDF_Label anArgLabel_i = SUB_ARGUMENT(thePosition, ind); - TDF_Reference::Set(anArgLabel_i, aFunc->GetEntry()); - TDataStd_UAttribute::Set(anArgLabel_i, GetDependencyID()); - - // set TreeNode on the child label - aNode = TDataStd_TreeNode::Set(anArgLabel_i, GetReferencesTreeID()); - aRoot->Append(aNode); - } - - _isDone = true; - return; -} - -//============================================================================= -/*! - * GetReferenceList - */ -//============================================================================= -Handle(TColStd_HSequenceOfTransient) GEOM_Function::GetReferenceList(int thePosition) -{ - Handle(TColStd_HSequenceOfTransient) aResult = new TColStd_HSequenceOfTransient; - _isDone = false; - if(thePosition <= 0) return aResult; - - // parent label for the list of references - TDF_Label anArgLabel = ARGUMENT(thePosition); - Handle(TDF_Reference) aRef; - - // get TreeNode on the parent label - Handle(TDataStd_TreeNode) aRoot, aNode; - if(!anArgLabel.FindAttribute(GetReferencesTreeID(), aRoot)) - return aResult; - - // get references, stored on sub-labels of the parent label - TDF_Label aLabel_i; - TDataStd_ChildNodeIterator anIter (aRoot); - for (; anIter.More(); anIter.Next()) { - aNode = anIter.Value(); - aLabel_i = aNode->Label(); - if (!aLabel_i.FindAttribute(TDF_Reference::GetID(), aRef)) continue; - Handle(GEOM_Function) aFunc_i = GetFunction(aRef->Get()); - if (aFunc_i.IsNull()) continue; - aResult->Append(aFunc_i); - } - - _isDone = true; - return aResult; -} - -//============================================================================= -/*! - * SetShape - */ -//============================================================================= -//void GEOM_Function::SetShape(int thePosition, const TopoDS_Shape& theShape) -//{ -// _isDone = false; -// if(thePosition <= 0 || theShape.IsNull()) return; -// -// TDF_Label anArgLabel = ARGUMENT(thePosition); -// TNaming_Builder aBuilder(anArgLabel); -// aBuilder.Generated(theShape); -// -// _isDone = true; -// return; -//} -// -//============================================================================= -/*! - * GetShape - */ -//============================================================================= -//TopoDS_Shape GEOM_Function::GetShape(int thePosition) -//{ -// _isDone = false; -// TopoDS_Shape aShape; -// if(thePosition <= 0) return aShape; -// -// TDF_Label anArgLabel = ARGUMENT(thePosition); -// Handle(TNaming_NamedShape) aNS; -// if(!anArgLabel.FindAttribute(TNaming_NamedShape::GetID(), aNS)) return aShape; -// -// aShape = aNS->Get(); -// _isDone = true; -// return aShape; -//} - - -//============================================================================= -/*! - * GetDependency - */ -//============================================================================= -void GEOM_Function::GetDependency(TDF_LabelSequence& theSeq) -{ - TDF_ChildIterator anIterator(ARGUMENTS, Standard_True); - for(; anIterator.More(); anIterator.Next()) { - if(anIterator.Value().IsAttribute(GetDependencyID())) theSeq.Append(anIterator.Value()); - } -} - -//============================================================================= -/*! - * GetHistoryEntry - */ -//============================================================================= -TDF_Label GEOM_Function::GetHistoryEntry (const Standard_Boolean create) -{ - return _label.FindChild(HISTORY_LABEL, create); -} - -//============================================================================= -/*! - * GetArgumentHistoryEntry - */ -//============================================================================= -TDF_Label GEOM_Function::GetArgumentHistoryEntry (const TDF_Label& theArgumentRefEntry, - const Standard_Boolean create) -{ - TColStd_ListOfInteger anArgumentRefTags; - TDF_Tool::TagList(theArgumentRefEntry, anArgumentRefTags); - Standard_Integer anArgumentRefLabelPos = anArgumentRefTags.Extent(); - - TDF_Label aHistoryLabel = GetHistoryEntry(create); - if (aHistoryLabel.IsNull()) - return aHistoryLabel; - Standard_Integer aHistoryLabelPos = aHistoryLabel.Depth() + 1; - - Standard_Integer itag; - TDF_Label aHistoryCurLabel = aHistoryLabel; - TColStd_ListIteratorOfListOfInteger aListIter (anArgumentRefTags); - for (itag = 1; itag <= aHistoryLabelPos; itag++) { - aListIter.Next(); - } - for (; itag <= anArgumentRefLabelPos; itag++) { - aHistoryCurLabel = aHistoryCurLabel.FindChild(aListIter.Value(), create); - if (aHistoryCurLabel.IsNull()) - return aHistoryCurLabel; - aListIter.Next(); - } - - return aHistoryCurLabel; -} - -//======================================================================= -//function : GEOM_Function_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOM_Function_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(MMgt_TShared); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType2 = STANDARD_TYPE(Standard_Transient); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOM_Function", - sizeof(GEOM_Function), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= - -const Handle(GEOM_Function) Handle(GEOM_Function)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOM_Function) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOM_Function))) { - _anOtherObject = Handle(GEOM_Function)((Handle(GEOM_Function)&)AnObject); - } - } - - return _anOtherObject ; -} diff --git a/src/GEOM/GEOM_Function.hxx b/src/GEOM/GEOM_Function.hxx deleted file mode 100644 index 9b223c9d1..000000000 --- a/src/GEOM/GEOM_Function.hxx +++ /dev/null @@ -1,251 +0,0 @@ - -#ifndef _GEOM_Function_HeaderFile -#define _GEOM_Function_HeaderFile - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Handle_MMgt_TShared_HeaderFile -#include -#endif -#ifndef _MMgt_TShared_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _TDF_Label_HeaderFile -#include -#endif -#ifndef _TDF_LabelSequence_HeaderFile -#include -#endif -#ifndef _TColStd_HArray1OfExtendedString_HeaderFile -#include -#endif - -class Handle_TColStd_HArray1OfReal; -class Handle_TColStd_HArray1OfInteger; -class Handle_TColStd_HSequenceOfTransient; -class Handle_TColStd_HArray1OfExtendedString; - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(MMgt_TShared); -class GEOM_Function; - -#include - - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOM_Function); - -class Handle(GEOM_Function) : public Handle(MMgt_TShared) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOM_Function)():Handle(MMgt_TShared)() {} - Handle(GEOM_Function)(const Handle(GEOM_Function)& aHandle) : Handle(MMgt_TShared)(aHandle) - { - } - - Handle(GEOM_Function)(const GEOM_Function* anItem) : Handle(MMgt_TShared)((MMgt_TShared *)anItem) - { - } - - Handle(GEOM_Function)& operator=(const Handle(GEOM_Function)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOM_Function)& operator=(const GEOM_Function* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOM_Function* operator->() - { - return (GEOM_Function *)ControlAccess(); - } - - GEOM_Function* operator->() const - { - return (GEOM_Function *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOM_Function)() {}; - - Standard_EXPORT static const Handle(GEOM_Function) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -class GEOM_Function : public MMgt_TShared -{ - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& GEOM_Function_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOM_Function) ; } - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOM_Function) == AType || MMgt_TShared::IsKind(AType)); } - - -private: - GEOM_Function(const TDF_Label& theEntry) { _label = theEntry; } - -public: - - //Returns a GUID for a function tree - Standard_EXPORT static const Standard_GUID& GetFunctionTreeID(); - - //Returns the ID which is associated with a reference to another function - Standard_EXPORT static const Standard_GUID& GetDependencyID(); - - //Finds and returns a function located on a label theEntry - Standard_EXPORT static Handle(GEOM_Function) GetFunction(const TDF_Label& theEntry); - - - Standard_EXPORT GEOM_Function(const TDF_Label& theEntry, const Standard_GUID& theGUID, int theType); - Standard_EXPORT ~GEOM_Function() {;} - - Standard_EXPORT TDF_Label GetOwnerEntry(); - - //Access to properties - - //Returns a result of the function built by the function Driver - Standard_EXPORT TopoDS_Shape GetValue(); - - //Sets the function result - Standard_EXPORT void SetValue(TopoDS_Shape& theShape); - - //Returns a function entry in the OCAF document - Standard_EXPORT TDF_Label& GetEntry() { return _label; } - - //Returns the type of the function - Standard_EXPORT int GetType(); - - //Returns a function Driver GUID - Standard_EXPORT Standard_GUID GetDriverGUID(); - - //Returns aPython description of the function - Standard_EXPORT TCollection_AsciiString GetDescription(); - - //Sets aPython description of the function - Standard_EXPORT void SetDescription(const TCollection_AsciiString& theDescription); - - //Access to arguments - - //Sets a real argument at position thePosition - Standard_EXPORT void SetReal(int thePosition, double theValue); - - //Returns a real argument at position thePosition - Standard_EXPORT double GetReal(int thePosition); - - //Sets a real array argument at position thePosition - Standard_EXPORT void SetRealArray(int thePosition, const Handle(TColStd_HArray1OfReal)& theArray); - - //Returns a real array argument at position thePosition - Standard_EXPORT Handle(TColStd_HArray1OfReal) GetRealArray(int thePosition); - - //Sets an integer argument at position thePosition - Standard_EXPORT void SetInteger(int thePosition, int theValue); - - //Returns an integer argument at position thePosition - Standard_EXPORT int GetInteger(int thePosition); - - //Sets an integer array argument at position thePosition - Standard_EXPORT void SetIntegerArray(int thePosition, const Handle(TColStd_HArray1OfInteger)& theArray); - - //Returns an integer array argument at position thePosition - Standard_EXPORT Handle(TColStd_HArray1OfInteger) GetIntegerArray(int thePosition); - - //Sets a reference to other function argument at position thePosition - Standard_EXPORT void SetReference(int thePosition, Handle(GEOM_Function) theReference); - - //Sets a string argument at position thePosition - Standard_EXPORT void SetString(int thePosition, const TCollection_AsciiString& theValue); - - //Returns a string argument at position thePosition - Standard_EXPORT TCollection_AsciiString GetString(int thePosition); - - //Returns a reference to other function argument at position thePosition - Standard_EXPORT Handle(GEOM_Function) GetReference(int thePosition); - - //Set an array of ExtendedString - Standard_EXPORT void SetStringArray(int thePosition, const Handle(TColStd_HArray1OfExtendedString)& theArray); - - //Returns the array of ExtendedString - Standard_EXPORT Handle(TColStd_HArray1OfExtendedString) GetStringArray(int thePosition); - - //Returns a GUID for a references tree - Standard_EXPORT static const Standard_GUID& GetReferencesTreeID(); - - //Sets a list of references to other function arguments at position thePosition - Standard_EXPORT void SetReferenceList (int thePosition, - const Handle(TColStd_HSequenceOfTransient)& theRefList); - - //Returns a list of references to other function arguments at position thePosition - Standard_EXPORT Handle(TColStd_HSequenceOfTransient) GetReferenceList (int thePosition); - - //Sets a TopoDS_Shape argument at position thePosition - //void SetShape(int thePosition, const TopoDS_Shape& theShape); - - //Returns a TopoDS_Shape argument at position thePosition - //TopoDS_Shape GetShape(int thePosition); - - //Returns true if the last method succided - Standard_EXPORT bool IsDone() { return _isDone; } - - //Returns a sequence of the external dependencies of this function - Standard_EXPORT void GetDependency(TDF_LabelSequence& theSeq); - - //Returns top label of this function's history tree - Standard_EXPORT TDF_Label GetHistoryEntry (const Standard_Boolean create = Standard_True); - - //Returns history label, corresponding to the label, - //on which a reference on argument is stored - Standard_EXPORT TDF_Label GetArgumentHistoryEntry (const TDF_Label& theArgumentRefEntry, - const Standard_Boolean create = Standard_True); - -private: - - - TDF_Label _label; - bool _isDone; -}; - -#endif diff --git a/src/GEOM/GEOM_Gen_i.cc b/src/GEOM/GEOM_Gen_i.cc deleted file mode 100644 index 1175cafe8..000000000 --- a/src/GEOM/GEOM_Gen_i.cc +++ /dev/null @@ -1,5333 +0,0 @@ -// GEOM GEOM : implementaion of GEOM_Gen.idl and GEOM_Shape.idl -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOM_GEN_i.cc file -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -using namespace std; -#include "GEOM_Gen_i.hh" - -#include "Partition_Spliter.hxx" -#include "Archimede_VolumeSection.hxx" -#include "Sketcher_Profile.hxx" - -#include "Utils_CorbaException.hxx" -#include "utilities.h" - -#include - -// Cascade headers - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#if OCC_VERSION_MAJOR >= 5 -#include -#else -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include -#include - -//VRV: OCC 4.0 migration -#include -#include -//VRV: OCC 4.0 migration - -#include -#include - -//VRV: OCC 4.0 migration -#include -#include -#include -#include -//#include -//VRV: OCC 4.0 migration - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -// #include - -#include "SALOMEDS_Tool.hxx" -#include "GEOMDS_Commands.hxx" -#include "GEOMDS_Explorer.hxx" - -#include CORBA_SERVER_HEADER(SALOMEDS_Attributes) - -#include "Utils_ExceptHandlers.hxx" - -Standard_EXPORT static Standard_Boolean IsValid(const TopoDS_Shape& S) { -#if OCC_VERSION_MAJOR >= 5 - return BRepAlgo::IsValid(S); -#else - return BRepAlgoAPI::IsValid(S); -#endif -} - -//============================================================================ -// function : GEOM_Gen_i() -// purpose : constructor to be called for servant creation. -//============================================================================ -GEOM_Gen_i::GEOM_Gen_i(CORBA::ORB_ptr orb, - PortableServer::POA_ptr poa, - PortableServer::ObjectId * contId, - const char *instanceName, - const char *interfaceName) : - Engines_Component_i(orb, poa, contId, instanceName, interfaceName) -{ - _thisObj = this ; - _id = _poa->activate_object(_thisObj); - // SCRUTE(this) - name_service = new SALOME_NamingService(_orb); - myOCAFApp = new GEOMDS_Application(); - myStudyID = -1; - GetCurrentStudy(0);//for correct work of SuperVisor -} - - - -//============================================================================ -// function : ~GEOM_Gen_i() -// purpose : destructor -//============================================================================ -GEOM_Gen_i::~GEOM_Gen_i() { - delete name_service; -} - - -//============================================================================ -// function : IORToLocalPersistentID() -// purpose : -//============================================================================ -char* GEOM_Gen_i::IORToLocalPersistentID(SALOMEDS::SObject_ptr theSObject, - const char* IORString, - CORBA::Boolean isMultiFile, - CORBA::Boolean isASCII) -{ - GEOM::GEOM_Shape_var aShape = GEOM::GEOM_Shape::_narrow(_orb->string_to_object(IORString)); - if (!CORBA::is_nil(aShape)) { - return aShape->ShapeId(); - } - return 0; -} - - -//============================================================================ -// function : LocalPersistentIDToIOR() -// purpose : Create/Load CORBA object from a persistent ref (an entry) -// : Used when a study is loaded -// : The IOR (IORName) of object created is returned -//============================================================================ -char* GEOM_Gen_i::LocalPersistentIDToIOR(SALOMEDS::SObject_ptr theSObject, - const char* aLocalPersistentID, - CORBA::Boolean isMultiFile, - CORBA::Boolean isASCII) -{ - SALOMEDS::Study_var myStudy = theSObject->GetStudy(); - GetCurrentStudy(myStudy->StudyId()); - Handle(TDocStd_Document) aDoc = Handle(TDocStd_Document)::DownCast(myStudyIDToDoc(myStudy->StudyId())); - CORBA::String_var aPersRefString = aLocalPersistentID; - - /* For a GEOM::GEOM_Shape the pers_ref is the Entry in the OCAF document */ - TCollection_ExtendedString MainIOR; - TDF_Label Lab; - TDF_Tool::Label(aDoc->GetData(), aPersRefString, Lab ); - - if (Lab.IsNull()) { - MESSAGE("Can not find label "<StudyId()); - THROW_SALOME_CORBA_EXCEPTION("Incorrect GEOM data loaded",SALOME::BAD_PARAM); - //return ""; empty IORs raise new problem: "display" in popup crashes - } - - Handle(TNaming_NamedShape) NS; - Lab.FindAttribute( TNaming_NamedShape::GetID(), NS ); - TopoDS_Shape S = TNaming_Tool::GetShape(NS); - - /* shapetype, index=0, topo, orb, shapetype, ismain=true and name are setted and modified later ? */ - GEOM::GEOM_Shape_var result = CreateObject(S); - GEOMDS_Commands GC( aDoc->Main() ) ; - - if ( GC.HasIOR(Lab) ) { /* shape already created/loaded */ - return 0 ; - } - - /******************* Dependent object (not a main shape) *********************/ - if( GC.IsDependentShape(Lab) ) { - - TDF_Label mainLabel ; - Standard_Boolean mainShapeOk = GC.GetMainShapeLabel(Lab, mainLabel) ; - - /* Main object not yet loaded we load/create it */ - if( !GC.HasIOR(mainLabel) ) { - - TCollection_AsciiString entry; - TDF_Tool::Entry(mainLabel,entry); - CORBA::String_var ent = CORBA::string_dup(entry.ToCString()); - - /* Create the main object recursively */ - MainIOR = LocalPersistentIDToIOR(theSObject, ent, isMultiFile, isASCII) ; - } else { - GC.ReturnNameIOR( mainLabel, MainIOR ); - } - - result->MainName( TCollection_AsciiString(MainIOR).ToCString() ) ; - result->IsMainShape(false) ; - result->ShapeId(aPersRefString); - - Handle(TDF_Reference) aRef; - Lab.FindAttribute( TDF_Reference::GetID(), aRef ); - TDF_Label myL = aRef->Get() ; - Handle(TNaming_NamedShape) NN; - myL.FindAttribute( TNaming_NamedShape::GetID(), NN ); - TopoDS_Shape mainTopo = TNaming_Tool::GetShape(NN); - - GEOM::GEOM_Shape::ListOfSubShapeID_var ListOfID = new GEOM::GEOM_Shape::ListOfSubShapeID; - - if(S.ShapeType() != TopAbs_COMPOUND) { - /* to set the index of a unique sub shape (Explode All ONLY for the moment !) */ - ListOfID->length(1); - int index = 1; - TopTools_MapOfShape M; - TopExp_Explorer Exp ; - for( Exp.Init(mainTopo, TopAbs_ShapeEnum( result->ShapeType() )) ; Exp.More(); Exp.Next() ) { - if ( M.Add(Exp.Current()) ) { - if(Exp.Current().IsSame(S) ) { - ListOfID[0] = index; - break; - } - index++ ; - } - } - result->Index(ListOfID) ; - return result->Name(); - } - else { - /* Here is a TopAbs_COMPOUND : we set the list/index for a compound : containing two or more sub shapes */ - /* Warning : the Corba shape has a shapetype Compound : in GEOMDS_Client we have to retrieve the kind of */ - /* subshapes contained in this compound ! */ - TopTools_SequenceOfShape SS; - TopoDS_Iterator it ; - TopExp_Explorer exp ; - TopAbs_ShapeEnum subType ; - - /* Set all sub shapes in a sequence of shapes */ - for ( it.Initialize( S, true, true ) ; it.More(); it.Next() ) { - subType = it.Value().ShapeType() ; - SS.Append( it.Value() ) ; - } - - ListOfID->length( SS.Length() ) ; - int j, k ; /* in TopTools_SequenceOfShape index start at 1 */ - - for( k=1; k<=SS.Length(); k++ ) { - j = 1 ; - for( exp.Init( mainTopo, subType ); exp.More(); exp.Next() ) { - if( exp.Current().IsSame( SS.Value(k) ) ) { - ListOfID[k-1] = j ; - } - j++ ; - } - } - result->Index(ListOfID) ; - return result->Name(); - } - - } - /******************* Independent object (not a sub shape) *********************/ - else { - result->IsMainShape(true) ; - if( !GC.AddIORNameAttribute(Lab, result->Name() ) ) { - MESSAGE("in LocalPersistentIDToIOR, NAME/IOR attribute already exist." << endl ) ; - } - Handle(TNaming_NamedShape) NamedShape ; - bool notTested = Lab.FindAttribute(TNaming_NamedShape::GetID(), NamedShape) ; - result->ShapeId(aPersRefString); - return result->Name(); - } -} - -//============================================================================ -// function : CanPublishInStudy -// purpose : -//============================================================================ -bool GEOM_Gen_i::CanPublishInStudy(CORBA::Object_ptr theIOR) -{ - GEOM::GEOM_Shape_var aShape = GEOM::GEOM_Shape::_narrow(theIOR); - return !(aShape->_is_nil()); -} - - -//============================================================================ -// function : PublishInStudy -// purpose : -//============================================================================ -SALOMEDS::SObject_ptr GEOM_Gen_i::PublishInStudy(SALOMEDS::Study_ptr theStudy, - SALOMEDS::SObject_ptr theSObject, - CORBA::Object_ptr theObject, - const char* theName) throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - SALOMEDS::SObject_var aResultSO; - if(CORBA::is_nil(theObject)) return aResultSO; - - GEOM::GEOM_Shape_var aShape = GEOM::GEOM_Shape::_narrow(theObject); - if(aShape->_is_nil()) return aResultSO; - - if(theStudy->_is_nil()) return aResultSO; - - SALOMEDS::GenericAttribute_var anAttr; - SALOMEDS::StudyBuilder_var aStudyBuilder = theStudy->NewBuilder(); - - SALOMEDS::SComponent_var aFather = theStudy->FindComponent("GEOM"); - if (aFather->_is_nil()) { - aFather = aStudyBuilder->NewComponent("GEOM"); - anAttr = aStudyBuilder->FindOrCreateAttribute(aFather, "AttributeName"); - SALOMEDS::AttributeName_var aName = SALOMEDS::AttributeName::_narrow(anAttr); - aName->SetValue("Geometry"); - anAttr = aStudyBuilder->FindOrCreateAttribute(aFather, "AttributePixMap"); - SALOMEDS::AttributePixMap::_narrow(anAttr)->SetPixMap("ICON_OBJBROWSER_Geometry"); - aStudyBuilder->DefineComponentInstance(aFather, GEOM_Gen::_this()); - } - if (aFather->_is_nil()) return aResultSO; - - if (CORBA::is_nil(theSObject)) { - aResultSO = aStudyBuilder->NewObject(aFather); - } else { - if (!theSObject->ReferencedObject(aResultSO)) - THROW_SALOME_CORBA_EXCEPTION("Publish in study supervision graph error",SALOME::BAD_PARAM); - } - anAttr = aStudyBuilder->FindOrCreateAttribute(aResultSO, "AttributeIOR"); - SALOMEDS::AttributeIOR_var anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr); - anIOR->SetValue(aShape->Name()); - - anAttr = aStudyBuilder->FindOrCreateAttribute(aResultSO, "AttributePixMap"); - SALOMEDS::AttributePixMap_var aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr); - TCollection_AsciiString aShapeName("Shape_"); - - if ( aShape->ShapeType() == GEOM::COMPOUND ) { - aPixmap->SetPixMap( "ICON_OBJBROWSER_COMPOUND" ); - aShapeName = "Compound_"; - } else if ( aShape->ShapeType() == GEOM::COMPSOLID ) { - aPixmap->SetPixMap( "ICON_OBJBROWSER_COMPSOLID" ); - aShapeName = "Compsolid_"; - } else if ( aShape->ShapeType() == GEOM::SOLID ) { - aPixmap->SetPixMap( "ICON_OBJBROWSER_SOLID" ); - aShapeName = "Solid_"; - } else if ( aShape->ShapeType() == GEOM::SHELL ) { - aPixmap->SetPixMap( "ICON_OBJBROWSER_SHELL" ); - aShapeName = "Shell_"; - } else if ( aShape->ShapeType() == GEOM::FACE ) { - aPixmap->SetPixMap( "ICON_OBJBROWSER_FACE" ); - aShapeName = "Face_"; - } else if ( aShape->ShapeType() == GEOM::WIRE ) { - aPixmap->SetPixMap( "ICON_OBJBROWSER_WIRE" ); - aShapeName = "Wire_"; - } else if ( aShape->ShapeType() == GEOM::EDGE ) { - aPixmap->SetPixMap( "ICON_OBJBROWSER_EDGE" ); - aShapeName = "Edge_"; - } else if ( aShape->ShapeType() == GEOM::VERTEX ) { - aPixmap->SetPixMap( "ICON_OBJBROWSER_VERTEX" ); - aShapeName = "Vertex_"; - } - if (strlen(theName) == 0) aShapeName += TCollection_AsciiString(aResultSO->Tag()); - else aShapeName = TCollection_AsciiString((char*)theName); - - //Set a name of the added shape - anAttr = aStudyBuilder->FindOrCreateAttribute(aResultSO, "AttributeName"); - SALOMEDS::AttributeName_var aNameAttrib = SALOMEDS::AttributeName::_narrow(anAttr); - aNameAttrib->SetValue(aShapeName.ToCString()); - - //Add a reference to published object -// aStudyBuilder->Addreference(theObject, aResultSO); - return aResultSO._retn(); -} - - -//============================================================================ -// function : Save() -// purpose : save OCAF/Geom document -//============================================================================ -SALOMEDS::TMPFile* GEOM_Gen_i::Save(SALOMEDS::SComponent_ptr theComponent, - const char* theURL, - bool isMultiFile) { - SALOMEDS::TMPFile_var aStreamFile; - // Get a temporary directory to store a file - TCollection_AsciiString aTmpDir = (isMultiFile)?TCollection_AsciiString((char*)theURL):(char*)SALOMEDS_Tool::GetTmpDir().c_str(); - // Create a list to store names of created files - SALOMEDS::ListOfFileNames_var aSeq = new SALOMEDS::ListOfFileNames; - aSeq->length(1); - // Prepare a file name to open - TCollection_AsciiString aNameWithExt(""); - if (isMultiFile) - aNameWithExt = TCollection_AsciiString((char*)SALOMEDS_Tool::GetNameFromPath(theComponent->GetStudy()->URL()).c_str()); - aNameWithExt += TCollection_AsciiString("_GEOM.sgd"); - aSeq[0] = aNameWithExt.ToCString(); - // Build a full file name of temporary file - TCollection_AsciiString aFullName = aTmpDir + aNameWithExt; - // Save GEOM component in this file - myOCAFApp->SaveAs(myCurrentOCAFDoc, aFullName); - // Conver a file to the byte stream - aStreamFile = SALOMEDS_Tool::PutFilesToStream(aTmpDir.ToCString(), aSeq.in(), isMultiFile); - // Remove the created file and tmp directory - if (!isMultiFile) SALOMEDS_Tool::RemoveTemporaryFiles(aTmpDir.ToCString(), aSeq.in(), true); - // Return the created byte stream - return aStreamFile._retn(); -} - -SALOMEDS::TMPFile* GEOM_Gen_i::SaveASCII(SALOMEDS::SComponent_ptr theComponent, - const char* theURL, - bool isMultiFile) { - SALOMEDS::TMPFile_var aStreamFile = Save(theComponent, theURL, isMultiFile); - return aStreamFile._retn(); -} - - -CORBA::Boolean GEOM_Gen_i::Load(SALOMEDS::SComponent_ptr theComponent, - const SALOMEDS::TMPFile& theStream, - const char* theURL, - bool isMultiFile) { - - if (theStream.length() <= 9) { - MESSAGE("The TMPFile is too short : " << theStream.length() << " bytes "); - return false; - } - - // Get a temporary directory for a file - TCollection_AsciiString aTmpDir = isMultiFile?TCollection_AsciiString((char*)theURL):(char*)SALOMEDS_Tool::GetTmpDir().c_str(); - // Conver the byte stream theStream to a file and place it in tmp directory - SALOMEDS::ListOfFileNames_var aSeq = SALOMEDS_Tool::PutStreamToFiles(theStream, - aTmpDir.ToCString(), - isMultiFile); - - // Prepare a file name to open - TCollection_AsciiString aNameWithExt(""); - if (isMultiFile) - aNameWithExt = TCollection_AsciiString((char*)SALOMEDS_Tool::GetNameFromPath(theComponent->GetStudy()->URL()).c_str()); - aNameWithExt += TCollection_AsciiString("_GEOM.sgd"); - TCollection_AsciiString aFullName = aTmpDir + aNameWithExt; - - // Open document - if (myOCAFApp->Open(aFullName, myCurrentOCAFDoc) != CDF_RS_OK) return false; - - // Remove the created file and tmp directory - if (!isMultiFile) SALOMEDS_Tool::RemoveTemporaryFiles(aTmpDir.ToCString(), aSeq.in(), true); - - SALOMEDS::Study_var Study = theComponent->GetStudy(); - TCollection_AsciiString name( Study->Name() ); - - int StudyID = Study->StudyId(); - myStudyIDToDoc.Bind( StudyID, myCurrentOCAFDoc ); - myStudyID = StudyID; - - /* We clear all IOR (nameIOR) attributes of all objects before reconstruction */ - /* This information will be setted when each object is reconstructed */ - GEOMDS_Commands GC( myCurrentOCAFDoc->Main() ) ; - GC.ClearAllIOR(myCurrentOCAFDoc->Main()); - - return true; -} - -CORBA::Boolean GEOM_Gen_i::LoadASCII(SALOMEDS::SComponent_ptr theComponent, - const SALOMEDS::TMPFile& theStream, - const char* theURL, - bool isMultiFile) { - return Load(theComponent, theStream, theURL, isMultiFile); -} - -// //============================================================================ -// // function : Save() -// // purpose : save OCAF/Geom document -// //============================================================================ -// void GEOM_Gen_i::Save(const char *IORSComponent, const char *aUrlOfFile) -// { - -// TCollection_ExtendedString path((char*)aUrlOfFile); -// TCollection_ExtendedString pathWithExt = path + TCollection_ExtendedString(".sgd"); -// myOCAFApp->SaveAs(myCurrentOCAFDoc,pathWithExt); -// } - - -// //============================================================================ -// // function : Load() -// // purpose : Load OCAF/Geom document -// //============================================================================ -// void GEOM_Gen_i::Load(const char *IORSComponent, const char *aUrlOfFile) -// { - -// TCollection_ExtendedString path((char*)aUrlOfFile); -// TCollection_ExtendedString pathWithExt = path + TCollection_ExtendedString(".sgd"); - -// myOCAFApp->Open(pathWithExt,myCurrentOCAFDoc); - -// SALOMEDS::SComponent_var SC = SALOMEDS::SComponent::_narrow(_orb->string_to_object(IORSComponent)); -// SALOMEDS::Study_var Study = SC->GetStudy(); -// TCollection_AsciiString name( Study->Name() ); - -// int StudyID = Study->StudyId(); -// myStudyIDToDoc.Bind( StudyID, myCurrentOCAFDoc ); -// myStudyID = StudyID; - -// /* We clear all IOR (nameIOR) attributes of all objects before reconstruction */ -// /* This information will be setted when each object is reconstructed */ -// GEOMDS_Commands GC( myCurrentOCAFDoc->Main() ) ; -// GC.ClearAllIOR(myCurrentOCAFDoc->Main()); - -// return ; -// } - - -//============================================================================ -// function : Close() -// purpose : -//============================================================================ -void GEOM_Gen_i::Close(SALOMEDS::SComponent_ptr theComponent) -{ - int anID = theComponent->GetStudy()->StudyId(); - if (anID == myStudyID) GetCurrentStudy(0); // set default value of current study ID, if current is deleted - if (myStudyIDToDoc.IsBound(anID)) { - // close document in the application -// Handle(TDocStd_Owner) anOwner; - Handle(TDocStd_Document) aDoc = Handle(TDocStd_Document)::DownCast(myStudyIDToDoc.Find(anID)); -// Handle(TDocStd_Document) anEmptyDoc; -// if (aDoc->Main().Root().FindAttribute(TDocStd_Owner::GetID(), anOwner)) { -// anOwner->SetDocument(anEmptyDoc); -// MESSAGE("********** Nullify owner of document"); -// } - myOCAFApp->Close(aDoc); - myStudyIDToDoc.UnBind(anID); // remove document from GEOM documents data map - } -} - -//============================================================================ -// function : CanCopy() -// purpose : -//============================================================================ -CORBA::Boolean GEOM_Gen_i::CanCopy(SALOMEDS::SObject_ptr theObject) { - // Try to retrieve known by Geometry component GEOM_shape by given IOR - SALOMEDS::GenericAttribute_var anAttr; - if (!theObject->FindAttribute(anAttr, "AttributeIOR")) return false; - GEOM::GEOM_Shape_var aShape = GetIORFromString(SALOMEDS::AttributeIOR::_narrow(anAttr)->Value()); - // If the object is null one it can't be copied: return false - if (aShape->_is_nil()) return false; - return true; -} - -//============================================================================ -// function : CopyFrom() -// purpose : -//============================================================================ -SALOMEDS::TMPFile* GEOM_Gen_i::CopyFrom(SALOMEDS::SObject_ptr theObject, CORBA::Long& theObjectID) { - // Declare a sequence of the byte to store the copied object - SALOMEDS::TMPFile_var aStreamFile = new SALOMEDS::TMPFile; - - // Try to get GEOM_Shape object by given SObject - SALOMEDS::GenericAttribute_var anAttr; - if (!theObject->FindAttribute(anAttr, "AttributeIOR")) return false; - GEOM::GEOM_Shape_var aShape = GetIORFromString(SALOMEDS::AttributeIOR::_narrow(anAttr)->Value()); - // If the object is null one it can't be copied: return false - if (aShape->_is_nil()) return aStreamFile._retn(); - - GetCurrentStudy(theObject->GetStudy()->StudyId()); - - // Convert a TopoDS_Shape to a stream of bytes - TopoDS_Shape aTopology = GetTopoShape(aShape); - if (aTopology.IsNull()) return aStreamFile._retn(); - ostrstream aStreamedShape; - BRepTools::Write(aTopology, aStreamedShape); - int aSize = aStreamedShape.pcount(); - char* aBuffer = new char[aSize]; - memcpy(aBuffer, aStreamedShape.str(), aSize); - aStreamedShape.rdbuf()->freeze(0); - - aStreamFile = new SALOMEDS::TMPFile(aSize, aSize, (CORBA::Octet*)aBuffer, 1); - - // Assign an ID = 1 the the type GEOM_Shape - theObjectID = 1; - - // Return created TMPFile - return aStreamFile._retn(); -} - -//============================================================================ -// function : CanPaste() -// purpose : -//============================================================================ -CORBA::Boolean GEOM_Gen_i::CanPaste(const char* theComponentName, CORBA::Long theObjectID) { - // The Geometry component can paste only objects copied by Geometry component - // and with the object type = 1 -// MESSAGE("********** GEOM_Gen_i::CanPaste ("<GetStudy(); - SALOMEDS::StudyBuilder_var aStudyBuilder = aStudy->NewBuilder(); - - // Retrieve a TopoDS_Shape from byte stream - TopoDS_Shape aTopology; - istrstream aStreamedBrep((char*) &theStream[0], theStream.length()); - BRep_Builder aBuilder; - try { - BRepTools::Read(aTopology, aStreamedBrep, aBuilder); - } catch (Standard_Failure) { - MESSAGE("GEOM_Gen_i::PasteInto exception"); - return false; - } - - // Create new object in Geometry component using retrieved topology - GEOM::GEOM_Shape_var aShape = CreateObject(aTopology); - GetCurrentStudy(aStudy->StudyId()); - const char *anEntry = InsertInLabel(aTopology, aShape->Name(), myCurrentOCAFDoc) ; - aShape->ShapeId(anEntry) ; - - // SObject of the created shape is theObject or new Child of Component if theObject == geom component - SALOMEDS::SObject_var aNewSO; - if (strcmp(theObject->GetFatherComponent()->GetID(),theObject->GetID()) == 0) { - aNewSO = aStudyBuilder->NewObject(theObject); - } else aNewSO = SALOMEDS::SObject::_duplicate(theObject); - // Add IORAttribute to the Study and set IOR of the created GEOM_Shape to it - SALOMEDS::GenericAttribute_var anAttr = aStudyBuilder->FindOrCreateAttribute(aNewSO, "AttributeIOR"); - SALOMEDS::AttributeIOR_var anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr); - anIOR->SetValue(aShape->Name()); - - // Return the created in the Study SObject - return aNewSO._retn(); -} - -//============================================================================ -// function : ComponentDataType() -// purpose : -//============================================================================ -char* GEOM_Gen_i::ComponentDataType() -{ - return CORBA::string_dup("GEOM"); -} - -//============================================================================ -// function : register() -// purpose : register 'name' in 'name_service' -//============================================================================ -void GEOM_Gen_i::register_name(char * name) -{ - GEOM::GEOM_Gen_ptr g = GEOM::GEOM_Gen::_narrow(POA_GEOM::GEOM_Gen::_this()); - name_service->Register(g, name); -} - - - -//================================================================================ -// function : SequenceOfShapeFromListOfGeomShape() -// purpose : Define a sequence of shapes from 'listShapes' and return its length. -// : No control is made on shapes ! -//================================================================================ -int GEOM_Gen_i::SequenceOfShapeFromListOfGeomShape( const GEOM::GEOM_Gen::ListOfGeomShapes& listShapes, - TopTools_SequenceOfShape& SS ) -{ - int nbShapes = listShapes.length() ; - if( nbShapes < 1) - return 0 ; - - for(int i=0; iGetData() ; - TDF_Tool::Label( D, shape_ptr->ShapeId(), lab, true ) ; - Handle(TNaming_NamedShape) NamedShape ; - bool res = lab.FindAttribute(TNaming_NamedShape::GetID(), NamedShape) ; - - if( !res ) { - return tds ; /* a null shape is returned */ - } - else { - return TNaming_Tool::GetShape(NamedShape) ; - } -} - - - -//================================================================================= -// function : GetStringFromIOR() -// purpose : returns a string that represents a 'GEOM::GEOM_Shape_var' -//================================================================================= -const char* GEOM_Gen_i::GetStringFromIOR(GEOM::GEOM_Shape_var shapeIOR) { - const char * ret = _orb->object_to_string(shapeIOR) ; - return ret ; -} - - - -//================================================================================= -// function : GetIORFromString() -// purpose : returns a 'GEOM::GEOM_Shape_var' from a string representing it -//================================================================================= -GEOM::GEOM_Shape_ptr GEOM_Gen_i::GetIORFromString(const char* stringIOR) { - GEOM::GEOM_Shape_var shapeIOR; - if(strcmp(stringIOR,"") != 0){ - CORBA::Object_var anObject = _orb->string_to_object(stringIOR); - if(!CORBA::is_nil(anObject)) - shapeIOR = GEOM::GEOM_Shape::_narrow(anObject.in()) ; - } - return shapeIOR._retn() ; -} - - - -//================================================================================== -// function : InsertInLabel() -// purpose : Insert S = Shape and mystr = name in a new Label of Geom/OCAF document -// : and returns the corresponding OCAF entry -//================================================================================== -const char * GEOM_Gen_i::InsertInLabel(TopoDS_Shape S, const char *mystr, Handle(TDocStd_Document) OCAFDoc) -{ - GEOMDS_Commands GC(OCAFDoc->Main()); - /* add attributs S and mystr in a new label */ - TDF_Label Lab = GC.AddShape (S, (char*)mystr); - - TCollection_AsciiString entry; - TDF_Tool::Entry(Lab,entry); - const char *ent = entry.ToCString() ; - return ent ; -} - - -//================================================================================== -// function : InsertInLabelDependentShape() -// purpose : Insert S = Shape and its nameIor in a new Label of Geom/OCAF document -// : insert also a reference attribute (a label) to the main shape 'mainshap_ptr'. -// : and returns the corresponding OCAF entry of the new label. -//================================================================================== -const char * GEOM_Gen_i::InsertInLabelDependentShape( TopoDS_Shape S, - const char *nameIor, - GEOM::GEOM_Shape_ptr mainshape_ptr, - Handle(TDocStd_Document) OCAFDoc ) -{ - GEOMDS_Commands GC(OCAFDoc->Main()); - /* add attributs S and nameIor in a new label */ - - /* retrieve the label of the main shape in the document */ - TDF_Label mainRefLab; - TDF_Tool::Label(OCAFDoc->GetData(), mainshape_ptr->ShapeId(), mainRefLab); - - /* add attributs : S, nameIor and ref to main */ - TDF_Label Lab = GC.AddDependentShape(S, (char*)nameIor, mainRefLab); - - TCollection_AsciiString entry; - TDF_Tool::Entry(Lab, entry); - const char *ent = entry.ToCString() ; - return ent ; -} - - -//================================================================================= -// function : InsertInLabelOneArgument() -// purpose : -//================================================================================= -void GEOM_Gen_i::InsertInLabelOneArgument(TopoDS_Shape main_topo, - GEOM::GEOM_Shape_ptr shape_ptr, - TopoDS_Shape result_topo, - GEOM::GEOM_Shape_ptr result, - Handle(TDocStd_Document) OCAFDoc) -{ - /* Put shape and name into geom/OCAF doc */ - GEOMDS_Commands GC(OCAFDoc->Main()); - /* Add attributs 'shape' and 'name_ior' in a new label */ - TDF_Label Lab = GC.Generated( main_topo, result_topo, result->Name() ); - TCollection_AsciiString entry; - TDF_Tool::Entry(Lab, entry); - result->ShapeId( entry.ToCString() ) ; - - /* Create a new label */ - TDF_Label NewLab = Lab.NewChild(); - TCollection_ExtendedString Value("Arguments"); - TDataStd_Name::Set(NewLab,Value); - - TDF_Label NewLab1 = NewLab.NewChild(); - TDF_Label RefLab; - TDF_Tool::Label(OCAFDoc->GetData(), shape_ptr->ShapeId(), RefLab); - TDF_Reference::Set(NewLab1, RefLab); -} - - -//================================================================================= -// function : InsertInLabelMoreArguments() -// purpose : -//================================================================================= -void GEOM_Gen_i::InsertInLabelMoreArguments(TopoDS_Shape main_topo, - GEOM::GEOM_Shape_ptr result, - const GEOM::GEOM_Gen::ListOfIOR& ListShapes, - Handle(TDocStd_Document) OCAFDoc) -{ - /* Put shape and name into geom/OCAF doc */ - GEOMDS_Commands GC(OCAFDoc->Main()); - /* Add attributs TopoDS and name_ior in a new label */ - TDF_Label Lab = GC.AddShape(main_topo, result->Name() ); - TCollection_AsciiString entry; - TDF_Tool::Entry(Lab, entry); - - /* Create a new label */ - TDF_Label NewLab = Lab.NewChild(); - TCollection_ExtendedString Value("Arguments"); - TDataStd_Name::Set(NewLab, Value); - - for (unsigned int ind = 0; ind < ListShapes.length(); ind++) { - - TDF_Label NewLab1 = NewLab.NewChild(); - GEOM::GEOM_Shape_var aShape = GetIORFromString( ListShapes[ind] ); - - TDF_Label RefLab; - TDF_Tool::Label(OCAFDoc->GetData(), aShape->ShapeId(), RefLab); - TDF_Reference::Set(NewLab1, RefLab); - } - result->ShapeId(entry.ToCString()); -} - - - -//================================================================================= -// function: NbLabels() -// purpose : -//================================================================================= -CORBA::Short GEOM_Gen_i::NbLabels() -{ - TDF_ChildIterator ChildIterator(myCurrentOCAFDoc->Main()); - unsigned int i = 1; - - while (ChildIterator.More()) { - i++; - ChildIterator.Next(); - } - return i; - // return TDF_Tool::NbLabels( myCurrentOCAFDoc->Main() ); -} - - - -//================================================================================= -// function: GetCurrentStudy() -// purpose : Finds or creates the geom/OCAF document corresponding to the index -// 'StudyID' -//================================================================================= -void GEOM_Gen_i::GetCurrentStudy(CORBA::Long StudyID) -{ - /* If StudyID is known we link myCurrentOCAFDoc to it */ - if (myStudyIDToDoc.IsBound(StudyID)) { - myCurrentOCAFDoc = Handle(TDocStd_Document)::DownCast(myStudyIDToDoc(StudyID)); - } - /* Create a new OCAFDoc and link it to 'StudyID' argument */ - else { - myOCAFApp->NewDocument("SALOME_GEOM",myCurrentOCAFDoc); - myStudyIDToDoc.Bind(StudyID,myCurrentOCAFDoc); - } - myStudyID = StudyID; -} - - -//================================================================================ -// function : CreateObject() -// purpose : private function to create a complete CORBA object and return it -//================================================================================ -GEOM::GEOM_Shape_ptr GEOM_Gen_i::CreateObject(TopoDS_Shape& tds) -{ -// if ( tds.ShapeType() == TopAbs_COMPOUND ) { -// TopoDS_Iterator itr(tds); -// TopoDS_Shape res; -// int i = 0; -// while (itr.More()) { -// i++; -// res = itr.Value(); -// itr.Next(); -// } - -// if ( i == 1 ) -// tds = res; -// } - - GEOM::shape_type st = GEOM::shape_type(tds.ShapeType()) ; /* casting */ - - /* Create the CORBA servant holding the TopoDS_Shape */ - GEOM::GEOM_Gen_ptr engine = POA_GEOM::GEOM_Gen::_this(); - GEOM::GEOM_Shape::ListOfSubShapeID_var index = new GEOM::GEOM_Shape::ListOfSubShapeID; - index->length(0); - GEOM_Shape_i * shape_servant = new GEOM_Shape_i(tds, _orb, engine, index, st, true); - GEOM::GEOM_Shape_var shape = GEOM::GEOM_Shape::_narrow(shape_servant->_this()); - - /* Create and set the name (IOR of shape converted into a string) */ - string name_ior = _orb->object_to_string(shape) ; - shape->Name( name_ior.c_str() ); - shape->NameType( "" ); - return shape; -} - -//======================================================================= -//function : CreateSubObject -//purpose : -//======================================================================= - -GEOM::GEOM_Shape_ptr GEOM_Gen_i::CreateSubObject(const TopoDS_Shape& SubShape, - const GEOM::GEOM_Shape_ptr MainShape, - const GEOM::GEOM_Shape::ListOfSubShapeID& ListOfID) -{ - GEOM::shape_type st = GEOM::shape_type(SubShape.ShapeType()) ; /* casting */ - - /* Create the CORBA servant holding the TopoDS_Shape */ - GEOM::GEOM_Gen_ptr engine = POA_GEOM::GEOM_Gen::_this(); - GEOM_Shape_i * shape_servant = - new GEOM_Shape_i(SubShape, _orb, engine, ListOfID, st, false); - GEOM::GEOM_Shape_var shape = GEOM::GEOM_Shape::_narrow(shape_servant->_this()); - - /* Create and set the name (IOR of shape converted into a string) */ - string name_ior = _orb->object_to_string(shape) ; - shape->Name( name_ior.c_str() ); - /* create and set the mainname (IOR of shape converted into a string) */ - const char *mainname_ior = _orb->object_to_string(MainShape) ; - shape->MainName(mainname_ior); - /* precaution : NameType will be set precisely in GUI */ - shape->NameType( "" ); - /* add 'SubShape' its 'nameIOR' and a reference to the main shape thanks to method below */ - const char *entry = - InsertInLabelDependentShape(SubShape, shape->Name(), MainShape, myCurrentOCAFDoc) ; - shape->ShapeId( entry ) ; - - return shape; -} - -//======================================================================= -// function : SuppressFacesGlue() -// purpose : Define a compound of shells after suppress of mapFaces in the -// : shape S and return the number of shells of the compound. -//======================================================================= -int GEOM_Gen_i::SuppressFacesGlue( const TopoDS_Shape& S, - const TopTools_MapOfShape& mapFaces, - TopoDS_Shape& aCompoundOfShells ) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - BRepTools_Quilt Glue; - aCompoundOfShells.Nullify() ; - - for ( TopExp_Explorer exp( S, TopAbs_FACE); exp.More(); exp.Next() ) { - const TopoDS_Face& F = TopoDS::Face(exp.Current()); - if ( !mapFaces.Contains(F) ) { - /* this face must not to be suppressed */ - Glue.Add(F); - } - } - - /* Use specif method to calculate the compound of shells */ - aCompoundOfShells = Glue.Shells(); - - if( aCompoundOfShells.ShapeType() != TopAbs_COMPOUND ) { - THROW_SALOME_CORBA_EXCEPTION("In GEOM_Gen_i::SuppressFacesGlue() : not a GEOM::COMPOUND", SALOME::BAD_PARAM); - } - - /* explore Compound for verification and return the number of shells */ - int numberOfShell = 0 ; - for ( TopExp_Explorer exp1( aCompoundOfShells, TopAbs_SHELL); exp1.More(); exp1.Next() ) - numberOfShell++ ; - - return numberOfShell ; -} - - -//===================================================================================== -// function : GetIndexTopology() -// purpose : return the index of a sub shape in a shape (index starts at 1) -// : Return -1 if not found -//===================================================================================== -int GEOM_Gen_i::GetIndexTopology(const TopoDS_Shape& subshape, const TopoDS_Shape& mainShape) -{ - if( mainShape.IsNull() || subshape.IsNull() ) - return -1 ; - - int index = 1; - if (subshape.ShapeType() == TopAbs_COMPOUND) - { - TopoDS_Iterator it; - TopTools_ListOfShape CL; - CL.Append( mainShape ); - TopTools_ListIteratorOfListOfShape itC; - for (itC.Initialize( CL ); itC.More(); itC.Next()) - { - for (it.Initialize( itC.Value() ); it.More(); it.Next()) - { - if ( it.Value().ShapeType() == TopAbs_COMPOUND) - { - if (it.Value().IsSame(subshape)) - return index; - else - index++; - CL.Append( it.Value() ); - } - } - } - } - else - { - TopExp_Explorer Exp ( mainShape, subshape.ShapeType() ); - TopTools_MapOfShape M; - while ( Exp.More() ) - { - if ( M.Add(Exp.Current()) ) - { - if ( Exp.Current().IsSame(subshape) ) - return index; - index++; - } - Exp.Next(); - } - } - return -1; -} - - -//================================================================================ -// function : IndexOfFacesOfSubShell() -// purpose : Return a list of indices corresponding to the faces of a 'subShell' -// : in the main shape 'S' -//================================================================================ -GEOM::GEOM_Shape::ListOfSubShapeID* GEOM_Gen_i::IndexOfFacesOfSubShell( const TopoDS_Shape& S, - const TopoDS_Shape subShell ) - throw (SALOME::SALOME_Exception) -{ - - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape::ListOfSubShapeID_var ListOfID = new GEOM::GEOM_Shape::ListOfSubShapeID; - ListOfID->length(0) ; - if( subShell.IsNull() || subShell.ShapeType() != TopAbs_SHELL ) { - THROW_SALOME_CORBA_EXCEPTION("In GEOM_Gen_i::IndexOfFacesOfSubShell() : null shape or not a GEOM::SHELL", SALOME::BAD_PARAM); - } - - /* put faces of subShell in a Map of faces */ - int j = 0 ; - TopTools_MapOfShape mapFaces ; - for( TopExp_Explorer Exp1( subShell, TopAbs_FACE ); Exp1.More(); Exp1.Next() ) { - mapFaces.Add(Exp1.Current() ) ; - j++ ; - } - - if( j<1 ) - THROW_SALOME_CORBA_EXCEPTION("In GEOM_Gen_i::IndexOfFacesOfSubShell() : no faces in sub shell", SALOME::BAD_PARAM); - - /* Find index of each face of subshell in the main topology and put its index in ListOfID */ - int size = 0 ; - for ( TopExp_Explorer Exp2(S, TopAbs_FACE); Exp2.More(); Exp2.Next() ) { - - const TopoDS_Face& F = TopoDS::Face( Exp2.Current() ) ; - - if( mapFaces.Contains(F) ) { - int n = GetIndexTopology( F, S ) ; - if( n<=0 ) { - THROW_SALOME_CORBA_EXCEPTION("In GEOM_Gen_i::IndexOfFacesOfSubShell() : no index found", SALOME::BAD_PARAM); - } - size++; - ListOfID->length(size) ; - ListOfID[size-1] = n ; - } - } - - return ListOfID._retn() ; -} - - - -//================================================================================ -// function : ListOfIDIntoMapOfShapes() -// purpose : Define a MapOfShapes from a main topology 'S' a 'subShapeType' -// : and a list of indices 'L'. -// : Return true if 'aMap' is not empty -//================================================================================ -bool GEOM_Gen_i::ListOfIDIntoMapOfShapes( const TopoDS_Shape& S, - const GEOM::GEOM_Shape::ListOfSubShapeID& L, - const int subShapeType, - TopTools_MapOfShape& aMap ) -{ - if( L.length() < 1 || S.IsNull() ) { - return false ; - } - - aMap.Clear() ; - for( int k=0; klength(0) ; - - TopoDS_Shape mainShape = GetTopoShape(shape); - if( mainShape.IsNull() ) - THROW_SALOME_CORBA_EXCEPTION("In GEOM_Gen_i::SuppressFaces() : null argument shape", SALOME::BAD_PARAM); - - if( ListOfID.length() < 1 ) - THROW_SALOME_CORBA_EXCEPTION("In GEOM_Gen_i::SuppressFaces() : empty ListOfID", SALOME::BAD_PARAM); - - /* Define 'mapFaces' a map of faces to be suppressed in mainShape */ - TopTools_MapOfShape mapFaces ; - if( !ListOfIDIntoMapOfShapes(mainShape, ListOfID, TopAbs_FACE, mapFaces ) ) { - return listOfGeomShapes._retn(); - } - - /* Call algorithm to calculate a compound of shells resulting of face suppression */ - int numberOfShells = 0 ; - TopoDS_Shape aCompoundOfShells ; - numberOfShells = SuppressFacesGlue(mainShape, mapFaces, aCompoundOfShells) ; - if(numberOfShells < 1) { - THROW_SALOME_CORBA_EXCEPTION("In GEOM_Gen_i::Suppressfaces() : no shells", SALOME::BAD_PARAM); - } - - /* Create a shell for each shell contained in 'aCompoundOfShells' and */ - /* put it in the list of GeomShapes to be returned. */ - /* But if the shell is composed of only a face we create a face and not a shell */ - int i = 0 ; - for( TopExp_Explorer exp(aCompoundOfShells, TopAbs_SHELL); exp.More(); exp.Next() ) { - - const TopoDS_Shell& aShell = TopoDS::Shell( exp.Current() ); - if( aShell.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("In GEOM_Gen_i::Suppressfaces() : null shell", SALOME::BAD_PARAM); - } - - GEOM::GEOM_Shape::ListOfSubShapeID_var aList = new GEOM::GEOM_Shape::ListOfSubShapeID; - aList = IndexOfFacesOfSubShell(mainShape, aShell) ; - - if( aList->length() < 1 ) { - THROW_SALOME_CORBA_EXCEPTION("In GEOM_Gen_i::SuppressFaces() : aList is empty", SALOME::BAD_PARAM); - } - - TopoDS_Shape aShellOrFace ; - /* Only a face into the shell : we create a single face instead of a shell : 'aList' is unchanged */ - if( aList->length() == 1 ) { - TopExp_Explorer exp ; - exp.Init( aShell, TopAbs_FACE ) ; - exp.More() ; - aShellOrFace = exp.Current() ; - } - else { - aShellOrFace = aShell ; - } - - /* Create CORBA object */ - GEOM::GEOM_Shape_var result = CreateObject(aShellOrFace) ; - if( CORBA::is_nil(result) ) { - THROW_SALOME_CORBA_EXCEPTION("Suppress Faces aborted : null result", SALOME::BAD_PARAM); - } - - InsertInLabelOneArgument(mainShape, shape, aShellOrFace, result, myCurrentOCAFDoc) ; - i++ ; - listOfGeomShapes->length(i) ; - listOfGeomShapes[i-1] = result ; - } - - return listOfGeomShapes._retn() ; -} - - - -//================================================================================ -// function : IsShapeInSequence() -// purpose : return true is aShape is in SS. The test method is 'IsSame()' -//================================================================================ -bool GEOM_Gen_i::IsShapeInSequence(const TopTools_SequenceOfShape& SS, const TopoDS_Shape& aShape) -{ - if( aShape.IsNull() || SS.IsEmpty() ) - return false ; - for( int i=1; i<=SS.Length(); i++) { - if( SS.Value(i).IsSame(aShape) ) - return true ; - } - return false ; -} - - -//================================================================================ -// function : FreeEdgesFromMapOfFace() -// purpose : Define MS a map of all edges of faces of 'MSfaces' -// : All multiple edges are removed ! -//================================================================================ -void GEOM_Gen_i::FreeEdgesFromMapOfFace( const TopTools_MapOfShape& MSfaces, - TopTools_MapOfShape& MS ) -{ - MS.Clear() ; - TopTools_MapOfShape Multiple ; - TopTools_MapIteratorOfMapOfShape it ; - for( it.Initialize(MSfaces); it.More(); it.Next() ) { - TopoDS_Shape aFace = it.Key() ; - TopExp_Explorer exp ; - for( exp.Init( aFace, TopAbs_EDGE); exp.More(); exp.Next() ) { - if( !Multiple.Contains( exp.Current() ) && !MS.Add( exp.Current() ) ) { - MS.Remove( exp.Current() ) ; - Multiple.Add( exp.Current() ) ; - } - } - } - return ; -} - - -//================================================================================ -// function : MapRemoveSequence() -// purpose : In term of shapes ST = MS - SSRemove -// : -//================================================================================ -void GEOM_Gen_i::MapRemoveSequence( const TopTools_MapOfShape& MS, - const TopTools_SequenceOfShape& SSRemove, - TopTools_SequenceOfShape& ST ) -{ - ST.Clear() ; - TopTools_MapIteratorOfMapOfShape it ; - for( it.Initialize(MS); it.More(); it.Next() ) { - TopoDS_Shape aShape = it.Key() ; - if( !IsShapeInSequence( SSRemove, aShape ) ) - ST.Append( aShape ) ; - } - return ; -} - - - -//================================================================================ -// function : SuppressHoleSubRoutine() -// purpose : Define recursively 'MSfacesSuppress' a list of faces to suppress in a hole -//================================================================================ -void GEOM_Gen_i::SuppressHoleSubRoutine( const TopoDS_Shape& mainShape, - const TopoDS_Face& aFace, - const TopTools_SequenceOfShape& SSedgesOfWire, - const TopTools_IndexedDataMapOfShapeListOfShape& aMapEdgesFaces, - const TopTools_MapOfShape& MSfaces, - TopTools_MapOfShape& MSfacesSuppress, - const Standard_Boolean withEndFace, - const TopoDS_Face& endFace, - TopTools_MapOfShape& MSwireEndEdges ) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - TopTools_MapOfShape MS ; - TopTools_SequenceOfShape SU ; - FreeEdgesFromMapOfFace(MSfaces, MS) ; /* MS = free edges of MSfaces */ - MapRemoveSequence(MS, SSedgesOfWire, SU) ; /* SU = MS - SSedgesOfWire */ - - if( SU.IsEmpty() ) { - return ; - } - - /* Here SU contains new edges to find new faces to suppress */ - /* Define the list of faces of SU edges that aren't in faces of MSfacesSuppress in order to add into */ - /* For each edge we have a map of all its faces : it's in 'aMapEdgesFaces' */ - TopTools_MapOfShape MSfacesTmp ; - for( int v=1; v<=SU.Length(); v++ ) { - TopoDS_Shape E = SU.Value(v) ; - TopoDS_Shape F ; - TopTools_ListOfShape LF ; - int ind = aMapEdgesFaces.FindIndex(E) ; - - /* LF is the list of faces for an edge of SU : may be empty no matter */ - LF = aMapEdgesFaces.FindFromIndex(ind) ; - - TopTools_ListIteratorOfListOfShape it ; - for( it.Initialize(LF); it.More(); it.Next() ) { - F = it.Value() ; - if( withEndFace == false ) { - if( F.IsSame(aFace) ) - THROW_SALOME_CORBA_EXCEPTION("in GEOM_Gen_i::SuppressHoleSubRoutine() : hole traversing or ?", SALOME::BAD_PARAM); - if( !MSfacesSuppress.Contains(F) ) { - MSfacesSuppress.Add(F) ; - MSfacesTmp.Add(F) ; // Dont remove the 'if' ! - } - } - else { /* withEndFace == true */ - if( F.IsSame(aFace) && !F.IsSame(endFace) ) - THROW_SALOME_CORBA_EXCEPTION("in GEOM_Gen_i::SuppressHoleSubRoutine() : hole traversing incoherent ?", SALOME::BAD_PARAM); - - if( F.IsSame(endFace) ) { - /* We have reached endFace if selection was correct so we add */ - /* edge in a map to find later the corresponding endWire (hole */ - MSwireEndEdges.Add(E) ; - } - else { - if( !MSfacesSuppress.Contains(F) ) { - MSfacesSuppress.Add(F) ; - MSfacesTmp.Add(F) ; - } - } - } - } - } - /* Call recursively this routine */ - SuppressHoleSubRoutine( mainShape, aFace, SSedgesOfWire, aMapEdgesFaces, MSfacesTmp, MSfacesSuppress, withEndFace, endFace, MSwireEndEdges ) ; -} - - - -//================================================================================ -// function : GetShapeFromIndex() -// purpose : Find 'tds' a sub shape of 'aShape' according to 'aList' that contains -// : a unique index ! -// : Warning : index must be setted with the same exploration logic ! -// : So 'index' is calculated with no shape doublons ! -//================================================================================ -bool GEOM_Gen_i::GetShapeFromIndex( const TopoDS_Shape& aShape, - const TopAbs_ShapeEnum aType, - const int index, - TopoDS_Shape& tds ) - -{ - if (aShape.IsNull() || index < 1) - return false ; - /* Indices start at 1 */ - int j = 1 ; - bool found = false ; - TopExp_Explorer exp ; - TopTools_MapOfShape M; - for( exp.Init( aShape, aType ); exp.More(); exp.Next() ) { - if( M.Add(exp.Current()) ) { /* if not a doublon : we compare */ - if( index == j ) { - tds = exp.Current() ; - return true ; - } - j++ ; - } - } - return false ; -} - - - -//================================================================================ -// function : SuppressHolesInFaceOrShell() Main method. -// purpose : Suppress holes identified by wires in a single face or shell -// -//================================================================================ -GEOM::GEOM_Shape_ptr GEOM_Gen_i::SuppressHolesInFaceOrShell( GEOM::GEOM_Shape_ptr shapeFaceShell, - const GEOM::GEOM_Shape::ListOfSubShapeID& ListIdWires ) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result; - - if( ListIdWires.length() < 1 ) - THROW_SALOME_CORBA_EXCEPTION("in GEOM_Gen_i::SuppressHolesInFace : no holes selected", SALOME::BAD_PARAM); - - const TopoDS_Shape tds = GetTopoShape(shapeFaceShell) ; - if( tds.IsNull() || !IsValid(tds) ) - THROW_SALOME_CORBA_EXCEPTION("in GEOM_Gen_i::SuppressHolesInFace() : non valid main argument", SALOME::BAD_PARAM); - - /* Create a map of wires/holes to suppress */ - TopTools_MapOfShape MapHoles ; - for ( int i = 0; i < ListIdWires.length(); i++ ) { - TopoDS_Shape W ; - if( !GetShapeFromIndex( tds, TopAbs_WIRE, ListIdWires[i], W ) ) - THROW_SALOME_CORBA_EXCEPTION("in GEOM_Gen_i::SuppressHolesInFace() : bad index ?", SALOME::BAD_PARAM); - MapHoles.Add( W ) ; - } - - /* Test if argument is a face or shell */ - bool isFace ; - if( tds.ShapeType() == TopAbs_FACE ) - isFace = true ; - else if ( tds.ShapeType() == TopAbs_SHELL ) - isFace = false ; - else - THROW_SALOME_CORBA_EXCEPTION("in GEOM_Gen_i::SuppressHolesInFace() : not a face or a shell", SALOME::BAD_PARAM); - - /* Define two maps : all faces and faces to that will be modified */ - TopTools_MapOfShape MapFacesToModify ; - TopTools_MapOfShape MapFacesAll ; - TopExp_Explorer expF ; - for( expF.Init( tds, TopAbs_FACE); expF.More(); expF.Next() ) { - TopoDS_Face F = TopoDS::Face( expF.Current() ) ; - MapFacesAll.Add(F) ; - TopExp_Explorer expW ; - for( expW.Init( F, TopAbs_WIRE); expW.More(); expW.Next() ) { - TopoDS_Wire W = TopoDS::Wire( expW.Current() ) ; - if( MapHoles.Contains(W) ) { - MapFacesToModify.Add(F) ; - } - } - } - - /* Define faces not modified */ - TopTools_MapOfShape MapFacesNotModified ; - TopTools_MapIteratorOfMapOfShape it ; - for( it.Initialize(MapFacesAll); it.More(); it.Next() ) { - TopoDS_Face FF = TopoDS::Face( it.Key() ) ; - if( !MapFacesToModify.Contains(FF) ) - MapFacesNotModified.Add(FF) ; - } - - if( MapFacesToModify.IsEmpty() ) - THROW_SALOME_CORBA_EXCEPTION("Error : empty map of faces", SALOME::BAD_PARAM); - - if( isFace && MapFacesToModify.Extent() != 1 ) - THROW_SALOME_CORBA_EXCEPTION("Incoherent", SALOME::BAD_PARAM); - - /* Main argument is a face */ - if( isFace && MapFacesToModify.Extent() == 1 ) { - TopoDS_Face resultFace ; - if( !RebuildFaceRemovingHoles( TopoDS::Face(tds), MapHoles, resultFace ) ) - THROW_SALOME_CORBA_EXCEPTION(" Problem : !RebuildFaceRemovingHoles()", SALOME::BAD_PARAM); - /* Creation of CORBA object : face topology */ - result = CreateObject(resultFace); - InsertInLabelOneArgument(tds, shapeFaceShell, resultFace, result, myCurrentOCAFDoc) ; - return result ; - } - - /* Main argument is a shell : rebuild faces modified */ - TopTools_MapOfShape MapFacesModified ; - for( it.Initialize(MapFacesToModify); it.More(); it.Next() ) { - TopoDS_Face FF = TopoDS::Face( it.Key() ) ; - TopoDS_Face resF ; - if( !RebuildFaceRemovingHoles( FF, MapHoles, resF ) ) - THROW_SALOME_CORBA_EXCEPTION(" Problem shell : !RebuildFaceRemovingHoles()", SALOME::BAD_PARAM); - MapFacesModified.Add(resF) ; - } - - /* Rebuild the shell with faces modified and non modified */ - TopoDS_Shell resultShell ; - BRepPrim_Builder B; - B.MakeShell(resultShell) ; - TopTools_MapIteratorOfMapOfShape it1 ; - for( it1.Initialize(MapFacesModified); it1.More(); it1.Next() ) - B.AddShellFace( resultShell,TopoDS::Face( it1.Key() ) ) ; - for( it1.Initialize(MapFacesNotModified); it1.More(); it1.Next() ) - B.AddShellFace( resultShell,TopoDS::Face( it1.Key() ) ) ; - - B.CompleteShell(resultShell) ; - - if( resultShell.IsNull() ) - THROW_SALOME_CORBA_EXCEPTION("Null or not valid result Shell", SALOME::BAD_PARAM) ; - - /* Creation of CORBA object : shell topology */ - result = CreateObject(resultShell); - InsertInLabelOneArgument(tds, shapeFaceShell, resultShell, result, myCurrentOCAFDoc) ; - return result ; -} - - -//================================================================================ -// function : RebuildFaceRemovingHoles() -// purpose : Rebuild a face removing holes that are in 'mapHoles'. -// : NB : 'mapHoles' may content more holes than necessary -//================================================================================ -bool GEOM_Gen_i::RebuildFaceRemovingHoles( const TopoDS_Face& aFace, - const TopTools_MapOfShape& mapHoles, - TopoDS_Shape& resultFace ) -{ - /* Get the outer wire of the face 'aFace' */ - TopoDS_Wire outW = BRepTools::OuterWire( aFace ) ; - if( outW.IsNull() || !IsValid(outW) ) - THROW_SALOME_CORBA_EXCEPTION("in GEOM_Gen_i::SuppressHolesInFace : bad outer wire of 'aFace'", SALOME::BAD_PARAM); - - /* Rebuild a face avoiding holes in the map 'mapHoles' */ - Handle(Geom_Surface) Surface = BRep_Tool::Surface(aFace) ; - TopoDS_Face F2 = BRepBuilderAPI_MakeFace( Surface, outW, true ) ; - - if( F2.Orientation() != aFace.Orientation() ) - F2.Orientation( aFace.Orientation() ) ; - - BRepBuilderAPI_MakeFace aBuilder( F2 ) ; - bool foundAndKeepHoles = false ; - TopExp_Explorer exp ; - - for( exp.Init( aFace, TopAbs_WIRE); exp.More(); exp.Next() ) { - TopoDS_Wire hole = TopoDS::Wire( exp.Current() ) ; - if( !mapHoles.Contains(hole) && !exp.Current().IsEqual(outW) ) { - aBuilder.Add( hole) ; - if( !aBuilder.IsDone() ) - THROW_SALOME_CORBA_EXCEPTION("in GEOM_Gen_i::SuppressHolesInFace : builder problem !", SALOME::BAD_PARAM); - - resultFace = TopoDS::Face(aBuilder) ; - foundAndKeepHoles = true ; - } - } - - if( !foundAndKeepHoles ) - resultFace = F2 ; - else - resultFace = TopoDS::Face(aBuilder) ; - - return true ; -} - - - - -//================================================================================ -// function : SuppressHole() Main method. -// purpose : Suppress an hole identified by a wire in a face of shape -// : ListIdFace contains a unique index of face in shape -// : ListIdWire contains a unique index of wire in face !!! -// : ListIdEndFace is used only when hole traverse. -//================================================================================ -GEOM::GEOM_Shape_ptr GEOM_Gen_i::SuppressHole( GEOM::GEOM_Shape_ptr shape, - const GEOM::GEOM_Shape::ListOfSubShapeID& ListIdFace, - const GEOM::GEOM_Shape::ListOfSubShapeID& ListIdWire, - const GEOM::GEOM_Shape::ListOfSubShapeID& ListIdEndFace ) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result; - TopoDS_Face aFace ; - TopoDS_Wire aWire ; - TopoDS_Face endFace ; - bool withEndFace ; - TopoDS_Shape tmp ; - - /* Retrieve 'aShape' the initial main shape selection */ - const TopoDS_Shape aShape = GetTopoShape(shape); - - if( !IsValid(aShape) ) - THROW_SALOME_CORBA_EXCEPTION("in GEOM_Gen_i::SuppressHole() : non valid main shape", SALOME::BAD_PARAM); - - if( ListIdFace.length() != 1 || ListIdWire.length() != 1 ) - THROW_SALOME_CORBA_EXCEPTION("bad list", SALOME::BAD_PARAM); - - /* Retrieve 'aFace' selection */ - if( !GetShapeFromIndex( aShape, TopAbs_FACE, ListIdFace[0], tmp ) ) { - THROW_SALOME_CORBA_EXCEPTION("face not found", SALOME::BAD_PARAM); - } - else { - aFace = TopoDS::Face(tmp) ; - } - if( !IsValid(aFace) ) - THROW_SALOME_CORBA_EXCEPTION("in GEOM_Gen_i::SuppressHole() : face shape not valid", SALOME::BAD_PARAM); - - /* Retrieve 'aWire' selection : Warning : index of wire refers to the face ! */ - TopoDS_Shape aTmp ; - if( !GetShapeFromIndex( aFace, TopAbs_WIRE, ListIdWire[0], aTmp ) ) { - THROW_SALOME_CORBA_EXCEPTION("wire not found", SALOME::BAD_PARAM); - } - else { - aWire = TopoDS::Wire(aTmp) ; - } - if( !IsValid(aWire) ) - THROW_SALOME_CORBA_EXCEPTION("in GEOM_Gen_i::SuppressHole() : bad wire" , SALOME::BAD_PARAM); - - /* Get the outer wire of aFace */ - TopoDS_Wire outerW = BRepTools::OuterWire( aFace ) ; - if( outerW.IsNull() || !IsValid(outerW) ) - THROW_SALOME_CORBA_EXCEPTION("in GEOM_Gen_i::SuppressHole() : bad outer wire", SALOME::BAD_PARAM); - - /* Test bad user selection aWire */ - if( aWire.IsSame(outerW) ) - THROW_SALOME_CORBA_EXCEPTION("in GEOM_Gen_i::SuppressHole() : outerW = aWire", SALOME::BAD_PARAM); - - /* Test if 'endFace' is used as argument and seems to be a valid one */ - /* NB : 'endFace' is optional and used when hole to suppress traverse 'aShape' */ - if( ListIdEndFace.length() == 0 ) { - withEndFace = false ; - } - else { - TopoDS_Shape aTemp ; - if( !GetShapeFromIndex( aShape, TopAbs_FACE, ListIdEndFace[0], aTemp ) || tmp.IsNull() || !IsValid(aTemp) ) - THROW_SALOME_CORBA_EXCEPTION("in GEOM_Gen_i::SuppressHole() : non valid endFace", SALOME::BAD_PARAM); - - /* Test if 'endFace' as at least one hole */ - endFace = TopoDS::Face(aTemp) ; - - TopExp_Explorer fExp ; - int nbWires = 0 ; - for( fExp.Init(endFace, TopAbs_WIRE); fExp.More(); fExp.Next() ) { - TopoDS_Wire W = TopoDS::Wire( fExp.Current() ) ; - if( !W.IsNull() && IsValid(W) ) - nbWires++ ; - } - if(nbWires > 1) - withEndFace = true ; /* at least 2 wires : outer wire plus an hole or more */ - else - THROW_SALOME_CORBA_EXCEPTION("in GEOM_Gen_i::SuppressHole() : end face selection ?", SALOME::BAD_PARAM); - } - - /* Find edges of aWire and test if degenerated */ - TopTools_SequenceOfShape SSedgesOfWire ; - TopExp_Explorer wireExp ; - for( wireExp.Init(aWire, TopAbs_EDGE); wireExp.More(); wireExp.Next() ) { - TopoDS_Edge E = TopoDS::Edge( wireExp.Current() ) ; - if( E.IsNull() || BRep_Tool::Degenerated(E) ) { - THROW_SALOME_CORBA_EXCEPTION("in GEOM_Gen_i::SupressHole() : found bad edge", SALOME::BAD_PARAM); - } - else { - SSedgesOfWire.Append( wireExp.Current() ) ; - } - } - if( SSedgesOfWire.Length() < 1 ) - THROW_SALOME_CORBA_EXCEPTION("in GEOM_Gen_i::SupressHole() : no edge(s) for aWire", SALOME::BAD_PARAM); - - /* Retrieve face ancestors of all edges of 'aWire' but avoiding 'aFace' */ - - TopTools_IndexedDataMapOfShapeListOfShape aMapEdgesFaces; - TopTools_MapIteratorOfMapOfShape anIt ; - TopTools_MapOfShape MFSuppress ; - TopTools_MapOfShape MFSuppressTmp ; - bool wireOnFace = false ; - - TopExp::MapShapesAndAncestors(aShape, TopAbs_EDGE, TopAbs_FACE, aMapEdgesFaces) ; - for( int h=1; h<=SSedgesOfWire.Length(); h++ ) { - - TopoDS_Shape anEdgeOfWire = SSedgesOfWire.Value(h) ; - int ind = aMapEdgesFaces.FindIndex(anEdgeOfWire) ; - if(ind < 1) - THROW_SALOME_CORBA_EXCEPTION("in GEOM_Gen_i::SupressHole() : index of edge", SALOME::BAD_PARAM); - - TopTools_ListOfShape LF; - LF = aMapEdgesFaces.FindFromIndex(ind) ; /* Contains all faces ancestors of an edge of wire */ - if( LF.IsEmpty() ) - THROW_SALOME_CORBA_EXCEPTION("in GEOM_Gen_i::SupressHole() : no face for an edge", SALOME::BAD_PARAM); - - /* Filter faces avoiding 'aFace' */ - TopTools_ListIteratorOfListOfShape it ; - for( it.Initialize(LF); it.More(); it.Next() ) { - TopoDS_Face F = TopoDS::Face( it.Value() ) ; - if( !F.IsSame(aFace) ) { - MFSuppressTmp.Add(F) ; - MFSuppress.Add(F) ; - } - else { - wireOnFace = true ; - } - } - } - - if( !wireOnFace ) { - THROW_SALOME_CORBA_EXCEPTION("in GEOM_Gen_i::SupressHole() : wire not on selected face", SALOME::BAD_PARAM); - } - - /* Call routine to define faces to suppress and and optional endWire on endFace */ - TopTools_MapOfShape MSwireEndEdges ; /* will contain edges of final wire (hole) */ - SuppressHoleSubRoutine( aShape, aFace, SSedgesOfWire, aMapEdgesFaces, MFSuppressTmp, MFSuppress, withEndFace, endFace, MSwireEndEdges ) ; - - TopoDS_Wire endWire ; - if( withEndFace ) { - - if( MSwireEndEdges.Extent() < 1 ) - THROW_SALOME_CORBA_EXCEPTION("in GEOM_Gen_i::SupressHole() : MSwireEndEdges.Extent() < 1", SALOME::BAD_PARAM); - - if( !FindCompareWireHoleOnFace( endFace, MSwireEndEdges, endWire ) ) - THROW_SALOME_CORBA_EXCEPTION("in GEOM_Gen_i::SupressHole() : no endWire found", SALOME::BAD_PARAM); - } - - /* Build 'resTds' : a shape containing a compound of faces */ - TopoDS_Shape resTds; - if( !withEndFace && !BuildShapeHoleNotTraversing( aShape, aFace, aWire, MFSuppress, resTds ) ) - THROW_SALOME_CORBA_EXCEPTION("Rebuild result shape has aborted", SALOME::BAD_PARAM); - - if( withEndFace && !BuildShapeHoleTraversing( aShape, aFace, aWire, MFSuppress, endFace, endWire, resTds ) ) - THROW_SALOME_CORBA_EXCEPTION("Rebuild result shape has aborted (end hole)", SALOME::BAD_PARAM); - - /* Reconstruction of final shape with 'resTds' : a compound of faces after hole suppressing */ - /* Actual limitation is : 'aShape' must not contain more than a solid or a shell ! */ - TopoDS_Shape finalShape ; - - TopExp_Explorer exp ; - unsigned int nbSolid = 0 ; - TopoDS_Solid aSolid ; - for( exp.Init(aShape, TopAbs_SOLID); exp.More(); exp.Next() ) { - aSolid = TopoDS::Solid( exp.Current() ) ; - nbSolid++ ; - if( nbSolid > 1 ) - THROW_SALOME_CORBA_EXCEPTION("Limitation : main shape contents more than one solid", SALOME::BAD_PARAM); - } - - unsigned int nbShell = 0 ; - TopoDS_Shell aShell ; - for( exp.Init(aShape, TopAbs_SHELL); exp.More(); exp.Next() ) { - aShell = TopoDS::Shell( exp.Current() ) ; - nbShell++ ; - if( nbShell > 1 ) - THROW_SALOME_CORBA_EXCEPTION("Limitation : main shape contents more than one shell", SALOME::BAD_PARAM); - } - - /* No shells and no solids : can send a compound even for a single face, see GUI ! */ - if( nbShell == 0 ) { - finalShape = resTds ; - } - - /* a shell */ - TopoDS_Shell shellResult ; - if( nbShell == 1 ) { - if ( !BuildShellWithFaceCompound( TopoDS::Compound(resTds), shellResult ) ) - THROW_SALOME_CORBA_EXCEPTION("Error after BuildShellWithFaceCompound()", SALOME::BAD_PARAM); - finalShape = shellResult ; - } - - /* a solid with a shell */ - if( nbSolid == 1 && nbShell == 1) { - BRepBuilderAPI_MakeSolid B; - B.Add(shellResult) ; - if( !B.IsDone() ) - THROW_SALOME_CORBA_EXCEPTION("Error : !B.IsDone()", SALOME::BAD_PARAM); - finalShape = B.Solid() ; - } - - result = CreateObject(finalShape); - InsertInLabelOneArgument(aShape, shape, finalShape, result, myCurrentOCAFDoc) ; - return result ; -} - - - -//================================================================================ -// function : BuildShellWithFaceCompound() -// purpose : Build a shell with a compound of faces. -//================================================================================ -bool GEOM_Gen_i::BuildShellWithFaceCompound( const TopoDS_Compound Comp, - TopoDS_Shell& resultShell ) -{ - resultShell.Nullify() ; - BRepPrim_Builder B ; - B.MakeShell(resultShell) ; - TopExp_Explorer ex ; - int i = 0 ; - for( ex.Init( Comp, TopAbs_FACE); ex.More(); ex.Next() ) { - TopoDS_Face F = TopoDS::Face( ex.Current() ) ; - if( !IsValid(F) ) { - return false ; - } - B.AddShellFace( resultShell, F ) ; - } - B.CompleteShell(resultShell) ; - if( resultShell.IsNull() ) { - return false ; - } - return true ; -} - - -//================================================================================ -// function : FindCompareWireHoleOnFace() -// purpose : Try to find a wire on 'aFace' which edges are same than those -// : into 'MSwireEdges' map. 'aFoundWire' is defined and 'true' returned. -// : 'MSwireEdges' represents generally an hole an 'aFace'. -// : The outer wire of 'aFace' is avoided ! -//================================================================================ -bool GEOM_Gen_i::FindCompareWireHoleOnFace( const TopoDS_Face& F, - const TopTools_MapOfShape& MSwireEdges, - TopoDS_Wire& aFoundWire ) -{ - aFoundWire.Nullify() ; - - if( F.IsNull() ) - return false ; - - /* Get the outer wire of aFace */ - TopoDS_Wire outerW = BRepTools::OuterWire(F) ; - if( outerW.IsNull() || !IsValid(outerW) ) { - return false ; - } - - int nbEdges = MSwireEdges.Extent() ; - if( nbEdges < 1 ) { - return false ; - } - - TopExp_Explorer exp1 ; - TopExp_Explorer exp2 ; - for ( exp1.Init(F, TopAbs_WIRE) ; exp1.More(); exp1.Next() ) { - TopoDS_Wire W = TopoDS::Wire( exp1.Current() ) ; - int i = 0 ; - if( !W.IsSame(outerW) ) { - for ( exp2.Init( W, TopAbs_EDGE) ; exp2.More(); exp2.Next() ) { - TopoDS_Edge E = TopoDS::Edge( exp2.Current() ) ; - if( MSwireEdges.Contains(E) ) { - i++ ; - if( i == nbEdges ) { - aFoundWire = W ; - return true ; - } - } - } - } - } - return false ; -} - - -//================================================================================ -// function : BuildShapeHoleNotTraversing() -// purpose : Define 'resultTds' a reconstruction of 'aShape' after modification -// : on 'aFace' where 'aWire is removed' and suppression of faces 'MFSuppress' -// : ( Used as a sub routine of SuppressHole() ) -//================================================================================ -bool GEOM_Gen_i::BuildShapeHoleNotTraversing( const TopoDS_Shape& aShape, - const TopoDS_Face& aFace, - const TopoDS_Wire& aWire, - const TopTools_MapOfShape& MFSuppress, - TopoDS_Shape& resultTds ) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - BRep_Builder B; - TopExp_Explorer exp ; - TopoDS_Face newFace ; - - resultTds.Nullify() ; - TopoDS_Compound Comp ; - B.MakeCompound (Comp); - - try { - - /* Explore all faces of 'aShape' to rebuild a compound */ - for ( exp.Init(aShape, TopAbs_FACE) ; exp.More(); exp.Next() ) { - - TopoDS_Face F1 = TopoDS::Face( exp.Current() ); - /* Rebuild face(s) not suppressed */ - if( !MFSuppress.Contains(F1) ) { - - if( F1.IsEqual( aFace ) ) { - TopTools_MapOfShape MSwire ; - MSwire.Add(aWire) ; - if( !RebuildFaceRemovingHoles(aFace, MSwire, newFace) ) { - return false ; - } - B.Add( Comp, newFace ) ; - } - else { - /* For any other face not suppressed */ - B.Add( Comp, F1 ) ; - } - } - } - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("in BuildShapeHoleNotTraversing() : Exception catched", SALOME::BAD_PARAM); - } - resultTds = Comp ; - return true ; -} - - - -//================================================================================ -// function : BuildShapeHoleTraversing() -// purpose : Define 'resultTds' a reconstruction of 'aShape' after modifications. -// : On 'aFace' 'aWire is removed' -// : On 'endFace' 'endWire' is removed. -// : Faces of 'MFSuppress' are removed. -// : ( Used as a sub routine of SuppressHole() ) -//================================================================================ -bool GEOM_Gen_i::BuildShapeHoleTraversing( const TopoDS_Shape& aShape, - const TopoDS_Face& aFace, - const TopoDS_Wire& aWire, - const TopTools_MapOfShape& MFSuppress, - const TopoDS_Face& endFace, - const TopoDS_Wire& endWire, - TopoDS_Shape& resultTds ) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - BRep_Builder B; - TopExp_Explorer exp ; - TopoDS_Face newFace ; - - resultTds.Nullify() ; - TopoDS_Compound Comp ; - B.MakeCompound (Comp); - - /* Necessary to use general method */ - TopTools_MapOfShape MSwire1 ; - MSwire1.Add(aWire) ; - TopTools_MapOfShape MSwire2 ; - MSwire2.Add(endWire) ; - - try { - - /* Explore all faces of 'aShape' to rebuild a compound */ - for ( exp.Init(aShape, TopAbs_FACE) ; exp.More(); exp.Next() ) { - TopoDS_Face F1 = TopoDS::Face( exp.Current() ); - - /* Rebuild face(s) not suppressed */ - if( !MFSuppress.Contains(F1) ) { - - /* Rebuild 'aFace' */ - if( F1.IsEqual( aFace ) && !F1.IsEqual( endFace ) ) { - if( !RebuildFaceRemovingHoles(aFace, MSwire1, newFace) ) { - return false ; - } - B.Add(Comp, newFace) ; - } - - /* Rebuild 'endFace' */ - if( !F1.IsEqual( aFace ) && F1.IsEqual( endFace ) ) { - if( !RebuildFaceRemovingHoles(endFace, MSwire2, newFace) ) { - return false ; - } - B.Add(Comp, newFace) ; - } - - /* Hole in the same face : aFace = endFace */ - if( F1.IsEqual( aFace ) && F1.IsEqual( endFace ) ) { - TopoDS_Face FF ; - if( !RebuildFaceRemovingHoles(aFace, MSwire1, newFace) || !RebuildFaceRemovingHoles(newFace, MSwire2, FF) ) { - return false ; - } - B.Add( Comp, FF ) ; - } - - /* For any other face not suppressed */ - if( !F1.IsEqual(aFace) && !F1.IsEqual( endFace ) ) { - B.Add( Comp, F1 ) ; - } - - } - } - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("in BuildShapeHoleTraversing() : Exception catched", SALOME::BAD_PARAM); - } - resultTds = Comp ; - return true ; -} - -//======================================================================= -//function : SortShapes -//purpose : -//======================================================================= - -static void SortShapes(TopTools_ListOfShape& SL) -{ - Standard_Integer MaxShapes = SL.Extent(); - TopTools_Array1OfShape aShapes (1,MaxShapes); - TColStd_Array1OfInteger OrderInd(1,MaxShapes); - TColStd_Array1OfReal MidXYZ (1,MaxShapes); //X,Y,Z; - TColStd_Array1OfReal Length (1,MaxShapes); //X,Y,Z; - - // Computing of CentreOfMass - Standard_Integer Index; - GProp_GProps GPr; - gp_Pnt GPoint; - TopTools_ListIteratorOfListOfShape it(SL); - for (Index=1; it.More(); Index++) - { - TopoDS_Shape S = it.Value(); - SL.Remove( it ); // == it.Next() - aShapes(Index) = S; - OrderInd.SetValue (Index, Index); - if (S.ShapeType() == TopAbs_VERTEX) - { - GPoint = BRep_Tool::Pnt( TopoDS::Vertex( S )); - Length.SetValue( Index, (Standard_Real) S.Orientation()); - } - else - { - BRepGProp::LinearProperties (S, GPr); - GPoint = GPr.CentreOfMass(); - Length.SetValue( Index, GPr.Mass() ); - } - MidXYZ.SetValue(Index, - GPoint.X()*999 + GPoint.Y()*99 + GPoint.Z()*0.9); - } - // Sorting - Standard_Integer aTemp; - Standard_Boolean exchange, Sort = Standard_True; - while (Sort) - { - Sort = Standard_False; - for (Index=1; Index < MaxShapes; Index++) - { - if (MidXYZ(OrderInd(Index)) > MidXYZ(OrderInd(Index+1))) - exchange = Standard_True; - else if (MidXYZ(OrderInd(Index)) == MidXYZ(OrderInd(Index+1)) && - Length(OrderInd(Index)) > Length(OrderInd(Index+1)) ) - exchange = Standard_True; - else - exchange = Standard_False; - if (exchange) - { - aTemp = OrderInd(Index); - OrderInd(Index) = OrderInd(Index+1); - OrderInd(Index+1) = aTemp; - Sort = Standard_True; - } - } - } - for (Index=1; Index <= MaxShapes; Index++) - SL.Append( aShapes( OrderInd(Index) )); -} - -//================================================================================ -// function : SubShape() -// purpose : Method for GUI or TUI -//================================================================================ - -GEOM::GEOM_Shape_ptr GEOM_Gen_i::SubShape(GEOM::GEOM_Shape_ptr shape, - CORBA::Short ShapeType, - const GEOM::GEOM_Shape::ListOfSubShapeID& ListOfID) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - return SubShapesOne(shape, (TopAbs_ShapeEnum) ShapeType, ListOfID); -} - -//================================================================================ -// function : SubShapeSorted() -// purpose : Method for GUI or TUI -//================================================================================ - -GEOM::GEOM_Shape_ptr GEOM_Gen_i::SubShapeSorted(GEOM::GEOM_Shape_ptr shape, - CORBA::Short ShapeType, - const GEOM::GEOM_Shape::ListOfSubShapeID& ListOfID) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - return SubShapesOne(shape, (TopAbs_ShapeEnum) ShapeType, ListOfID, Standard_True); -} - -//================================================================================ -// function : SubShapesOne() -// purpose : -//================================================================================ - -GEOM::GEOM_Shape_ptr GEOM_Gen_i::SubShapesOne( GEOM::GEOM_Shape_ptr shape, - const TopAbs_ShapeEnum ShapeType, - const GEOM::GEOM_Shape::ListOfSubShapeID& ListOfID, - const Standard_Boolean Sort) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result; - TopoDS_Shape mainShape; - TopoDS_Shape mainTopo = GetTopoShape(shape); - - bool main = false; - while ( !main ) { - if ( shape->IsMainShape() ) { - mainShape = GetTopoShape(shape); - main = true; - } else - shape = GetIORFromString( shape->MainName() ); - } - - if(ListOfID.length() < 1) { - THROW_SALOME_CORBA_EXCEPTION("In GEOM_Gen_i::SubShape() : bad list of shapes", - SALOME::BAD_PARAM); - } - - /* Create a sequence of all sub shapes */ - TopTools_ListOfShape listShape; - - TopTools_MapOfShape mapShape; - TopExp_Explorer exp ; - for ( exp.Init( mainShape, TopAbs_ShapeEnum(ShapeType)) ; exp.More(); exp.Next() ) { - if ( mapShape.Add( exp.Current() ) ) - listShape.Append ( exp.Current() ); - } - - if (listShape.IsEmpty()) return shape; - - if (Sort) - SortShapes(listShape); - - TopTools_SequenceOfShape SS; - TopTools_ListIteratorOfListOfShape it (listShape); - for (; it.More(); it.Next()) - SS.Append( it.Value() ); - - TopoDS_Shape SubShape; - if (ListOfID.length() == 1) - SubShape = SS.Value(ListOfID[0]); - else - { - BRep_Builder B; - TopoDS_Compound Comp; - B.MakeCompound (Comp); - unsigned int ind; - for ( ind = 0; ind < ListOfID.length(); ind++ ) - B.Add( Comp, SS.Value(ListOfID[ind]) ); - SubShape = Comp; - } - - if ( !TNaming_Tool::HasLabel( myCurrentOCAFDoc->Main(), SubShape ) ) - result = CreateSubObject( SubShape, shape, ListOfID); - else { - int TransDef; - TDF_Label Lab = TNaming_Tool::Label( myCurrentOCAFDoc->Main(), SubShape, TransDef ); - Handle(TDataStd_Name) Att; - if ( Lab.FindAttribute( TDataStd_Name::GetID(), Att ) ) { - TCollection_AsciiString nameIOR( Att->Get() ); - result = GEOM::GEOM_Shape::_narrow(_orb->string_to_object( nameIOR.ToCString() )); - if ( strcmp( result->MainName(), _orb->object_to_string(shape) ) != 0 ) { - result = CreateSubObject( SubShape, shape, ListOfID); - } - } - } - - return result; -} - - -//================================================================================ -// function : SubShapeAll() -// purpose : Explode a shape in all sub shapes with a type (Method for TUI or GUI) -//================================================================================ - -GEOM::GEOM_Gen::ListOfGeomShapes* GEOM_Gen_i::SubShapeAll(GEOM::GEOM_Shape_ptr shape, - CORBA::Short ShapeType) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - return SubShapesAll(shape, (TopAbs_ShapeEnum) ShapeType); -} - -//================================================================================ -// function : SubShapeAllSorted() -// purpose : Explode a shape in all sub shapes with a type (Method for TUI or GUI) -//================================================================================ - -GEOM::GEOM_Gen::ListOfGeomShapes* GEOM_Gen_i::SubShapeAllSorted(GEOM::GEOM_Shape_ptr shape, - CORBA::Short ShapeType) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - return SubShapesAll(shape, (TopAbs_ShapeEnum) ShapeType, Standard_True); -} - -//================================================================================ -// function : SubShapeAllSorted() -// purpose : -//================================================================================ - -GEOM::GEOM_Gen::ListOfGeomShapes* GEOM_Gen_i::SubShapesAll(GEOM::GEOM_Shape_ptr shape, - const TopAbs_ShapeEnum ShapeType, - const Standard_Boolean Sort) - throw (SALOME::SALOME_Exception) -{ - /* List of sub shapes returned */ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Gen::ListOfGeomShapes_var listOfGeomShapes = new GEOM::GEOM_Gen::ListOfGeomShapes; - listOfGeomShapes->length(0) ; - - TopoDS_Shape mainTopo = GetTopoShape(shape); - TopoDS_Shape mainShape; - bool main = false; - while ( !main ) { - if ( shape->IsMainShape() ) { - mainShape = GetTopoShape(shape); - main = true; - } else - shape = GetIORFromString( shape->MainName() ); - } - - if( mainTopo.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("In GEOM_Gen_i::SubShapeAll() : null main shape", - SALOME::BAD_PARAM); - } - - /* List/index : field set for any sub shape */ - GEOM::GEOM_Shape::ListOfSubShapeID_var ListOfID = new GEOM::GEOM_Shape::ListOfSubShapeID; - ListOfID->length(1) ; - - // retrieve all subshapes - TopTools_MapOfShape mapShape; - TopTools_ListOfShape listShape; - - if (mainTopo.ShapeType()==TopAbs_COMPOUND && ShapeType==TopAbs_SHAPE) - { - TopoDS_Iterator It(mainTopo,Standard_True,Standard_True ); - for ( ; It.More(); It.Next() ) - if (mapShape.Add( It.Value() )) - listShape.Append( It.Value() ); - } - else - { - TopExp_Explorer exp ( mainTopo, ShapeType); - for ( ; exp.More(); exp.Next() ) - if (mapShape.Add( exp.Current() )) - listShape.Append( exp.Current() ); - } - - if (Sort) - SortShapes(listShape); - - /* Create all sub shapes */ - int index; - GEOM::GEOM_Shape_var result; - - TopTools_ListIteratorOfListOfShape itSub (listShape); - for (index = 1; itSub.More(); itSub.Next(), ++index) - { - const TopoDS_Shape& SubShape = itSub.Value(); - // check if SubShape is already in OCAFDS and ... - if ( TNaming_Tool::HasLabel( myCurrentOCAFDoc->Main(), SubShape ) ) - { - int TransDef; - TDF_Label Lab = TNaming_Tool::Label( myCurrentOCAFDoc->Main(), SubShape, TransDef ); - Handle(TDataStd_Name) Att; - if ( Lab.FindAttribute( TDataStd_Name::GetID(), Att ) ) - { - TCollection_AsciiString nameIOR( Att->Get() ); - result = GEOM::GEOM_Shape::_narrow(_orb->string_to_object( nameIOR.ToCString() )); - // ... it is subshape of - if ( strcmp( result->MainName(), _orb->object_to_string(shape) ) == 0 ) - { - listOfGeomShapes->length(index) ; - listOfGeomShapes[index-1] = result ; - continue; - } - } - } - -// if (Sort) -// ListOfID[0] = index; -// else - ListOfID[0] = GetIndexTopology( SubShape, mainShape ) ; - result = CreateSubObject( SubShape, shape, ListOfID); - /* Add each sub shape in the list returned */ - listOfGeomShapes->length(index) ; - listOfGeomShapes[index-1] = result ; - } - - return listOfGeomShapes._retn() ; -} - -//================================================================================= -// function : MakeBoolean() -// purpose : Boolean operation according to the type 'operation' -//================================================================================= -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeBoolean(GEOM::GEOM_Shape_ptr shape1, - GEOM::GEOM_Shape_ptr shape2, - CORBA::Long operation) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result; - TopoDS_Shape shape ; - TopoDS_Shape aShape1 ; - TopoDS_Shape aShape2 ; - - try { - aShape1 = GetTopoShape(shape1) ; - aShape2 = GetTopoShape(shape2) ; - - if( aShape1.IsNull() || aShape2.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("Boolean aborted : argument shape is null", SALOME::BAD_PARAM); - } - - switch (operation) - { - case 1 : /* Common */ - shape = BRepAlgoAPI_Common(aShape1, aShape2).Shape(); - break ; - case 2 : /* Cut */ - shape = BRepAlgoAPI_Cut(aShape1, aShape2).Shape(); - break ; - case 3 : /* Fuse */ - shape = BRepAlgoAPI_Fuse(aShape1, aShape2).Shape(); - break ; - case 4 : /* Section */ - shape = BRepAlgoAPI_Section(aShape1, aShape2).Shape(); - break ; - default : - MESSAGE("Boolean operation not known : " << operation ) ; - return result ; - } - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in boolean operation", SALOME::BAD_PARAM); - } - - /* We test the validity of resulting shape */ - if( !IsValid(shape) ) { - THROW_SALOME_CORBA_EXCEPTION("Boolean aborted : non valid shape result", SALOME::BAD_PARAM); - } - - result = CreateObject(shape) ; - - /* put shape and name into geom/OCAF doc */ - GEOMDS_Commands GC(myCurrentOCAFDoc->Main()); - /* add attributs 'shape' and' name_io'r in a new label */ - TDF_Label Lab = GC.Generated(aShape1, shape, result->Name() ); - TCollection_AsciiString entry; - TDF_Tool::Entry(Lab, entry); - result->ShapeId( entry.ToCString() ) ; - - /* Create a new label */ - TDF_Label NewLab = Lab.NewChild(); - TCollection_ExtendedString Value("Arguments"); - TDataStd_Name::Set(NewLab,Value); - - TDF_Label NewLab1 = NewLab.NewChild(); - TDF_Label RefLab; - TDF_Tool::Label(myCurrentOCAFDoc->GetData(), shape1->ShapeId(), RefLab); - TDF_Reference::Set(NewLab1, RefLab); - - TDF_Label NewLab2 = NewLab.NewChild(); - TDF_Tool::Label(myCurrentOCAFDoc->GetData(), shape2->ShapeId(), RefLab); - TDF_Reference::Set(NewLab2, RefLab); - return result ; -} - - -//================================================================================= -// function : MakeFuse() -// purpose : Special purpose ! -//================================================================================= -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeFuse(GEOM::GEOM_Shape_ptr shape1, - GEOM::GEOM_Shape_ptr shape2) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result; - TopoDS_Shape aShape1 = GetTopoShape(shape1) ; - TopoDS_Shape aShape2 = GetTopoShape(shape2) ; - if( aShape1.IsNull() || aShape2.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("Fuse aborted : shape in argument is null", SALOME::BAD_PARAM); - } - TopoDS_Shape shape; - try { - shape = BRepAlgoAPI_Fuse(aShape1, aShape2).Shape(); - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in Fuse operation", SALOME::BAD_PARAM); - } - - /* We test the validity of resulting shape */ - if( !IsValid(shape) ) { - THROW_SALOME_CORBA_EXCEPTION("Fuse aborted : non valid shape result", SALOME::BAD_PARAM); - } - - result = CreateObject(shape) ; - - /* put shape and name into geom/OCAF doc */ - GEOMDS_Commands GC(myCurrentOCAFDoc->Main()); - /* add attributs 'shape' and' name_io'r in a new label */ - TDF_Label Lab = GC.Generated(aShape1, shape, result->Name() ); - TCollection_AsciiString entry; - TDF_Tool::Entry(Lab, entry); - result->ShapeId( entry.ToCString() ) ; - - /* Create a new label */ - TDF_Label NewLab = Lab.NewChild(); - TCollection_ExtendedString Value("Arguments"); - TDataStd_Name::Set(NewLab,Value); - - TDF_Label NewLab1 = NewLab.NewChild(); - TDF_Label RefLab; - TDF_Tool::Label(myCurrentOCAFDoc->GetData(), shape1->ShapeId(), RefLab); - TDF_Reference::Set(NewLab1, RefLab); - - TDF_Label NewLab2 = NewLab.NewChild(); - TDF_Tool::Label(myCurrentOCAFDoc->GetData(), shape2->ShapeId(), RefLab); - TDF_Reference::Set(NewLab2, RefLab); - return result ; -} - - -//================================================================================ -// function : MakeAxisStruct() -// purpose : Create a structure GEOM::AxisStruct (see IDL file) -//================================================================================ -GEOM::AxisStruct GEOM_Gen_i::MakeAxisStruct(CORBA::Double x, - CORBA::Double y, - CORBA::Double z, - CORBA::Double vx, - CORBA::Double vy, - CORBA::Double vz) -{ - GEOM::AxisStruct A ; - A.x = x ; A.y = y ; A.z = z ; - A.vx = vx ; A.vy = vy ; A.vz = vz ; - return A ; -} - - -//================================================================================ -// function : MakePointStruct() -// purpose : Create a structure GEOM::PointStruct (see IDL file) -//================================================================================ -GEOM::PointStruct GEOM_Gen_i::MakePointStruct(CORBA::Double x, - CORBA::Double y, - CORBA::Double z) -{ - beginService( "GEOM_Gen_i::MakePointStruct" ); - GEOM::PointStruct p ; - p.x = x ; p.y = y ; p.z = z ; - endService( "GEOM_Gen_i::MakePointStruct" ); - return p ; -} - -//================================================================================ -// function : MakeDirection() -// purpose : Create a structure GEOM::DirStruct (see IDL file) -//================================================================================ -GEOM::DirStruct GEOM_Gen_i::MakeDirection(const GEOM::PointStruct& p) -{ - GEOM::DirStruct d ; - d.PS.x = p.x ; d.PS.y = p.y ; d.PS.z = p.z ; - return d ; -} - -//================================================================================= -// function : MakeBox() -// purpose : Create a box topology. -//================================================================================= -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeBox(CORBA::Double x1, - CORBA::Double y1, - CORBA::Double z1, - CORBA::Double x2, - CORBA::Double y2, - CORBA::Double z2) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - gp_Pnt P1(x1,y1,z1); - gp_Pnt P2(x2,y2,z2); - GEOM::GEOM_Shape_var result ; - TopoDS_Shape tds ; - try { - tds = BRepPrimAPI_MakeBox(P1,P2).Shape(); - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakeBox", SALOME::BAD_PARAM); - } - - if (tds.IsNull()) { - THROW_SALOME_CORBA_EXCEPTION("Make Box aborted : null shape", SALOME::BAD_PARAM); - } - - result = CreateObject(tds); - const char *entry = InsertInLabel(tds, result->Name(), myCurrentOCAFDoc) ; - result->ShapeId(entry) ; - return result; -} - - -//================================================================================ -// function : MakeCylinder -// purpose : Create a cylinder topology -//================================================================================ -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeCylinder(const GEOM::PointStruct& pstruct, - const GEOM::DirStruct& dstruct, - CORBA::Double radius, - CORBA::Double height) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result; - TopoDS_Shape tds ; - gp_Pnt p(pstruct.x, pstruct.y, pstruct.z) ; - gp_Dir d(dstruct.PS.x, dstruct.PS.y, dstruct.PS.z) ; - gp_Ax2 axis(p, d) ; - - try { - tds = BRepPrimAPI_MakeCylinder(axis, radius, height).Shape(); - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakeCylinder", SALOME::BAD_PARAM); - } - - if (tds.IsNull()) { - THROW_SALOME_CORBA_EXCEPTION("Make Cylinder aborted", SALOME::BAD_PARAM); - } - result = CreateObject(tds); - const char *entry = InsertInLabel(tds, result->Name(), myCurrentOCAFDoc) ; - result->ShapeId(entry); - return result ; -} - -//================================================================================ -// function : MakeSphere() -// purpose : Make a sphere topology -//================================================================================ -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeSphere(CORBA::Double x1, - CORBA::Double y1, - CORBA::Double z1, - CORBA::Double radius) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result ; - TopoDS_Shape tds ; - try { - tds = BRepPrimAPI_MakeSphere(gp_Pnt(x1,y1,z1), radius).Shape(); - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakeSphere", SALOME::BAD_PARAM); - } - - if (tds.IsNull()) { - THROW_SALOME_CORBA_EXCEPTION("Make Sphere aborted", SALOME::BAD_PARAM); - } - result = CreateObject(tds) ; - const char *entry = InsertInLabel(tds, result->Name(), myCurrentOCAFDoc) ; - result->ShapeId(entry); - return result; -} - -//================================================================================ -// function : MakeTorus() -// purpose : Create a torus topology -//================================================================================ -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeTorus( const GEOM::PointStruct& pstruct, - const GEOM::DirStruct& dstruct, - CORBA::Double major_radius, - CORBA::Double minor_radius ) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result; - TopoDS_Shape tds ; - gp_Pnt p(pstruct.x, pstruct.y, pstruct.z) ; - gp_Dir d(dstruct.PS.x, dstruct.PS.y, dstruct.PS.z) ; - gp_Ax2 axis(p, d) ; - - try { - tds = BRepPrimAPI_MakeTorus(axis, major_radius, minor_radius).Shape(); - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakeTorus", SALOME::BAD_PARAM); - } - - if (tds.IsNull()) { - THROW_SALOME_CORBA_EXCEPTION("Make torus aborted", SALOME::BAD_PARAM); - } - result = CreateObject(tds); - const char *entry = InsertInLabel(tds, result->Name(), myCurrentOCAFDoc) ; - result->ShapeId(entry); - return result ; -} - - -//================================================================================ -// function : MakeCone() -// purpose : Create a cone topology -//================================================================================ -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeCone(const GEOM::PointStruct& pstruct, - const GEOM::DirStruct& dstruct, - CORBA::Double radius1, - CORBA::Double radius2, - CORBA::Double height) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result; - TopoDS_Shape tds ; - gp_Pnt p(pstruct.x, pstruct.y, pstruct.z) ; - gp_Dir d(dstruct.PS.x, dstruct.PS.y, dstruct.PS.z) ; - gp_Ax2 axis(p, d) ; - - try { - /* Cone doesn't work if same radius */ - if( fabs(radius1-radius2) <= Precision::Confusion() ) { - tds = BRepPrimAPI_MakeCylinder(axis, (radius1+radius2)/2.0, height).Shape(); - } - else { - tds = BRepPrimAPI_MakeCone(axis, radius1, radius2, height).Shape(); - } - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakeCone", SALOME::BAD_PARAM); - } - - if (tds.IsNull()) { - THROW_SALOME_CORBA_EXCEPTION("Make Cone aborted", SALOME::BAD_PARAM); - } - result = CreateObject(tds); - const char *entry = InsertInLabel(tds, result->Name(), myCurrentOCAFDoc) ; - result->ShapeId(entry); - return result ; -} - - - -//================================================================================== -// function : ImportIGES() -// purpose : Import shape from an IGES (IGS) file -// : LPN modified 7 mai 2002 -//================================================================================== -GEOM::GEOM_Shape_ptr GEOM_Gen_i::ImportIGES(const char* filename) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result ; - //VRV: OCC 4.0 migration - IGESControl_Reader aReader; - //VRV: OCC 4.0 migration - try { - IFSelect_ReturnStatus stat = aReader.ReadFile((char*)filename); - if ( stat != IFSelect_RetDone ) { - THROW_SALOME_CORBA_EXCEPTION("Error in reading import file", SALOME::BAD_PARAM); } - - MESSAGE("ImportIGES : all Geometry Transfer" << endl ) ; -#if OCC_VERSION_MAJOR >= 5 - aReader.ClearShapes(); - aReader.TransferRoots(); -#else - aReader.Clear(); - aReader.TransferRoots(false); -#endif - MESSAGE("ImportIGES : count of shapes produced = " << aReader.NbShapes() << endl ); - TopoDS_Shape shape = aReader.OneShape(); - - if ( !shape.IsNull() ) { - /* Final CORBA object creation */ - result = CreateObject(shape) ; - const char *entry = InsertInLabel( shape, result->Name(), myCurrentOCAFDoc ) ; - result->ShapeId(entry); - return result ; - } - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::ImportIGES()", SALOME::BAD_PARAM); - } - - THROW_SALOME_CORBA_EXCEPTION("Import IGES aborted : internal error", SALOME::BAD_PARAM); -} - - - -//================================================================================== -// function : ImportSTEP() -// purpose : Import shape from an STEP (stp) file -// : 'result' is a compound of shapes if file contains more entities. -//================================================================================== -GEOM::GEOM_Shape_ptr GEOM_Gen_i::ImportSTEP(const char* filename) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result ; - //VRV: OCC 4.0 migration - STEPControl_Reader aReader; - //VRV: OCC 4.0 migration - - TopoDS_Compound compound; - BRep_Builder B; - B.MakeCompound( compound ); - - try { - IFSelect_ReturnStatus status = aReader.ReadFile((char*)filename); - - if (status == IFSelect_RetDone) { - Standard_Boolean failsonly = Standard_False ; - aReader.PrintCheckLoad (failsonly, IFSelect_ItemsByEntity); - /* Root transfers */ - Standard_Integer nbr = aReader.NbRootsForTransfer(); - aReader.PrintCheckTransfer (failsonly, IFSelect_ItemsByEntity); - - for ( Standard_Integer n=1; n <= nbr; n++) { - - Standard_Boolean ok = aReader.TransferRoot(n); - /* Collecting resulting entities */ - Standard_Integer nbs = aReader.NbShapes(); - if (nbs == 0) - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::ImportStep", SALOME::BAD_PARAM) ; - - for ( Standard_Integer i=1; i<=nbs; i++ ) { - TopoDS_Shape aShape = aReader.Shape(i); - if ( aShape.IsNull() ) - THROW_SALOME_CORBA_EXCEPTION("Null shape in GEOM_Gen_i::ImportStep", SALOME::BAD_PARAM) ; - - /* For a single entity */ - if(nbr == 1 && nbs == 1) { - result = CreateObject(aShape) ; - const char *entry = InsertInLabel(aShape, result->Name(), myCurrentOCAFDoc) ; - result->ShapeId(entry); - return result ; - } - else { - B.Add( compound, aShape ) ; - } - } - } - - TopoDS_Shape tds = compound ; - result = CreateObject(tds) ; - if( CORBA::is_nil(result) ) - THROW_SALOME_CORBA_EXCEPTION("Translation aborted : null result", SALOME::BAD_PARAM); - const char *entry = InsertInLabel(tds, result->Name(), myCurrentOCAFDoc) ; - result->ShapeId(entry); - return result ; - } - - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::ImportStep", SALOME::BAD_PARAM); - } - return result ; -} - - -//================================================================================== -// function : Partition() -// purpose : -//================================================================================== - -GEOM::GEOM_Shape_ptr - GEOM_Gen_i::Partition(const GEOM::GEOM_Gen::ListOfIOR& ListShapes, - const GEOM::GEOM_Gen::ListOfIOR& ListTools, - const GEOM::GEOM_Gen::ListOfIOR& ListKeepInside, - const GEOM::GEOM_Gen::ListOfIOR& ListRemoveInside, - const CORBA::Short Limit) -throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var aResult; - TopoDS_Shape tds ; - //MESSAGE ("In Partition"); - try { - - unsigned int ind, nbshapes = 0; - nbshapes += ListShapes.length() + ListTools.length(); - nbshapes += ListKeepInside.length() + ListRemoveInside.length(); - - Partition_Spliter PS; - TopTools_MapOfShape ShapesMap(nbshapes), ToolsMap(nbshapes); - - // add object shapes that are in ListShapes; - for ( ind = 0; ind < ListShapes.length(); ind++) { - - GEOM::GEOM_Shape_var aShape = GetIORFromString( ListShapes[ind] ); - TopoDS_Shape Shape = GetTopoShape(aShape); - if(Shape.IsNull() ) { - //MESSAGE ( "In Partition a shape is null" ); - THROW_SALOME_CORBA_EXCEPTION("In Partition a shape is null", SALOME::BAD_PARAM); - } - if ( ShapesMap.Add( Shape )) - PS.AddShape(Shape); - } - - // add tool shapes that are in ListTools and not in ListShapes; - for (ind = 0; ind < ListTools.length(); ind++) { - - GEOM::GEOM_Shape_var aShape = GetIORFromString( ListTools[ind] ); - TopoDS_Shape Shape = GetTopoShape(aShape); - if(Shape.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("In Partition a shape is null", SALOME::BAD_PARAM); - } - if ( !ShapesMap.Contains( Shape ) && ToolsMap.Add( Shape )) - PS.AddTool(Shape); - } - - // add shapes that are in ListKeepInside, as object shapes; - for (ind = 0; ind < ListKeepInside.length(); ind++) { - - GEOM::GEOM_Shape_var aShape = GetIORFromString( ListKeepInside[ind] ); - TopoDS_Shape Shape = GetTopoShape(aShape); - if(Shape.IsNull() ) { - //MESSAGE ( "In Partition a Keep Inside shape is null" ); - THROW_SALOME_CORBA_EXCEPTION("In Partition a shape is null", SALOME::BAD_PARAM); - } - if (!ToolsMap.Contains( Shape ) && - ShapesMap.Add( Shape )) - PS.AddShape(Shape); - } - - // add shapes that are in ListRemoveInside, as object shapes; - for (ind = 0; ind < ListRemoveInside.length(); ind++) { - - GEOM::GEOM_Shape_var aShape = GetIORFromString( ListRemoveInside[ind] ); - TopoDS_Shape Shape = GetTopoShape(aShape); - if(Shape.IsNull() ) { - //MESSAGE ( "In Partition a Remove Inside shape is null" ); - THROW_SALOME_CORBA_EXCEPTION("In Partition a shape is null", SALOME::BAD_PARAM); - } - if (!ToolsMap.Contains( Shape ) && - ShapesMap.Add( Shape ) ) - PS.AddShape(Shape); - } - - //MESSAGE ( "Partition::Compute() " ); - PS.Compute ((TopAbs_ShapeEnum) Limit); - //MESSAGE ( "Partition::Compute() - END" ); - - // suppress result outside of shapes in KInsideMap - for (ind = 0; ind < ListKeepInside.length(); ind++) { - GEOM::GEOM_Shape_var aShape = GetIORFromString( ListKeepInside[ind] ); - TopoDS_Shape Shape = GetTopoShape(aShape); - PS.KeepShapesInside( Shape ); - } - - // suppress result inside of shapes in RInsideMap - for (ind = 0; ind < ListRemoveInside.length(); ind++) { - - GEOM::GEOM_Shape_var aShape = GetIORFromString( ListRemoveInside[ind] ); - TopoDS_Shape Shape = GetTopoShape(aShape); - PS.RemoveShapesInside( Shape ); - } - - tds = PS.Shape(); - - if( !IsValid(tds) ) { - //MESSAGE ( "In Partition: non valid shape result" ); - THROW_SALOME_CORBA_EXCEPTION("Partition aborted : non valid shape result", SALOME::BAD_PARAM); - } - } - catch (Standard_Failure) { - //MESSAGE ( "In Partition: Exception catched in GEOM_Gen_i::Partition()" ); - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::Partition", SALOME::BAD_PARAM); - } - - aResult = CreateObject(tds) ; - - /* add attributs S and mystr in a new label */ - GEOMDS_Commands GC(myCurrentOCAFDoc->Main()); - TDF_Label Lab = GC.AddShape(tds, aResult->Name() ); - TCollection_AsciiString entry; - TDF_Tool::Entry(Lab,entry); - aResult->ShapeId( entry.ToCString() ) ; - - // add arguments - - /* Create a new label */ - TDF_Label NewLab = Lab.NewChild(); - TCollection_ExtendedString Value("Arguments"); - TDataStd_Name::Set(NewLab,Value); - - // object shapes - for (unsigned int ind = 0; ind < ListShapes.length(); ind++) { - TDF_Label NewLab1 = NewLab.NewChild(); - - GEOM::GEOM_Shape_var aShape = GetIORFromString( ListShapes[ind] ); - Standard_CString anEntry = aShape->ShapeId(); - TDF_Label RefLab; - TDF_Tool::Label(myCurrentOCAFDoc->GetData(), anEntry, RefLab); - TDF_Reference::Set(NewLab1,RefLab); - } - // tool shapes - for (unsigned int ind = 0; ind < ListTools.length(); ind++) { - TDF_Label NewLab1 = NewLab.NewChild(); - - GEOM::GEOM_Shape_var aShape = GetIORFromString( ListTools[ind] ); - Standard_CString anEntry = aShape->ShapeId(); - TDF_Label RefLab; - TDF_Tool::Label(myCurrentOCAFDoc->GetData(), anEntry, RefLab); - TDF_Reference::Set(NewLab1,RefLab); - } - // limit shapes 1 - for (unsigned int ind = 0; ind < ListKeepInside.length(); ind++) { - TDF_Label NewLab1 = NewLab.NewChild(); - - GEOM::GEOM_Shape_var aShape = GetIORFromString( ListKeepInside[ind] ); - Standard_CString anEntry = aShape->ShapeId(); - TDF_Label RefLab; - TDF_Tool::Label(myCurrentOCAFDoc->GetData(), anEntry, RefLab); - TDF_Reference::Set(NewLab1,RefLab); - } - // limit shapes 2 - for (unsigned int ind = 0; ind < ListRemoveInside.length(); ind++) { - TDF_Label NewLab1 = NewLab.NewChild(); - - GEOM::GEOM_Shape_var aShape = GetIORFromString( ListRemoveInside[ind] ); - Standard_CString anEntry = aShape->ShapeId(); - TDF_Label RefLab; - TDF_Tool::Label(myCurrentOCAFDoc->GetData(), anEntry, RefLab); - TDF_Reference::Set(NewLab1,RefLab); - } - - return aResult; -} - - - -//================================================================================== -// function : MakeFilling() -// purpose : Create a surface from section curves filling -//================================================================================== -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeFilling(GEOM::GEOM_Shape_ptr myShape, - CORBA::Short mindeg, - CORBA::Short maxdeg, - CORBA::Double tol3d, - CORBA::Double tol2d, - CORBA::Short nbiter) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result ; - TopoDS_Face tds ; - TopoDS_Shape aShape = GetTopoShape(myShape) ; - if( aShape.IsNull() || aShape.ShapeType() != TopAbs_COMPOUND ) { - THROW_SALOME_CORBA_EXCEPTION("MakeFilling aborted : null shape or not a compound", SALOME::BAD_PARAM); - } - - try { - /* we verify the contents of the shape */ - TopExp_Explorer Ex ; - TopoDS_Shape Scurrent ; - Standard_Real First, Last ; - Handle(Geom_Curve) C ; - GeomFill_SectionGenerator Section ; - - Standard_Integer i = 0 ; - for(Ex.Init(aShape, TopAbs_EDGE); Ex.More(); Ex.Next()) { - Scurrent = Ex.Current() ; - if( Scurrent.IsNull() || Scurrent.ShapeType() != TopAbs_EDGE) { - THROW_SALOME_CORBA_EXCEPTION("Initial shape doesn't contain only edges !", SALOME::BAD_PARAM); - } - C = BRep_Tool::Curve(TopoDS::Edge(Scurrent), First, Last); - if (C.IsNull()) continue; - C = new Geom_TrimmedCurve(C, First, Last); - Section.AddCurve(C) ; - i++ ; - } - - /* a 'tolerance' is used to compare 2 knots : see GeomFill_Generator.cdl */ - /* We set 'tolerance' = tol3d */ - // Section.Perform( tol3d ) ; NRI */ - Section.Perform( Precision::Confusion() ) ; - Handle(GeomFill_Line) Line = new GeomFill_Line(i) ; - - GeomFill_AppSurf App(mindeg, maxdeg, tol3d, tol2d, nbiter) ; /* user parameters */ - App.Perform(Line, Section) ; - - if (!App.IsDone()) { - THROW_SALOME_CORBA_EXCEPTION("Filling aborted : non valid shape result", SALOME::BAD_PARAM); - } - Standard_Integer UDegree, VDegree, NbUPoles, NbVPoles, NbUKnots, NbVKnots; - App.SurfShape(UDegree, VDegree, NbUPoles, NbVPoles, NbUKnots, NbVKnots); - Handle(Geom_BSplineSurface) GBS = new Geom_BSplineSurface(App.SurfPoles(), - App.SurfWeights(), - App.SurfUKnots(), - App.SurfVKnots(), - App.SurfUMults(), - App.SurfVMults(), - App.UDegree(), - App.VDegree()); - - if( GBS.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("Make Filling aborted", SALOME::BAD_PARAM); - } - tds = BRepBuilderAPI_MakeFace(GBS) ; - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakeFilling", SALOME::BAD_PARAM); - } - - /* We test the validity of resulting shape */ - if( !IsValid(tds) ) { - THROW_SALOME_CORBA_EXCEPTION("Filling aborted : non valid shape result", SALOME::BAD_PARAM); - } - else { - result = CreateObject(tds) ; - InsertInLabelOneArgument(aShape, myShape, tds, result, myCurrentOCAFDoc) ; - } - - return result ; -} - - -//================================================================================= -// function : MakeGlueFaces() -// purpose : -//================================================================================= - -TopoDS_Face GEOM_Gen_i::FindSameFace(const TopoDS_Shape& aShape, - const TopoDS_Face& F, - double tol3d) -{ - TopoDS_Face aFace; - bool isSame = false; - for (TopExp_Explorer exf(aShape,TopAbs_FACE); exf.More(); exf.Next()) - { - //MESSAGE("--- test a face"); - int nbFound = 0; - aFace = TopoDS::Face(exf.Current()); - TopTools_ListOfShape liste1; - TopTools_ListOfShape liste2; - for (TopExp_Explorer exp(aFace,TopAbs_VERTEX); exp.More(); exp.Next()) - { - const TopoDS_Vertex& V = TopoDS::Vertex(exp.Current()); - liste1.Append(V); - } - for (TopExp_Explorer exp(F,TopAbs_VERTEX); exp.More(); exp.Next()) - { - const TopoDS_Vertex& V = TopoDS::Vertex(exp.Current()); - liste2.Append(V); - } - isSame = false; - if (liste1.Extent() == liste2.Extent()) - { - TopTools_ListIteratorOfListOfShape it1(liste1); - isSame = true; - for (; it1.More(); it1.Next()) - { - bool foundSamePoint = false; - gp_Pnt P1 = BRep_Tool::Pnt(TopoDS::Vertex(it1.Value())); - TopTools_ListIteratorOfListOfShape it2(liste2); - for (it2; it2.More(); it2.Next()) - { - gp_Pnt P2 = BRep_Tool::Pnt(TopoDS::Vertex(it2.Value())); - double d = P1.Distance(P2); - if (d < tol3d) - { - nbFound++; - //MESSAGE(" found Same Point : "< 0) && shellAdded) - { - //MESSAGE("more shells : "<< shellList.Extent()); - shellAdded = false; - its.Initialize(shellList); - for(; its.More(); its.Next()) - { - //MESSAGE("one more shell to try"); - TopTools_ListOfShape newFaces; // common faces from new compound - TopTools_ListOfShape oldFaces; // common faces from shell to add - TopTools_ListOfShape addFaces; // not common faces from shell to add - TopTools_ListOfShape newEdges; // common edges from new compound - TopTools_ListOfShape oldEdges; // common edges from face to add - TopoDS_Compound CFN; - TopoDS_Compound CFO; - bu.MakeCompound(CFN); // empty compound for new faces - bu.MakeCompound(CFO); // empty compound for old faces - S = TopoDS::Shell(its.Value()); - for (TopExp_Explorer exp(S,TopAbs_FACE); exp.More(); exp.Next()) - { - //MESSAGE("--- try to find corresponding face in new compound"); - TopoDS_Face F = TopoDS::Face(exp.Current()); - TopoDS_Face newFace = FindSameFace(C,F,tol3d); - if (! newFace.IsNull()) - { - //MESSAGE("--- face found"); - newFaces.Append(newFace); - bu.Add(CFN, newFace); // common faces from new compound - oldFaces.Append(F); - for (TopExp_Explorer ee(F,TopAbs_EDGE);ee.More();ee.Next()) - { - //MESSAGE("--- find edge pair"); - TopoDS_Edge Eold = TopoDS::Edge(ee.Current()); - const TopoDS_Edge& Enew = FindSameEdge(newFace, Eold, tol3d); - oldEdges.Append(Eold); - newEdges.Append(Enew); - } - } - else - { - //MESSAGE("---"); - addFaces.Append(F); - bu.Add(CFO, F); // not common faces from shell to add - } - } - if ( !newFaces.IsEmpty()) - { - //MESSAGE("--- some faces found ---"); - shellAdded = true; - BRepTools_Quilt glue; - glue.Add(CFN); - TopTools_ListIteratorOfListOfShape ito(oldEdges); - TopTools_ListIteratorOfListOfShape itn(newEdges); - for (; ito.More(); ito.Next()) - { - //MESSAGE("--- bind"); - glue.Bind(TopoDS::Edge(ito.Value()), TopoDS::Edge(itn.Value())); - itn.Next(); - } - glue.Add(CFO); - TopoDS_Compound newc = TopoDS::Compound(glue.Shells()); - for (TopExp_Explorer exs(newc,TopAbs_SHELL); exs.More(); exs.Next()) - { - TopoDS_Shell NS = TopoDS::Shell(exs.Current()); - bu.Add(C, NS); - } - shellList.Remove(its); - //MESSAGE("--- remove shell from list"); - break; - } - } - } - //MESSAGE("---" << shellList.Extent() << " " << shellAdded); - - TopExp_Explorer exp(C,TopAbs_SHELL); - Standard_Integer ish=0; - TopoDS_Compound Res; - TopoDS_Solid Sol; - BRep_Builder B; - B.MakeCompound(Res); - TopoDS_Shape theShape; - - for (; exp.More(); exp.Next()) - { - TopoDS_Shape Sh = exp.Current(); - B.MakeSolid(Sol); - B.Add(Sol,Sh); - BRepClass3d_SolidClassifier SC(Sol); - SC.PerformInfinitePoint(1.E-6); // cf. BRepFill_Confusion() - BRepFill_Evolved.cxx - if (SC.State() == TopAbs_IN) - { - B.MakeSolid(Sol); - B.Add(Sol,Sh.Reversed()); - } - B.Add(Res,Sol); - ish++; - } - if (ish == 1) { theShape = Sol;} - else { theShape = Res;} - - BRepLib::SameParameter(theShape, 1.E-5, Standard_True); - tds = theShape; - result = CreateObject(tds); - InsertInLabelOneArgument(aShape, myShape, tds, result, myCurrentOCAFDoc) ; - //MESSAGE("---"); - return result; -} - -//================================================================================= -// function : MakeSewing() -// purpose : -//================================================================================= -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeSewing( const GEOM::GEOM_Gen::ListOfIOR& ListShapes, - CORBA::Double precision ) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result ; - TopoDS_Shape tds ; - BRepOffsetAPI_Sewing aMethod ; - - try { - /* default OCC is 1.0e-06 */ - aMethod.Init(precision, Standard_False); - for ( unsigned int i = 0; i < ListShapes.length(); i++) { - GEOM::GEOM_Shape_var aShape = GetIORFromString( ListShapes[i] ); - TopoDS_Shape Shape = GetTopoShape(aShape) ; - if( Shape.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("MakeSewing aborted : null shape during operation", SALOME::BAD_PARAM); - } - aMethod.Add(Shape) ; - } - - aMethod.Perform() ; - tds = aMethod.SewedShape() ; - if( !IsValid(tds) ) { - THROW_SALOME_CORBA_EXCEPTION("Make Sewing aborted : non valid shape", SALOME::BAD_PARAM); - } - if( tds.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("Make Sewing aborted : null shape", SALOME::BAD_PARAM); - } - } - catch (Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakeSewing", SALOME::BAD_PARAM); - } - - result = CreateObject(tds); - InsertInLabelMoreArguments(tds, result, ListShapes, myCurrentOCAFDoc) ; - return result; -} - -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeSewingShape( GEOM::GEOM_Shape_ptr aShape, - CORBA::Double precision ) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result ; - TopoDS_Shape tds, S ; - BRepOffsetAPI_Sewing aMethod ; - - try { - S = GetTopoShape(aShape) ; - if(S.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("In Sewing a Shape is null", SALOME::BAD_PARAM); - } - - /* default OCC is 1.0e-06 */ - aMethod.Init(precision, Standard_False); - for ( TopExp_Explorer exp( S, TopAbs_FACE); exp.More(); exp.Next() ) { - const TopoDS_Face& F = TopoDS::Face(exp.Current()); - aMethod.Add(F) ; - } - - aMethod.Perform() ; - tds = aMethod.SewedShape() ; - if( !IsValid(tds) ) { - THROW_SALOME_CORBA_EXCEPTION("Make Sewing aborted : non valid shape", SALOME::BAD_PARAM); - } - } - catch (Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakeSewing", SALOME::BAD_PARAM); - } - - result = CreateObject(tds); - const char *entry = InsertInLabel(tds, result->Name(), myCurrentOCAFDoc) ; - result->ShapeId(entry) ; - return result; -} - -//================================================================================== -// function : OrientationChange() -// purpose : Change the orientation of a new shape -// : TopAbs_FORWARD < -- > TopAbs_REVERSED -// -// : WARNING : for the moment we make a new shape ! -//================================================================================== -GEOM::GEOM_Shape_ptr GEOM_Gen_i::OrientationChange(GEOM::GEOM_Shape_ptr aShape) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result ; - BRep_Builder aBuilder; - - TopoDS_Shape shape = GetTopoShape(aShape) ; - if( shape.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("Shape is null", SALOME::BAD_PARAM); - } - - BRepBuilderAPI_Copy Copy(shape); - if( Copy.IsDone() ) { - TopoDS_Shape tds = Copy.Shape(); - if( tds.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("Orientation aborted : null shape", SALOME::BAD_PARAM); - } - - if( tds.Orientation() == TopAbs_FORWARD) - tds.Orientation(TopAbs_REVERSED) ; - else - tds.Orientation(TopAbs_FORWARD) ; - - result = CreateObject(tds); - InsertInLabelOneArgument(shape, aShape, tds, result, myCurrentOCAFDoc) ; - } - return result ; -} - - -//================================================================================== -// function : GetReferencedObjects() -// purpose : -//================================================================================== -GEOM::GEOM_Gen::ListOfIOR* GEOM_Gen_i::GetReferencedObjects(GEOM::GEOM_Shape_ptr shape) -{ - GEOM::GEOM_Gen::ListOfIOR_var aList = new GEOM::GEOM_Gen::ListOfIOR; - aList->length(0); - - if (shape->_is_nil()) return aList._retn(); - - Standard_CString entry = shape->ShapeId(); - TDF_Label Lab; - TDF_Tool::Label(myCurrentOCAFDoc->GetData(), entry, Lab); - - Handle(TDataStd_Name) Att; - Lab.FindAttribute(TDataStd_Name::GetID(),Att); - - TDF_ChildIterator ChildIterator(Lab); - if (ChildIterator.More()) { - TDF_Label L = ChildIterator.Value(); - Handle(TDataStd_Name) Att; - L.FindAttribute(TDataStd_Name::GetID(),Att); - if (Att->Get().IsEqual(TCollection_ExtendedString("Arguments")) ) { - - TDF_ChildIterator ChildIterator1(L); - unsigned int i = 0; - - while (ChildIterator1.More()) { - TDF_Label L = ChildIterator1.Value(); - - Handle(TDF_Reference) Ref; - if (L.FindAttribute(TDF_Reference::GetID(),Ref)) { - i++; - } - ChildIterator1.Next(); - } - aList->length(i); - i = 0; - TDF_ChildIterator ChildIterator2(L); - while (ChildIterator2.More()) { - TDF_Label L = ChildIterator2.Value(); - Handle(TDF_Reference) Ref; - if (L.FindAttribute(TDF_Reference::GetID(),Ref)) { - TDF_Label L = Ref->Get(); - - Handle(TDataStd_Name) Att; - L.FindAttribute(TDataStd_Name::GetID(),Att); - TCollection_AsciiString nameIOR (Att->Get()) ; - aList[i] = CORBA::string_dup( nameIOR.ToCString() ); - i++; - } - - ChildIterator2.Next(); - } - } - } - return aList._retn(); -} - -//================================================================================== -// function : GetObjects() -// purpose : -//================================================================================== -GEOM::GEOM_Gen::ListOfIOR* GEOM_Gen_i::GetObjects(GEOM::GEOM_Shape_ptr shape) -{ - GEOM::GEOM_Gen::ListOfIOR_var aList = new GEOM::GEOM_Gen::ListOfIOR; - aList->length(0); - - Standard_CString entry = shape->ShapeId(); - TDF_Label Lab; - TDF_Tool::Label(myCurrentOCAFDoc->GetData(), entry, Lab); - - Handle(TDataStd_Name) Att; - Lab.FindAttribute(TDataStd_Name::GetID(),Att); - - TDF_ChildIterator ChildIterator(Lab); - unsigned int i = 0; - while (ChildIterator.More()) { - TDF_Label L = ChildIterator.Value(); - Handle(TDataStd_Name) Att; - L.FindAttribute(TDataStd_Name::GetID(),Att); - - if (!Att->Get().IsEqual(TCollection_ExtendedString("Arguments")) ) { - i++; - } - ChildIterator.Next(); - } - - aList->length(i); - i = 0; - TDF_ChildIterator ChildIterator1(Lab); - while (ChildIterator1.More()) { - TDF_Label L = ChildIterator1.Value(); - Handle(TDataStd_Name) Att; - L.FindAttribute(TDataStd_Name::GetID(),Att); - - if (!Att->Get().IsEqual(TCollection_ExtendedString("Arguments")) ) { - TCollection_AsciiString nameIOR (Att->Get()); - aList[i] = CORBA::string_dup( nameIOR.ToCString() ); - i++; - } - ChildIterator1.Next(); - } - return aList._retn(); -} - - -//================================================================================== -// function : Import -// purpose : Import shape from a BREP file -//================================================================================== -GEOM::GEOM_Shape_ptr GEOM_Gen_i::ImportBREP(const char* filename) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - TopoDS_Shape tds ; - GEOM::GEOM_Shape_var result ; - - try { - BRep_Builder aBuilder; - char* aCopyfilename = strdup(filename); - BRepTools::Read(tds, aCopyfilename, aBuilder) ; - free(aCopyfilename); - if (tds.IsNull()) { - THROW_SALOME_CORBA_EXCEPTION("Import BRep aborted", SALOME::BAD_PARAM); - } - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::ImportBREP", SALOME::BAD_PARAM); - } - - result = CreateObject(tds) ; - const char *entry = InsertInLabel(tds, result->Name(), myCurrentOCAFDoc) ; - result->ShapeId(entry); - return result; -} - - -//================================================================================ -// function : MakePlane() -// purpose : Make a plane topology (non infinite) -//================================================================================ -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakePlane(const GEOM::PointStruct& pstruct, - const GEOM::DirStruct& dstruct, - CORBA::Double trimsize) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result ; - TopoDS_Shape tds ; - - try { - gp_Pnt aPoint(pstruct.x, pstruct.y, pstruct.z) ; - gp_Dir aDirection(dstruct.PS.x, dstruct.PS.y, dstruct.PS.z) ; - /* we make a trimmed plane */ - gp_Pln gplane(aPoint, aDirection) ; - tds = BRepBuilderAPI_MakeFace(gplane, -trimsize, +trimsize, -trimsize, +trimsize) ; - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakePlane", SALOME::BAD_PARAM); - } - - if (tds.IsNull()) { - THROW_SALOME_CORBA_EXCEPTION("Make Plane aborted : null shape", SALOME::BAD_PARAM); - } - - result = CreateObject(tds) ; - const char *entry = InsertInLabel(tds, result->Name(), myCurrentOCAFDoc) ; - result->ShapeId(entry); - return result ; -} - -//================================================================================= -// function : MakeVertex() -// purpose : Create a Vertex topology. -//================================================================================= -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeVertex(CORBA::Double x, - CORBA::Double y, - CORBA::Double z) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result ; - gp_Pnt P(x,y,z); - TopoDS_Shape tds = BRepBuilderAPI_MakeVertex(P).Shape(); - if (tds.IsNull()) { - THROW_SALOME_CORBA_EXCEPTION("Make Vertex/Point aborted", SALOME::BAD_PARAM); - } - tds.Infinite(true); - result = CreateObject(tds) ; - const char *entry = InsertInLabel(tds, result->Name(), myCurrentOCAFDoc) ; - result->ShapeId(entry); - return result ; -} - - -//================================================================================= -// function : MakeFace() -// purpose : -//================================================================================= -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeFace( GEOM::GEOM_Shape_ptr wire, - CORBA::Boolean wantplanarface ) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result ; - TopoDS_Shape aShape; - TopoDS_Shape tds; - - try { - aShape = GetTopoShape(wire) ; - if( aShape.IsNull() || aShape.ShapeType() != TopAbs_WIRE ) { - THROW_SALOME_CORBA_EXCEPTION("MakeFace aborted : null or inappropriate shape", SALOME::BAD_PARAM); - } - TopoDS_Wire W = TopoDS::Wire(aShape) ; - tds = BRepBuilderAPI_MakeFace(W, wantplanarface).Shape() ; - if( !tds.IsNull() ) { - result = CreateObject(tds) ; - InsertInLabelOneArgument(aShape, wire, tds, result, myCurrentOCAFDoc) ; - } - else { - THROW_SALOME_CORBA_EXCEPTION("Null result in GEOM_Gen_i::MakeFace", SALOME::BAD_PARAM); - } - } - catch (Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakeFace", SALOME::BAD_PARAM); - } - return result ; -} - - -//================================================================================= -// function : MakeFaces() -// purpose : -//================================================================================= -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeFaces(const GEOM::GEOM_Gen::ListOfIOR& ListShapes, - CORBA::Boolean wantplanarface) - throw (SALOME::SALOME_Exception) -{ - GEOM::GEOM_Shape_var result; - - try { - GEOM::GEOM_Shape_var aShape = GetIORFromString(ListShapes[0]); - TopoDS_Shape Shape = GetTopoShape(aShape); - if(Shape.IsNull() || Shape.ShapeType() != TopAbs_WIRE) { - THROW_SALOME_CORBA_EXCEPTION("Shell aborted : null shape during operation", SALOME::BAD_PARAM); - } - TopoDS_Wire W = TopoDS::Wire(Shape); - TopoDS_Shape FFace = BRepBuilderAPI_MakeFace(W, wantplanarface).Shape(); - if(!FFace.IsNull()) { - if(ListShapes.length() == 1) { - result = CreateObject(FFace); - InsertInLabelMoreArguments(FFace, result, ListShapes, myCurrentOCAFDoc); - } - else if(ListShapes.length() >= 2) { - TopoDS_Compound C; - BRep_Builder aBuilder; - aBuilder.MakeCompound(C); - BRepAlgo_FaceRestrictor FR; - - TopAbs_Orientation OriF = FFace.Orientation(); - TopoDS_Shape aLocalS = FFace.Oriented(TopAbs_FORWARD); - FR.Init(TopoDS::Face(aLocalS), Standard_False, Standard_True); - - for(unsigned int i = 0; i < ListShapes.length(); i++) { - GEOM::GEOM_Shape_var aShape = GetIORFromString(ListShapes[i]); - TopoDS_Shape Shape = GetTopoShape(aShape); - if(Shape.IsNull()) { - THROW_SALOME_CORBA_EXCEPTION("Shell aborted : null shape during operation", SALOME::BAD_PARAM); - } - FR.Add(TopoDS::Wire(Shape)); - } - - FR.Perform(); - - if(FR.IsDone()) { - int k = 0; - TopoDS_Shape aFace; - for(; FR.More(); FR.Next()) { - aFace = FR.Current().Oriented(OriF); - aBuilder.Add(C, aFace); - k++; - } - if(k == 1) { - result = CreateObject(aFace); - InsertInLabelMoreArguments(aFace, result, ListShapes, myCurrentOCAFDoc); - } - else { - result = CreateObject(C); - InsertInLabelMoreArguments(C, result, ListShapes, myCurrentOCAFDoc); - } - } - } - } - else { - THROW_SALOME_CORBA_EXCEPTION("Null result in GEOM_Gen_i::MakeFace", SALOME::BAD_PARAM); - } - } - catch (Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakeFace", SALOME::BAD_PARAM); - } - return result; -} - - -//================================================================================= -// function : MakeShell() -// purpose : Make a compound from a list containing one or more shapes -//================================================================================= -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeShell( const GEOM::GEOM_Gen::ListOfIOR& ListShapes ) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result ; - BRepTools_Quilt Glue; - TopoDS_Shape C; - - for ( unsigned int i = 0; i < ListShapes.length(); i++) { - GEOM::GEOM_Shape_var aShape = GetIORFromString( ListShapes[i] ); - TopoDS_Shape Shape = GetTopoShape(aShape) ; - if( Shape.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("Shell aborted : null shape during operation", SALOME::BAD_PARAM); - } - Glue.Add(Shape) ; - } - - TopExp_Explorer exp(Glue.Shells(), TopAbs_SHELL); - Standard_Integer ish = 0; - for (; exp.More(); exp.Next()) { - C = exp.Current(); - ish++; - } - - if (ish != 1) - C = Glue.Shells(); - - if ( C.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("Null result : Shell operation aborted", SALOME::BAD_PARAM); - } - else { - result = CreateObject(C) ; - InsertInLabelMoreArguments(C, result, ListShapes, myCurrentOCAFDoc) ; - } - return result; -} - - -//================================================================================= -// function : MakeSolid() -// purpose : Make a compound from a list containing one or more shapes -//================================================================================= -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeSolid( const GEOM::GEOM_Gen::ListOfIOR& ListShapes ) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result ; - Standard_Integer ish = 0; - TopoDS_Compound Res; - TopoDS_Solid Sol; - BRep_Builder B; - TopoDS_Shape Shape; - - B.MakeCompound(Res); - - for ( unsigned int i = 0; i < ListShapes.length(); i++) { - GEOM::GEOM_Shape_var aShape = GetIORFromString( ListShapes[i] ); - TopoDS_Shape Sh = GetTopoShape(aShape) ; - if( Sh.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("Solid aborted : null shape during operation", SALOME::BAD_PARAM); - } - B.MakeSolid(Sol); - B.Add(Sol,Sh); - BRepClass3d_SolidClassifier SC(Sol); - SC.PerformInfinitePoint(Precision::Confusion()); - if (SC.State() == TopAbs_IN) { - B.MakeSolid(Sol); - B.Add(Sol,Sh.Reversed()); - } - B.Add(Res,Sol); - ish++; - } - if (ish == 1) { Shape = Sol;} - else { Shape = Res;} - - if ( Shape.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("Null result : Solid operation aborted", SALOME::BAD_PARAM); - } - else { - result = CreateObject(Shape) ; - InsertInLabelMoreArguments(Shape, result, ListShapes, myCurrentOCAFDoc) ; - } - return result; -} - - -//================================================================================ -// function : MakeLine -// purpose : Make a Line topology -//================================================================================ -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeLine(const GEOM::PointStruct& pstruct, - const GEOM::DirStruct& dstruct) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result ; - gp_Pnt P1(pstruct.x, pstruct.y, pstruct.z); - gp_Pnt P2(dstruct.PS.x, dstruct.PS.y, dstruct.PS.z) ; - TopoDS_Shape tds ; - - try { - tds = BRepBuilderAPI_MakeEdge(P1, P2).Shape(); - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakeLine", SALOME::BAD_PARAM); - } - - if ( tds.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("Make Line aborted : null shape", SALOME::BAD_PARAM); - } - else { - tds.Infinite(true); - result = CreateObject(tds) ; - const char *entry = InsertInLabel(tds, result->Name(), myCurrentOCAFDoc) ; - result->ShapeId(entry); - } - return result ; -} - - -//================================================================================ -// function : MakeVector() -// purpose : Make a vector -//================================================================================ -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeVector(const GEOM::PointStruct& pstruct1, - const GEOM::PointStruct& pstruct2) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result ; - TopoDS_Shape tds ; - - try { - gp_Pnt P1(pstruct1.x, pstruct1.y, pstruct1.z); - gp_Pnt P2(pstruct2.x, pstruct2.y, pstruct2.z) ; - tds = BRepBuilderAPI_MakeEdge(P1, P2).Shape(); - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakeVector", SALOME::BAD_PARAM); - } - - if ( tds.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("Make Vector aborted : null shape", SALOME::BAD_PARAM); - } - else { - result = CreateObject(tds) ; - const char *entry = InsertInLabel(tds, result->Name(), myCurrentOCAFDoc) ; - result->ShapeId(entry); - } - return result ; -} - - -//================================================================================ -// function : MakeCircle() -// purpose : -//================================================================================ -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeCircle(const GEOM::PointStruct& pstruct, - const GEOM::DirStruct& dstruct, - CORBA::Double radius) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result; - TopoDS_Shape tds ; - - try { - gp_Pnt p(pstruct.x, pstruct.y, pstruct.z) ; - gp_Dir d(dstruct.PS.x, dstruct.PS.y, dstruct.PS.z) ; - gp_Ax2 axis(p, d) ; - gp_Circ circ( axis, radius); - BRepBuilderAPI_MakeEdge MakeEdge( circ ); - tds = MakeEdge.Edge(); - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakeCircle", SALOME::BAD_PARAM); - } - if (tds.IsNull()) { - THROW_SALOME_CORBA_EXCEPTION("Make Circle aborted", SALOME::BAD_PARAM); - } - result = CreateObject(tds); - const char *entry = InsertInLabel(tds, result->Name(), myCurrentOCAFDoc) ; - result->ShapeId(entry); - return result ; -} - -//================================================================================ -// function : MakeEllipse() -// purpose : -//================================================================================ -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeEllipse( const GEOM::PointStruct& pstruct, - const GEOM::DirStruct& dstruct, - CORBA::Double radius_major, - CORBA::Double radius_minor ) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result; - TopoDS_Shape tds ; - - try { - gp_Pnt p(pstruct.x, pstruct.y, pstruct.z) ; - gp_Dir d(dstruct.PS.x, dstruct.PS.y, dstruct.PS.z) ; - - const gp_Ax2 axis(p, d) ; - gp_Elips anEllipse( axis, radius_major, radius_minor ) ; - BRepBuilderAPI_MakeEdge MakeEdge( anEllipse ); - tds = MakeEdge.Edge(); - - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakeEllipse", SALOME::BAD_PARAM); - } - if (tds.IsNull()) { - THROW_SALOME_CORBA_EXCEPTION("Make Ellipse aborted", SALOME::BAD_PARAM); - } - result = CreateObject(tds); - const char *entry = InsertInLabel(tds, result->Name(), myCurrentOCAFDoc) ; - result->ShapeId(entry); - return result ; -} - -//================================================================================ -// function : MakeArc() -// purpose : make an arc of circle from pInit to pEnd and passing on pCircle -//================================================================================ -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeArc(const GEOM::PointStruct& pInit, - const GEOM::PointStruct& pCircle, - const GEOM::PointStruct& pEnd) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result; - try { - gp_Pnt pI(pInit.x, pInit.y, pInit.z) ; - gp_Pnt pC(pCircle.x, pCircle.y, pCircle.z) ; - gp_Pnt pE(pEnd.x, pEnd.y, pEnd.z) ; - - GC_MakeArcOfCircle arc( pI, pC, pE ) ; - if( !arc.IsDone() ) { - THROW_SALOME_CORBA_EXCEPTION("Arc not done", SALOME::BAD_PARAM); - } - BRepBuilderAPI_MakeEdge MakeEdge( arc ); - TopoDS_Shape tds = MakeEdge.Edge(); - if (tds.IsNull()) { - THROW_SALOME_CORBA_EXCEPTION("Null result : arc not done", SALOME::BAD_PARAM); - } - else { - result = CreateObject(tds); - const char *entry = InsertInLabel(tds, result->Name(), myCurrentOCAFDoc) ; - result->ShapeId(entry); - } - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakeArc", SALOME::BAD_PARAM); - } - return result ; -} - -//================================================================================= -// function : MakeSketcher() -// purpose : Make a wire from a list containing many points -//================================================================================= -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeSketcher( const char *Cmd ) - throw (SALOME::SALOME_Exception) -{ - GEOM::GEOM_Shape_var result ; - TopoDS_Shape tds ; - try { - Sketcher_Profile aProfile (Cmd); - if(aProfile.IsDone()) - tds = aProfile.GetShape(); - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakeSketcher", SALOME::BAD_PARAM); - } - - if (tds.IsNull()) { - THROW_SALOME_CORBA_EXCEPTION("MakeSketcher aborted : null shape", SALOME::BAD_PARAM); - } - else { - result = CreateObject(tds); - const char *entry = InsertInLabel(tds, result->Name(), myCurrentOCAFDoc) ; - result->ShapeId(entry) ; - } - return result; -} - - - -//================================================================================= -// function : MakeBezier() -// purpose : Make a wire from a list containing many points -//================================================================================= -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeBezier( const GEOM::GEOM_Gen::ListOfIOR& ListShapes ) - throw (SALOME::SALOME_Exception) -{ - GEOM::GEOM_Shape_var result; - TopoDS_Shape tds, Shape; - TColgp_Array1OfPnt CurvePoints(1, ListShapes.length()); - - try { - for(unsigned int i = 0; i < ListShapes.length(); i++) { - GEOM::GEOM_Shape_var aShape = GetIORFromString(ListShapes[i]); - Shape = GetTopoShape(aShape); - if(Shape.IsNull()) { - THROW_SALOME_CORBA_EXCEPTION("MakeBezier aborted : null shape during operation", SALOME::BAD_PARAM); - } - if(Shape.ShapeType() == TopAbs_VERTEX) { - const gp_Pnt& P = BRep_Tool::Pnt(TopoDS::Vertex(Shape)); - CurvePoints.SetValue(i + 1, P); - } - } - Handle(Geom_BezierCurve) GBC = new Geom_BezierCurve(CurvePoints); - tds = BRepBuilderAPI_MakeEdge(GBC); - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakeBezier", SALOME::BAD_PARAM); - } - - if( tds.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("Make Bezier operation aborted : null result", SALOME::BAD_PARAM); - } - else { - result = CreateObject(tds); - InsertInLabelMoreArguments(tds, result, ListShapes, myCurrentOCAFDoc); - } - return result; -} - - -//================================================================================= -// function : MakeInterpol() -// purpose : Make a wire from a list containing many points -//================================================================================= -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeInterpol( const GEOM::GEOM_Gen::ListOfIOR& ListShapes ) - throw (SALOME::SALOME_Exception) -{ - GEOM::GEOM_Shape_var result; - TopoDS_Shape tds, Shape; - TColgp_Array1OfPnt CurvePoints(1, ListShapes.length()); - - try { - for(unsigned int i = 0; i < ListShapes.length(); i++) { - GEOM::GEOM_Shape_var aShape = GetIORFromString(ListShapes[i]); - Shape = GetTopoShape(aShape); - if(Shape.IsNull()) { - THROW_SALOME_CORBA_EXCEPTION("MakeBSpline aborted : null shape during operation", SALOME::BAD_PARAM); - } - if(Shape.ShapeType() == TopAbs_VERTEX) { - const gp_Pnt& P = BRep_Tool::Pnt(TopoDS::Vertex(Shape)); - CurvePoints.SetValue(i + 1, P); - } - } - GeomAPI_PointsToBSpline GBC(CurvePoints); - tds = BRepBuilderAPI_MakeEdge(GBC); - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakeBSpline", SALOME::BAD_PARAM); - } - - if( tds.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("Make BSpline operation aborted : null result", SALOME::BAD_PARAM); - } - else { - result = CreateObject(tds) ; - InsertInLabelMoreArguments(tds, result, ListShapes, myCurrentOCAFDoc) ; - } - return result; -} - -//================================================================================= -// function : MakeTranslation() -// purpose : Translate a 3D shape -//================================================================================= -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeTranslation( GEOM::GEOM_Shape_ptr myShape, - CORBA::Double x, - CORBA::Double y, - CORBA::Double z) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result ; - TopoDS_Shape aShape = GetTopoShape(myShape) ; - if( aShape.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("Translation aborted : null shape", SALOME::BAD_PARAM); - } - gp_Vec theVector(x,y,z) ; - gp_Trsf theTransformation ; - theTransformation.SetTranslation(theVector) ; - BRepBuilderAPI_Transform myBRepTransformation(aShape, theTransformation, Standard_False) ; - TopoDS_Shape tds = myBRepTransformation.Shape() ; - - result = CreateObject(tds) ; - if( CORBA::is_nil(result) ) { - THROW_SALOME_CORBA_EXCEPTION("Translation aborted : null result", SALOME::BAD_PARAM); - } - InsertInLabelOneArgument(aShape, myShape, tds, result, myCurrentOCAFDoc) ; - return result; -} - - -//================================================================================= -// function : MakeMultiTranslation1D() -// purpose : Multi-Translate a 3D shape -//================================================================================= -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeMultiTranslation1D( GEOM::GEOM_Shape_ptr myShape, - const GEOM::DirStruct& dir, - CORBA::Double step, - CORBA::Short nbtimes ) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result ; - TopoDS_Shape tds ; - - TopoDS_Shape aShape = GetTopoShape(myShape) ; - if( aShape.IsNull() ) - THROW_SALOME_CORBA_EXCEPTION("MakeMultiTranslation1D aborted : null shape", SALOME::BAD_PARAM); - - try { - int i ; - double DX, DY, DZ ; - gp_Trsf theTransformation ; - gp_Vec myVec ; - gp_Vec Vec( dir.PS.x, dir.PS.y, dir.PS.z ) ; - Vec.Normalize(); - TopoDS_Compound compound; - BRep_Builder B; - B.MakeCompound( compound ); - - for ( i = 0; i < nbtimes; i++ ) { - DX = i * step * Vec.X() ; - DY = i * step * Vec.Y() ; - DZ = i * step * Vec.Z() ; - myVec.SetCoord( DX, DY, DZ ) ; - theTransformation.SetTranslation(myVec) ; - BRepBuilderAPI_Transform myBRepTransformation(aShape, theTransformation, Standard_False) ; - B.Add( compound, myBRepTransformation.Shape() ); - } - tds = compound ; - result = CreateObject(tds) ; - } - catch (Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakeMultiTranslation1D", SALOME::BAD_PARAM); - } - - if( CORBA::is_nil(result) ) { - THROW_SALOME_CORBA_EXCEPTION("MakeMultiTranslation1D aborted : null result", SALOME::BAD_PARAM); - } - InsertInLabelOneArgument(aShape, myShape, tds, result, myCurrentOCAFDoc) ; - return result; -} - - -//================================================================================= -// function : MakeMultiTranslation2D() -// purpose : Multi-Translate a 3D shape -//================================================================================= -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeMultiTranslation2D( GEOM::GEOM_Shape_ptr myShape, - const GEOM::DirStruct& dir1, - CORBA::Double step1, - CORBA::Short nbtimes1, - const GEOM::DirStruct& dir2, - CORBA::Double step2, - CORBA::Short nbtimes2 ) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result ; - TopoDS_Shape tds ; - - TopoDS_Shape aShape = GetTopoShape(myShape) ; - if( aShape.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("MakeMultiTranslation2D aborted : null shape", SALOME::BAD_PARAM); - } - - try { - int i, j ; - double DX, DY, DZ ; - gp_Trsf theTransformation ; - gp_Vec myVec ; - gp_Vec Vec1( dir1.PS.x, dir1.PS.y, dir1.PS.z ) ; - Vec1.Normalize(); - gp_Vec Vec2( dir2.PS.x, dir2.PS.y, dir2.PS.z ) ; - Vec2.Normalize(); - TopoDS_Compound compound; - BRep_Builder B; - B.MakeCompound( compound ); - - for ( i = 0; i < nbtimes1; i++ ) { - for ( j = 0; j < nbtimes2; j++ ) { - DX = i * step1 * Vec1.X() + j * step2 * Vec2.X() ; - DY = i * step1 * Vec1.Y() + j * step2 * Vec2.Y() ; - DZ = i * step1 * Vec1.Z() + j * step2 * Vec2.Z() ; - myVec.SetCoord( DX, DY, DZ ) ; - theTransformation.SetTranslation(myVec) ; - BRepBuilderAPI_Transform myBRepTransformation(aShape, theTransformation, Standard_False) ; - B.Add( compound, myBRepTransformation.Shape() ); - } - } - tds = compound ; - result = CreateObject(tds) ; - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakeMultiTranslation2D", SALOME::BAD_PARAM); - } - - if( CORBA::is_nil(result) ) { - THROW_SALOME_CORBA_EXCEPTION("MakeMultiTranslation2D aborted : null result", SALOME::BAD_PARAM); - } - InsertInLabelOneArgument(aShape, myShape, tds, result, myCurrentOCAFDoc) ; - return result; -} - - -//================================================================================= -// function : MakeMultiRotation1D() -// purpose : Multi-Rotate a 3D shape -//================================================================================= -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeMultiRotation1D( GEOM::GEOM_Shape_ptr myShape, - const GEOM::DirStruct& dir, - const GEOM::PointStruct& loc, - CORBA::Short nbtimes) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result ; - TopoDS_Shape tds ; - TopoDS_Shape aShape = GetTopoShape(myShape) ; - if( aShape.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("MakeMultiRotation1D aborted : null shape", SALOME::BAD_PARAM); - } - - try { - - int i ; - gp_Pnt P(loc.x, loc.y, loc.z) ; - gp_Dir D(dir.PS.x, dir.PS.y, dir.PS.z) ; - gp_Ax1 AX1(P, D) ; - - double angle = 360.0/nbtimes ; - gp_Trsf theTransformation ; - TopoDS_Compound compound; - BRep_Builder B; - B.MakeCompound( compound ); - - for ( i = 0; i < nbtimes; i++ ) { - theTransformation.SetRotation(AX1, i*angle*PI180) ; - BRepBuilderAPI_Transform myBRepTransformation(aShape, theTransformation, Standard_False) ; - B.Add( compound, myBRepTransformation.Shape() ); - } - tds = compound ; - result = CreateObject(tds) ; - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakeMultiRotation1D", SALOME::BAD_PARAM); - } - - if( CORBA::is_nil(result) ) { - THROW_SALOME_CORBA_EXCEPTION("MakeMultiRotation1D aborted : null result", SALOME::BAD_PARAM); - } - InsertInLabelOneArgument(aShape, myShape, tds, result, myCurrentOCAFDoc) ; - return result; -} - - -//================================================================================= -// function : MakeMultiRotation2D() -// purpose : Multi-Rotate a 3D shape -//================================================================================= -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeMultiRotation2D( GEOM::GEOM_Shape_ptr myShape, - const GEOM::DirStruct& dir, - const GEOM::PointStruct& loc, - CORBA::Double ang, - CORBA::Short nbtimes1, - CORBA::Double step, - CORBA::Short nbtimes2 ) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result ; - TopoDS_Shape tds ; - TopoDS_Shape aShape = GetTopoShape(myShape) ; - if( aShape.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("MakeMultiRotation2D aborted : null shape", SALOME::BAD_PARAM); - } - - try { - - int i, j ; - double DX, DY, DZ ; - gp_Pnt P(loc.x, loc.y, loc.z) ; - gp_Dir D(dir.PS.x, dir.PS.y, dir.PS.z) ; - gp_Ax1 AX1(P, D) ; - gp_Trsf theTransformation1 ; - gp_Trsf theTransformation2 ; - gp_Pnt P1 ; - GProp_GProps System ; - - if ( aShape.ShapeType() == TopAbs_VERTEX) { - P1 = BRep_Tool::Pnt(TopoDS::Vertex( aShape )); - } - else if ( aShape.ShapeType() == TopAbs_EDGE || aShape.ShapeType() == TopAbs_WIRE ) { - BRepGProp::LinearProperties(aShape, System); - P1 = System.CentreOfMass() ; - } - else if ( aShape.ShapeType() == TopAbs_FACE || aShape.ShapeType() == TopAbs_SHELL ) { - BRepGProp::SurfaceProperties(aShape, System); - P1 = System.CentreOfMass() ; - } - else { - BRepGProp::VolumeProperties(aShape, System); - P1 = System.CentreOfMass() ; - } - - Handle(Geom_Line) Line = new Geom_Line(AX1); - gp_Pnt P2 = GeomAPI_ProjectPointOnCurve( P1, Line ) ; - - if ( P1.IsEqual(P2, Precision::Confusion() ) ) - THROW_SALOME_CORBA_EXCEPTION("Points are confused", SALOME::BAD_PARAM); - - gp_Vec Vec(P1.X()-P2.X(), P1.Y()-P2.Y(), P1.Z()-P2.Z()) ; - Vec.Normalize(); - - gp_Vec myVec ; - TopoDS_Compound compound; - BRep_Builder B; - B.MakeCompound( compound ); - - for ( i = 0; i < nbtimes2; i++ ) { - for ( j = 0; j < nbtimes1; j++ ) { - DX = i * step * Vec.X() ; - DY = i * step * Vec.Y() ; - DZ = i * step * Vec.Z() ; - myVec.SetCoord( DX, DY, DZ ) ; - theTransformation1.SetTranslation(myVec) ; - theTransformation2.SetRotation(AX1, j*ang*PI180) ; - BRepBuilderAPI_Transform myBRepTransformation1(aShape, theTransformation1, Standard_False) ; - BRepBuilderAPI_Transform myBRepTransformation2(myBRepTransformation1.Shape(), theTransformation2, Standard_False) ; - B.Add( compound, myBRepTransformation2.Shape() ); - } - } - tds = compound ; - result = CreateObject(tds) ; - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakeMultiRotation2D", SALOME::BAD_PARAM); - } - - if( CORBA::is_nil(result) ) { - THROW_SALOME_CORBA_EXCEPTION("MakeMultiRotation2D aborted : null result", SALOME::BAD_PARAM); - } - InsertInLabelOneArgument(aShape, myShape, tds, result, myCurrentOCAFDoc) ; - return result; -} - - -//================================================================================= -// function : MakeCopy() -// purpose : Copy a 3D shape -//================================================================================= -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeCopy( GEOM::GEOM_Shape_ptr Shape) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result ; - TopoDS_Shape tds ; - TopoDS_Shape aShape = GetTopoShape(Shape) ; - if(aShape.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("Copy aborted : null shape during operation", SALOME::BAD_PARAM); - } - BRepBuilderAPI_Copy Copy(aShape); - if( Copy.IsDone() ) { - tds = Copy.Shape(); - result = CreateObject(tds); - InsertInLabelOneArgument(aShape, Shape, tds, result, myCurrentOCAFDoc) ; - } - - return result; -} - - -//================================================================================= -// function : MakeMirrorByPlane() -// purpose : build a shape by symmetry of 'myShape' with 'shapePlane' in argument -//================================================================================= -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeMirrorByPlane(GEOM::GEOM_Shape_ptr myShape, - GEOM::GEOM_Shape_ptr shapePlane) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result ; - TopoDS_Shape tds ; - TopoDS_Shape aShape = GetTopoShape(myShape) ; - TopoDS_Shape aShapePlane = GetTopoShape(shapePlane) ; - if( aShape.IsNull() || aShapePlane.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("Mirror aborted : null shape argument", SALOME::BAD_PARAM); - } - - try { - Handle(Geom_Surface) surf = BRep_Tool::Surface(TopoDS::Face(aShapePlane)) ; - Handle(Geom_Plane) myPlane = Handle(Geom_Plane)::DownCast(surf) ; - const gp_Ax3 pos = myPlane->Position() ; - const gp_Pnt loc = pos.Location() ; /* location of the plane */ - const gp_Dir dir = pos.Direction() ; /* Main direction of the plane (Z axis) */ - - /* plane used for mirroring */ - gp_Ax2 pln(loc, dir) ; - gp_Trsf theTransformation ; - theTransformation.SetMirror(pln) ; - BRepBuilderAPI_Transform myBRepTransformation(aShape, theTransformation, Standard_False) ; - - tds = myBRepTransformation.Shape() ; - if(tds.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("Mirror aborted", SALOME::BAD_PARAM); - } - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakeMirrorByPlane", SALOME::BAD_PARAM); - } - - result = CreateObject(tds) ; - - /* Insert arguments in ocaf */ - GEOM::GEOM_Gen::ListOfIOR_var ListShapes = new GEOM::GEOM_Gen::ListOfIOR; - ListShapes->length(2); - ListShapes[0] = GetStringFromIOR(GEOM::GEOM_Shape::_duplicate(myShape)) ; - ListShapes[1] = GetStringFromIOR(GEOM::GEOM_Shape::_duplicate(shapePlane)) ; - InsertInLabelMoreArguments(tds, result, ListShapes, myCurrentOCAFDoc) ; - return result ; -} - - - -//================================================================================= -// function : MakeRotation() -// purpose : Rotation of a 3D shape around an axis -//================================================================================= -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeRotation( GEOM::GEOM_Shape_ptr myShape, - const GEOM::AxisStruct& axis, - CORBA::Double angle) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result ; - TopoDS_Shape tds ; - TopoDS_Shape aShape = GetTopoShape(myShape) ; - if( aShape.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("Rotation aborted : null shape during operation", SALOME::BAD_PARAM); - } - - try { - gp_Pnt P(axis.x, axis.y, axis.z) ; - gp_Dir D(axis.vx, axis.vy, axis.vz) ; - gp_Ax1 AX(P, D) ; - - gp_Trsf theTransformation ; - theTransformation.SetRotation(AX, angle) ; - BRepBuilderAPI_Transform myBRepTransformation(aShape, theTransformation, Standard_False) ; - tds = myBRepTransformation.Shape() ; - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakeRotation", SALOME::BAD_PARAM); - } - - if ( !tds.IsNull() ) { - result = CreateObject(tds) ; - InsertInLabelOneArgument(aShape, myShape, tds, result, myCurrentOCAFDoc) ; - } - return result ; -} - - -//================================================================================= -// function : MakeScaleTransform() -// purpose : Make a shape multipling another by a scale factor -//================================================================================= -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeScaleTransform(GEOM::GEOM_Shape_ptr myShape, - const GEOM::PointStruct& theCenterOfScale, - CORBA::Double factor) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result ; - TopoDS_Shape tds ; - TopoDS_Shape aShape = GetTopoShape(myShape) ; - if( aShape.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("Scale aborted : null shape during operation", SALOME::BAD_PARAM); - } - - try { - gp_Pnt Pcenter(theCenterOfScale.x, theCenterOfScale.y, theCenterOfScale.z) ; - gp_Trsf theTransformation ; - theTransformation.SetScale(Pcenter, factor) ; - BRepBuilderAPI_Transform myBRepTransformation(aShape, theTransformation, Standard_False) ; - tds = myBRepTransformation.Shape() ; - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakeScaleTransform", SALOME::BAD_PARAM); - } - - if ( !tds.IsNull() ) { - result = CreateObject(tds) ; - InsertInLabelOneArgument(aShape, myShape, tds, result, myCurrentOCAFDoc) ; - } - return result ; -} - - -//================================================================================= -// function : MakeCompound() -// purpose : Make a compound from a list containing one or more shapes -//================================================================================= -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeCompound( const GEOM::GEOM_Gen::ListOfIOR& ListShapes ) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result ; - TopoDS_Compound C; - BRep_Builder aBuilder; - aBuilder.MakeCompound(C) ; - - for ( unsigned int i = 0; i < ListShapes.length(); i++) { - GEOM::GEOM_Shape_var aShape = GetIORFromString( ListShapes[i] ); - TopoDS_Shape Shape = GetTopoShape(aShape) ; - if( Shape.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("Compound aborted : null shape during operation", SALOME::BAD_PARAM); - } - aBuilder.Add(C, Shape) ; - } - - if ( C.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("Null result : Compound operation aborted", SALOME::BAD_PARAM); - } - else { - result = CreateObject(C) ; - InsertInLabelMoreArguments(C, result, ListShapes, myCurrentOCAFDoc) ; - } - return result; -} - - -//================================================================================ -// function : MakeEdge() -// purpose : Make a linear edge with 2 points -//================================================================================ -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeEdge(const GEOM::PointStruct& pstruct1, - const GEOM::PointStruct& pstruct2) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result ; - TopoDS_Shape tds ; - - try { - gp_Pnt P1(pstruct1.x, pstruct1.y, pstruct1.z); - gp_Pnt P2(pstruct2.x, pstruct2.y, pstruct2.z) ; - tds = BRepBuilderAPI_MakeEdge(P1, P2).Shape(); - if ( tds.IsNull() ) - THROW_SALOME_CORBA_EXCEPTION("MakeEdge aborted : null result", SALOME::BAD_PARAM); - } - catch (Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in MakeEdge", SALOME::BAD_PARAM); - } - - result = CreateObject(tds) ; - const char *entry = InsertInLabel(tds, result->Name(), myCurrentOCAFDoc) ; - result->ShapeId(entry); - return result ; -} - - - -//================================================================================= -// function : MakeWire() -// purpose : Make a wire from a list containing one or more edges or wires that can -// be connected -//================================================================================= -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeWire( const GEOM::GEOM_Gen::ListOfIOR& ListShapes ) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result ; - BRepBuilderAPI_MakeWire MW ; - TopoDS_Shape tds, Shape ; - - try { - for ( unsigned int i = 0; i < ListShapes.length(); i++) { - GEOM::GEOM_Shape_var aShape = GetIORFromString( ListShapes[i] ); - Shape = GetTopoShape(aShape) ; - if( Shape.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("MakeWire aborted : null shape during operation", SALOME::BAD_PARAM); - } - if( Shape.ShapeType() == TopAbs_EDGE ) - MW.Add( TopoDS::Edge(Shape) ) ; - if (Shape.ShapeType() == TopAbs_WIRE ) - MW.Add( TopoDS::Wire(Shape) ) ; - } - tds = MW ; - - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakeWire", SALOME::BAD_PARAM); - } - - if( tds.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("Make Wire operation aborted : null result", SALOME::BAD_PARAM); - } - else { - result = CreateObject(tds) ; - InsertInLabelMoreArguments(tds, result, ListShapes, myCurrentOCAFDoc) ; - } - return result; -} - - -//================================================================================= -// function : MakeRevolution() -// purpose : -//================================================================================= -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeRevolution(GEOM::GEOM_Shape_ptr myShape, - const GEOM::AxisStruct& axis, - double angle) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result ; - TopoDS_Shape tds ; - TopoDS_Shape aShape = GetTopoShape(myShape) ; - if( aShape.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("Revolution aborted : null shape", SALOME::BAD_PARAM); - } - try { - gp_Pnt P(axis.x, axis.y, axis.z) ; - gp_Dir D(axis.vx, axis.vy, axis.vz); - gp_Ax1 AX(P,D); - tds = BRepPrimAPI_MakeRevol(aShape, AX, angle); - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakeRevolution", SALOME::BAD_PARAM); - } - - if( tds.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("Revolution aborted", SALOME::BAD_PARAM); - } - result = CreateObject(tds) ; - InsertInLabelOneArgument(aShape, myShape, tds, result, myCurrentOCAFDoc) ; - return result ; -} - - -//================================================================================= -// function : MakePipe() -// purpose : Create a shape by sweeping a baseShape along a pathShape -//================================================================================= -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakePipe( GEOM::GEOM_Shape_ptr pathShape, - GEOM::GEOM_Shape_ptr baseShape ) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result ; - TopoDS_Shape tds ; - TopoDS_Wire aWire ; - TopoDS_Shape pathTds = GetTopoShape(pathShape) ; - TopoDS_Shape baseTds = GetTopoShape(baseShape) ; - - if( baseTds.IsNull() || pathTds.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("MakePipe aborted : null shape argument", SALOME::BAD_PARAM); - } - - if( pathTds.ShapeType() == TopAbs_WIRE ) { - aWire = TopoDS::Wire(pathTds) ; - } - else { - if ( pathTds.ShapeType() == TopAbs_EDGE ) { - TopoDS_Edge aEdge = TopoDS::Edge(pathTds) ; - aWire = BRepBuilderAPI_MakeWire(aEdge); - } - else { - THROW_SALOME_CORBA_EXCEPTION("MakePipe aborted : bad shape type", SALOME::BAD_PARAM); - } - } - - try { - tds = BRepOffsetAPI_MakePipe(aWire, baseTds) ; - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakePipe", SALOME::BAD_PARAM); - } - - if ( !IsValid(tds) ) { - THROW_SALOME_CORBA_EXCEPTION("MakePipe aborted : non valid shape result", SALOME::BAD_PARAM); - } - else { - result = CreateObject(tds) ; - - /* Insert arguments in ocaf */ - GEOM::GEOM_Gen::ListOfIOR_var ListShapes = new GEOM::GEOM_Gen::ListOfIOR; - ListShapes->length(2); - ListShapes[0] = GetStringFromIOR(GEOM::GEOM_Shape::_duplicate(pathShape)) ; - ListShapes[1] = GetStringFromIOR(GEOM::GEOM_Shape::_duplicate(baseShape)) ; - InsertInLabelMoreArguments(tds, result, ListShapes, myCurrentOCAFDoc) ; - } - return result ; -} - - -//================================================================================= -// function : MakePrism() -// purpose : uses myShape as base and the vector P1 to P2 -//================================================================================= -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakePrism( GEOM::GEOM_Shape_ptr myShape, - const GEOM::PointStruct& P1, - const GEOM::PointStruct& P2 ) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result ; - TopoDS_Shape tds ; - TopoDS_Shape aShape = GetTopoShape(myShape) ; - if( aShape.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("Prism aborted : null shape operation", SALOME::BAD_PARAM); - } - - try { - gp_Vec Vector (P2.x - P1.x, P2.y - P1.y, P2.z - P1.z) ; - tds = BRepPrimAPI_MakePrism(aShape, Vector, Standard_False).Shape() ; - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakePipe", SALOME::BAD_PARAM); - } - - if ( tds.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("Prism aborted", SALOME::BAD_PARAM); - } - else { - result = CreateObject(tds) ; - InsertInLabelOneArgument(aShape, myShape, tds, result, myCurrentOCAFDoc) ; - } - return result ; -} - - -//================================================================================= -// function : MakeCDG() -// purpose : Create a CDG topology. -//================================================================================= -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeCDG(GEOM::GEOM_Shape_ptr aShape) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result ; - TopoDS_Shape tds ; - TopoDS_Shape shape = GetTopoShape(aShape) ; - GProp_GProps System; - gp_Pnt myCenterMass ; - - if( shape.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("MakeCDG aborted : null shape argument", SALOME::BAD_PARAM); - } - - try { - if ( shape.ShapeType() == TopAbs_VERTEX) { - myCenterMass = BRep_Tool::Pnt(TopoDS::Vertex( shape )); - } - else if ( shape.ShapeType() == TopAbs_EDGE || shape.ShapeType() == TopAbs_WIRE ) { - BRepGProp::LinearProperties(shape, System); - myCenterMass = System.CentreOfMass() ; - } - else if ( shape.ShapeType() == TopAbs_FACE || shape.ShapeType() == TopAbs_SHELL ) { - BRepGProp::SurfaceProperties(shape, System); - myCenterMass = System.CentreOfMass() ; - } - else { - BRepGProp::VolumeProperties(shape, System); - myCenterMass = System.CentreOfMass() ; - } - - tds = BRepBuilderAPI_MakeVertex(myCenterMass).Shape() ; - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakeCDG", SALOME::BAD_PARAM); - } - - if ( tds.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("Make CDG aborted : null shape result", SALOME::BAD_PARAM); - } - else { - result = CreateObject(tds) ; - InsertInLabelOneArgument(shape, aShape, tds, result, myCurrentOCAFDoc) ; - } - return result ; -} - - -//================================================================================= -// function : Archimede() -// purpose : -//================================================================================= -GEOM::GEOM_Shape_ptr GEOM_Gen_i::Archimede(GEOM::GEOM_Shape_ptr aShape, - CORBA::Double aWeight, - CORBA::Double aWaterDensity, - CORBA::Double aMeshingDeflection) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result; - - double cste = -1; - if (aWaterDensity != 0.) - cste = aWeight/aWaterDensity; - else - THROW_SALOME_CORBA_EXCEPTION("Water density is null", SALOME::BAD_PARAM); - - TopoDS_Shape shape = GetTopoShape(aShape) ; - if( shape.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("Shape is null", SALOME::BAD_PARAM); - } - - gp_Dir direct(0.0,0.0,1.0); - gp_Pnt PosPlan(0.0,0.0,0.0); - Geom_Plane PP (PosPlan,direct); - Handle(Geom_Geometry) G = PP.Copy(); - Handle(Geom_Plane) P = Handle(Geom_Plane)::DownCast(G); - - gp_Dir Zdirection(0.0,0.0,1.0); - VolumeSection VOL( shape, aMeshingDeflection); - VOL.SetPlane(P); - Handle (Geom_RectangularTrimmedSurface) SurfaceTrimmee; - - if(Zdirection.IsEqual(direct,Precision::Angular()) == Standard_False) { - VOL.MakeRotation(direct); - } - - VOL.CenterOfGravity(); - SurfaceTrimmee = VOL.TrimSurf(); - Standard_Real Cote = VOL.Archimede( cste, aMeshingDeflection ); - - if ( Cote == -1 ) { - double Zmin,Zmax; - VOL.getZ(Zmin,Zmax); - double volume = VOL.CalculateVolume( Zmax ) * aWaterDensity; - - char msg[100]=""; - sprintf(msg, "shape sinks to the bottom : Weigth max = %.1f", volume); - - THROW_SALOME_CORBA_EXCEPTION(msg, SALOME::BAD_PARAM); - } - - SurfaceTrimmee=VOL.AjustePlan(SurfaceTrimmee,Cote,PosPlan); - if(Zdirection.IsEqual(direct,Precision::Angular()) == Standard_False) { - SurfaceTrimmee=VOL.InvMakeRotation(direct,SurfaceTrimmee); - } - - Standard_Real u1,u2,v1,v2; - SurfaceTrimmee->Bounds(u1,u2,v1,v2); - TopoDS_Face tirant = BRepBuilderAPI_MakeFace(SurfaceTrimmee, u1, u2, v1, v2); - - if (tirant.IsNull()) { - THROW_SALOME_CORBA_EXCEPTION("Result is null", SALOME::BAD_PARAM); - } - - result = CreateObject(tirant); - InsertInLabelOneArgument(shape, aShape, tirant, result, myCurrentOCAFDoc) ; - - return result; -} - - -//================================================================================ -// function : MakeFillet() -// purpose : Create a cylinder topology -//================================================================================ -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeFillet( GEOM::GEOM_Shape_ptr shape, - CORBA::Double radius, - CORBA::Short ShapeType, - const GEOM::GEOM_Shape::ListOfSubShapeID& ListOfID ) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result; - TopoDS_Shape tds ; - - const TopoDS_Shape aShape = GetTopoShape(shape) ; - if( aShape.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("Shape is null", SALOME::BAD_PARAM); - } - - BRepFilletAPI_MakeFillet fill(aShape); - - try { - /* case all */ - if(ListOfID.length() == 0) { - TopExp_Explorer Exp ( aShape, TopAbs_EDGE ); - for (Exp; Exp.More(); Exp.Next()) { - TopoDS_Edge E =TopoDS::Edge(Exp.Current()); - fill.Add(E); - } - for (int i = 1;i<=fill.NbContours();i++) { -#if OCC_VERSION_MAJOR >= 5 - fill.SetRadius(radius,i,i); -#else - fill.SetRadius(radius,i); -#endif - } - tds = fill.Shape(); - - } else { - - /* case selection */ - for ( unsigned int ind = 0; ind < ListOfID.length(); ind++ ) { - TopoDS_Shape ss ; - if( GetShapeFromIndex( aShape, (TopAbs_ShapeEnum)ShapeType, ListOfID[ind], ss ) ) { - TopoDS_Edge E = TopoDS::Edge(ss) ; - fill.Add( E ); - } - } - for (int i = 1;i<=fill.NbContours();i++) { -#if OCC_VERSION_MAJOR >= 5 - fill.SetRadius(radius,i,i); -#else - fill.SetRadius(radius,i); -#endif - } - tds = fill.Shape(); - } - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakeFillet", SALOME::BAD_PARAM); - } - - if (tds.IsNull()) { - THROW_SALOME_CORBA_EXCEPTION("Make Fillet aborted", SALOME::BAD_PARAM); - } - result = CreateObject(tds); - InsertInLabelOneArgument(aShape, shape, tds, result, myCurrentOCAFDoc) ; - - return result ; -} - - -//================================================================================ -// function : MakeChamfer -// purpose : Create a Chamfer topology -//================================================================================ -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeChamfer( GEOM::GEOM_Shape_ptr shape, - CORBA::Double d1, - CORBA::Double d2, - CORBA::Short ShapeType, - const GEOM::GEOM_Shape::ListOfSubShapeID& ListOfID ) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result; - TopoDS_Shape tds ; - - const TopoDS_Shape aShape = GetTopoShape(shape) ; - if( aShape.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("Shape is null", SALOME::BAD_PARAM); - } - - BRepFilletAPI_MakeChamfer MC(aShape); - - try { - /* case all */ - TopTools_IndexedDataMapOfShapeListOfShape M; - TopExp::MapShapesAndAncestors(aShape,TopAbs_EDGE,TopAbs_FACE,M); - if(ListOfID.length() == 0) { - for (int i = 1;i<=M.Extent();i++) { - TopoDS_Edge E = TopoDS::Edge(M.FindKey(i)); - TopoDS_Face F = TopoDS::Face(M.FindFromIndex(i).First()); - if (!BRepTools::IsReallyClosed(E, F) && !BRep_Tool::Degenerated(E)) - MC.Add(d1,d2,E,F); - } - tds = MC.Shape(); - - } else { - - /* case selection */ - for ( unsigned int ind = 0; ind < ListOfID.length(); ind++ ) { - TopoDS_Shape ss ; - if( GetShapeFromIndex( aShape, (TopAbs_ShapeEnum)ShapeType, ListOfID[ind], ss ) ) { - TopoDS_Edge E = TopoDS::Edge( ss ) ; - TopoDS_Face F = TopoDS::Face(M.FindFromKey(E).First()); - if (!BRepTools::IsReallyClosed(E, F) && !BRep_Tool::Degenerated(E)) - MC.Add(d1,d2,E,F); - } - } - tds = MC.Shape(); - } - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakeChamfer", SALOME::BAD_PARAM); - } - - if (tds.IsNull()) { - THROW_SALOME_CORBA_EXCEPTION("Make Chamfer aborted", SALOME::BAD_PARAM); - } - result = CreateObject(tds); - InsertInLabelOneArgument(aShape, shape, tds, result, myCurrentOCAFDoc) ; - - return result ; -} - -//================================================================================= -// function : CheckShape() -// purpose : -//================================================================================= -CORBA::Boolean GEOM_Gen_i::CheckShape(GEOM::GEOM_Shape_ptr shape) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - TopoDS_Shape S = GetTopoShape(shape) ; - if( S.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("Shape is null", SALOME::BAD_PARAM); - } - - BRepCheck_Analyzer ana(S,false); - if (ana.IsValid()) - return 1; - - return 0; -} - -//================================================================================= -// function : MakePlacedBox() -// purpose : -//================================================================================= -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakePlacedBox(CORBA::Double x1, CORBA::Double y1, CORBA::Double z1, - CORBA::Double delta1, CORBA::Double delta2, CORBA::Double delta3) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result ; - TopoDS_Shape tds ; - - CORBA::Double x2, y2, z2 ; - - try { - x2 = x1 + delta1 ; - y2 = y1 + delta2 ; - z2 = z1 + delta3 ; - - gp_Pnt P1(x1,y1,z1); - gp_Pnt P2(x2,y2,z2); - - tds = BRepPrimAPI_MakeBox(P1,P2).Shape(); - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakeBox", SALOME::BAD_PARAM); - } - - if (tds.IsNull()) { - THROW_SALOME_CORBA_EXCEPTION("Make Box aborted : null shape", SALOME::BAD_PARAM); - } - - result = CreateObject(tds); - const char *entry = InsertInLabel(tds, result->Name(), myCurrentOCAFDoc) ; - result->ShapeId(entry) ; - - return result; -} - -//================================================================================= -// function : MakePanel() -// purpose : -//================================================================================= -GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakePanel(GEOM::GEOM_Shape_ptr shape, - CORBA::Short directiontype, - CORBA::Double delta) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - GEOM::GEOM_Shape_var result ; - TopoDS_Shape tds ; - TopoDS_Shape aShape = GetTopoShape(shape) ; - Bnd_Box B ; - Standard_Real axmin,aymin,azmin,axmax,aymax,azmax ; - GEOM::PointStruct pstruct1, pstruct2, pstruct3, pstruct4 ; - - if(aShape.IsNull() ) { - THROW_SALOME_CORBA_EXCEPTION("MakePanel aborted : null shape during operation", SALOME::BAD_PARAM); - } - - try { - BRepBndLib::Add(aShape,B); - B.Enlarge(10.); - B.Get(axmin,aymin,azmin,axmax,aymax,azmax); - - switch (directiontype) - { - case 1 : /* X */ - pstruct1 = MakePointStruct( delta, aymin, azmin ) ; - pstruct2 = MakePointStruct( delta, aymin, azmax ) ; - pstruct3 = MakePointStruct( delta, aymax, azmax ) ; - pstruct4 = MakePointStruct( delta, aymax, azmin ) ; - break ; - case 2 : /* Y */ - pstruct1 = MakePointStruct( axmin, delta, azmin ) ; - pstruct2 = MakePointStruct( axmin, delta, azmax ) ; - pstruct3 = MakePointStruct( axmax, delta, azmax ) ; - pstruct4 = MakePointStruct( axmax, delta, azmin ) ; - break ; - case 3 : /* Z */ - pstruct1 = MakePointStruct( axmin, aymin, delta ) ; - pstruct2 = MakePointStruct( axmin, aymax, delta ) ; - pstruct3 = MakePointStruct( axmax, aymax, delta ) ; - pstruct4 = MakePointStruct( axmax, aymin, delta ) ; - break ; - default : - return result ; - } - - GEOM::GEOM_Shape_ptr Edge1 = MakeEdge(pstruct1, pstruct2); - GEOM::GEOM_Shape_ptr Edge2 = MakeEdge(pstruct2, pstruct3); - GEOM::GEOM_Shape_ptr Edge3 = MakeEdge(pstruct3, pstruct4); - GEOM::GEOM_Shape_ptr Edge4 = MakeEdge(pstruct4, pstruct1); - - GEOM::GEOM_Gen::ListOfIOR_var aList = new GEOM::GEOM_Gen::ListOfIOR; - aList->length(4); - aList[0]=CORBA::string_dup(Edge1->Name()); - aList[1]=CORBA::string_dup(Edge2->Name()); - aList[2]=CORBA::string_dup(Edge3->Name()); - aList[3]=CORBA::string_dup(Edge4->Name()); - - GEOM::GEOM_Shape_ptr aWire = MakeWire( aList ); - GEOM::GEOM_Shape_ptr aFace = MakeFace( aWire, true ) ; - tds = GetTopoShape(aFace); - - } - catch(Standard_Failure) { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakePanel", SALOME::BAD_PARAM); - } - - if (tds.IsNull()) { - THROW_SALOME_CORBA_EXCEPTION("Make PanelsPartition aborted : null shape", SALOME::BAD_PARAM); - } - - result = CreateObject(tds); - const char *entry = InsertInLabel(tds, result->Name(), myCurrentOCAFDoc) ; - result->ShapeId(entry) ; - - return result; -} - - -void GEOM_Gen_i::ExportIGES(const char* filename,GEOM::GEOM_Shape_ptr theShape) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - if (theShape->_is_nil()) - { - THROW_SALOME_CORBA_EXCEPTION("Export IGES aborted", SALOME::BAD_PARAM); - } - TopoDS_Shape tds = GetTopoShape(theShape); - if (tds.IsNull()) - { - THROW_SALOME_CORBA_EXCEPTION("Export IGES aborted", SALOME::BAD_PARAM); - } - try - { - //VRV: OCC 4.0 migration - IGESControl_Controller::Init(); - IGESControl_Writer ICW (Interface_Static::CVal("XSTEP.iges.unit"), - Interface_Static::IVal("XSTEP.iges.writebrep.mode")); - //VRV: OCC 4.0 migration - - ICW.AddShape (tds); - ICW.ComputeModel(); - char * aname = strdup(filename); - Standard_Boolean result = ICW.Write( aname ); - free(aname); - } - catch(Standard_Failure) - { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::ExportIGES", SALOME::BAD_PARAM); - } -} - -void GEOM_Gen_i::ExportBREP(const char* filename,GEOM::GEOM_Shape_ptr theShape) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - if (theShape->_is_nil()) - { - THROW_SALOME_CORBA_EXCEPTION("Export BRep aborted", SALOME::BAD_PARAM); - } - TopoDS_Shape tds = GetTopoShape(theShape); - if (tds.IsNull()) - { - THROW_SALOME_CORBA_EXCEPTION("Export BRep aborted", SALOME::BAD_PARAM); - } - try - { - char * aname = strdup(filename); - Standard_Boolean result = BRepTools::Write(tds,aname); - free(aname); - } - catch(Standard_Failure) - { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::ExportBREP", SALOME::BAD_PARAM); - } -} - -void GEOM_Gen_i::ExportSTEP(const char* filename,GEOM::GEOM_Shape_ptr theShape) - throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - if (theShape->_is_nil()) - { - THROW_SALOME_CORBA_EXCEPTION("Export STEP aborted", SALOME::BAD_PARAM); - } - TopoDS_Shape tds = GetTopoShape(theShape); - if (tds.IsNull()) - { - THROW_SALOME_CORBA_EXCEPTION("Export STEP aborted", SALOME::BAD_PARAM); - } - try - { - IFSelect_ReturnStatus status ; - //VRV: OCC 4.0 migration - STEPControl_Writer aWriter; - status = aWriter.Transfer( tds, STEPControl_ManifoldSolidBrep ) ; - //VRV: OCC 4.0 migration - if ( status == IFSelect_RetDone ) - { - char * aname = strdup(filename); - status = aWriter.Write( aname ) ; - free(aname); - } - } - catch(Standard_Failure) - { - THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::ExportBREP", SALOME::BAD_PARAM); - } -} - - -//===================================================================================== -// EXPORTED METHODS -//===================================================================================== -extern "C" -{ - PortableServer::ObjectId * GEOMEngine_factory(CORBA::ORB_ptr orb, - PortableServer::POA_ptr poa, - PortableServer::ObjectId * contId, - const char *instanceName, - const char * interfaceName) - { - GEOM_Gen_i * myGEOM_Gen_i = new GEOM_Gen_i(orb, poa, contId, instanceName, interfaceName); - myGEOM_Gen_i->register_name("/myGEOM_Gen"); // NRI : 11/07/2002 : Add for Supervision example - return myGEOM_Gen_i->getId() ; - } -} - diff --git a/src/GEOM/GEOM_IOperations.cxx b/src/GEOM/GEOM_IOperations.cxx deleted file mode 100644 index 397e358e7..000000000 --- a/src/GEOM/GEOM_IOperations.cxx +++ /dev/null @@ -1,84 +0,0 @@ -#include - -#include - -#include "utilities.h" -#include -#include - -#include -#include -#include - -//============================================================================= -/*! - * default constructor: - */ -//============================================================================= - -GEOM_IOperations::GEOM_IOperations(GEOM_Engine* theEngine, int theDocID) -: _engine(theEngine), _docID(theDocID) -{ - _solver = new GEOM_Solver(theEngine); -} - -//============================================================================= -/*! - * destructor - */ -//============================================================================= - -GEOM_IOperations::~GEOM_IOperations() -{ - delete _solver; - MESSAGE("GEOM_IOperations::~GEOM_IOperations"); -} - - -//============================================================================= -/*! - * StartOperation - */ -//============================================================================= -void GEOM_IOperations::StartOperation() -{ - Handle(TDocStd_Document) aDoc = _engine->GetDocument(_docID); - if(aDoc->GetUndoLimit() > 0) - aDoc->NewCommand(); -} - - //============================================================================= - /*! - * FinishOperation - */ -//============================================================================= -void GEOM_IOperations::FinishOperation() -{ - Handle(TDocStd_Document) aDoc = _engine->GetDocument(_docID); - if(aDoc->GetUndoLimit() > 0) - aDoc->CommitCommand(); -} - -//============================================================================= -/*! - * AbortOperation - */ -//============================================================================= -void GEOM_IOperations::AbortOperation() -{ - Handle(TDocStd_Document) aDoc = _engine->GetDocument(_docID); - aDoc->AbortCommand(); -} - - -//============================================================================= -/*! - * IsDone - */ -//============================================================================= -bool GEOM_IOperations::IsDone() -{ - return (_errorCode == OK); -} - - diff --git a/src/GEOM/GEOM_IOperations.hxx b/src/GEOM/GEOM_IOperations.hxx deleted file mode 100644 index 809cd6a85..000000000 --- a/src/GEOM/GEOM_IOperations.hxx +++ /dev/null @@ -1,66 +0,0 @@ - -#ifndef _GEOM_IOperations_HXX_ -#define _GEOM_IOperations_HXX_ - -#include "GEOM_Engine.hxx" -#include -#include -#include "GEOM_Object.hxx" -#include "GEOM_Solver.hxx" - -#define OK "PAL_NO_ERROR" -#define KO "PAL_NOT_DONE_ERROR" -#define ALREADY_PRESENT "PAL_ELEMENT_ALREADY_PRESENT" -#define NOT_EXISTS "PAL_ELEMENT_DOES_NOT_EXISTS" -#define INVALID_TYPE "INVALID_TYPE_OF_ELEMENT" - -class GEOM_IOperations -{ - public: - Standard_EXPORT GEOM_IOperations(GEOM_Engine* theEngine, int theDocID); - Standard_EXPORT ~GEOM_IOperations(); - - //Starts a new operation (opens a tansaction) - Standard_EXPORT void StartOperation(); - - //Finishes the previously started operation (closes the transaction) - Standard_EXPORT void FinishOperation(); - - //Aborts the operation - Standard_EXPORT void AbortOperation(); - - //Returns true if the last operation succided - Standard_EXPORT bool IsDone(); - - //Sets Not done error code - Standard_EXPORT void SetNotDone() { _errorCode = KO; } - - //Sets an error code of the operation - Standard_EXPORT void SetErrorCode(const TCollection_AsciiString& theErrorCode) { - _errorCode = theErrorCode; - } - - //Returns an error code of the last operatioin - Standard_EXPORT char* GetErrorCode() { - return _errorCode.ToCString(); - } - - //Returns a pointer to GEOM_Engine which this operation interface is associated - Standard_EXPORT GEOM_Engine* GetEngine() { return _engine; } - - //Return a pointer to Solver associated with this operation interface - Standard_EXPORT GEOM_Solver* GetSolver() { return _solver; } - - //Returns an ID of the OCAF document where this operation stores the data - Standard_EXPORT int GetDocID() { return _docID; } - - private: - - TCollection_AsciiString _errorCode; - GEOM_Engine* _engine; - GEOM_Solver* _solver; - int _docID; - -}; - -#endif diff --git a/src/GEOM/GEOM_ISubShape.hxx b/src/GEOM/GEOM_ISubShape.hxx deleted file mode 100644 index 7ddf8919c..000000000 --- a/src/GEOM/GEOM_ISubShape.hxx +++ /dev/null @@ -1,34 +0,0 @@ -// NOTE: This is an intreface to a function for the Shapes -// (Wire, Face, Shell, Solid and Compound) creation. - - -#include "GEOM_Function.hxx" - -#include "TColStd_HSequenceOfTransient.hxx" -#include "TColStd_HArray1OfInteger.hxx" - -#define SHAPE_ARG_MAIN_SHAPE 1 -#define SHAPE_ARG_INDICES 2 -#define SHAPE_ARG_SORTED 3 - -class GEOM_ISubShape -{ - public: - - GEOM_ISubShape(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetMainShape(Handle(GEOM_Function) theRefBase) - { _func->SetReference(SHAPE_ARG_MAIN_SHAPE, theRefBase); } - - Handle(GEOM_Function) GetMainShape() { return _func->GetReference(SHAPE_ARG_MAIN_SHAPE); } - - void SetIndices(const Handle(TColStd_HArray1OfInteger)& theIndices) - { _func->SetIntegerArray(SHAPE_ARG_INDICES, theIndices); } - - Handle(TColStd_HArray1OfInteger) GetIndices() - { return _func->GetIntegerArray(SHAPE_ARG_INDICES); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOM/GEOM_Object.cxx b/src/GEOM/GEOM_Object.cxx deleted file mode 100644 index 46a0298bc..000000000 --- a/src/GEOM/GEOM_Object.cxx +++ /dev/null @@ -1,406 +0,0 @@ -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define TYPE 2 -#define FUNCTION_LABEL(theNb) (_label.FindChild(1).FindChild((theNb))) -#define FREE_LABEL 3 - -//======================================================================= -//function : GetObjectID -//purpose : -//======================================================================= -const Standard_GUID& GEOM_Object::GetObjectID() -{ - static Standard_GUID anObjectID("FF1BBB01-5D14-4df2-980B-3A668264EA16"); - return anObjectID; -} - -//======================================================================= -//function : GetSubShapeID -//purpose : -//======================================================================= -const Standard_GUID& GEOM_Object::GetSubShapeID() -{ - static Standard_GUID anObjectID("FF1BBB68-5D14-4df2-980B-3A668264EA16"); - return anObjectID; -} - -//============================================================================= -/*! - * GetObject - */ -//============================================================================= -Handle(GEOM_Object) GEOM_Object::GetObject(TDF_Label& theLabel) -{ - if (!theLabel.IsAttribute(GetObjectID())) return NULL; - - TCollection_AsciiString anEntry; - TDF_Tool::Entry(theLabel, anEntry); - - Handle(TDocStd_Document) aDoc = TDocStd_Owner::GetDocument(theLabel.Data()); - if(aDoc.IsNull()) return NULL; - - Handle(TDataStd_Integer) anID; - if(!aDoc->Main().FindAttribute(TDataStd_Integer::GetID(), anID)) return NULL; - - - GEOM_Engine* anEngine= GEOM_Engine::GetEngine(); - if(anEngine == NULL) return NULL; - return anEngine->GetObject(anID->Get(), anEntry.ToCString()); -} - -//============================================================================= -/*! - * GetReferencedObject - */ -//============================================================================= -Handle(GEOM_Object) GEOM_Object::GetReferencedObject(TDF_Label& theLabel) -{ - Handle(TDF_Reference) aRef; - if (!theLabel.FindAttribute(TDF_Reference::GetID(), aRef)) return NULL; - - // Get TreeNode of a referenced function - Handle(TDataStd_TreeNode) aT, aFather; - if (!TDataStd_TreeNode::Find(aRef->Get(), aT)) return NULL; - - // Get TreeNode of Object of the referenced function - aFather = aT->Father(); - if (aFather.IsNull()) return NULL; - - // Get label of the referenced object - TDF_Label aLabel = aFather->Label(); - - - return GEOM_Object::GetObject(aLabel); -} - -//============================================================================= -/*! - * Constructor: private - */ -//============================================================================= -GEOM_Object::GEOM_Object(TDF_Label& theEntry) -: _label(theEntry), _ior("") -{ - if(!theEntry.FindAttribute(TDataStd_TreeNode::GetDefaultTreeID(), _root)) - _root = TDataStd_TreeNode::Set(theEntry); -} - -//============================================================================= -/*! - * Constructor: public - */ -//============================================================================= -GEOM_Object::GEOM_Object(TDF_Label& theEntry, int theType) -: _label(theEntry), _ior("") -{ - theEntry.ForgetAllAttributes(Standard_True); - - if(!theEntry.FindAttribute(TDataStd_TreeNode::GetDefaultTreeID(), _root)) - _root = TDataStd_TreeNode::Set(theEntry); - - TDataStd_Integer::Set(theEntry.FindChild(TYPE), theType); - - TDataStd_UAttribute::Set(theEntry, GetObjectID()); -} - -//============================================================================= -/*! - * GetType - */ -//============================================================================= -int GEOM_Object::GetType() -{ - Handle(TDataStd_Integer) aType; - if(!_label.FindChild(TYPE).FindAttribute(TDataStd_Integer::GetID(), aType)) return -1; - - return aType->Get(); -} - -//============================================================================= -/*! - * SetType - */ -//============================================================================= -void GEOM_Object::SetType(int theType) -{ - TDataStd_Integer::Set(_label.FindChild(TYPE), theType); - return; -} - - -//============================================================================= -/*! - * GetDocID - */ -//============================================================================= -int GEOM_Object::GetDocID() -{ - Handle(TDocStd_Document) aDoc = TDocStd_Owner::GetDocument(_label.Data()); - if(aDoc.IsNull()) return -1; - - Handle(TDataStd_Integer) anID; - if(!aDoc->Main().FindAttribute(TDataStd_Integer::GetID(), anID)) return -1; - - return anID->Get(); -} - - -//============================================================================= -/*! - * GetValue - */ -//============================================================================= -TopoDS_Shape GEOM_Object::GetValue() -{ - TopoDS_Shape aShape; - - Handle(GEOM_Function) aFunction = GetLastFunction(); - - if (!aFunction.IsNull()) - aShape = aFunction->GetValue(); - - return aShape; -} - -//============================================================================= -/*! - * SetName - */ -//============================================================================= -void GEOM_Object::SetName(const char* theName) -{ - TDataStd_Name::Set(_label, (char*)theName); -} - -//============================================================================= -/*! - * GetName - */ -//============================================================================= -char* GEOM_Object::GetName() -{ - Handle(TDataStd_Name) aNameAttr; - if(!_label.FindAttribute(TDataStd_Name::GetID(), aNameAttr)) return NULL; - - TCollection_AsciiString aName(aNameAttr->Get()); - return aName.ToCString(); -} - -//============================================================================= -/*! - * SetAuxData - */ -//============================================================================= -void GEOM_Object::SetAuxData(const char* theData) -{ - TDataStd_Comment::Set(_label, (char*)theData); -} - -//============================================================================= -/*! - * GetAuxData - */ -//============================================================================= -TCollection_AsciiString GEOM_Object::GetAuxData() -{ - TCollection_AsciiString aData; - - Handle(TDataStd_Comment) aCommentAttr; - if (_label.FindAttribute(TDataStd_Comment::GetID(), aCommentAttr)) - aData = aCommentAttr->Get(); - - return aData; -} - - -//============================================================================= -/*! - * IsSubShape - */ -//============================================================================= -bool GEOM_Object::IsMainShape() -{ - Handle(GEOM_Function) aFunction = GetFunction(1); - if(aFunction == NULL || aFunction->GetDriverGUID() != GetSubShapeID()) return true; - return false; -} - - -//============================================================================= -/*! - * AddFunction - */ -//============================================================================= -Handle(GEOM_Function) GEOM_Object::AddFunction(const Standard_GUID& theGUID, int theFunctionType) -{ - Standard_Integer nb = GetNbFunctions(); - if(nb == 1 && theGUID == GetSubShapeID()) return NULL; //It's impossible to add a function to sub shape - nb++; - TDF_Label aChild = FUNCTION_LABEL(nb); - - Handle(TDataStd_TreeNode) aNode = TDataStd_TreeNode::Set(aChild); - _root->Append(aNode); - - Handle(GEOM_Function) aFunction = new GEOM_Function(aChild, theGUID, theFunctionType); - - return aFunction; - -} - -//============================================================================= -/*! - * GetNbFunctions - */ -//============================================================================= -int GEOM_Object::GetNbFunctions() -{ - Standard_Integer nb = 0; - for(TDataStd_ChildNodeIterator CI(_root); CI.More(); CI.Next()) nb++; - return nb; -} - -//============================================================================= -/*! - * GetFunction - */ -//============================================================================= -Handle(GEOM_Function) GEOM_Object::GetFunction(int theFunctionNumber) -{ - TDF_Label aChild = FUNCTION_LABEL(theFunctionNumber); - return GEOM_Function::GetFunction(aChild); -} - -//============================================================================= -/*! - * GetlastFunction - */ -//============================================================================= -Handle(GEOM_Function) GEOM_Object::GetLastFunction() -{ - Standard_Integer nb = GetNbFunctions(); - if(nb) return GetFunction(nb); - - return NULL; -} - - -//============================================================================= -/*! - * GetAllDependency - */ -//============================================================================= -Handle(TColStd_HSequenceOfTransient) GEOM_Object::GetAllDependency() -{ - Handle(TColStd_HSequenceOfTransient) anArray; - TDF_LabelSequence aSeq; - Standard_Integer nb = GetNbFunctions(); - if(nb == 0) return anArray; - for(Standard_Integer i=1; i<=nb; i++) { - Handle(GEOM_Function) aFunction = GetFunction(i); - if(aFunction.IsNull()) continue; - aFunction->GetDependency(aSeq); - } - - Standard_Integer aLength = aSeq.Length(); - if(aLength > 0) { - anArray = new TColStd_HSequenceOfTransient; - for(Standard_Integer j =1; j<=aLength; j++) - anArray->Append(GetReferencedObject(aSeq(j))); - } - - return anArray; -} - -//============================================================================= -/*! - * GetLastDependency - */ -//============================================================================= -Handle(TColStd_HSequenceOfTransient) GEOM_Object::GetLastDependency() -{ - Handle(TColStd_HSequenceOfTransient) anArray; - Handle(GEOM_Function) aFunction = GetLastFunction(); - if (aFunction.IsNull()) return anArray; - - TDF_LabelSequence aSeq; - aFunction->GetDependency(aSeq); - Standard_Integer aLength = aSeq.Length(); - if (aLength > 0) { - anArray = new TColStd_HSequenceOfTransient; - for (Standard_Integer i = 1; i <= aLength; i++) - anArray->Append(GetReferencedObject(aSeq(i))); - } - - return anArray; -} - -//============================================================================= -/*! - * GetFreeLabel - */ -//============================================================================= -TDF_Label GEOM_Object::GetFreeLabel() -{ - return _label.FindChild(FREE_LABEL); -} - -//======================================================================= -//function : GEOM_Object_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOM_Object_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(MMgt_TShared); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType2 = STANDARD_TYPE(Standard_Transient); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOM_Object", - sizeof(GEOM_Object), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= - -const Handle(GEOM_Object) Handle(GEOM_Object)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOM_Object) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOM_Object))) { - _anOtherObject = Handle(GEOM_Object)((Handle(GEOM_Object)&)AnObject); - } - } - - return _anOtherObject ; -} - - diff --git a/src/GEOM/GEOM_Object.hxx b/src/GEOM/GEOM_Object.hxx deleted file mode 100644 index 00d5354a4..000000000 --- a/src/GEOM/GEOM_Object.hxx +++ /dev/null @@ -1,237 +0,0 @@ -#ifndef _GEOM_Object_HeaderFile -#define _GEOM_Object_HeaderFile - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_MMgt_TShared_HeaderFile -#include -#endif -#ifndef _MMgt_TShared_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _TDF_Label_HeaderFile -#include -#endif -#ifndef _TColStd_HSequenceOfTransient_HeaderFile -#include -#endif -#ifndef _TCollection_AsciiString_HeaderFile -#include -#endif - -class Handle_TColStd_HSequenceOfTransient; -class Standard_Transient; -class Handle_Standard_Type; -class Handle(MMgt_TShared); -class GEOM_Object; - - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOM_Object); - -class Handle(GEOM_Object) : public Handle(MMgt_TShared) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOM_Object)():Handle(MMgt_TShared)() {} - Handle(GEOM_Object)(const Handle(GEOM_Object)& aHandle) : Handle(MMgt_TShared)(aHandle) - { - } - - Handle(GEOM_Object)(const GEOM_Object* anItem) : Handle(MMgt_TShared)((MMgt_TShared *)anItem) - { - } - - Handle(GEOM_Object)& operator=(const Handle(GEOM_Object)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOM_Object)& operator=(const GEOM_Object* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOM_Object* operator->() - { - return (GEOM_Object *)ControlAccess(); - } - - GEOM_Object* operator->() const - { - return (GEOM_Object *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOM_Object)() {}; - - Standard_EXPORT static const Handle(GEOM_Object) DownCast(const Handle(Standard_Transient)& AnObject); -}; - - - -#include -#include -#include "GEOM_Function.hxx" -#include "GEOM_Engine.hxx" - - -class GEOM_Object : public MMgt_TShared -{ - friend class GEOM_Engine; - - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& GEOM_Object_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOM_Object) ; } - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOM_Object) == AType || MMgt_TShared::IsKind(AType)); } - - private: - GEOM_Object(TDF_Label& theLabel); - - public: - Standard_EXPORT GEOM_Object(TDF_Label& theEntry, int theType); - Standard_EXPORT ~GEOM_Object() {;} - - //Finds a GEOM_Object on the label theLabel - Standard_EXPORT static Handle(GEOM_Object) GetObject(TDF_Label& theLabel); - - //Finds a GEOM_Object by a reference, stored on the label theLabel - Standard_EXPORT static Handle(GEOM_Object) GetReferencedObject(TDF_Label& theLabel); - - //Returns a GEOM_Object common GUID - Standard_EXPORT static const Standard_GUID& GetObjectID(); - - //Returns a GUID associated with a sub shape object - Standard_EXPORT static const Standard_GUID& GetSubShapeID(); - - //########################################################### - //Access to properties - //########################################################### - - //Returns a TreeNode that presents a root of a function tree for this GEOM_Object - Standard_EXPORT Handle(TDataStd_TreeNode) GetRootNode() { return _root; } - - //Returns a label of this GEOM_Object - Standard_EXPORT TDF_Label GetEntry() { return _label; } - - //Returns a type of this GEOM_Object (GEOM_POINT, GEOM_VECTOR...) - Standard_EXPORT int GetType(); - - //Sets the type of this GEOM_Object - Standard_EXPORT void SetType(int theType); - - //Returns an ID of the OCAF document where this GEOM_Object is stored - Standard_EXPORT int GetDocID(); - - //Returns a value (as TopoDS_Shape) of this GEOM_Object - Standard_EXPORT TopoDS_Shape GetValue(); - - //Sets a name of this GEOM_Object - Standard_EXPORT void SetName(const char* theName); - - //Returns a name of this GEOM_Object - Standard_EXPORT char* GetName(); - - //Sets an auxiliary data - Standard_EXPORT void SetAuxData(const char* theData); - - //Returns an auxiliary data - Standard_EXPORT TCollection_AsciiString GetAuxData(); - - //########################################################### - // Sub shape methods - //########################################################### - - //Returns false if the object is a sub shape of another object - Standard_EXPORT bool IsMainShape(); - - //########################################################### - // CORBA related methods - //########################################################### - - //Sets an IOR of CORBA GEOM_Object_i which refers to this object - Standard_EXPORT void SetIOR(TCollection_AsciiString& theIOR) { _ior = theIOR; } - - //Returns an IOR of CORBA GEOM_Object_i which refers to this object - Standard_EXPORT TCollection_AsciiString GetIOR() { return _ior; } - - //########################################################### - //Functions methods - //########################################################### - - //Adds a function with a driver GUID = theGUID and a type theFunctionType to the function tree of this GEOM_Object - Standard_EXPORT Handle(GEOM_Function) AddFunction(const Standard_GUID& theGUID, int theFunctionType); - - //Returns a number of functions of this GEOM_Object - Standard_EXPORT int GetNbFunctions(); - - //Returns a function with given number theFunctionNumber - Standard_EXPORT Handle(GEOM_Function) GetFunction(int theFunctionNumber); - - //Return the last function of this GEOM_Object - Standard_EXPORT Handle(GEOM_Function) GetLastFunction(); - - //Returns all dependencies of the object - Standard_EXPORT Handle(TColStd_HSequenceOfTransient) GetAllDependency(); - - //Returns the dependencies of the last function - Standard_EXPORT Handle(TColStd_HSequenceOfTransient) GetLastDependency(); - - //########################################################### - // Internal methods - //########################################################### - - //Returns a label which could be used to store some additional data - Standard_EXPORT TDF_Label GetFreeLabel(); - - - private: - - Handle(TDataStd_TreeNode) _root; - TDF_Label _label; - TCollection_AsciiString _ior; -}; - -#endif diff --git a/src/GEOM/GEOM_PythonDump.cxx b/src/GEOM/GEOM_PythonDump.cxx deleted file mode 100644 index ee18fca2a..000000000 --- a/src/GEOM/GEOM_PythonDump.cxx +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org - -#include "GEOM_PythonDump.hxx" - -#include - -namespace GEOM -{ - size_t TPythonDump::myCounter = 0; - - TPythonDump::TPythonDump (Handle(GEOM_Function)& theFunction) - { - myFunction = theFunction; - myCounter++; - } - - TPythonDump::~TPythonDump() - { - if (--myCounter == 0) { - myFunction->SetDescription((char *)myStream.str().c_str()); - } - } - -// TPythonDump::operator TCollection_AsciiString () const -// { -// if (myCounter == 1) { -// return TCollection_AsciiString ((char *)myStream.str().c_str()); -// } -// return TCollection_AsciiString (); -// } - - TPythonDump& TPythonDump::operator<< (long int theArg) - { - myStream<GetEntry(), anEntry); - myStream << anEntry.ToCString(); - return *this; - } -} diff --git a/src/GEOM/GEOM_PythonDump.hxx b/src/GEOM/GEOM_PythonDump.hxx deleted file mode 100644 index 2bac138ab..000000000 --- a/src/GEOM/GEOM_PythonDump.hxx +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org - -#ifndef _GEOM_PYTHONDUMP_HXX_ -#define _GEOM_PYTHONDUMP_HXX_ - -#include - -#include "GEOM_Object.hxx" -#include "GEOM_Function.hxx" - -#include - -namespace GEOM -{ - class TPythonDump - { - std::ostringstream myStream; - static size_t myCounter; - - Handle(GEOM_Function) myFunction; - - public: - Standard_EXPORT TPythonDump (Handle(GEOM_Function)& theFunction); - Standard_EXPORT virtual ~TPythonDump(); - -// operator TCollection_AsciiString () const; - - Standard_EXPORT TPythonDump& operator<< (long int theArg); - Standard_EXPORT TPythonDump& operator<< (int theArg); - Standard_EXPORT TPythonDump& operator<< (double theArg); - Standard_EXPORT TPythonDump& operator<< (float theArg); - Standard_EXPORT TPythonDump& operator<< (const void* theArg); - Standard_EXPORT TPythonDump& operator<< (const char* theArg); - Standard_EXPORT TPythonDump& operator<< (const Handle(GEOM_Object)& theObject); - }; -} - -#endif diff --git a/src/GEOM/GEOM_Solver.cxx b/src/GEOM/GEOM_Solver.cxx deleted file mode 100644 index bdecce3cd..000000000 --- a/src/GEOM/GEOM_Solver.cxx +++ /dev/null @@ -1,50 +0,0 @@ - -#include "GEOM_Solver.hxx" -#include -#include -#include -#include -#include -#include "GEOM_Function.hxx" -#include - -//============================================================================= -/*! - * Update - */ -//============================================================================= -bool GEOM_Solver::Update(int theDocID, TDF_LabelSequence& theSeq) -{ - return false; -} - -//============================================================================= -/*! - * UpdateObject - */ -//============================================================================= -bool GEOM_Solver::UpdateObject(Handle(GEOM_Object) theObject, TDF_LabelSequence& theSeq) -{ - return false; -} - -//============================================================================= -/*! - * ComputeFunction - */ -//============================================================================= -bool GEOM_Solver::ComputeFunction(Handle(GEOM_Function) theFunction) -{ - if(theFunction == NULL) return false; - Standard_GUID aGUID = theFunction->GetDriverGUID(); - - Handle(TFunction_Driver) aDriver; - if(!TFunction_DriverTable::Get()->FindDriver(aGUID, aDriver)) return false; - - aDriver->Init(theFunction->GetEntry()); - - TFunction_Logbook aLog; - if(aDriver->Execute(aLog) == 0) return false; - - return true; -} diff --git a/src/GEOM/GEOM_Solver.hxx b/src/GEOM/GEOM_Solver.hxx deleted file mode 100644 index b84d46989..000000000 --- a/src/GEOM/GEOM_Solver.hxx +++ /dev/null @@ -1,34 +0,0 @@ - -#ifndef _GEOM_Solver_HXX_ -#define _GEOM_Solver_HXX_ - -#include "GEOM_Engine.hxx" -#include "GEOM_Object.hxx" -#include "GEOM_Function.hxx" - -#include - -class GEOM_Solver -{ - public: - Standard_EXPORT GEOM_Solver(GEOM_Engine* theEngine) :_engine(theEngine) {} - Standard_EXPORT ~GEOM_Solver() {} - - //Update the values of all GEOM_Object in the document theDocID, theSeq will contain a list of touched labels - //Note: not Implemented - Standard_EXPORT bool Update(int theDocID, TDF_LabelSequence& theSeq); - - //Updates a value of theObject, theSeq will contain a list of touched labels - //Note: not implemented - Standard_EXPORT bool UpdateObject(Handle(GEOM_Object) theObject, TDF_LabelSequence& theSeq); - - //Recomputes a function - Standard_EXPORT bool ComputeFunction(Handle(GEOM_Function) theFunction); - - private: - - GEOM_Engine* _engine; - -}; - -#endif diff --git a/src/GEOM/GEOM_SubShapeDriver.cxx b/src/GEOM/GEOM_SubShapeDriver.cxx deleted file mode 100644 index 24d80aad4..000000000 --- a/src/GEOM/GEOM_SubShapeDriver.cxx +++ /dev/null @@ -1,151 +0,0 @@ - -#include - -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include - - -//======================================================================= -//function : GEOM_SubShapeDriver -//purpose : -//======================================================================= -GEOM_SubShapeDriver::GEOM_SubShapeDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOM_SubShapeDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - GEOM_ISubShape aCI (aFunction); - - TDF_Label aLabel = aCI.GetMainShape()->GetOwnerEntry(); - if (aLabel.IsRoot()) return 0; - Handle(GEOM_Object) anObj = GEOM_Object::GetObject(aLabel); - if (anObj.IsNull()) return 0; - TopoDS_Shape aMainShape = anObj->GetValue(); - if (aMainShape.IsNull()) return 0; - - Handle(TColStd_HArray1OfInteger) anIndices = aCI.GetIndices(); - if (anIndices.IsNull() || anIndices->Length() <= 0) return 0; - - BRep_Builder B; - TopoDS_Compound aCompound; - TopoDS_Shape aShape; - - if (anIndices->Length() == 1 && anIndices->Value(1) == -1) { //The empty subshape - B.MakeCompound(aCompound); - aShape = aCompound; - - } else { - - TopTools_IndexedMapOfShape aMapOfShapes; - TopExp::MapShapes(aMainShape, aMapOfShapes); - - if (anIndices->Length() > 1) { - - B.MakeCompound(aCompound); - - for (int i = anIndices->Lower(); i<= anIndices->Upper(); i++) { - if (aMapOfShapes.Extent() < anIndices->Value(i)) - Standard_NullObject::Raise("GEOM_SubShapeDriver::Execute: Index is out of range"); - TopoDS_Shape aSubShape = aMapOfShapes.FindKey(anIndices->Value(i)); - if (aSubShape.IsNull()) continue; - B.Add(aCompound,aSubShape); - } - - aShape = aCompound; - - } else { - - if (aMapOfShapes.Extent() < anIndices->Value(1)) - Standard_NullObject::Raise("GEOM_SubShapeDriver::Execute: Index is out of range"); - aShape = aMapOfShapes.FindKey(anIndices->Value(1)); - } - } - - if (aShape.IsNull()) return 0; - - aFunction->SetValue(aShape); - - log.SetTouched(Label()); - - return 1; -} - - -//======================================================================= -//function : GEOM_SubShapeDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOM_SubShapeDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOM_SubShapeDriver", - sizeof(GEOM_SubShapeDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= -const Handle(GEOM_SubShapeDriver) Handle(GEOM_SubShapeDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOM_SubShapeDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOM_SubShapeDriver))) { - _anOtherObject = Handle(GEOM_SubShapeDriver)((Handle(GEOM_SubShapeDriver)&)AnObject); - } - } - - return _anOtherObject ; -} diff --git a/src/GEOM/GEOM_SubShapeDriver.hxx b/src/GEOM/GEOM_SubShapeDriver.hxx deleted file mode 100644 index a1f9b331e..000000000 --- a/src/GEOM/GEOM_SubShapeDriver.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// File : GEOMImpl_ShapeDriver.ixx -// Module : GEOM - -#ifndef _GEOM_SubShapeDriver_HeaderFile -#define _GEOM_SubShapeDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOM_SubShapeDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOM_SubShapeDriver); - -class Handle(GEOM_SubShapeDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOM_SubShapeDriver)():Handle(TFunction_Driver)() {} - Handle(GEOM_SubShapeDriver)(const Handle(GEOM_SubShapeDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOM_SubShapeDriver)(const GEOM_SubShapeDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOM_SubShapeDriver)& operator=(const Handle(GEOM_SubShapeDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOM_SubShapeDriver)& operator=(const GEOM_SubShapeDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOM_SubShapeDriver* operator->() - { - return (GEOM_SubShapeDriver *)ControlAccess(); - } - - GEOM_SubShapeDriver* operator->() const - { - return (GEOM_SubShapeDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOM_SubShapeDriver)() {}; - - Standard_EXPORT static const Handle(GEOM_SubShapeDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOM_SubShapeDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOM_SubShapeDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOM_SubShapeDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOM_SubShapeDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOM_SubShapeDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOM_SubShapeDriver) == AType || TFunction_Driver::IsKind(AType)); } - - -}; - -#endif diff --git a/src/GEOM/Handle_GEOM_Application.hxx b/src/GEOM/Handle_GEOM_Application.hxx deleted file mode 100644 index f1dfa9edc..000000000 --- a/src/GEOM/Handle_GEOM_Application.hxx +++ /dev/null @@ -1,77 +0,0 @@ -// File : Handle_GEOM_Application.hxx -// Module : GEOM - -#ifndef _Handle_GEOM_Application_HeaderFile -#define _Handle_GEOM_Application_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TDocStd_Application_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TDocStd_Application); -class GEOM_Application; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(SimpleOCAF_Application); - -class Handle(GEOM_Application) : public Handle(TDocStd_Application) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } -// inline void operator delete(void *anAddress, size_t size) -// { -// if (anAddress) Standard::Free((Standard_Address&)anAddress,size); -// } - Handle(GEOM_Application)():Handle(TDocStd_Application)() {} - Handle(GEOM_Application)(const Handle(GEOM_Application)& aHandle) : Handle(TDocStd_Application)(aHandle) - { - } - - Handle(GEOM_Application)(const GEOM_Application* anItem) : Handle(TDocStd_Application)((TDocStd_Application *)anItem) - { - } - - Handle(GEOM_Application)& operator=(const Handle(GEOM_Application)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOM_Application)& operator=(const GEOM_Application* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOM_Application* operator->() - { - return (GEOM_Application *)ControlAccess(); - } - - GEOM_Application* operator->() const - { - return (GEOM_Application *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOM_Application)(); - - Standard_EXPORT static const Handle(GEOM_Application) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/GEOM/Handle_GEOM_DataMapNodeOfDataMapOfAsciiStringTransient.hxx b/src/GEOM/Handle_GEOM_DataMapNodeOfDataMapOfAsciiStringTransient.hxx deleted file mode 100644 index f93d44766..000000000 --- a/src/GEOM/Handle_GEOM_DataMapNodeOfDataMapOfAsciiStringTransient.hxx +++ /dev/null @@ -1,91 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _Handle_GEOM_DataMapNodeOfDataMapOfAsciiStringTransient_HeaderFile -#define _Handle_GEOM_DataMapNodeOfDataMapOfAsciiStringTransient_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class GEOM_DataMapNodeOfDataMapOfAsciiStringTransient; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOM_DataMapNodeOfDataMapOfAsciiStringTransient); - -class Handle(GEOM_DataMapNodeOfDataMapOfAsciiStringTransient) : public Handle(TCollection_MapNode) { - public: - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - Handle(GEOM_DataMapNodeOfDataMapOfAsciiStringTransient)():Handle(TCollection_MapNode)() {} - Handle(GEOM_DataMapNodeOfDataMapOfAsciiStringTransient)(const Handle(GEOM_DataMapNodeOfDataMapOfAsciiStringTransient)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(GEOM_DataMapNodeOfDataMapOfAsciiStringTransient)(const GEOM_DataMapNodeOfDataMapOfAsciiStringTransient* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(GEOM_DataMapNodeOfDataMapOfAsciiStringTransient)& operator=(const Handle(GEOM_DataMapNodeOfDataMapOfAsciiStringTransient)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOM_DataMapNodeOfDataMapOfAsciiStringTransient)& operator=(const GEOM_DataMapNodeOfDataMapOfAsciiStringTransient* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOM_DataMapNodeOfDataMapOfAsciiStringTransient* operator->() - { - return (GEOM_DataMapNodeOfDataMapOfAsciiStringTransient *)ControlAccess(); - } - - GEOM_DataMapNodeOfDataMapOfAsciiStringTransient* operator->() const - { - return (GEOM_DataMapNodeOfDataMapOfAsciiStringTransient *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOM_DataMapNodeOfDataMapOfAsciiStringTransient)(); - - Standard_EXPORT static const Handle(GEOM_DataMapNodeOfDataMapOfAsciiStringTransient) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/GEOM/Makefile.in b/src/GEOM/Makefile.in deleted file mode 100644 index ab77d8d57..000000000 --- a/src/GEOM/Makefile.in +++ /dev/null @@ -1,59 +0,0 @@ - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -# Libraries targets - -LIB = libGEOMbasic.la -LIB_SRC = GEOM_Application.cxx \ - GEOM_Engine.cxx \ - GEOM_Function.cxx \ - GEOM_Object.cxx \ - GEOM_IOperations.cxx \ - GEOM_Solver.cxx \ - GEOM_SubShapeDriver.cxx \ - GEOM_PythonDump.cxx \ - GEOM_DataMapNodeOfDataMapOfAsciiStringTransient_0.cxx \ - GEOM_DataMapIteratorOfDataMapOfAsciiStringTransient_0.cxx \ - GEOM_DataMapOfAsciiStringTransient_0.cxx - -LIB_CLIENT_IDL = -LIB_SERVER_IDL = - -# Executables targets -BIN = -BIN_SRC = -BIN_CLIENT_IDL = -BIN_SERVER_IDL = - -# header files -EXPORT_HEADERS= GEOM_Application.hxx \ - Handle_GEOM_Application.hxx \ - GEOM_Engine.hxx \ - GEOM_Function.hxx \ - GEOM_Object.hxx \ - GEOM_IOperations.hxx \ - GEOM_ISubShape.hxx \ - GEOM_Solver.hxx \ - GEOM_PythonDump.hxx \ - GEOM_DataMapOfAsciiStringTransient.hxx \ - Handle_GEOM_DataMapNodeOfDataMapOfAsciiStringTransient.hxx - -# additionnal information to compil and link file -CPPFLAGS += $(OCC_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome $(BOOST_CPPFLAGS) -CXXFLAGS += $(OCC_CXXFLAGS) -I${KERNEL_ROOT_DIR}/include/salome -LDFLAGS += -L${KERNEL_ROOT_DIR}/lib/salome $(CAS_LDPATH) $(CAS_OCAF) - - -# additional file to be cleaned -MOSTLYCLEAN = -CLEAN = -DISTCLEAN = - -@CONCLUDE@ - diff --git a/src/GEOM/geom.cxx b/src/GEOM/geom.cxx deleted file mode 100644 index 2c8385212..000000000 --- a/src/GEOM/geom.cxx +++ /dev/null @@ -1,88 +0,0 @@ -// GEOM GEOM : implementaion of GEOM_Gen.idl -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : geom.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include - -#include -#include -#include - -//================================================================================== -// function : main() MAIN -// purpose : -//================================================================================== -int main(int argc, char** argv) -{ - try { - // Create and initialise the ORB. - // CORBA::ORB_var orb = CORBA::ORB_init(argc, argv, "omniORB4"); - CORBA::ORB_var orb = CORBA::ORB_init(argc, argv, "omniORB3"); - - // Obtain a reference to the root POA. - CORBA::Object_var obj = orb->resolve_initial_references("RootPOA"); - PortableServer::POA_var poa = PortableServer::POA::_narrow(obj); - - // We allocate the objects on the heap. Since these are reference - // counted objects, they will be deleted by the POA when they are no - // longer needed. -#ifdef WNT - GEOM_Gen_i * myGEOM_Gen_i = new GEOM_Gen_i((CORBA::ORB_ptr)orb, poa, 0, 0, 0 ); -#else - GEOM_Gen_i * myGEOM_Gen_i = new GEOM_Gen_i(orb); -#endif - - // Activate the objects. This tells the POA that the objects are - // ready to accept requests. - PortableServer::ObjectId_var myGEOM_Gen_iid = poa->activate_object(myGEOM_Gen_i); - myGEOM_Gen_i->register_name("/myGEOM_Gen"); - - // Obtain a POAManager, and tell the POA to start accepting - // requests on its objects. - PortableServer::POAManager_var pman = poa->the_POAManager(); - pman->activate(); - - orb->run(); - orb->destroy(); - } - catch(CORBA::SystemException&) { - cerr << "Caught CORBA::SystemException." << endl; - } - catch(CORBA::Exception&) { - cerr << "Caught CORBA::Exception." << endl; - } - catch(omniORB::fatalException& fe) { - cerr << "Caught omniORB::fatalException:" << endl; - cerr << " file: " << fe.file() << endl; - cerr << " line: " << fe.line() << endl; - cerr << " msg: " << fe.errmsg() << endl; - } - catch(...) { - cerr << "Caught unknown exception." << endl; - } - return 0; -} diff --git a/src/GEOMAlgo/BlockFix.cdl b/src/GEOMAlgo/BlockFix.cdl deleted file mode 100644 index f8bfaa2a0..000000000 --- a/src/GEOMAlgo/BlockFix.cdl +++ /dev/null @@ -1,50 +0,0 @@ --- File: BlockFix.cdl --- Created: Tue Dec 7 11:59:05 2004 --- Author: Pavel Durandin --- ----Copyright: Open CASCADE SA 2004 - - - - -package BlockFix - -uses - - TColStd, - gp, - Geom, - Geom2d, - GeomAbs, - TopLoc, - TopoDS, - BRepTools, - TopTools, - ShapeBuild - -is - - class SphereSpaceModifier; - - class UnionFaces; - - class UnionEdges; - - class BlockFixAPI; - ---Purpose: API class to perform the fixing of the - -- block - - class PeriodicSurfaceModifier; - - class CheckTool; - - RotateSphereSpace (S: Shape from TopoDS; Tol: Real) - returns Shape from TopoDS; - - FixRanges (S: Shape from TopoDS; Tol: Real) - returns Shape from TopoDS; - ---Purpose: checking and fixing cases where parametric - -- boundaries of face based on periodic surface are not - -- contained in the range of this surface. - -end BlockFix; diff --git a/src/GEOMAlgo/BlockFix.cxx b/src/GEOMAlgo/BlockFix.cxx deleted file mode 100644 index aadc176bb..000000000 --- a/src/GEOMAlgo/BlockFix.cxx +++ /dev/null @@ -1,196 +0,0 @@ -// File: BlockFix.cxx -// Created: Tue Dec 7 11:59:05 2004 -// Author: Pavel DURANDIN -// Copyright: Open CASCADE SA 2004 - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include - -#include - - -//======================================================================= -//function : FixResult -//purpose : auxilary -//======================================================================= -static void FixResult(const TopoDS_Shape& result, - Handle(ShapeBuild_ReShape)& Context, - const Standard_Real Tol) -{ - for (TopExp_Explorer ex_f(result,TopAbs_FACE); ex_f.More(); ex_f.Next()) { - TopoDS_Shape aShape = Context->Apply(ex_f.Current().Oriented(TopAbs_FORWARD)); - // face coud not be dropped or splitted on this step - TopoDS_Face aFace = TopoDS::Face(aShape); - TopLoc_Location L; - Handle(Geom_Surface) Surf = BRep_Tool::Surface(aFace,L); - - if( Surf->IsKind(STANDARD_TYPE(Geom_SphericalSurface)) || - Surf->IsKind(STANDARD_TYPE(Geom_CylindricalSurface)) ) { - - Standard_Integer nbWires = 0; - for (TopExp_Explorer ex_w(aFace,TopAbs_WIRE); ex_w.More(); ex_w.Next()) { - nbWires++; - Handle(ShapeFix_Wire) sfw = new ShapeFix_Wire(TopoDS::Wire(ex_w.Current()), - aFace, - Precision::Confusion()); - sfw->FixReorder(); - if(sfw->StatusReorder ( ShapeExtend_FAIL )) - continue; - - sfw->SetPrecision(2.*Tol); - sfw->FixShifted(); - - Standard_Boolean isDone = sfw->LastFixStatus ( ShapeExtend_DONE ); - isDone |= sfw->FixDegenerated(); - - // remove degenerated edges from not degenerated points - ShapeAnalysis_Edge sae; - Handle(ShapeExtend_WireData) sewd = sfw->WireData(); - Standard_Integer i; - for( i = 1; i<=sewd->NbEdges();i++) { - TopoDS_Edge E = sewd->Edge(i); - if(BRep_Tool::Degenerated(E)&&!sae.HasPCurve(E,aFace)) { - sewd->Remove(i); - isDone = Standard_True; - i--; - } - } - - //isDone |= sfw->FixLacking(); // commented by skl 22.03.2005 (PAL8395) - - // remove neighbour seam edges - if(isDone) { - for( i = 1; iNbEdges();i++) { - if(sewd->IsSeam(i) && sewd->IsSeam(i+1)) { - isDone = Standard_True; - sewd->Remove(i); - sewd->Remove(i); - i--; - } - } - if(sewd->IsSeam(1) && sewd->IsSeam(sewd->NbEdges())) { - sewd->Remove(1); - sewd->Remove(sewd->NbEdges()); - } - } - - - if(isDone) { - TopoDS_Wire ResWire = sfw->Wire(); - Context->Replace(ex_w.Current(), ResWire); - }; - } - // Implement fix orientation in case of several wires - if(nbWires > 1) { - TopoDS_Face aFixedFace = TopoDS::Face(Context->Apply(aFace)); - Handle(ShapeFix_Face) sff = new ShapeFix_Face(aFixedFace); - if(sff->FixOrientation()) - Context->Replace(aFixedFace,sff->Face()); - } - - } - } -} - - - - - -//======================================================================= -//function : ConvertToAnalytical -//purpose : -//======================================================================= - -TopoDS_Shape BlockFix::RotateSphereSpace (const TopoDS_Shape& S, - const Standard_Real Tol) -{ - - // Create a modification description - Handle(BlockFix_SphereSpaceModifier) SR = new BlockFix_SphereSpaceModifier; - SR->SetTolerance(Tol); - - TopTools_DataMapOfShapeShape context; - BRepTools_Modifier MD; - TopoDS_Shape result = ShapeCustom::ApplyModifier ( S, SR, context,MD ); - - Handle(ShapeBuild_ReShape) RS = new ShapeBuild_ReShape; - FixResult(result,RS,Tol); - result = RS->Apply(result); - - ShapeFix_Edge sfe; - for(TopExp_Explorer exp(result,TopAbs_EDGE); exp.More(); exp.Next()) { - TopoDS_Edge E = TopoDS::Edge(exp.Current()); - sfe.FixVertexTolerance (E); - } - - ShapeFix::SameParameter(result,Standard_False); - return result; -} - - -//======================================================================= -//function : FixRanges -//purpose : -//======================================================================= - -TopoDS_Shape BlockFix::FixRanges (const TopoDS_Shape& S, - const Standard_Real Tol) -{ - // Create a modification description - Handle(BlockFix_PeriodicSurfaceModifier) SR = new BlockFix_PeriodicSurfaceModifier; - SR->SetTolerance(Tol); - - TopTools_DataMapOfShapeShape context; - BRepTools_Modifier MD; - TopoDS_Shape result = ShapeCustom::ApplyModifier ( S, SR, context,MD ); - - Handle(ShapeBuild_ReShape) RS = new ShapeBuild_ReShape; - FixResult(result,RS,Tol); - result = RS->Apply(result); - - ShapeFix_Edge sfe; - for(TopExp_Explorer exp(result,TopAbs_EDGE); exp.More(); exp.Next()) { - TopoDS_Edge E = TopoDS::Edge(exp.Current()); - sfe.FixVertexTolerance (E); - } - - ShapeFix::SameParameter(result,Standard_False); - - return result; -} diff --git a/src/GEOMAlgo/BlockFix.hxx b/src/GEOMAlgo/BlockFix.hxx deleted file mode 100644 index c85590ef6..000000000 --- a/src/GEOMAlgo/BlockFix.hxx +++ /dev/null @@ -1,105 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _BlockFix_HeaderFile -#define _BlockFix_HeaderFile - -#ifndef _Standard_Real_HeaderFile -#include -#endif -class TopoDS_Shape; -class BlockFix_SphereSpaceModifier; -class BlockFix_UnionFaces; -class BlockFix_UnionEdges; -class BlockFix_BlockFixAPI; -class BlockFix_PeriodicSurfaceModifier; -class BlockFix_CheckTool; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class BlockFix { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT static TopoDS_Shape RotateSphereSpace(const TopoDS_Shape& S,const Standard_Real Tol) ; -Standard_EXPORT static TopoDS_Shape FixRanges(const TopoDS_Shape& S,const Standard_Real Tol) ; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - -friend class BlockFix_SphereSpaceModifier; -friend class BlockFix_UnionFaces; -friend class BlockFix_UnionEdges; -friend class BlockFix_BlockFixAPI; -friend class BlockFix_PeriodicSurfaceModifier; -friend class BlockFix_CheckTool; - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/BlockFix.ixx b/src/GEOMAlgo/BlockFix.ixx deleted file mode 100644 index ad18c4bfa..000000000 --- a/src/GEOMAlgo/BlockFix.ixx +++ /dev/null @@ -1,26 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - - - - diff --git a/src/GEOMAlgo/BlockFix.jxx b/src/GEOMAlgo/BlockFix.jxx deleted file mode 100644 index 649432a98..000000000 --- a/src/GEOMAlgo/BlockFix.jxx +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _BlockFix_HeaderFile -#include -#endif diff --git a/src/GEOMAlgo/BlockFix_BlockFixAPI.cdl b/src/GEOMAlgo/BlockFix_BlockFixAPI.cdl deleted file mode 100644 index b5cfa0e45..000000000 --- a/src/GEOMAlgo/BlockFix_BlockFixAPI.cdl +++ /dev/null @@ -1,48 +0,0 @@ --- File: BlockFix_BlockFixAPI.cdl --- Created: Tue Dec 7 17:56:09 2004 --- Author: Pavel Durandin --- ----Copyright: Open CASCADE SA 2004 - -class BlockFixAPI from BlockFix inherits TShared from MMgt - - ---Purpose: - -uses - - Shape from TopoDS, - ReShape from ShapeBuild - -is - Create returns BlockFixAPI from BlockFix; - ---Purpose: Empty constructor - - SetShape(me: mutable; Shape: Shape from TopoDS); - ---Purpose: Sets the shape to be operated on - ---C++: inline - - Perform(me: mutable); - ---Purpose: - - Shape(me) returns Shape from TopoDS; - ---Purpose: Returns resulting shape. - ---C++: inline - - Context(me:mutable) returns ReShape from ShapeBuild; - ---Purpose: Returns modifiable context for storing the - -- mofifications - ---C++: inline - ---C++: return & - - Tolerance (me:mutable) returns Real; - ---Purpose: Returns modifiable tolerance of recognition - ---C++: inline - ---C++: return & - -fields - - myContext : ReShape from ShapeBuild; - myShape : Shape from TopoDS; - myTolerance : Real from Standard; - -end BlockFixAPI from BlockFix; diff --git a/src/GEOMAlgo/BlockFix_BlockFixAPI.cxx b/src/GEOMAlgo/BlockFix_BlockFixAPI.cxx deleted file mode 100644 index 444ddd693..000000000 --- a/src/GEOMAlgo/BlockFix_BlockFixAPI.cxx +++ /dev/null @@ -1,48 +0,0 @@ -// File: BlockFix_BlockFixAPI.cxx -// Created: Tue Dec 7 11:59:05 2004 -// Author: Pavel DURANDIN -// Copyright: Open CASCADE SA 2004 - - -#include -#include -#include -#include -#include - -//======================================================================= -//function : ShapeConvert_CanonicAPI -//purpose : -//======================================================================= - -BlockFix_BlockFixAPI::BlockFix_BlockFixAPI() -{ - myTolerance = Precision::Confusion(); -} - -//======================================================================= -//function : Perform -//purpose : -//======================================================================= - -void BlockFix_BlockFixAPI::Perform() -{ - - // processing spheres with degenerativities - TopoDS_Shape aShape = Shape(); - myShape = BlockFix::RotateSphereSpace(aShape,myTolerance); - - // faces unification - BlockFix_UnionFaces aFaceUnifier; - aFaceUnifier.GetTolerance() = myTolerance; - TopoDS_Shape aResult; - aResult = aFaceUnifier.Perform(myShape); - - - BlockFix_UnionEdges anEdgeUnifier; - myShape = anEdgeUnifier.Perform(aResult,myTolerance); - - TopoDS_Shape aRes = BlockFix::FixRanges(myShape,myTolerance); - myShape = aRes; - -} diff --git a/src/GEOMAlgo/BlockFix_BlockFixAPI.hxx b/src/GEOMAlgo/BlockFix_BlockFixAPI.hxx deleted file mode 100644 index 9eb2198db..000000000 --- a/src/GEOMAlgo/BlockFix_BlockFixAPI.hxx +++ /dev/null @@ -1,118 +0,0 @@ -// File generated by CPPExt (Transient) -// -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _BlockFix_BlockFixAPI_HeaderFile -#define _BlockFix_BlockFixAPI_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_BlockFix_BlockFixAPI_HeaderFile -#include -#endif - -#ifndef _Handle_ShapeBuild_ReShape_HeaderFile -#include -#endif -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _Standard_Real_HeaderFile -#include -#endif -#ifndef _MMgt_TShared_HeaderFile -#include -#endif -class ShapeBuild_ReShape; -class TopoDS_Shape; - - -class BlockFix_BlockFixAPI : public MMgt_TShared { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT BlockFix_BlockFixAPI(); - void SetShape(const TopoDS_Shape& Shape) ; -Standard_EXPORT void Perform() ; - TopoDS_Shape Shape() const; - Handle_ShapeBuild_ReShape& Context() ; - Standard_Real& Tolerance() ; -Standard_EXPORT ~BlockFix_BlockFixAPI(); - - - - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& BlockFix_BlockFixAPI_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -Handle_ShapeBuild_ReShape myContext; -TopoDS_Shape myShape; -Standard_Real myTolerance; - - -}; - - -#include - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/BlockFix_BlockFixAPI.ixx b/src/GEOMAlgo/BlockFix_BlockFixAPI.ixx deleted file mode 100644 index 4fc77f490..000000000 --- a/src/GEOMAlgo/BlockFix_BlockFixAPI.ixx +++ /dev/null @@ -1,76 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -BlockFix_BlockFixAPI::~BlockFix_BlockFixAPI() {} - - - -Standard_EXPORT Handle_Standard_Type& BlockFix_BlockFixAPI_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(MMgt_TShared); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType2 = STANDARD_TYPE(Standard_Transient); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("BlockFix_BlockFixAPI", - sizeof(BlockFix_BlockFixAPI), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(BlockFix_BlockFixAPI) Handle(BlockFix_BlockFixAPI)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(BlockFix_BlockFixAPI) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(BlockFix_BlockFixAPI))) { - _anOtherObject = Handle(BlockFix_BlockFixAPI)((Handle(BlockFix_BlockFixAPI)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& BlockFix_BlockFixAPI::DynamicType() const -{ - return STANDARD_TYPE(BlockFix_BlockFixAPI) ; -} -Standard_Boolean BlockFix_BlockFixAPI::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(BlockFix_BlockFixAPI) == AType || MMgt_TShared::IsKind(AType)); -} -Handle_BlockFix_BlockFixAPI::~Handle_BlockFix_BlockFixAPI() {} - diff --git a/src/GEOMAlgo/BlockFix_BlockFixAPI.jxx b/src/GEOMAlgo/BlockFix_BlockFixAPI.jxx deleted file mode 100644 index a02004dd5..000000000 --- a/src/GEOMAlgo/BlockFix_BlockFixAPI.jxx +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef _ShapeBuild_ReShape_HeaderFile -#include -#endif -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _BlockFix_BlockFixAPI_HeaderFile -#include -#endif diff --git a/src/GEOMAlgo/BlockFix_BlockFixAPI.lxx b/src/GEOMAlgo/BlockFix_BlockFixAPI.lxx deleted file mode 100644 index f3de13aef..000000000 --- a/src/GEOMAlgo/BlockFix_BlockFixAPI.lxx +++ /dev/null @@ -1,42 +0,0 @@ -#include - -//======================================================================= -//function : Shape -//purpose : -//======================================================================= - -inline void BlockFix_BlockFixAPI::SetShape(const TopoDS_Shape& Shape) -{ - myShape = Shape; -} - -//======================================================================= -//function : Shape -//purpose : -//======================================================================= - -inline TopoDS_Shape BlockFix_BlockFixAPI::Shape() const -{ - return myShape; -} - -//======================================================================= -//function : Context -//purpose : -//======================================================================= - -inline Handle(ShapeBuild_ReShape)& BlockFix_BlockFixAPI::Context() -{ - return myContext; -} - -//======================================================================= -//function : Tolerance -//purpose : -//======================================================================= - -inline Standard_Real& BlockFix_BlockFixAPI::Tolerance() -{ - return myTolerance; -} - diff --git a/src/GEOMAlgo/BlockFix_CheckTool.cdl b/src/GEOMAlgo/BlockFix_CheckTool.cdl deleted file mode 100644 index d05d517fd..000000000 --- a/src/GEOMAlgo/BlockFix_CheckTool.cdl +++ /dev/null @@ -1,47 +0,0 @@ --- File: BlockFix_CheckTool.cdl --- Created: Fri Dec 17 10:36:58 2004 --- Author: Sergey KUUL --- ----Copyright: Open CASCADE SA 2004 - -class CheckTool from BlockFix - - ---Purpose: - -uses - - Shape from TopoDS, - SequenceOfShape from TopTools - -is - - Create returns CheckTool from BlockFix; - ---Purpose: Empty constructor - - SetShape(me: in out; aShape: Shape from TopoDS); - - Perform(me: in out); - ---Purpose: - - NbPossibleBlocks(me) returns Integer; - - PossibleBlock(me; num: Integer) returns Shape from TopoDS; - - DumpCheckResult(me; S : in out OStream); - ---Purpose: Dumps results of checking - - -fields - - myShape : Shape from TopoDS; - myHasCheck : Boolean; - myNbSolids : Integer; - myNbBlocks : Integer; - myPossibleBlocks : SequenceOfShape from TopTools; - myNbDegen : Integer; - myNbUF : Integer; - myNbUE : Integer; - myNbUFUE : Integer; - myBadRanges : Integer; - -end CheckTool; diff --git a/src/GEOMAlgo/BlockFix_CheckTool.cxx b/src/GEOMAlgo/BlockFix_CheckTool.cxx deleted file mode 100644 index 2c386c961..000000000 --- a/src/GEOMAlgo/BlockFix_CheckTool.cxx +++ /dev/null @@ -1,241 +0,0 @@ -// File: BlockFix_CheckTool.cxx -// Created: 17.12.04 11:15:25 -// Author: Sergey KUUL -// Copyright: Open CASCADE SA 2004 - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -//======================================================================= -//function : BlockFix_CheckTool() -//purpose : Constructor -//======================================================================= - -BlockFix_CheckTool::BlockFix_CheckTool( ) -{ - myHasCheck = Standard_False; - myPossibleBlocks.Clear(); -} - - -//======================================================================= -//function : SetShape -//purpose : -//======================================================================= - -void BlockFix_CheckTool::SetShape(const TopoDS_Shape& aShape) -{ - myHasCheck = Standard_False; - myShape = aShape; - myPossibleBlocks.Clear(); -} - - -//======================================================================= -//function : Perform -//purpose : -//======================================================================= - -void BlockFix_CheckTool::Perform() -{ - myNbSolids=0; - myNbBlocks=0; - myNbDegen=0; - myNbUF=0; - myNbUE=0; - myNbUFUE=0; - TopExp_Explorer exps; - for(exps.Init(myShape, TopAbs_SOLID); exps.More(); exps.Next()) { - TopoDS_Solid aSolid = TopoDS::Solid(exps.Current()); - myNbSolids++; - Standard_Boolean IsBlock=Standard_True; - Standard_Boolean MayBeUF=Standard_False; - Standard_Boolean MayBeUE=Standard_False; - Standard_Integer nf=0; - TopExp_Explorer expf; - for(expf.Init(aSolid, TopAbs_FACE); expf.More(); expf.Next()) nf++; - - if(nf<6) { - IsBlock=Standard_False; - } - else if(nf>6) { - IsBlock=Standard_False; - // check faces unification - TopTools_SequenceOfShape faces; - for( expf.Init(aSolid, TopAbs_FACE); expf.More(); expf.Next()) { - TopoDS_Face aFace = TopoDS::Face(expf.Current()); - faces.Append(aFace); - } - Standard_Boolean HasFacesForUnification = Standard_False; - for(Standard_Integer i=1; i0 ) { - IsBlock=Standard_False; - myNbDegen++; - myPossibleBlocks.Append(aSolid); - continue; - } - if(nbe<24) - IsBlock=Standard_False; - if(nbe>24) { - IsBlock=Standard_False; - // check edges unification - // creating map of edge faces - TopTools_IndexedDataMapOfShapeListOfShape aMapEdgeFaces; - TopExp::MapShapesAndAncestors(aSolid, TopAbs_EDGE, TopAbs_FACE, aMapEdgeFaces); - for(expf.Init(aSolid, TopAbs_FACE); expf.More(); expf.Next()) { - TopoDS_Face aFace = TopoDS::Face(expf.Current()); - TopTools_IndexedDataMapOfShapeListOfShape aMapFacesEdges; - for(expe.Init(aFace,TopAbs_EDGE); expe.More(); expe.Next()) { - TopoDS_Edge edge = TopoDS::Edge(expe.Current()); - if(!aMapEdgeFaces.Contains(edge)) continue; - const TopTools_ListOfShape& aList = aMapEdgeFaces.FindFromKey(edge); - TopTools_ListIteratorOfListOfShape anIter(aList); - for( ; anIter.More(); anIter.Next()) { - TopoDS_Face face = TopoDS::Face(anIter.Value()); - if(face.IsSame(aFace)) continue; - if(aMapFacesEdges.Contains(face)) { - aMapFacesEdges.ChangeFromKey(face).Append(edge); - } - else { - TopTools_ListOfShape ListEdges; - ListEdges.Append(edge); - aMapFacesEdges.Add(face,ListEdges); - } - } - } - Standard_Integer i=1; - for(; i<=aMapFacesEdges.Extent(); i++) { - const TopTools_ListOfShape& ListEdges = aMapFacesEdges.FindFromIndex(i); - if(ListEdges.Extent()>1) break; - } - if(i<=aMapFacesEdges.Extent()) { - MayBeUE=Standard_True; - break; - } - } - } - - if(IsBlock) - myNbBlocks++; - else { - if(MayBeUF) { - myPossibleBlocks.Append(aSolid); - if(MayBeUE) - myNbUFUE++; - else - myNbUF++; - } - else if(MayBeUE) { - myNbUE++; - myPossibleBlocks.Append(aSolid); - } - } - - } - - myHasCheck = Standard_True; -} - - -//======================================================================= -//function : NbPossibleBlocks -//purpose : -//======================================================================= - -Standard_Integer BlockFix_CheckTool::NbPossibleBlocks() const -{ - return myPossibleBlocks.Length(); -} - - -//======================================================================= -//function : PossibleBlock -//purpose : -//======================================================================= - -TopoDS_Shape BlockFix_CheckTool::PossibleBlock(const Standard_Integer num) const -{ - TopoDS_Shape res; - if( num>0 && num<=myPossibleBlocks.Length() ) - res = myPossibleBlocks.Value(num); - return res; -} - - -//======================================================================= -//function : DumpCheckResult -//purpose : -//======================================================================= - -void BlockFix_CheckTool::DumpCheckResult(Standard_OStream& S) const -{ - if(!myHasCheck) - S<<"Check not performed!"< -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _TopTools_SequenceOfShape_HeaderFile -#include -#endif -#ifndef _Standard_OStream_HeaderFile -#include -#endif -class TopoDS_Shape; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class BlockFix_CheckTool { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT BlockFix_CheckTool(); -Standard_EXPORT void SetShape(const TopoDS_Shape& aShape) ; -Standard_EXPORT void Perform() ; -Standard_EXPORT Standard_Integer NbPossibleBlocks() const; -Standard_EXPORT TopoDS_Shape PossibleBlock(const Standard_Integer num) const; -Standard_EXPORT void DumpCheckResult(Standard_OStream& S) const; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -TopoDS_Shape myShape; -Standard_Boolean myHasCheck; -Standard_Integer myNbSolids; -Standard_Integer myNbBlocks; -TopTools_SequenceOfShape myPossibleBlocks; -Standard_Integer myNbDegen; -Standard_Integer myNbUF; -Standard_Integer myNbUE; -Standard_Integer myNbUFUE; -Standard_Integer myBadRanges; - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/BlockFix_CheckTool.ixx b/src/GEOMAlgo/BlockFix_CheckTool.ixx deleted file mode 100644 index 1b3f08c4b..000000000 --- a/src/GEOMAlgo/BlockFix_CheckTool.ixx +++ /dev/null @@ -1,26 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - - - - diff --git a/src/GEOMAlgo/BlockFix_CheckTool.jxx b/src/GEOMAlgo/BlockFix_CheckTool.jxx deleted file mode 100644 index ed3116843..000000000 --- a/src/GEOMAlgo/BlockFix_CheckTool.jxx +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _BlockFix_CheckTool_HeaderFile -#include -#endif diff --git a/src/GEOMAlgo/BlockFix_PeriodicSurfaceModifier.cdl b/src/GEOMAlgo/BlockFix_PeriodicSurfaceModifier.cdl deleted file mode 100644 index 63598cfe9..000000000 --- a/src/GEOMAlgo/BlockFix_PeriodicSurfaceModifier.cdl +++ /dev/null @@ -1,115 +0,0 @@ --- File: BlockFix_PeriodicSurfaceModifier.cdl --- Created: Wed Dec 15 10:03:50 2004 --- Author: Sergey KUUL --- ----Copyright: Open CASCADE SA 2004 - -class PeriodicSurfaceModifier from BlockFix inherits Modification from BRepTools - - ---Purpose: - -uses - Vertex from TopoDS, - Edge from TopoDS, - Face from TopoDS, - Location from TopLoc, - Shape from GeomAbs, - Pnt from gp, - Curve from Geom, - Curve from Geom2d, - Surface from Geom, - IndexedMapOfTransient from TColStd, - DataMapOfShapeInteger from TopTools - -is - - Create returns mutable PeriodicSurfaceModifier from BlockFix; - - SetTolerance(me: mutable; Toler: Real); - ---Purpose: Sets the tolerance for recognition of geometry - - NewSurface(me: mutable; F : Face from TopoDS; - S : out Surface from Geom; - L : out Location from TopLoc; - Tol: out Real from Standard; - RevWires : out Boolean from Standard; - RevFace : out Boolean from Standard) - returns Boolean from Standard; - ---Purpose: Returns Standard_True if the face has been - -- modified. In this case, is the new geometric - -- support of the face, the new location, - -- the new tolerance. Otherwise, returns - -- Standard_False, and , , are not - -- significant. - - NewCurve(me: mutable; E : Edge from TopoDS; - C : out Curve from Geom; - L : out Location from TopLoc; - Tol: out Real from Standard) - returns Boolean from Standard; - ---Purpose: Returns Standard_True if the edge has been - -- modified. In this case, is the new geometric - -- support of the edge, the new location, - -- the new tolerance. Otherwise, returns - -- Standard_False, and , , are not - -- significant. - - NewPoint(me: mutable; V : Vertex from TopoDS; - P : out Pnt from gp; - Tol: out Real from Standard) - returns Boolean from Standard; - ---Purpose: Returns Standard_True if the vertex has been - -- modified. In this case,

    is the new geometric - -- support of the vertex, the new tolerance. - -- Otherwise, returns Standard_False, and

    , - -- are not significant. - - NewCurve2d(me: mutable; E : Edge from TopoDS; - F : Face from TopoDS; - NewE : Edge from TopoDS; - NewF : Face from TopoDS; - C : out Curve from Geom2d; - Tol : out Real from Standard) - returns Boolean from Standard; - ---Purpose: Returns Standard_True if the edge has a new - -- curve on surface on the face .In this case, - -- is the new geometric support of the edge, the - -- new location, the new tolerance. - -- - -- Otherwise, returns Standard_False, and , , - -- are not significant. - -- - -- is the new edge created from . - -- is the new face created from . They may be usefull. - - NewParameter(me: mutable; V : Vertex from TopoDS; - E : Edge from TopoDS; - P : out Real from Standard; - Tol: out Real from Standard) - returns Boolean from Standard; - ---Purpose: Returns Standard_True if the Vertex has a new - -- parameter on the edge . In this case,

    is - -- the parameter, the new tolerance. - -- Otherwise, returns Standard_False, and

    , - -- are not significant. - - Continuity(me: mutable; E : Edge from TopoDS; - F1,F2 : Face from TopoDS; - NewE : Edge from TopoDS; - NewF1,NewF2: Face from TopoDS) - returns Shape from GeomAbs; - ---Purpose: Returns the continuity of between - -- and . - -- - -- is the new edge created from . - -- (resp. ) is the new face created from - -- (resp. ). - - -fields - - myTolerance : Real; - myMapOfFaces : DataMapOfShapeInteger from TopTools; - myMapOfSurfaces: IndexedMapOfTransient from TColStd; - -end PeriodicSurfaceModifier; diff --git a/src/GEOMAlgo/BlockFix_PeriodicSurfaceModifier.cxx b/src/GEOMAlgo/BlockFix_PeriodicSurfaceModifier.cxx deleted file mode 100644 index 9ca792fed..000000000 --- a/src/GEOMAlgo/BlockFix_PeriodicSurfaceModifier.cxx +++ /dev/null @@ -1,230 +0,0 @@ -// File: BlockFix_PeriodicSurfaceModifier.cxx -// Created: 15.12.04 10:08:50 -// Author: Sergey KUUL -// Copyright: Open CASCADE SA 2004 - -#include - -#include -#include -#include -#include -#include -#include -#include - - -//======================================================================= -//function : BlockFix_PeriodicSurfaceModifier() -//purpose : Constructor -//======================================================================= - -BlockFix_PeriodicSurfaceModifier::BlockFix_PeriodicSurfaceModifier ( ) -{ - myMapOfFaces.Clear(); - myMapOfSurfaces.Clear(); -} - - -//======================================================================= -//function : SetTolerance -//purpose : -//======================================================================= - -void BlockFix_PeriodicSurfaceModifier::SetTolerance(const Standard_Real Tol) -{ - myTolerance = Tol; -} - - -//======================================================================= -//function : ModifySurface -//purpose : auxilary -//======================================================================= - -static Standard_Boolean ModifySurface(const TopoDS_Face& aFace, - const Handle(Geom_Surface)& aSurface, - Handle(Geom_Surface)& aNewSurface) -{ - Handle(Geom_Surface) S = aSurface; - - if(S->IsKind(STANDARD_TYPE(Geom_CylindricalSurface))) { - Handle(Geom_CylindricalSurface) aCyl = - Handle(Geom_CylindricalSurface)::DownCast(S); - Standard_Real Umin, Umax, Vmin, Vmax; - BRepTools::UVBounds(aFace, Umin, Umax, Vmin, Vmax); - if( Umin<-Precision::PConfusion() || Umax>2*PI+Precision::PConfusion() ) { - gp_Ax3 ax3 = aCyl->Position(); - gp_Ax1 NDir = ax3.Axis(); - gp_Ax3 newax3 = ax3.Rotated(NDir,Umin-Precision::PConfusion()); - Handle(Geom_CylindricalSurface) aNewCyl = - new Geom_CylindricalSurface(newax3,aCyl->Radius()); - aNewSurface = aNewCyl; - return Standard_True; - } - } - - if(S->IsKind(STANDARD_TYPE(Geom_SphericalSurface))) { - Handle(Geom_SphericalSurface) aSphere = Handle(Geom_SphericalSurface)::DownCast(S); - Standard_Real Umin, Umax, Vmin, Vmax; - BRepTools::UVBounds(aFace, Umin, Umax, Vmin, Vmax); - if( Umin<-Precision::PConfusion() || Umax>2*PI+Precision::PConfusion() ) { - gp_Ax3 ax3 = aSphere->Position(); - gp_Ax1 NDir = ax3.Axis(); - gp_Ax3 newax3 = ax3.Rotated(NDir,Umin-Precision::PConfusion()); - Handle(Geom_SphericalSurface) aNewSphere = new Geom_SphericalSurface(newax3,aSphere->Radius()); - aNewSurface = aNewSphere; - return Standard_True; - } - } - - return Standard_False; -} - - -//======================================================================= -//function : NewSurface -//purpose : -//======================================================================= - -Standard_Boolean BlockFix_PeriodicSurfaceModifier::NewSurface(const TopoDS_Face& F, - Handle(Geom_Surface)& S, - TopLoc_Location& L,Standard_Real& Tol, - Standard_Boolean& RevWires, - Standard_Boolean& RevFace) -{ - TopLoc_Location LS; - Handle(Geom_Surface) SIni = BRep_Tool::Surface(F, LS); - - if(ModifySurface(F, SIni, S)) { - - RevWires = Standard_False; - RevFace = Standard_False; - - L = LS; - Tol = BRep_Tool::Tolerance(F); - - Standard_Integer anIndex = myMapOfSurfaces.Add(S); - myMapOfFaces.Bind(F,anIndex); - return Standard_True; - } - - return Standard_False; -} - - -//======================================================================= -//function : NewCurve -//purpose : -//======================================================================= - -Standard_Boolean BlockFix_PeriodicSurfaceModifier::NewCurve(const TopoDS_Edge& /*E*/, - Handle(Geom_Curve)& /*C*/, - TopLoc_Location& /*L*/, - Standard_Real& /*Tol*/) -{ - return Standard_False; -} - - -//======================================================================= -//function : NewPoint -//purpose : -//======================================================================= - -Standard_Boolean BlockFix_PeriodicSurfaceModifier::NewPoint(const TopoDS_Vertex& /*V*/, - gp_Pnt& /*P*/, - Standard_Real& /*Tol*/) -{ - return Standard_False; -} - - -//======================================================================= -//function : NewCurve2d -//purpose : -//======================================================================= - -Standard_Boolean BlockFix_PeriodicSurfaceModifier::NewCurve2d(const TopoDS_Edge& E, - const TopoDS_Face& F, - const TopoDS_Edge& /*NewE*/, - const TopoDS_Face& /*NewF*/, - Handle(Geom2d_Curve)& C, - Standard_Real& Tol) -{ - //check if undelying surface of the face was modified - if(myMapOfFaces.IsBound(F)) { - Standard_Integer anIndex = myMapOfFaces.Find(F); - - Handle(Geom_Surface) aNewSurf = Handle(Geom_Surface)::DownCast(myMapOfSurfaces.FindKey(anIndex)); - - Standard_Real f,l; - TopLoc_Location LC, LS; - Handle(Geom_Curve) C3d = BRep_Tool::Curve ( E, LC, f, l ); - Handle(Geom_Surface) S = BRep_Tool::Surface(F, LS); - - //taking into accound the orientation of the seam - C = BRep_Tool::CurveOnSurface(E,F,f,l); - Tol = BRep_Tool::Tolerance(E); - - BRep_Builder B; - TopoDS_Edge TempE; - B.MakeEdge(TempE); - B.Add(TempE, TopExp::FirstVertex(E)); - B.Add(TempE, TopExp::LastVertex(E)); - - if(!C3d.IsNull()) - B.UpdateEdge(TempE, Handle(Geom_Curve)::DownCast(C3d->Transformed(LC.Transformation())), Precision::Confusion()); - B.Range(TempE, f, l); - - Handle(ShapeFix_Edge) sfe = new ShapeFix_Edge; - Handle(Geom_Surface) STemp = Handle(Geom_Surface)::DownCast(aNewSurf->Transformed(LS.Transformation())); - TopLoc_Location LTemp; - LTemp.Identity(); - - Standard_Boolean isClosed = BRep_Tool::IsClosed (E, F); - Standard_Real aWorkTol = 2*myTolerance+Tol; - sfe->FixAddPCurve(TempE, STemp, LTemp, isClosed, Max(Precision::Confusion(), aWorkTol)); - sfe->FixSameParameter(TempE); - - //keep the orientation of original edge - TempE.Orientation(E.Orientation()); - C = BRep_Tool::CurveOnSurface(TempE, STemp, LTemp, f, l); - - //surface was modified - return Standard_True; - } - - return Standard_False; -} - - -//======================================================================= -//function : NewParameter -//purpose : -//======================================================================= - -Standard_Boolean BlockFix_PeriodicSurfaceModifier::NewParameter(const TopoDS_Vertex& /*V*/, - const TopoDS_Edge& /*E*/, - Standard_Real& /*P*/, - Standard_Real& /*Tol*/) -{ - return Standard_False; -} - - -//======================================================================= -//function : Continuity -//purpose : -//======================================================================= - -GeomAbs_Shape BlockFix_PeriodicSurfaceModifier::Continuity(const TopoDS_Edge& E, - const TopoDS_Face& F1, - const TopoDS_Face& F2, - const TopoDS_Edge& /*NewE*/, - const TopoDS_Face& /*NewF1*/, - const TopoDS_Face& /*NewF2*/) -{ - return BRep_Tool::Continuity(E,F1,F2); -} - diff --git a/src/GEOMAlgo/BlockFix_PeriodicSurfaceModifier.hxx b/src/GEOMAlgo/BlockFix_PeriodicSurfaceModifier.hxx deleted file mode 100644 index b55096ce9..000000000 --- a/src/GEOMAlgo/BlockFix_PeriodicSurfaceModifier.hxx +++ /dev/null @@ -1,140 +0,0 @@ -// File generated by CPPExt (Transient) -// -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _BlockFix_PeriodicSurfaceModifier_HeaderFile -#define _BlockFix_PeriodicSurfaceModifier_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_BlockFix_PeriodicSurfaceModifier_HeaderFile -#include -#endif - -#ifndef _Standard_Real_HeaderFile -#include -#endif -#ifndef _TopTools_DataMapOfShapeInteger_HeaderFile -#include -#endif -#ifndef _TColStd_IndexedMapOfTransient_HeaderFile -#include -#endif -#ifndef _BRepTools_Modification_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -#ifndef _Handle_Geom_Surface_HeaderFile -#include -#endif -#ifndef _Handle_Geom_Curve_HeaderFile -#include -#endif -#ifndef _Handle_Geom2d_Curve_HeaderFile -#include -#endif -#ifndef _GeomAbs_Shape_HeaderFile -#include -#endif -class TopoDS_Face; -class Geom_Surface; -class TopLoc_Location; -class TopoDS_Edge; -class Geom_Curve; -class TopoDS_Vertex; -class gp_Pnt; -class Geom2d_Curve; - - -class BlockFix_PeriodicSurfaceModifier : public BRepTools_Modification { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT BlockFix_PeriodicSurfaceModifier(); -Standard_EXPORT void SetTolerance(const Standard_Real Toler) ; -Standard_EXPORT Standard_Boolean NewSurface(const TopoDS_Face& F,Handle(Geom_Surface)& S,TopLoc_Location& L,Standard_Real& Tol,Standard_Boolean& RevWires,Standard_Boolean& RevFace) ; -Standard_EXPORT Standard_Boolean NewCurve(const TopoDS_Edge& E,Handle(Geom_Curve)& C,TopLoc_Location& L,Standard_Real& Tol) ; -Standard_EXPORT Standard_Boolean NewPoint(const TopoDS_Vertex& V,gp_Pnt& P,Standard_Real& Tol) ; -Standard_EXPORT Standard_Boolean NewCurve2d(const TopoDS_Edge& E,const TopoDS_Face& F,const TopoDS_Edge& NewE,const TopoDS_Face& NewF,Handle(Geom2d_Curve)& C,Standard_Real& Tol) ; -Standard_EXPORT Standard_Boolean NewParameter(const TopoDS_Vertex& V,const TopoDS_Edge& E,Standard_Real& P,Standard_Real& Tol) ; -Standard_EXPORT GeomAbs_Shape Continuity(const TopoDS_Edge& E,const TopoDS_Face& F1,const TopoDS_Face& F2,const TopoDS_Edge& NewE,const TopoDS_Face& NewF1,const TopoDS_Face& NewF2) ; -Standard_EXPORT ~BlockFix_PeriodicSurfaceModifier(); - - - - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& BlockFix_PeriodicSurfaceModifier_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -Standard_Real myTolerance; -TopTools_DataMapOfShapeInteger myMapOfFaces; -TColStd_IndexedMapOfTransient myMapOfSurfaces; - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/BlockFix_PeriodicSurfaceModifier.ixx b/src/GEOMAlgo/BlockFix_PeriodicSurfaceModifier.ixx deleted file mode 100644 index 7bdcfb449..000000000 --- a/src/GEOMAlgo/BlockFix_PeriodicSurfaceModifier.ixx +++ /dev/null @@ -1,78 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -BlockFix_PeriodicSurfaceModifier::~BlockFix_PeriodicSurfaceModifier() {} - - - -Standard_EXPORT Handle_Standard_Type& BlockFix_PeriodicSurfaceModifier_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(BRepTools_Modification); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(BRepTools_Modification); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("BlockFix_PeriodicSurfaceModifier", - sizeof(BlockFix_PeriodicSurfaceModifier), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(BlockFix_PeriodicSurfaceModifier) Handle(BlockFix_PeriodicSurfaceModifier)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(BlockFix_PeriodicSurfaceModifier) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(BlockFix_PeriodicSurfaceModifier))) { - _anOtherObject = Handle(BlockFix_PeriodicSurfaceModifier)((Handle(BlockFix_PeriodicSurfaceModifier)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& BlockFix_PeriodicSurfaceModifier::DynamicType() const -{ - return STANDARD_TYPE(BlockFix_PeriodicSurfaceModifier) ; -} -Standard_Boolean BlockFix_PeriodicSurfaceModifier::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(BlockFix_PeriodicSurfaceModifier) == AType || BRepTools_Modification::IsKind(AType)); -} -Handle_BlockFix_PeriodicSurfaceModifier::~Handle_BlockFix_PeriodicSurfaceModifier() {} - diff --git a/src/GEOMAlgo/BlockFix_PeriodicSurfaceModifier.jxx b/src/GEOMAlgo/BlockFix_PeriodicSurfaceModifier.jxx deleted file mode 100644 index 0a556d598..000000000 --- a/src/GEOMAlgo/BlockFix_PeriodicSurfaceModifier.jxx +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef _TopoDS_Face_HeaderFile -#include -#endif -#ifndef _Geom_Surface_HeaderFile -#include -#endif -#ifndef _TopLoc_Location_HeaderFile -#include -#endif -#ifndef _TopoDS_Edge_HeaderFile -#include -#endif -#ifndef _Geom_Curve_HeaderFile -#include -#endif -#ifndef _TopoDS_Vertex_HeaderFile -#include -#endif -#ifndef _gp_Pnt_HeaderFile -#include -#endif -#ifndef _Geom2d_Curve_HeaderFile -#include -#endif -#ifndef _BlockFix_PeriodicSurfaceModifier_HeaderFile -#include -#endif diff --git a/src/GEOMAlgo/BlockFix_SphereSpaceModifier.cdl b/src/GEOMAlgo/BlockFix_SphereSpaceModifier.cdl deleted file mode 100644 index eae4b8a7a..000000000 --- a/src/GEOMAlgo/BlockFix_SphereSpaceModifier.cdl +++ /dev/null @@ -1,120 +0,0 @@ --- File: BlockFix_SphereSpaceModifier.cdl --- Created: Tue Dec 7 12:01:49 2004 --- Author: Pavel Durandin --- ----Copyright: Open CASCADE SA 2004 - - -class SphereSpaceModifier from BlockFix inherits Modification from BRepTools - - ---Purpose: Rotation of the parametric space of the sphere in order - -- to avoid the seam and degenerared edge within it - -uses - Vertex from TopoDS, - Edge from TopoDS, - Face from TopoDS, - Location from TopLoc, - Shape from GeomAbs, - Pnt from gp, - Curve from Geom, - Curve from Geom2d, - Surface from Geom, - IndexedMapOfTransient from TColStd, - DataMapOfShapeInteger from TopTools - -is - - Create returns mutable SphereSpaceModifier from BlockFix; - - SetTolerance(me: mutable; Toler: Real); - ---Purpose: Sets the tolerance for recognition of geometry - - NewSurface(me: mutable; F : Face from TopoDS; - S : out Surface from Geom; - L : out Location from TopLoc; - Tol: out Real from Standard; - RevWires : out Boolean from Standard; - RevFace : out Boolean from Standard) - returns Boolean from Standard; - ---Purpose: Returns Standard_True if the face has been - -- modified. In this case, is the new geometric - -- support of the face, the new location, - -- the new tolerance. Otherwise, returns - -- Standard_False, and , , are not - -- significant. - - NewCurve(me: mutable; E : Edge from TopoDS; - C : out Curve from Geom; - L : out Location from TopLoc; - Tol: out Real from Standard) - returns Boolean from Standard; - ---Purpose: Returns Standard_True if the edge has been - -- modified. In this case, is the new geometric - -- support of the edge, the new location, - -- the new tolerance. Otherwise, returns - -- Standard_False, and , , are not - -- significant. - - NewPoint(me: mutable; V : Vertex from TopoDS; - P : out Pnt from gp; - Tol: out Real from Standard) - returns Boolean from Standard; - ---Purpose: Returns Standard_True if the vertex has been - -- modified. In this case,

    is the new geometric - -- support of the vertex, the new tolerance. - -- Otherwise, returns Standard_False, and

    , - -- are not significant. - - NewCurve2d(me: mutable; E : Edge from TopoDS; - F : Face from TopoDS; - NewE : Edge from TopoDS; - NewF : Face from TopoDS; - C : out Curve from Geom2d; - Tol : out Real from Standard) - returns Boolean from Standard; - ---Purpose: Returns Standard_True if the edge has a new - -- curve on surface on the face .In this case, - -- is the new geometric support of the edge, the - -- new location, the new tolerance. - -- - -- Otherwise, returns Standard_False, and , , - -- are not significant. - -- - -- is the new edge created from . - -- is the new face created from . They may be usefull. - - NewParameter(me: mutable; V : Vertex from TopoDS; - E : Edge from TopoDS; - P : out Real from Standard; - Tol: out Real from Standard) - returns Boolean from Standard; - ---Purpose: Returns Standard_True if the Vertex has a new - -- parameter on the edge . In this case,

    is - -- the parameter, the new tolerance. - -- Otherwise, returns Standard_False, and

    , - -- are not significant. - - Continuity(me: mutable; E : Edge from TopoDS; - F1,F2 : Face from TopoDS; - NewE : Edge from TopoDS; - NewF1,NewF2: Face from TopoDS) - returns Shape from GeomAbs; - ---Purpose: Returns the continuity of between - -- and . - -- - -- is the new edge created from . - -- (resp. ) is the new face created from - -- (resp. ). - - ForRotation(me: mutable; F: Face from TopoDS) returns Boolean; - -fields - - myTolerance : Real; - myMapOfFaces : DataMapOfShapeInteger from TopTools; - myMapOfSpheres: IndexedMapOfTransient from TColStd; - --myMapOfGeom: MapOfShapeTransient from TColStd; - -end SphereSpaceModifier; - diff --git a/src/GEOMAlgo/BlockFix_SphereSpaceModifier.cxx b/src/GEOMAlgo/BlockFix_SphereSpaceModifier.cxx deleted file mode 100644 index fb9e3f27f..000000000 --- a/src/GEOMAlgo/BlockFix_SphereSpaceModifier.cxx +++ /dev/null @@ -1,242 +0,0 @@ -// File: BlockFix.cxx -// Created: Tue Dec 7 11:59:05 2004 -// Author: Pavel DURANDIN -// Copyright: Open CASCADE SA 2004 - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -//======================================================================= -//function : BlockFix_SphereSpaceModifier -//purpose : -//======================================================================= - -BlockFix_SphereSpaceModifier::BlockFix_SphereSpaceModifier() -{ - myMapOfFaces.Clear(); - myMapOfSpheres.Clear(); -} - -//======================================================================= -//function : SetTolerance -//purpose : -//======================================================================= - -void BlockFix_SphereSpaceModifier::SetTolerance(const Standard_Real Tol) -{ - myTolerance = Tol; -} - - -//======================================================================= -//function : NewSurface -//purpose : -//======================================================================= - - -static Standard_Boolean ModifySurface(const TopoDS_Face& aFace, - const Handle(Geom_Surface)& aSurface, - Handle(Geom_Surface)& aNewSurface) -{ - Handle(Geom_Surface) S = aSurface; - if(S->IsKind(STANDARD_TYPE(Geom_RectangularTrimmedSurface))) { - Handle(Geom_RectangularTrimmedSurface) RTS = - Handle(Geom_RectangularTrimmedSurface)::DownCast(S); - S = RTS->BasisSurface(); - } - - if(S->IsKind(STANDARD_TYPE(Geom_SphericalSurface))) { - Standard_Real Umin, Umax, Vmin, Vmax; - ShapeAnalysis::GetFaceUVBounds(aFace,Umin, Umax, Vmin, Vmax); - Standard_Real PI2 = PI/2.; - if(Vmax > PI2 - Precision::PConfusion() || Vmin < -PI2+::Precision::PConfusion()) { - Handle(Geom_SphericalSurface) aSphere = Handle(Geom_SphericalSurface)::DownCast(S); - gp_Sphere sp = aSphere->Sphere(); - gp_Ax3 ax3 = sp.Position(); - if(Abs(Vmax-Vmin) < PI2) { - gp_Ax3 axnew3(ax3.Axis().Location(), ax3.Direction()^ax3.XDirection(),ax3.XDirection()); - sp.SetPosition(axnew3); - Handle(Geom_SphericalSurface) aNewSphere = new Geom_SphericalSurface(sp); - aNewSurface = aNewSphere; - return Standard_True; - } - else { - gp_Pnt PC = ax3.Location(); - Standard_Real Vpar; - if(fabs(PI2-Vmax)>fabs(-PI2-Vmin)) - Vpar = (PI2+Vmax)/2.; - else - Vpar = (-PI2+Vmin)/2.; - Standard_Real Upar = (Umin+Umax)/2.;; - gp_Pnt PN,PX; - S->D0(Upar,Vpar,PN); - S->D0(Upar+PI2,0.,PX); - gp_Dir newNorm(gp_Vec(PC,PN)); - gp_Dir newDirX(gp_Vec(PC,PX)); - gp_Ax3 axnew3(ax3.Axis().Location(), newNorm, newDirX); - sp.SetPosition(axnew3); - Handle(Geom_SphericalSurface) aNewSphere = new Geom_SphericalSurface(sp); - aNewSurface = aNewSphere; - return Standard_True; - } - } - } - return Standard_False; -} - - -Standard_Boolean BlockFix_SphereSpaceModifier::NewSurface(const TopoDS_Face& F, - Handle(Geom_Surface)& S, - TopLoc_Location& L,Standard_Real& Tol, - Standard_Boolean& RevWires, - Standard_Boolean& RevFace) -{ - TopLoc_Location LS; - Handle(Geom_Surface) SIni = BRep_Tool::Surface(F, LS); - - //check if pole of the sphere in the parametric space - if(ModifySurface(F, SIni, S)) { - - RevWires = Standard_False; - RevFace = Standard_False; - - L = LS; - Tol = BRep_Tool::Tolerance(F); - - Standard_Integer anIndex = myMapOfSpheres.Add(S); - myMapOfFaces.Bind(F,anIndex); - return Standard_True; - } - - return Standard_False; -} - -//======================================================================= -//function : NewCurve -//purpose : -//======================================================================= - -Standard_Boolean BlockFix_SphereSpaceModifier::NewCurve(const TopoDS_Edge& /*E*/,Handle(Geom_Curve)& /*C*/, - TopLoc_Location& /*L*/,Standard_Real& /*Tol*/) -{ - return Standard_False; -} - -//======================================================================= -//function : NewPoint -//purpose : -//======================================================================= - -Standard_Boolean BlockFix_SphereSpaceModifier::NewPoint(const TopoDS_Vertex& /*V*/, - gp_Pnt& /*P*/, - Standard_Real& /*Tol*/) -{ - return Standard_False; -} - -//======================================================================= -//function : NewCurve2d -//purpose : -//======================================================================= - -Standard_Boolean BlockFix_SphereSpaceModifier::NewCurve2d(const TopoDS_Edge& E,const TopoDS_Face& F, - const TopoDS_Edge& /*NewE*/,const TopoDS_Face& /*NewF*/, - Handle(Geom2d_Curve)& C,Standard_Real& Tol) -{ - //check if undelying surface of the face was modified - if(myMapOfFaces.IsBound(F)) { - Standard_Integer anIndex = myMapOfFaces.Find(F); - - Handle(Geom_Surface) aNewSphere = Handle(Geom_Surface)::DownCast(myMapOfSpheres.FindKey(anIndex)); - - Standard_Real f,l; - TopLoc_Location LC, LS; - Handle(Geom_Curve) C3d = BRep_Tool::Curve ( E, LC, f, l ); - Handle(Geom_Surface) S = BRep_Tool::Surface(F, LS); - - //taking into accound the orientation of the seam - C = BRep_Tool::CurveOnSurface(E,F,f,l); - Tol = BRep_Tool::Tolerance(E); - - BRep_Builder B; - TopoDS_Edge TempE; - B.MakeEdge(TempE); - B.Add(TempE, TopExp::FirstVertex(E)); - B.Add(TempE, TopExp::LastVertex(E)); - - if(!C3d.IsNull()) - B.UpdateEdge(TempE, Handle(Geom_Curve)::DownCast(C3d->Transformed(LC.Transformation())), Precision::Confusion()); - B.Range(TempE, f, l); - - Handle(ShapeFix_Edge) sfe = new ShapeFix_Edge; - Handle(Geom_Surface) STemp = Handle(Geom_Surface)::DownCast(aNewSphere->Transformed(LS.Transformation())); - TopLoc_Location LTemp; - LTemp.Identity(); - - Standard_Boolean isClosed = BRep_Tool::IsClosed (E, F); - Standard_Real aWorkTol = 2*myTolerance+Tol; - sfe->FixAddPCurve(TempE, STemp, LTemp, isClosed, Max(Precision::Confusion(), aWorkTol)); - sfe->FixSameParameter(TempE); - - //keep the orientation of original edge - TempE.Orientation(E.Orientation()); - C = BRep_Tool::CurveOnSurface(TempE, STemp, LTemp, f, l); - - // shifting seam of sphere - if(isClosed && !C.IsNull()) { - Standard_Real f2,l2; - Handle(Geom2d_Curve) c22 = - BRep_Tool::CurveOnSurface(TopoDS::Edge(TempE.Reversed()),STemp, LTemp,f2,l2); - Standard_Real dPreci = Precision::PConfusion()*Precision::PConfusion(); - if((C->Value(f).SquareDistance(c22->Value(f2)) < dPreci) - ||(C->Value(l).SquareDistance(c22->Value(l2)) < dPreci)) { - gp_Vec2d shift(S->UPeriod(),0.); - C->Translate(shift); - } - } - //sphere was modified - return Standard_True; - } - - return Standard_False; -} - - -//======================================================================= -//function : NewParameter -//purpose : -//======================================================================= - -Standard_Boolean BlockFix_SphereSpaceModifier::NewParameter(const TopoDS_Vertex& /*V*/,const TopoDS_Edge& /*E*/, - Standard_Real& /*P*/,Standard_Real& /*Tol*/) -{ - return Standard_False; -} - - -//======================================================================= -//function : Continuity -//purpose : -//======================================================================= - -GeomAbs_Shape BlockFix_SphereSpaceModifier::Continuity(const TopoDS_Edge& E,const TopoDS_Face& F1, - const TopoDS_Face& F2,const TopoDS_Edge& /*NewE*/, - const TopoDS_Face& /*NewF1*/,const TopoDS_Face& /*NewF2*/) -{ - return BRep_Tool::Continuity(E,F1,F2); -} diff --git a/src/GEOMAlgo/BlockFix_SphereSpaceModifier.hxx b/src/GEOMAlgo/BlockFix_SphereSpaceModifier.hxx deleted file mode 100644 index 463277a46..000000000 --- a/src/GEOMAlgo/BlockFix_SphereSpaceModifier.hxx +++ /dev/null @@ -1,141 +0,0 @@ -// File generated by CPPExt (Transient) -// -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _BlockFix_SphereSpaceModifier_HeaderFile -#define _BlockFix_SphereSpaceModifier_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_BlockFix_SphereSpaceModifier_HeaderFile -#include -#endif - -#ifndef _Standard_Real_HeaderFile -#include -#endif -#ifndef _TopTools_DataMapOfShapeInteger_HeaderFile -#include -#endif -#ifndef _TColStd_IndexedMapOfTransient_HeaderFile -#include -#endif -#ifndef _BRepTools_Modification_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -#ifndef _Handle_Geom_Surface_HeaderFile -#include -#endif -#ifndef _Handle_Geom_Curve_HeaderFile -#include -#endif -#ifndef _Handle_Geom2d_Curve_HeaderFile -#include -#endif -#ifndef _GeomAbs_Shape_HeaderFile -#include -#endif -class TopoDS_Face; -class Geom_Surface; -class TopLoc_Location; -class TopoDS_Edge; -class Geom_Curve; -class TopoDS_Vertex; -class gp_Pnt; -class Geom2d_Curve; - - -class BlockFix_SphereSpaceModifier : public BRepTools_Modification { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT BlockFix_SphereSpaceModifier(); -Standard_EXPORT void SetTolerance(const Standard_Real Toler) ; -Standard_EXPORT Standard_Boolean NewSurface(const TopoDS_Face& F,Handle(Geom_Surface)& S,TopLoc_Location& L,Standard_Real& Tol,Standard_Boolean& RevWires,Standard_Boolean& RevFace) ; -Standard_EXPORT Standard_Boolean NewCurve(const TopoDS_Edge& E,Handle(Geom_Curve)& C,TopLoc_Location& L,Standard_Real& Tol) ; -Standard_EXPORT Standard_Boolean NewPoint(const TopoDS_Vertex& V,gp_Pnt& P,Standard_Real& Tol) ; -Standard_EXPORT Standard_Boolean NewCurve2d(const TopoDS_Edge& E,const TopoDS_Face& F,const TopoDS_Edge& NewE,const TopoDS_Face& NewF,Handle(Geom2d_Curve)& C,Standard_Real& Tol) ; -Standard_EXPORT Standard_Boolean NewParameter(const TopoDS_Vertex& V,const TopoDS_Edge& E,Standard_Real& P,Standard_Real& Tol) ; -Standard_EXPORT GeomAbs_Shape Continuity(const TopoDS_Edge& E,const TopoDS_Face& F1,const TopoDS_Face& F2,const TopoDS_Edge& NewE,const TopoDS_Face& NewF1,const TopoDS_Face& NewF2) ; -Standard_EXPORT Standard_Boolean ForRotation(const TopoDS_Face& F) ; -Standard_EXPORT ~BlockFix_SphereSpaceModifier(); - - - - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& BlockFix_SphereSpaceModifier_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -Standard_Real myTolerance; -TopTools_DataMapOfShapeInteger myMapOfFaces; -TColStd_IndexedMapOfTransient myMapOfSpheres; - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/BlockFix_SphereSpaceModifier.ixx b/src/GEOMAlgo/BlockFix_SphereSpaceModifier.ixx deleted file mode 100644 index 55b027172..000000000 --- a/src/GEOMAlgo/BlockFix_SphereSpaceModifier.ixx +++ /dev/null @@ -1,78 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -BlockFix_SphereSpaceModifier::~BlockFix_SphereSpaceModifier() {} - - - -Standard_EXPORT Handle_Standard_Type& BlockFix_SphereSpaceModifier_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(BRepTools_Modification); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(BRepTools_Modification); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("BlockFix_SphereSpaceModifier", - sizeof(BlockFix_SphereSpaceModifier), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(BlockFix_SphereSpaceModifier) Handle(BlockFix_SphereSpaceModifier)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(BlockFix_SphereSpaceModifier) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(BlockFix_SphereSpaceModifier))) { - _anOtherObject = Handle(BlockFix_SphereSpaceModifier)((Handle(BlockFix_SphereSpaceModifier)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& BlockFix_SphereSpaceModifier::DynamicType() const -{ - return STANDARD_TYPE(BlockFix_SphereSpaceModifier) ; -} -Standard_Boolean BlockFix_SphereSpaceModifier::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(BlockFix_SphereSpaceModifier) == AType || BRepTools_Modification::IsKind(AType)); -} -Handle_BlockFix_SphereSpaceModifier::~Handle_BlockFix_SphereSpaceModifier() {} - diff --git a/src/GEOMAlgo/BlockFix_SphereSpaceModifier.jxx b/src/GEOMAlgo/BlockFix_SphereSpaceModifier.jxx deleted file mode 100644 index a2a6afec0..000000000 --- a/src/GEOMAlgo/BlockFix_SphereSpaceModifier.jxx +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef _TopoDS_Face_HeaderFile -#include -#endif -#ifndef _Geom_Surface_HeaderFile -#include -#endif -#ifndef _TopLoc_Location_HeaderFile -#include -#endif -#ifndef _TopoDS_Edge_HeaderFile -#include -#endif -#ifndef _Geom_Curve_HeaderFile -#include -#endif -#ifndef _TopoDS_Vertex_HeaderFile -#include -#endif -#ifndef _gp_Pnt_HeaderFile -#include -#endif -#ifndef _Geom2d_Curve_HeaderFile -#include -#endif -#ifndef _BlockFix_SphereSpaceModifier_HeaderFile -#include -#endif diff --git a/src/GEOMAlgo/BlockFix_UnionEdges.cdl b/src/GEOMAlgo/BlockFix_UnionEdges.cdl deleted file mode 100644 index 8a6a4b905..000000000 --- a/src/GEOMAlgo/BlockFix_UnionEdges.cdl +++ /dev/null @@ -1,28 +0,0 @@ --- File: BlockFix_UnionEdges.cdl --- Created: Tue Dec 7 15:24:51 2004 --- Author: Sergey KUUL --- - -class UnionEdges from BlockFix - - ---Purpose: - -uses - - Shape from TopoDS, - ReShape from ShapeBuild - -is - - Create returns UnionEdges from BlockFix; - - Perform(me: in out; Shape: Shape from TopoDS; - Tol : Real) - returns Shape from TopoDS; - -fields - - myTolerance : Real; - myContext : ReShape from ShapeBuild; - -end UnionEdges; diff --git a/src/GEOMAlgo/BlockFix_UnionEdges.cxx b/src/GEOMAlgo/BlockFix_UnionEdges.cxx deleted file mode 100644 index c3b7baf15..000000000 --- a/src/GEOMAlgo/BlockFix_UnionEdges.cxx +++ /dev/null @@ -1,320 +0,0 @@ -// File: BlockFix_UnionEdges.cxx -// Created: 07.12.04 15:27:30 -// Author: Sergey KUUL - - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -//======================================================================= -//function : BlockFix_UnionEdges() -//purpose : Constructor -//======================================================================= - -BlockFix_UnionEdges::BlockFix_UnionEdges ( ) -{ -} - - -//======================================================================= -//function : MergeEdges -//purpose : auxilary -//======================================================================= -static Standard_Boolean MergeEdges(const TopTools_SequenceOfShape& SeqEdges, - const TopoDS_Face& aFace, - const Standard_Real Tol, - TopoDS_Edge& anEdge) -{ - // make chain for union - BRep_Builder B; - ShapeAnalysis_Edge sae; - TopoDS_Edge FirstE = TopoDS::Edge(SeqEdges.Value(1)); - TopoDS_Edge LastE = FirstE; - TopoDS_Vertex VF = sae.FirstVertex(FirstE); - TopoDS_Vertex VL = sae.LastVertex(LastE); - TopTools_SequenceOfShape aChain; - aChain.Append(FirstE); - TColStd_MapOfInteger IndUsedEdges; - IndUsedEdges.Add(1); - Standard_Integer j; - for(j=2; j<=SeqEdges.Length(); j++) { - for(Standard_Integer k=2; k<=SeqEdges.Length(); k++) { - if(IndUsedEdges.Contains(k)) continue; - TopoDS_Edge edge = TopoDS::Edge(SeqEdges.Value(k)); - TopoDS_Vertex VF2 = sae.FirstVertex(edge); - TopoDS_Vertex VL2 = sae.LastVertex(edge); - if(sae.FirstVertex(edge).IsSame(VL)) { - aChain.Append(edge); - LastE = edge; - VL = sae.LastVertex(LastE); - IndUsedEdges.Add(k); - } - else if(sae.LastVertex(edge).IsSame(VF)) { - aChain.Prepend(edge); - FirstE = edge; - VF = sae.FirstVertex(FirstE); - IndUsedEdges.Add(k); - } - } - } - if(aChain.Length()IsKind(STANDARD_TYPE(Geom_TrimmedCurve))) { - Handle(Geom_TrimmedCurve) tc = - Handle(Geom_TrimmedCurve)::DownCast(c3d1); - c3d1 = tc->BasisCurve(); - } - TopoDS_Edge edge2 = TopoDS::Edge(aChain.Value(j+1)); - Handle(Geom_Curve) c3d2 = BRep_Tool::Curve(edge2,Loc,fp2,lp2); - if(c3d2.IsNull()) break; - while(c3d2->IsKind(STANDARD_TYPE(Geom_TrimmedCurve))) { - Handle(Geom_TrimmedCurve) tc = - Handle(Geom_TrimmedCurve)::DownCast(c3d2); - c3d2 = tc->BasisCurve(); - } - if( c3d1->IsKind(STANDARD_TYPE(Geom_Line)) && c3d2->IsKind(STANDARD_TYPE(Geom_Line)) ) { - // union lines - Handle(Geom_Line) L1 = Handle(Geom_Line)::DownCast(c3d1); - Handle(Geom_Line) L2 = Handle(Geom_Line)::DownCast(c3d2); - gp_Dir Dir1 = L1->Position().Direction(); - gp_Dir Dir2 = L2->Position().Direction(); - if(!Dir1.IsEqual(Dir2,Precision::Angular())) continue; - // can union lines => create new edge - TopoDS_Vertex V1 = sae.FirstVertex(edge1); - gp_Pnt PV1 = BRep_Tool::Pnt(V1); - TopoDS_Vertex V2 = sae.LastVertex(edge2); - gp_Pnt PV2 = BRep_Tool::Pnt(V2); - gp_Vec Vec(PV1,PV2); - Handle(Geom_Line) L = new Geom_Line(gp_Ax1(PV1,Vec)); - Standard_Real dist = PV1.Distance(PV2); - Handle(Geom_TrimmedCurve) tc = new Geom_TrimmedCurve(L,0.0,dist); - TopoDS_Edge E; - B.MakeEdge (E,tc,Precision::Confusion()); - B.Add (E,V1); B.Add (E,V2); - B.UpdateVertex(V1, 0., E, 0.); - B.UpdateVertex(V2, dist, E, 0.); - ShapeFix_Edge sfe; - sfe.FixAddPCurve(E,aFace,Standard_False); - sfe.FixSameParameter(E); - aChain.Remove(j); - aChain.SetValue(j,E); - j--; - } - if( c3d1->IsKind(STANDARD_TYPE(Geom_Circle)) && c3d2->IsKind(STANDARD_TYPE(Geom_Circle)) ) { - // union circles - Handle(Geom_Circle) C1 = Handle(Geom_Circle)::DownCast(c3d1); - Handle(Geom_Circle) C2 = Handle(Geom_Circle)::DownCast(c3d2); - gp_Pnt P01 = C1->Location(); - gp_Pnt P02 = C2->Location(); - if(P01.Distance(P02)>Precision::Confusion()) continue; - // can union circles => create new edge - TopoDS_Vertex V1 = sae.FirstVertex(edge1); - gp_Pnt PV1 = BRep_Tool::Pnt(V1); - TopoDS_Vertex V2 = sae.LastVertex(edge2); - gp_Pnt PV2 = BRep_Tool::Pnt(V2); - TopoDS_Vertex VM = sae.LastVertex(edge1); - gp_Pnt PVM = BRep_Tool::Pnt(VM); - GC_MakeCircle MC(PV1,PVM,PV2); - Handle(Geom_Circle) C = MC.Value(); - gp_Pnt P0 = C->Location(); - gp_Dir D1(gp_Vec(P0,PV1)); - gp_Dir D2(gp_Vec(P0,PV2)); - Standard_Real fpar = C->XAxis().Direction().Angle(D1); - Standard_Real lpar = C->XAxis().Direction().Angle(D2); - Handle(Geom_TrimmedCurve) tc = new Geom_TrimmedCurve(C,fpar,lpar); - TopoDS_Edge E; - B.MakeEdge (E,tc,Precision::Confusion()); - B.Add (E,V1); B.Add (E,V2); - B.UpdateVertex(V1, fpar, E, 0.); - B.UpdateVertex(V2, lpar, E, 0.); - ShapeFix_Edge sfe; - sfe.FixAddPCurve(E,aFace,Standard_False); - sfe.FixSameParameter(E); - aChain.Remove(j); - aChain.SetValue(j,E); - j--; - } - } - if(j1) { - // second step: union edges with various curves - cout<<"can not make analitical union => make approximation"<Apply(Shape); - - // processing each solid - TopExp_Explorer exps; - for(exps.Init(Shape, TopAbs_SOLID); exps.More(); exps.Next()) { - TopoDS_Solid aSolid = TopoDS::Solid(exps.Current()); - - TopTools_IndexedMapOfShape ChangedFaces; - - // creating map of edge faces - TopTools_IndexedDataMapOfShapeListOfShape aMapEdgeFaces; - TopExp::MapShapesAndAncestors(aSolid, TopAbs_EDGE, TopAbs_FACE, aMapEdgeFaces); - - Handle(ShapeBuild_ReShape) aContext = new ShapeBuild_ReShape; - TopoDS_Shape aRes = aSolid; - aRes = aContext->Apply(aSolid); - - // processing each face - TopExp_Explorer exp; - for(exp.Init(aRes, TopAbs_FACE); exp.More(); exp.Next()) { - TopoDS_Face aFace = - TopoDS::Face(aContext->Apply(exp.Current().Oriented(TopAbs_FORWARD))); - TopTools_IndexedDataMapOfShapeListOfShape aMapFacesEdges; - - for(TopExp_Explorer expe(aFace,TopAbs_EDGE); expe.More(); expe.Next()) { - TopoDS_Edge edge = TopoDS::Edge(expe.Current()); - if(!aMapEdgeFaces.Contains(edge)) continue; - const TopTools_ListOfShape& aList = aMapEdgeFaces.FindFromKey(edge); - TopTools_ListIteratorOfListOfShape anIter(aList); - for( ; anIter.More(); anIter.Next()) { - TopoDS_Face face = TopoDS::Face(anIter.Value()); - TopoDS_Face face1 = TopoDS::Face(aContext->Apply(anIter.Value())); - if(face1.IsSame(aFace)) continue; - if(aMapFacesEdges.Contains(face)) { - aMapFacesEdges.ChangeFromKey(face).Append(edge); - } - else { - TopTools_ListOfShape ListEdges; - ListEdges.Append(edge); - aMapFacesEdges.Add(face,ListEdges); - } - } - } - - for(Standard_Integer i=1; i<=aMapFacesEdges.Extent(); i++) { - const TopTools_ListOfShape& ListEdges = aMapFacesEdges.FindFromIndex(i); - TopTools_SequenceOfShape SeqEdges; - TopTools_ListIteratorOfListOfShape anIter(ListEdges); - for( ; anIter.More(); anIter.Next()) { - SeqEdges.Append(anIter.Value()); - } - if(SeqEdges.Length()==1) continue; - TopoDS_Edge E; - if( MergeEdges(SeqEdges,aFace,Tol,E) ) { - // now we have only one edge - aChain.Value(1) - // we have to replace old ListEdges with this new edge - aContext->Replace(SeqEdges(1),E); - for(Standard_Integer j=2; j<=SeqEdges.Length(); j++) { - aContext->Remove(SeqEdges(j)); - } - TopoDS_Face tmpF = TopoDS::Face(exp.Current()); - if( !ChangedFaces.Contains(tmpF) ) - ChangedFaces.Add(tmpF); - tmpF = TopoDS::Face(aMapFacesEdges.FindKey(i)); - if( !ChangedFaces.Contains(tmpF) ) - ChangedFaces.Add(tmpF); - } - } - - } // end processing each face - - // fix changed faces and replace them in the local context - for(Standard_Integer i=1; i<=ChangedFaces.Extent(); i++) { - TopoDS_Face aFace = TopoDS::Face(aContext->Apply(ChangedFaces.FindKey(i))); - Handle(ShapeFix_Face) sff = new ShapeFix_Face(aFace); - sff->SetContext(myContext); - sff->SetPrecision(myTolerance); - sff->SetMinTolerance(myTolerance); - sff->SetMaxTolerance(Max(1.,myTolerance*1000.)); - sff->Perform(); - aContext->Replace(aFace,sff->Face()); - } - - if(ChangedFaces.Extent()>0) { - // fix changed shell and replace it in the local context - TopoDS_Shape aRes1 = aContext->Apply(aRes); - TopExp_Explorer expsh; - for(expsh.Init(aRes1, TopAbs_SHELL); expsh.More(); expsh.Next()) { - TopoDS_Shell aShell = TopoDS::Shell(expsh.Current()); - Handle(ShapeFix_Shell) sfsh = new ShapeFix_Shell; - sfsh->FixFaceOrientation(aShell); - aContext->Replace(aShell,sfsh->Shell()); - } - TopoDS_Shape aRes2 = aContext->Apply(aRes1); - // put new solid into global context - myContext->Replace(aSolid,aRes2); - } - - } // end processing each solid - - aResult = myContext->Apply(Shape); - return aResult; -} diff --git a/src/GEOMAlgo/BlockFix_UnionEdges.hxx b/src/GEOMAlgo/BlockFix_UnionEdges.hxx deleted file mode 100644 index 3b8aa2102..000000000 --- a/src/GEOMAlgo/BlockFix_UnionEdges.hxx +++ /dev/null @@ -1,99 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _BlockFix_UnionEdges_HeaderFile -#define _BlockFix_UnionEdges_HeaderFile - -#ifndef _Standard_Real_HeaderFile -#include -#endif -#ifndef _Handle_ShapeBuild_ReShape_HeaderFile -#include -#endif -class ShapeBuild_ReShape; -class TopoDS_Shape; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class BlockFix_UnionEdges { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT BlockFix_UnionEdges(); -Standard_EXPORT TopoDS_Shape Perform(const TopoDS_Shape& Shape,const Standard_Real Tol) ; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -Standard_Real myTolerance; -Handle_ShapeBuild_ReShape myContext; - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/BlockFix_UnionEdges.ixx b/src/GEOMAlgo/BlockFix_UnionEdges.ixx deleted file mode 100644 index addb6a314..000000000 --- a/src/GEOMAlgo/BlockFix_UnionEdges.ixx +++ /dev/null @@ -1,26 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - - - - diff --git a/src/GEOMAlgo/BlockFix_UnionEdges.jxx b/src/GEOMAlgo/BlockFix_UnionEdges.jxx deleted file mode 100644 index a8b40958b..000000000 --- a/src/GEOMAlgo/BlockFix_UnionEdges.jxx +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef _ShapeBuild_ReShape_HeaderFile -#include -#endif -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _BlockFix_UnionEdges_HeaderFile -#include -#endif diff --git a/src/GEOMAlgo/BlockFix_UnionFaces.cdl b/src/GEOMAlgo/BlockFix_UnionFaces.cdl deleted file mode 100644 index 7fe6caed2..000000000 --- a/src/GEOMAlgo/BlockFix_UnionFaces.cdl +++ /dev/null @@ -1,46 +0,0 @@ --- File: BlockFix_UnionFaces.cdl --- Created: Tue Dec 7 17:15:42 2004 --- Author: Pavel Durandin --- ----Copyright: Open CASCADE SA 2004 - - -class UnionFaces from BlockFix - -uses - - Face from TopoDS, - Shape from TopoDS - -is - - Create returns UnionFaces from BlockFix; - ---Purpose: Empty constructor - - GetTolerance(me: in out) returns Real; - ---Purpose: Returns modifiable tolerance - ---C++: return& - - Perform (me: in out; Shape: Shape from TopoDS) returns Shape from TopoDS; - ---Purpose: Performs the unification of the fsces - -- whith the same geometry - - IsSameDomain(me; aFace : Face from TopoDS; - aChekedFace: Face from TopoDS) - returns Boolean is virtual; - ---Purpose: Returns true is surfaces have same geometrically domain - -- with given tolerance - - MovePCurves(me; aTarget: in out Face from TopoDS; - aSource: Face from TopoDS) - is virtual; - ---Purpose: Creates pcurves on aTarget face for each edge from - -- aSource one. - -fields - - myTolerance: Real; - -end; - - diff --git a/src/GEOMAlgo/BlockFix_UnionFaces.cxx b/src/GEOMAlgo/BlockFix_UnionFaces.cxx deleted file mode 100644 index 1bb446438..000000000 --- a/src/GEOMAlgo/BlockFix_UnionFaces.cxx +++ /dev/null @@ -1,512 +0,0 @@ -// File: BlockFix_UnionFaces.cxx -// Created: Tue Dec 7 17:15:42 2004 -// Author: Pavel DURANDIN -// Open CASCADE SA 2004 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - - -//======================================================================= -//function : BlockFix_UnionFaces -//purpose : -//======================================================================= - -BlockFix_UnionFaces::BlockFix_UnionFaces() - : myTolerance(Precision::Confusion()) -{ -} - - -//======================================================================= -//function : GetTolearnce -//purpose : -//======================================================================= - -Standard_Real& BlockFix_UnionFaces::GetTolerance() -{ - return myTolerance; -} - - -//======================================================================= -//function : AddOrdinaryEdges -//purpose : auxilary -//======================================================================= -// adds edges from the shape to the sequence -// seams and equal edges are dropped -// Returns true if one of original edges dropped -static Standard_Boolean AddOrdinaryEdges(TopTools_SequenceOfShape& edges, - const TopoDS_Shape aShape, - Standard_Integer& anIndex) -{ - //map of edges - TopTools_MapOfShape aNewEdges; - //add edges without seams - for(TopExp_Explorer exp(aShape,TopAbs_EDGE); exp.More(); exp.Next()) { - TopoDS_Shape edge = exp.Current(); - if(aNewEdges.Contains(edge)) - aNewEdges.Remove(edge); - else - aNewEdges.Add(edge); - } - - Standard_Boolean isDropped = Standard_False; - //merge edges and drop seams - for(Standard_Integer i = 1; i <= edges.Length(); i++) { - TopoDS_Shape current = edges(i); - if(aNewEdges.Contains(current)) { - - aNewEdges.Remove(current); - edges.Remove(i); - i--; - - if(!isDropped) { - isDropped = Standard_True; - anIndex = i; - } - } - } - - //add edges to the sequemce - for(TopTools_MapIteratorOfMapOfShape anIter(aNewEdges); anIter.More(); anIter.Next()) - edges.Append(anIter.Key()); - - return isDropped; -} - - -//======================================================================= -//function : ClearRts -//purpose : auxilary -//======================================================================= -static Handle(Geom_Surface) ClearRts(const Handle(Geom_Surface)& aSurface) -{ - if(aSurface->IsKind(STANDARD_TYPE(Geom_RectangularTrimmedSurface))) { - Handle(Geom_RectangularTrimmedSurface) rts = - Handle(Geom_RectangularTrimmedSurface)::DownCast(aSurface); - return rts->BasisSurface(); - } - return aSurface; -} - - -//======================================================================= -//function : Perform -//purpose : -//======================================================================= - -TopoDS_Shape BlockFix_UnionFaces::Perform(const TopoDS_Shape& Shape) -{ - Handle(ShapeBuild_ReShape) myContext = new ShapeBuild_ReShape; - TopoDS_Shape aResShape = myContext->Apply(Shape); - - // processing each solid - TopExp_Explorer exps; - for(exps.Init(Shape, TopAbs_SOLID); exps.More(); exps.Next()) { - TopoDS_Solid aSolid = TopoDS::Solid(exps.Current()); - - // creating map of edge faces - TopTools_IndexedDataMapOfShapeListOfShape aMapEdgeFaces; - TopExp::MapShapesAndAncestors(aSolid, TopAbs_EDGE, TopAbs_FACE, aMapEdgeFaces); - - // map of processed shapes - TopTools_MapOfShape aProcessed; - - Handle(ShapeBuild_ReShape) aContext = new ShapeBuild_ReShape; - - Standard_Integer NbModif=0; - Standard_Boolean hasFailed = Standard_False; - Standard_Real tol = Min(Max(Precision::Confusion(), myTolerance/10.),0.1); - // processing each face - TopExp_Explorer exp; - //for( exp.Init(Shape, TopAbs_FACE); exp.More(); exp.Next()) { - for( exp.Init(aSolid, TopAbs_FACE); exp.More(); exp.Next()) { - TopoDS_Face aFace = TopoDS::Face(exp.Current().Oriented(TopAbs_FORWARD)); - - if(aProcessed.Contains(aFace)) - continue; - - Standard_Integer dummy; - TopTools_SequenceOfShape edges; - AddOrdinaryEdges(edges,aFace,dummy); - - TopTools_SequenceOfShape faces; - faces.Append(aFace); - - //surface and location to construct result - TopLoc_Location aBaseLocation; - Handle(Geom_Surface) aBaseSurface = BRep_Tool::Surface(aFace,aBaseLocation); - aBaseSurface = ClearRts(aBaseSurface); - - // find adjacent faces to union - Standard_Integer i; - for( i = 1; i <= edges.Length(); i++) { - TopoDS_Edge edge = TopoDS::Edge(edges(i)); - if(BRep_Tool::Degenerated(edge)) - continue; - - const TopTools_ListOfShape& aList = aMapEdgeFaces.FindFromKey(edge); - TopTools_ListIteratorOfListOfShape anIter(aList); - for( ; anIter.More(); anIter.Next()) { - TopoDS_Face anCheckedFace = TopoDS::Face(anIter.Value().Oriented(TopAbs_FORWARD)); - if(anCheckedFace.IsSame(aFace)) - continue; - - if(aProcessed.Contains(anCheckedFace)) - continue; - - if(IsSameDomain(aFace,anCheckedFace)) { - - if(aList.Extent() != 2) { - // non mainfold case is not processed - continue; - } - - // replacing pcurves - TopoDS_Face aMockUpFace; - BRep_Builder B; - B.MakeFace(aMockUpFace,aBaseSurface,aBaseLocation,0.); - MovePCurves(aMockUpFace,anCheckedFace); - - if(AddOrdinaryEdges(edges,aMockUpFace,dummy)) { - // sequence edges is modified - i = dummy; - } - - faces.Append(anCheckedFace); - aProcessed.Add(anCheckedFace); - break; - } - } - } - - // all faces collected in the sequence. Perform union of faces - if(faces.Length() > 1) { - NbModif++; - TopoDS_Face aResult; - BRep_Builder B; - B.MakeFace(aResult,aBaseSurface,aBaseLocation,0); - Standard_Integer nbWires = 0; - - // connecting wires - while(edges.Length()>0) { - - Standard_Boolean isEdge3d = Standard_False; - nbWires++; - TopTools_MapOfShape aVertices; - TopoDS_Wire aWire; - B.MakeWire(aWire); - - TopoDS_Edge anEdge = TopoDS::Edge(edges(1)); - edges.Remove(1); - - isEdge3d |= !BRep_Tool::Degenerated(anEdge); - B.Add(aWire,anEdge); - TopoDS_Vertex V1,V2; - TopExp::Vertices(anEdge,V1,V2); - aVertices.Add(V1); - aVertices.Add(V2); - - Standard_Boolean isNewFound = Standard_False; - do { - isNewFound = Standard_False; - for(Standard_Integer j = 1; j <= edges.Length(); j++) { - anEdge = TopoDS::Edge(edges(j)); - TopExp::Vertices(anEdge,V1,V2); - if(aVertices.Contains(V1) || aVertices.Contains(V2)) { - isEdge3d |= !BRep_Tool::Degenerated(anEdge); - aVertices.Add(V1); - aVertices.Add(V2); - B.Add(aWire,anEdge); - edges.Remove(j); - j--; - isNewFound = Standard_True; - } - } - } while (isNewFound); - - // sorting eny type of edges - aWire = TopoDS::Wire(aContext->Apply(aWire)); - - TopoDS_Face tmpF = TopoDS::Face(aContext->Apply(faces(1).Oriented(TopAbs_FORWARD))); - Handle(ShapeFix_Wire) sfw = new ShapeFix_Wire(aWire,tmpF,Precision::Confusion()); - sfw->FixReorder(); - Standard_Boolean isDegRemoved = Standard_False; - if(!sfw->StatusReorder ( ShapeExtend_FAIL )) { - // clear degenerated edges if at least one with 3d curve exist - if(isEdge3d) { - Handle(ShapeExtend_WireData) sewd = sfw->WireData(); - for(Standard_Integer j = 1; j<=sewd->NbEdges();j++) { - TopoDS_Edge E = sewd->Edge(j); - if(BRep_Tool::Degenerated(E)) { - sewd->Remove(j); - isDegRemoved = Standard_True; - j--; - } - } - } - sfw->FixShifted(); - if(isDegRemoved) - sfw->FixDegenerated(); - } - TopoDS_Wire aWireFixed = sfw->Wire(); - aContext->Replace(aWire,aWireFixed); - // add resulting wire - if(isEdge3d) { - B.Add(aResult,aWireFixed); - } - else { - // sorting edges - Handle(ShapeExtend_WireData) sbwd = sfw->WireData(); - Standard_Integer nbEdges = sbwd->NbEdges(); - // sort degenerated edges and create one edge instead of several ones - ShapeAnalysis_WireOrder sawo(Standard_False, 0); - ShapeAnalysis_Edge sae; - Standard_Integer aLastEdge = nbEdges; - for(Standard_Integer j = 1; j <= nbEdges; j++) { - Standard_Real f,l; - //smh protection on NULL pcurve - Handle(Geom2d_Curve) c2d; - if(!sae.PCurve(sbwd->Edge(j),tmpF,c2d,f,l)) { - aLastEdge--; - continue; - } - sawo.Add(c2d->Value(f).XY(),c2d->Value(l).XY()); - } - sawo.Perform(); - - // constructind one degenerative edge - gp_XY aStart, anEnd, tmp; - Standard_Integer nbFirst = sawo.Ordered(1); - TopoDS_Edge anOrigE = TopoDS::Edge(sbwd->Edge(nbFirst).Oriented(TopAbs_FORWARD)); - ShapeBuild_Edge sbe; - TopoDS_Vertex aDummyV; - TopoDS_Edge E = sbe.CopyReplaceVertices(anOrigE,aDummyV,aDummyV); - sawo.XY(nbFirst,aStart,tmp); - sawo.XY(sawo.Ordered(aLastEdge),tmp,anEnd); - - gp_XY aVec = anEnd-aStart; - Handle(Geom2d_Line) aLine = new Geom2d_Line(aStart,gp_Dir2d(anEnd-aStart)); - - B.UpdateEdge(E,aLine,tmpF,0.); - B.Range(E,tmpF,0.,aVec.Modulus()); - Handle(Geom_Curve) C3d; - B.UpdateEdge(E,C3d,0.); - B.Degenerated(E,Standard_True); - TopoDS_Wire aW; - B.MakeWire(aW); - B.Add(aW,E); - B.Add(aResult,aW); - } - - } - - // perform substitution of face - aContext->Replace(aContext->Apply(aFace),aResult); - - - ShapeFix_Face sff (aResult); - //Intializing by tolerances - sff.SetPrecision(myTolerance); - sff.SetMinTolerance(tol); - sff.SetMaxTolerance(Max(1.,myTolerance*1000.)); - //Setting modes - sff.FixOrientationMode() = 0; - //sff.FixWireMode() = 0; - sff.SetContext(aContext); - // Applying the fixes - sff.Perform(); - if(sff.Status(ShapeExtend_FAIL)) - hasFailed = Standard_True; - - // breaking down to several faces - TopoDS_Shape theResult = aContext->Apply(aResult); - for(TopExp_Explorer aFaceExp(theResult,TopAbs_FACE);aFaceExp.More();aFaceExp.Next()) { - TopoDS_Face aCurrent = TopoDS::Face(aFaceExp.Current().Oriented(TopAbs_FORWARD)); - Handle(TColGeom_HArray2OfSurface) grid = new TColGeom_HArray2OfSurface ( 1, 1, 1, 1 ); - grid->SetValue ( 1, 1, aBaseSurface ); - Handle(ShapeExtend_CompositeSurface) G = new ShapeExtend_CompositeSurface ( grid ); - ShapeFix_ComposeShell CompShell; - CompShell.Init ( G, aBaseLocation, aCurrent, ::Precision::Confusion() );//myPrecision - CompShell.SetContext( aContext ); - - TopTools_SequenceOfShape parts; - ShapeFix_SequenceOfWireSegment wires; - for(TopExp_Explorer W_Exp(aCurrent,TopAbs_WIRE);W_Exp.More();W_Exp.Next()) { - Handle(ShapeExtend_WireData) sbwd = - new ShapeExtend_WireData ( TopoDS::Wire(W_Exp.Current() )); - ShapeFix_WireSegment seg ( sbwd, TopAbs_REVERSED ); - wires.Append(seg); - } - - CompShell.DispatchWires ( parts,wires ); - for (Standard_Integer j=1; j <= parts.Length(); j++ ) { - ShapeFix_Face aFixOrient(TopoDS::Face(parts(j))); - aFixOrient.SetContext(aContext); - aFixOrient.FixOrientation(); - } - - TopoDS_Shape CompRes; - if ( faces.Length() !=1 ) { - TopoDS_Shell S; - B.MakeShell ( S ); - for ( i=1; i <= parts.Length(); i++ ) - B.Add ( S, parts(i) ); - CompRes = S; - } - else CompRes = parts(1); - - aContext->Replace(aCurrent,CompRes); - } - - // remove the remaining faces - for(i = 2; i <= faces.Length(); i++) - aContext->Remove(faces(i)); - } - } - - //TopoDS_Shape aResult = Shape; - if(NbModif>0) { - TopoDS_Shape aResult = aSolid; - if(!hasFailed) { - aResult = aContext->Apply(aSolid); - - ShapeFix_Edge sfe; - for(exp.Init(aResult,TopAbs_EDGE); exp.More(); exp.Next()) { - TopoDS_Edge E = TopoDS::Edge(exp.Current()); - sfe.FixVertexTolerance (E); - // ptv add fix same parameter - sfe.FixSameParameter(E, myTolerance); - } - - myContext->Replace(aSolid,aResult); - } - } -// else { - for( exp.Init(aSolid, TopAbs_FACE); exp.More(); exp.Next()) { - TopoDS_Face aFace = TopoDS::Face(exp.Current().Oriented(TopAbs_FORWARD)); - Handle(ShapeFix_Wire) sfw = new ShapeFix_Wire; - sfw->SetContext(myContext); - sfw->SetPrecision(myTolerance); - sfw->SetMinTolerance(myTolerance); - sfw->SetMaxTolerance(Max(1.,myTolerance*1000.)); - sfw->SetFace(aFace); - for ( TopoDS_Iterator iter(aFace,Standard_False); iter.More(); iter.Next()) { - TopoDS_Wire wire = TopoDS::Wire ( iter.Value() ); - sfw->Load(wire); - sfw->FixReorder(); - sfw->FixShifted(); - } - } -// } - - } // end processing each solid - - aResShape = myContext->Apply(Shape); - return aResShape; -} - - -//======================================================================= -//function : IsSameDomain -//purpose : -//======================================================================= - -Standard_Boolean BlockFix_UnionFaces::IsSameDomain(const TopoDS_Face& aFace, - const TopoDS_Face& aCheckedFace) const -{ - //checking the same handless - TopLoc_Location L1, L2; - Handle(Geom_Surface) S1, S2; - - S1 = BRep_Tool::Surface(aFace,L1); - S2 = BRep_Tool::Surface(aCheckedFace,L2); - - return (S1 == S2 && L1 == L2); -} - - -//======================================================================= -//function : MovePCurves -//purpose : -//======================================================================= - -void BlockFix_UnionFaces::MovePCurves(TopoDS_Face& aTarget, - const TopoDS_Face& aSource) const -{ - BRep_Builder B; - for(TopExp_Explorer wexp(aSource,TopAbs_WIRE);wexp.More();wexp.Next()) { - Handle(ShapeFix_Wire) sfw = new ShapeFix_Wire(TopoDS::Wire(wexp.Current()), - aTarget, Precision::Confusion()); - sfw->FixReorder(); - Standard_Boolean isReoredFailed = sfw->StatusReorder ( ShapeExtend_FAIL ); - sfw->FixEdgeCurves(); - if(isReoredFailed) - continue; - - sfw->FixShifted(); - sfw->FixDegenerated(); - - // remove degenerated edges from not degenerated points - ShapeAnalysis_Edge sae; - Handle(ShapeExtend_WireData) sewd = sfw->WireData(); - for(Standard_Integer i = 1; i<=sewd->NbEdges();i++) { - TopoDS_Edge E = sewd->Edge(i); - if(BRep_Tool::Degenerated(E)&&!sae.HasPCurve(E,aTarget)) { - sewd->Remove(i); - i--; - } - } - - TopoDS_Wire ResWire = sfw->Wire(); - B.Add(aTarget,ResWire); - } -} - diff --git a/src/GEOMAlgo/BlockFix_UnionFaces.hxx b/src/GEOMAlgo/BlockFix_UnionFaces.hxx deleted file mode 100644 index a67693762..000000000 --- a/src/GEOMAlgo/BlockFix_UnionFaces.hxx +++ /dev/null @@ -1,101 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _BlockFix_UnionFaces_HeaderFile -#define _BlockFix_UnionFaces_HeaderFile - -#ifndef _Standard_Real_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class TopoDS_Shape; -class TopoDS_Face; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class BlockFix_UnionFaces { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT BlockFix_UnionFaces(); -Standard_EXPORT Standard_Real& GetTolerance() ; -Standard_EXPORT TopoDS_Shape Perform(const TopoDS_Shape& Shape) ; -Standard_EXPORT virtual Standard_Boolean IsSameDomain(const TopoDS_Face& aFace,const TopoDS_Face& aChekedFace) const; -Standard_EXPORT virtual void MovePCurves(TopoDS_Face& aTarget,const TopoDS_Face& aSource) const; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -Standard_Real myTolerance; - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/BlockFix_UnionFaces.ixx b/src/GEOMAlgo/BlockFix_UnionFaces.ixx deleted file mode 100644 index bae71ca14..000000000 --- a/src/GEOMAlgo/BlockFix_UnionFaces.ixx +++ /dev/null @@ -1,26 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - - - - diff --git a/src/GEOMAlgo/BlockFix_UnionFaces.jxx b/src/GEOMAlgo/BlockFix_UnionFaces.jxx deleted file mode 100644 index 8ccb1344a..000000000 --- a/src/GEOMAlgo/BlockFix_UnionFaces.jxx +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _TopoDS_Face_HeaderFile -#include -#endif -#ifndef _BlockFix_UnionFaces_HeaderFile -#include -#endif diff --git a/src/GEOMAlgo/GEOMAlgo.cdl b/src/GEOMAlgo/GEOMAlgo.cdl deleted file mode 100755 index ec463fbce..000000000 --- a/src/GEOMAlgo/GEOMAlgo.cdl +++ /dev/null @@ -1,105 +0,0 @@ --- File: GEOMAlgo.cdl --- Created: Sat Dec 04 12:36:22 2004 --- Author: Peter KURNEV --- ----Copyright: Matra Datavision 2004 - - -package GEOMAlgo - - ---Purpose: - -uses - TCollection, - TColStd, - Geom, - Bnd, - gp, - GeomAdaptor, - TopAbs, - TopoDS, - TopTools, - IntTools, - BOPTools, - BOP - -is - -- enumerations - -- - enumeration State is - ST_UNKNOWN, - ST_IN, - ST_OUT, - ST_ON, - ST_ONIN, - ST_ONOUT, - ST_INOUT - end State; - -- - -- classes - -- - deferred class Algo; - deferred class ShapeAlgo; - -- - -- gluer - class Gluer; - class GlueAnalyser; - class CoupleOfShapes; - class PassKey; - class PassKeyMapHasher; - class PassKeyShape; - class SurfaceTools; - class Tools; - - -- - -- finder on - deferred class ShapeSolid; - class WireSolid; - class ShellSolid; - class VertexSolid; - class SolidSolid; - class FinderShapeOn; - -- - class FinderShapeOn1; - class StateCollector; - -- - -- instantiations - class IndexedDataMapOfPassKeyShapeListOfShape - instantiates IndexedDataMap from TCollection (PassKeyShape from GEOMAlgo, - ListOfShape from TopTools, - PassKeyMapHasher from GEOMAlgo); - - class IndexedDataMapOfShapeBox - instantiates IndexedDataMap from TCollection (Shape from TopoDS, - Box from Bnd, - ShapeMapHasher from TopTools); - class IndexedDataMapOfIntegerShape - instantiates IndexedDataMap from TCollection (Integer from Standard, - Shape from TopoDS, - MapIntegerHasher from TColStd); - - class ListOfCoupleOfShapes - instantiates List from TCollection (CoupleOfShapes from GEOMAlgo); - - - class IndexedDataMapOfShapeState - instantiates IndexedDataMap from TCollection (Shape from TopoDS, - State from TopAbs, - ShapeMapHasher from TopTools); --- - class ListOfPnt - instantiates List from TCollection (Pnt from gp); - --- class IndexedDataMapOfPassKeyInteger --- instantiates IndexedDataMap from TCollection (PassKeyRoot from GEOMAlgo, --- Integer from Standard, --- PassKeyMapHasher from GEOMAlgo); - - - class DataMapOfPassKeyInteger - instantiates DataMap from TCollection (PassKey from GEOMAlgo, - Integer from Standard, - PassKeyMapHasher from GEOMAlgo); - - -end GEOMAlgo; diff --git a/src/GEOMAlgo/GEOMAlgo_Algo.cdl b/src/GEOMAlgo/GEOMAlgo_Algo.cdl deleted file mode 100755 index c39e7fb32..000000000 --- a/src/GEOMAlgo/GEOMAlgo_Algo.cdl +++ /dev/null @@ -1,39 +0,0 @@ --- File: GEOMAlgo_Algo.cdl --- Created: Sat Dec 04 12:37:56 2004 --- Author: Peter KURNEV --- ----Copyright: Matra Datavision 2004 - - -deferred class Algo from GEOMAlgo - - ---Purpose: - ---uses ---raises - -is - Initialize - returns Algo from GEOMAlgo; - ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_Algo();" - - Perform(me:out) - is deferred; - - CheckData(me:out) - is virtual protected; - - CheckResult(me:out) - is virtual protected; - - ErrorStatus (me) - returns Integer from Standard; - - WarningStatus (me) - returns Integer from Standard; - -fields - myErrorStatus : Integer from Standard is protected; - myWarningStatus : Integer from Standard is protected; - -end Algo; diff --git a/src/GEOMAlgo/GEOMAlgo_Algo.cxx b/src/GEOMAlgo/GEOMAlgo_Algo.cxx deleted file mode 100755 index 8350180e7..000000000 --- a/src/GEOMAlgo/GEOMAlgo_Algo.cxx +++ /dev/null @@ -1,59 +0,0 @@ -// File: GEOMAlgo_Algo.cxx -// Created: Sat Dec 04 12:39:47 2004 -// Author: Peter KURNEV -// - - -#include - -//======================================================================= -// function: -// purpose: -//======================================================================= - GEOMAlgo_Algo::GEOMAlgo_Algo() -: - myErrorStatus(1), - myWarningStatus(0) -{} -//======================================================================= -// function: ~ -// purpose: -//======================================================================= - GEOMAlgo_Algo::~GEOMAlgo_Algo() -{ -} -//======================================================================= -// function: CheckData -// purpose: -//======================================================================= - void GEOMAlgo_Algo::CheckData() -{ - myErrorStatus=0; -} -//======================================================================= -// function: CheckResult -// purpose: -//======================================================================= - void GEOMAlgo_Algo::CheckResult() -{ - myErrorStatus=0; -} -//======================================================================= -// function: ErrorStatus -// purpose: -//======================================================================= - Standard_Integer GEOMAlgo_Algo::ErrorStatus()const -{ - return myErrorStatus; -} -//======================================================================= -// function: WarningStatus -// purpose: -//======================================================================= - Standard_Integer GEOMAlgo_Algo::WarningStatus()const -{ - return myWarningStatus; -} -// myErrorStatus -// -// 1 - object is just initialized diff --git a/src/GEOMAlgo/GEOMAlgo_Algo.hxx b/src/GEOMAlgo/GEOMAlgo_Algo.hxx deleted file mode 100644 index aeb974338..000000000 --- a/src/GEOMAlgo/GEOMAlgo_Algo.hxx +++ /dev/null @@ -1,99 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _GEOMAlgo_Algo_HeaderFile -#define _GEOMAlgo_Algo_HeaderFile - -#ifndef _Standard_Integer_HeaderFile -#include -#endif - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class GEOMAlgo_Algo { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT virtual void Perform() = 0; -Standard_EXPORT Standard_Integer ErrorStatus() const; -Standard_EXPORT Standard_Integer WarningStatus() const; - - - - - -protected: - - // Methods PROTECTED - // -Standard_EXPORT GEOMAlgo_Algo(); -Standard_EXPORT virtual ~GEOMAlgo_Algo(); -Standard_EXPORT virtual void CheckData() ; -Standard_EXPORT virtual void CheckResult() ; - - - // Fields PROTECTED - // -Standard_Integer myErrorStatus; -Standard_Integer myWarningStatus; - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_Algo.ixx b/src/GEOMAlgo/GEOMAlgo_Algo.ixx deleted file mode 100644 index ae1ccb962..000000000 --- a/src/GEOMAlgo/GEOMAlgo_Algo.ixx +++ /dev/null @@ -1,26 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - - - - diff --git a/src/GEOMAlgo/GEOMAlgo_Algo.jxx b/src/GEOMAlgo/GEOMAlgo_Algo.jxx deleted file mode 100644 index 3e8407ff2..000000000 --- a/src/GEOMAlgo/GEOMAlgo_Algo.jxx +++ /dev/null @@ -1,3 +0,0 @@ -#ifndef _GEOMAlgo_Algo_HeaderFile -#include -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.cdl b/src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.cdl deleted file mode 100644 index bc06cd9cc..000000000 --- a/src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.cdl +++ /dev/null @@ -1,48 +0,0 @@ --- File: GEOMAlgo_CoupleOfShapes.cdl --- Created: Wed Dec 15 13:00:10 2004 --- Author: Peter KURNEV --- ----Copyright: Matra Datavision 2004 - - -class CoupleOfShapes from GEOMAlgo - - ---Purpose: - -uses - Shape from TopoDS - ---raises - -is - Create - returns CoupleOfShapes from GEOMAlgo; - - SetShapes(me:out; - aS1: Shape from TopoDS; - aS2: Shape from TopoDS); - - SetShape1(me:out; - aS1: Shape from TopoDS); - - SetShape2(me:out; - aS2: Shape from TopoDS); - - Shapes(me; - aS1:out Shape from TopoDS; - aS2:out Shape from TopoDS); - - Shape1(me) - returns Shape from TopoDS; - ---C++:return const & - - Shape2(me) - returns Shape from TopoDS; - ---C++:return const & - -fields - - myShape1: Shape from TopoDS is protected; - myShape2: Shape from TopoDS is protected; - -end CoupleOfShapes; diff --git a/src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.cxx b/src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.cxx deleted file mode 100644 index 04252911e..000000000 --- a/src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.cxx +++ /dev/null @@ -1,65 +0,0 @@ -// File: GEOMAlgo_CoupleOfShapes.cxx -// Created: Wed Dec 15 13:03:52 2004 -// Author: Peter KURNEV -// - - -#include -//======================================================================= -//function : GEOMAlgo_CoupleOfShapes -//purpose : -//======================================================================= -GEOMAlgo_CoupleOfShapes::GEOMAlgo_CoupleOfShapes() -{} -//======================================================================= -//function : SetShapes -//purpose : -//======================================================================= -void GEOMAlgo_CoupleOfShapes::SetShapes(const TopoDS_Shape& aS1, - const TopoDS_Shape& aS2) -{ - myShape1=aS1; - myShape2=aS2; -} -//======================================================================= -//function : Shapes -//purpose : -//======================================================================= -void GEOMAlgo_CoupleOfShapes::Shapes(TopoDS_Shape& aS1, - TopoDS_Shape& aS2)const -{ - aS1=myShape1; - aS2=myShape2; -} -//======================================================================= -//function : SetShape1 -//purpose : -//======================================================================= -void GEOMAlgo_CoupleOfShapes::SetShape1(const TopoDS_Shape& aS1) -{ - myShape1=aS1; -} -//======================================================================= -//function : SetShape2 -//purpose : -//======================================================================= -void GEOMAlgo_CoupleOfShapes::SetShape2(const TopoDS_Shape& aS2) -{ - myShape2=aS2; -} -//======================================================================= -//function : Shape1 -//purpose : -//======================================================================= -const TopoDS_Shape& GEOMAlgo_CoupleOfShapes::Shape1()const -{ - return myShape1; -} -//======================================================================= -//function : Shape2 -//purpose : -//======================================================================= -const TopoDS_Shape& GEOMAlgo_CoupleOfShapes::Shape2()const -{ - return myShape2; -} diff --git a/src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.hxx b/src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.hxx deleted file mode 100644 index 26889be5e..000000000 --- a/src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.hxx +++ /dev/null @@ -1,100 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _GEOMAlgo_CoupleOfShapes_HeaderFile -#define _GEOMAlgo_CoupleOfShapes_HeaderFile - -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -class TopoDS_Shape; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class GEOMAlgo_CoupleOfShapes { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT GEOMAlgo_CoupleOfShapes(); -Standard_EXPORT void SetShapes(const TopoDS_Shape& aS1,const TopoDS_Shape& aS2) ; -Standard_EXPORT void SetShape1(const TopoDS_Shape& aS1) ; -Standard_EXPORT void SetShape2(const TopoDS_Shape& aS2) ; -Standard_EXPORT void Shapes(TopoDS_Shape& aS1,TopoDS_Shape& aS2) const; -Standard_EXPORT const TopoDS_Shape& Shape1() const; -Standard_EXPORT const TopoDS_Shape& Shape2() const; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // -TopoDS_Shape myShape1; -TopoDS_Shape myShape2; - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.ixx b/src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.ixx deleted file mode 100644 index 1e5d2f760..000000000 --- a/src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.ixx +++ /dev/null @@ -1,26 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - - - - diff --git a/src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.jxx b/src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.jxx deleted file mode 100644 index 07fd4c49f..000000000 --- a/src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.jxx +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_CoupleOfShapes_HeaderFile -#include -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger.hxx b/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger.hxx deleted file mode 100644 index 292bb3afb..000000000 --- a/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger.hxx +++ /dev/null @@ -1,106 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger_HeaderFile -#define _GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger_HeaderFile - -#ifndef _TCollection_BasicMapIterator_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_HeaderFile -#include -#endif -class Standard_NoSuchObject; -class GEOMAlgo_PassKey; -class GEOMAlgo_PassKeyMapHasher; -class GEOMAlgo_DataMapOfPassKeyInteger; -class GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger : public TCollection_BasicMapIterator { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger(); -Standard_EXPORT GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger(const GEOMAlgo_DataMapOfPassKeyInteger& aMap); -Standard_EXPORT void Initialize(const GEOMAlgo_DataMapOfPassKeyInteger& aMap) ; -Standard_EXPORT const GEOMAlgo_PassKey& Key() const; -Standard_EXPORT const Standard_Integer& Value() const; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger_0.cxx b/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger_0.cxx deleted file mode 100644 index 53a99babb..000000000 --- a/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger_0.cxx +++ /dev/null @@ -1,56 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_PassKey_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_PassKeyMapHasher_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_DataMapOfPassKeyInteger_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_HeaderFile -#include -#endif - - -#define TheKey GEOMAlgo_PassKey -#define TheKey_hxx -#define TheItem Standard_Integer -#define TheItem_hxx -#define Hasher GEOMAlgo_PassKeyMapHasher -#define Hasher_hxx -#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger -#define TCollection_DataMapNode_hxx -#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger -#define TCollection_DataMapIterator_hxx -#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger -#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_Type_() -#define TCollection_DataMap GEOMAlgo_DataMapOfPassKeyInteger -#define TCollection_DataMap_hxx -#include - diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx b/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx deleted file mode 100644 index 7226f82be..000000000 --- a/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx +++ /dev/null @@ -1,144 +0,0 @@ -// File generated by CPPExt (Transient) -// -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_HeaderFile -#define _GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_HeaderFile -#include -#endif - -#ifndef _GEOMAlgo_PassKey_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -class GEOMAlgo_PassKey; -class GEOMAlgo_PassKeyMapHasher; -class GEOMAlgo_DataMapOfPassKeyInteger; -class GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger; - - -class GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger : public TCollection_MapNode { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger(const GEOMAlgo_PassKey& K,const Standard_Integer& I,const TCollection_MapNodePtr& n); - GEOMAlgo_PassKey& Key() const; - Standard_Integer& Value() const; -Standard_EXPORT ~GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger(); - - - - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -GEOMAlgo_PassKey myKey; -Standard_Integer myValue; - - -}; - -#define TheKey GEOMAlgo_PassKey -#define TheKey_hxx -#define TheItem Standard_Integer -#define TheItem_hxx -#define Hasher GEOMAlgo_PassKeyMapHasher -#define Hasher_hxx -#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger -#define TCollection_DataMapNode_hxx -#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger -#define TCollection_DataMapIterator_hxx -#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger -#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_Type_() -#define TCollection_DataMap GEOMAlgo_DataMapOfPassKeyInteger -#define TCollection_DataMap_hxx - -#include - -#undef TheKey -#undef TheKey_hxx -#undef TheItem -#undef TheItem_hxx -#undef Hasher -#undef Hasher_hxx -#undef TCollection_DataMapNode -#undef TCollection_DataMapNode_hxx -#undef TCollection_DataMapIterator -#undef TCollection_DataMapIterator_hxx -#undef Handle_TCollection_DataMapNode -#undef TCollection_DataMapNode_Type_ -#undef TCollection_DataMap -#undef TCollection_DataMap_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_0.cxx b/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_0.cxx deleted file mode 100644 index 6035a471a..000000000 --- a/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_0.cxx +++ /dev/null @@ -1,105 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _GEOMAlgo_PassKey_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_PassKeyMapHasher_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_DataMapOfPassKeyInteger_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger_HeaderFile -#include -#endif -GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger::~GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger() {} - - - -Standard_EXPORT Handle_Standard_Type& GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger", - sizeof(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger) Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger))) { - _anOtherObject = Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger)((Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger::DynamicType() const -{ - return STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger) ; -} -Standard_Boolean GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger) == AType || TCollection_MapNode::IsKind(AType)); -} -Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger::~Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger() {} -#define TheKey GEOMAlgo_PassKey -#define TheKey_hxx -#define TheItem Standard_Integer -#define TheItem_hxx -#define Hasher GEOMAlgo_PassKeyMapHasher -#define Hasher_hxx -#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger -#define TCollection_DataMapNode_hxx -#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger -#define TCollection_DataMapIterator_hxx -#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger -#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_Type_() -#define TCollection_DataMap GEOMAlgo_DataMapOfPassKeyInteger -#define TCollection_DataMap_hxx -#include - diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapOfPassKeyInteger.hxx b/src/GEOMAlgo/GEOMAlgo_DataMapOfPassKeyInteger.hxx deleted file mode 100644 index 746ac5413..000000000 --- a/src/GEOMAlgo/GEOMAlgo_DataMapOfPassKeyInteger.hxx +++ /dev/null @@ -1,135 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _GEOMAlgo_DataMapOfPassKeyInteger_HeaderFile -#define _GEOMAlgo_DataMapOfPassKeyInteger_HeaderFile - -#ifndef _TCollection_BasicMap_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_DomainError; -class Standard_NoSuchObject; -class GEOMAlgo_PassKey; -class GEOMAlgo_PassKeyMapHasher; -class GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger; -class GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class GEOMAlgo_DataMapOfPassKeyInteger : public TCollection_BasicMap { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT GEOMAlgo_DataMapOfPassKeyInteger(const Standard_Integer NbBuckets = 1); -Standard_EXPORT GEOMAlgo_DataMapOfPassKeyInteger& Assign(const GEOMAlgo_DataMapOfPassKeyInteger& Other) ; - GEOMAlgo_DataMapOfPassKeyInteger& operator =(const GEOMAlgo_DataMapOfPassKeyInteger& Other) -{ - return Assign(Other); -} - -Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; -Standard_EXPORT void Clear() ; -~GEOMAlgo_DataMapOfPassKeyInteger() -{ - Clear(); -} - -Standard_EXPORT Standard_Boolean Bind(const GEOMAlgo_PassKey& K,const Standard_Integer& I) ; -Standard_EXPORT Standard_Boolean IsBound(const GEOMAlgo_PassKey& K) const; -Standard_EXPORT Standard_Boolean UnBind(const GEOMAlgo_PassKey& K) ; -Standard_EXPORT const Standard_Integer& Find(const GEOMAlgo_PassKey& K) const; - const Standard_Integer& operator()(const GEOMAlgo_PassKey& K) const -{ - return Find(K); -} - -Standard_EXPORT Standard_Integer& ChangeFind(const GEOMAlgo_PassKey& K) ; - Standard_Integer& operator()(const GEOMAlgo_PassKey& K) -{ - return ChangeFind(K); -} - - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // -Standard_EXPORT GEOMAlgo_DataMapOfPassKeyInteger(const GEOMAlgo_DataMapOfPassKeyInteger& Other); - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapOfPassKeyInteger_0.cxx b/src/GEOMAlgo/GEOMAlgo_DataMapOfPassKeyInteger_0.cxx deleted file mode 100644 index 0163b4e1a..000000000 --- a/src/GEOMAlgo/GEOMAlgo_DataMapOfPassKeyInteger_0.cxx +++ /dev/null @@ -1,59 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - -#ifndef _Standard_DomainError_HeaderFile -#include -#endif -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_PassKey_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_PassKeyMapHasher_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger_HeaderFile -#include -#endif - - -#define TheKey GEOMAlgo_PassKey -#define TheKey_hxx -#define TheItem Standard_Integer -#define TheItem_hxx -#define Hasher GEOMAlgo_PassKeyMapHasher -#define Hasher_hxx -#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger -#define TCollection_DataMapNode_hxx -#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger -#define TCollection_DataMapIterator_hxx -#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger -#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_Type_() -#define TCollection_DataMap GEOMAlgo_DataMapOfPassKeyInteger -#define TCollection_DataMap_hxx -#include - diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.cdl b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.cdl deleted file mode 100644 index 4f8cfaaf3..000000000 --- a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.cdl +++ /dev/null @@ -1,96 +0,0 @@ --- File: GEOMAlgo_FinderShapeOn.cdl --- Created: Tue Jan 11 14:35:52 2005 --- Author: Peter KURNEV --- ----Copyright: Matra Datavision 2005 - - -class FinderShapeOn from GEOMAlgo - inherits ShapeAlgo from GEOMAlgo - - ---Purpose: - -uses - Surface from Geom, - ShapeEnum from TopAbs, - ListOfShape from TopTools, - DataMapOfShapeShape from TopTools, - Shape from TopoDS, - State from GEOMAlgo, - IndexedDataMapOfShapeState from GEOMAlgo - ---raises - -is - Create - returns FinderShapeOn from GEOMAlgo; - ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_FinderShapeOn();" - - Perform(me:out) - is redefined; - - SetSurface(me:out; - aS:Surface from Geom); - - SetShapeType(me:out; - aST:ShapeEnum from TopAbs); - - SetState(me:out; - aSF:State from GEOMAlgo); - - Surface(me) - returns Surface from Geom; - ---C++: return const & - - ShapeType(me) - returns ShapeEnum from TopAbs; - - State(me) - returns State from GEOMAlgo; - - Shapes(me) - returns ListOfShape from TopTools; - ---C++: return const & - - -- - -- protected methods - -- - CheckData(me:out) - is redefined protected; - - MakeArgument1(me:out) - is protected; - - MakeArgument2(me:out) - is protected; - - Find(me:out) - is protected; - - Find(me:out; - aS:Shape from TopoDS) - is protected; - - FindVertices(me:out) - is protected; - - CopySource(myclass; - aS :Shape from TopoDS; - aImages : out DataMapOfShapeShape from TopTools; - aOriginals: out DataMapOfShapeShape from TopTools; - aSC : out Shape from TopoDS); - - - -fields - mySurface : Surface from Geom is protected; - myShapeType : ShapeEnum from TopAbs is protected; - myState : State from GEOMAlgo is protected; - myArg1 : Shape from TopoDS is protected; - myArg2 : Shape from TopoDS is protected; - myLS : ListOfShape from TopTools is protected; - myImages : DataMapOfShapeShape from TopTools is protected; - myMSS : IndexedDataMapOfShapeState from GEOMAlgo is protected; - myIsAnalytic : Boolean from Standard is protected; - -end FinderShapeOn; diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.cxx b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.cxx deleted file mode 100644 index ce9b55f8d..000000000 --- a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.cxx +++ /dev/null @@ -1,528 +0,0 @@ -// File: GEOMAlgo_FinderShapeOn.cxx -// Created: Tue Jan 11 14:44:31 2005 -// Author: Peter KURNEV -// - - -#include - -#include - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - -#include -#include - -#include -#include - -#include - -#include -#include -#include -#include -#include -#include -#include - -//======================================================================= -//function : GEOMAlgo_FinderShapeOn -//purpose : -//======================================================================= -GEOMAlgo_FinderShapeOn::GEOMAlgo_FinderShapeOn() -: - GEOMAlgo_ShapeAlgo() -{ - myTolerance=0.0001; - myShapeType=TopAbs_VERTEX; - myState=GEOMAlgo_ST_UNKNOWN; - myIsAnalytic=Standard_True; -} -//======================================================================= -//function : ~ -//purpose : -//======================================================================= -GEOMAlgo_FinderShapeOn::~GEOMAlgo_FinderShapeOn() -{ -} -//======================================================================= -//function : SetSurface -//purpose : -//======================================================================= -void GEOMAlgo_FinderShapeOn::SetSurface(const Handle(Geom_Surface)& aS) -{ - mySurface=aS; -} -//======================================================================= -//function : Surface -//purpose : -//======================================================================= -const Handle(Geom_Surface)& GEOMAlgo_FinderShapeOn::Surface() const -{ - return mySurface; -} -//======================================================================= -//function : SetShapeType -//purpose : -//======================================================================= -void GEOMAlgo_FinderShapeOn::SetShapeType(const TopAbs_ShapeEnum aType) -{ - myShapeType=aType; -} -//======================================================================= -//function : ShapeType -//purpose : -//======================================================================= -TopAbs_ShapeEnum GEOMAlgo_FinderShapeOn::ShapeType()const -{ - return myShapeType; -} -//======================================================================= -//function : SetState -//purpose : -//======================================================================= -void GEOMAlgo_FinderShapeOn::SetState(const GEOMAlgo_State aState) -{ - myState=aState; -} -//======================================================================= -//function : State -//purpose : -//======================================================================= -GEOMAlgo_State GEOMAlgo_FinderShapeOn::State() const -{ - return myState; -} -//======================================================================= -// function: Shapes -// purpose: -//======================================================================= -const TopTools_ListOfShape& GEOMAlgo_FinderShapeOn::Shapes() const -{ - Standard_Boolean bIsConformState; - Standard_Integer i, aNb; - TopAbs_State aSt; - TopTools_ListOfShape* pL; - // - pL=(TopTools_ListOfShape*) &myLS; - pL->Clear(); - // - aNb=myMSS.Extent(); - for (i=1; i<=aNb; ++i) { - const TopoDS_Shape& aS=myMSS.FindKey(i); - aSt=myMSS.FindFromIndex(i); - // - bIsConformState=GEOMAlgo_SurfaceTools::IsConformState(aSt, myState); - if (bIsConformState) { - pL->Append(aS); - } - } - return myLS; -} -//======================================================================= -//function : Perform -//purpose : -//======================================================================= -void GEOMAlgo_FinderShapeOn::Perform() -{ - myErrorStatus=0; - myWarningStatus=0; - myLS.Clear(); - myMSS.Clear(); - // - if (!myResult.IsNull()){ - myResult.Nullify(); - } - // - CheckData(); - if(myErrorStatus) { - return; - } - // - myIsAnalytic=GEOMAlgo_SurfaceTools::IsAnalytic(mySurface); - // - MakeArgument1(); - if(myErrorStatus) { - return; - } - // - if (myIsAnalytic && myShapeType==TopAbs_VERTEX) { - FindVertices(); - return; - } - // - MakeArgument2(); - if(myErrorStatus) { - return; - } - // - Find(); - if(myErrorStatus || myWarningStatus) { - return; - } - // -} -//======================================================================= -//function : FindVertices -//purpose : -//======================================================================= -void GEOMAlgo_FinderShapeOn::FindVertices() -{ - Standard_Integer i, aNb, iErr; - TopAbs_State aSt; - TopAbs_Orientation aOr; - gp_Pnt aP; - TopTools_IndexedMapOfShape aM; - // - TopExp::MapShapes(myArg1, TopAbs_FACE, aM); - const TopoDS_Face& aF=TopoDS::Face(aM(1)); - aOr=aF.Orientation(); - // - aM.Clear(); - TopExp::MapShapes(myShape, myShapeType, aM); - aNb=aM.Extent(); - if (!aNb) { - myWarningStatus=10; // No found subshapes of type myShapeType - return; - } - // - for (i=1; i<=aNb; ++i) { - const TopoDS_Shape& aS=aM(i); - const TopoDS_Vertex& aV=TopoDS::Vertex(aS); - aP=BRep_Tool::Pnt(aV); - iErr=GEOMAlgo_SurfaceTools::GetState(aP, mySurface, myTolerance, aSt); - if (aOr==TopAbs_REVERSED) { - aSt=GEOMAlgo_SurfaceTools::ReverseState(aSt); - } - myMSS.Add(aS, aSt); - } -} -//======================================================================= -//function : Find -//purpose : -//======================================================================= -void GEOMAlgo_FinderShapeOn::Find() -{ - Standard_Integer i, aNb; - Standard_Boolean bICS; - TopTools_IndexedMapOfShape aM; - // - TopExp::MapShapes(myArg2, myShapeType, aM); - // - aNb=aM.Extent(); - if (!aNb) { - myWarningStatus=10; // No found subshapes of type myShapeType - return; - } - // - bICS=GEOMAlgo_Tools::IsCompositeShape(myArg2); - if (!bICS || myIsAnalytic) { - TopoDS_Compound aCmp; - BRep_Builder aBB; - // - aBB.MakeCompound(aCmp); - for (i=1; i<=aNb; ++i) { - const TopoDS_Shape& aSi=aM(i); - aBB.Add(aCmp, aSi); - } - // - aM.Clear(); - aM.Add(aCmp); - aNb=1; - } - // - for (i=1; i<=aNb; ++i) { - const TopoDS_Shape& aS=aM(i); - Find(aS); - if (myErrorStatus) { - return; - } - } -} -//======================================================================= -//function : Find -//purpose : -//======================================================================= -void GEOMAlgo_FinderShapeOn::Find(const TopoDS_Shape& aS) -{ - myErrorStatus=0; - // - Standard_Boolean bIsDone; - Standard_Integer i, iErr; - TopAbs_State aSts[]={TopAbs_IN, TopAbs_OUT, TopAbs_ON}; - TopTools_ListIteratorOfListOfShape aIt; - BOPTools_DSFiller aDF; - // - // 1. Prepare DSFiller - aDF.SetShapes (myArg1, aS); - bIsDone=aDF.IsDone(); - if (!bIsDone) { - myErrorStatus=30; // wrong args are used for DSFiller - return; - } - aDF.Perform(); - bIsDone=aDF.IsDone(); - if (!bIsDone) { - myErrorStatus=31; // DSFiller failed - return; - } - // - // 2. Find shapes - GEOMAlgo_ShapeSolid* pSS; - GEOMAlgo_VertexSolid aVXS; - GEOMAlgo_WireSolid aWRS; - GEOMAlgo_ShellSolid aSHS; - GEOMAlgo_SolidSolid aSLS; - // - pSS=NULL; - // - switch (myShapeType) { - case TopAbs_VERTEX: - pSS=&aVXS; - break; - case TopAbs_EDGE: - pSS=&aWRS; - break; - case TopAbs_FACE: - pSS=&aSHS; - break; - case TopAbs_SOLID: - aSLS.SetShape2(myArg2); - pSS=&aSLS; - break; - default: - myErrorStatus=12; // unallowed subshape type - return; - } - // - pSS->SetFiller(aDF); - pSS->Perform(); - iErr=pSS->ErrorStatus(); - if (iErr) { - myErrorStatus=32; // builder ShapeSolid failed - return; - } - // - for (i=0; i<3; ++i) { - const TopTools_ListOfShape& aLS=pSS->Shapes(aSts[i]); - aIt.Initialize(aLS); - for (; aIt.More(); aIt.Next()) { - const TopoDS_Shape& aSImage=aIt.Value(); - if (myImages.IsBound(aSImage)) { - const TopoDS_Shape& aSx=myImages.Find(aSImage); - myMSS.Add(aSx, aSts[i]); - } - else { - myErrorStatus=33;// can not find original shape - return; - } - } - } -} -//======================================================================= -//function : MakeArgument1 -//purpose : -//======================================================================= -void GEOMAlgo_FinderShapeOn::MakeArgument1() -{ - myErrorStatus=0; - // - Standard_Integer i, aNb; - TopAbs_ShapeEnum aType; - BRepLib_FaceError aFErr; - BRepLib_MakeFace aMF; - TopTools_IndexedMapOfShape aM; - BRep_Builder aBB; - TopoDS_Face aFace; - TopoDS_Shell aSh; - TopoDS_Solid aSd; - // - // Argument 1 - if (!myIsAnalytic) { - aMF.Init(mySurface, Standard_True); - aFErr=aMF.Error(); - if (aFErr!=BRepLib_FaceDone) { - myErrorStatus=20; // can not build the face - return; - } - // - const TopoDS_Shape& aF=aMF.Shape(); - aFace=TopoDS::Face(aF); - // - // update tolerances - aM.Add(aF); - TopExp::MapShapes(aF, TopAbs_VERTEX, aM); - TopExp::MapShapes(aF, TopAbs_EDGE, aM); - aNb=aM.Extent(); - for (i=1; i<=aNb; ++i) { - const TopoDS_Shape& aS=aM(i); - aType=aS.ShapeType(); - switch (aType) { - case TopAbs_VERTEX: { - const TopoDS_Vertex& aVx=TopoDS::Vertex(aS); - aBB.UpdateVertex(aVx, myTolerance); - } - break; - case TopAbs_EDGE: { - const TopoDS_Edge& aEx=TopoDS::Edge(aS); - aBB.UpdateEdge(aEx, myTolerance); - } - break; - case TopAbs_FACE: { - const TopoDS_Face& aFx=TopoDS::Face(aS); - aBB.UpdateFace(aFx, myTolerance); - } - break; - default: - break; - } - } - } // - else { - aBB.MakeFace(aFace, mySurface, myTolerance); - } - // - // make solid - aBB.MakeShell(aSh); - aBB.Add(aSh, aFace); - aBB.MakeSolid(aSd); - aBB.Add(aSd, aSh); - myArg1=aSd; -} -//======================================================================= -//function : MakeArgument2 -//purpose : -//======================================================================= -void GEOMAlgo_FinderShapeOn::MakeArgument2() -{ - myErrorStatus=0; - // - TopoDS_Shape aSC; - TopTools_DataMapOfShapeShape aOriginals; - // - myImages.Clear(); - // - GEOMAlgo_FinderShapeOn::CopySource(myShape, myImages, aOriginals, aSC); - // - myArg2=aSC; -} -//======================================================================= -//function : CheckData -//purpose : -//======================================================================= -void GEOMAlgo_FinderShapeOn::CheckData() -{ - myErrorStatus=0; - // - if(mySurface.IsNull()) { - myErrorStatus=10; // mySurface=NULL - return; - } - // - if (myShape.IsNull()) { - myErrorStatus=11; // myShape=NULL - return; - } - // - if (!(myShapeType==TopAbs_VERTEX || - myShapeType==TopAbs_EDGE || - myShapeType==TopAbs_FACE || - myShapeType==TopAbs_SOLID)) { - myErrorStatus=12; // unallowed subshape type - return; - } - // - if (myState==GEOMAlgo_ST_UNKNOWN || - myState==GEOMAlgo_ST_INOUT) { - myErrorStatus=13; // unallowed state type - return; - } -} -// -//======================================================================= -//function : CopySource -//purpose : -//======================================================================= -void GEOMAlgo_FinderShapeOn::CopySource(const TopoDS_Shape& aE, - TopTools_DataMapOfShapeShape& aImages, - TopTools_DataMapOfShapeShape& aOriginals, - TopoDS_Shape& aEx) -{ - Standard_Boolean bFree; - TopAbs_ShapeEnum aType; - Standard_Integer aR; - BRep_Builder BB; - TopoDS_Iterator aIt; - // - aType=aE.ShapeType(); - // - if (aOriginals.IsBound(aE)) { - aEx=aOriginals.ChangeFind(aE); - return; - } - else { - aEx=aE.EmptyCopied(); - aOriginals.Bind(aE, aEx); - aImages.Bind(aEx, aE); - } - // - aR=(Standard_Integer)aType+1; - if (aR>TopAbs_VERTEX) { - return; - } - // - bFree=aEx.Free(); - aEx.Free(Standard_True); - // - aType=(TopAbs_ShapeEnum) aR; - // - aIt.Initialize(aE);//, Standard_False); - for (; aIt.More(); aIt.Next()) { - const TopoDS_Shape& aV=aIt.Value(); - TopoDS_Shape aVx; - // - CopySource (aV, aImages, aOriginals, aVx); - // - aVx.Orientation(aV.Orientation()); - BB.Add(aEx, aVx); - } - // - aEx.Free(bFree); -} - -// -// myErrorStatus : -// -// 10 -mySurface=NULL -// 11 -myShape=NULL -// 12 -unallowed type of subshapes -// 13 -unallowed state -// 20 -can not build the face -// 30 -wrong args are used for DSFiller -// 31 -DSFiller failed -// 32 -builder ShapeSolid failed -// 33 -can not find original shape -// -// myWarningStatus -// -// 10 -subshapes of type myShapeType can not be fond in myShape - diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.hxx b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.hxx deleted file mode 100644 index 42129bc28..000000000 --- a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.hxx +++ /dev/null @@ -1,144 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _GEOMAlgo_FinderShapeOn_HeaderFile -#define _GEOMAlgo_FinderShapeOn_HeaderFile - -#ifndef _Handle_Geom_Surface_HeaderFile -#include -#endif -#ifndef _TopAbs_ShapeEnum_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_State_HeaderFile -#include -#endif -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _TopTools_DataMapOfShapeShape_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_IndexedDataMapOfShapeState_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_ShapeAlgo_HeaderFile -#include -#endif -class Geom_Surface; -class TopTools_ListOfShape; -class TopoDS_Shape; -class TopTools_DataMapOfShapeShape; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class GEOMAlgo_FinderShapeOn : public GEOMAlgo_ShapeAlgo { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT GEOMAlgo_FinderShapeOn(); -Standard_EXPORT virtual ~GEOMAlgo_FinderShapeOn(); -Standard_EXPORT virtual void Perform() ; -Standard_EXPORT void SetSurface(const Handle(Geom_Surface)& aS) ; -Standard_EXPORT void SetShapeType(const TopAbs_ShapeEnum aST) ; -Standard_EXPORT void SetState(const GEOMAlgo_State aSF) ; -Standard_EXPORT const Handle_Geom_Surface& Surface() const; -Standard_EXPORT TopAbs_ShapeEnum ShapeType() const; -Standard_EXPORT GEOMAlgo_State State() const; -Standard_EXPORT const TopTools_ListOfShape& Shapes() const; -Standard_EXPORT static void CopySource(const TopoDS_Shape& aS,TopTools_DataMapOfShapeShape& aImages,TopTools_DataMapOfShapeShape& aOriginals,TopoDS_Shape& aSC) ; - - - - - -protected: - - // Methods PROTECTED - // -Standard_EXPORT virtual void CheckData() ; -Standard_EXPORT void MakeArgument1() ; -Standard_EXPORT void MakeArgument2() ; -Standard_EXPORT void Find() ; -Standard_EXPORT void Find(const TopoDS_Shape& aS) ; -Standard_EXPORT void FindVertices() ; - - - // Fields PROTECTED - // -Handle_Geom_Surface mySurface; -TopAbs_ShapeEnum myShapeType; -GEOMAlgo_State myState; -TopoDS_Shape myArg1; -TopoDS_Shape myArg2; -TopTools_ListOfShape myLS; -TopTools_DataMapOfShapeShape myImages; -GEOMAlgo_IndexedDataMapOfShapeState myMSS; -Standard_Boolean myIsAnalytic; - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.ixx b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.ixx deleted file mode 100644 index 00afa2d33..000000000 --- a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.ixx +++ /dev/null @@ -1,26 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - - - - diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.jxx b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.jxx deleted file mode 100644 index d9a848049..000000000 --- a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.jxx +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef _Geom_Surface_HeaderFile -#include -#endif -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _TopTools_DataMapOfShapeShape_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_FinderShapeOn_HeaderFile -#include -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.cdl b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.cdl deleted file mode 100644 index 24c3459dd..000000000 --- a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.cdl +++ /dev/null @@ -1,120 +0,0 @@ --- File: GEOMAlgo_FinderShapeOn1.cdl --- Created: Fri Mar 4 10:26:54 2005 --- Author: Peter KURNEV --- ----Copyright: Matra Datavision 2005 - - -class FinderShapeOn1 from GEOMAlgo - inherits ShapeAlgo from GEOMAlgo - - ---Purpose: - -uses - Surface from Geom, - Surface from GeomAdaptor, - - ShapeEnum from TopAbs, - Face from TopoDS, - Edge from TopoDS, - ListOfShape from TopTools, - - State from GEOMAlgo, - ListOfPnt from GEOMAlgo, - IndexedDataMapOfShapeState from GEOMAlgo - ---raises - -is - Create - returns FinderShapeOn1 from GEOMAlgo; - ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_FinderShapeOn1();" - - SetSurface(me:out; - aS:Surface from Geom); - - SetShapeType(me:out; - aST:ShapeEnum from TopAbs); - - SetState(me:out; - aSF:State from GEOMAlgo); - - SetNbPntsMin(me:out; - aNb:Integer from Standard); - - NbPntsMin(me) - returns Integer from Standard; - - SetNbPntsMax(me:out; - aNb:Integer from Standard); - - NbPntsMax(me) - returns Integer from Standard; - - Surface(me) - returns Surface from Geom; - ---C++: return const & - - ShapeType(me) - returns ShapeEnum from TopAbs; - - State(me) - returns State from GEOMAlgo; - - Perform(me:out) - is redefined; - - Shapes(me) - returns ListOfShape from TopTools; - ---C++: return const & - -- - -- protected methods - -- - CheckData(me:out) - is redefined protected; - - ProcessVertices(me:out) - is protected; - - ProcessEdges(me:out) - is protected; - - ProcessFaces(me:out) - is protected; - - ProcessSolids(me:out) - is protected; - - InnerPoints(me:out; - aF :Face from TopoDS; - aLP:out ListOfPnt from GEOMAlgo) - is protected; - - InnerPoints(me:out; - aE :Edge from TopoDS; - aLP:out ListOfPnt from GEOMAlgo) - is protected; - - InnerPoints(me:out; - aE :Edge from TopoDS; - aNbPnts: Integer from Standard; - aLP:out ListOfPnt from GEOMAlgo) - is protected; - - MSS (me) - returns IndexedDataMapOfShapeState from GEOMAlgo; - ---C++:return const & - -fields - mySurface : Surface from Geom is protected; - myShapeType : ShapeEnum from TopAbs is protected; - myState : State from GEOMAlgo is protected; - myNbPntsMin : Integer from Standard is protected; - myNbPntsMax : Integer from Standard is protected; - -- - myGAS : Surface from GeomAdaptor is protected; - myLS : ListOfShape from TopTools is protected; - -- - myMSS : IndexedDataMapOfShapeState from GEOMAlgo is protected; - -end FinderShapeOn1; diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.cxx b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.cxx deleted file mode 100644 index 8ceaf7c45..000000000 --- a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.cxx +++ /dev/null @@ -1,822 +0,0 @@ -// File: GEOMAlgo_FinderShapeOn1.cxx -// Created: Fri Mar 4 10:31:06 2005 -// Author: Peter KURNEV -// - - -#include -#include - - -#include -#include -#include - -#include -#include -#include - -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include -#include - -#include -#include - -#include - -#include -#include - -#include -#include -#include -#include -#include -#include - - -//======================================================================= -//function : GEOMAlgo_FinderShapeOn1 -//purpose : -//======================================================================= -GEOMAlgo_FinderShapeOn1::GEOMAlgo_FinderShapeOn1() -: - GEOMAlgo_ShapeAlgo() -{ - myTolerance=0.0001; - myShapeType=TopAbs_VERTEX; - myState=GEOMAlgo_ST_UNKNOWN; - myNbPntsMin=3; - myNbPntsMax=0; -} -//======================================================================= -//function : ~ -//purpose : -//======================================================================= -GEOMAlgo_FinderShapeOn1::~GEOMAlgo_FinderShapeOn1() -{ -} -//======================================================================= -//function : SetSurface -//purpose : -//======================================================================= -void GEOMAlgo_FinderShapeOn1::SetSurface(const Handle(Geom_Surface)& aS) -{ - mySurface=aS; -} -//======================================================================= -//function : Surface -//purpose : -//======================================================================= -const Handle(Geom_Surface)& GEOMAlgo_FinderShapeOn1::Surface() const -{ - return mySurface; -} -//======================================================================= -//function : SetShapeType -//purpose : -//======================================================================= -void GEOMAlgo_FinderShapeOn1::SetShapeType(const TopAbs_ShapeEnum aType) -{ - myShapeType=aType; -} -//======================================================================= -//function : ShapeType -//purpose : -//======================================================================= -TopAbs_ShapeEnum GEOMAlgo_FinderShapeOn1::ShapeType()const -{ - return myShapeType; -} -//======================================================================= -//function : SetState -//purpose : -//======================================================================= -void GEOMAlgo_FinderShapeOn1::SetState(const GEOMAlgo_State aState) -{ - myState=aState; -} -//======================================================================= -//function : State -//purpose : -//======================================================================= -GEOMAlgo_State GEOMAlgo_FinderShapeOn1::State() const -{ - return myState; -} -//======================================================================= -//function : SetNbPntsMin -//purpose : -//======================================================================= -void GEOMAlgo_FinderShapeOn1::SetNbPntsMin(const Standard_Integer aNb) -{ - myNbPntsMin=aNb; -} -//======================================================================= -//function : NbPntsMin -//purpose : -//======================================================================= -Standard_Integer GEOMAlgo_FinderShapeOn1::NbPntsMin()const -{ - return myNbPntsMin; -} -//======================================================================= -//function : SetNbPntsMax -//purpose : -//======================================================================= -void GEOMAlgo_FinderShapeOn1::SetNbPntsMax(const Standard_Integer aNb) -{ - myNbPntsMax=aNb; -} -//======================================================================= -//function : NbPntsMax -//purpose : -//======================================================================= -Standard_Integer GEOMAlgo_FinderShapeOn1::NbPntsMax()const -{ - return myNbPntsMax; -} -//======================================================================= -// function: MSS -// purpose: -//======================================================================= -const GEOMAlgo_IndexedDataMapOfShapeState& GEOMAlgo_FinderShapeOn1::MSS() const -{ - return myMSS; -} -//======================================================================= -// function: Shapes -// purpose: -//======================================================================= -const TopTools_ListOfShape& GEOMAlgo_FinderShapeOn1::Shapes() const -{ - Standard_Integer i, aNb; - TopTools_ListOfShape* pL; - // - pL=(TopTools_ListOfShape*) &myLS; - pL->Clear(); - // - aNb=myMSS.Extent(); - for (i=1; i<=aNb; ++i) { - const TopoDS_Shape& aS=myMSS.FindKey(i); - if (aS.ShapeType()==myShapeType) { - pL->Append(aS); - } - } - return myLS; -} -//======================================================================= -//function : Perform -//purpose : -//======================================================================= -void GEOMAlgo_FinderShapeOn1::Perform() -{ - myErrorStatus=0; - myWarningStatus=0; - myLS.Clear(); - myMSS.Clear(); - // - CheckData(); - if(myErrorStatus) { - return; - } - // - // 1 - ProcessVertices(); - if(myErrorStatus) { - return; - } - if (myShapeType==TopAbs_VERTEX) { - return; - } - // - // 2 - ProcessEdges(); - if(myErrorStatus) { - return; - } - if (myShapeType==TopAbs_EDGE) { - return; - } - // - // 3 - ProcessFaces(); - if(myErrorStatus) { - return; - } - if (myShapeType==TopAbs_FACE) { - return; - } - // - // 4 - ProcessSolids(); - // -} -//======================================================================= -//function : ProcessVertices -//purpose : -//======================================================================= -void GEOMAlgo_FinderShapeOn1::ProcessVertices() -{ - myErrorStatus=0; - // - Standard_Boolean bIsConformState; - Standard_Integer i, aNb; - gp_Pnt aP; - TopTools_IndexedMapOfShape aM; - TopAbs_State aSt; - // - TopExp::MapShapes(myShape, TopAbs_VERTEX, aM); - aNb=aM.Extent(); - for (i=1; i<=aNb; ++i) { - const TopoDS_Vertex& aV=TopoDS::Vertex(aM(i)); - aP=BRep_Tool::Pnt(aV); - // - GEOMAlgo_SurfaceTools::GetState(aP, myGAS, myTolerance, aSt); - bIsConformState=GEOMAlgo_SurfaceTools::IsConformState(aSt, myState); - // - if (myShapeType==TopAbs_VERTEX){ - if (bIsConformState) { - myMSS.Add(aV, aSt); - } - } - else if (bIsConformState || aSt==TopAbs_ON) { - myMSS.Add(aV, aSt); - } - } -} -//======================================================================= -//function : ProcessEdges -//purpose : -//======================================================================= -void GEOMAlgo_FinderShapeOn1::ProcessEdges() -{ - myErrorStatus=0; - // - Standard_Boolean bIsConformState, bIsToBreak; - Standard_Integer i, aNb, iCnt; - TopAbs_State aSt; - TopTools_IndexedMapOfShape aM; - TopExp_Explorer aExp; - GEOMAlgo_ListIteratorOfListOfPnt aIt; - GeomAbs_SurfaceType aType1; - // - aType1=myGAS.GetType(); - // - TopExp::MapShapes(myShape, TopAbs_EDGE, aM); - aNb=aM.Extent(); - for (i=1; i<=aNb; ++i) { - GEOMAlgo_ListOfPnt aLP; - GEOMAlgo_StateCollector aSC; - // - const TopoDS_Edge& aE=TopoDS::Edge(aM(i)); - // - aExp.Init(aE, TopAbs_VERTEX); - for (; aExp.More(); aExp.Next()) { - const TopoDS_Shape& aV=aExp.Current(); - // - bIsConformState=myMSS.Contains(aV); - if (!bIsConformState) { - break;// vertex has non-conformed state - } - else { - aSt=myMSS.FindFromKey(aV); - aSC.AppendState(aSt); - } - } - // - if (!bIsConformState) { - continue; // vertex has non-conformed state,skip edge - } - // - if (BRep_Tool::Degenerated(aE)) { - myMSS.Add(aE, aSt); - continue; - } - // - if (myState==GEOMAlgo_ST_ON && aType1==GeomAbs_Sphere) { - Standard_Real aT1, aT2; - Handle(Geom_Curve) aC; - GeomAdaptor_Curve aGAC; - GeomAbs_CurveType aType2; - // - aC=BRep_Tool::Curve(aE, aT1, aT2); - aGAC.Load(aC); - // - aType2=aGAC.GetType(); - if (aType2==GeomAbs_Line) { - continue; - } - } - // - InnerPoints(aE, aLP); - if (myErrorStatus) { - return; - } - // - bIsConformState=Standard_True; - aIt.Initialize(aLP); - for (iCnt=0; aIt.More(); aIt.Next(), ++iCnt) { - if (myNbPntsMax) { - if (iCnt > myNbPntsMax) { - break; - } - } - // - const gp_Pnt& aP=aIt.Value(); - GEOMAlgo_SurfaceTools::GetState(aP, myGAS, myTolerance, aSt); - bIsToBreak=aSC.AppendState(aSt); - if (bIsToBreak) { - break; - } - } - // - aSt=aSC.State(); - // - bIsConformState=GEOMAlgo_SurfaceTools::IsConformState(aSt, myState); - if (myShapeType==TopAbs_EDGE) { - if (bIsConformState) { - myMSS.Add(aE, aSt); - } - } - else if (bIsConformState || aSt==TopAbs_ON) { - myMSS.Add(aE, aSt); - } - } // for (i=1; i<=aNb; ++i) next edge -} -//======================================================================= -//function : ProcessFaces -//purpose : -//======================================================================= -void GEOMAlgo_FinderShapeOn1::ProcessFaces() -{ - myErrorStatus=0; - // - Standard_Boolean bIsConformState, bIsToBreak; - Standard_Integer i, aNbF, iCnt; - TopAbs_State aSt; - TopTools_IndexedMapOfShape aM; - TopExp_Explorer aExp; - GEOMAlgo_ListIteratorOfListOfPnt aIt; - GeomAbs_SurfaceType aType1, aType2; - // - aType1=myGAS.GetType(); - // - TopExp::MapShapes(myShape, TopAbs_FACE, aM); - aNbF=aM.Extent(); - for (i=1; i<=aNbF; ++i) { - GEOMAlgo_StateCollector aSC; - GEOMAlgo_ListOfPnt aLP; - // - const TopoDS_Face& aF=TopoDS::Face(aM(i)); - // - if (myState==GEOMAlgo_ST_ON) { - Handle(Geom_Surface) aS; - GeomAdaptor_Surface aGAS; - // - aS=BRep_Tool::Surface(aF); - aGAS.Load(aS); - aType2=aGAS.GetType(); - if (aType2!=aType1) { - continue; - } - } - // - aExp.Init(aF, TopAbs_EDGE); - for (; aExp.More(); aExp.Next()) { - const TopoDS_Shape& aE=aExp.Current(); - bIsConformState=myMSS.Contains(aE); - if (!bIsConformState) { - break;// edge has non-conformed state - } - else { - aSt=myMSS.FindFromKey(aE); - aSC.AppendState(aSt); - } - } - // - if (!bIsConformState) { - continue; // edge has non-conformed state,skip face - } - // - InnerPoints(aF, aLP); - if (myErrorStatus) { - return; - } - // - bIsConformState=Standard_True; - aIt.Initialize(aLP); - for (iCnt=0; aIt.More(); aIt.Next(), ++iCnt) { - if (myNbPntsMax) { - if (iCnt > myNbPntsMax) { - break; - } - } - // - const gp_Pnt& aP=aIt.Value(); - GEOMAlgo_SurfaceTools::GetState(aP, myGAS, myTolerance, aSt); - bIsToBreak=aSC.AppendState(aSt); - if (bIsToBreak) { - break; - } - } - // - aSt=aSC.State(); - // - bIsConformState=GEOMAlgo_SurfaceTools::IsConformState(aSt, myState); - if (myShapeType==TopAbs_FACE) { - if (bIsConformState) { - myMSS.Add(aF, aSt); - } - } - else if (bIsConformState || aSt==TopAbs_ON) { - myMSS.Add(aF, aSt); - } - }// for (i=1; i<=aNb; ++i) next face -} -//======================================================================= -//function : ProcessSolids -//purpose : -//======================================================================= -void GEOMAlgo_FinderShapeOn1::ProcessSolids() -{ - myErrorStatus=0; - // - Standard_Boolean bIsConformState; - Standard_Integer i, aNbS, j, aNbF; - TopTools_IndexedMapOfShape aM, aMF; - TopAbs_State aSt; - // - TopExp::MapShapes(myShape, TopAbs_SOLID, aM); - aNbS=aM.Extent(); - for (i=1; i<=aNbS; ++i) { - GEOMAlgo_StateCollector aSC; - // - const TopoDS_Shape& aSd=aM(i); - aMF.Clear(); - TopExp::MapShapes(aSd, TopAbs_FACE, aMF); - aNbF=aMF.Extent(); - for (j=1; j<=aNbF; ++j) { - const TopoDS_Shape& aF=aMF(j); - bIsConformState=myMSS.Contains(aF); - if (!bIsConformState) { - break;// face has non-conformed state - } - else { - aSt=myMSS.FindFromKey(aF); - aSC.AppendState(aSt); - } - } - // - if (!bIsConformState) { - continue; // face has non-conformed state,skip solid - } - // - aSt=aSC.State(); - // - bIsConformState=GEOMAlgo_SurfaceTools::IsConformState(aSt, myState); - if (bIsConformState) { - myMSS.Add(aSd, aSt); - } - } -} -// -//======================================================================= -//function : InnerPoints -//purpose : -//======================================================================= -void GEOMAlgo_FinderShapeOn1::InnerPoints(const TopoDS_Face& aF, - GEOMAlgo_ListOfPnt& aLP) -{ - myErrorStatus=0; - // - Standard_Integer j, j1, j2, k, n[4], aNbLinks, aNx, aNbMax, aNb; - Standard_Integer iCnt, *pIds; - TopLoc_Location aLoc; - Handle(Poly_Triangulation) aTRF; - TColStd_MapOfInteger aMBN; - GEOMAlgo_DataMapOfPassKeyInteger aMPKI; - GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger aIt; - gp_Pnt aP, aP1, aP2; - // - aLP.Clear(); - // - aTRF=BRep_Tool::Triangulation(aF, aLoc); - if (aTRF.IsNull()) { - myErrorStatus=20; // no triangulation found - return; - } - // - const gp_Trsf& aTrsf=aLoc.Transformation(); - const Poly_Array1OfTriangle& aTrs=aTRF->Triangles(); - const TColgp_Array1OfPnt& aNodes=aTRF->Nodes(); - // - // map link/nbtriangles - j1=aTrs.Lower(); - j2=aTrs.Upper(); - for (j=j1; j<=j2; ++j) { - const Poly_Triangle& aTr=aTrs(j); - aTr.Get(n[0], n[1], n[2]); - n[3]=n[0]; - for (k=0; k<3; ++k) { - GEOMAlgo_PassKey aPK; - // - aPK.SetIds(n[k], n[k+1]); - if (aMPKI.IsBound(aPK)) { - Standard_Integer& iCntX=aMPKI.ChangeFind(aPK); - ++iCntX; - } - else { - aMPKI.Bind(aPK, 1); - } - } - } - // - // boundary nodes aMBN - aNbLinks=aMPKI.Extent(); - aIt.Initialize(aMPKI); - for (; aIt.More(); aIt.Next()) { - iCnt=aIt.Value(); - if (iCnt==1) { - const GEOMAlgo_PassKey& aPK=aIt.Key(); - aNbMax=aPK.NbMax(); - pIds=(Standard_Integer*)aPK.Key(); - for (k=1; k<3; ++k) { - aNx=*(pIds+aNbMax-k); - aMBN.Add(aNx); - } - } - } - // - // inner nodes=all_nodes - boundary_nodes - j1=aNodes.Lower(); - j2=aNodes.Upper(); - for (j=j1; j<=j2; ++j) { - if (!aMBN.Contains(j)) { - aP=aNodes(j).Transformed(aTrsf); - aLP.Append(aP); - } - } - // - aNb=aLP.Extent(); - // - if (!aNb && myNbPntsMin) { - // try to fill it yourself - Standard_Boolean bIsDone; - Standard_Integer aN1, aN2; - Handle(Geom_Surface) aS; - GeomAdaptor_Surface aGAS; - GeomAbs_SurfaceType aType; - // - aS=BRep_Tool::Surface(aF); - aGAS.Load(aS); - aType=aGAS.GetType(); - if (aType==GeomAbs_Plane || aType==GeomAbs_Cylinder) { - // inner links - aNbLinks=aMPKI.Extent(); - aIt.Initialize(aMPKI); - for (; aIt.More(); aIt.Next()) { - iCnt=aIt.Value(); - if (iCnt>1) { - // take the first having occured inner link - // and discretize it - const GEOMAlgo_PassKey& aPK=aIt.Key(); - aNbMax=aPK.NbMax(); - pIds=(Standard_Integer*)aPK.Key(); - aN1=*(pIds+aNbMax-1); - aN2=*(pIds+aNbMax-2); - aP1=aNodes(aN1).Transformed(aTrsf); - aP2=aNodes(aN2).Transformed(aTrsf); - // - if (aType==GeomAbs_Cylinder) { - Standard_Real aTolSM; - gp_Cylinder aCyl; - // - aTolSM=1.523e-6;//~1.-cos(0.1 deg) - aCyl=aGAS.Cylinder(); - if (!GEOMAlgo_SurfaceTools::IsCoaxial(aP1, aP2, aCyl, aTolSM)) { - continue; - } - } - // - BRepLib_MakeEdge aBME(aP1, aP2); - bIsDone=aBME.IsDone(); - if (!bIsDone) { - myErrorStatus=30; //can not obtain the line fron the link - return; - } - // - const TopoDS_Shape& aSx=aBME.Shape(); - const TopoDS_Edge& aE=TopoDS::Edge(aSx); - // - InnerPoints(aE, myNbPntsMin, aLP); - break; - }// if (iCnt>1) - }// for (; aIt.More(); aIt.Next()) - }// if (aType==GeomAbs_Plane || aType==GeomAbs_Cylinder) - }// if (!aNb && myNbPntsMin) { -} -//======================================================================= -//function : InnerPoints -//purpose : -//======================================================================= -void GEOMAlgo_FinderShapeOn1::InnerPoints(const TopoDS_Edge& aE, - GEOMAlgo_ListOfPnt& aLP) -{ - myErrorStatus=0; - // - Standard_Integer j, aNbNodes, aIndex, aNb; - Handle(Poly_PolygonOnTriangulation) aPTE; - Handle(Poly_Triangulation) aTRE; - TopLoc_Location aLoc; - gp_Pnt aP; - // - aLP.Clear(); - BRep_Tool::PolygonOnTriangulation(aE, aPTE, aTRE, aLoc); - if (aTRE.IsNull() || aPTE.IsNull()) { - myErrorStatus=20; // no triangulation found - return; - } - // - const gp_Trsf& aTrsf=aLoc.Transformation(); - const TColgp_Array1OfPnt& aNodes=aTRE->Nodes(); - // - aNbNodes=aPTE->NbNodes(); - const TColStd_Array1OfInteger& aInds=aPTE->Nodes(); - for (j=2; jD0(aT, aP); - aLP.Append(aP); - } -} - -//======================================================================= -//function : CheckData -//purpose : -//======================================================================= -void GEOMAlgo_FinderShapeOn1::CheckData() -{ - myErrorStatus=0; - // - if(mySurface.IsNull()) { - myErrorStatus=10; // mySurface=NULL - return; - } - // - if (myShape.IsNull()) { - myErrorStatus=11; // myShape=NULL - return; - } - // - if (!(myShapeType==TopAbs_VERTEX || - myShapeType==TopAbs_EDGE || - myShapeType==TopAbs_FACE || - myShapeType==TopAbs_SOLID)) { - myErrorStatus=12; // unallowed subshape type - return; - } - // - if (myState==GEOMAlgo_ST_UNKNOWN || - myState==GEOMAlgo_ST_INOUT) { - myErrorStatus=13; // unallowed state type - return; - } - // - GeomAbs_SurfaceType aType; - // - myGAS.Load(mySurface); - aType=myGAS.GetType(); - if (!(aType==GeomAbs_Plane || - aType==GeomAbs_Cylinder || - aType==GeomAbs_Sphere)) { - myErrorStatus=14; // unallowed surface type - } -} - -// -// myErrorStatus : -// -// 10 -mySurface=NULL -// 11 -myShape=NULL -// 12 -unallowed type of subshapes -// 13 -unallowed state -// 14 -unallowed surface type -// 15 -unallowed surface type -// 20- no triangulation found -// 30- can not obtain the line from the link - - -/* -// Chronometer -#include -#include - -Standard_STATIC(OSD_Chronometer, x_S_Chrono); -static void x_StartChrono(); -static void x_StopChrono(); -static Standard_Boolean x_IsToShow(); -// -//======================================================================= -//function : x_StartChrono -//purpose : -//======================================================================= -void x_StartChrono() -{ - if (x_IsToShow()){ - x_S_Chrono().Reset(); - x_S_Chrono().Start(); - } -} -//======================================================================= -//function : x_StopChrono -//purpose : -//======================================================================= -void x_StopChrono() -{ - if (x_IsToShow()){ - Standard_Real Chrono; - x_S_Chrono().Stop(); - x_S_Chrono().Show(Chrono); - printf(" Tps: %lf\n", Chrono); - //cout << "Tps: " << Chrono << endl; - } -} -//======================================================================= -//function : x_IsToShow -//purpose : -//======================================================================= -Standard_Boolean x_IsToShow() -{ - Standard_Boolean bFlag=Standard_False; - // - char *xr=getenv ("STDCHRONO"); - if (xr!=NULL){ - if (!strcmp (xr, "yes")) { - bFlag=!bFlag; - } - } - return bFlag; -} -*/ diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.hxx b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.hxx deleted file mode 100644 index 975e80b69..000000000 --- a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.hxx +++ /dev/null @@ -1,148 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _GEOMAlgo_FinderShapeOn1_HeaderFile -#define _GEOMAlgo_FinderShapeOn1_HeaderFile - -#ifndef _Handle_Geom_Surface_HeaderFile -#include -#endif -#ifndef _TopAbs_ShapeEnum_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_State_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _GeomAdaptor_Surface_HeaderFile -#include -#endif -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_IndexedDataMapOfShapeState_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_ShapeAlgo_HeaderFile -#include -#endif -class Geom_Surface; -class TopTools_ListOfShape; -class TopoDS_Face; -class GEOMAlgo_ListOfPnt; -class TopoDS_Edge; -class GEOMAlgo_IndexedDataMapOfShapeState; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class GEOMAlgo_FinderShapeOn1 : public GEOMAlgo_ShapeAlgo { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT GEOMAlgo_FinderShapeOn1(); -Standard_EXPORT virtual ~GEOMAlgo_FinderShapeOn1(); -Standard_EXPORT void SetSurface(const Handle(Geom_Surface)& aS) ; -Standard_EXPORT void SetShapeType(const TopAbs_ShapeEnum aST) ; -Standard_EXPORT void SetState(const GEOMAlgo_State aSF) ; -Standard_EXPORT void SetNbPntsMin(const Standard_Integer aNb) ; -Standard_EXPORT Standard_Integer NbPntsMin() const; -Standard_EXPORT void SetNbPntsMax(const Standard_Integer aNb) ; -Standard_EXPORT Standard_Integer NbPntsMax() const; -Standard_EXPORT const Handle_Geom_Surface& Surface() const; -Standard_EXPORT TopAbs_ShapeEnum ShapeType() const; -Standard_EXPORT GEOMAlgo_State State() const; -Standard_EXPORT virtual void Perform() ; -Standard_EXPORT const TopTools_ListOfShape& Shapes() const; -Standard_EXPORT const GEOMAlgo_IndexedDataMapOfShapeState& MSS() const; - - - - - -protected: - - // Methods PROTECTED - // -Standard_EXPORT virtual void CheckData() ; -Standard_EXPORT void ProcessVertices() ; -Standard_EXPORT void ProcessEdges() ; -Standard_EXPORT void ProcessFaces() ; -Standard_EXPORT void ProcessSolids() ; -Standard_EXPORT void InnerPoints(const TopoDS_Face& aF,GEOMAlgo_ListOfPnt& aLP) ; -Standard_EXPORT void InnerPoints(const TopoDS_Edge& aE,GEOMAlgo_ListOfPnt& aLP) ; -Standard_EXPORT void InnerPoints(const TopoDS_Edge& aE,const Standard_Integer aNbPnts,GEOMAlgo_ListOfPnt& aLP) ; - - - // Fields PROTECTED - // -Handle_Geom_Surface mySurface; -TopAbs_ShapeEnum myShapeType; -GEOMAlgo_State myState; -Standard_Integer myNbPntsMin; -Standard_Integer myNbPntsMax; -GeomAdaptor_Surface myGAS; -TopTools_ListOfShape myLS; -GEOMAlgo_IndexedDataMapOfShapeState myMSS; - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.ixx b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.ixx deleted file mode 100644 index 6c8932859..000000000 --- a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.ixx +++ /dev/null @@ -1,26 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - - - - diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.jxx b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.jxx deleted file mode 100644 index 2dc017a38..000000000 --- a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.jxx +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef _Geom_Surface_HeaderFile -#include -#endif -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _TopoDS_Face_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_ListOfPnt_HeaderFile -#include -#endif -#ifndef _TopoDS_Edge_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_IndexedDataMapOfShapeState_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_FinderShapeOn1_HeaderFile -#include -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_GlueAnalyser.cdl b/src/GEOMAlgo/GEOMAlgo_GlueAnalyser.cdl deleted file mode 100644 index ce1cef8f5..000000000 --- a/src/GEOMAlgo/GEOMAlgo_GlueAnalyser.cdl +++ /dev/null @@ -1,63 +0,0 @@ --- File: GEOMAlgo_GlueAnalyser.cdl --- Created: Wed Dec 15 11:03:03 2004 --- Author: Peter KURNEV --- ----Copyright: Matra Datavision 2004 - - -class GlueAnalyser from GEOMAlgo - inherits Gluer from GEOMAlgo - ---Purpose: - -uses - ShapeEnum from TopAbs, - ListOfShape from TopTools, - ListOfCoupleOfShapes from GEOMAlgo - ---raises - -is - Create - returns GlueAnalyser from GEOMAlgo; - ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_GlueAnalyser();" - - Perform(me:out) - is redefined; - - HasSolidsToGlue(me) - returns Boolean from Standard; - - SolidsToGlue(me) - returns ListOfCoupleOfShapes from GEOMAlgo; - ---C++:return const & - - HasSolidsAlone(me) - returns Boolean from Standard; - - SolidsAlone(me) - returns ListOfShape from TopTools; - ---C++:return const & - - DetectVertices(me:out) - is protected; - - DetectEdges(me:out) - is protected; - - DetectFaces(me:out) - is protected; - - DetectShapes(me:out; - aType:ShapeEnum from TopAbs) - is protected; - - DetectSolids (me:out) - is protected; - - - -fields - mySolidsToGlue : ListOfCoupleOfShapes from GEOMAlgo is protected; - mySolidsAlone : ListOfShape from TopTools is protected; - -end GlueAnalyser; diff --git a/src/GEOMAlgo/GEOMAlgo_GlueAnalyser.cxx b/src/GEOMAlgo/GEOMAlgo_GlueAnalyser.cxx deleted file mode 100644 index dfdc79c7c..000000000 --- a/src/GEOMAlgo/GEOMAlgo_GlueAnalyser.cxx +++ /dev/null @@ -1,439 +0,0 @@ -// File: GEOMAlgo_GlueDetector.cxx -// Created: Wed Dec 15 11:08:09 2004 -// Author: Peter KURNEV -// - - -#include - -#include -#include -#include -#include -#include - -#include - -#include - -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//======================================================================= -//function : -//purpose : -//======================================================================= - GEOMAlgo_GlueAnalyser::GEOMAlgo_GlueAnalyser() -: - GEOMAlgo_Gluer() -{} -//======================================================================= -//function : ~ -//purpose : -//======================================================================= - GEOMAlgo_GlueAnalyser::~GEOMAlgo_GlueAnalyser() -{} -//======================================================================= -//function : HasSolidsToGlue -//purpose : -//======================================================================= - Standard_Boolean GEOMAlgo_GlueAnalyser::HasSolidsToGlue()const -{ - return !mySolidsToGlue.IsEmpty(); -} -//======================================================================= -//function : HasSolidsAlone -//purpose : -//======================================================================= - Standard_Boolean GEOMAlgo_GlueAnalyser::HasSolidsAlone()const -{ - return !mySolidsAlone.IsEmpty(); -} -//======================================================================= -//function : SolidsToGlue -//purpose : -//======================================================================= - const GEOMAlgo_ListOfCoupleOfShapes& GEOMAlgo_GlueAnalyser::SolidsToGlue()const -{ - return mySolidsToGlue; -} -//======================================================================= -//function : SolidsAlone -//purpose : -//======================================================================= - const TopTools_ListOfShape& GEOMAlgo_GlueAnalyser::SolidsAlone()const -{ - return mySolidsAlone; -} -//======================================================================= -//function : Perform -//purpose : -//======================================================================= - void GEOMAlgo_GlueAnalyser::Perform() -{ - myErrorStatus=0; - myWarningStatus=0; - // - mySolidsToGlue.Clear(); - mySolidsAlone.Clear(); - // - CheckData(); - if (myErrorStatus) { - return; - } - // - InnerTolerance(); - if (myErrorStatus) { - return; - } - // - DetectVertices(); - if (myErrorStatus) { - return; - } - // - DetectEdges(); - if (myErrorStatus) { - return; - } - // - DetectFaces(); - if (myErrorStatus) { - return; - } - // - DetectSolids(); - if (myErrorStatus) { - return; - } -} -//======================================================================= -//function : DetectVertices -//purpose : -//======================================================================= - void GEOMAlgo_GlueAnalyser::DetectVertices() -{ - myErrorStatus=0; - // - Standard_Integer j, i, aNbV, aIndex, aNbVSD; - TColStd_ListIteratorOfListOfInteger aIt; - Handle(Bnd_HArray1OfBox) aHAB; - Bnd_BoundSortBox aBSB; - TopoDS_Shape aSTmp, aVF; - TopoDS_Vertex aVnew; - TopTools_IndexedMapOfShape aMV, aMVProcessed; - TopTools_ListIteratorOfListOfShape aItS; - TopTools_DataMapIteratorOfDataMapOfShapeListOfShape aItIm; - GEOMAlgo_IndexedDataMapOfIntegerShape aMIS; - GEOMAlgo_IndexedDataMapOfShapeBox aMSB; - // - TopExp::MapShapes(myShape, TopAbs_VERTEX, aMV); - aNbV=aMV.Extent(); - if (!aNbV) { - myErrorStatus=2; // no vertices in source shape - return; - } - // - aHAB=new Bnd_HArray1OfBox(1, aNbV); - // - for (i=1; i<=aNbV; ++i) { - const TopoDS_Shape& aV=aMV(i); - Bnd_Box aBox; - // - aBox.SetGap(myTol); - BRepBndLib::Add(aV, aBox); - aHAB->SetValue(i, aBox); - aMIS.Add(i, aV); - aMSB.Add(aV, aBox); - } - // - aBSB.Initialize(aHAB); - // - for (i=1; i<=aNbV; ++i) { - const TopoDS_Shape& aV=aMV(i); - // - if (aMVProcessed.Contains(aV)) { - continue; - } - // - const Bnd_Box& aBoxV=aMSB.FindFromKey(aV); - const TColStd_ListOfInteger& aLI=aBSB.Compare(aBoxV); - aNbVSD=aLI.Extent(); - if (!aNbVSD) { - myErrorStatus=3; // it must not be - return; - } - // - // Images - TopTools_ListOfShape aLVSD; - // - aIt.Initialize(aLI); - for (j=0; aIt.More(); aIt.Next(), ++j) { - aIndex=aIt.Value(); - const TopoDS_Shape& aVx=aMIS.FindFromKey(aIndex); - if(!j) { - aVF=aVx; - } - aLVSD.Append(aVx); - aMVProcessed.Add(aVx); - } - myImages.Bind(aVF, aLVSD); - } - // Origins - aItIm.Initialize(myImages); - for (; aItIm.More(); aItIm.Next()) { - const TopoDS_Shape& aV=aItIm.Key(); - const TopTools_ListOfShape& aLVSD=aItIm.Value(); - // - aItS.Initialize(aLVSD); - for (; aItS.More(); aItS.Next()) { - const TopoDS_Shape& aVSD=aItS.Value(); - if (!myOrigins.IsBound(aVSD)) { - myOrigins.Bind(aVSD, aV); - } - } - } -} -//======================================================================= -//function : DetectFaces -//purpose : -//======================================================================= - void GEOMAlgo_GlueAnalyser::DetectFaces() -{ - DetectShapes(TopAbs_FACE); -} -//======================================================================= -//function : DetectEdges -//purpose : -//======================================================================= - void GEOMAlgo_GlueAnalyser::DetectEdges() -{ - DetectShapes(TopAbs_EDGE); -} -//======================================================================= -//function : DetectShapes -//purpose : -//======================================================================= - void GEOMAlgo_GlueAnalyser::DetectShapes(const TopAbs_ShapeEnum aType) -{ - myErrorStatus=0; - // - Standard_Integer i, aNbF, aNbSDF, iErr; - TopoDS_Shape aNewShape; - TopTools_IndexedMapOfShape aMF; - TopTools_ListIteratorOfListOfShape aItS; - GEOMAlgo_PassKeyShape aPKF; - GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape aMPKLF; - // - TopExp::MapShapes(myShape, aType, aMF); - // - aNbF=aMF.Extent(); - for (i=1; i<=aNbF; ++i) { - const TopoDS_Shape& aS=aMF(i); - // - aPKF.Clear(); - if (aType==TopAbs_FACE) { - const TopoDS_Face& aF=TopoDS::Face(aS); - FacePassKey(aF, aPKF); - } - else if (aType==TopAbs_EDGE) { - const TopoDS_Edge& aE=TopoDS::Edge(aS); - EdgePassKey(aE, aPKF); - } - // - if (myErrorStatus) { - return; - } - // - if (aMPKLF.Contains(aPKF)) { - TopTools_ListOfShape& aLSDF=aMPKLF.ChangeFromKey(aPKF); - aLSDF.Append(aS); - } - else { - TopTools_ListOfShape aLSDF; - // - aLSDF.Append(aS); - aMPKLF.Add(aPKF, aLSDF); - } - } - // check geometric coincidence - if (myCheckGeometry) { - iErr=GEOMAlgo_Tools::RefineSDShapes(aMPKLF, myTol, myContext); //XX - if (iErr) { - myErrorStatus=200; - return; - } - } - // - // Images/Origins - aNbF=aMPKLF.Extent(); - for (i=1; i<=aNbF; ++i) { - const TopTools_ListOfShape& aLSDF=aMPKLF(i); - aNbSDF=aLSDF.Extent(); - if (!aNbSDF) { - myErrorStatus=4; // it must not be - } - // - const TopoDS_Shape& aS1=aLSDF.First(); - aNewShape=aS1; - // - myImages.Bind(aNewShape, aLSDF); - // origins - aItS.Initialize(aLSDF); - for (; aItS.More(); aItS.Next()) { - const TopoDS_Shape& aFSD=aItS.Value(); - if (!myOrigins.IsBound(aFSD)) { - myOrigins.Bind(aFSD, aNewShape); - } - } - } -} -//======================================================================= -//function : DetectSolids -//purpose : -//======================================================================= - void GEOMAlgo_GlueAnalyser::DetectSolids() -{ - myErrorStatus=0; - // - Standard_Integer i, aNbF, aNbS, aNbC, aNbX; - TopoDS_Compound aCmp; - BRep_Builder aBB; - TopTools_IndexedDataMapOfShapeListOfShape aMFS; - TopTools_IndexedMapOfShape aMx, aMS; - TopTools_DataMapIteratorOfDataMapOfShapeListOfShape aItIm; - GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape aMPKLS; - GEOMAlgo_PassKeyShape aPKSx; - GEOMAlgo_CoupleOfShapes aCS; - // - aBB.MakeCompound(aCmp); - // - TopExp::MapShapesAndAncestors(myShape, TopAbs_FACE, TopAbs_SOLID, aMFS); - // - aItIm.Initialize(myImages); - for (; aItIm.More(); aItIm.Next()) { - const TopoDS_Shape& aIm=aItIm.Key(); - if (aIm.ShapeType()!=TopAbs_FACE) { - continue; - } - // - const TopTools_ListOfShape& aLF=aItIm.Value(); - aNbF=aLF.Extent(); - if (aNbF!=2) { - continue; - } - // - TopoDS_Shape aSx[2], aFx[2]; - // - aFx[0]=aLF.First(); - aFx[1]=aLF.Last(); - for (i=0; i<2; ++i) { - if (!aMFS.Contains(aFx[i])) { - continue;// it must not be so - } - // - const TopTools_ListOfShape& aLS=aMFS.FindFromKey(aFx[i]); - aNbS=aLS.Extent(); - if (aNbS!=1) { - continue; - } - aSx[i]=aLS.First(); - } - // - if (aSx[0].IsNull() || aSx[1].IsNull()) { - continue; - } - // - aPKSx.Clear(); - aPKSx.SetIds(aSx[0], aSx[1]); - // - if (!aMPKLS.Contains(aPKSx)) { - TopTools_ListOfShape aLSx; - // - aLSx.Append(aSx[0]); - aLSx.Append(aSx[1]); - // - aMPKLS.Add(aPKSx, aLSx); - } - } - // - mySolidsToGlue.Clear(); - mySolidsAlone.Clear(); - - // - aNbC=aMPKLS.Extent(); - if (!aNbC) { - return; - } - // - for (i=1; i<=aNbC; ++i) { - const TopTools_ListOfShape& aLSx=aMPKLS(i); - const TopoDS_Shape& aSx1=aLSx.First(); - const TopoDS_Shape& aSx2=aLSx.Last(); - aCS.SetShape1(aSx1); - aCS.SetShape2(aSx2); - mySolidsToGlue.Append(aCS); - // - if (!aMx.Contains(aSx1)) { - aBB.Add(aCmp, aSx1); - aMx.Add(aSx1); - } - if (!aMx.Contains(aSx2)) { - aBB.Add(aCmp, aSx2); - aMx.Add(aSx2); - } - } - myResult=aCmp; - // - // check alone solids - TopExp::MapShapes(myShape, TopAbs_SOLID, aMS); - // - aNbX=aMx.Extent(); - for (i=1; i<=aNbX; ++i) { - const TopoDS_Shape& aSx=aMx(i); - if (!aMS.Contains(aSx)) { - mySolidsAlone.Append(aSx); - } - } -} - -/* -// A - // Make vertices - aMV.Clear(); - aItIm.Initialize(myImages); - for (; aItIm.More(); aItIm.Next()) { - const TopoDS_Shape& aV=aItIm.Key(); - aMV.Add(aV); - const TopTools_ListOfShape& aLVSD=aItIm.Value(); - MakeVertex(aLVSD, aVnew);//ZZ - myImages.Bind(aVnew, aLVSD); - } - // - aNbV=aMV.Extent(); - for (i=1; i<=aNbV; ++i) { - const TopoDS_Shape& aV=aMV(i); - myImages.UnBind(aV); - } - // - */ diff --git a/src/GEOMAlgo/GEOMAlgo_GlueAnalyser.hxx b/src/GEOMAlgo/GEOMAlgo_GlueAnalyser.hxx deleted file mode 100644 index 4262f95b9..000000000 --- a/src/GEOMAlgo/GEOMAlgo_GlueAnalyser.hxx +++ /dev/null @@ -1,118 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _GEOMAlgo_GlueAnalyser_HeaderFile -#define _GEOMAlgo_GlueAnalyser_HeaderFile - -#ifndef _GEOMAlgo_ListOfCoupleOfShapes_HeaderFile -#include -#endif -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_Gluer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -#ifndef _TopAbs_ShapeEnum_HeaderFile -#include -#endif -class GEOMAlgo_ListOfCoupleOfShapes; -class TopTools_ListOfShape; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class GEOMAlgo_GlueAnalyser : public GEOMAlgo_Gluer { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT GEOMAlgo_GlueAnalyser(); -Standard_EXPORT virtual ~GEOMAlgo_GlueAnalyser(); -Standard_EXPORT virtual void Perform() ; -Standard_EXPORT Standard_Boolean HasSolidsToGlue() const; -Standard_EXPORT const GEOMAlgo_ListOfCoupleOfShapes& SolidsToGlue() const; -Standard_EXPORT Standard_Boolean HasSolidsAlone() const; -Standard_EXPORT const TopTools_ListOfShape& SolidsAlone() const; - - - - - -protected: - - // Methods PROTECTED - // -Standard_EXPORT void DetectVertices() ; -Standard_EXPORT void DetectEdges() ; -Standard_EXPORT void DetectFaces() ; -Standard_EXPORT void DetectShapes(const TopAbs_ShapeEnum aType) ; -Standard_EXPORT void DetectSolids() ; - - - // Fields PROTECTED - // -GEOMAlgo_ListOfCoupleOfShapes mySolidsToGlue; -TopTools_ListOfShape mySolidsAlone; - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_GlueAnalyser.ixx b/src/GEOMAlgo/GEOMAlgo_GlueAnalyser.ixx deleted file mode 100644 index da6caa203..000000000 --- a/src/GEOMAlgo/GEOMAlgo_GlueAnalyser.ixx +++ /dev/null @@ -1,26 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - - - - diff --git a/src/GEOMAlgo/GEOMAlgo_GlueAnalyser.jxx b/src/GEOMAlgo/GEOMAlgo_GlueAnalyser.jxx deleted file mode 100644 index e44fa2d72..000000000 --- a/src/GEOMAlgo/GEOMAlgo_GlueAnalyser.jxx +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef _GEOMAlgo_ListOfCoupleOfShapes_HeaderFile -#include -#endif -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_GlueAnalyser_HeaderFile -#include -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_Gluer.cdl b/src/GEOMAlgo/GEOMAlgo_Gluer.cdl deleted file mode 100755 index 00447584a..000000000 --- a/src/GEOMAlgo/GEOMAlgo_Gluer.cdl +++ /dev/null @@ -1,141 +0,0 @@ --- File: GEOMAlgo_Gluer.cdl --- Created: Sat Dec 04 12:41:32 2004 --- Author: Peter KURNEV --- ----Copyright: Matra Datavision 2004 - - -class Gluer from GEOMAlgo - inherits ShapeAlgo from GEOMAlgo - - ---Purpose: - -uses - ShapeEnum from TopAbs, - Shape from TopoDS, - Edge from TopoDS, - Face from TopoDS, - Vertex from TopoDS, - ListOfShape from TopTools, - DataMapOfShapeShape from TopTools, - DataMapOfShapeListOfShape from TopTools, - Context from IntTools, - PassKeyShape from GEOMAlgo - ---raises - -is - Create - returns Gluer from GEOMAlgo; - ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_Gluer();" - - SetCheckGeometry (me:out; - aFlag:Boolean from Standard); - - CheckGeometry (me) - returns Boolean from Standard; - - Perform(me:out) - is redefined; - - AloneShapes(me) - returns Integer from Standard; - - --modified by NIZNHY-PKV Fri Jan 21 14:16:58 2005f- - Modified(me:out; - S : Shape from TopoDS) - returns ListOfShape from TopTools; - ---C++: return const & - - Generated(me:out; - S : Shape from TopoDS) - returns ListOfShape from TopTools; - ---C++: return const & - - IsDeleted (me:out; - S : Shape from TopoDS) - returns Boolean from Standard; - --modified by NIZNHY-PKV Fri Jan 21 14:17:04 2005t - - CheckData(me:out) - is redefined protected; - - CheckResult (me:out) - is redefined protected; - - MakeVertices(me:out) - is protected; - - MakeEdges(me:out) - is protected; - - MakeFaces(me:out) - is protected; - - MakeShapes(me:out; - aType:ShapeEnum from TopAbs) - is protected; - - MakeShells(me:out) - is protected; - - MakeSolids(me:out) - is protected; - - InnerTolerance(me:out) - is protected; - - EdgePassKey(me:out; - aE:Edge from TopoDS; - aPK:out PassKeyShape from GEOMAlgo) - is protected; - - FacePassKey(me:out; - aF:Face from TopoDS; - aPK:out PassKeyShape from GEOMAlgo) - is protected; - - MakeVertex(me:out; - aLV : ListOfShape from TopTools; - aNewV: out Vertex from TopoDS) - is protected; - MakeEdge(me:out; - aEdge : Edge from TopoDS; - aNewEdge: out Edge from TopoDS) - is protected; - - MakeFace(me:out; - aFace : Face from TopoDS; - aNewEdge: out Face from TopoDS) - is protected; - - IsToReverse(me:out; - aFR : Face from TopoDS; - aF : Face from TopoDS) - returns Boolean from Standard - is protected; - - HasNewSubShape(me; - aS : Shape from TopoDS) - returns Boolean from Standard - is protected; --- - Images(me) - returns DataMapOfShapeListOfShape from TopTools; - ---C++:return const & - - Origins(me) - returns DataMapOfShapeShape from TopTools; - ---C++:return const & - -fields - myCheckGeometry : Boolean from Standard is protected; - myTol : Real from Standard is protected; - myImages : DataMapOfShapeListOfShape from TopTools is protected; - myOrigins : DataMapOfShapeShape from TopTools is protected; - myNbAlone : Integer from Standard is protected; ----- - myGenerated : ListOfShape from TopTools is protected; ----- - -end Gluer; diff --git a/src/GEOMAlgo/GEOMAlgo_Gluer.cxx b/src/GEOMAlgo/GEOMAlgo_Gluer.cxx deleted file mode 100755 index 76bba07cc..000000000 --- a/src/GEOMAlgo/GEOMAlgo_Gluer.cxx +++ /dev/null @@ -1,989 +0,0 @@ -// File: GEOMAlgo_Gluer.cxx -// Created: Sat Dec 04 12:45:53 2004 -// Author: Peter KURNEV -// - - -#include - -#include -#include - -#include -#include -#include - -#include -#include - -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -// - -static - void GetSubShapes(const TopoDS_Shape& aS, - TopTools_IndexedMapOfShape& aMSS); - -//======================================================================= -//function : GEOMAlgo_Gluer -//purpose : -//======================================================================= -GEOMAlgo_Gluer::GEOMAlgo_Gluer() -: - GEOMAlgo_ShapeAlgo() -{ - myTolerance=0.0001; - myTol=myTolerance; - myCheckGeometry=Standard_True; - myNbAlone=0; -} -//======================================================================= -//function : ~GEOMAlgo_Gluer -//purpose : -//======================================================================= -GEOMAlgo_Gluer::~GEOMAlgo_Gluer() -{ -} -//======================================================================= -//function : SetCheckGeometry -//purpose : -//======================================================================= -void GEOMAlgo_Gluer::SetCheckGeometry(const Standard_Boolean aFlag) -{ - myCheckGeometry=aFlag; -} -//======================================================================= -//function : CheckGeometry -//purpose : -//======================================================================= -Standard_Boolean GEOMAlgo_Gluer::CheckGeometry() const -{ - return myCheckGeometry; -} -//======================================================================= -//function : AloneShapes -//purpose : -//======================================================================= -Standard_Integer GEOMAlgo_Gluer::AloneShapes()const -{ - return myNbAlone; -} -//======================================================================= -//function : Images -//purpose : -//======================================================================= -const TopTools_DataMapOfShapeListOfShape& GEOMAlgo_Gluer::Images()const -{ - return myImages; -} -//======================================================================= -//function : Origins -//purpose : -//======================================================================= -const TopTools_DataMapOfShapeShape& GEOMAlgo_Gluer::Origins()const -{ - return myOrigins; -} -//======================================================================= -//function : Perform -//purpose : -//======================================================================= -void GEOMAlgo_Gluer::Perform() -{ - myErrorStatus=0; - myWarningStatus=0; - // - Standard_Integer i; - const Standard_Integer aNb=8; - void (GEOMAlgo_Gluer::* pF[aNb])()={ - &GEOMAlgo_Gluer::CheckData, &GEOMAlgo_Gluer::InnerTolerance, - &GEOMAlgo_Gluer::MakeVertices, &GEOMAlgo_Gluer::MakeEdges, - &GEOMAlgo_Gluer::MakeFaces, &GEOMAlgo_Gluer::MakeShells, - &GEOMAlgo_Gluer::MakeSolids, &GEOMAlgo_Gluer::CheckResult - }; - // - for (i=0; i*pF[i])(); - if (myErrorStatus) { - return; - } - } -} -//======================================================================= -//function : MakeVertices -//purpose : -//======================================================================= -void GEOMAlgo_Gluer::MakeVertices() -{ - myErrorStatus=0; - // - Standard_Integer j, i, aNbV, aIndex, aNbVSD; - TColStd_ListIteratorOfListOfInteger aIt; - Handle(Bnd_HArray1OfBox) aHAB; - Bnd_BoundSortBox aBSB; - TopoDS_Shape aSTmp, aVF; - TopoDS_Vertex aVnew; - TopTools_IndexedMapOfShape aMV, aMVProcessed; - TopTools_ListIteratorOfListOfShape aItS; - TopTools_DataMapIteratorOfDataMapOfShapeListOfShape aItIm; - TopTools_DataMapOfShapeListOfShape aMVV; - GEOMAlgo_IndexedDataMapOfIntegerShape aMIS; - GEOMAlgo_IndexedDataMapOfShapeBox aMSB; - // - TopExp::MapShapes(myShape, TopAbs_VERTEX, aMV); - aNbV=aMV.Extent(); - if (!aNbV) { - myErrorStatus=2; // no vertices in source shape - return; - } - // - aHAB=new Bnd_HArray1OfBox(1, aNbV); - // - for (i=1; i<=aNbV; ++i) { - const TopoDS_Shape& aV=aMV(i); - Bnd_Box aBox; - // - aBox.SetGap(myTol); - BRepBndLib::Add(aV, aBox); - aHAB->SetValue(i, aBox); - aMIS.Add(i, aV); - aMSB.Add(aV, aBox); - } - // - aBSB.Initialize(aHAB); - // - for (i=1; i<=aNbV; ++i) { - const TopoDS_Shape& aV=aMV(i); - // - if (aMVProcessed.Contains(aV)) { - continue; - } - // - const Bnd_Box& aBoxV=aMSB.FindFromKey(aV); - const TColStd_ListOfInteger& aLI=aBSB.Compare(aBoxV); - aNbVSD=aLI.Extent(); - if (!aNbVSD) { - myErrorStatus=3; // it must not be - return; - } - // - // Images - // - TopTools_ListOfShape aLVSD; - // - aIt.Initialize(aLI); - for (j=0; aIt.More(); aIt.Next(), ++j) { - aIndex=aIt.Value(); - const TopoDS_Shape& aVx=aMIS.FindFromKey(aIndex); - if(!j) { - aVF=aVx; - } - aLVSD.Append(aVx); - aMVProcessed.Add(aVx); - } - // - myImages.Bind(aVF, aLVSD); - } - // - // Make new vertices - aMV.Clear(); - aItIm.Initialize(myImages); - for (; aItIm.More(); aItIm.Next()) { - const TopoDS_Shape& aV=aItIm.Key(); - const TopTools_ListOfShape& aLVSD=aItIm.Value(); - aNbVSD=aLVSD.Extent(); - if (aNbVSD>1) { - aMV.Add(aV); - MakeVertex(aLVSD, aVnew); - aMVV.Bind(aVnew, aLVSD); - } - } - // - // UnBind old vertices - aNbV=aMV.Extent(); - for (i=1; i<=aNbV; ++i) { - const TopoDS_Shape& aV=aMV(i); - myImages.UnBind(aV); - } - // - // Bind new vertices - aItIm.Initialize(aMVV); - for (; aItIm.More(); aItIm.Next()) { - const TopoDS_Shape& aV=aItIm.Key(); - const TopTools_ListOfShape& aLVSD=aItIm.Value(); - myImages.Bind(aV, aLVSD); - } - // - // Origins - aItIm.Initialize(myImages); - for (; aItIm.More(); aItIm.Next()) { - const TopoDS_Shape& aV=aItIm.Key(); - const TopTools_ListOfShape& aLVSD=aItIm.Value(); - // - aItS.Initialize(aLVSD); - for (; aItS.More(); aItS.Next()) { - const TopoDS_Shape& aVSD=aItS.Value(); - if (!myOrigins.IsBound(aVSD)) { - myOrigins.Bind(aVSD, aV); - } - } - } -} -//======================================================================= -//function : MakeSolids -//purpose : -//======================================================================= -void GEOMAlgo_Gluer::MakeSolids() -{ - myErrorStatus=0; - // - Standard_Integer aNbS; - TopAbs_Orientation anOr; - TopoDS_Compound aCmp; - TopoDS_Solid aNewSolid; - TopTools_IndexedMapOfShape aMS; - TopExp_Explorer aExpS, aExp; - BRep_Builder aBB; - // - aBB.MakeCompound(aCmp); - // - aNbS=aMS.Extent(); - aExpS.Init(myShape, TopAbs_SOLID); - for (; aExpS.More(); aExpS.Next()) { - const TopoDS_Solid& aSolid=TopoDS::Solid(aExpS.Current()); - if (aMS.Contains(aSolid)) { - continue; - } - aMS.Add(aSolid); - // - anOr=aSolid.Orientation(); - // - aBB.MakeSolid(aNewSolid); - aNewSolid.Orientation(anOr); - // - aExp.Init(aSolid, TopAbs_SHELL); - for (; aExp.More(); aExp.Next()) { - const TopoDS_Shape& aShell=aExp.Current(); - const TopoDS_Shape& aShellR=myOrigins.Find(aShell); - aBB.Add(aNewSolid, aShellR); - } - // - TopTools_ListOfShape aLS; - // - aLS.Append(aSolid); - myImages.Bind(aNewSolid, aLS); - myOrigins.Bind(aSolid, aNewSolid); - // - aBB.Add(aCmp, aNewSolid); - } - // - myResult=aCmp; - // - aNbS=aMS.Extent(); - if (aNbS) { - Standard_Real aTol=1.e-7; - BOP_CorrectTolerances::CorrectCurveOnSurface(myResult); - } -} -//======================================================================= -//function : MakeShells -//purpose : -//======================================================================= -void GEOMAlgo_Gluer::MakeShells() -{ - myErrorStatus=0; - // - Standard_Boolean bIsToReverse; - Standard_Integer i, aNbS; - TopAbs_Orientation anOr; - TopoDS_Shell aNewShell; - TopoDS_Face aFR; - TopTools_IndexedMapOfShape aMS; - TopExp_Explorer aExp; - BRep_Builder aBB; - // - TopExp::MapShapes(myShape, TopAbs_SHELL, aMS); - // - aNbS=aMS.Extent(); - for (i=1; i<=aNbS; ++i) { - const TopoDS_Shell& aShell=TopoDS::Shell(aMS(i)); - anOr=aShell.Orientation(); - // - aBB.MakeShell(aNewShell); - aNewShell.Orientation(anOr); - aExp.Init(aShell, TopAbs_FACE); - for (; aExp.More(); aExp.Next()) { - const TopoDS_Face& aF=TopoDS::Face(aExp.Current()); - aFR=TopoDS::Face(myOrigins.Find(aF)); - if (aFR.IsSame(aF)) { - aBB.Add(aNewShell, aF); - continue; - } - bIsToReverse=IsToReverse(aFR, aF); - if (bIsToReverse) { - aFR.Reverse(); - } - aBB.Add(aNewShell, aFR); - } - // - TopTools_ListOfShape aLS; - // - aLS.Append(aShell); - myImages.Bind(aNewShell, aLS); - myOrigins.Bind(aShell, aNewShell); - } -} -//======================================================================= -//function : MakeFaces -//purpose : -//======================================================================= -void GEOMAlgo_Gluer::MakeFaces() -{ - MakeShapes(TopAbs_FACE); -} -//======================================================================= -//function : MakeEdges -//purpose : -//======================================================================= -void GEOMAlgo_Gluer::MakeEdges() -{ - MakeShapes(TopAbs_EDGE); -} -//======================================================================= -//function : MakeShapes -//purpose : -//======================================================================= -void GEOMAlgo_Gluer::MakeShapes(const TopAbs_ShapeEnum aType) -{ - myErrorStatus=0; - // - Standard_Boolean bHasNewSubShape; - Standard_Integer i, aNbF, aNbSDF, iErr; - TopoDS_Shape aNewShape; - TopTools_IndexedMapOfShape aMF; - TopTools_ListIteratorOfListOfShape aItS; - GEOMAlgo_PassKeyShape aPKF; - GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape aMPKLF; - // - TopExp::MapShapes(myShape, aType, aMF); - // - aNbF=aMF.Extent(); - for (i=1; i<=aNbF; ++i) { - const TopoDS_Shape& aS=aMF(i); - // - aPKF.Clear(); - if (aType==TopAbs_FACE) { - const TopoDS_Face& aF=TopoDS::Face(aS); - FacePassKey(aF, aPKF); - } - else if (aType==TopAbs_EDGE) { - const TopoDS_Edge& aE=TopoDS::Edge(aS); - EdgePassKey(aE, aPKF); - } - // - if (myErrorStatus) { - return; - } - // - if (aMPKLF.Contains(aPKF)) { - TopTools_ListOfShape& aLSDF=aMPKLF.ChangeFromKey(aPKF); - aLSDF.Append(aS); - } - else { - TopTools_ListOfShape aLSDF; - // - aLSDF.Append(aS); - aMPKLF.Add(aPKF, aLSDF); - } - } - // check geometric coincidence - if (myCheckGeometry) { - iErr=GEOMAlgo_Tools::RefineSDShapes(aMPKLF, myTol, myContext); - if (iErr) { - myErrorStatus=200; - return; - } - } - // - // Images/Origins - // - aNbF=aMPKLF.Extent(); - for (i=1; i<=aNbF; ++i) { - const TopTools_ListOfShape& aLSDF=aMPKLF(i); - aNbSDF=aLSDF.Extent(); - if (!aNbSDF) { - myErrorStatus=4; // it must not be - } - // - const TopoDS_Shape& aS1=aLSDF.First(); - // - bHasNewSubShape=Standard_True; - // prevent creation of a new shape if there are not - // new subshapes of aSS among the originals - if (aNbSDF==1) { - bHasNewSubShape=HasNewSubShape(aS1); - if (!bHasNewSubShape) { - aNewShape=aS1; - aNewShape.Orientation(TopAbs_FORWARD); - } - } - // - if (bHasNewSubShape) { - if (aType==TopAbs_FACE) { - TopoDS_Face aNewFace; - // - const TopoDS_Face& aF1=TopoDS::Face(aS1); - MakeFace(aF1, aNewFace); - aNewShape=aNewFace; - } - else if (aType==TopAbs_EDGE) { - TopoDS_Edge aNewEdge; - // - const TopoDS_Edge& aE1=TopoDS::Edge(aS1); - MakeEdge(aE1, aNewEdge); - aNewShape=aNewEdge; - } - } - // - myImages.Bind(aNewShape, aLSDF); - // origins - aItS.Initialize(aLSDF); - for (; aItS.More(); aItS.Next()) { - const TopoDS_Shape& aFSD=aItS.Value(); - if (!myOrigins.IsBound(aFSD)) { - myOrigins.Bind(aFSD, aNewShape); - } - } - } -} -//======================================================================= -//function : CheckResult -//purpose : -//======================================================================= -void GEOMAlgo_Gluer::CheckResult() -{ - myErrorStatus=0; - // - if (myResult.IsNull()) { - myErrorStatus=6; - return; - } - // - Standard_Boolean bFound; - Standard_Integer i, j, aNbS, aNbFS, aNbSx; - TopTools_IndexedMapOfShape aMS, aMFS; - TopTools_IndexedDataMapOfShapeListOfShape aMFR; - // - TopExp::MapShapesAndAncestors(myResult, TopAbs_FACE, TopAbs_SOLID, aMFR); - TopExp::MapShapes(myResult, TopAbs_SOLID, aMS); - // - - myNbAlone=0; - aNbS=aMS.Extent(); - for (i=1; i<=aNbS; ++i) { - const TopoDS_Shape& aSolid=aMS(i); - // - aMFS.Clear(); - TopExp::MapShapes(aSolid, TopAbs_FACE, aMFS); - // - bFound=Standard_False; - aNbFS=aMFS.Extent(); - for (j=1; j<=aNbFS; ++j) { - const TopoDS_Shape& aFS=aMFS(j); - if (aMFR.Contains(aFS)) { - const TopTools_ListOfShape& aLSx=aMFR.FindFromKey(aFS); - aNbSx=aLSx.Extent(); - if (aNbSx==2) { - bFound=!bFound; - break; - } - } - } - // - if (!bFound) { - myWarningStatus=1; - ++myNbAlone; - //break; - } - } -} -//======================================================================= -//function : CheckData -//purpose : -//======================================================================= -void GEOMAlgo_Gluer::CheckData() -{ - myErrorStatus=0; - // - if (myShape.IsNull()) { - myErrorStatus=5; - return; - } -} -//======================================================================= -//function : InnerTolerance -//purpose : -//======================================================================= -void GEOMAlgo_Gluer::InnerTolerance() -{ - myErrorStatus=0; - // - /* - Standard_Integer i; - Standard_Real aX[3][2], dH, dHmin, aCoef, aTolTresh; - Bnd_Box aBox; - // - BRepBndLib::Add(myShape, aBox); - aBox.Get(aX[0][0], aX[1][0], aX[2][0], aX[0][1], aX[1][1], aX[2][1]); - // - dHmin=aX[0][1]-aX[0][0]; - for (i=1; i<3; ++i) { - dH=aX[i][1]-aX[i][0]; - if (dHaTolTresh) { - myTol=aTolTresh; - } - */ - myTol=myTolerance; -} -//======================================================================= -//function : FacePassKey -//purpose : -//======================================================================= -void GEOMAlgo_Gluer::FacePassKey(const TopoDS_Face& aF, - GEOMAlgo_PassKeyShape& aPK) -{ - Standard_Integer i, aNbE, aNbMax; - TopTools_ListOfShape aLE; - TopTools_IndexedMapOfShape aME; - // - TopExp::MapShapes(aF, TopAbs_EDGE, aME); - aNbE=aME.Extent(); - aNbMax=aPK.NbMax(); - if (!aNbE || aNbE>aNbMax) { - myErrorStatus=101; // temprorary - return; - } - // - for (i=1; i<=aNbE; ++i) { - const TopoDS_Shape& aE=aME(i); - if (!myOrigins.IsBound(aE)) { - myErrorStatus=102; - return; - } - const TopoDS_Shape& aER=myOrigins.Find(aE); - aLE.Append(aER); - } - aPK.SetIds(aLE); -} -//======================================================================= -//function : EdgePassKey -//purpose : -//======================================================================= -void GEOMAlgo_Gluer::EdgePassKey(const TopoDS_Edge& aE, - GEOMAlgo_PassKeyShape& aPK) -{ - TopoDS_Vertex aV1, aV2; - // - TopExp::Vertices(aE, aV1, aV2); - // - if (!myOrigins.IsBound(aV1) || !myOrigins.IsBound(aV2) ) { - myErrorStatus=100; - return; - } - const TopoDS_Shape& aVR1=myOrigins.Find(aV1); - const TopoDS_Shape& aVR2=myOrigins.Find(aV2); - aPK.SetIds(aVR1, aVR2); -} -//======================================================================= -//function : MakeVertex -//purpose : -//======================================================================= -void GEOMAlgo_Gluer::MakeVertex(const TopTools_ListOfShape& aLV, - TopoDS_Vertex& aNewVertex) -{ - Standard_Integer aNbV; - Standard_Real aTolV, aD, aDmax; - gp_XYZ aGC; - gp_Pnt aP3D, aPGC; - TopoDS_Vertex aVx; - BRep_Builder aBB; - TopTools_ListIteratorOfListOfShape aIt; - // - aNbV=aLV.Extent(); - if (!aNbV) { - return; - } - // - // center of gravity - aGC.SetCoord(0.,0.,0.); - aIt.Initialize(aLV); - for (; aIt.More(); aIt.Next()) { - aVx=TopoDS::Vertex(aIt.Value()); - aP3D=BRep_Tool::Pnt(aVx); - aGC+=aP3D.XYZ(); - } - aGC/=(Standard_Real)aNbV; - aPGC.SetXYZ(aGC); - // - // tolerance value - aDmax=-1.; - aIt.Initialize(aLV); - for (; aIt.More(); aIt.Next()) { - aVx=TopoDS::Vertex(aIt.Value()); - aP3D=BRep_Tool::Pnt(aVx); - aTolV=BRep_Tool::Tolerance(aVx); - aD=aPGC.Distance(aP3D)+aTolV; - if (aD>aDmax) { - aDmax=aD; - } - } - // - aBB.MakeVertex (aNewVertex, aPGC, aDmax); -} -//======================================================================= -//function : MakeEdge -//purpose : -//======================================================================= -void GEOMAlgo_Gluer::MakeEdge(const TopoDS_Edge& aE, - TopoDS_Edge& aNewEdge) -{ - myErrorStatus=0; - // - Standard_Boolean bIsDE; - Standard_Real aT1, aT2; - TopoDS_Vertex aV1, aV2, aVR1, aVR2; - TopoDS_Edge aEx; - // - bIsDE=BRep_Tool::Degenerated(aE); - // - aEx=aE; - aEx.Orientation(TopAbs_FORWARD); - // - TopExp::Vertices(aEx, aV1, aV2); - // - aT1=BRep_Tool::Parameter(aV1, aEx); - aT2=BRep_Tool::Parameter(aV2, aEx); - // - aVR1=TopoDS::Vertex(myOrigins.Find(aV1)); - aVR1.Orientation(TopAbs_FORWARD); - aVR2=TopoDS::Vertex(myOrigins.Find(aV2)); - aVR2.Orientation(TopAbs_REVERSED); - // - if (bIsDE) { - Standard_Real aTol; - BRep_Builder aBB; - TopoDS_Edge E; - TopAbs_Orientation anOrE; - // - anOrE=aE.Orientation(); - aTol=BRep_Tool::Tolerance(aE); - // - E=aEx; - E.EmptyCopy(); - // - aBB.Add (E, aVR1); - aBB.Add (E, aVR2); - aBB.Range(E, aT1, aT2); - aBB.Degenerated(E, Standard_True); - aBB.UpdateEdge(E, aTol); - // - aNewEdge=E; - } - // - else { - BOPTools_Tools::MakeSplitEdge(aEx, aVR1, aT1, aVR2, aT2, aNewEdge); - } -} -// -//======================================================================= -//function : MakeFace -//purpose : -//======================================================================= -void GEOMAlgo_Gluer::MakeFace(const TopoDS_Face& aF, - TopoDS_Face& aNewFace) -{ - myErrorStatus=0; - // - Standard_Boolean bIsToReverse, bIsUPeriodic; - Standard_Real aTol, aUMin, aUMax, aVMin, aVMax; - TopoDS_Edge aER; - TopoDS_Wire newWire; - TopoDS_Face aFFWD, newFace; - TopLoc_Location aLoc; - Handle(Geom_Surface) aS; - Handle(Geom2d_Curve) aC2D; - TopExp_Explorer aExpW, aExpE; - BRep_Builder aBB; - // - aFFWD=aF; - aFFWD.Orientation(TopAbs_FORWARD); - // - aS=BRep_Tool::Surface(aFFWD, aLoc); - bIsUPeriodic=GEOMAlgo_Tools::IsUPeriodic(aS); - aTol=BRep_Tool::Tolerance(aFFWD); - BRepTools::UVBounds(aF, aUMin, aUMax, aVMin, aVMax); - // - aBB.MakeFace (newFace, aS, aLoc, aTol); - // - aExpW.Init(aFFWD, TopAbs_WIRE); - for (; aExpW.More(); aExpW.Next()) { - aBB.MakeWire(newWire); - const TopoDS_Wire& aW=TopoDS::Wire(aExpW.Current()); - aExpE.Init(aW, TopAbs_EDGE); - for (; aExpE.More(); aExpE.Next()) { - const TopoDS_Edge& aE=TopoDS::Edge(aExpE.Current()); - aER=TopoDS::Edge(myOrigins.Find(aE)); - // - aER.Orientation(TopAbs_FORWARD); - if (!BRep_Tool::Degenerated(aER)) { - // build p-curve - if (bIsUPeriodic) { - GEOMAlgo_Tools::RefinePCurveForEdgeOnFace(aER, aFFWD, aUMin, aUMax); - } - BOPTools_Tools2D::BuildPCurveForEdgeOnFace(aER, aFFWD); - - // orient image - bIsToReverse=BOPTools_Tools3D::IsSplitToReverse1(aER, aE, myContext); - if (bIsToReverse) { - aER.Reverse(); - } - } - else { - aER.Orientation(aE.Orientation()); - } - // - aBB.Add(newWire, aER); - } - //modified by NIZNHY-PKV Mon Jan 31 17:26:36 2005f - // - TopTools_ListOfShape aLW; - // - aLW.Append(aW); - myImages.Bind(newWire, aLW); - myOrigins.Bind(aW, newWire); - // - //modified by NIZNHY-PKV Mon Jan 31 17:26:41 2005 t - aBB.Add(newFace, newWire); - } - aNewFace=newFace; -} -//======================================================================= -//function : IsToReverse -//purpose : -//======================================================================= -Standard_Boolean GEOMAlgo_Gluer::IsToReverse(const TopoDS_Face& aFR, - const TopoDS_Face& aF) -{ - Standard_Boolean bRet; - Standard_Real aT, aT1, aT2, aTR, aScPr; - TopExp_Explorer aExp; - Handle(Geom_Curve)aC3D; - gp_Pnt aP; - gp_Dir aDNF, aDNFR; - // - bRet=Standard_False; - // - aExp.Init(aF, TopAbs_EDGE); - for (; aExp.More(); aExp.Next()) { - const TopoDS_Edge& aE=TopoDS::Edge(aExp.Current()); - // - if (BRep_Tool::Degenerated(aE)) { - continue; - } - // - const TopoDS_Edge& aER=TopoDS::Edge(myOrigins.Find(aE)); - // - aC3D=BRep_Tool::Curve(aE, aT1, aT2); - aT=BOPTools_Tools2D::IntermediatePoint(aT1, aT2); - aC3D->D0(aT, aP); - myContext.ProjectPointOnEdge(aP, aER, aTR); - // - BOPTools_Tools3D::GetNormalToFaceOnEdge (aE, aF, aT, aDNF); - if (aF.Orientation()==TopAbs_REVERSED) { - aDNF.Reverse(); - } - // - BOPTools_Tools3D::GetNormalToFaceOnEdge (aER, aFR, aTR, aDNFR); - if (aFR.Orientation()==TopAbs_REVERSED) { - aDNFR.Reverse(); - } - // - aScPr=aDNF*aDNFR; - return (aScPr<0.); - } - return bRet; -} -//======================================================================= -//function : HasNewSubShape -//purpose : -//======================================================================= -Standard_Boolean GEOMAlgo_Gluer::HasNewSubShape(const TopoDS_Shape& aS)const -{ - Standard_Boolean bRet; - Standard_Integer i, aNbSS; - TopTools_IndexedMapOfShape aMSS; - // - GetSubShapes(aS, aMSS); - // - bRet=Standard_False; - aNbSS=aMSS.Extent(); - for (i=1; i<=aNbSS; ++i) { - const TopoDS_Shape& aSS=aMSS(i); - if (aSS.ShapeType()==TopAbs_WIRE) { - continue; - } - // - bRet=!myOrigins.IsBound(aSS); - if (bRet) { - return bRet; - } - // - const TopoDS_Shape& aSSIm=myOrigins.Find(aSS); - bRet=!aSSIm.IsSame(aSS); - if (bRet) { - return bRet; - } - } - return bRet; -} -//======================================================================= -//function : GetSubShapes -//purpose : -//======================================================================= -void GetSubShapes(const TopoDS_Shape& aS, - TopTools_IndexedMapOfShape& aMSS) -{ - Standard_Integer aR; - TopAbs_ShapeEnum aType; - TopoDS_Iterator aIt; - // - aType=aS.ShapeType(); - aR=(Standard_Integer)aType+1; - if (aR>TopAbs_VERTEX) { - return; - } - // - aIt.Initialize(aS); - for (; aIt.More(); aIt.Next()) { - const TopoDS_Shape& aSS=aIt.Value(); - aMSS.Add(aSS); - GetSubShapes(aSS, aMSS); - } -} -//======================================================================= -//function : Modified -//purpose : -//======================================================================= -const TopTools_ListOfShape& GEOMAlgo_Gluer::Modified (const TopoDS_Shape& aS) -{ - TopAbs_ShapeEnum aType; - // - myGenerated.Clear(); - // - aType=aS.ShapeType(); - if (aType==TopAbs_VERTEX || - aType==TopAbs_EDGE || - aType==TopAbs_WIRE || //modified by NIZNHY-PKV Mon Jan 31 17:18:36 2005ft - aType==TopAbs_FACE || - aType==TopAbs_SHELL || //modified by NIZNHY-PKV Mon Jan 31 17:18:36 2005ft - aType==TopAbs_SOLID) { //modified by NIZNHY-PKV Mon Jan 31 17:18:36 2005ft - if(myOrigins.IsBound(aS)) { - const TopoDS_Shape& aSnew=myOrigins.Find(aS); - if (!aSnew.IsSame(aS)) { - myGenerated.Append(aSnew); - } - } - } - // - return myGenerated; -} -//======================================================================= -//function : Generated -//purpose : -//======================================================================= -const TopTools_ListOfShape& GEOMAlgo_Gluer::Generated(const TopoDS_Shape& ) -{ - myGenerated.Clear(); - return myGenerated; -} -//======================================================================= -//function : IsDeleted -//purpose : -//======================================================================= -Standard_Boolean GEOMAlgo_Gluer::IsDeleted (const TopoDS_Shape& aS) -{ - Standard_Boolean bRet=Standard_False; - // - const TopTools_ListOfShape& aL=Modified(aS); - bRet=!aL.IsEmpty(); - // - return bRet; -} -// -// ErrorStatus -// -// 1 - the object is just initialized -// 2 - no vertices found in source shape -// 3 - nb same domain vertices for the vertex Vi =0 -// 4 - nb same domain edges(faces) for the edge Ei(face Fi) =0 -// 5 - source shape is Null -// 6 - result shape is Null -// 101 - nb edges > PassKey.NbMax() in FacesPassKey() -// 102 - the edge Ei can not be found in myOrigins Map -// 100 - the vertex Vi can not be found in myOrigins Map -// -// WarningStatus -// -// 1 - some shapes can not be glued by faces -// diff --git a/src/GEOMAlgo/GEOMAlgo_Gluer.hxx b/src/GEOMAlgo/GEOMAlgo_Gluer.hxx deleted file mode 100644 index f37b8010c..000000000 --- a/src/GEOMAlgo/GEOMAlgo_Gluer.hxx +++ /dev/null @@ -1,152 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _GEOMAlgo_Gluer_HeaderFile -#define _GEOMAlgo_Gluer_HeaderFile - -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -#ifndef _Standard_Real_HeaderFile -#include -#endif -#ifndef _TopTools_DataMapOfShapeListOfShape_HeaderFile -#include -#endif -#ifndef _TopTools_DataMapOfShapeShape_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_ShapeAlgo_HeaderFile -#include -#endif -#ifndef _TopAbs_ShapeEnum_HeaderFile -#include -#endif -class TopTools_ListOfShape; -class TopoDS_Shape; -class TopoDS_Edge; -class GEOMAlgo_PassKeyShape; -class TopoDS_Face; -class TopoDS_Vertex; -class TopTools_DataMapOfShapeListOfShape; -class TopTools_DataMapOfShapeShape; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class GEOMAlgo_Gluer : public GEOMAlgo_ShapeAlgo { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT GEOMAlgo_Gluer(); -Standard_EXPORT virtual ~GEOMAlgo_Gluer(); -Standard_EXPORT void SetCheckGeometry(const Standard_Boolean aFlag) ; -Standard_EXPORT Standard_Boolean CheckGeometry() const; -Standard_EXPORT virtual void Perform() ; -Standard_EXPORT Standard_Integer AloneShapes() const; -Standard_EXPORT const TopTools_ListOfShape& Modified(const TopoDS_Shape& S) ; -Standard_EXPORT const TopTools_ListOfShape& Generated(const TopoDS_Shape& S) ; -Standard_EXPORT Standard_Boolean IsDeleted(const TopoDS_Shape& S) ; -Standard_EXPORT const TopTools_DataMapOfShapeListOfShape& Images() const; -Standard_EXPORT const TopTools_DataMapOfShapeShape& Origins() const; - - - - - -protected: - - // Methods PROTECTED - // -Standard_EXPORT virtual void CheckData() ; -Standard_EXPORT virtual void CheckResult() ; -Standard_EXPORT void MakeVertices() ; -Standard_EXPORT void MakeEdges() ; -Standard_EXPORT void MakeFaces() ; -Standard_EXPORT void MakeShapes(const TopAbs_ShapeEnum aType) ; -Standard_EXPORT void MakeShells() ; -Standard_EXPORT void MakeSolids() ; -Standard_EXPORT void InnerTolerance() ; -Standard_EXPORT void EdgePassKey(const TopoDS_Edge& aE,GEOMAlgo_PassKeyShape& aPK) ; -Standard_EXPORT void FacePassKey(const TopoDS_Face& aF,GEOMAlgo_PassKeyShape& aPK) ; -Standard_EXPORT void MakeVertex(const TopTools_ListOfShape& aLV,TopoDS_Vertex& aNewV) ; -Standard_EXPORT void MakeEdge(const TopoDS_Edge& aEdge,TopoDS_Edge& aNewEdge) ; -Standard_EXPORT void MakeFace(const TopoDS_Face& aFace,TopoDS_Face& aNewEdge) ; -Standard_EXPORT Standard_Boolean IsToReverse(const TopoDS_Face& aFR,const TopoDS_Face& aF) ; -Standard_EXPORT Standard_Boolean HasNewSubShape(const TopoDS_Shape& aS) const; - - - // Fields PROTECTED - // -Standard_Boolean myCheckGeometry; -Standard_Real myTol; -TopTools_DataMapOfShapeListOfShape myImages; -TopTools_DataMapOfShapeShape myOrigins; -Standard_Integer myNbAlone; -TopTools_ListOfShape myGenerated; - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_Gluer.ixx b/src/GEOMAlgo/GEOMAlgo_Gluer.ixx deleted file mode 100644 index b7abfc516..000000000 --- a/src/GEOMAlgo/GEOMAlgo_Gluer.ixx +++ /dev/null @@ -1,26 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - - - - diff --git a/src/GEOMAlgo/GEOMAlgo_Gluer.jxx b/src/GEOMAlgo/GEOMAlgo_Gluer.jxx deleted file mode 100644 index 62ed2afca..000000000 --- a/src/GEOMAlgo/GEOMAlgo_Gluer.jxx +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _TopoDS_Edge_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_PassKeyShape_HeaderFile -#include -#endif -#ifndef _TopoDS_Face_HeaderFile -#include -#endif -#ifndef _TopoDS_Vertex_HeaderFile -#include -#endif -#ifndef _TopTools_DataMapOfShapeListOfShape_HeaderFile -#include -#endif -#ifndef _TopTools_DataMapOfShapeShape_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_Gluer_HeaderFile -#include -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx deleted file mode 100644 index 3f620afd0..000000000 --- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx +++ /dev/null @@ -1,143 +0,0 @@ -// File generated by CPPExt (Transient) -// -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_HeaderFile -#define _GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_HeaderFile -#include -#endif - -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -class TopoDS_Shape; -class TColStd_MapIntegerHasher; -class GEOMAlgo_IndexedDataMapOfIntegerShape; - - -class GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape : public TCollection_MapNode { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape(const Standard_Integer& K1,const Standard_Integer K2,const TopoDS_Shape& I,const TCollection_MapNodePtr& n1,const TCollection_MapNodePtr& n2); - Standard_Integer& Key1() const; - Standard_Integer& Key2() const; - TCollection_MapNodePtr& Next2() const; - TopoDS_Shape& Value() const; -Standard_EXPORT ~GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape(); - - - - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -Standard_Integer myKey1; -Standard_Integer myKey2; -TopoDS_Shape myValue; -TCollection_MapNodePtr myNext2; - - -}; - -#define TheKey Standard_Integer -#define TheKey_hxx -#define TheItem TopoDS_Shape -#define TheItem_hxx -#define Hasher TColStd_MapIntegerHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape -#define TCollection_IndexedDataMapNode_Type_() GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_Type_() -#define TCollection_IndexedDataMap GEOMAlgo_IndexedDataMapOfIntegerShape -#define TCollection_IndexedDataMap_hxx - -#include - -#undef TheKey -#undef TheKey_hxx -#undef TheItem -#undef TheItem_hxx -#undef Hasher -#undef Hasher_hxx -#undef TCollection_IndexedDataMapNode -#undef TCollection_IndexedDataMapNode_hxx -#undef Handle_TCollection_IndexedDataMapNode -#undef TCollection_IndexedDataMapNode_Type_ -#undef TCollection_IndexedDataMap -#undef TCollection_IndexedDataMap_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_0.cxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_0.cxx deleted file mode 100644 index 9c2564b33..000000000 --- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_0.cxx +++ /dev/null @@ -1,100 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _TColStd_MapIntegerHasher_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_IndexedDataMapOfIntegerShape_HeaderFile -#include -#endif -GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape::~GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape() {} - - - -Standard_EXPORT Handle_Standard_Type& GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape", - sizeof(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape) Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape))) { - _anOtherObject = Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)((Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape::DynamicType() const -{ - return STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape) ; -} -Standard_Boolean GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape) == AType || TCollection_MapNode::IsKind(AType)); -} -Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape::~Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape() {} -#define TheKey Standard_Integer -#define TheKey_hxx -#define TheItem TopoDS_Shape -#define TheItem_hxx -#define Hasher TColStd_MapIntegerHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape -#define TCollection_IndexedDataMapNode_Type_() GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_Type_() -#define TCollection_IndexedDataMap GEOMAlgo_IndexedDataMapOfIntegerShape -#define TCollection_IndexedDataMap_hxx -#include - diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape.hxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape.hxx deleted file mode 100644 index af09ac4f9..000000000 --- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape.hxx +++ /dev/null @@ -1,147 +0,0 @@ -// File generated by CPPExt (Transient) -// -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape_HeaderFile -#define _GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape_HeaderFile -#include -#endif - -#ifndef _GEOMAlgo_PassKey_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -class GEOMAlgo_PassKey; -class TopTools_ListOfShape; -class GEOMAlgo_PassKeyMapHasher; -class GEOMAlgo_IndexedDataMapOfPassKeyListOfShape; - - -class GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape : public TCollection_MapNode { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape(const GEOMAlgo_PassKey& K1,const Standard_Integer K2,const TopTools_ListOfShape& I,const TCollection_MapNodePtr& n1,const TCollection_MapNodePtr& n2); - GEOMAlgo_PassKey& Key1() const; - Standard_Integer& Key2() const; - TCollection_MapNodePtr& Next2() const; - TopTools_ListOfShape& Value() const; -Standard_EXPORT ~GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape(); - - - - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -GEOMAlgo_PassKey myKey1; -Standard_Integer myKey2; -TopTools_ListOfShape myValue; -TCollection_MapNodePtr myNext2; - - -}; - -#define TheKey GEOMAlgo_PassKey -#define TheKey_hxx -#define TheItem TopTools_ListOfShape -#define TheItem_hxx -#define Hasher GEOMAlgo_PassKeyMapHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape -#define TCollection_IndexedDataMapNode_Type_() GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape_Type_() -#define TCollection_IndexedDataMap GEOMAlgo_IndexedDataMapOfPassKeyListOfShape -#define TCollection_IndexedDataMap_hxx - -#include - -#undef TheKey -#undef TheKey_hxx -#undef TheItem -#undef TheItem_hxx -#undef Hasher -#undef Hasher_hxx -#undef TCollection_IndexedDataMapNode -#undef TCollection_IndexedDataMapNode_hxx -#undef Handle_TCollection_IndexedDataMapNode -#undef TCollection_IndexedDataMapNode_Type_ -#undef TCollection_IndexedDataMap -#undef TCollection_IndexedDataMap_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape_0.cxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape_0.cxx deleted file mode 100644 index 97be9daa0..000000000 --- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape_0.cxx +++ /dev/null @@ -1,103 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _GEOMAlgo_PassKey_HeaderFile -#include -#endif -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_PassKeyMapHasher_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_IndexedDataMapOfPassKeyListOfShape_HeaderFile -#include -#endif -GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape::~GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape() {} - - - -Standard_EXPORT Handle_Standard_Type& GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape", - sizeof(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape) Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape))) { - _anOtherObject = Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape)((Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape::DynamicType() const -{ - return STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape) ; -} -Standard_Boolean GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape) == AType || TCollection_MapNode::IsKind(AType)); -} -Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape::~Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape() {} -#define TheKey GEOMAlgo_PassKey -#define TheKey_hxx -#define TheItem TopTools_ListOfShape -#define TheItem_hxx -#define Hasher GEOMAlgo_PassKeyMapHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape -#define TCollection_IndexedDataMapNode_Type_() GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape_Type_() -#define TCollection_IndexedDataMap GEOMAlgo_IndexedDataMapOfPassKeyListOfShape -#define TCollection_IndexedDataMap_hxx -#include - diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape.hxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape.hxx deleted file mode 100644 index 94b521fd1..000000000 --- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape.hxx +++ /dev/null @@ -1,147 +0,0 @@ -// File generated by CPPExt (Transient) -// -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_HeaderFile -#define _GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_HeaderFile -#include -#endif - -#ifndef _GEOMAlgo_PassKeyShape_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -class GEOMAlgo_PassKeyShape; -class TopTools_ListOfShape; -class GEOMAlgo_PassKeyMapHasher; -class GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape; - - -class GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape : public TCollection_MapNode { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape(const GEOMAlgo_PassKeyShape& K1,const Standard_Integer K2,const TopTools_ListOfShape& I,const TCollection_MapNodePtr& n1,const TCollection_MapNodePtr& n2); - GEOMAlgo_PassKeyShape& Key1() const; - Standard_Integer& Key2() const; - TCollection_MapNodePtr& Next2() const; - TopTools_ListOfShape& Value() const; -Standard_EXPORT ~GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape(); - - - - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -GEOMAlgo_PassKeyShape myKey1; -Standard_Integer myKey2; -TopTools_ListOfShape myValue; -TCollection_MapNodePtr myNext2; - - -}; - -#define TheKey GEOMAlgo_PassKeyShape -#define TheKey_hxx -#define TheItem TopTools_ListOfShape -#define TheItem_hxx -#define Hasher GEOMAlgo_PassKeyMapHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape -#define TCollection_IndexedDataMapNode_Type_() GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_Type_() -#define TCollection_IndexedDataMap GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape -#define TCollection_IndexedDataMap_hxx - -#include - -#undef TheKey -#undef TheKey_hxx -#undef TheItem -#undef TheItem_hxx -#undef Hasher -#undef Hasher_hxx -#undef TCollection_IndexedDataMapNode -#undef TCollection_IndexedDataMapNode_hxx -#undef Handle_TCollection_IndexedDataMapNode -#undef TCollection_IndexedDataMapNode_Type_ -#undef TCollection_IndexedDataMap -#undef TCollection_IndexedDataMap_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_0.cxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_0.cxx deleted file mode 100644 index be0803d75..000000000 --- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_0.cxx +++ /dev/null @@ -1,103 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _GEOMAlgo_PassKeyShape_HeaderFile -#include -#endif -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_PassKeyMapHasher_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape_HeaderFile -#include -#endif -GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape::~GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape() {} - - - -Standard_EXPORT Handle_Standard_Type& GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape", - sizeof(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape) Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape))) { - _anOtherObject = Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape)((Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape::DynamicType() const -{ - return STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape) ; -} -Standard_Boolean GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape) == AType || TCollection_MapNode::IsKind(AType)); -} -Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape::~Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape() {} -#define TheKey GEOMAlgo_PassKeyShape -#define TheKey_hxx -#define TheItem TopTools_ListOfShape -#define TheItem_hxx -#define Hasher GEOMAlgo_PassKeyMapHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape -#define TCollection_IndexedDataMapNode_Type_() GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_Type_() -#define TCollection_IndexedDataMap GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape -#define TCollection_IndexedDataMap_hxx -#include - diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx deleted file mode 100644 index 2b39ccf3b..000000000 --- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx +++ /dev/null @@ -1,147 +0,0 @@ -// File generated by CPPExt (Transient) -// -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_HeaderFile -#define _GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_HeaderFile -#include -#endif - -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Bnd_Box_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -class TopoDS_Shape; -class Bnd_Box; -class TopTools_ShapeMapHasher; -class GEOMAlgo_IndexedDataMapOfShapeBox; - - -class GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox : public TCollection_MapNode { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox(const TopoDS_Shape& K1,const Standard_Integer K2,const Bnd_Box& I,const TCollection_MapNodePtr& n1,const TCollection_MapNodePtr& n2); - TopoDS_Shape& Key1() const; - Standard_Integer& Key2() const; - TCollection_MapNodePtr& Next2() const; - Bnd_Box& Value() const; -Standard_EXPORT ~GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox(); - - - - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -TopoDS_Shape myKey1; -Standard_Integer myKey2; -Bnd_Box myValue; -TCollection_MapNodePtr myNext2; - - -}; - -#define TheKey TopoDS_Shape -#define TheKey_hxx -#define TheItem Bnd_Box -#define TheItem_hxx -#define Hasher TopTools_ShapeMapHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox -#define TCollection_IndexedDataMapNode_Type_() GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_Type_() -#define TCollection_IndexedDataMap GEOMAlgo_IndexedDataMapOfShapeBox -#define TCollection_IndexedDataMap_hxx - -#include - -#undef TheKey -#undef TheKey_hxx -#undef TheItem -#undef TheItem_hxx -#undef Hasher -#undef Hasher_hxx -#undef TCollection_IndexedDataMapNode -#undef TCollection_IndexedDataMapNode_hxx -#undef Handle_TCollection_IndexedDataMapNode -#undef TCollection_IndexedDataMapNode_Type_ -#undef TCollection_IndexedDataMap -#undef TCollection_IndexedDataMap_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_0.cxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_0.cxx deleted file mode 100644 index 832884d41..000000000 --- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_0.cxx +++ /dev/null @@ -1,103 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _Bnd_Box_HeaderFile -#include -#endif -#ifndef _TopTools_ShapeMapHasher_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_IndexedDataMapOfShapeBox_HeaderFile -#include -#endif -GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox::~GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox() {} - - - -Standard_EXPORT Handle_Standard_Type& GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox", - sizeof(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox) Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox))) { - _anOtherObject = Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)((Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox::DynamicType() const -{ - return STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox) ; -} -Standard_Boolean GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox) == AType || TCollection_MapNode::IsKind(AType)); -} -Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox::~Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox() {} -#define TheKey TopoDS_Shape -#define TheKey_hxx -#define TheItem Bnd_Box -#define TheItem_hxx -#define Hasher TopTools_ShapeMapHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox -#define TCollection_IndexedDataMapNode_Type_() GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_Type_() -#define TCollection_IndexedDataMap GEOMAlgo_IndexedDataMapOfShapeBox -#define TCollection_IndexedDataMap_hxx -#include - diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState.hxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState.hxx deleted file mode 100644 index da467f38b..000000000 --- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState.hxx +++ /dev/null @@ -1,146 +0,0 @@ -// File generated by CPPExt (Transient) -// -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState_HeaderFile -#define _GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState_HeaderFile -#include -#endif - -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _TopAbs_State_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -class TopoDS_Shape; -class TopTools_ShapeMapHasher; -class GEOMAlgo_IndexedDataMapOfShapeState; - - -class GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState : public TCollection_MapNode { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState(const TopoDS_Shape& K1,const Standard_Integer K2,const TopAbs_State& I,const TCollection_MapNodePtr& n1,const TCollection_MapNodePtr& n2); - TopoDS_Shape& Key1() const; - Standard_Integer& Key2() const; - TCollection_MapNodePtr& Next2() const; - TopAbs_State& Value() const; -Standard_EXPORT ~GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState(); - - - - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -TopoDS_Shape myKey1; -Standard_Integer myKey2; -TopAbs_State myValue; -TCollection_MapNodePtr myNext2; - - -}; - -#define TheKey TopoDS_Shape -#define TheKey_hxx -#define TheItem TopAbs_State -#define TheItem_hxx -#define Hasher TopTools_ShapeMapHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState -#define TCollection_IndexedDataMapNode_Type_() GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState_Type_() -#define TCollection_IndexedDataMap GEOMAlgo_IndexedDataMapOfShapeState -#define TCollection_IndexedDataMap_hxx - -#include - -#undef TheKey -#undef TheKey_hxx -#undef TheItem -#undef TheItem_hxx -#undef Hasher -#undef Hasher_hxx -#undef TCollection_IndexedDataMapNode -#undef TCollection_IndexedDataMapNode_hxx -#undef Handle_TCollection_IndexedDataMapNode -#undef TCollection_IndexedDataMapNode_Type_ -#undef TCollection_IndexedDataMap -#undef TCollection_IndexedDataMap_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState_0.cxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState_0.cxx deleted file mode 100644 index a29a65763..000000000 --- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState_0.cxx +++ /dev/null @@ -1,100 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _TopTools_ShapeMapHasher_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_IndexedDataMapOfShapeState_HeaderFile -#include -#endif -GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState::~GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState() {} - - - -Standard_EXPORT Handle_Standard_Type& GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState", - sizeof(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState) Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState))) { - _anOtherObject = Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState)((Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState::DynamicType() const -{ - return STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState) ; -} -Standard_Boolean GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState) == AType || TCollection_MapNode::IsKind(AType)); -} -Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState::~Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState() {} -#define TheKey TopoDS_Shape -#define TheKey_hxx -#define TheItem TopAbs_State -#define TheItem_hxx -#define Hasher TopTools_ShapeMapHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState -#define TCollection_IndexedDataMapNode_Type_() GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState_Type_() -#define TCollection_IndexedDataMap GEOMAlgo_IndexedDataMapOfShapeState -#define TCollection_IndexedDataMap_hxx -#include - diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfIntegerShape.hxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfIntegerShape.hxx deleted file mode 100644 index b67dc8c70..000000000 --- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfIntegerShape.hxx +++ /dev/null @@ -1,140 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _GEOMAlgo_IndexedDataMapOfIntegerShape_HeaderFile -#define _GEOMAlgo_IndexedDataMapOfIntegerShape_HeaderFile - -#ifndef _TCollection_BasicMap_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_DomainError; -class Standard_OutOfRange; -class Standard_NoSuchObject; -class TopoDS_Shape; -class TColStd_MapIntegerHasher; -class GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class GEOMAlgo_IndexedDataMapOfIntegerShape : public TCollection_BasicMap { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT GEOMAlgo_IndexedDataMapOfIntegerShape(const Standard_Integer NbBuckets = 1); -Standard_EXPORT GEOMAlgo_IndexedDataMapOfIntegerShape& Assign(const GEOMAlgo_IndexedDataMapOfIntegerShape& Other) ; - GEOMAlgo_IndexedDataMapOfIntegerShape& operator =(const GEOMAlgo_IndexedDataMapOfIntegerShape& Other) -{ - return Assign(Other); -} - -Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; -Standard_EXPORT void Clear() ; -~GEOMAlgo_IndexedDataMapOfIntegerShape() -{ - Clear(); -} - -Standard_EXPORT Standard_Integer Add(const Standard_Integer& K,const TopoDS_Shape& I) ; -Standard_EXPORT void Substitute(const Standard_Integer I,const Standard_Integer& K,const TopoDS_Shape& T) ; -Standard_EXPORT void RemoveLast() ; -Standard_EXPORT Standard_Boolean Contains(const Standard_Integer& K) const; -Standard_EXPORT const Standard_Integer& FindKey(const Standard_Integer I) const; -Standard_EXPORT const TopoDS_Shape& FindFromIndex(const Standard_Integer I) const; - const TopoDS_Shape& operator ()(const Standard_Integer I) const -{ - return FindFromIndex(I); -} - -Standard_EXPORT TopoDS_Shape& ChangeFromIndex(const Standard_Integer I) ; - TopoDS_Shape& operator ()(const Standard_Integer I) -{ - return ChangeFromIndex(I); -} - -Standard_EXPORT Standard_Integer FindIndex(const Standard_Integer& K) const; -Standard_EXPORT const TopoDS_Shape& FindFromKey(const Standard_Integer& K) const; -Standard_EXPORT TopoDS_Shape& ChangeFromKey(const Standard_Integer& K) ; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // -Standard_EXPORT GEOMAlgo_IndexedDataMapOfIntegerShape(const GEOMAlgo_IndexedDataMapOfIntegerShape& Other); - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfIntegerShape_0.cxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfIntegerShape_0.cxx deleted file mode 100644 index 173ef57c9..000000000 --- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfIntegerShape_0.cxx +++ /dev/null @@ -1,57 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - -#ifndef _Standard_DomainError_HeaderFile -#include -#endif -#ifndef _Standard_OutOfRange_HeaderFile -#include -#endif -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _TColStd_MapIntegerHasher_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_HeaderFile -#include -#endif - - -#define TheKey Standard_Integer -#define TheKey_hxx -#define TheItem TopoDS_Shape -#define TheItem_hxx -#define Hasher TColStd_MapIntegerHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape -#define TCollection_IndexedDataMapNode_Type_() GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_Type_() -#define TCollection_IndexedDataMap GEOMAlgo_IndexedDataMapOfIntegerShape -#define TCollection_IndexedDataMap_hxx -#include - diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyListOfShape.hxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyListOfShape.hxx deleted file mode 100644 index e89044f20..000000000 --- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyListOfShape.hxx +++ /dev/null @@ -1,141 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _GEOMAlgo_IndexedDataMapOfPassKeyListOfShape_HeaderFile -#define _GEOMAlgo_IndexedDataMapOfPassKeyListOfShape_HeaderFile - -#ifndef _TCollection_BasicMap_HeaderFile -#include -#endif -#ifndef _Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_DomainError; -class Standard_OutOfRange; -class Standard_NoSuchObject; -class GEOMAlgo_PassKey; -class TopTools_ListOfShape; -class GEOMAlgo_PassKeyMapHasher; -class GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class GEOMAlgo_IndexedDataMapOfPassKeyListOfShape : public TCollection_BasicMap { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT GEOMAlgo_IndexedDataMapOfPassKeyListOfShape(const Standard_Integer NbBuckets = 1); -Standard_EXPORT GEOMAlgo_IndexedDataMapOfPassKeyListOfShape& Assign(const GEOMAlgo_IndexedDataMapOfPassKeyListOfShape& Other) ; - GEOMAlgo_IndexedDataMapOfPassKeyListOfShape& operator =(const GEOMAlgo_IndexedDataMapOfPassKeyListOfShape& Other) -{ - return Assign(Other); -} - -Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; -Standard_EXPORT void Clear() ; -~GEOMAlgo_IndexedDataMapOfPassKeyListOfShape() -{ - Clear(); -} - -Standard_EXPORT Standard_Integer Add(const GEOMAlgo_PassKey& K,const TopTools_ListOfShape& I) ; -Standard_EXPORT void Substitute(const Standard_Integer I,const GEOMAlgo_PassKey& K,const TopTools_ListOfShape& T) ; -Standard_EXPORT void RemoveLast() ; -Standard_EXPORT Standard_Boolean Contains(const GEOMAlgo_PassKey& K) const; -Standard_EXPORT const GEOMAlgo_PassKey& FindKey(const Standard_Integer I) const; -Standard_EXPORT const TopTools_ListOfShape& FindFromIndex(const Standard_Integer I) const; - const TopTools_ListOfShape& operator ()(const Standard_Integer I) const -{ - return FindFromIndex(I); -} - -Standard_EXPORT TopTools_ListOfShape& ChangeFromIndex(const Standard_Integer I) ; - TopTools_ListOfShape& operator ()(const Standard_Integer I) -{ - return ChangeFromIndex(I); -} - -Standard_EXPORT Standard_Integer FindIndex(const GEOMAlgo_PassKey& K) const; -Standard_EXPORT const TopTools_ListOfShape& FindFromKey(const GEOMAlgo_PassKey& K) const; -Standard_EXPORT TopTools_ListOfShape& ChangeFromKey(const GEOMAlgo_PassKey& K) ; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // -Standard_EXPORT GEOMAlgo_IndexedDataMapOfPassKeyListOfShape(const GEOMAlgo_IndexedDataMapOfPassKeyListOfShape& Other); - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyListOfShape_0.cxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyListOfShape_0.cxx deleted file mode 100644 index 94bdc322b..000000000 --- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyListOfShape_0.cxx +++ /dev/null @@ -1,60 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - -#ifndef _Standard_DomainError_HeaderFile -#include -#endif -#ifndef _Standard_OutOfRange_HeaderFile -#include -#endif -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_PassKey_HeaderFile -#include -#endif -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_PassKeyMapHasher_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape_HeaderFile -#include -#endif - - -#define TheKey GEOMAlgo_PassKey -#define TheKey_hxx -#define TheItem TopTools_ListOfShape -#define TheItem_hxx -#define Hasher GEOMAlgo_PassKeyMapHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape -#define TCollection_IndexedDataMapNode_Type_() GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape_Type_() -#define TCollection_IndexedDataMap GEOMAlgo_IndexedDataMapOfPassKeyListOfShape -#define TCollection_IndexedDataMap_hxx -#include - diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape.hxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape.hxx deleted file mode 100644 index 55506997d..000000000 --- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape.hxx +++ /dev/null @@ -1,141 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape_HeaderFile -#define _GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape_HeaderFile - -#ifndef _TCollection_BasicMap_HeaderFile -#include -#endif -#ifndef _Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_DomainError; -class Standard_OutOfRange; -class Standard_NoSuchObject; -class GEOMAlgo_PassKeyShape; -class TopTools_ListOfShape; -class GEOMAlgo_PassKeyMapHasher; -class GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape : public TCollection_BasicMap { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape(const Standard_Integer NbBuckets = 1); -Standard_EXPORT GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape& Assign(const GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape& Other) ; - GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape& operator =(const GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape& Other) -{ - return Assign(Other); -} - -Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; -Standard_EXPORT void Clear() ; -~GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape() -{ - Clear(); -} - -Standard_EXPORT Standard_Integer Add(const GEOMAlgo_PassKeyShape& K,const TopTools_ListOfShape& I) ; -Standard_EXPORT void Substitute(const Standard_Integer I,const GEOMAlgo_PassKeyShape& K,const TopTools_ListOfShape& T) ; -Standard_EXPORT void RemoveLast() ; -Standard_EXPORT Standard_Boolean Contains(const GEOMAlgo_PassKeyShape& K) const; -Standard_EXPORT const GEOMAlgo_PassKeyShape& FindKey(const Standard_Integer I) const; -Standard_EXPORT const TopTools_ListOfShape& FindFromIndex(const Standard_Integer I) const; - const TopTools_ListOfShape& operator ()(const Standard_Integer I) const -{ - return FindFromIndex(I); -} - -Standard_EXPORT TopTools_ListOfShape& ChangeFromIndex(const Standard_Integer I) ; - TopTools_ListOfShape& operator ()(const Standard_Integer I) -{ - return ChangeFromIndex(I); -} - -Standard_EXPORT Standard_Integer FindIndex(const GEOMAlgo_PassKeyShape& K) const; -Standard_EXPORT const TopTools_ListOfShape& FindFromKey(const GEOMAlgo_PassKeyShape& K) const; -Standard_EXPORT TopTools_ListOfShape& ChangeFromKey(const GEOMAlgo_PassKeyShape& K) ; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // -Standard_EXPORT GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape(const GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape& Other); - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape_0.cxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape_0.cxx deleted file mode 100644 index 8d5b2b3d9..000000000 --- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape_0.cxx +++ /dev/null @@ -1,60 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - -#ifndef _Standard_DomainError_HeaderFile -#include -#endif -#ifndef _Standard_OutOfRange_HeaderFile -#include -#endif -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_PassKeyShape_HeaderFile -#include -#endif -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_PassKeyMapHasher_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_HeaderFile -#include -#endif - - -#define TheKey GEOMAlgo_PassKeyShape -#define TheKey_hxx -#define TheItem TopTools_ListOfShape -#define TheItem_hxx -#define Hasher GEOMAlgo_PassKeyMapHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape -#define TCollection_IndexedDataMapNode_Type_() GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_Type_() -#define TCollection_IndexedDataMap GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape -#define TCollection_IndexedDataMap_hxx -#include - diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeBox.hxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeBox.hxx deleted file mode 100644 index c9df51c94..000000000 --- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeBox.hxx +++ /dev/null @@ -1,141 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _GEOMAlgo_IndexedDataMapOfShapeBox_HeaderFile -#define _GEOMAlgo_IndexedDataMapOfShapeBox_HeaderFile - -#ifndef _TCollection_BasicMap_HeaderFile -#include -#endif -#ifndef _Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_DomainError; -class Standard_OutOfRange; -class Standard_NoSuchObject; -class TopoDS_Shape; -class Bnd_Box; -class TopTools_ShapeMapHasher; -class GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class GEOMAlgo_IndexedDataMapOfShapeBox : public TCollection_BasicMap { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT GEOMAlgo_IndexedDataMapOfShapeBox(const Standard_Integer NbBuckets = 1); -Standard_EXPORT GEOMAlgo_IndexedDataMapOfShapeBox& Assign(const GEOMAlgo_IndexedDataMapOfShapeBox& Other) ; - GEOMAlgo_IndexedDataMapOfShapeBox& operator =(const GEOMAlgo_IndexedDataMapOfShapeBox& Other) -{ - return Assign(Other); -} - -Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; -Standard_EXPORT void Clear() ; -~GEOMAlgo_IndexedDataMapOfShapeBox() -{ - Clear(); -} - -Standard_EXPORT Standard_Integer Add(const TopoDS_Shape& K,const Bnd_Box& I) ; -Standard_EXPORT void Substitute(const Standard_Integer I,const TopoDS_Shape& K,const Bnd_Box& T) ; -Standard_EXPORT void RemoveLast() ; -Standard_EXPORT Standard_Boolean Contains(const TopoDS_Shape& K) const; -Standard_EXPORT const TopoDS_Shape& FindKey(const Standard_Integer I) const; -Standard_EXPORT const Bnd_Box& FindFromIndex(const Standard_Integer I) const; - const Bnd_Box& operator ()(const Standard_Integer I) const -{ - return FindFromIndex(I); -} - -Standard_EXPORT Bnd_Box& ChangeFromIndex(const Standard_Integer I) ; - Bnd_Box& operator ()(const Standard_Integer I) -{ - return ChangeFromIndex(I); -} - -Standard_EXPORT Standard_Integer FindIndex(const TopoDS_Shape& K) const; -Standard_EXPORT const Bnd_Box& FindFromKey(const TopoDS_Shape& K) const; -Standard_EXPORT Bnd_Box& ChangeFromKey(const TopoDS_Shape& K) ; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // -Standard_EXPORT GEOMAlgo_IndexedDataMapOfShapeBox(const GEOMAlgo_IndexedDataMapOfShapeBox& Other); - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeBox_0.cxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeBox_0.cxx deleted file mode 100644 index a0717bcd5..000000000 --- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeBox_0.cxx +++ /dev/null @@ -1,60 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - -#ifndef _Standard_DomainError_HeaderFile -#include -#endif -#ifndef _Standard_OutOfRange_HeaderFile -#include -#endif -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _Bnd_Box_HeaderFile -#include -#endif -#ifndef _TopTools_ShapeMapHasher_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_HeaderFile -#include -#endif - - -#define TheKey TopoDS_Shape -#define TheKey_hxx -#define TheItem Bnd_Box -#define TheItem_hxx -#define Hasher TopTools_ShapeMapHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox -#define TCollection_IndexedDataMapNode_Type_() GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_Type_() -#define TCollection_IndexedDataMap GEOMAlgo_IndexedDataMapOfShapeBox -#define TCollection_IndexedDataMap_hxx -#include - diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeState.hxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeState.hxx deleted file mode 100644 index 35397a9a0..000000000 --- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeState.hxx +++ /dev/null @@ -1,143 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _GEOMAlgo_IndexedDataMapOfShapeState_HeaderFile -#define _GEOMAlgo_IndexedDataMapOfShapeState_HeaderFile - -#ifndef _TCollection_BasicMap_HeaderFile -#include -#endif -#ifndef _TopAbs_State_HeaderFile -#include -#endif -#ifndef _Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_DomainError; -class Standard_OutOfRange; -class Standard_NoSuchObject; -class TopoDS_Shape; -class TopTools_ShapeMapHasher; -class GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class GEOMAlgo_IndexedDataMapOfShapeState : public TCollection_BasicMap { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT GEOMAlgo_IndexedDataMapOfShapeState(const Standard_Integer NbBuckets = 1); -Standard_EXPORT GEOMAlgo_IndexedDataMapOfShapeState& Assign(const GEOMAlgo_IndexedDataMapOfShapeState& Other) ; - GEOMAlgo_IndexedDataMapOfShapeState& operator =(const GEOMAlgo_IndexedDataMapOfShapeState& Other) -{ - return Assign(Other); -} - -Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; -Standard_EXPORT void Clear() ; -~GEOMAlgo_IndexedDataMapOfShapeState() -{ - Clear(); -} - -Standard_EXPORT Standard_Integer Add(const TopoDS_Shape& K,const TopAbs_State& I) ; -Standard_EXPORT void Substitute(const Standard_Integer I,const TopoDS_Shape& K,const TopAbs_State& T) ; -Standard_EXPORT void RemoveLast() ; -Standard_EXPORT Standard_Boolean Contains(const TopoDS_Shape& K) const; -Standard_EXPORT const TopoDS_Shape& FindKey(const Standard_Integer I) const; -Standard_EXPORT const TopAbs_State& FindFromIndex(const Standard_Integer I) const; - const TopAbs_State& operator ()(const Standard_Integer I) const -{ - return FindFromIndex(I); -} - -Standard_EXPORT TopAbs_State& ChangeFromIndex(const Standard_Integer I) ; - TopAbs_State& operator ()(const Standard_Integer I) -{ - return ChangeFromIndex(I); -} - -Standard_EXPORT Standard_Integer FindIndex(const TopoDS_Shape& K) const; -Standard_EXPORT const TopAbs_State& FindFromKey(const TopoDS_Shape& K) const; -Standard_EXPORT TopAbs_State& ChangeFromKey(const TopoDS_Shape& K) ; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // -Standard_EXPORT GEOMAlgo_IndexedDataMapOfShapeState(const GEOMAlgo_IndexedDataMapOfShapeState& Other); - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeState_0.cxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeState_0.cxx deleted file mode 100644 index f95fd1c70..000000000 --- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeState_0.cxx +++ /dev/null @@ -1,57 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - -#ifndef _Standard_DomainError_HeaderFile -#include -#endif -#ifndef _Standard_OutOfRange_HeaderFile -#include -#endif -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _TopTools_ShapeMapHasher_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState_HeaderFile -#include -#endif - - -#define TheKey TopoDS_Shape -#define TheKey_hxx -#define TheItem TopAbs_State -#define TheItem_hxx -#define Hasher TopTools_ShapeMapHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState -#define TCollection_IndexedDataMapNode_Type_() GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState_Type_() -#define TCollection_IndexedDataMap GEOMAlgo_IndexedDataMapOfShapeState -#define TCollection_IndexedDataMap_hxx -#include - diff --git a/src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfCoupleOfShapes.hxx b/src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfCoupleOfShapes.hxx deleted file mode 100644 index 34977eb5e..000000000 --- a/src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfCoupleOfShapes.hxx +++ /dev/null @@ -1,131 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _GEOMAlgo_ListIteratorOfListOfCoupleOfShapes_HeaderFile -#define _GEOMAlgo_ListIteratorOfListOfCoupleOfShapes_HeaderFile - -#ifndef _Standard_Address_HeaderFile -#include -#endif -#ifndef _Handle_GEOMAlgo_ListNodeOfListOfCoupleOfShapes_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_NoMoreObject; -class Standard_NoSuchObject; -class GEOMAlgo_ListOfCoupleOfShapes; -class GEOMAlgo_CoupleOfShapes; -class GEOMAlgo_ListNodeOfListOfCoupleOfShapes; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class GEOMAlgo_ListIteratorOfListOfCoupleOfShapes { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT GEOMAlgo_ListIteratorOfListOfCoupleOfShapes(); -Standard_EXPORT GEOMAlgo_ListIteratorOfListOfCoupleOfShapes(const GEOMAlgo_ListOfCoupleOfShapes& L); -Standard_EXPORT void Initialize(const GEOMAlgo_ListOfCoupleOfShapes& L) ; - Standard_Boolean More() const; -Standard_EXPORT void Next() ; -Standard_EXPORT GEOMAlgo_CoupleOfShapes& Value() const; - - -friend class GEOMAlgo_ListOfCoupleOfShapes; - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -Standard_Address current; -Standard_Address previous; - - -}; - -#define Item GEOMAlgo_CoupleOfShapes -#define Item_hxx -#define TCollection_ListNode GEOMAlgo_ListNodeOfListOfCoupleOfShapes -#define TCollection_ListNode_hxx -#define TCollection_ListIterator GEOMAlgo_ListIteratorOfListOfCoupleOfShapes -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_GEOMAlgo_ListNodeOfListOfCoupleOfShapes -#define TCollection_ListNode_Type_() GEOMAlgo_ListNodeOfListOfCoupleOfShapes_Type_() -#define TCollection_List GEOMAlgo_ListOfCoupleOfShapes -#define TCollection_List_hxx - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfCoupleOfShapes_0.cxx b/src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfCoupleOfShapes_0.cxx deleted file mode 100644 index ee6cbdb6d..000000000 --- a/src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfCoupleOfShapes_0.cxx +++ /dev/null @@ -1,52 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - -#ifndef _Standard_NoMoreObject_HeaderFile -#include -#endif -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_ListOfCoupleOfShapes_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_CoupleOfShapes_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_ListNodeOfListOfCoupleOfShapes_HeaderFile -#include -#endif - - -#define Item GEOMAlgo_CoupleOfShapes -#define Item_hxx -#define TCollection_ListNode GEOMAlgo_ListNodeOfListOfCoupleOfShapes -#define TCollection_ListNode_hxx -#define TCollection_ListIterator GEOMAlgo_ListIteratorOfListOfCoupleOfShapes -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_GEOMAlgo_ListNodeOfListOfCoupleOfShapes -#define TCollection_ListNode_Type_() GEOMAlgo_ListNodeOfListOfCoupleOfShapes_Type_() -#define TCollection_List GEOMAlgo_ListOfCoupleOfShapes -#define TCollection_List_hxx -#include - diff --git a/src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfPnt.hxx b/src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfPnt.hxx deleted file mode 100644 index b370cbbd4..000000000 --- a/src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfPnt.hxx +++ /dev/null @@ -1,131 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _GEOMAlgo_ListIteratorOfListOfPnt_HeaderFile -#define _GEOMAlgo_ListIteratorOfListOfPnt_HeaderFile - -#ifndef _Standard_Address_HeaderFile -#include -#endif -#ifndef _Handle_GEOMAlgo_ListNodeOfListOfPnt_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_NoMoreObject; -class Standard_NoSuchObject; -class GEOMAlgo_ListOfPnt; -class gp_Pnt; -class GEOMAlgo_ListNodeOfListOfPnt; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class GEOMAlgo_ListIteratorOfListOfPnt { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT GEOMAlgo_ListIteratorOfListOfPnt(); -Standard_EXPORT GEOMAlgo_ListIteratorOfListOfPnt(const GEOMAlgo_ListOfPnt& L); -Standard_EXPORT void Initialize(const GEOMAlgo_ListOfPnt& L) ; - Standard_Boolean More() const; -Standard_EXPORT void Next() ; -Standard_EXPORT gp_Pnt& Value() const; - - -friend class GEOMAlgo_ListOfPnt; - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -Standard_Address current; -Standard_Address previous; - - -}; - -#define Item gp_Pnt -#define Item_hxx -#define TCollection_ListNode GEOMAlgo_ListNodeOfListOfPnt -#define TCollection_ListNode_hxx -#define TCollection_ListIterator GEOMAlgo_ListIteratorOfListOfPnt -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_GEOMAlgo_ListNodeOfListOfPnt -#define TCollection_ListNode_Type_() GEOMAlgo_ListNodeOfListOfPnt_Type_() -#define TCollection_List GEOMAlgo_ListOfPnt -#define TCollection_List_hxx - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfPnt_0.cxx b/src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfPnt_0.cxx deleted file mode 100644 index bc1684b68..000000000 --- a/src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfPnt_0.cxx +++ /dev/null @@ -1,52 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - -#ifndef _Standard_NoMoreObject_HeaderFile -#include -#endif -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_ListOfPnt_HeaderFile -#include -#endif -#ifndef _gp_Pnt_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_ListNodeOfListOfPnt_HeaderFile -#include -#endif - - -#define Item gp_Pnt -#define Item_hxx -#define TCollection_ListNode GEOMAlgo_ListNodeOfListOfPnt -#define TCollection_ListNode_hxx -#define TCollection_ListIterator GEOMAlgo_ListIteratorOfListOfPnt -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_GEOMAlgo_ListNodeOfListOfPnt -#define TCollection_ListNode_Type_() GEOMAlgo_ListNodeOfListOfPnt_Type_() -#define TCollection_List GEOMAlgo_ListOfPnt -#define TCollection_List_hxx -#include - diff --git a/src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfCoupleOfShapes.hxx b/src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfCoupleOfShapes.hxx deleted file mode 100644 index ef078a2eb..000000000 --- a/src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfCoupleOfShapes.hxx +++ /dev/null @@ -1,130 +0,0 @@ -// File generated by CPPExt (Transient) -// -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _GEOMAlgo_ListNodeOfListOfCoupleOfShapes_HeaderFile -#define _GEOMAlgo_ListNodeOfListOfCoupleOfShapes_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_GEOMAlgo_ListNodeOfListOfCoupleOfShapes_HeaderFile -#include -#endif - -#ifndef _GEOMAlgo_CoupleOfShapes_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -class GEOMAlgo_CoupleOfShapes; -class GEOMAlgo_ListOfCoupleOfShapes; -class GEOMAlgo_ListIteratorOfListOfCoupleOfShapes; - - -class GEOMAlgo_ListNodeOfListOfCoupleOfShapes : public TCollection_MapNode { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -GEOMAlgo_ListNodeOfListOfCoupleOfShapes(const GEOMAlgo_CoupleOfShapes& I,const TCollection_MapNodePtr& n); - GEOMAlgo_CoupleOfShapes& Value() const; -Standard_EXPORT ~GEOMAlgo_ListNodeOfListOfCoupleOfShapes(); - - - - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& GEOMAlgo_ListNodeOfListOfCoupleOfShapes_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -GEOMAlgo_CoupleOfShapes myValue; - - -}; - -#define Item GEOMAlgo_CoupleOfShapes -#define Item_hxx -#define TCollection_ListNode GEOMAlgo_ListNodeOfListOfCoupleOfShapes -#define TCollection_ListNode_hxx -#define TCollection_ListIterator GEOMAlgo_ListIteratorOfListOfCoupleOfShapes -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_GEOMAlgo_ListNodeOfListOfCoupleOfShapes -#define TCollection_ListNode_Type_() GEOMAlgo_ListNodeOfListOfCoupleOfShapes_Type_() -#define TCollection_List GEOMAlgo_ListOfCoupleOfShapes -#define TCollection_List_hxx - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfCoupleOfShapes_0.cxx b/src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfCoupleOfShapes_0.cxx deleted file mode 100644 index 78fd962da..000000000 --- a/src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfCoupleOfShapes_0.cxx +++ /dev/null @@ -1,98 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _GEOMAlgo_CoupleOfShapes_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_ListOfCoupleOfShapes_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_ListIteratorOfListOfCoupleOfShapes_HeaderFile -#include -#endif -GEOMAlgo_ListNodeOfListOfCoupleOfShapes::~GEOMAlgo_ListNodeOfListOfCoupleOfShapes() {} - - - -Standard_EXPORT Handle_Standard_Type& GEOMAlgo_ListNodeOfListOfCoupleOfShapes_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMAlgo_ListNodeOfListOfCoupleOfShapes", - sizeof(GEOMAlgo_ListNodeOfListOfCoupleOfShapes), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(GEOMAlgo_ListNodeOfListOfCoupleOfShapes) Handle(GEOMAlgo_ListNodeOfListOfCoupleOfShapes)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMAlgo_ListNodeOfListOfCoupleOfShapes) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMAlgo_ListNodeOfListOfCoupleOfShapes))) { - _anOtherObject = Handle(GEOMAlgo_ListNodeOfListOfCoupleOfShapes)((Handle(GEOMAlgo_ListNodeOfListOfCoupleOfShapes)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& GEOMAlgo_ListNodeOfListOfCoupleOfShapes::DynamicType() const -{ - return STANDARD_TYPE(GEOMAlgo_ListNodeOfListOfCoupleOfShapes) ; -} -Standard_Boolean GEOMAlgo_ListNodeOfListOfCoupleOfShapes::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(GEOMAlgo_ListNodeOfListOfCoupleOfShapes) == AType || TCollection_MapNode::IsKind(AType)); -} -Handle_GEOMAlgo_ListNodeOfListOfCoupleOfShapes::~Handle_GEOMAlgo_ListNodeOfListOfCoupleOfShapes() {} -#define Item GEOMAlgo_CoupleOfShapes -#define Item_hxx -#define TCollection_ListNode GEOMAlgo_ListNodeOfListOfCoupleOfShapes -#define TCollection_ListNode_hxx -#define TCollection_ListIterator GEOMAlgo_ListIteratorOfListOfCoupleOfShapes -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_GEOMAlgo_ListNodeOfListOfCoupleOfShapes -#define TCollection_ListNode_Type_() GEOMAlgo_ListNodeOfListOfCoupleOfShapes_Type_() -#define TCollection_List GEOMAlgo_ListOfCoupleOfShapes -#define TCollection_List_hxx -#include - diff --git a/src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfPnt.hxx b/src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfPnt.hxx deleted file mode 100644 index fd9b15d9a..000000000 --- a/src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfPnt.hxx +++ /dev/null @@ -1,130 +0,0 @@ -// File generated by CPPExt (Transient) -// -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _GEOMAlgo_ListNodeOfListOfPnt_HeaderFile -#define _GEOMAlgo_ListNodeOfListOfPnt_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_GEOMAlgo_ListNodeOfListOfPnt_HeaderFile -#include -#endif - -#ifndef _gp_Pnt_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -class gp_Pnt; -class GEOMAlgo_ListOfPnt; -class GEOMAlgo_ListIteratorOfListOfPnt; - - -class GEOMAlgo_ListNodeOfListOfPnt : public TCollection_MapNode { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -GEOMAlgo_ListNodeOfListOfPnt(const gp_Pnt& I,const TCollection_MapNodePtr& n); - gp_Pnt& Value() const; -Standard_EXPORT ~GEOMAlgo_ListNodeOfListOfPnt(); - - - - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& GEOMAlgo_ListNodeOfListOfPnt_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -gp_Pnt myValue; - - -}; - -#define Item gp_Pnt -#define Item_hxx -#define TCollection_ListNode GEOMAlgo_ListNodeOfListOfPnt -#define TCollection_ListNode_hxx -#define TCollection_ListIterator GEOMAlgo_ListIteratorOfListOfPnt -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_GEOMAlgo_ListNodeOfListOfPnt -#define TCollection_ListNode_Type_() GEOMAlgo_ListNodeOfListOfPnt_Type_() -#define TCollection_List GEOMAlgo_ListOfPnt -#define TCollection_List_hxx - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfPnt_0.cxx b/src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfPnt_0.cxx deleted file mode 100644 index bb3473704..000000000 --- a/src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfPnt_0.cxx +++ /dev/null @@ -1,98 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _gp_Pnt_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_ListOfPnt_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_ListIteratorOfListOfPnt_HeaderFile -#include -#endif -GEOMAlgo_ListNodeOfListOfPnt::~GEOMAlgo_ListNodeOfListOfPnt() {} - - - -Standard_EXPORT Handle_Standard_Type& GEOMAlgo_ListNodeOfListOfPnt_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMAlgo_ListNodeOfListOfPnt", - sizeof(GEOMAlgo_ListNodeOfListOfPnt), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(GEOMAlgo_ListNodeOfListOfPnt) Handle(GEOMAlgo_ListNodeOfListOfPnt)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMAlgo_ListNodeOfListOfPnt) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMAlgo_ListNodeOfListOfPnt))) { - _anOtherObject = Handle(GEOMAlgo_ListNodeOfListOfPnt)((Handle(GEOMAlgo_ListNodeOfListOfPnt)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& GEOMAlgo_ListNodeOfListOfPnt::DynamicType() const -{ - return STANDARD_TYPE(GEOMAlgo_ListNodeOfListOfPnt) ; -} -Standard_Boolean GEOMAlgo_ListNodeOfListOfPnt::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(GEOMAlgo_ListNodeOfListOfPnt) == AType || TCollection_MapNode::IsKind(AType)); -} -Handle_GEOMAlgo_ListNodeOfListOfPnt::~Handle_GEOMAlgo_ListNodeOfListOfPnt() {} -#define Item gp_Pnt -#define Item_hxx -#define TCollection_ListNode GEOMAlgo_ListNodeOfListOfPnt -#define TCollection_ListNode_hxx -#define TCollection_ListIterator GEOMAlgo_ListIteratorOfListOfPnt -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_GEOMAlgo_ListNodeOfListOfPnt -#define TCollection_ListNode_Type_() GEOMAlgo_ListNodeOfListOfPnt_Type_() -#define TCollection_List GEOMAlgo_ListOfPnt -#define TCollection_List_hxx -#include - diff --git a/src/GEOMAlgo/GEOMAlgo_ListOfCoupleOfShapes.hxx b/src/GEOMAlgo/GEOMAlgo_ListOfCoupleOfShapes.hxx deleted file mode 100644 index a8bb21f1e..000000000 --- a/src/GEOMAlgo/GEOMAlgo_ListOfCoupleOfShapes.hxx +++ /dev/null @@ -1,157 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _GEOMAlgo_ListOfCoupleOfShapes_HeaderFile -#define _GEOMAlgo_ListOfCoupleOfShapes_HeaderFile - -#ifndef _Standard_Address_HeaderFile -#include -#endif -#ifndef _Handle_GEOMAlgo_ListNodeOfListOfCoupleOfShapes_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_NoSuchObject; -class GEOMAlgo_ListIteratorOfListOfCoupleOfShapes; -class GEOMAlgo_CoupleOfShapes; -class GEOMAlgo_ListNodeOfListOfCoupleOfShapes; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class GEOMAlgo_ListOfCoupleOfShapes { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT GEOMAlgo_ListOfCoupleOfShapes(); -Standard_EXPORT void Assign(const GEOMAlgo_ListOfCoupleOfShapes& Other) ; - void operator=(const GEOMAlgo_ListOfCoupleOfShapes& Other) -{ - Assign(Other); -} - -Standard_EXPORT Standard_Integer Extent() const; -Standard_EXPORT void Clear() ; -~GEOMAlgo_ListOfCoupleOfShapes() -{ - Clear(); -} - - Standard_Boolean IsEmpty() const; -Standard_EXPORT void Prepend(const GEOMAlgo_CoupleOfShapes& I) ; -Standard_EXPORT void Prepend(const GEOMAlgo_CoupleOfShapes& I,GEOMAlgo_ListIteratorOfListOfCoupleOfShapes& theIt) ; -Standard_EXPORT void Prepend(GEOMAlgo_ListOfCoupleOfShapes& Other) ; -Standard_EXPORT void Append(const GEOMAlgo_CoupleOfShapes& I) ; -Standard_EXPORT void Append(const GEOMAlgo_CoupleOfShapes& I,GEOMAlgo_ListIteratorOfListOfCoupleOfShapes& theIt) ; -Standard_EXPORT void Append(GEOMAlgo_ListOfCoupleOfShapes& Other) ; -Standard_EXPORT GEOMAlgo_CoupleOfShapes& First() const; -Standard_EXPORT GEOMAlgo_CoupleOfShapes& Last() const; -Standard_EXPORT void RemoveFirst() ; -Standard_EXPORT void Remove(GEOMAlgo_ListIteratorOfListOfCoupleOfShapes& It) ; -Standard_EXPORT void InsertBefore(const GEOMAlgo_CoupleOfShapes& I,GEOMAlgo_ListIteratorOfListOfCoupleOfShapes& It) ; -Standard_EXPORT void InsertBefore(GEOMAlgo_ListOfCoupleOfShapes& Other,GEOMAlgo_ListIteratorOfListOfCoupleOfShapes& It) ; -Standard_EXPORT void InsertAfter(const GEOMAlgo_CoupleOfShapes& I,GEOMAlgo_ListIteratorOfListOfCoupleOfShapes& It) ; -Standard_EXPORT void InsertAfter(GEOMAlgo_ListOfCoupleOfShapes& Other,GEOMAlgo_ListIteratorOfListOfCoupleOfShapes& It) ; - - -friend class GEOMAlgo_ListIteratorOfListOfCoupleOfShapes; - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // -Standard_EXPORT GEOMAlgo_ListOfCoupleOfShapes(const GEOMAlgo_ListOfCoupleOfShapes& Other); - - - // Fields PRIVATE - // -Standard_Address myFirst; -Standard_Address myLast; - - -}; - -#define Item GEOMAlgo_CoupleOfShapes -#define Item_hxx -#define TCollection_ListNode GEOMAlgo_ListNodeOfListOfCoupleOfShapes -#define TCollection_ListNode_hxx -#define TCollection_ListIterator GEOMAlgo_ListIteratorOfListOfCoupleOfShapes -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_GEOMAlgo_ListNodeOfListOfCoupleOfShapes -#define TCollection_ListNode_Type_() GEOMAlgo_ListNodeOfListOfCoupleOfShapes_Type_() -#define TCollection_List GEOMAlgo_ListOfCoupleOfShapes -#define TCollection_List_hxx - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_ListOfCoupleOfShapes_0.cxx b/src/GEOMAlgo/GEOMAlgo_ListOfCoupleOfShapes_0.cxx deleted file mode 100644 index 2630fd011..000000000 --- a/src/GEOMAlgo/GEOMAlgo_ListOfCoupleOfShapes_0.cxx +++ /dev/null @@ -1,49 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_ListIteratorOfListOfCoupleOfShapes_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_CoupleOfShapes_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_ListNodeOfListOfCoupleOfShapes_HeaderFile -#include -#endif - - -#define Item GEOMAlgo_CoupleOfShapes -#define Item_hxx -#define TCollection_ListNode GEOMAlgo_ListNodeOfListOfCoupleOfShapes -#define TCollection_ListNode_hxx -#define TCollection_ListIterator GEOMAlgo_ListIteratorOfListOfCoupleOfShapes -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_GEOMAlgo_ListNodeOfListOfCoupleOfShapes -#define TCollection_ListNode_Type_() GEOMAlgo_ListNodeOfListOfCoupleOfShapes_Type_() -#define TCollection_List GEOMAlgo_ListOfCoupleOfShapes -#define TCollection_List_hxx -#include - diff --git a/src/GEOMAlgo/GEOMAlgo_ListOfPnt.hxx b/src/GEOMAlgo/GEOMAlgo_ListOfPnt.hxx deleted file mode 100644 index 270207654..000000000 --- a/src/GEOMAlgo/GEOMAlgo_ListOfPnt.hxx +++ /dev/null @@ -1,157 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _GEOMAlgo_ListOfPnt_HeaderFile -#define _GEOMAlgo_ListOfPnt_HeaderFile - -#ifndef _Standard_Address_HeaderFile -#include -#endif -#ifndef _Handle_GEOMAlgo_ListNodeOfListOfPnt_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_NoSuchObject; -class GEOMAlgo_ListIteratorOfListOfPnt; -class gp_Pnt; -class GEOMAlgo_ListNodeOfListOfPnt; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class GEOMAlgo_ListOfPnt { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT GEOMAlgo_ListOfPnt(); -Standard_EXPORT void Assign(const GEOMAlgo_ListOfPnt& Other) ; - void operator=(const GEOMAlgo_ListOfPnt& Other) -{ - Assign(Other); -} - -Standard_EXPORT Standard_Integer Extent() const; -Standard_EXPORT void Clear() ; -~GEOMAlgo_ListOfPnt() -{ - Clear(); -} - - Standard_Boolean IsEmpty() const; -Standard_EXPORT void Prepend(const gp_Pnt& I) ; -Standard_EXPORT void Prepend(const gp_Pnt& I,GEOMAlgo_ListIteratorOfListOfPnt& theIt) ; -Standard_EXPORT void Prepend(GEOMAlgo_ListOfPnt& Other) ; -Standard_EXPORT void Append(const gp_Pnt& I) ; -Standard_EXPORT void Append(const gp_Pnt& I,GEOMAlgo_ListIteratorOfListOfPnt& theIt) ; -Standard_EXPORT void Append(GEOMAlgo_ListOfPnt& Other) ; -Standard_EXPORT gp_Pnt& First() const; -Standard_EXPORT gp_Pnt& Last() const; -Standard_EXPORT void RemoveFirst() ; -Standard_EXPORT void Remove(GEOMAlgo_ListIteratorOfListOfPnt& It) ; -Standard_EXPORT void InsertBefore(const gp_Pnt& I,GEOMAlgo_ListIteratorOfListOfPnt& It) ; -Standard_EXPORT void InsertBefore(GEOMAlgo_ListOfPnt& Other,GEOMAlgo_ListIteratorOfListOfPnt& It) ; -Standard_EXPORT void InsertAfter(const gp_Pnt& I,GEOMAlgo_ListIteratorOfListOfPnt& It) ; -Standard_EXPORT void InsertAfter(GEOMAlgo_ListOfPnt& Other,GEOMAlgo_ListIteratorOfListOfPnt& It) ; - - -friend class GEOMAlgo_ListIteratorOfListOfPnt; - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // -Standard_EXPORT GEOMAlgo_ListOfPnt(const GEOMAlgo_ListOfPnt& Other); - - - // Fields PRIVATE - // -Standard_Address myFirst; -Standard_Address myLast; - - -}; - -#define Item gp_Pnt -#define Item_hxx -#define TCollection_ListNode GEOMAlgo_ListNodeOfListOfPnt -#define TCollection_ListNode_hxx -#define TCollection_ListIterator GEOMAlgo_ListIteratorOfListOfPnt -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_GEOMAlgo_ListNodeOfListOfPnt -#define TCollection_ListNode_Type_() GEOMAlgo_ListNodeOfListOfPnt_Type_() -#define TCollection_List GEOMAlgo_ListOfPnt -#define TCollection_List_hxx - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_ListOfPnt_0.cxx b/src/GEOMAlgo/GEOMAlgo_ListOfPnt_0.cxx deleted file mode 100644 index 4d8ff2b7d..000000000 --- a/src/GEOMAlgo/GEOMAlgo_ListOfPnt_0.cxx +++ /dev/null @@ -1,49 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_ListIteratorOfListOfPnt_HeaderFile -#include -#endif -#ifndef _gp_Pnt_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_ListNodeOfListOfPnt_HeaderFile -#include -#endif - - -#define Item gp_Pnt -#define Item_hxx -#define TCollection_ListNode GEOMAlgo_ListNodeOfListOfPnt -#define TCollection_ListNode_hxx -#define TCollection_ListIterator GEOMAlgo_ListIteratorOfListOfPnt -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_GEOMAlgo_ListNodeOfListOfPnt -#define TCollection_ListNode_Type_() GEOMAlgo_ListNodeOfListOfPnt_Type_() -#define TCollection_List GEOMAlgo_ListOfPnt -#define TCollection_List_hxx -#include - diff --git a/src/GEOMAlgo/GEOMAlgo_PassKey.cdl b/src/GEOMAlgo/GEOMAlgo_PassKey.cdl deleted file mode 100755 index 5de666d17..000000000 --- a/src/GEOMAlgo/GEOMAlgo_PassKey.cdl +++ /dev/null @@ -1,81 +0,0 @@ --- File: GEOMAlgo_PassKey.cdl --- Created: --- Author: Peter KURNEV --- ----Copyright: - - -class PassKey from GEOMAlgo - - ---Purpose: - -uses - Shape from TopoDS, - ListOfInteger from TColStd - ---raises - -is - Create - returns PassKey from GEOMAlgo; - - Assign(me:out; - Other : PassKey from GEOMAlgo) - returns PassKey from GEOMAlgo; - ---C++: alias operator = - ---C++: return & --- - SetIds(me:out; - aI1 :Integer from Standard); - - SetIds(me:out; - aI1 :Integer from Standard; - aI2 :Integer from Standard); - - SetIds(me:out; - aI1 :Integer from Standard; - aI2 :Integer from Standard; - aI3 :Integer from Standard); - - SetIds(me:out; - aI1 :Integer from Standard; - aI2 :Integer from Standard; - aI3 :Integer from Standard; - aI4 :Integer from Standard); - - SetIds(me:out; - aLS :ListOfInteger from TColStd); - - NbMax(me) - returns Integer from Standard; - - Clear(me:out); - - Compute(me:out); - - IsEqual(me; - aOther:PassKey from GEOMAlgo) - returns Boolean from Standard; - - Key(me) - returns Address from Standard; - - HashCode(me; - Upper : Integer from Standard) - returns Integer from Standard; - - Id(me; - aIndex: Integer from Standard) - returns Integer from Standard; - - - Dump(me); - -fields - - myNbIds: Integer from Standard is protected; - myNbMax: Integer from Standard is protected; - mySum : Integer from Standard is protected; - myIds : Integer from Standard [8] is protected; - -end PassKey; diff --git a/src/GEOMAlgo/GEOMAlgo_PassKey.cxx b/src/GEOMAlgo/GEOMAlgo_PassKey.cxx deleted file mode 100755 index 61c70febb..000000000 --- a/src/GEOMAlgo/GEOMAlgo_PassKey.cxx +++ /dev/null @@ -1,286 +0,0 @@ -// File: GEOMAlgo_PassKey.cxx -// Created: -// Author: Peter KURNEV -// - - -#include - -#include -#include -#include - -#ifdef WNT -#pragma warning( disable : 4101) -#endif - -static - void SortShell(const int n, int* a); -static - Standard_Integer NormalizedId(const Standard_Integer aId, - const Standard_Integer aDiv); - -//======================================================================= -//function : -//purpose : -//======================================================================= - GEOMAlgo_PassKey::GEOMAlgo_PassKey() -{ - Clear(); -} -//======================================================================= -//function :Assign -//purpose : -//======================================================================= - GEOMAlgo_PassKey& GEOMAlgo_PassKey::Assign(const GEOMAlgo_PassKey& anOther) -{ - myNbIds=anOther.myNbIds; - myNbMax=anOther.myNbMax; - mySum=anOther.mySum; - memcpy(myIds, anOther.myIds, sizeof(myIds)); - return *this; -} -//======================================================================= -//function :Clear -//purpose : -//======================================================================= - void GEOMAlgo_PassKey::Clear() -{ - Standard_Integer i; - // - myNbIds=0; - myNbMax=8; - mySum=0; - for (i=0; i myNbMax) { - return; - } - // - myNbIds=aNb; - mySum=0; - i=myNbMax-myNbIds; - aIt.Initialize(aLI); - for (; aIt.More(); aIt.Next(), ++i) { - anId=aIt.Value(); - myIds[i]=anId; - aIdN=NormalizedId(anId, myNbIds); - mySum+=aIdN; - } - // - Compute(); -} -//======================================================================= -//function :Id -//purpose : -//======================================================================= - Standard_Integer GEOMAlgo_PassKey::Id(const Standard_Integer aIndex)const -{ - if (aIndex < 0 || aIndex >= myNbMax) { - return 0; - } - return myIds[aIndex]; -} -//======================================================================= -//function :NbMax -//purpose : -//======================================================================= - Standard_Integer GEOMAlgo_PassKey::NbMax()const -{ - return myNbMax; -} -//======================================================================= -//function :Compute -//purpose : -//======================================================================= - void GEOMAlgo_PassKey::Compute() -{ - SortShell(myNbIds, myIds+myNbMax-myNbIds); -} -//======================================================================= -//function :IsEqual -//purpose : -//======================================================================= - Standard_Boolean GEOMAlgo_PassKey::IsEqual(const GEOMAlgo_PassKey& anOther) const -{ - Standard_Integer iIsEqual; - Standard_Boolean bIsEqual; - // - iIsEqual=memcmp(myIds, anOther.myIds, sizeof(myIds)); - bIsEqual=Standard_False; - if (!iIsEqual) { - bIsEqual=!bIsEqual; - } - return bIsEqual; -} -//======================================================================= -//function :Key -//purpose : -//======================================================================= - Standard_Address GEOMAlgo_PassKey::Key()const -{ - return (Standard_Address)myIds; -} -//======================================================================= -//function : HashCode -//purpose : -//======================================================================= - Standard_Integer GEOMAlgo_PassKey::HashCode(const Standard_Integer Upper) const -{ - //return (mySum % Upper); - return ::HashCode(mySum, Upper); -} -//======================================================================= -//function : Dump -//purpose : -//======================================================================= - void GEOMAlgo_PassKey::Dump()const -{ - Standard_Integer i; - // - printf(" PassKey: {"); - for (i=0; iaTresh) { - aIdRet=aId%aTresh; - } - return aIdRet; -} -//======================================================================= -// function: SortShell -// purpose : -//======================================================================= -void SortShell(const int n, int* a) -{ - int x, nd, i, j, l, d=1; - // - while(d<=n) { - d*=2; - } - // - while (d) { - d=(d-1)/2; - // - nd=n-d; - for (i=0; i -1) goto m30; - }//if (a[l] < a[j]){ - }//for (i=0; i -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -#ifndef _Standard_Address_HeaderFile -#include -#endif -class TColStd_ListOfInteger; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class GEOMAlgo_PassKey { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT GEOMAlgo_PassKey(); -Standard_EXPORT GEOMAlgo_PassKey& Assign(const GEOMAlgo_PassKey& Other) ; - GEOMAlgo_PassKey& operator =(const GEOMAlgo_PassKey& Other) -{ - return Assign(Other); -} - -Standard_EXPORT void SetIds(const Standard_Integer aI1) ; -Standard_EXPORT void SetIds(const Standard_Integer aI1,const Standard_Integer aI2) ; -Standard_EXPORT void SetIds(const Standard_Integer aI1,const Standard_Integer aI2,const Standard_Integer aI3) ; -Standard_EXPORT void SetIds(const Standard_Integer aI1,const Standard_Integer aI2,const Standard_Integer aI3,const Standard_Integer aI4) ; -Standard_EXPORT void SetIds(const TColStd_ListOfInteger& aLS) ; -Standard_EXPORT Standard_Integer NbMax() const; -Standard_EXPORT void Clear() ; -Standard_EXPORT void Compute() ; -Standard_EXPORT Standard_Boolean IsEqual(const GEOMAlgo_PassKey& aOther) const; -Standard_EXPORT Standard_Address Key() const; -Standard_EXPORT Standard_Integer HashCode(const Standard_Integer Upper) const; -Standard_EXPORT Standard_Integer Id(const Standard_Integer aIndex) const; -Standard_EXPORT void Dump() const; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // -Standard_Integer myNbIds; -Standard_Integer myNbMax; -Standard_Integer mySum; -Standard_Integer myIds[8]; - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_PassKey.ixx b/src/GEOMAlgo/GEOMAlgo_PassKey.ixx deleted file mode 100644 index 9e0b612a9..000000000 --- a/src/GEOMAlgo/GEOMAlgo_PassKey.ixx +++ /dev/null @@ -1,26 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - - - - diff --git a/src/GEOMAlgo/GEOMAlgo_PassKey.jxx b/src/GEOMAlgo/GEOMAlgo_PassKey.jxx deleted file mode 100644 index a96f71615..000000000 --- a/src/GEOMAlgo/GEOMAlgo_PassKey.jxx +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef _TColStd_ListOfInteger_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_PassKey_HeaderFile -#include -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.cdl b/src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.cdl deleted file mode 100755 index 31274eeef..000000000 --- a/src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.cdl +++ /dev/null @@ -1,29 +0,0 @@ --- File: GEOMAlgo_PassKeyMapHasher.cdl --- Created: --- Author: Peter KURNEV --- ----Copyright: - - -class PassKeyMapHasher from GEOMAlgo - - ---Purpose: - -uses - PassKey from GEOMAlgo - ---raises - -is - HashCode(myclass; - aPKey : PassKey from GEOMAlgo; - Upper : Integer from Standard) - returns Integer from Standard; - - - IsEqual(myclass; - aPKey1 : PassKey from GEOMAlgo; - aPKey2 : PassKey from GEOMAlgo) - returns Boolean from Standard; - -end PassKeyMapHasher; diff --git a/src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.cxx b/src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.cxx deleted file mode 100755 index b928f13f8..000000000 --- a/src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.cxx +++ /dev/null @@ -1,26 +0,0 @@ -// File: GEOMAlgo_PassKeyMapHasher.cxx -// Created: -// Author: Peter KURNEV -// - - -#include - -//======================================================================= -//function : HashCode -//purpose : -//======================================================================= - Standard_Integer GEOMAlgo_PassKeyMapHasher::HashCode(const GEOMAlgo_PassKey& aPKey, - const Standard_Integer Upper) -{ - return aPKey.HashCode(Upper); -} -//======================================================================= -//function :IsEqual -//purpose : -//======================================================================= - Standard_Boolean GEOMAlgo_PassKeyMapHasher::IsEqual(const GEOMAlgo_PassKey& aPKey1, - const GEOMAlgo_PassKey& aPKey2) -{ - return aPKey1.IsEqual(aPKey2); -} diff --git a/src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.hxx b/src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.hxx deleted file mode 100644 index 2a1a4650e..000000000 --- a/src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.hxx +++ /dev/null @@ -1,96 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _GEOMAlgo_PassKeyMapHasher_HeaderFile -#define _GEOMAlgo_PassKeyMapHasher_HeaderFile - -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class GEOMAlgo_PassKey; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class GEOMAlgo_PassKeyMapHasher { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT static Standard_Integer HashCode(const GEOMAlgo_PassKey& aPKey,const Standard_Integer Upper) ; -Standard_EXPORT static Standard_Boolean IsEqual(const GEOMAlgo_PassKey& aPKey1,const GEOMAlgo_PassKey& aPKey2) ; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.ixx b/src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.ixx deleted file mode 100644 index c990ee15c..000000000 --- a/src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.ixx +++ /dev/null @@ -1,26 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - - - - diff --git a/src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.jxx b/src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.jxx deleted file mode 100644 index a86f85b69..000000000 --- a/src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.jxx +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef _GEOMAlgo_PassKey_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_PassKeyMapHasher_HeaderFile -#include -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_PassKeyShape.cdl b/src/GEOMAlgo/GEOMAlgo_PassKeyShape.cdl deleted file mode 100755 index b0e1fe1d7..000000000 --- a/src/GEOMAlgo/GEOMAlgo_PassKeyShape.cdl +++ /dev/null @@ -1,48 +0,0 @@ --- File: GEOMAlgo_PassKeyShape.cdl --- Created: --- Author: Peter KURNEV --- ----Copyright: - - -class PassKeyShape from GEOMAlgo - inherits PassKey from GEOMAlgo - - ---Purpose: - -uses - Shape from TopoDS, - ListOfShape from TopTools - ---raises - -is - Create - returns PassKeyShape from GEOMAlgo; - - SetIds(me:out; - aS :Shape from TopoDS); - - SetIds(me:out; - aS1 :Shape from TopoDS; - aS2 :Shape from TopoDS); - - SetIds(me:out; - aS1 :Shape from TopoDS; - aS2 :Shape from TopoDS; - aS3 :Shape from TopoDS); - - SetIds(me:out; - aS1 :Shape from TopoDS; - aS2 :Shape from TopoDS; - aS3 :Shape from TopoDS; - aS4 :Shape from TopoDS); - - SetIds(me:out; - aLS :ListOfShape from TopTools); - - -fields - myUpper : Integer from Standard is protected; - -end PassKeyShape; diff --git a/src/GEOMAlgo/GEOMAlgo_PassKeyShape.cxx b/src/GEOMAlgo/GEOMAlgo_PassKeyShape.cxx deleted file mode 100755 index 3b7e7f2d1..000000000 --- a/src/GEOMAlgo/GEOMAlgo_PassKeyShape.cxx +++ /dev/null @@ -1,112 +0,0 @@ -// File: GEOMAlgo_PassKeyShape.cxx -// Created: -// Author: Peter KURNEV -// - - -#include - -#include -#include - -#include -#include - -//======================================================================= -//function : -//purpose : -//======================================================================= - GEOMAlgo_PassKeyShape::GEOMAlgo_PassKeyShape() -: - GEOMAlgo_PassKey() -{ - myUpper=432123; - GEOMAlgo_PassKey::Clear(); -} -//======================================================================= -//function :SetIds -//purpose : -//======================================================================= - void GEOMAlgo_PassKeyShape::SetIds(const TopoDS_Shape& aS1) - -{ - Standard_Integer anId1; - // - anId1=aS1.HashCode(myUpper); - GEOMAlgo_PassKey::SetIds(anId1); -} -//======================================================================= -//function :SetIds -//purpose : -//======================================================================= - void GEOMAlgo_PassKeyShape::SetIds(const TopoDS_Shape& aS1, - const TopoDS_Shape& aS2) -{ - Standard_Integer anId1, anId2; - // - anId1=aS1.HashCode(myUpper); - anId2=aS2.HashCode(myUpper); - // - GEOMAlgo_PassKey::SetIds(anId1, anId2); -} -//======================================================================= -//function :SetIds -//purpose : -//======================================================================= - void GEOMAlgo_PassKeyShape::SetIds(const TopoDS_Shape& aS1, - const TopoDS_Shape& aS2, - const TopoDS_Shape& aS3) -{ - Standard_Integer anId1, anId2, anId3; - // - anId1=aS1.HashCode(myUpper); - anId2=aS2.HashCode(myUpper); - anId3=aS3.HashCode(myUpper); - // - GEOMAlgo_PassKey::SetIds(anId1, anId2, anId3); -} -//======================================================================= -//function :SetIds -//purpose : -//======================================================================= - void GEOMAlgo_PassKeyShape::SetIds(const TopoDS_Shape& aS1, - const TopoDS_Shape& aS2, - const TopoDS_Shape& aS3, - const TopoDS_Shape& aS4) -{ - Standard_Integer anId1, anId2, anId3, anId4; - // - anId1=aS1.HashCode(myUpper); - anId2=aS2.HashCode(myUpper); - anId3=aS3.HashCode(myUpper); - anId4=aS4.HashCode(myUpper); - // - GEOMAlgo_PassKey::SetIds(anId1, anId2, anId3, anId4); -} -//======================================================================= -//function :SetIds -//purpose : -//======================================================================= - void GEOMAlgo_PassKeyShape::SetIds(const TopTools_ListOfShape& aLS) -{ - Standard_Integer anId; - TopTools_ListIteratorOfListOfShape aIt; - TColStd_ListOfInteger aLI; - // - //aNb=aLS.Extent(); - //if (aNb<1 || aNb > myNbMax) { - // return; - //} - // - //myNbIds=aNb; - //mySum=0; - //i=myNbMax-myNbIds; - - aIt.Initialize(aLS); - for (; aIt.More(); aIt.Next()) { - const TopoDS_Shape& aS=aIt.Value(); - anId=aS.HashCode(myUpper); - aLI.Append(anId); - } - GEOMAlgo_PassKey::SetIds(aLI); -} diff --git a/src/GEOMAlgo/GEOMAlgo_PassKeyShape.hxx b/src/GEOMAlgo/GEOMAlgo_PassKeyShape.hxx deleted file mode 100644 index 9bb52df00..000000000 --- a/src/GEOMAlgo/GEOMAlgo_PassKeyShape.hxx +++ /dev/null @@ -1,102 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _GEOMAlgo_PassKeyShape_HeaderFile -#define _GEOMAlgo_PassKeyShape_HeaderFile - -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_PassKey_HeaderFile -#include -#endif -class TopoDS_Shape; -class TopTools_ListOfShape; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class GEOMAlgo_PassKeyShape : public GEOMAlgo_PassKey { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT GEOMAlgo_PassKeyShape(); -Standard_EXPORT void SetIds(const TopoDS_Shape& aS) ; -Standard_EXPORT void SetIds(const TopoDS_Shape& aS1,const TopoDS_Shape& aS2) ; -Standard_EXPORT void SetIds(const TopoDS_Shape& aS1,const TopoDS_Shape& aS2,const TopoDS_Shape& aS3) ; -Standard_EXPORT void SetIds(const TopoDS_Shape& aS1,const TopoDS_Shape& aS2,const TopoDS_Shape& aS3,const TopoDS_Shape& aS4) ; -Standard_EXPORT void SetIds(const TopTools_ListOfShape& aLS) ; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // -Standard_Integer myUpper; - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_PassKeyShape.ixx b/src/GEOMAlgo/GEOMAlgo_PassKeyShape.ixx deleted file mode 100644 index befc4fd74..000000000 --- a/src/GEOMAlgo/GEOMAlgo_PassKeyShape.ixx +++ /dev/null @@ -1,26 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - - - - diff --git a/src/GEOMAlgo/GEOMAlgo_PassKeyShape.jxx b/src/GEOMAlgo/GEOMAlgo_PassKeyShape.jxx deleted file mode 100644 index f89527576..000000000 --- a/src/GEOMAlgo/GEOMAlgo_PassKeyShape.jxx +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_PassKeyShape_HeaderFile -#include -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_ShapeAlgo.cdl b/src/GEOMAlgo/GEOMAlgo_ShapeAlgo.cdl deleted file mode 100644 index 5a9ab0e72..000000000 --- a/src/GEOMAlgo/GEOMAlgo_ShapeAlgo.cdl +++ /dev/null @@ -1,47 +0,0 @@ --- File: GEOMAlgo_ShapeAlgo.cdl --- Created: Tue Dec 7 12:05:19 2004 --- Author: Peter KURNEV --- ----Copyright: Matra Datavision 2004 - - -deferred class ShapeAlgo from GEOMAlgo - inherits Algo from GEOMAlgo - - ---Purpose: - -uses - Shape from TopoDS, - Context from IntTools - ---raises - -is - Initialize - returns ShapeAlgo from GEOMAlgo; - ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_ShapeAlgo();" - - SetShape(me:out; - aS:Shape from TopoDS); - - SetTolerance(me:out; - aT:Real from Standard); - - Shape(me) - returns Shape from TopoDS; - ---C++:return const & - - Tolerance(me) - returns Real from Standard; - - Result(me) - returns Shape from TopoDS; - ---C++:return const & - -fields - myShape : Shape from TopoDS is protected; - myTolerance : Real from Standard is protected; - myResult : Shape from TopoDS is protected; - myContext : Context from IntTools is protected; - -end ShapeAlgo; diff --git a/src/GEOMAlgo/GEOMAlgo_ShapeAlgo.cxx b/src/GEOMAlgo/GEOMAlgo_ShapeAlgo.cxx deleted file mode 100644 index 1e4a673fc..000000000 --- a/src/GEOMAlgo/GEOMAlgo_ShapeAlgo.cxx +++ /dev/null @@ -1,66 +0,0 @@ -// File: GEOMAlgo_ShapeAlgo.cxx -// Created: Tue Dec 7 12:06:54 2004 -// Author: Peter KURNEV -// - - -#include - -//======================================================================= -//function : GEOMAlgo_ShapeAlgo -//purpose : -//======================================================================= -GEOMAlgo_ShapeAlgo::GEOMAlgo_ShapeAlgo() -: - GEOMAlgo_Algo() -{ - myTolerance=0.0001; -} - -//======================================================================= -//function : ~ -//purpose : -//======================================================================= -GEOMAlgo_ShapeAlgo::~GEOMAlgo_ShapeAlgo() -{ -} -//======================================================================= -//function : SetShape -//purpose : -//======================================================================= -void GEOMAlgo_ShapeAlgo::SetShape(const TopoDS_Shape& aS) -{ - myShape=aS; -} -//======================================================================= -//function : Shape -//purpose : -//======================================================================= -const TopoDS_Shape& GEOMAlgo_ShapeAlgo::Shape()const -{ - return myShape; -} -//======================================================================= -//function : SetTolerance -//purpose : -//======================================================================= -void GEOMAlgo_ShapeAlgo::SetTolerance(const Standard_Real aT) -{ - myTolerance=aT; -} -//======================================================================= -//function : Tolerance -//purpose : -//======================================================================= -Standard_Real GEOMAlgo_ShapeAlgo::Tolerance()const -{ - return myTolerance; -} -//======================================================================= -//function : Result -//purpose : -//======================================================================= -const TopoDS_Shape& GEOMAlgo_ShapeAlgo::Result()const -{ - return myResult; -} diff --git a/src/GEOMAlgo/GEOMAlgo_ShapeAlgo.hxx b/src/GEOMAlgo/GEOMAlgo_ShapeAlgo.hxx deleted file mode 100644 index a3390875e..000000000 --- a/src/GEOMAlgo/GEOMAlgo_ShapeAlgo.hxx +++ /dev/null @@ -1,111 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _GEOMAlgo_ShapeAlgo_HeaderFile -#define _GEOMAlgo_ShapeAlgo_HeaderFile - -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _Standard_Real_HeaderFile -#include -#endif -#ifndef _IntTools_Context_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_Algo_HeaderFile -#include -#endif -class TopoDS_Shape; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class GEOMAlgo_ShapeAlgo : public GEOMAlgo_Algo { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT void SetShape(const TopoDS_Shape& aS) ; -Standard_EXPORT void SetTolerance(const Standard_Real aT) ; -Standard_EXPORT const TopoDS_Shape& Shape() const; -Standard_EXPORT Standard_Real Tolerance() const; -Standard_EXPORT const TopoDS_Shape& Result() const; - - - - - -protected: - - // Methods PROTECTED - // -Standard_EXPORT GEOMAlgo_ShapeAlgo(); -Standard_EXPORT virtual ~GEOMAlgo_ShapeAlgo(); - - - // Fields PROTECTED - // -TopoDS_Shape myShape; -Standard_Real myTolerance; -TopoDS_Shape myResult; -IntTools_Context myContext; - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_ShapeAlgo.ixx b/src/GEOMAlgo/GEOMAlgo_ShapeAlgo.ixx deleted file mode 100644 index 1b153c305..000000000 --- a/src/GEOMAlgo/GEOMAlgo_ShapeAlgo.ixx +++ /dev/null @@ -1,26 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - - - - diff --git a/src/GEOMAlgo/GEOMAlgo_ShapeAlgo.jxx b/src/GEOMAlgo/GEOMAlgo_ShapeAlgo.jxx deleted file mode 100644 index df0a54e3f..000000000 --- a/src/GEOMAlgo/GEOMAlgo_ShapeAlgo.jxx +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_ShapeAlgo_HeaderFile -#include -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_ShapeSolid.cdl b/src/GEOMAlgo/GEOMAlgo_ShapeSolid.cdl deleted file mode 100644 index c0dcdd422..000000000 --- a/src/GEOMAlgo/GEOMAlgo_ShapeSolid.cdl +++ /dev/null @@ -1,48 +0,0 @@ --- File: GEOMAlgo_ShapeSolid.cdl --- Created: Thu Jan 13 12:44:07 2005 --- Author: Peter KURNEV --- ----Copyright: Matra Datavision 2005 - - -deferred class ShapeSolid from GEOMAlgo - inherits Algo from GEOMAlgo - - ---Purpose: - -uses - State from TopAbs, - ListOfShape from TopTools, - PDSFiller from BOPTools, - DSFiller from BOPTools ---raises - -is - Initialize - returns ShapeSolid from GEOMAlgo; - - - SetFiller(me:out; - aDSF:DSFiller from BOPTools); - ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_ShapeSolid();" - - - Shapes(me; - aState:State from TopAbs) - returns ListOfShape from TopTools; - ---C++: return const & - - BuildResult (me:out) - is deferred protected; - - Prepare(me:out) - is deferred protected; - -fields - myLSIN : ListOfShape from TopTools is protected; - myLSOUT : ListOfShape from TopTools is protected; - myLSON : ListOfShape from TopTools is protected; - myRank : Integer from Standard is protected; - myDSFiller : PDSFiller from BOPTools is protected; - -end ShapeSolid; diff --git a/src/GEOMAlgo/GEOMAlgo_ShapeSolid.cxx b/src/GEOMAlgo/GEOMAlgo_ShapeSolid.cxx deleted file mode 100644 index e0cebcf23..000000000 --- a/src/GEOMAlgo/GEOMAlgo_ShapeSolid.cxx +++ /dev/null @@ -1,61 +0,0 @@ -// File: GEOMAlgo_ShapeSolid.cxx -// Created: Thu Jan 13 12:54:48 2005 -// Author: Peter KURNEV -// - - -#include - -#include -#include - -//======================================================================= -//function : GEOMAlgo_ShapeSolid -//purpose : -//======================================================================= -GEOMAlgo_ShapeSolid::GEOMAlgo_ShapeSolid() -: - GEOMAlgo_Algo(), - myRank(0), - myDSFiller(NULL) -{ -} -//======================================================================= -//function : ~ -//purpose : -//======================================================================= -GEOMAlgo_ShapeSolid::~GEOMAlgo_ShapeSolid() -{ -} -//======================================================================= -//function : SetFiller -//purpose : -//======================================================================= -void GEOMAlgo_ShapeSolid::SetFiller(const BOPTools_DSFiller& aDSFiller) -{ - myDSFiller=(BOPTools_DSFiller*) &aDSFiller; -} -//======================================================================= -// function: Shapes -// purpose: -//======================================================================= -const TopTools_ListOfShape& GEOMAlgo_ShapeSolid::Shapes(const TopAbs_State aState) const -{ - const TopTools_ListOfShape *pL; - // - switch (aState) { - case TopAbs_IN: - pL=&myLSIN; - break; - case TopAbs_OUT: - pL=&myLSOUT; - break; - case TopAbs_ON: - pL=&myLSON; - break; - default: - pL=&myLSON; - break; - } - return *pL; -} diff --git a/src/GEOMAlgo/GEOMAlgo_ShapeSolid.hxx b/src/GEOMAlgo/GEOMAlgo_ShapeSolid.hxx deleted file mode 100644 index 6142c1b72..000000000 --- a/src/GEOMAlgo/GEOMAlgo_ShapeSolid.hxx +++ /dev/null @@ -1,115 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _GEOMAlgo_ShapeSolid_HeaderFile -#define _GEOMAlgo_ShapeSolid_HeaderFile - -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _BOPTools_PDSFiller_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_Algo_HeaderFile -#include -#endif -#ifndef _TopAbs_State_HeaderFile -#include -#endif -class BOPTools_DSFiller; -class TopTools_ListOfShape; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class GEOMAlgo_ShapeSolid : public GEOMAlgo_Algo { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT void SetFiller(const BOPTools_DSFiller& aDSF) ; -Standard_EXPORT virtual ~GEOMAlgo_ShapeSolid(); -Standard_EXPORT const TopTools_ListOfShape& Shapes(const TopAbs_State aState) const; - - - - - -protected: - - // Methods PROTECTED - // -Standard_EXPORT GEOMAlgo_ShapeSolid(); -Standard_EXPORT virtual void BuildResult() = 0; -Standard_EXPORT virtual void Prepare() = 0; - - - // Fields PROTECTED - // -TopTools_ListOfShape myLSIN; -TopTools_ListOfShape myLSOUT; -TopTools_ListOfShape myLSON; -Standard_Integer myRank; -BOPTools_PDSFiller myDSFiller; - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_ShapeSolid.ixx b/src/GEOMAlgo/GEOMAlgo_ShapeSolid.ixx deleted file mode 100644 index 1ef447531..000000000 --- a/src/GEOMAlgo/GEOMAlgo_ShapeSolid.ixx +++ /dev/null @@ -1,26 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - - - - diff --git a/src/GEOMAlgo/GEOMAlgo_ShapeSolid.jxx b/src/GEOMAlgo/GEOMAlgo_ShapeSolid.jxx deleted file mode 100644 index d0cdc370f..000000000 --- a/src/GEOMAlgo/GEOMAlgo_ShapeSolid.jxx +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef _BOPTools_DSFiller_HeaderFile -#include -#endif -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_ShapeSolid_HeaderFile -#include -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_ShellSolid.cdl b/src/GEOMAlgo/GEOMAlgo_ShellSolid.cdl deleted file mode 100644 index 7489b6a96..000000000 --- a/src/GEOMAlgo/GEOMAlgo_ShellSolid.cdl +++ /dev/null @@ -1,34 +0,0 @@ --- File: GEOMAlgo_ShellSolid.cdl --- Created: Wed Jan 12 12:45:20 2005 --- Author: Peter KURNEV --- ----Copyright: Matra Datavision 2005 - - -class ShellSolid from GEOMAlgo - inherits ShapeSolid from GEOMAlgo - ---Purpose: - ---uses ---raises - -is - Create - returns ShellSolid from GEOMAlgo; - ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_ShellSolid();" - - Perform (me:out) - is redefined; - - Prepare(me:out) - is redefined protected; - - BuildResult (me:out) - is redefined protected; - - DetectSDFaces(me:out) - is protected; - ---fields - -end ShellSolid; diff --git a/src/GEOMAlgo/GEOMAlgo_ShellSolid.cxx b/src/GEOMAlgo/GEOMAlgo_ShellSolid.cxx deleted file mode 100644 index e7da2ac05..000000000 --- a/src/GEOMAlgo/GEOMAlgo_ShellSolid.cxx +++ /dev/null @@ -1,350 +0,0 @@ -// File: GEOMAlgo_ShellSolid.cxx -// Created: Wed Jan 12 12:49:45 2005 -// Author: Peter KURNEV -// - - -#include - -#include - -#include -#include -#include - -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include - -#include - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -//======================================================================= -//function : GEOMAlgo_ShellSolid -//purpose : -//======================================================================= -GEOMAlgo_ShellSolid::GEOMAlgo_ShellSolid() -: - GEOMAlgo_ShapeSolid() -{ -} -//======================================================================= -//function : ~ -//purpose : -//======================================================================= -GEOMAlgo_ShellSolid::~GEOMAlgo_ShellSolid() -{ -} -//======================================================================= -// function: -// purpose: -//======================================================================= -void GEOMAlgo_ShellSolid::Perform() -{ - myErrorStatus=0; - // - try { - if (myDSFiller==NULL) { - myErrorStatus=10; - return; - } - if(!myDSFiller->IsDone()) { - myErrorStatus=11; - return; - } - // - Standard_Boolean bIsNewFiller; - // - bIsNewFiller=myDSFiller->IsNewFiller(); - if (bIsNewFiller) { - Prepare(); - myDSFiller->SetNewFiller(!bIsNewFiller); - } - // - myRank=(myDSFiller->DS().Object().ShapeType()==TopAbs_SHELL) ? 1 : 2; - BuildResult(); - } - catch (Standard_Failure) { - myErrorStatus=12; - } -} -//======================================================================= -// function: Prepare -// purpose: -//======================================================================= -void GEOMAlgo_ShellSolid::Prepare() -{ - const BOPTools_PaveFiller& aPaveFiller=myDSFiller->PaveFiller(); - // - // 1 States - BOPTools_SolidStateFiller aStateFiller(aPaveFiller); - aStateFiller.Do(); - // - // 2 Project section edges on corresp. faces -> P-Curves on edges. - BOPTools_PCurveMaker aPCurveMaker(aPaveFiller); - aPCurveMaker.Do(); - // - // 3. Degenerated Edges Processing - BOPTools_DEProcessor aDEProcessor(aPaveFiller); - aDEProcessor.Do(); - // - // 4. Detect Same Domain Faces - DetectSDFaces(); -} -//================================================================================= -// function: BuildResult -// purpose: -//================================================================================= -void GEOMAlgo_ShellSolid::BuildResult() -{ - Standard_Boolean bIsTouchCase; - Standard_Integer i, j, nF1, nF2, aNbFFs, aNbS, aNbCurves, nSp, iRank1; - Standard_Integer nE, nF, aNbPB, iBeg, iEnd; - BooleanOperations_StateOfShape aState; - TopExp_Explorer anExp; - TopAbs_ShapeEnum aType; - gp_Pnt2d aP2D; - gp_Pnt aP3D; - // - const BooleanOperations_ShapesDataStructure& aDS=myDSFiller->DS(); - const BOPTools_InterferencePool& anInterfPool=myDSFiller->InterfPool(); - BOPTools_InterferencePool* pInterfPool=(BOPTools_InterferencePool*) &anInterfPool; - BOPTools_CArray1OfSSInterference& aFFs=pInterfPool->SSInterferences(); - const BOPTools_PaveFiller& aPaveFiller=myDSFiller->PaveFiller(); - const BOPTools_SplitShapesPool& aSplitShapesPool=aPaveFiller.SplitShapesPool(); - // - // 1. process pf non-interferring faces - iBeg=1; - iEnd=aDS.NumberOfShapesOfTheObject(); - if (myRank==2) { - iBeg=iEnd+1; - iEnd=aDS.NumberOfSourceShapes(); - } - // - for (i=iBeg; i<=iEnd; ++i) { - aType=aDS.GetShapeType(i); - if (aType!=TopAbs_FACE) { - continue; - } - // - const TopoDS_Face& aF1=TopoDS::Face(aDS.Shape(i)); - aState=aDS.GetState(i); - if (aState==BooleanOperations_IN) { - myLSIN.Append(aF1); - } - else if (aState==BooleanOperations_OUT) { - myLSOUT.Append(aF1); - } - } - // - // 2. process pf interferred faces - aNbFFs=aFFs.Extent(); - for (i=1; i<=aNbFFs; ++i) { - BOPTools_SSInterference& aFFi=aFFs(i); - // - nF1=aFFi.Index1(); - nF2=aFFi.Index2(); - iRank1=aDS.Rank(nF1); - nF=(iRank1==myRank) ? nF1 : nF2; - const TopoDS_Face& aF1=TopoDS::Face(aDS.Shape(nF)); - // - bIsTouchCase=aFFi.IsTangentFaces(); - // - if (bIsTouchCase) { - myLSON.Append(aF1); - continue; - } - // - // Has section edges ? - aNbS=0; - BOPTools_SequenceOfCurves& aBCurves=aFFi.Curves(); - aNbCurves=aBCurves.Length(); - for (j=1; j<=aNbCurves; j++) { - BOPTools_Curve& aBC=aBCurves(j); - const BOPTools_ListOfPaveBlock& aSectEdges=aBC.NewPaveBlocks(); - aNbS=aSectEdges.Extent(); - if (aNbS) { - break; - } - } - // - if (aNbS) { // it has - continue; - } - // - anExp.Init(aF1, TopAbs_EDGE); - for (; anExp.More(); anExp.Next()) { - const TopoDS_Edge& aE=TopoDS::Edge(anExp.Current()); - if (BRep_Tool::Degenerated(aE)) { - continue; - } - // - nE=aDS.ShapeIndex(aE, myRank); - const BOPTools_ListOfPaveBlock& aLPB=aSplitShapesPool(aDS.RefEdge(nE)); - aNbPB=aLPB.Extent(); - // - if (aNbPB<2) { - nSp=nE; - if (aNbPB) { - const BOPTools_PaveBlock& aPB=aLPB.First(); - nSp=aPB.Edge(); - } - const TopoDS_Shape& aSp=aDS.Shape(nSp); - // - aState=aDS.GetState(nSp); - if (aState==BooleanOperations_IN) { - myLSIN.Append(aF1); - } - else if (aState==BooleanOperations_OUT) { - myLSOUT.Append(aF1); - } - else if (aState==BooleanOperations_ON) { - Standard_Real aTol; - TopAbs_State aSt; - // - //const TopoDS_Face& aF2=TopoDS::Face(aDS.Shape((iRank1==myRank)? nF2 : nF1)); - //aTol=BRep_Tool::Tolerance(aF2); - aTol=1.e-7; - // - BOPTools_Tools3D::PointNearEdge(aE, aF1, aP2D, aP3D); - const TopoDS_Solid& aRefSolid=(myRank==1) ? - TopoDS::Solid(aDS.Tool()) : TopoDS::Solid(aDS.Object()); - // - BOPTools_PaveFiller* pPF=(BOPTools_PaveFiller*)& aPaveFiller; - IntTools_Context& aCtx=pPF->ChangeContext(); - // - BRepClass3d_SolidClassifier& aSC=aCtx.SolidClassifier(aRefSolid); - aSC.Perform(aP3D, aTol); - aSt=aSC.State(); - if (aSt==TopAbs_IN) { - myLSIN.Append(aF1); - } - else if (aSt==TopAbs_OUT) { - myLSOUT.Append(aF1); - } - } - break; - } // if (aNbPB<2) { - } //for (; anExp.More(); anExp.Next()) - } -} -//======================================================================= -// function: DetectSDFaces -// purpose: -//======================================================================= -void GEOMAlgo_ShellSolid::DetectSDFaces() -{ - const BooleanOperations_ShapesDataStructure& aDS=myDSFiller->DS(); - BOPTools_InterferencePool* pIntrPool=(BOPTools_InterferencePool*)&myDSFiller->InterfPool(); - BOPTools_CArray1OfSSInterference& aFFs=pIntrPool->SSInterferences(); - // - Standard_Boolean bFlag; - Standard_Integer i, aNb, nF1, nF2, iZone, aNbSps, iSenseFlag; - gp_Dir aDNF1, aDNF2; - - aNb=aFFs.Extent(); - for (i=1; i<=aNb; i++) { - bFlag=Standard_False; - - BOPTools_SSInterference& aFF=aFFs(i); - - nF1=aFF.Index1(); - nF2=aFF.Index2(); - const TopoDS_Face& aF1=TopoDS::Face(aDS.Shape(nF1)); - const TopoDS_Face& aF2=TopoDS::Face(aDS.Shape(nF2)); - // - // iSenseFlag; - const BOPTools_ListOfPaveBlock& aLPB=aFF.PaveBlocks(); - aNbSps=aLPB.Extent(); - - if (!aNbSps) { - continue; - } - - const BOPTools_PaveBlock& aPB=aLPB.First(); - const TopoDS_Edge& aSpE=TopoDS::Edge(aDS.Shape(aPB.Edge())); - - BOPTools_Tools3D::GetNormalToFaceOnEdge (aSpE, aF1, aDNF1); - BOPTools_Tools3D::GetNormalToFaceOnEdge (aSpE, aF2, aDNF2); - iSenseFlag=BOPTools_Tools3D::SenseFlag (aDNF1, aDNF2); - // - if (iSenseFlag==1 || iSenseFlag==-1) { - // - // - TopoDS_Face aF1FWD=aF1; - aF1FWD.Orientation (TopAbs_FORWARD); - - BOP_WireEdgeSet aWES (aF1FWD); - BOP_SDFWESFiller aWESFiller(nF1, nF2, *myDSFiller); - aWESFiller.SetSenseFlag(iSenseFlag); - aWESFiller.SetOperation(BOP_COMMON); - aWESFiller.Do(aWES); - - BOP_FaceBuilder aFB; - aFB.Do(aWES); - const TopTools_ListOfShape& aLF=aFB.NewFaces(); - - iZone=0; - TopTools_ListIteratorOfListOfShape anIt(aLF); - for (; anIt.More(); anIt.Next()) { - const TopoDS_Shape& aFR=anIt.Value(); - - if (aFR.ShapeType()==TopAbs_FACE) { - const TopoDS_Face& aFaceResult=TopoDS::Face(aFR); - // - Standard_Boolean bIsValidIn2D, bNegativeFlag; - bIsValidIn2D=BOPTools_Tools3D::IsValidArea (aFaceResult, bNegativeFlag); - if (bIsValidIn2D) { - //if(CheckSameDomainFaceInside(aFaceResult, aF2)) { - iZone=1; - break; - //} - } - // - } - } - - if (iZone) { - bFlag=Standard_True; - aFF.SetStatesMap(aWESFiller.StatesMap()); - } - - }// if (iSenseFlag) - - aFF.SetTangentFacesFlag(bFlag); - aFF.SetSenseFlag (iSenseFlag); - }// end of for (i=1; i<=aNb; i++) -} diff --git a/src/GEOMAlgo/GEOMAlgo_ShellSolid.hxx b/src/GEOMAlgo/GEOMAlgo_ShellSolid.hxx deleted file mode 100644 index 16415ecc7..000000000 --- a/src/GEOMAlgo/GEOMAlgo_ShellSolid.hxx +++ /dev/null @@ -1,96 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _GEOMAlgo_ShellSolid_HeaderFile -#define _GEOMAlgo_ShellSolid_HeaderFile - -#ifndef _GEOMAlgo_ShapeSolid_HeaderFile -#include -#endif - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class GEOMAlgo_ShellSolid : public GEOMAlgo_ShapeSolid { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT GEOMAlgo_ShellSolid(); -Standard_EXPORT virtual ~GEOMAlgo_ShellSolid(); -Standard_EXPORT virtual void Perform() ; - - - - - -protected: - - // Methods PROTECTED - // -Standard_EXPORT virtual void Prepare() ; -Standard_EXPORT virtual void BuildResult() ; -Standard_EXPORT void DetectSDFaces() ; - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_ShellSolid.ixx b/src/GEOMAlgo/GEOMAlgo_ShellSolid.ixx deleted file mode 100644 index f5b12e14e..000000000 --- a/src/GEOMAlgo/GEOMAlgo_ShellSolid.ixx +++ /dev/null @@ -1,26 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - - - - diff --git a/src/GEOMAlgo/GEOMAlgo_ShellSolid.jxx b/src/GEOMAlgo/GEOMAlgo_ShellSolid.jxx deleted file mode 100644 index e9afe6d41..000000000 --- a/src/GEOMAlgo/GEOMAlgo_ShellSolid.jxx +++ /dev/null @@ -1,3 +0,0 @@ -#ifndef _GEOMAlgo_ShellSolid_HeaderFile -#include -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_SolidSolid.cdl b/src/GEOMAlgo/GEOMAlgo_SolidSolid.cdl deleted file mode 100644 index 3634282e8..000000000 --- a/src/GEOMAlgo/GEOMAlgo_SolidSolid.cdl +++ /dev/null @@ -1,39 +0,0 @@ --- File: GEOMAlgo_SolidSolid.cdl --- Created: Wed Jan 26 12:05:14 2005 --- Author: Peter KURNEV --- ----Copyright: Matra Datavision 2005 - - -class SolidSolid from GEOMAlgo - inherits ShellSolid from GEOMAlgo - - ---Purpose: - -uses - Shape from TopoDS - ---raises - -is - Create - returns SolidSolid from GEOMAlgo; - ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_SolidSolid();" - - Perform (me:out) - is redefined; - - BuildResult (me:out) - is redefined protected; - - SetShape2 (me:out; - aS: Shape from TopoDS); - - Shape2 (me) - returns Shape from TopoDS; - ---C++: return const & - -fields - myS2: Shape from TopoDS is protected; - -end SolidSolid; diff --git a/src/GEOMAlgo/GEOMAlgo_SolidSolid.cxx b/src/GEOMAlgo/GEOMAlgo_SolidSolid.cxx deleted file mode 100644 index c4596bdb0..000000000 --- a/src/GEOMAlgo/GEOMAlgo_SolidSolid.cxx +++ /dev/null @@ -1,182 +0,0 @@ -// File: GEOMAlgo_SolidSolid.cxx -// Created: Wed Jan 26 12:06:26 2005 -// Author: Peter KURNEV -// - - -#include - -#include - -#include -#include -#include - -#include -#include -#include - -#include -#include - -#include - -//======================================================================= -//function : GEOMAlgo_SolidSolid -//purpose : -//======================================================================= -GEOMAlgo_SolidSolid::GEOMAlgo_SolidSolid() -: - GEOMAlgo_ShellSolid() -{ -} -//======================================================================= -//function : ~ -//purpose : -//======================================================================= -GEOMAlgo_SolidSolid::~GEOMAlgo_SolidSolid() -{ -} -//======================================================================= -// function: SetShape2 -// purpose: -//======================================================================= -void GEOMAlgo_SolidSolid::SetShape2(const TopoDS_Shape& aS2) -{ - myS2=aS2; -} -//======================================================================= -// function: Shape2 -// purpose: -//======================================================================= -const TopoDS_Shape& GEOMAlgo_SolidSolid::Shape2()const -{ - return myS2; -} -//======================================================================= -// function: Perform -// purpose: -//======================================================================= -void GEOMAlgo_SolidSolid::Perform() -{ - myErrorStatus=0; - try { - if (myDSFiller==NULL) { - myErrorStatus=10; - return; - } - if(!myDSFiller->IsDone()) { - myErrorStatus=11; - return; - } - // - Standard_Boolean bIsNewFiller; - // - bIsNewFiller=myDSFiller->IsNewFiller(); - if (bIsNewFiller) { - Prepare(); - myDSFiller->SetNewFiller(!bIsNewFiller); - } - // - myRank=2; - BuildResult(); - } - catch (Standard_Failure) { - myErrorStatus=12; - } -} -//================================================================================= -// function: BuildResult -// purpose: -//================================================================================= -void GEOMAlgo_SolidSolid::BuildResult() -{ - myErrorStatus=0; - // - Standard_Integer i, j, aNbF, aNbS; - Standard_Integer aNbFIN, aNbFOUT, aNbFON, aNbFINTR; - TopAbs_State aState; - TopTools_ListIteratorOfListOfShape aIt; - TopTools_IndexedMapOfShape aMF, aMS; - GEOMAlgo_IndexedDataMapOfShapeState aMFS; - // - // 1. classify the faces - GEOMAlgo_ShellSolid::BuildResult(); - // - // 2. fill Shape-State map - aIt.Initialize(myLSIN); - for (; aIt.More(); aIt.Next()) { - const TopoDS_Shape& aF=aIt.Value(); - aMFS.Add(aF, TopAbs_IN); - } - aIt.Initialize(myLSOUT); - for (; aIt.More(); aIt.Next()) { - const TopoDS_Shape& aF=aIt.Value(); - aMFS.Add(aF, TopAbs_OUT); - } - aIt.Initialize(myLSON); - for (; aIt.More(); aIt.Next()) { - const TopoDS_Shape& aF=aIt.Value(); - aMFS.Add(aF, TopAbs_ON); - } - myLSIN.Clear(); - myLSON.Clear(); - myLSOUT.Clear(); - // - // 3. fill states for solids - TopExp::MapShapes(myS2, TopAbs_SOLID, aMS); - // - aNbS=aMS.Extent(); - for (i=1; i<=aNbS; ++i) { - const TopoDS_Shape& aSolid=aMS(i); - // - aMF.Clear(); - TopExp::MapShapes(aSolid, TopAbs_FACE, aMF); - // - aNbFIN=0; - aNbFOUT=0; - aNbFON=0; - aNbFINTR=0; - // - aNbF=aMF.Extent(); - for(j=1; j -#endif -#ifndef _GEOMAlgo_ShellSolid_HeaderFile -#include -#endif -class TopoDS_Shape; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class GEOMAlgo_SolidSolid : public GEOMAlgo_ShellSolid { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT GEOMAlgo_SolidSolid(); -Standard_EXPORT virtual ~GEOMAlgo_SolidSolid(); -Standard_EXPORT virtual void Perform() ; -Standard_EXPORT void SetShape2(const TopoDS_Shape& aS) ; -Standard_EXPORT const TopoDS_Shape& Shape2() const; - - - - - -protected: - - // Methods PROTECTED - // -Standard_EXPORT virtual void BuildResult() ; - - - // Fields PROTECTED - // -TopoDS_Shape myS2; - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_SolidSolid.ixx b/src/GEOMAlgo/GEOMAlgo_SolidSolid.ixx deleted file mode 100644 index 9db5bd64f..000000000 --- a/src/GEOMAlgo/GEOMAlgo_SolidSolid.ixx +++ /dev/null @@ -1,26 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - - - - diff --git a/src/GEOMAlgo/GEOMAlgo_SolidSolid.jxx b/src/GEOMAlgo/GEOMAlgo_SolidSolid.jxx deleted file mode 100644 index abe70c5ce..000000000 --- a/src/GEOMAlgo/GEOMAlgo_SolidSolid.jxx +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_SolidSolid_HeaderFile -#include -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_State.hxx b/src/GEOMAlgo/GEOMAlgo_State.hxx deleted file mode 100644 index e1a164c9f..000000000 --- a/src/GEOMAlgo/GEOMAlgo_State.hxx +++ /dev/null @@ -1,40 +0,0 @@ -// File generated by CPPExt (Enum) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _GEOMAlgo_State_HeaderFile -#define _GEOMAlgo_State_HeaderFile - -enum GEOMAlgo_State { - GEOMAlgo_ST_UNKNOWN, -GEOMAlgo_ST_IN, -GEOMAlgo_ST_OUT, -GEOMAlgo_ST_ON, -GEOMAlgo_ST_ONIN, -GEOMAlgo_ST_ONOUT, -GEOMAlgo_ST_INOUT -}; - - -#ifndef _Standard_PrimitiveTypes_HeaderFile -#include -#endif - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_StateCollector.cdl b/src/GEOMAlgo/GEOMAlgo_StateCollector.cdl deleted file mode 100644 index 7919dbd2e..000000000 --- a/src/GEOMAlgo/GEOMAlgo_StateCollector.cdl +++ /dev/null @@ -1,31 +0,0 @@ --- File: GEOMAlgo_StateCollector.cdl --- Created: Thu Mar 10 09:39:25 2005 --- Author: Peter KURNEV --- ----Copyright: Matra Datavision 2005 - - -class StateCollector from GEOMAlgo - - ---Purpose: - -uses - State from TopAbs - ---raises - -is - Create - returns StateCollector from GEOMAlgo; - - AppendState(me:out; - aSt:State from TopAbs) - returns Boolean from Standard; - - State(me) - returns State from TopAbs; - -fields - myCounter:Integer from Standard[3]; - -end StateCollector; diff --git a/src/GEOMAlgo/GEOMAlgo_StateCollector.cxx b/src/GEOMAlgo/GEOMAlgo_StateCollector.cxx deleted file mode 100644 index 1e754ff88..000000000 --- a/src/GEOMAlgo/GEOMAlgo_StateCollector.cxx +++ /dev/null @@ -1,71 +0,0 @@ -// File: GEOMAlgo_StateCollector.cxx -// Created: Thu Mar 10 09:42:11 2005 -// Author: Peter KURNEV -// - - -#include - -//======================================================================= -//function : GEOMAlgo_StateCollector -//purpose : -//======================================================================= -GEOMAlgo_StateCollector::GEOMAlgo_StateCollector() -{ - myCounter[0]=0; - myCounter[1]=0; - myCounter[2]=0; -} -//======================================================================= -//function : AppendState -//purpose : -//======================================================================= -Standard_Boolean GEOMAlgo_StateCollector::AppendState(const TopAbs_State aSt) -{ - Standard_Boolean bIsToBreak; - // - switch(aSt) { - case TopAbs_IN: - ++myCounter[0]; - break; - case TopAbs_OUT: - ++myCounter[1]; - break; - case TopAbs_ON: - ++myCounter[2]; - break; - default: - break; - } - bIsToBreak=(myCounter[0] && myCounter[1]); - // - return bIsToBreak; -} -//======================================================================= -//function : State -//purpose : -//======================================================================= -TopAbs_State GEOMAlgo_StateCollector::State()const -{ - TopAbs_State aSt; - // - aSt=TopAbs_UNKNOWN; - // - if (myCounter[0] && myCounter[1]) { - return aSt; - } - // - else if (myCounter[0] && myCounter[2]>=0) { - aSt=TopAbs_IN; - } - // - else if (myCounter[1] && myCounter[2]>=0) { - aSt=TopAbs_OUT; - } - // - else if (!myCounter[0] && !myCounter[1] && myCounter[2]) { - aSt=TopAbs_ON; - } - // - return aSt; -} diff --git a/src/GEOMAlgo/GEOMAlgo_StateCollector.hxx b/src/GEOMAlgo/GEOMAlgo_StateCollector.hxx deleted file mode 100644 index 3c1e25bfe..000000000 --- a/src/GEOMAlgo/GEOMAlgo_StateCollector.hxx +++ /dev/null @@ -1,100 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _GEOMAlgo_StateCollector_HeaderFile -#define _GEOMAlgo_StateCollector_HeaderFile - -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -#ifndef _TopAbs_State_HeaderFile -#include -#endif - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class GEOMAlgo_StateCollector { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT GEOMAlgo_StateCollector(); -Standard_EXPORT Standard_Boolean AppendState(const TopAbs_State aSt) ; -Standard_EXPORT TopAbs_State State() const; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -Standard_Integer myCounter[3]; - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_StateCollector.ixx b/src/GEOMAlgo/GEOMAlgo_StateCollector.ixx deleted file mode 100644 index d3cb9c3cf..000000000 --- a/src/GEOMAlgo/GEOMAlgo_StateCollector.ixx +++ /dev/null @@ -1,26 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - - - - diff --git a/src/GEOMAlgo/GEOMAlgo_StateCollector.jxx b/src/GEOMAlgo/GEOMAlgo_StateCollector.jxx deleted file mode 100644 index 3fe123afc..000000000 --- a/src/GEOMAlgo/GEOMAlgo_StateCollector.jxx +++ /dev/null @@ -1,3 +0,0 @@ -#ifndef _GEOMAlgo_StateCollector_HeaderFile -#include -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_SurfaceTools.cdl b/src/GEOMAlgo/GEOMAlgo_SurfaceTools.cdl deleted file mode 100644 index 8242aca94..000000000 --- a/src/GEOMAlgo/GEOMAlgo_SurfaceTools.cdl +++ /dev/null @@ -1,78 +0,0 @@ --- File: GEOMAlgo_SurfaceTools.cdl --- Created: Thu Jan 27 11:03:49 2005 --- Author: Peter KURNEV --- ----Copyright: Matra Datavision 2005 - - -class SurfaceTools from GEOMAlgo - - ---Purpose: - -uses - Pnt from gp, - Pln from gp, - Cylinder from gp, - Sphere from gp, - Surface from Geom, - Surface from GeomAdaptor, - State from TopAbs, - State from GEOMAlgo - ---raises - -is - - - IsAnalytic(myclass; - aS:Surface from Geom) - returns Boolean from Standard; - - IsCoaxial(myclass; - aP1 : Pnt from gp; - aP2 : Pnt from gp; - aCyl : Cylinder from gp; - aTol : Real from Standard) - returns Boolean from Standard; - - IsConformState(myclass; - aST1:State from TopAbs; - aST2:State from GEOMAlgo) - returns Boolean from Standard; - - GetState(myclass; - aP:Pnt from gp; - aS:Surface from GeomAdaptor; - aTol:Real from Standard; - aSt:out State from TopAbs) - returns Integer from Standard; - - GetState(myclass; - aP:Pnt from gp; - aS:Surface from Geom; - aTol:Real from Standard; - aSt:out State from TopAbs) - returns Integer from Standard; - - Distance(myclass; - aP:Pnt from gp; - aPln:Pln from gp) - returns Real from Standard; - - Distance(myclass; - aP:Pnt from gp; - aCyl:Cylinder from gp) - returns Real from Standard; - - Distance(myclass; - aP:Pnt from gp; - aSph:Sphere from gp) - returns Real from Standard; - - ReverseState(myclass; - aSt: State from TopAbs) - returns State from TopAbs; - ---fields - -end SurfaceTools; diff --git a/src/GEOMAlgo/GEOMAlgo_SurfaceTools.cxx b/src/GEOMAlgo/GEOMAlgo_SurfaceTools.cxx deleted file mode 100644 index 16b20746d..000000000 --- a/src/GEOMAlgo/GEOMAlgo_SurfaceTools.cxx +++ /dev/null @@ -1,249 +0,0 @@ -// File: GEOMAlgo_SurfaceTools.cxx -// Created: Thu Jan 27 11:05:16 2005 -// Author: Peter KURNEV -// - - -#include - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - - -//======================================================================= -//function : GetState -//purpose : -//======================================================================= - Standard_Integer GEOMAlgo_SurfaceTools::GetState(const gp_Pnt& aP, - const GeomAdaptor_Surface& aGAS, - const Standard_Real aTol, - TopAbs_State& aState) -{ - Standard_Integer iErr; - Standard_Real aDp, aR; - GeomAbs_SurfaceType aType; - gp_Sphere aSph; - gp_Cylinder aCyl; - gp_Pln aPln; - // - iErr=0; - aState=TopAbs_UNKNOWN; - // - aType=aGAS.GetType(); - switch (aType) { - case GeomAbs_Plane: - aPln=aGAS.Plane(); - aR=0.; - aDp=GEOMAlgo_SurfaceTools::Distance(aP, aPln); - break; - - case GeomAbs_Cylinder: - aCyl=aGAS.Cylinder(); - aR=aCyl.Radius(); - aDp=GEOMAlgo_SurfaceTools::Distance(aP, aCyl); - break; - - case GeomAbs_Sphere: - aSph=aGAS.Sphere(); - aR=aSph.Radius(); - aDp=GEOMAlgo_SurfaceTools::Distance(aP, aSph); - break; - - default: - iErr=1; // unprocessed surface type - break; - } - // - if (!iErr) { - aState=TopAbs_ON; - if (aDp>aR+aTol) { - aState=TopAbs_OUT; - } - else if (aDp aTol) { - return bRet; - } - // - return !bRet; -} -//======================================================================= -//function : IsAnalytic -//purpose : -//======================================================================= -Standard_Boolean GEOMAlgo_SurfaceTools::IsAnalytic(const Handle(Geom_Surface)& aSurf) -{ - Standard_Boolean bRet; - GeomAbs_SurfaceType aType; - GeomAdaptor_Surface aGAS; - // - aGAS.Load(aSurf); - aType=aGAS.GetType(); - bRet=(aType==GeomAbs_Plane || - aType==GeomAbs_Cylinder || - aType==GeomAbs_Sphere); - return bRet; -} -//======================================================================= -//function : IsConformState -//purpose : -//======================================================================= -Standard_Boolean GEOMAlgo_SurfaceTools::IsConformState(const TopAbs_State aST1, - const GEOMAlgo_State aST2) -{ - Standard_Boolean bRet=Standard_False; - // - switch (aST2) { - case GEOMAlgo_ST_IN: - if (aST1==TopAbs_IN) { - bRet=!bRet; - } - break; - case GEOMAlgo_ST_OUT: - if (aST1==TopAbs_OUT) { - bRet=!bRet; - } - break; - case GEOMAlgo_ST_ON: - if (aST1==TopAbs_ON) { - bRet=!bRet; - } - break; - case GEOMAlgo_ST_ONIN: - if (aST1==TopAbs_ON || aST1==TopAbs_IN) { - bRet=!bRet; - } - break; - case GEOMAlgo_ST_ONOUT: - if (aST1==TopAbs_ON || aST1==TopAbs_OUT) { - bRet=!bRet; - } - break; - default: - break; - } - return bRet; -} diff --git a/src/GEOMAlgo/GEOMAlgo_SurfaceTools.hxx b/src/GEOMAlgo/GEOMAlgo_SurfaceTools.hxx deleted file mode 100644 index 19f616025..000000000 --- a/src/GEOMAlgo/GEOMAlgo_SurfaceTools.hxx +++ /dev/null @@ -1,120 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _GEOMAlgo_SurfaceTools_HeaderFile -#define _GEOMAlgo_SurfaceTools_HeaderFile - -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -#ifndef _Handle_Geom_Surface_HeaderFile -#include -#endif -#ifndef _Standard_Real_HeaderFile -#include -#endif -#ifndef _TopAbs_State_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_State_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -class Geom_Surface; -class gp_Pnt; -class gp_Cylinder; -class GeomAdaptor_Surface; -class gp_Pln; -class gp_Sphere; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class GEOMAlgo_SurfaceTools { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT static Standard_Boolean IsAnalytic(const Handle(Geom_Surface)& aS) ; -Standard_EXPORT static Standard_Boolean IsCoaxial(const gp_Pnt& aP1,const gp_Pnt& aP2,const gp_Cylinder& aCyl,const Standard_Real aTol) ; -Standard_EXPORT static Standard_Boolean IsConformState(const TopAbs_State aST1,const GEOMAlgo_State aST2) ; -Standard_EXPORT static Standard_Integer GetState(const gp_Pnt& aP,const GeomAdaptor_Surface& aS,const Standard_Real aTol,TopAbs_State& aSt) ; -Standard_EXPORT static Standard_Integer GetState(const gp_Pnt& aP,const Handle(Geom_Surface)& aS,const Standard_Real aTol,TopAbs_State& aSt) ; -Standard_EXPORT static Standard_Real Distance(const gp_Pnt& aP,const gp_Pln& aPln) ; -Standard_EXPORT static Standard_Real Distance(const gp_Pnt& aP,const gp_Cylinder& aCyl) ; -Standard_EXPORT static Standard_Real Distance(const gp_Pnt& aP,const gp_Sphere& aSph) ; -Standard_EXPORT static TopAbs_State ReverseState(const TopAbs_State aSt) ; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_SurfaceTools.ixx b/src/GEOMAlgo/GEOMAlgo_SurfaceTools.ixx deleted file mode 100644 index 5a0ce4e92..000000000 --- a/src/GEOMAlgo/GEOMAlgo_SurfaceTools.ixx +++ /dev/null @@ -1,26 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - - - - diff --git a/src/GEOMAlgo/GEOMAlgo_SurfaceTools.jxx b/src/GEOMAlgo/GEOMAlgo_SurfaceTools.jxx deleted file mode 100644 index ceb961740..000000000 --- a/src/GEOMAlgo/GEOMAlgo_SurfaceTools.jxx +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef _Geom_Surface_HeaderFile -#include -#endif -#ifndef _gp_Pnt_HeaderFile -#include -#endif -#ifndef _gp_Cylinder_HeaderFile -#include -#endif -#ifndef _GeomAdaptor_Surface_HeaderFile -#include -#endif -#ifndef _gp_Pln_HeaderFile -#include -#endif -#ifndef _gp_Sphere_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_SurfaceTools_HeaderFile -#include -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_Tools.cdl b/src/GEOMAlgo/GEOMAlgo_Tools.cdl deleted file mode 100644 index 922d14a14..000000000 --- a/src/GEOMAlgo/GEOMAlgo_Tools.cdl +++ /dev/null @@ -1,94 +0,0 @@ --- File: GEOMAlgo_Tools.cdl --- Created: Mon Dec 6 11:26:02 2004 --- Author: Peter KURNEV --- ----Copyright: Matra Datavision 2004 - - -class Tools from GEOMAlgo - - ---Purpose: - -uses - Pnt from gp, - Surface from Geom, - ShapeEnum from TopAbs, - Edge from TopoDS, - Face from TopoDS, - Shape from TopoDS, - ListOfShape from TopTools, - IndexedDataMapOfShapeListOfShape from TopTools, - Context from IntTools, - IndexedDataMapOfPassKeyShapeListOfShape from GEOMAlgo - ---raises - -is - IsCompositeShape(myclass; - aS :Shape from TopoDS) - returns Boolean from Standard; - - RefineSDShapes(myclass; - aMSD:out IndexedDataMapOfPassKeyShapeListOfShape from GEOMAlgo; - aTol:Real from Standard; - aCtx:out Context from IntTools) - returns Integer from Standard; - - FindSDShapes(myclass; - aLE :ListOfShape from TopTools; - aTol:Real from Standard; - aMEE:out IndexedDataMapOfShapeListOfShape from TopTools; - aCtx:out Context from IntTools) - returns Integer from Standard; - - FindSDShapes(myclass; - aE1 :Shape from TopoDS; - aLE :ListOfShape from TopTools; - aTol :Real from Standard; - aLESD :out ListOfShape from TopTools; - aCtx :out Context from IntTools) - returns Integer from Standard; - - ProjectPointOnShape(myclass; - aP1: Pnt from gp; - aS :Shape from TopoDS; - aP2:out Pnt from gp; - aCtx :out Context from IntTools) - returns Boolean from Standard; - - PointOnShape(myclass; - aS :Shape from TopoDS; - aP3D:out Pnt from gp); - - PointOnEdge(myclass; - aE :Edge from TopoDS; - aP3D:out Pnt from gp); - - PointOnEdge(myclass; - aE :Edge from TopoDS; - aT :Real from Standard; - aP3D:out Pnt from gp); - - PointOnFace(myclass; - aF :Face from TopoDS; - aP3D:out Pnt from gp); - - PointOnFace(myclass; - aF :Face from TopoDS; - aU :Real from Standard; - aV :Real from Standard; - aP3D:out Pnt from gp); - - RefinePCurveForEdgeOnFace (myclass; - aE : Edge from TopoDS; - aF : Face from TopoDS; - aU1 : Real from Standard; - aU2 : Real from Standard); - - IsUPeriodic(myclass; - aS:Surface from Geom) - returns Boolean from Standard; - ---fields - -end Tools; diff --git a/src/GEOMAlgo/GEOMAlgo_Tools.cxx b/src/GEOMAlgo/GEOMAlgo_Tools.cxx deleted file mode 100644 index 1a4437b7f..000000000 --- a/src/GEOMAlgo/GEOMAlgo_Tools.cxx +++ /dev/null @@ -1,438 +0,0 @@ -// File: GEOMAlgo_Tools.cxx -// Created: Mon Dec 6 11:35:29 2004 -// Author: Peter KURNEV -// - -#include - -#include -#include - -#include -#include -#include -#include - -#include - -#include - -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include - -#include -#include - -#include -#include - -static - void GetCount(const TopoDS_Shape& aS, - Standard_Integer& iCnt); - -//======================================================================= -//function : IsCompositeShape -//purpose : -//======================================================================= -Standard_Boolean GEOMAlgo_Tools::IsCompositeShape(const TopoDS_Shape& aS) -{ - Standard_Boolean bRet; - Standard_Integer iCnt; - TopoDS_Iterator aIt; - // - iCnt=0; - GetCount(aS, iCnt); - bRet=(iCnt>1); - // - return bRet; -} - -//======================================================================= -//function : GetCount -//purpose : -//======================================================================= -void GetCount(const TopoDS_Shape& aS, - Standard_Integer& iCnt) -{ - TopoDS_Iterator aIt; - TopAbs_ShapeEnum aTS; - // - aTS=aS.ShapeType(); - // - if (aTS==TopAbs_SHAPE) { - return; - } - if (aTS!=TopAbs_COMPOUND) { - ++iCnt; - return; - } - // - aIt.Initialize(aS); - for (; aIt.More(); aIt.Next()) { - const TopoDS_Shape& aSx=aIt.Value(); - GetCount(aSx, iCnt); - } -} - -//======================================================================= -//function : RefineSDShapes -//purpose : -//======================================================================= -Standard_Integer GEOMAlgo_Tools::RefineSDShapes(GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape &aMPKLE, - const Standard_Real aTol, - IntTools_Context& aCtx) -{ - Standard_Integer i, aNbE, iErr, j, aNbEE, aNbToAdd; - TopTools_IndexedDataMapOfShapeListOfShape aMEE, aMSDE, aMEToAdd; - // - iErr=1; - // - aNbE=aMPKLE.Extent(); - for (i=1; i<=aNbE; ++i) { - TopTools_ListOfShape& aLSDE=aMPKLE.ChangeFromIndex(i); - // - aMEE.Clear(); - iErr=GEOMAlgo_Tools::FindSDShapes(aLSDE, aTol, aMEE, aCtx); - if (iErr) { - return iErr; - } - // - aNbEE=aMEE.Extent(); - if (aNbEE==1) { - continue; // nothing to do - } - // - for (j=1; j<=aNbEE; ++j) { - TopTools_ListOfShape& aLEE=aMEE.ChangeFromIndex(j); - // - if (j==1) { - aLSDE.Clear(); - aLSDE.Append(aLEE); - } - else { - const TopoDS_Shape& aE1=aLEE.First(); - aMEToAdd.Add(aE1, aLEE); - } - } - } - // - aNbToAdd=aMEToAdd.Extent(); - if (!aNbToAdd) { - return aNbToAdd; - } - // - for (i=1; i<=aNbToAdd; ++i) { - GEOMAlgo_PassKeyShape aPKE1; - // - const TopoDS_Shape& aE1=aMEToAdd.FindKey(i); - const TopTools_ListOfShape& aLE=aMEToAdd(i); - // - aPKE1.SetIds(aE1); - aMPKLE.Add(aPKE1, aLE); - } - // - return 0; -} -//======================================================================= -//function : FindSDShapes -//purpose : -//======================================================================= -Standard_Integer GEOMAlgo_Tools::FindSDShapes(const TopTools_ListOfShape& aLE, - const Standard_Real aTol, - TopTools_IndexedDataMapOfShapeListOfShape& aMEE, - IntTools_Context& aCtx) -{ - Standard_Integer aNbE, aNbEProcessed, aNbESD, iErr; - TopTools_ListOfShape aLESD; - TopTools_ListIteratorOfListOfShape aIt, aIt1; - TopTools_IndexedMapOfShape aMProcessed; - TopAbs_ShapeEnum aType; - // - aNbE=aLE.Extent(); - if (!aNbE) { - return 3; // Err - } - //modified by NIZNHY-PKV Thu Dec 30 10:56:52 2004 f - if (aNbE==1) { - return 0; // Nothing to do - } - //modified by NIZNHY-PKV Thu Dec 30 10:56:56 2004 t - // - while(1) { - aNbEProcessed=aMProcessed.Extent(); - if (aNbEProcessed==aNbE) { - break; - } - // - aIt.Initialize(aLE); - for (; aIt.More(); aIt.Next()) { - const TopoDS_Shape& aS=aIt.Value(); - // - if (aMProcessed.Contains(aS)) { - continue; - } - // - //modified by NIZNHY-PKV Thu Dec 30 10:57:01 2004 f - aType=aS.ShapeType(); - if (aType==TopAbs_EDGE) { - const TopoDS_Edge& aE=TopoDS::Edge(aS); - if (BRep_Tool::Degenerated(aE)) { - aMProcessed.Add(aE); - continue; - } - } - //modified by NIZNHY-PKV Thu Dec 30 10:57:03 2004 t - // - aLESD.Clear(); - iErr=GEOMAlgo_Tools::FindSDShapes(aS, aLE, aTol, aLESD, aCtx); - if (iErr) { - return 2; // Err - } - // - aNbESD=aLESD.Extent(); - if (!aNbESD) { - return 1; // Err - } - // - aMEE.Add(aS, aLESD); - // - aIt1.Initialize(aLESD); - for (; aIt1.More(); aIt1.Next()) { - const TopoDS_Shape& aE1=aIt1.Value(); - aMProcessed.Add(aE1); - } - } - } - return 0; -} -//======================================================================= -//function : FindSDShapes -//purpose : -//======================================================================= -Standard_Integer GEOMAlgo_Tools::FindSDShapes(const TopoDS_Shape& aE1, - const TopTools_ListOfShape& aLE, - const Standard_Real aTol, - TopTools_ListOfShape& aLESD, - IntTools_Context& aCtx) -{ - Standard_Boolean bIsDone; - Standard_Real aTol2, aD2; - gp_Pnt aP1, aP2; - TopTools_ListIteratorOfListOfShape aIt; - // - aTol2=aTol*aTol; - GEOMAlgo_Tools::PointOnShape(aE1, aP1); - // - aIt.Initialize(aLE); - for (; aIt.More(); aIt.Next()) { - const TopoDS_Shape& aE2=aIt.Value(); - if (aE2.IsSame(aE1)) { - aLESD.Append(aE2); - } - else { - bIsDone=GEOMAlgo_Tools::ProjectPointOnShape(aP1, aE2, aP2, aCtx); - if (!bIsDone) { - return 1; - } - aD2=aP1.SquareDistance(aP2); - if(aD2D0(aU, aV, aP3D); -} -//======================================================================= -//function : PointOnEdge -//purpose : -//======================================================================= -void GEOMAlgo_Tools::PointOnEdge(const TopoDS_Edge& aE, - gp_Pnt& aP3D) -{ - Standard_Real aTx, aT1, aT2; - // - BRep_Tool::Curve(aE, aT1, aT2); - aTx=BOPTools_Tools2D::IntermediatePoint(aT1, aT2); - GEOMAlgo_Tools::PointOnEdge(aE, aTx, aP3D); -} -//======================================================================= -//function : PointOnEdge -//purpose : -//======================================================================= -void GEOMAlgo_Tools::PointOnEdge(const TopoDS_Edge& aE, - const Standard_Real aT, - gp_Pnt& aP3D) -{ - Standard_Real aT1, aT2; - Handle(Geom_Curve) aC3D; - // - aC3D=BRep_Tool::Curve(aE, aT1, aT2); - aC3D->D0(aT, aP3D); -} -//======================================================================= -//function : RefinePCurveForEdgeOnFace -//purpose : -//======================================================================= -void GEOMAlgo_Tools::RefinePCurveForEdgeOnFace(const TopoDS_Edge& aE, - const TopoDS_Face& aF, - const Standard_Real aUMin, - const Standard_Real aUMax) -{ - Standard_Real aT1, aT2, aTx, aUx, aTol, aTwoPI; - gp_Pnt2d aP2D; - Handle(Geom_Surface) aS; - Handle(Geom2d_Curve) aC2D; - BRep_Builder aBB; - // - aTwoPI=PI+PI; - // - aC2D=BRep_Tool::CurveOnSurface(aE, aF, aT1, aT2); - if (!aC2D.IsNull()) { - if (BRep_Tool::IsClosed(aE, aF)) { - return; - } - aTx=BOPTools_Tools2D::IntermediatePoint(aT1, aT2); - aC2D->D0(aTx, aP2D); - aUx=aP2D.X(); - if (aUx < aUMin || aUx > aUMax) { - // need to rebuild - Handle(Geom2d_Curve) aC2Dx; - // - aTol=BRep_Tool::Tolerance(aE); - aBB.UpdateEdge(aE, aC2Dx, aF, aTol); - } - } -} -//======================================================================= -//function : IsUPeriodic -//purpose : -//======================================================================= -Standard_Boolean GEOMAlgo_Tools::IsUPeriodic(const Handle(Geom_Surface) &aS) -{ - Standard_Boolean bRet; - GeomAbs_SurfaceType aType; - GeomAdaptor_Surface aGAS; - // - aGAS.Load(aS); - aType=aGAS.GetType(); - bRet=(aType==GeomAbs_Cylinder|| - aType==GeomAbs_Cone || - aType==GeomAbs_Sphere); - // - return bRet; -} diff --git a/src/GEOMAlgo/GEOMAlgo_Tools.hxx b/src/GEOMAlgo/GEOMAlgo_Tools.hxx deleted file mode 100644 index 73d9bc35f..000000000 --- a/src/GEOMAlgo/GEOMAlgo_Tools.hxx +++ /dev/null @@ -1,120 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _GEOMAlgo_Tools_HeaderFile -#define _GEOMAlgo_Tools_HeaderFile - -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Real_HeaderFile -#include -#endif -#ifndef _Handle_Geom_Surface_HeaderFile -#include -#endif -class TopoDS_Shape; -class GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape; -class IntTools_Context; -class TopTools_ListOfShape; -class TopTools_IndexedDataMapOfShapeListOfShape; -class gp_Pnt; -class TopoDS_Edge; -class TopoDS_Face; -class Geom_Surface; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class GEOMAlgo_Tools { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT static Standard_Boolean IsCompositeShape(const TopoDS_Shape& aS) ; -Standard_EXPORT static Standard_Integer RefineSDShapes(GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape& aMSD,const Standard_Real aTol,IntTools_Context& aCtx) ; -Standard_EXPORT static Standard_Integer FindSDShapes(const TopTools_ListOfShape& aLE,const Standard_Real aTol,TopTools_IndexedDataMapOfShapeListOfShape& aMEE,IntTools_Context& aCtx) ; -Standard_EXPORT static Standard_Integer FindSDShapes(const TopoDS_Shape& aE1,const TopTools_ListOfShape& aLE,const Standard_Real aTol,TopTools_ListOfShape& aLESD,IntTools_Context& aCtx) ; -Standard_EXPORT static Standard_Boolean ProjectPointOnShape(const gp_Pnt& aP1,const TopoDS_Shape& aS,gp_Pnt& aP2,IntTools_Context& aCtx) ; -Standard_EXPORT static void PointOnShape(const TopoDS_Shape& aS,gp_Pnt& aP3D) ; -Standard_EXPORT static void PointOnEdge(const TopoDS_Edge& aE,gp_Pnt& aP3D) ; -Standard_EXPORT static void PointOnEdge(const TopoDS_Edge& aE,const Standard_Real aT,gp_Pnt& aP3D) ; -Standard_EXPORT static void PointOnFace(const TopoDS_Face& aF,gp_Pnt& aP3D) ; -Standard_EXPORT static void PointOnFace(const TopoDS_Face& aF,const Standard_Real aU,const Standard_Real aV,gp_Pnt& aP3D) ; -Standard_EXPORT static void RefinePCurveForEdgeOnFace(const TopoDS_Edge& aE,const TopoDS_Face& aF,const Standard_Real aU1,const Standard_Real aU2) ; -Standard_EXPORT static Standard_Boolean IsUPeriodic(const Handle(Geom_Surface)& aS) ; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_Tools.ixx b/src/GEOMAlgo/GEOMAlgo_Tools.ixx deleted file mode 100644 index 6b9d6c04d..000000000 --- a/src/GEOMAlgo/GEOMAlgo_Tools.ixx +++ /dev/null @@ -1,26 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - - - - diff --git a/src/GEOMAlgo/GEOMAlgo_Tools.jxx b/src/GEOMAlgo/GEOMAlgo_Tools.jxx deleted file mode 100644 index 379b7f298..000000000 --- a/src/GEOMAlgo/GEOMAlgo_Tools.jxx +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape_HeaderFile -#include -#endif -#ifndef _IntTools_Context_HeaderFile -#include -#endif -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _TopTools_IndexedDataMapOfShapeListOfShape_HeaderFile -#include -#endif -#ifndef _gp_Pnt_HeaderFile -#include -#endif -#ifndef _TopoDS_Edge_HeaderFile -#include -#endif -#ifndef _TopoDS_Face_HeaderFile -#include -#endif -#ifndef _Geom_Surface_HeaderFile -#include -#endif -#ifndef _GEOMAlgo_Tools_HeaderFile -#include -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_VertexSolid.cdl b/src/GEOMAlgo/GEOMAlgo_VertexSolid.cdl deleted file mode 100644 index 9a7c6232a..000000000 --- a/src/GEOMAlgo/GEOMAlgo_VertexSolid.cdl +++ /dev/null @@ -1,32 +0,0 @@ --- File: GEOMAlgo_VertexSolid.cdl --- Created: Wed Jan 12 16:34:53 2005 --- Author: Peter KURNEV --- ----Copyright: Matra Datavision 2005 - - -class VertexSolid from GEOMAlgo - inherits ShapeSolid from GEOMAlgo - - ---Purpose: - ---uses ---raises - -is - Create - returns VertexSolid from GEOMAlgo; - ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_VertexSolid();" - - Perform (me:out) - is redefined; - - Prepare(me:out) - is redefined protected; - - BuildResult (me:out) - is redefined protected; - ---fields - -end VertexSolid; diff --git a/src/GEOMAlgo/GEOMAlgo_VertexSolid.cxx b/src/GEOMAlgo/GEOMAlgo_VertexSolid.cxx deleted file mode 100644 index 1257362ed..000000000 --- a/src/GEOMAlgo/GEOMAlgo_VertexSolid.cxx +++ /dev/null @@ -1,219 +0,0 @@ -// File: GEOMAlgo_VertexSolid.cxx -// Created: Wed Jan 12 16:36:40 2005 -// Author: Peter KURNEV -// - - -#include - -#include - -#include -#include - -#include -#include -#include - -#include -#include -#include - -#include - -#include -#include - -#include - -#include - -#include -#include - -#include -#include -#include -#include -#include - -//======================================================================= -//function : GEOMAlgo_VertexSolid -//purpose : -//======================================================================= -GEOMAlgo_VertexSolid::GEOMAlgo_VertexSolid() -: - GEOMAlgo_ShapeSolid() -{ -} -//======================================================================= -//function : ~ -//purpose : -//======================================================================= -GEOMAlgo_VertexSolid::~GEOMAlgo_VertexSolid() -{ -} -//======================================================================= -// function: Perform -// purpose: -//======================================================================= -void GEOMAlgo_VertexSolid::Perform() -{ - myErrorStatus=0; - // - try { - if (myDSFiller==NULL) { - myErrorStatus=10; - return; - } - if(!myDSFiller->IsDone()) { - myErrorStatus=11; - return; - } - // - Standard_Boolean bIsNewFiller; - Standard_Integer aNbF; - TopTools_IndexedMapOfShape aM; - // - const BooleanOperations_ShapesDataStructure& aDS=myDSFiller->DS(); - const TopoDS_Shape& aObj=aDS.Object(); - // - TopExp::MapShapes(aObj, TopAbs_FACE, aM); - aNbF=aM.Extent(); - myRank=(aNbF) ? 2 : 1; - // - bIsNewFiller=myDSFiller->IsNewFiller(); - - if (bIsNewFiller) { - Prepare(); - myDSFiller->SetNewFiller(!bIsNewFiller); - } - BuildResult(); - } - // - catch (Standard_Failure) { - myErrorStatus = 12; - } -} -//======================================================================= -// function: Prepare -// purpose: -//======================================================================= -void GEOMAlgo_VertexSolid::Prepare() -{ - Standard_Integer i, iBeg, iEnd, aNbVV, j, n1, n2, iFound; - Standard_Real aTol; - TopAbs_State aSt; - TopAbs_ShapeEnum aType; - BooleanOperations_StateOfShape aState; - gp_Pnt aP3D; - // - const BooleanOperations_ShapesDataStructure& aDS=myDSFiller->DS(); - BooleanOperations_ShapesDataStructure* pDS=(BooleanOperations_ShapesDataStructure*)&aDS; - const BOPTools_InterferencePool& aIP=myDSFiller->InterfPool(); - BOPTools_InterferencePool* pIP=(BOPTools_InterferencePool*) &aIP; - BOPTools_CArray1OfVVInterference& aVVs=pIP->VVInterferences(); - const BOPTools_PaveFiller& aPF=myDSFiller->PaveFiller(); - BOPTools_PaveFiller* pPF=(BOPTools_PaveFiller*)&aPF; - IntTools_Context& aCtx=pPF->ChangeContext(); - // - const TopoDS_Shape& aObj=aDS.Object(); - const TopoDS_Shape& aTool=aDS.Tool(); - // - const TopoDS_Solid& aSolid=(myRank==1) ? TopoDS::Solid(aTool) : TopoDS::Solid(aObj); - const TopoDS_Shape& aSV =(myRank==1)? aObj : aTool; - // - BRepClass3d_SolidClassifier& aSC=aCtx.SolidClassifier(aSolid); - // - iBeg=1; - iEnd=aDS.NumberOfShapesOfTheObject(); - if (myRank==2) { - iBeg=iEnd+1; - iEnd=aDS.NumberOfSourceShapes(); - } - // - for (i=iBeg; i<=iEnd; ++i) { - aType=aDS.GetShapeType(i); - if (aType!=TopAbs_VERTEX) { - continue; - } - // - const TopoDS_Vertex& aV=TopoDS::Vertex(aDS.Shape(i)); - // - aState=aDS.GetState(i); - if (aState==BooleanOperations_ON || - aState==BooleanOperations_IN || - aState==BooleanOperations_OUT) { - continue; - } - // - iFound=0; - aNbVV=aVVs.Extent(); - for (j=1; j<=aNbVV; ++j) { - BOPTools_VVInterference& aVV=aVVs(j); - aVV.Indices(n1, n2); - if (n1==i || n2==i) { - pDS->SetState (n1, BooleanOperations_ON); - pDS->SetState (n2, BooleanOperations_ON); - iFound=1; - break; - } - } - if (iFound) { - continue; - } - // - aP3D=BRep_Tool::Pnt(aV); - aTol=1.E-7; - aSC.Perform(aP3D, aTol); - aSt=aSC.State(); - if (aSt==TopAbs_IN) { - pDS->SetState (i, BooleanOperations_IN); - } - else if (aSt==TopAbs_OUT) { - pDS->SetState (i, BooleanOperations_OUT); - } - } -} -//======================================================================= -// function: BuildResult -// purpose: -//======================================================================= -void GEOMAlgo_VertexSolid::BuildResult() -{ - const BooleanOperations_ShapesDataStructure& aDS=myDSFiller->DS(); - // - Standard_Integer i, iBeg, iEnd; - TopAbs_ShapeEnum aType; - BooleanOperations_StateOfShape aState; - // - myLSIN.Clear(); - myLSOUT.Clear(); - myLSON.Clear(); - // - iBeg=1; - iEnd=aDS.NumberOfShapesOfTheObject(); - if (myRank==2) { - iBeg=iEnd+1; - iEnd=aDS.NumberOfSourceShapes(); - } - // - for (i=iBeg; i<=iEnd; ++i) { - aType=aDS.GetShapeType(i); - if (aType!=TopAbs_VERTEX) { - continue; - } - const TopoDS_Shape& aV=aDS.Shape(i); - aState=aDS.GetState(i); - // - if (aState==BooleanOperations_IN) { - myLSIN.Append(aV); - } - else if (aState==BooleanOperations_OUT) { - myLSOUT.Append(aV); - } - else if (aState==BooleanOperations_ON) { - myLSON.Append(aV); - } - } -} diff --git a/src/GEOMAlgo/GEOMAlgo_VertexSolid.hxx b/src/GEOMAlgo/GEOMAlgo_VertexSolid.hxx deleted file mode 100644 index 103c7f2f6..000000000 --- a/src/GEOMAlgo/GEOMAlgo_VertexSolid.hxx +++ /dev/null @@ -1,95 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _GEOMAlgo_VertexSolid_HeaderFile -#define _GEOMAlgo_VertexSolid_HeaderFile - -#ifndef _GEOMAlgo_ShapeSolid_HeaderFile -#include -#endif - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class GEOMAlgo_VertexSolid : public GEOMAlgo_ShapeSolid { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT GEOMAlgo_VertexSolid(); -Standard_EXPORT virtual ~GEOMAlgo_VertexSolid(); -Standard_EXPORT virtual void Perform() ; - - - - - -protected: - - // Methods PROTECTED - // -Standard_EXPORT virtual void Prepare() ; -Standard_EXPORT virtual void BuildResult() ; - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_VertexSolid.ixx b/src/GEOMAlgo/GEOMAlgo_VertexSolid.ixx deleted file mode 100644 index e2351fef2..000000000 --- a/src/GEOMAlgo/GEOMAlgo_VertexSolid.ixx +++ /dev/null @@ -1,26 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - - - - diff --git a/src/GEOMAlgo/GEOMAlgo_VertexSolid.jxx b/src/GEOMAlgo/GEOMAlgo_VertexSolid.jxx deleted file mode 100644 index 8c7c253e9..000000000 --- a/src/GEOMAlgo/GEOMAlgo_VertexSolid.jxx +++ /dev/null @@ -1,3 +0,0 @@ -#ifndef _GEOMAlgo_VertexSolid_HeaderFile -#include -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_WireSolid.cdl b/src/GEOMAlgo/GEOMAlgo_WireSolid.cdl deleted file mode 100644 index d85db1291..000000000 --- a/src/GEOMAlgo/GEOMAlgo_WireSolid.cdl +++ /dev/null @@ -1,31 +0,0 @@ --- File: GEOMAlgo_WireSolid.cdl --- Created: Wed Jan 12 10:17:00 2005 --- Author: Peter KURNEV --- ----Copyright: Matra Datavision 2005 - - -class WireSolid from GEOMAlgo - inherits ShapeSolid from GEOMAlgo - ---Purpose: - ---uses ---raises - -is - Create - returns WireSolid from GEOMAlgo; - ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_WireSolid();" - - Perform (me:out) - is redefined; - - Prepare(me:out) - is redefined protected; - - BuildResult (me:out) - is redefined protected; - ---fields - -end WireSolid; diff --git a/src/GEOMAlgo/GEOMAlgo_WireSolid.cxx b/src/GEOMAlgo/GEOMAlgo_WireSolid.cxx deleted file mode 100644 index faaf3612f..000000000 --- a/src/GEOMAlgo/GEOMAlgo_WireSolid.cxx +++ /dev/null @@ -1,152 +0,0 @@ -// File: GEOMAlgo_WireSolid.cxx -// Created: Wed Jan 12 10:19:31 2005 -// Author: Peter KURNEV -// - - -#include - -#include - -#include - -#include - -#include - -#include -#include - -#include -#include -#include -#include -#include -#include - -//======================================================================= -//function : GEOMAlgo_WireSolid -//purpose : -//======================================================================= -GEOMAlgo_WireSolid::GEOMAlgo_WireSolid() -: - GEOMAlgo_ShapeSolid() -{ -} -//======================================================================= -//function : ~ -//purpose : -//======================================================================= -GEOMAlgo_WireSolid::~GEOMAlgo_WireSolid() -{ -} -//======================================================================= -// function: Perform -// purpose: -//======================================================================= -void GEOMAlgo_WireSolid::Perform() -{ - myErrorStatus=0; - // - try { - if (myDSFiller==NULL) { - myErrorStatus=10; - return; - } - if(!myDSFiller->IsDone()) { - myErrorStatus=11; - return; - } - // - Standard_Boolean bIsNewFiller; - // - bIsNewFiller=myDSFiller->IsNewFiller(); - - if (bIsNewFiller) { - Prepare(); - myDSFiller->SetNewFiller(!bIsNewFiller); - } - BuildResult(); - } - // - catch (Standard_Failure) { - myErrorStatus= 12; - } -} -//======================================================================= -// function: Prepare -// purpose: -//======================================================================= -void GEOMAlgo_WireSolid::Prepare() -{ - const BOPTools_PaveFiller& aPaveFiller=myDSFiller->PaveFiller(); - // - BOPTools_WireStateFiller aStateFiller(aPaveFiller); - aStateFiller.Do(); - // -} -//======================================================================= -// function: BuildResult -// purpose: -//======================================================================= -void GEOMAlgo_WireSolid::BuildResult() -{ - const BooleanOperations_ShapesDataStructure& aDS=myDSFiller->DS(); - const BOPTools_PaveFiller& aPaveFiller=myDSFiller->PaveFiller(); - const BOPTools_SplitShapesPool& aSplitShapesPool=aPaveFiller.SplitShapesPool(); - // - Standard_Integer i, aNbPB, nSp, iBeg, iEnd; - TopAbs_ShapeEnum aType; - BooleanOperations_StateOfShape aState; - // - myLSIN.Clear(); - myLSOUT.Clear(); - myLSON.Clear(); - // - iBeg=1; - iEnd=aDS.NumberOfShapesOfTheObject(); - if (aDS.Tool().ShapeType()==TopAbs_WIRE) { - iBeg=iEnd+1; - iEnd=aDS.NumberOfSourceShapes(); - } - // - for (i=iBeg; i<=iEnd; ++i) { - aType=aDS.GetShapeType(i); - if (aType==TopAbs_EDGE) { - const TopoDS_Shape& aE=aDS.Shape(i); - const BOPTools_ListOfPaveBlock& aLPB=aSplitShapesPool(aDS.RefEdge(i)); - aNbPB=aLPB.Extent(); - // - if (!aNbPB) { - aState=aDS.GetState(i); - // - if (aState==BooleanOperations_IN) { - myLSIN.Append(aE); - } - else if (aState==BooleanOperations_OUT) { - myLSOUT.Append(aE); - } - else if (aState==BooleanOperations_ON) { - myLSON.Append(aE); - } - } - // - else if (aNbPB==1) { - const BOPTools_PaveBlock& aPB=aLPB.First(); - nSp=aPB.Edge(); - const TopoDS_Shape& aSp=aDS.Shape(nSp); - aState=aDS.GetState(nSp); - // - if (aState==BooleanOperations_IN) { - myLSIN.Append(aE); - } - else if (aState==BooleanOperations_OUT) { - myLSOUT.Append(aE); - } - else if (aState==BooleanOperations_ON) { - myLSON.Append(aE); - } - } - } - } -} diff --git a/src/GEOMAlgo/GEOMAlgo_WireSolid.hxx b/src/GEOMAlgo/GEOMAlgo_WireSolid.hxx deleted file mode 100644 index 7212908dc..000000000 --- a/src/GEOMAlgo/GEOMAlgo_WireSolid.hxx +++ /dev/null @@ -1,95 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _GEOMAlgo_WireSolid_HeaderFile -#define _GEOMAlgo_WireSolid_HeaderFile - -#ifndef _GEOMAlgo_ShapeSolid_HeaderFile -#include -#endif - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class GEOMAlgo_WireSolid : public GEOMAlgo_ShapeSolid { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT GEOMAlgo_WireSolid(); -Standard_EXPORT virtual ~GEOMAlgo_WireSolid(); -Standard_EXPORT virtual void Perform() ; - - - - - -protected: - - // Methods PROTECTED - // -Standard_EXPORT virtual void Prepare() ; -Standard_EXPORT virtual void BuildResult() ; - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMAlgo/GEOMAlgo_WireSolid.ixx b/src/GEOMAlgo/GEOMAlgo_WireSolid.ixx deleted file mode 100644 index 37b35b408..000000000 --- a/src/GEOMAlgo/GEOMAlgo_WireSolid.ixx +++ /dev/null @@ -1,26 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#include - - - - diff --git a/src/GEOMAlgo/GEOMAlgo_WireSolid.jxx b/src/GEOMAlgo/GEOMAlgo_WireSolid.jxx deleted file mode 100644 index a37f27e72..000000000 --- a/src/GEOMAlgo/GEOMAlgo_WireSolid.jxx +++ /dev/null @@ -1,3 +0,0 @@ -#ifndef _GEOMAlgo_WireSolid_HeaderFile -#include -#endif diff --git a/src/GEOMAlgo/Handle_BlockFix_BlockFixAPI.hxx b/src/GEOMAlgo/Handle_BlockFix_BlockFixAPI.hxx deleted file mode 100644 index 1664fde18..000000000 --- a/src/GEOMAlgo/Handle_BlockFix_BlockFixAPI.hxx +++ /dev/null @@ -1,91 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _Handle_BlockFix_BlockFixAPI_HeaderFile -#define _Handle_BlockFix_BlockFixAPI_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_MMgt_TShared_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(MMgt_TShared); -class BlockFix_BlockFixAPI; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(BlockFix_BlockFixAPI); - -class Handle(BlockFix_BlockFixAPI) : public Handle(MMgt_TShared) { - public: - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - Handle(BlockFix_BlockFixAPI)():Handle(MMgt_TShared)() {} - Handle(BlockFix_BlockFixAPI)(const Handle(BlockFix_BlockFixAPI)& aHandle) : Handle(MMgt_TShared)(aHandle) - { - } - - Handle(BlockFix_BlockFixAPI)(const BlockFix_BlockFixAPI* anItem) : Handle(MMgt_TShared)((MMgt_TShared *)anItem) - { - } - - Handle(BlockFix_BlockFixAPI)& operator=(const Handle(BlockFix_BlockFixAPI)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(BlockFix_BlockFixAPI)& operator=(const BlockFix_BlockFixAPI* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - BlockFix_BlockFixAPI* operator->() - { - return (BlockFix_BlockFixAPI *)ControlAccess(); - } - - BlockFix_BlockFixAPI* operator->() const - { - return (BlockFix_BlockFixAPI *)ControlAccess(); - } - - Standard_EXPORT ~Handle(BlockFix_BlockFixAPI)(); - - Standard_EXPORT static const Handle(BlockFix_BlockFixAPI) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/GEOMAlgo/Handle_BlockFix_PeriodicSurfaceModifier.hxx b/src/GEOMAlgo/Handle_BlockFix_PeriodicSurfaceModifier.hxx deleted file mode 100644 index 114b7606a..000000000 --- a/src/GEOMAlgo/Handle_BlockFix_PeriodicSurfaceModifier.hxx +++ /dev/null @@ -1,91 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _Handle_BlockFix_PeriodicSurfaceModifier_HeaderFile -#define _Handle_BlockFix_PeriodicSurfaceModifier_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_BRepTools_Modification_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(BRepTools_Modification); -class BlockFix_PeriodicSurfaceModifier; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(BlockFix_PeriodicSurfaceModifier); - -class Handle(BlockFix_PeriodicSurfaceModifier) : public Handle(BRepTools_Modification) { - public: - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - Handle(BlockFix_PeriodicSurfaceModifier)():Handle(BRepTools_Modification)() {} - Handle(BlockFix_PeriodicSurfaceModifier)(const Handle(BlockFix_PeriodicSurfaceModifier)& aHandle) : Handle(BRepTools_Modification)(aHandle) - { - } - - Handle(BlockFix_PeriodicSurfaceModifier)(const BlockFix_PeriodicSurfaceModifier* anItem) : Handle(BRepTools_Modification)((BRepTools_Modification *)anItem) - { - } - - Handle(BlockFix_PeriodicSurfaceModifier)& operator=(const Handle(BlockFix_PeriodicSurfaceModifier)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(BlockFix_PeriodicSurfaceModifier)& operator=(const BlockFix_PeriodicSurfaceModifier* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - BlockFix_PeriodicSurfaceModifier* operator->() - { - return (BlockFix_PeriodicSurfaceModifier *)ControlAccess(); - } - - BlockFix_PeriodicSurfaceModifier* operator->() const - { - return (BlockFix_PeriodicSurfaceModifier *)ControlAccess(); - } - - Standard_EXPORT ~Handle(BlockFix_PeriodicSurfaceModifier)(); - - Standard_EXPORT static const Handle(BlockFix_PeriodicSurfaceModifier) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/GEOMAlgo/Handle_BlockFix_SphereSpaceModifier.hxx b/src/GEOMAlgo/Handle_BlockFix_SphereSpaceModifier.hxx deleted file mode 100644 index 2541a6ddf..000000000 --- a/src/GEOMAlgo/Handle_BlockFix_SphereSpaceModifier.hxx +++ /dev/null @@ -1,91 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _Handle_BlockFix_SphereSpaceModifier_HeaderFile -#define _Handle_BlockFix_SphereSpaceModifier_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_BRepTools_Modification_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(BRepTools_Modification); -class BlockFix_SphereSpaceModifier; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(BlockFix_SphereSpaceModifier); - -class Handle(BlockFix_SphereSpaceModifier) : public Handle(BRepTools_Modification) { - public: - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - Handle(BlockFix_SphereSpaceModifier)():Handle(BRepTools_Modification)() {} - Handle(BlockFix_SphereSpaceModifier)(const Handle(BlockFix_SphereSpaceModifier)& aHandle) : Handle(BRepTools_Modification)(aHandle) - { - } - - Handle(BlockFix_SphereSpaceModifier)(const BlockFix_SphereSpaceModifier* anItem) : Handle(BRepTools_Modification)((BRepTools_Modification *)anItem) - { - } - - Handle(BlockFix_SphereSpaceModifier)& operator=(const Handle(BlockFix_SphereSpaceModifier)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(BlockFix_SphereSpaceModifier)& operator=(const BlockFix_SphereSpaceModifier* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - BlockFix_SphereSpaceModifier* operator->() - { - return (BlockFix_SphereSpaceModifier *)ControlAccess(); - } - - BlockFix_SphereSpaceModifier* operator->() const - { - return (BlockFix_SphereSpaceModifier *)ControlAccess(); - } - - Standard_EXPORT ~Handle(BlockFix_SphereSpaceModifier)(); - - Standard_EXPORT static const Handle(BlockFix_SphereSpaceModifier) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx b/src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx deleted file mode 100644 index 9e15b517b..000000000 --- a/src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx +++ /dev/null @@ -1,91 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_HeaderFile -#define _Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger); - -class Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger) : public Handle(TCollection_MapNode) { - public: - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger)():Handle(TCollection_MapNode)() {} - Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger)(const Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger)(const GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger)& operator=(const Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger)& operator=(const GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger* operator->() - { - return (GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger *)ControlAccess(); - } - - GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger* operator->() const - { - return (GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger)(); - - Standard_EXPORT static const Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx b/src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx deleted file mode 100644 index baa1ea423..000000000 --- a/src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx +++ /dev/null @@ -1,91 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_HeaderFile -#define _Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape); - -class Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape) : public Handle(TCollection_MapNode) { - public: - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)():Handle(TCollection_MapNode)() {} - Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)(const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)(const GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)& operator=(const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)& operator=(const GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape* operator->() - { - return (GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape *)ControlAccess(); - } - - GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape* operator->() const - { - return (GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)(); - - Standard_EXPORT static const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape.hxx b/src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape.hxx deleted file mode 100644 index e246513bc..000000000 --- a/src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape.hxx +++ /dev/null @@ -1,91 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape_HeaderFile -#define _Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape); - -class Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape) : public Handle(TCollection_MapNode) { - public: - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape)():Handle(TCollection_MapNode)() {} - Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape)(const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape)(const GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape)& operator=(const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape)& operator=(const GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape* operator->() - { - return (GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape *)ControlAccess(); - } - - GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape* operator->() const - { - return (GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape)(); - - Standard_EXPORT static const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape.hxx b/src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape.hxx deleted file mode 100644 index dd43aac0c..000000000 --- a/src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape.hxx +++ /dev/null @@ -1,91 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_HeaderFile -#define _Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape); - -class Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape) : public Handle(TCollection_MapNode) { - public: - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape)():Handle(TCollection_MapNode)() {} - Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape)(const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape)(const GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape)& operator=(const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape)& operator=(const GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape* operator->() - { - return (GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape *)ControlAccess(); - } - - GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape* operator->() const - { - return (GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape)(); - - Standard_EXPORT static const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx b/src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx deleted file mode 100644 index 17835020d..000000000 --- a/src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx +++ /dev/null @@ -1,91 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_HeaderFile -#define _Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox); - -class Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox) : public Handle(TCollection_MapNode) { - public: - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)():Handle(TCollection_MapNode)() {} - Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)(const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)(const GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)& operator=(const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)& operator=(const GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox* operator->() - { - return (GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox *)ControlAccess(); - } - - GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox* operator->() const - { - return (GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)(); - - Standard_EXPORT static const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState.hxx b/src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState.hxx deleted file mode 100644 index 2ee27d5e9..000000000 --- a/src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState.hxx +++ /dev/null @@ -1,91 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState_HeaderFile -#define _Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState); - -class Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState) : public Handle(TCollection_MapNode) { - public: - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState)():Handle(TCollection_MapNode)() {} - Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState)(const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState)(const GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState)& operator=(const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState)& operator=(const GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState* operator->() - { - return (GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState *)ControlAccess(); - } - - GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState* operator->() const - { - return (GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState)(); - - Standard_EXPORT static const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/GEOMAlgo/Handle_GEOMAlgo_ListNodeOfListOfCoupleOfShapes.hxx b/src/GEOMAlgo/Handle_GEOMAlgo_ListNodeOfListOfCoupleOfShapes.hxx deleted file mode 100644 index fc17f9463..000000000 --- a/src/GEOMAlgo/Handle_GEOMAlgo_ListNodeOfListOfCoupleOfShapes.hxx +++ /dev/null @@ -1,91 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _Handle_GEOMAlgo_ListNodeOfListOfCoupleOfShapes_HeaderFile -#define _Handle_GEOMAlgo_ListNodeOfListOfCoupleOfShapes_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class GEOMAlgo_ListNodeOfListOfCoupleOfShapes; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMAlgo_ListNodeOfListOfCoupleOfShapes); - -class Handle(GEOMAlgo_ListNodeOfListOfCoupleOfShapes) : public Handle(TCollection_MapNode) { - public: - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - Handle(GEOMAlgo_ListNodeOfListOfCoupleOfShapes)():Handle(TCollection_MapNode)() {} - Handle(GEOMAlgo_ListNodeOfListOfCoupleOfShapes)(const Handle(GEOMAlgo_ListNodeOfListOfCoupleOfShapes)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(GEOMAlgo_ListNodeOfListOfCoupleOfShapes)(const GEOMAlgo_ListNodeOfListOfCoupleOfShapes* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(GEOMAlgo_ListNodeOfListOfCoupleOfShapes)& operator=(const Handle(GEOMAlgo_ListNodeOfListOfCoupleOfShapes)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMAlgo_ListNodeOfListOfCoupleOfShapes)& operator=(const GEOMAlgo_ListNodeOfListOfCoupleOfShapes* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMAlgo_ListNodeOfListOfCoupleOfShapes* operator->() - { - return (GEOMAlgo_ListNodeOfListOfCoupleOfShapes *)ControlAccess(); - } - - GEOMAlgo_ListNodeOfListOfCoupleOfShapes* operator->() const - { - return (GEOMAlgo_ListNodeOfListOfCoupleOfShapes *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMAlgo_ListNodeOfListOfCoupleOfShapes)(); - - Standard_EXPORT static const Handle(GEOMAlgo_ListNodeOfListOfCoupleOfShapes) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/GEOMAlgo/Handle_GEOMAlgo_ListNodeOfListOfPnt.hxx b/src/GEOMAlgo/Handle_GEOMAlgo_ListNodeOfListOfPnt.hxx deleted file mode 100644 index d073a4ceb..000000000 --- a/src/GEOMAlgo/Handle_GEOMAlgo_ListNodeOfListOfPnt.hxx +++ /dev/null @@ -1,91 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _Handle_GEOMAlgo_ListNodeOfListOfPnt_HeaderFile -#define _Handle_GEOMAlgo_ListNodeOfListOfPnt_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class GEOMAlgo_ListNodeOfListOfPnt; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMAlgo_ListNodeOfListOfPnt); - -class Handle(GEOMAlgo_ListNodeOfListOfPnt) : public Handle(TCollection_MapNode) { - public: - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - Handle(GEOMAlgo_ListNodeOfListOfPnt)():Handle(TCollection_MapNode)() {} - Handle(GEOMAlgo_ListNodeOfListOfPnt)(const Handle(GEOMAlgo_ListNodeOfListOfPnt)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(GEOMAlgo_ListNodeOfListOfPnt)(const GEOMAlgo_ListNodeOfListOfPnt* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(GEOMAlgo_ListNodeOfListOfPnt)& operator=(const Handle(GEOMAlgo_ListNodeOfListOfPnt)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMAlgo_ListNodeOfListOfPnt)& operator=(const GEOMAlgo_ListNodeOfListOfPnt* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMAlgo_ListNodeOfListOfPnt* operator->() - { - return (GEOMAlgo_ListNodeOfListOfPnt *)ControlAccess(); - } - - GEOMAlgo_ListNodeOfListOfPnt* operator->() const - { - return (GEOMAlgo_ListNodeOfListOfPnt *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMAlgo_ListNodeOfListOfPnt)(); - - Standard_EXPORT static const Handle(GEOMAlgo_ListNodeOfListOfPnt) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/GEOMAlgo/Makefile.in b/src/GEOMAlgo/Makefile.in deleted file mode 100644 index 934d12095..000000000 --- a/src/GEOMAlgo/Makefile.in +++ /dev/null @@ -1,109 +0,0 @@ -# GEOM GEOMAlgo : tools for Glue Faces algorithm -# -# Copyright (C) 2004 CEA -# -# 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. -# -# 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.org -# -# -# -# File : Makefile.in -# Author : Julia DOROVSKIKH -# Module : GEOM -# $Header$ - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@ - - -@COMMENCE@ - -# Libraries targets -LIB = libGEOMAlgo.la -LIB_SRC = \ - BlockFix.cxx \ - BlockFix_BlockFixAPI.cxx \ - BlockFix_CheckTool.cxx \ - BlockFix_PeriodicSurfaceModifier.cxx \ - BlockFix_SphereSpaceModifier.cxx \ - BlockFix_UnionEdges.cxx \ - BlockFix_UnionFaces.cxx \ - GEOMAlgo_Algo.cxx \ - GEOMAlgo_CoupleOfShapes.cxx \ - GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger_0.cxx \ - GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_0.cxx \ - GEOMAlgo_DataMapOfPassKeyInteger_0.cxx \ - GEOMAlgo_FinderShapeOn1.cxx \ - GEOMAlgo_GlueAnalyser.cxx \ - GEOMAlgo_Gluer.cxx \ - GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_0.cxx \ - GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_0.cxx \ - GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_0.cxx \ - GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState_0.cxx \ - GEOMAlgo_IndexedDataMapOfIntegerShape_0.cxx \ - GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape_0.cxx \ - GEOMAlgo_IndexedDataMapOfShapeBox_0.cxx \ - GEOMAlgo_IndexedDataMapOfShapeState_0.cxx \ - GEOMAlgo_ListIteratorOfListOfCoupleOfShapes_0.cxx \ - GEOMAlgo_ListIteratorOfListOfPnt_0.cxx \ - GEOMAlgo_ListNodeOfListOfCoupleOfShapes_0.cxx \ - GEOMAlgo_ListNodeOfListOfPnt_0.cxx \ - GEOMAlgo_ListOfCoupleOfShapes_0.cxx \ - GEOMAlgo_ListOfPnt_0.cxx \ - GEOMAlgo_PassKey.cxx \ - GEOMAlgo_PassKeyMapHasher.cxx \ - GEOMAlgo_PassKeyShape.cxx \ - GEOMAlgo_ShapeAlgo.cxx \ - GEOMAlgo_StateCollector.cxx \ - GEOMAlgo_SurfaceTools.cxx \ - GEOMAlgo_Tools.cxx - -LIB_CLIENT_IDL = -LIB_SERVER_IDL = - -# header files -EXPORT_HEADERS = \ - BlockFix_BlockFixAPI.hxx \ - BlockFix_BlockFixAPI.lxx \ - BlockFix_CheckTool.hxx \ - Handle_BlockFix_BlockFixAPI.hxx \ - GEOMAlgo_Algo.hxx \ - GEOMAlgo_CoupleOfShapes.hxx \ - GEOMAlgo_GlueAnalyser.hxx \ - GEOMAlgo_Gluer.hxx \ - GEOMAlgo_FinderShapeOn1.hxx \ - GEOMAlgo_IndexedDataMapOfShapeState.hxx \ - GEOMAlgo_ListIteratorOfListOfCoupleOfShapes.hxx \ - GEOMAlgo_ListOfCoupleOfShapes.hxx \ - GEOMAlgo_ShapeAlgo.hxx \ - GEOMAlgo_State.hxx \ - Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState.hxx \ - Handle_GEOMAlgo_ListNodeOfListOfCoupleOfShapes.hxx - -# idl files -EXPORT_IDLS= - - -CPPFLAGS += $(OCC_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome -CXXFLAGS += $(OCC_CXXFLAGS) -I${KERNEL_ROOT_DIR}/include/salome -LDFLAGS += $(CAS_LDPATH) -lTKBO -L${KERNEL_ROOT_DIR}/lib/salome - -%_moc.cxx: %.h - $(MOC) $< -o $@ - -@CONCLUDE@ diff --git a/src/GEOMBase/GEOMBase.cxx b/src/GEOMBase/GEOMBase.cxx deleted file mode 100644 index 194a81c96..000000000 --- a/src/GEOMBase/GEOMBase.cxx +++ /dev/null @@ -1,979 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOMBase.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header$ - -#include "GEOMBase.h" -#include "GeometryGUI.h" -#include "GEOMBase_aParameterDlg.h" - -#include "GEOM_Client.hxx" - -//// SALOME Includes -#include "Utils_ORB_INIT.hxx" -#include "Utils_SINGLETON.hxx" - -#include "SALOME_LifeCycleCORBA.hxx" - -#include "GEOM_AssemblyBuilder.h" -#include "GEOM_Actor.h" -#include "VTKViewer_RenderWindowInteractor.h" -#include "VTKViewer_ViewModel.h" -#include "VTKViewer_ViewWindow.h" -#include "OCCViewer_ViewPort3d.h" -#include "OCCViewer_ViewModel.h" -#include "OCCViewer_ViewWindow.h" - -#include "SALOME_ListIO.hxx" -#include "SALOME_ListIteratorOfListIO.hxx" -#include "GEOM_AISTrihedron.hxx" - -#include "SUIT_Session.h" -#include "SUIT_ViewWindow.h" -#include "SUIT_MessageBox.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_Study.h" - -// // Open CASCADE Includes -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include -#include - -#include "GEOMImpl_Types.hxx" - -using namespace std; - -#include "SALOMEDSClient.hxx" - - -//======================================================================= -// function : GEOMBase() -// purpose : Constructor -//======================================================================= -GEOMBase::GEOMBase() -{ -} - - -//======================================================================= -// function : ~GEOMBase() -// purpose : Destructor -//======================================================================= -GEOMBase::~GEOMBase() -{ -} - -//===================================================================================== -// function : GetShapeFromIOR() -// purpose : exist also as static method ! -//===================================================================================== -TopoDS_Shape GEOMBase::GetShapeFromIOR(QString IOR) -{ - TopoDS_Shape result; - if(IOR.stripWhiteSpace().isEmpty()) - return result; - - CORBA::Object_var obj = SalomeApp_Application::orb()->string_to_object((char*)(IOR.latin1())); - if(CORBA::is_nil(obj)) - return result; - GEOM::GEOM_Object_var GeomObject = GEOM::GEOM_Object::_narrow( obj ); - if (GeomObject->_is_nil()) - return result; - - result = GEOM_Client().GetShape(GeometryGUI::GetGeomGen(), GeomObject); - return result; -} - - -//===================================================================================== -// function : GetIndex() -// purpose : Get the index of a sub shape in a main shape : index start at 1 -//===================================================================================== -int GEOMBase::GetIndex(const TopoDS_Shape& subshape, const TopoDS_Shape& shape, int /*ShapeType*/) -{ - if(shape.IsNull() || subshape.IsNull()) - return -1; - - TopTools_IndexedMapOfShape anIndices; - TopExp::MapShapes(shape, anIndices); - if(anIndices.Contains(subshape)) return anIndices.FindIndex(subshape); - - return -1; -} - - -//======================================================================= -// function : GetTopoFromSelection() -// purpose : Define tds from a single selection and retuen true -//======================================================================= -bool GEOMBase::GetTopoFromSelection(const SALOME_ListIO& aList, TopoDS_Shape& tds) -{ - if(aList.Extent() != 1) - return false; - - Handle(SALOME_InteractiveObject) IO = aList.First(); - /* case SObject */ - if(IO->hasEntry()) { - SalomeApp_Study* appStudy = dynamic_cast( SUIT_Session::session()->activeApplication()->activeStudy() ); - if ( !appStudy ) return false; - _PTR(Study) aStudy = appStudy->studyDS(); - - _PTR(SObject) obj ( aStudy->FindObjectID(IO->getEntry()) ); - _PTR(GenericAttribute) anAttr; - if( obj ) { - if(obj->FindAttribute(anAttr, "AttributeIOR")) { - _PTR(AttributeIOR) anIOR ( anAttr ); - tds = GetShapeFromIOR(anIOR->Value().c_str()); - if(tds.IsNull()) - return false; - else - return true; - } - } - } - - return false; -} - -//======================================================================= -// function : GetNameOfSelectedIObjects() -// purpose : Define the name geom++ or other name of mono or multi sel. -//======================================================================= -int GEOMBase::GetNameOfSelectedIObjects( const SALOME_ListIO& aList, - QString& theName, - const bool theShapesOnly ) -{ - if ( !theShapesOnly ) - { - int nbSel = aList.Extent(); - if ( nbSel == 1 ) - { - Handle(SALOME_InteractiveObject) anIObj = aList.First(); - if(anIObj->hasEntry()) { - SalomeApp_Study* appStudy = dynamic_cast( SUIT_Session::session()->activeApplication()->activeStudy() ); - if ( !appStudy ) return nbSel; - _PTR(Study) aStudy = appStudy->studyDS(); - - _PTR(SObject) obj ( aStudy->FindObjectID(anIObj->getEntry()) ); - - _PTR(GenericAttribute) anAttr; - - if ( obj && obj->FindAttribute( anAttr, "AttributeName") ) - { - _PTR(AttributeName) aNameAttr ( anAttr ); - theName = aNameAttr->Value().c_str(); - } - } - } - else - theName = QObject::tr("%1_objects").arg(nbSel); - - return nbSel; - } - else - { - GEOM::ListOfGO anObjs; - ConvertListOfIOInListOfGO( aList, anObjs, theShapesOnly ); - if ( anObjs.length() == 1 ) { - theName = GetName( anObjs[ 0 ] ); - } - else - theName = QString( "%1_objects" ).arg( anObjs.length() ); - - return anObjs.length(); - } -} - - -//================================================================================= -// function : GetShapeTypeString() -// purpose : for a single shape -//================================================================================= -bool GEOMBase::GetShapeTypeString(const TopoDS_Shape& aShape, Standard_CString& aTypeString) -{ - if(aShape.IsNull()) { - aTypeString = "aNullShape"; - return false; - } - switch(aShape.ShapeType()) - { - case TopAbs_COMPOUND: - { - aTypeString = CORBA::string_dup(QObject::tr("GEOM_COMPOUND")); - return true; - } - case TopAbs_COMPSOLID: - { - aTypeString = CORBA::string_dup(QObject::tr("GEOM_COMPOUNDSOLID")) ; - return true ; - } - case TopAbs_SOLID: - { - aTypeString = CORBA::string_dup(QObject::tr("GEOM_SOLID")) ; - return true ; - } - case TopAbs_SHELL: - { - aTypeString = CORBA::string_dup(QObject::tr("GEOM_SHELL")) ; - return true ; - } - case TopAbs_FACE: - { - BRepAdaptor_Surface surf(TopoDS::Face(aShape)); - if(surf.GetType() == GeomAbs_Plane) { - aTypeString = CORBA::string_dup(QObject::tr("GEOM_PLANE")); - return true; - } - else if(surf.GetType() == GeomAbs_Cylinder) { - aTypeString = CORBA::string_dup(QObject::tr("GEOM_SURFCYLINDER")); - return true; - } - else if(surf.GetType() == GeomAbs_Sphere) { - aTypeString = CORBA::string_dup(QObject::tr("GEOM_SURFSPHERE")); - return true ; - } - else if(surf.GetType() == GeomAbs_Torus) { - aTypeString = CORBA::string_dup(QObject::tr("GEOM_SURFTORUS")); - return true ; - } - else if(surf.GetType() == GeomAbs_Cone) { - aTypeString = CORBA::string_dup(QObject::tr("GEOM_SURFCONE")); - return true ; - } - else { - aTypeString = CORBA::string_dup(QObject::tr("GEOM_FACE")); - return true; - } - } - case TopAbs_WIRE: - { - aTypeString = CORBA::string_dup(QObject::tr("GEOM_WIRE")); - return true; - } - case TopAbs_EDGE: - { - BRepAdaptor_Curve curv(TopoDS::Edge(aShape)); - if(curv.GetType() == GeomAbs_Line) { - if((Abs(curv.FirstParameter()) >= 1E6) || (Abs(curv.LastParameter()) >= 1E6)) - aTypeString = CORBA::string_dup(QObject::tr("GEOM_LINE")); - else - aTypeString = CORBA::string_dup(QObject::tr("GEOM_EDGE")); - return true; - } - else if(curv.GetType() == GeomAbs_Circle) { - if(curv.IsClosed()) - aTypeString = CORBA::string_dup(QObject::tr("GEOM_CIRCLE")); - else - aTypeString = CORBA::string_dup(QObject::tr("GEOM_ARC")); - return true; - } - else { - aTypeString = CORBA::string_dup(QObject::tr("GEOM_EDGE")); - return true; - } - } - case TopAbs_VERTEX: - { - aTypeString = CORBA::string_dup(QObject::tr("GEOM_VERTEX")); - return true; - } - case TopAbs_SHAPE: - { - aTypeString = CORBA::string_dup(QObject::tr("GEOM_SHAPE")); - return true; - } - } - return false; -} - - -//======================================================================= -// function : ConvertIORinGEOMAISShape() -// purpose : -//======================================================================= -Handle(GEOM_AISShape) GEOMBase::ConvertIORinGEOMAISShape(const char * IOR, Standard_Boolean& testResult, bool onlyInActiveView) -{ - Handle(GEOM_AISShape) resultShape; - testResult = false; - - SalomeApp_Study* appStudy = dynamic_cast( SUIT_Session::session()->activeApplication()->activeStudy() ); - if ( !appStudy ) return resultShape; - _PTR(Study) aStudy = appStudy->studyDS(); - - _PTR(SObject) anObj ( aStudy->FindObjectIOR( IOR ) ); - if ( !anObj ) - return resultShape; - - QPtrList aViewWindowsList = SUIT_Session::session()->activeApplication()->desktop()->windows(); - - for ( QPtrListIterator it( aViewWindowsList ); it.current(); ++it ) { - if (it.current()->getViewManager()->getType() == OCCViewer_Viewer::Type()) { - Handle (AIS_InteractiveContext) ic = ((OCCViewer_Viewer*)it.current()->getViewManager()->getViewModel())->getAISContext(); - - AIS_ListOfInteractive List; - ic->DisplayedObjects(List); - AIS_ListOfInteractive List1; - ic->ObjectsInCollector(List1); - List.Append(List1); - - AIS_ListIteratorOfListOfInteractive ite(List); - while(ite.More()) { - if(ite.Value()->IsInstance(STANDARD_TYPE(GEOM_AISShape))) { - Handle(GEOM_AISShape) aSh = Handle(GEOM_AISShape)::DownCast(ite.Value()); - if(aSh->hasIO()) { - Handle(SALOME_InteractiveObject) GIO = Handle(SALOME_InteractiveObject)::DownCast(aSh->getIO()); - if(GIO->hasEntry() && strcmp(GIO->getEntry(), anObj->GetID().c_str()) == 0) { - if(!onlyInActiveView || - it.current() == SUIT_Session::session()->activeApplication()->desktop()->activeWindow()) { - testResult = true; - resultShape = aSh; - return resultShape; - } - } - } - } - ite.Next(); - } - } - } - return resultShape; -} - - -//======================================================================= -// function : ConvertIORinGEOMActor() -// purpose : -//======================================================================= -GEOM_Actor* GEOMBase::ConvertIORinGEOMActor(const char* IOR, Standard_Boolean& testResult, bool onlyInActiveView) -{ - testResult = false; - - SalomeApp_Study* appStudy = dynamic_cast( SUIT_Session::session()->activeApplication()->activeStudy() ); - if ( !appStudy ) return GEOM_Actor::New(); - _PTR(Study) aStudy = appStudy->studyDS(); - - _PTR(SObject) anObj ( aStudy->FindObjectIOR( IOR ) ); - if ( !anObj ) - return GEOM_Actor::New(); - - QPtrList aViewWindowsList = SUIT_Session::session()->activeApplication()->desktop()->windows(); - - for ( QPtrListIterator it( aViewWindowsList ); it.current(); ++it ) { - if (it.current()->getViewManager()->getType() == VTKViewer_Viewer::Type()) { - VTKViewer_ViewWindow* aVTKViewWindow = (VTKViewer_ViewWindow*)it.current(); - vtkRenderer* Renderer = aVTKViewWindow->getRenderer(); - vtkActorCollection* theActors = Renderer->GetActors(); - theActors->InitTraversal(); - vtkActor *ac = theActors->GetNextActor(); - while(!(ac==NULL)) { - if( ac->IsA("GEOM_Actor")) { - GEOM_Actor* anActor = GEOM_Actor::SafeDownCast(ac); - if(anActor->hasIO()) { - Handle(SALOME_InteractiveObject) GIO = Handle(SALOME_InteractiveObject)::DownCast(anActor->getIO()); - if(GIO->hasEntry() && strcmp(GIO->getEntry(), anObj->GetID().c_str()) == 0) { - if(!onlyInActiveView || - it.current() == SUIT_Session::session()->activeApplication()->desktop()->activeWindow()) { - testResult = true; - return anActor; - } - } - } - } - ac = theActors->GetNextActor(); - } - } - } - testResult = false; - return GEOM_Actor::New(); -} - -//======================================================================= -// function : GetAIS() -// purpose : -//======================================================================= -Handle(AIS_InteractiveObject) GEOMBase::GetAIS( const Handle(SALOME_InteractiveObject)& theIO, - const bool isOnlyInActiveView ) -{ - if ( theIO.IsNull() || !theIO->hasEntry() ) - return Handle(AIS_InteractiveObject)(); - - QPtrList aViewWindowsList = SUIT_Session::session()->activeApplication()->desktop()->windows(); - - for ( QPtrListIterator it( aViewWindowsList ); it.current(); ++it ) { - if (it.current()->getViewManager()->getType() != OCCViewer_Viewer::Type()) - continue; - Handle (AIS_InteractiveContext) anIC = ((OCCViewer_Viewer*)it.current()->getViewManager()->getViewModel())->getAISContext(); - - AIS_ListOfInteractive aList; - anIC->DisplayedObjects( aList ); - anIC->ObjectsInCollector( aList ); - - AIS_ListIteratorOfListOfInteractive anIter( aList ); - for ( ; anIter.More(); anIter.Next() ) - { - Handle(SALOME_InteractiveObject) anObj = - Handle(SALOME_InteractiveObject)::DownCast( anIter.Value()->GetOwner() ); - - if( !anObj.IsNull() && strcmp( anObj->getEntry(), theIO->getEntry() ) == 0 ) - { - if( isOnlyInActiveView ) - { - if ( it.current() == SUIT_Session::session()->activeApplication()->desktop()->activeWindow() ) - return anIter.Value(); - } - else - return anIter.Value(); - } - } - } - - return Handle(AIS_InteractiveObject)(); -} - - -//======================================================================= -// function : ConvertIOinGEOMAISShape() -// purpose : -//======================================================================= -Handle(GEOM_AISShape) GEOMBase::ConvertIOinGEOMAISShape(const Handle(SALOME_InteractiveObject)& IO, Standard_Boolean& testResult, bool onlyInActiveView) -{ - Handle(GEOM_AISShape) res; - - if ( !IO->hasEntry() ) - { - testResult = false; - return res; - } - - QPtrList aViewWindowsList = SUIT_Session::session()->activeApplication()->desktop()->windows(); - - for ( QPtrListIterator it( aViewWindowsList ); it.current(); ++it ) { - if (it.current()->getViewManager()->getType() == OCCViewer_Viewer::Type()) { - Handle (AIS_InteractiveContext) ic = ((OCCViewer_Viewer*)it.current()->getViewManager()->getViewModel())->getAISContext(); - - AIS_ListOfInteractive List; - ic->DisplayedObjects(List); - AIS_ListOfInteractive List1; - ic->ObjectsInCollector(List1); - List.Append(List1); - - AIS_ListIteratorOfListOfInteractive ite(List); - while(ite.More()) - { - if(ite.Value()->IsInstance(STANDARD_TYPE(GEOM_AISShape))) - { - Handle(GEOM_AISShape) aSh = Handle(GEOM_AISShape)::DownCast(ite.Value()); - if( aSh->hasIO() ) - { - if( strcmp( aSh->getIO()->getEntry(), IO->getEntry() ) == 0 ) - { - if(onlyInActiveView) - { - if(it.current() == SUIT_Session::session()->activeApplication()->desktop()->activeWindow()) - { - testResult = true; - return aSh; - } - } - else - { - testResult = true; - return aSh; - } - } - } - } - ite.Next(); - } - } - } - testResult = false; - return res; -} - - -//======================================================================= -// function : ConvertIOinGEOMShape() -// purpose : -//======================================================================= -GEOM::GEOM_Object_ptr GEOMBase::ConvertIOinGEOMShape(const Handle(SALOME_InteractiveObject)& IO, Standard_Boolean& testResult) -{ - GEOM::GEOM_Object_var aShape; - testResult = false; - - /* case SObject */ - if(IO->hasEntry()) { - SalomeApp_Study* appStudy = dynamic_cast( SUIT_Session::session()->activeApplication()->activeStudy() ); - if ( !appStudy ) return GEOM::GEOM_Object::_nil(); - _PTR(Study) aStudy = appStudy->studyDS(); - - _PTR(SObject) obj ( aStudy->FindObjectID(IO->getEntry()) ); - _PTR(GenericAttribute) anAttr; - if(obj) { - if(obj->FindAttribute(anAttr, "AttributeIOR")) { - _PTR(AttributeIOR) anIOR ( anAttr ); - aShape = GeometryGUI::GetGeomGen()->GetIORFromString(anIOR->Value().c_str()); - if(!CORBA::is_nil(aShape)) - testResult = true; - return aShape._retn(); - } - } - } - return GEOM::GEOM_Object::_nil(); -} - - -//======================================================================= -// function : ConvertListOfIOInListOfIOR() -// purpose : -//======================================================================= -void GEOMBase::ConvertListOfIOInListOfIOR(const SALOME_ListIO& aList, GEOM::string_array& listIOR) -{ - int nbSel = aList.Extent(); - listIOR.length(nbSel); - int j=0; - SALOME_ListIteratorOfListIO It(aList); - SalomeApp_Study* appStudy = dynamic_cast - ( SUIT_Session::session()->activeApplication()->activeStudy() ); - if ( !appStudy ) return; - _PTR(Study) aStudy = appStudy->studyDS(); - - for (int i=0; It.More(); It.Next(), i++) { - Handle(SALOME_InteractiveObject) IObject = It.Value(); - if (IObject->hasEntry()) { - _PTR(SObject) obj ( aStudy->FindObjectID(IObject->getEntry()) ); - _PTR(GenericAttribute) anAttr; - if (obj && obj->FindAttribute(anAttr, "AttributeIOR")) { - _PTR(AttributeIOR) anIOR (anAttr); - //CORBA::Object_var theObj = dynamic_cast - // (aStudy.get())->ConvertIORToObject(anIOR->Value()); - CORBA::Object_var theObj = GeometryGUI::ClientSObjectToObject(obj); - if (!CORBA::is_nil(theObj) && theObj->_is_a("IDL:GEOM/GEOM_Object:1.0")) { - listIOR[j] = CORBA::string_dup(anIOR->Value().c_str()); - j++; - } - } - } - } - listIOR.length(j); -} - - -//======================================================================= -// function : ConvertIOinGEOMObject() -// purpose : -//======================================================================= -GEOM::GEOM_Object_ptr GEOMBase::ConvertIOinGEOMObject( const Handle(SALOME_InteractiveObject)& theIO, - Standard_Boolean& theResult ) -{ - theResult = Standard_False; - GEOM::GEOM_Object_var aReturnObject; - if ( !theIO.IsNull() ) - { - const char* anEntry = theIO->getEntry(); - - SalomeApp_Study* appStudy = dynamic_cast - ( SUIT_Session::session()->activeApplication()->activeStudy() ); - if ( !appStudy ) return GEOM::GEOM_Object::_nil(); - _PTR(Study) aStudy = appStudy->studyDS(); - - _PTR(SObject) aSObj ( aStudy->FindObjectID( anEntry ) ); - - if (aSObj) - { - aReturnObject = GEOM::GEOM_Object::_narrow(GeometryGUI::ClientSObjectToObject(aSObj)); - theResult = !CORBA::is_nil( aReturnObject ); - } - } - return aReturnObject._retn(); -} - - -//======================================================================= -// function : ConvertListOfIOInListOfGO() -// purpose : -//======================================================================= -void GEOMBase::ConvertListOfIOInListOfGO( const SALOME_ListIO& theList, - GEOM::ListOfGO& theListGO, - const bool theShapesOnly ) -{ - int nbSel = theList.Extent(); - theListGO.length( nbSel ); - SALOME_ListIteratorOfListIO anIter( theList ); - - SalomeApp_Study* appStudy = dynamic_cast( SUIT_Session::session()->activeApplication()->activeStudy() ); - if ( !appStudy ) return; - _PTR(Study) aStudy = appStudy->studyDS(); - - int j = 0; - for ( int i=0; anIter.More(); anIter.Next(), i++ ) - { - Handle(SALOME_InteractiveObject) anIObj = anIter.Value(); - _PTR(SObject) aSObj ( aStudy->FindObjectID( anIObj->getEntry() ) ); - - if ( aSObj ) - { - GEOM::GEOM_Object_var aGeomObj = - GEOM::GEOM_Object::_narrow(GeometryGUI::ClientSObjectToObject(aSObj)); - if ( !CORBA::is_nil( aGeomObj ) && ( !theShapesOnly || IsShape( aGeomObj ) ) ) - theListGO[ j++ ] = aGeomObj; - } - } - - theListGO.length( j ); -} - -//================================================================================= -// function : CreateArrowForLinearEdge() -// purpose : Create a cone topology to be used to display an arrow in the middle -// : of an edge showing its orientation. (For simulation and Viewer OCC only) -//================================================================================= -bool GEOMBase::CreateArrowForLinearEdge(const TopoDS_Shape& tds, TopoDS_Shape& ArrowCone) -{ - if(SUIT_Session::session()->activeApplication()->desktop()->activeWindow()->getViewManager()->getType() - != OCCViewer_Viewer::Type() || tds.ShapeType() != TopAbs_EDGE) - return false; - - OCCViewer_ViewPort3d* vp3d = ((OCCViewer_ViewWindow*)SUIT_Session::session()->activeApplication()->desktop()->activeWindow())->getViewPort(); - Handle( V3d_View) view3d = vp3d->getView(); - Standard_Real Width, Height; - view3d->Size(Width, Height); - const Standard_Real aHeight = (Width + Height) / 50.0; - - try { - Standard_Real first, last; - Handle(Geom_Curve) curv = BRep_Tool::Curve(TopoDS::Edge(tds), first, last); - if(!curv->IsCN(1)) - return false; - - const Standard_Real param = (first+last) / 2.0; - gp_Pnt middleParamPoint; - gp_Vec V1; - curv->D1( param, middleParamPoint, V1); - if(V1.Magnitude() < Precision::Confusion()) - return false; - - /* Topology orientation not geom orientation */ - if(tds.Orientation() == TopAbs_REVERSED) - V1 *= -1.0; - - gp_Ax2 anAxis( middleParamPoint, gp_Dir(V1)); - const Standard_Real radius1 = aHeight / 5.0; - if(radius1 > 10.0 * Precision::Confusion() && aHeight > 10.0 * Precision::Confusion()) { - ArrowCone = BRepPrimAPI_MakeCone( anAxis, radius1, 0.0, aHeight ).Shape(); - return true; - } - } - catch(Standard_Failure) { - // OCC failures are hard to catch in GUI. - // This because of the position for #include that is very critic to find - // in SALOME environment : compilation error ! - } - return false; -} - - -//================================================================================= -// function : VertexToPoint() -// purpose : If S can be converted in a gp_Pnt returns true and the result is P -//================================================================================= -bool GEOMBase::VertexToPoint(const TopoDS_Shape& S, gp_Pnt& P) -{ - if(S.IsNull() || S.ShapeType() != TopAbs_VERTEX) - return false; - P = BRep_Tool::Pnt(TopoDS::Vertex(S)); - return true; -} - - -//================================================================================= -// function : GetBipointDxDyDz() -// purpose : -//================================================================================= -void GEOMBase::GetBipointDxDyDz(gp_Pnt P1, gp_Pnt P2, double& dx, double& dy, double& dz) -{ - dx = P2.X() - P1.X(); - dy = P2.Y() - P1.Y(); - dz = P2.Z() - P1.Z(); - return; -} - - -//================================================================================= -// function : LinearEdgeExtremities() -// purpose : If S can be converted in a linear edge and if initial an final points -// : distance is sufficient, returns true else returns false. -// : Resulting points are respectively P1 and P2 -//================================================================================= -bool GEOMBase::LinearEdgeExtremities(const TopoDS_Shape& S, gp_Pnt& P1, gp_Pnt& P2) -{ - if(S.IsNull() || S.ShapeType() != TopAbs_EDGE) - return false; - BRepAdaptor_Curve curv(TopoDS::Edge(S)); - if(curv.GetType() != GeomAbs_Line) - return false; - - curv.D0(curv.FirstParameter(), P1); - curv.D0(curv.LastParameter(), P2); - - if(P1.Distance(P2) <= Precision::Confusion()) - return false; - - return true; -} - - -//======================================================================= -// function : Parameter() -// purpose : return a parameter (float) from a dialog box -// -// avalue1 : is a float or integer used as a default value displayed -// aTitle1 : is the title for aValue1 -// aTitle : is the main title -// bottom : maximum value to be entered -// top : minimum value to be entered -// decimals : number of decimals -//======================================================================= -double GEOMBase::Parameter(Standard_Boolean& res, const char* aValue1, const char* aTitle1, const char* aTitle, const double bottom, const double top, const int decimals) -{ - GEOMBase_aParameterDlg * Dialog = new GEOMBase_aParameterDlg(aValue1, aTitle1, SUIT_Session::session()->activeApplication()->desktop(), - aTitle, TRUE, 0, bottom, top, decimals); - int r = Dialog->exec(); - float X = 0.0; - if(r == QDialog::Accepted) { - res = Standard_True; - X = Dialog->getValue(); - } - else - res = Standard_False; - delete Dialog; - return X; -} - - -//======================================================================= -// function : SelectionByNameInDialogs() -// purpose : Called when user has entered a name of object in a LineEdit. -// : The selection is changed. Dialog box will receive the -// : corresponding signal to manage this event. -//======================================================================= -bool GEOMBase::SelectionByNameInDialogs(QWidget* aWidget, const QString& objectUserName, const SALOME_ListIO& aList) -{ - /* Find SObject with name in component GEOM */ - SalomeApp_Study* appStudy = dynamic_cast( SUIT_Session::session()->activeApplication()->activeStudy() ); - if ( !appStudy ) return false; - _PTR(Study) ST = appStudy->studyDS(); - - std::vector<_PTR(SObject)> listSO; - listSO = ST->FindObjectByName(objectUserName.latin1(), "GEOM"); - - if(listSO.size() < 1) { - const QString caption = QObject::tr("GEOM_WRN_WARNING"); - const QString text = QObject::tr("GEOM_NAME_INCORRECT"); - const QString button0 = QObject::tr("GEOM_BUT_OK"); - SUIT_MessageBox::error1(aWidget, caption, text, button0); - return false; - } - /* More than one object with same name */ - if(listSO.size() > 1) { - const QString caption = QObject::tr("GEOM_WRN_WARNING"); - const QString text = QObject::tr("GEOM_IDENTICAL_NAMES_SELECT_BY_MOUSE"); - const QString button0 = QObject::tr("GEOM_BUT_OK") ; - SUIT_MessageBox::error1(aWidget, caption, text, button0) ; - listSO.clear(); - return false; - } - - _PTR(SObject) theObj ( listSO[0] ); - /* Create a SALOME_InteractiveObject with a SALOME::SObject */ - char* aCopyobjectUserName = CORBA::string_dup(objectUserName); - Handle(SALOME_InteractiveObject) SI = new SALOME_InteractiveObject(theObj->GetID().c_str(), "GEOM", aCopyobjectUserName); - delete(aCopyobjectUserName); - - /* Add as a selected object */ - /* Clear any previous selection : */ - /* Warning the LineEdit is purged because of signal currentSelectionChanged ! */ - // Sel->ClearIObjects(); //mzn - // Sel->AddIObject(SI); //mzn - return true; -} - - -//======================================================================= -// function : DefineDlgPosition() -// purpose : Define x and y the default position for a dialog box -//======================================================================= -bool GEOMBase::DefineDlgPosition(QWidget* aDlg, int& x, int& y) -{ - /* Here the position is on the bottom right corner - 10 */ - SUIT_Desktop* PP = SUIT_Session::session()->activeApplication()->desktop(); - x = abs(PP->x() + PP->size().width() - aDlg->size().width() - 10); - y = abs(PP->y() + PP->size().height() - aDlg->size().height() - 10); - return true; -} - - -//======================================================================= -// function : GetDefaultName() -// purpose : Generates default names -//======================================================================= -QString GEOMBase::GetDefaultName(const QString& theOperation) -{ - QString aName = ""; - - SalomeApp_Study* appStudy = dynamic_cast( SUIT_Session::session()->activeApplication()->activeStudy() ); - if ( !appStudy ) return aName; - _PTR(Study) aStudy = appStudy->studyDS(); - - int aNumber = 0; - _PTR(SObject) obj; - do - { - aName = theOperation+"_"+QString::number(++aNumber); - obj = aStudy->FindObject(aName.latin1()); - } - while (obj); - - return aName; -} - - -//======================================================================= -// function : ShowErrorMessage() -// purpose : Shows message box with error code and comment -//======================================================================= -void GEOMBase::ShowErrorMessage(const char* theErrorCode, const char* theComment) -{ - QString anErrorCode(theErrorCode); - QString aComment(theComment); - - QString aText = ""; - if (!anErrorCode.isEmpty()) - aText.append("\n" + QObject::tr(anErrorCode)); - if (!aComment.isEmpty()) - aText.append("\n" + QString(theComment)); - - SUIT_MessageBox::error1( SUIT_Session::session()->activeApplication()->desktop(), QObject::tr( "GEOM_ERROR" ), - QObject::tr("GEOM_PRP_ABORT") + aText, "OK" ); -} - - -//======================================================================= -// function : GetObjectFromIOR() -// purpose : returns a GEOM_Object by given IOR (string) -//======================================================================= -GEOM::GEOM_Object_ptr GEOMBase::GetObjectFromIOR( const char* theIOR ) -{ - GEOM::GEOM_Object_var anObject; - if ( theIOR == NULL || strlen( theIOR ) == 0 ) - return anObject._retn(); // returning nil object - - anObject = GEOM::GEOM_Object::_narrow( SalomeApp_Application::orb()->string_to_object( theIOR ) ); - return anObject._retn(); -} - -//======================================================================= -// function : GetIORFromObject() -// purpose : returns IOR of a given GEOM_Object -//======================================================================= -char* GEOMBase::GetIORFromObject( const GEOM::GEOM_Object_ptr& theObject ) -{ - if ( CORBA::is_nil( theObject ) ) - return NULL; - - return SalomeApp_Application::orb()->object_to_string( theObject ); -} - -//======================================================================= -// function : GetShape() -// purpose : returns a TopoDS_Shape stored in GEOM_Object -//======================================================================= -bool GEOMBase::GetShape( const GEOM::GEOM_Object_ptr& theObject, TopoDS_Shape& theShape, const TopAbs_ShapeEnum theType ) -{ - if ( !CORBA::is_nil( theObject ) ) - { - TopoDS_Shape aTopoDSShape = GEOM_Client().GetShape( GeometryGUI::GetGeomGen(), theObject ); - if ( !aTopoDSShape.IsNull() && ( theType == TopAbs_SHAPE || theType == aTopoDSShape.ShapeType() ) ) - { - theShape = aTopoDSShape; - return true; - } - } - return false; -} - -//======================================================================= -// function : GetName() -// purpose : Get name of object -//======================================================================= -QString GEOMBase::GetName( GEOM::GEOM_Object_ptr theObj ) -{ - SalomeApp_Study* appStudy = dynamic_cast( SUIT_Session::session()->activeApplication()->activeStudy() ); - - if ( appStudy ) - { - string anIOR = SalomeApp_Application::orb()->object_to_string( theObj ); - if ( anIOR != "" ) - { - _PTR(SObject) aSObj ( appStudy->studyDS()->FindObjectIOR( anIOR ) ); - - _PTR(GenericAttribute) anAttr; - - if ( aSObj && aSObj->FindAttribute( anAttr, "AttributeName") ) - { - _PTR(AttributeName) aNameAttr ( anAttr ); - return QString( aNameAttr->Value().c_str() ); - } - } - } - - return QString(""); -} - -bool GEOMBase::IsShape( GEOM::GEOM_Object_ptr theObj ) -{ - return !theObj->_is_nil() && theObj->IsShape(); -} diff --git a/src/GEOMBase/GEOMBase.h b/src/GEOMBase/GEOMBase.h deleted file mode 100644 index c118ac737..000000000 --- a/src/GEOMBase/GEOMBase.h +++ /dev/null @@ -1,148 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOMBase.h -// Author : Damien COQUERET -// Module : GEOM -// $Header$ - -#ifndef GEOMBASE_H -#define GEOMBASE_H - -// SALOME Includes -#include "GEOM_AISShape.hxx" - -// IDL Headers -#include -#include CORBA_SERVER_HEADER(SALOMEDS) -#include CORBA_SERVER_HEADER(SALOMEDS_Attributes) -#include CORBA_SERVER_HEADER(GEOM_Gen) - -// QT Includes -#include -//#if defined WNT -//#include -//#else -//#define SALOME_WNT_EXPORT -//#endif - -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define GEOMBASE_WNT_EXPORT __declspec( dllexport ) -#else -#define GEOMBASE_WNT_EXPORT -#endif - -class GEOM_Actor; -class SALOME_ListIO; -class TColStd_MapOfInteger; - -class QWidget; - -//================================================================================= -// class : GEOMBase -// purpose : -//================================================================================= -class GEOMBASE_WNT_EXPORT GEOMBase -{ -public : - GEOMBase(); - ~GEOMBase(); - - // SAN -- TO BE REMOVED !!! - static bool Display( GEOM::GEOM_Object_ptr ) {return false;} - static bool AddInStudy( GEOM::GEOM_Object_ptr ) {return false;} - static void DisplaySimulationShape(const TopoDS_Shape& S) {}; - static void EraseSimulationShape() {}; - // SAN -- TO BE REMOVED !!! - - /* Selection and objects management */ - static int GetIndex(const TopoDS_Shape& subshape, const TopoDS_Shape& shape, int ShapeType); - static TopoDS_Shape GetShapeFromIOR(QString IOR); - static bool GetShape( const GEOM::GEOM_Object_ptr&, TopoDS_Shape&, const TopAbs_ShapeEnum = TopAbs_SHAPE ); - static bool GetTopoFromSelection(const SALOME_ListIO& aList, TopoDS_Shape& tds); - static int GetNameOfSelectedIObjects(const SALOME_ListIO& aList, QString& aName, const bool theShapesOnly = false ); - static bool GetShapeTypeString(const TopoDS_Shape& aShape, Standard_CString& aTypeString); - - /* Convertions */ - static GEOM::GEOM_Object_ptr ConvertIOinGEOMShape(const Handle(SALOME_InteractiveObject)& IO, - Standard_Boolean& testResult); - static Handle(GEOM_AISShape) ConvertIOinGEOMAISShape(const Handle(SALOME_InteractiveObject)& IO, - Standard_Boolean& testResult, - bool onlyInActiveView = false); - - static Handle(AIS_InteractiveObject) GetAIS( const Handle(SALOME_InteractiveObject)& theIO, - const bool isOnlyInActiveView = false ); - static void ConvertListOfIOInListOfIOR(const SALOME_ListIO& aList, - GEOM::string_array& listIOR); - - static Handle(GEOM_AISShape) ConvertIORinGEOMAISShape(const char * IOR, - Standard_Boolean& testResult, - bool onlyInActiveView = false); - static GEOM_Actor* ConvertIORinGEOMActor(const char * IOR, Standard_Boolean& testResult, - bool onlyInActiveView = false); - - static GEOM::GEOM_Object_ptr ConvertIOinGEOMObject(const Handle(SALOME_InteractiveObject)& IO, - Standard_Boolean& testResult); - - static void ConvertListOfIOInListOfGO( const SALOME_ListIO& aList, - GEOM::ListOfGO& listGO, - const bool theShapesOnly = false ); - - static GEOM::GEOM_Object_ptr GetObjectFromIOR( const char* theIOR ); - - static char* GetIORFromObject( const GEOM::GEOM_Object_ptr& theObject ); - - /* Geometry */ - static bool VertexToPoint(const TopoDS_Shape& S, gp_Pnt& P); - - /* Used just by Plane and Prism */ - static bool LinearEdgeExtremities(const TopoDS_Shape& S, gp_Pnt& P1, gp_Pnt& P2); - static void GetBipointDxDyDz(gp_Pnt P1, gp_Pnt P2, double& dx, double& dy, double& dz); - - /* User dialog 1 parameter returned */ - static double Parameter(Standard_Boolean& res, - const char* aValue1 = 0, const char* aTitle1 = 0, - const char* aTitle = 0, const double bottom = -1E6, - const double top = +1E6, const int decimals = 6); - - /* Simulation management */ - static bool CreateArrowForLinearEdge(const TopoDS_Shape& tds, TopoDS_Shape& ArrowCone); - - /* Generates default names */ - static bool SelectionByNameInDialogs(QWidget* aWidget, const QString& userObjectName, const SALOME_ListIO& aList); - /* Shows message box with error code */ - static bool DefineDlgPosition(QWidget* aDlg, int& x, int& y); - - /* This method generates default names for results of geometrical operations */ - static QString GetDefaultName(const QString& theOperation); - /* Shows message box with error code and comment */ - static void ShowErrorMessage(const char* theErrorCode, const char* theComment = 0); - - /* Gets name of object */ - static QString GetName( GEOM::GEOM_Object_ptr ); - - static bool IsShape( GEOM::GEOM_Object_ptr theObj ); -}; - -#endif - diff --git a/src/GEOMBase/GEOMBase_Helper.cxx b/src/GEOMBase/GEOMBase_Helper.cxx deleted file mode 100755 index 7c2707cab..000000000 --- a/src/GEOMBase/GEOMBase_Helper.cxx +++ /dev/null @@ -1,974 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2004 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.org -// -// -// -// File : GEOMBase_Helper.cxx -// Author : Sergey ANIKIN -// Module : GEOM -// $Header$ - -#include - -#include "GEOMBase_Helper.h" -#include "GEOMBase.h" -#include "GEOM_Operation.h" -#include "GeometryGUI.h" -#include "GEOM_Displayer.h" -#include "GEOMImpl_Types.hxx" - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include - -#include -#include - -using namespace std; - -#include - - -//================================================================ -// Function : getActiveView -// Purpose : Get active view window, returns 0 if no open study frame -//================================================================ -static SUIT_ViewWindow* getActiveView() -{ - SUIT_Study* activeStudy = SUIT_Session::session()->activeApplication()->activeStudy(); - if ( activeStudy ) - return SUIT_Session::session()->activeApplication()->desktop()->activeWindow(); - - return 0; -} - - -//================================================================ -// Function : getGeomEngine -// Purpose : Static method -//================================================================ -GEOM::GEOM_Gen_ptr GEOMBase_Helper::getGeomEngine() -{ - return GeometryGUI::GetGeomGen(); -} - -//================================================================ -// Function : GEOMBase_Helper -// Purpose : -//================================================================ -GEOMBase_Helper::GEOMBase_Helper( SUIT_Desktop* desktop ) - : myDesktop( desktop ), myViewWindow( 0 ), myDisplayer( 0 ), myCommand( 0 ), isPreview( false ) -{ -} - -//================================================================ -// Function : ~GEOMBase_Helper -// Purpose : -//================================================================ -GEOMBase_Helper::~GEOMBase_Helper() -{ - if ( !SUIT_Session::session()->activeApplication()->desktop() ) - return; - - if ( myPreview.size() ) - erasePreview(); - if ( hasCommand() ) - abortCommand(); - - globalSelection( GEOM_ALLOBJECTS, true ); - - delete myDisplayer; -} - -//================================================================ -// Function : display -// Purpose : -//================================================================ -void GEOMBase_Helper::display( const ObjectList& objList, const bool updateView ) -{ - ObjectList::const_iterator it; - for ( it = objList.begin(); it != objList.end(); it++ ) { - display( *it, false ); - } - if ( !objList.empty() && updateView ) - getDisplayer()->UpdateViewer(); -} - -//================================================================ -// Function : display -// Purpose : Display object. -// Important : Object must be already in study -//================================================================ -void GEOMBase_Helper::display( GEOM::GEOM_Object_ptr object, const bool updateView ) -{ - // Unset color of shape ( this color may be set during preview displaying ) - // Default color will be used - getDisplayer()->UnsetColor(); - getDisplayer()->UnsetWidth(); - - // Enable activisation of selection - getDisplayer()->SetToActivate( true ); - - // Display object - getDisplayer()->Display( object, updateView ); -} - -//================================================================ -// Function : erase -// Purpose : -//================================================================ -void GEOMBase_Helper::erase( const ObjectList& objList, const bool updateView ) -{ - ObjectList::const_iterator it = objList.begin(); - for ( ; it != objList.end(); it++ ) { - erase( *it, false ); - } - if ( !objList.empty() && updateView ) - getDisplayer()->UpdateViewer(); -} - -//================================================================ -// Function : erase -// Purpose : -//================================================================ -void GEOMBase_Helper::erase( GEOM::GEOM_Object_ptr object, const bool updateView ) -{ - if ( !object->_is_nil() ) { - string entry = getEntry( object ); - getDisplayer()->Erase( new SALOME_InteractiveObject( - entry.c_str(), "GEOM", strdup( GEOMBase::GetName( object ) ) ), true, updateView ); - } -} - -//================================================================ -// Function : redisplay -// Purpose : -//================================================================ -void GEOMBase_Helper::redisplay( const ObjectList& objList, - const bool withChildren, - const bool updateView ) -{ - ObjectList::const_iterator it = objList.begin(); - for ( ; it != objList.end(); it++ ) { - redisplay( *it, withChildren, false ); - } - if ( !objList.empty() && updateView ) - getDisplayer()->UpdateViewer(); -} - -//================================================================ -// Function : redisplay -// Purpose : -//================================================================ -void GEOMBase_Helper::redisplay( GEOM::GEOM_Object_ptr object, - const bool withChildren, - const bool updateView ) -{ - if ( !object->_is_nil() ) { - // Unset color of shape ( this color may be set during preview displaying ) - // Default color will be used - getDisplayer()->UnsetColor(); - getDisplayer()->UnsetWidth(); - - // Enable activisation of selection - getDisplayer()->SetToActivate( true ); - - string entry = getEntry( object ); - getDisplayer()->Redisplay(new SALOME_InteractiveObject - (entry.c_str(), "GEOM", strdup(GEOMBase::GetName(object))), false); - } - - if ( withChildren ) { - SalomeApp_Study* aDoc = getStudy(); - if ( aDoc && aDoc->studyDS() ) { - _PTR(Study) aStudy = aDoc->studyDS(); - _PTR(SObject) aSObj (aStudy->FindObjectIOR(SalomeApp_Application::orb()->object_to_string(object))); - if ( aSObj ) { - _PTR(ChildIterator) anIt ( aStudy->NewChildIterator( aSObj ) ); - for ( anIt->InitEx( true ); anIt->More(); anIt->Next() ) { - GEOM::GEOM_Object_var aChild = GEOM::GEOM_Object::_narrow - (GeometryGUI::ClientSObjectToObject(anIt->Value())); - if ( !CORBA::is_nil( aChild ) ) { - if ( !aChild->_is_nil() ) { - string entry = getEntry( aChild ); - getDisplayer()->Redisplay( new SALOME_InteractiveObject( - entry.c_str(), "GEOM", strdup( GEOMBase::GetName( aChild ) ) ), false ); - } - } - } - } - } - } - - if ( updateView ) - getDisplayer()->UpdateViewer(); -} - -//================================================================ -// Function : displayPreview -// Purpose : Method for displaying preview based on execute() results -//================================================================ -void GEOMBase_Helper::displayPreview( const bool activate, - const bool update, - const bool toRemoveFromEngine, - const double lineWidth ) -{ - isPreview = true; - QString msg; - if ( !isValid( msg ) ) - { - erasePreview( update ); - isPreview = false; - return; - } - - erasePreview( false ); - - try { - SUIT_OverrideCursor wc; - ObjectList objects; - if ( !execute( objects ) || !getOperation()->IsDone() ) { - wc.suspend(); - } - else { - for ( ObjectList::iterator it = objects.begin(); it != objects.end(); ++it ) - { - displayPreview( *it, true, activate, false, lineWidth ); - if ( toRemoveFromEngine ) - getGeomEngine()->RemoveObject( *it ); - } - } - } - catch( const SALOME::SALOME_Exception& e ) { - SalomeApp_Tools::QtCatchCorbaException( e ); - } - - isPreview = false; - - if ( update ) - updateViewer(); -} - -//================================================================ -// Function : displayPreview -// Purpose : Method for displaying preview of resulting shape -//================================================================ -void GEOMBase_Helper::displayPreview( GEOM::GEOM_Object_ptr object, - const bool append, - const bool activate, - const bool update, - const double lineWidth ) -{ - // Set color for preview shape - getDisplayer()->SetColor( Quantity_NOC_VIOLET ); - - // set width of displayed shape - getDisplayer()->SetWidth( lineWidth ); - - // Disable activation of selection - getDisplayer()->SetToActivate( activate ); - - // Make a reference to GEOM_Object - getDisplayer()->SetName( SalomeApp_Application::orb()->object_to_string( object ) ); - - // Build prs - SALOME_Prs* aPrs = getDisplayer()->BuildPrs( object ); - if ( aPrs == 0 || aPrs->IsNull() ) - return; - - // Display prs - displayPreview( aPrs, append, update ); - - getDisplayer()->UnsetName(); - - // Enable activation of displayed objects - getDisplayer()->SetToActivate( true ); -} - -//================================================================ -// Function : displayPreview -// Purpose : Method for displaying arbitrary preview objects (not limited to shapes) -//================================================================ -void GEOMBase_Helper::displayPreview( const SALOME_Prs* prs, - const bool append, - const bool update ) -{ - if ( !append ) - erasePreview( false ); - - // remember current view frame to make correct erase preview later - myViewWindow = getActiveView(); - - if ( myViewWindow == 0 ) - return; - - // Display prs - SUIT_ViewManager* aViewManager = myViewWindow->getViewManager(); - if ( aViewManager->getType() == OCCViewer_Viewer::Type() || - aViewManager->getType() == VTKViewer_Viewer::Type() ) - { - SUIT_ViewModel* aViewModel = aViewManager->getViewModel(); - SALOME_View* aView = dynamic_cast(aViewModel); - if (aView) - aView->Display( prs ); - } - - // Add prs to the preview list - myPreview.push_back( (SALOME_Prs*)prs ); - - // Update viewer - if ( update ) - getDisplayer()->UpdateViewer(); -} - -//================================================================ -// Function : erasePreview -// Purpose : -//================================================================ -void GEOMBase_Helper::erasePreview( const bool update ) -{ - // check view frame where the preview was displayed - bool vfOK = checkViewWindow() && myViewWindow; - // Iterate through presentations and delete them - for ( PrsList::iterator anIter = myPreview.begin(); anIter != myPreview.end(); ++anIter ) { - if ( vfOK ) - { - SUIT_ViewManager* aViewManager = myViewWindow->getViewManager(); - if ( aViewManager->getType() == OCCViewer_Viewer::Type() || - aViewManager->getType() == VTKViewer_Viewer::Type() ) - { - SUIT_ViewModel* aViewModel = aViewManager->getViewModel(); - SALOME_View* aView = dynamic_cast(aViewModel); - if (aView) - aView->Erase( *anIter, true ); - } - } - delete *anIter; - } - myPreview.clear(); - - // Update viewer - if ( update ) - updateViewer(); -} - -//================================================================ -// Function : localSelection -// Purpose : Activate selection of objects of a given type -// IMPORTANT : Works after localSelection( ... ) method call only -//================================================================ -void GEOMBase_Helper::activate( const int theType ) -{ - if (!getStudy()) return; - _PTR(Study) aStudy = getStudy()->studyDS(); - _PTR(SComponent) aGeom ( aStudy->FindComponent( "GEOM" ) ); - if ( !aGeom ) - return; - - SALOME_ListIO aList; - _PTR(ChildIterator) anIter ( aStudy->NewChildIterator( aGeom ) ); - for ( ; anIter->More(); anIter->Next() ) - { - _PTR(SObject) aSO ( anIter->Value() ); - if ( aSO ) - { - _PTR(SObject) aRefSO; - if ( !aSO->ReferencedObject( aRefSO ) ) - { - GEOM::GEOM_Object_var anObj = GEOM::GEOM_Object::_narrow - (GeometryGUI::ClientSObjectToObject(aSO)); - if ( !anObj->_is_nil() && anObj->GetType() == theType ) - aList.Append( new SALOME_InteractiveObject( aSO->GetID().c_str(), "GEOM", aSO->GetName().c_str()) ); - } - } - } - - getDisplayer()->LocalSelection( aList, 0 ); -} - -//================================================================ -// Function : localSelection -// Purpose : Activate selection of subshapes in accordance with mode -// theMode is from TopAbs_ShapeEnum -//================================================================ -void GEOMBase_Helper::localSelection( const ObjectList& theObjs, const int theMode ) -{ - SALOME_ListIO aListOfIO; - - ObjectList::const_iterator anIter = theObjs.begin(); - for ( ; anIter != theObjs.end(); ++anIter ) - { - GEOM::GEOM_Object_ptr anObj = *anIter; - if ( anObj->_is_nil() ) - continue; - string aEntry = getEntry( anObj ); - if ( aEntry != "" ) - aListOfIO.Append( new SALOME_InteractiveObject( - aEntry.c_str(), "GEOM", strdup( GEOMBase::GetName( anObj ) ) ) ); - } - - getDisplayer()->LocalSelection( aListOfIO, theMode ); -} - -//================================================================ -// Function : localSelection -// Purpose : Activate selection of subshapes in accordance with mode -// theMode is from TopAbs_ShapeEnum -//================================================================ -void GEOMBase_Helper::localSelection( GEOM::GEOM_Object_ptr obj, const int mode ) -{ - // If object is null local selection for all objects is activated - if ( obj->_is_nil() ) { - getDisplayer()->LocalSelection( Handle(SALOME_InteractiveObject)(), mode ); - return; - } - - ObjectList objList; - objList.push_back( obj ); - localSelection( objList, mode ); -} - - -//================================================================ -// Function : globalSelection -// Purpose : Activate selection of subshapes. Set selection filters -// in accordance with mode. theMode is from GEOMImpl_Types -//================================================================ -void GEOMBase_Helper::globalSelection( const int theMode, const bool update ) -{ - getDisplayer()->GlobalSelection( theMode, update ); -} - -//================================================================ -// Function : globalSelection -// Purpose : Activate selection of subshapes. Set selection filters -// in accordance with mode. theMode is from GEOMImpl_Types -//================================================================ -void GEOMBase_Helper::globalSelection( const TColStd_MapOfInteger& theModes, - const bool update ) -{ - getDisplayer()->GlobalSelection( theModes, update ); -} - -//================================================================ -// Function : addInStudy -// Purpose : Add object in study -//================================================================ -void GEOMBase_Helper::addInStudy( GEOM::GEOM_Object_ptr theObj, const char* theName ) -{ - if ( !hasCommand() ) - return; - - _PTR(Study) aStudy = getStudy()->studyDS(); - if ( !aStudy || theObj->_is_nil() ) - return; - - GEOM::GEOM_Object_ptr aFatherObj = getFather( theObj ); - - getGeomEngine()->AddInStudy(GeometryGUI::ClientStudyToStudy(aStudy), - theObj, theName, aFatherObj); -} - -//================================================================ -// Function : updateObjBrowser -// Purpose : Update object browser -//================================================================ -void GEOMBase_Helper::updateObjBrowser() const -{ - SalomeApp_Application* app = dynamic_cast(SUIT_Session::session()->activeApplication()); - if (app) { - CAM_Module* module = app->module( "Geometry" ); - SalomeApp_Module* appMod = dynamic_cast( module ); - if ( appMod ) { - appMod->updateObjBrowser( true ); - } - } -} - -//================================================================ -// Function : updateViewer -// Purpose : Update active 3D view -//================================================================ -void GEOMBase_Helper::updateViewer() -{ - getDisplayer()->UpdateViewer(); -} - -//================================================================ -// Function : getStudyId -// Purpose : Get study Id -//================================================================ -int GEOMBase_Helper::getStudyId() const -{ - int anId = -1; - if ( getStudy() ) - anId = getStudy()->id(); - return anId; -} - -//================================================================ -// Function : getStudy -// Purpose : Returns the active study. It is recommended to use -// this method instead of direct desktop->getActiveStudy() calls -//================================================================ -SalomeApp_Study* GEOMBase_Helper::getStudy() const -{ - SUIT_Desktop* aDesktop = getDesktop(); - if (!aDesktop) - return 0; - - QPtrList anAppList = SUIT_Session::session()->applications(); - - SUIT_Application* anApp = 0; - for ( QPtrListIterator it( anAppList ); it.current() ; ++it ) - { - anApp = it.current(); - if ( anApp->desktop() == aDesktop ) - break; - } - - return dynamic_cast(anApp->activeStudy()); -} - -//================================================================ -// Function : getEntry -// Purpose : -//================================================================ -char* GEOMBase_Helper::getEntry( GEOM::GEOM_Object_ptr object ) const -{ - SalomeApp_Study* study = getStudy(); - if ( study ) { - string IOR = GEOMBase::GetIORFromObject( object); - if ( IOR != "" ) { - _PTR(SObject) SO ( study->studyDS()->FindObjectIOR( IOR ) ); - if ( SO ) { - return TCollection_AsciiString((char*)SO->GetID().c_str()).ToCString(); - } - } - } - return ""; -} - -//================================================================ -// Function : getDisplayer -// Purpose : -//================================================================ -GEOM_Displayer* GEOMBase_Helper::getDisplayer() -{ - if ( !myDisplayer ) - myDisplayer = new GEOM_Displayer( getStudy() ); - return myDisplayer; -} - -//================================================================ -// Function : clearShapeBuffer -// Purpose : -//================================================================ -void GEOMBase_Helper::clearShapeBuffer( GEOM::GEOM_Object_ptr theObj ) -{ - if ( CORBA::is_nil( theObj ) ) - return; - - string IOR = SalomeApp_Application::orb()->object_to_string( theObj ); - TCollection_AsciiString asciiIOR( strdup( IOR.c_str() ) ); - GEOM_Client().RemoveShapeFromBuffer( asciiIOR ); - - if ( !getStudy() || !getStudy()->studyDS() ) - return; - - _PTR(Study) aStudy = getStudy()->studyDS(); - _PTR(SObject) aSObj ( aStudy->FindObjectIOR( IOR ) ); - if ( !aSObj ) - return; - - _PTR(ChildIterator) anIt ( aStudy->NewChildIterator( aSObj ) ); - for ( anIt->InitEx( true ); anIt->More(); anIt->Next() ) { - _PTR(GenericAttribute) anAttr; - if ( anIt->Value()->FindAttribute(anAttr, "AttributeIOR") ) { - _PTR(AttributeIOR) anIOR ( anAttr ); - TCollection_AsciiString asciiIOR( (char*)anIOR->Value().c_str() ); - GEOM_Client().RemoveShapeFromBuffer( asciiIOR ); - } - } -} - -//================================================================ -// Function : openCommand -// Purpose : -//================================================================ -bool GEOMBase_Helper::openCommand() -{ - bool res = false; - if ( !getStudy() || hasCommand() ) - return res; - - GEOM::GEOM_IOperations_var anOp = GEOM::GEOM_IOperations::_narrow( getOperation() ); - if ( !anOp->_is_nil() ) { - myCommand = new GEOM_Operation( SUIT_Session::session()->activeApplication(), anOp.in() ); - myCommand->start(); - res = true; - } - - return res; -} - -//================================================================ -// Function : abortCommand -// Purpose : -//================================================================ -bool GEOMBase_Helper::abortCommand() -{ - if ( !hasCommand() ) - return false; - - myCommand->abort(); - myCommand = 0; - - return true; -} - -//================================================================ -// Function : commitCommand -// Purpose : -//================================================================ -bool GEOMBase_Helper::commitCommand( const char* ) -{ - if ( !hasCommand() ) - return false; - - myCommand->commit(); - myCommand = 0; - - return true; -} - -//================================================================ -// Function : hasCommand -// Purpose : -//================================================================ -bool GEOMBase_Helper::hasCommand() const -{ - return (bool)myCommand; -} - -//================================================================ -// Function : getOperation -// Purpose : -//================================================================ -GEOM::GEOM_IOperations_ptr GEOMBase_Helper::getOperation() -{ - if ( myOperation->_is_nil() ) - myOperation = createOperation(); - - return myOperation; -} - - - -//================================================================ -// Function : checkViewWindow -// Purpose : -//================================================================ -bool GEOMBase_Helper::checkViewWindow() -{ - if ( myViewWindow ){ - QPtrList aViewWindowsList = SUIT_Session::session()->activeApplication()->desktop()->windows(); - for ( QPtrListIterator it( aViewWindowsList ); it.current(); ++it ) - { - if ( myViewWindow == it.current() ) - return true; - } - } - myViewWindow = 0; - return false; -} - -//================================================================ -// Function : onAccept -// Purpose : This method should be called from dialog's slots onOk() and onApply() -// It perfroms user input validation, then it -// performs a proper operation and manages transactions, etc. -//================================================================ -bool GEOMBase_Helper::onAccept( const bool publish, const bool useTransaction ) -{ - SalomeApp_Study* appStudy = dynamic_cast( SUIT_Session::session()->activeApplication()->activeStudy() ); - if ( !appStudy ) return false; - _PTR(Study) aStudy = appStudy->studyDS(); - - bool aLocked = (_PTR(AttributeStudyProperties) (aStudy->GetProperties()))->IsLocked(); - if ( aLocked ) { - MESSAGE("GEOMBase_Helper::onAccept - ActiveStudy is locked"); - SUIT_MessageBox::warn1 ( (QWidget*)SUIT_Session::session()->activeApplication()->desktop(), - QObject::tr("WRN_WARNING"), - QObject::tr("WRN_STUDY_LOCKED"), - QObject::tr("BUT_OK") ); - return false; - } - - QString msg; - if ( !isValid( msg ) ) { - showError( msg ); - return false; - } - - erasePreview( false ); - - try { - if ( ( !publish && !useTransaction ) || openCommand() ) { - SUIT_OverrideCursor wc; - SUIT_Session::session()->activeApplication()->putInfo( "" ); - ObjectList objects; - if ( !execute( objects ) || !getOperation()->IsDone() ) { - wc.suspend(); - abortCommand(); - showError(); - } - else { - const int nbObjs = objects.size(); - bool withChildren = false; - for ( ObjectList::iterator it = objects.begin(); it != objects.end(); ++it ) { - if ( publish ) { - QString aName(""); - if ( nbObjs > 1 ) - aName = strlen( getNewObjectName() ) ? GEOMBase::GetDefaultName( getNewObjectName() ) : GEOMBase::GetDefaultName( getPrefix( *it ) ); - else { - aName = getNewObjectName(); - // PAL6521: use a prefix, if some dialog box doesn't reimplement getNewObjectName() - if ( aName.isEmpty() ) - aName = GEOMBase::GetDefaultName( getPrefix( *it ) ); - } - addInStudy( *it, aName.latin1() ); - withChildren = false; - display( *it, false ); - } - else { // asv : fix of PAL6454. If publish==false, then the original shape was modified, and need to be re-cached in GEOM_Client - // before redisplay - clearShapeBuffer( *it ); - withChildren = true; - redisplay( *it, withChildren, false ); - } - } - - if ( nbObjs ) { - commitCommand(); - updateObjBrowser(); - SUIT_Session::session()->activeApplication()->putInfo( QObject::tr("GEOM_PRP_DONE") ); - } - else - abortCommand(); - } - } - } - catch( const SALOME::SALOME_Exception& e ) { - SalomeApp_Tools::QtCatchCorbaException( e ); - abortCommand(); - } - - updateViewer(); - - return true; -} - - -//================================================================ -// Function : showError -// Purpose : Shows a message box with infromation about an error taken from getOperation()->GetErrorCode() -//================================================================ -void GEOMBase_Helper::showError() -{ - QString msg; - if ( !getOperation()->_is_nil() ) - msg = QObject::tr( getOperation()->GetErrorCode() ); - - if ( msg.isEmpty() ) - msg = QObject::tr( "GEOM_PRP_ABORT" ); - - SUIT_MessageBox::error1( SUIT_Session::session()->activeApplication()->desktop(), - QObject::tr( "GEOM_ERROR_STATUS" ), - msg, - QObject::tr( "BUT_OK" ) ); -} - -//================================================================ -// Function : showError -// Purpose : Shows a error message followed by -//================================================================ -void GEOMBase_Helper::showError( const QString& msg ) -{ - QString str( QObject::tr( "GEOM_INCORRECT_INPUT" ) ); - if ( !msg.isEmpty() ) - str += "\n" + msg; - SUIT_MessageBox::error1(SUIT_Session::session()->activeApplication()->desktop(), QObject::tr( "GEOM_ERROR" ), str, QObject::tr( "BUT_OK" ) ); -} - -////////////////////////////////////////////////////////////////// -// Virtual methods to be redefined in dialogs -////////////////////////////////////////////////////////////////// - -//================================================================ -// Function : createOperation -// Purpose : Redefine this method to return proper IOperation reference -//================================================================ -GEOM::GEOM_IOperations_ptr GEOMBase_Helper::createOperation() -{ - GEOM::GEOM_IOperations_var aNilOp; - return aNilOp._retn(); -} - -//================================================================ -// Function : isValid -// Purpose : Called by onAccept(). Redefine this method to check validity of user input in dialog boxes. -//================================================================ -bool GEOMBase_Helper::isValid( QString& ) -{ - return true; -} - -//================================================================ -// Function : execute -// Purpose : This method is called by onAccept(). -// It should perform the required operation and put all new or modified objects into -// argument.Should return if some error occurs during its execution. -//================================================================ -bool GEOMBase_Helper::execute( ObjectList& objects ) -{ - return false; -} - -//================================================================ -// Function : getFather -// Purpose : This method is called by addInStudy(). It should return a father object -// for or a nil reference if should be published -// as a top-level object. -//================================================================ -GEOM::GEOM_Object_ptr GEOMBase_Helper::getFather( GEOM::GEOM_Object_ptr theObj ) -{ - return GEOM::GEOM_Object::_nil(); -} - -//================================================================ -// Function : getNewObjectName -// Purpose : Redefine this method to return proper name for a new object -//================================================================ -const char* GEOMBase_Helper::getNewObjectName() const -{ - return ""; -} - -//================================================================ -// Function : getPrefix -// Purpose : Get prefix for name of created object -//================================================================ -QString GEOMBase_Helper::getPrefix( GEOM::GEOM_Object_ptr theObj ) const -{ - if ( !myPrefix.isEmpty() || theObj->_is_nil() ) - return myPrefix; - - TopoDS_Shape aShape; - if ( !GEOMBase::GetShape( theObj, aShape ) ) - return ""; - - long aType = aShape.ShapeType(); - - switch ( aType ) - { - case TopAbs_VERTEX : return QObject::tr( "GEOM_VERTEX" ); - case TopAbs_EDGE : return QObject::tr( "GEOM_EDGE" ); - case TopAbs_WIRE : return QObject::tr( "GEOM_WIRE" ); - case TopAbs_FACE : return QObject::tr( "GEOM_FACE" ); - case TopAbs_SHELL : return QObject::tr( "GEOM_SHELL" ); - case TopAbs_SOLID : return QObject::tr( "GEOM_SOLID" ); - case TopAbs_COMPSOLID: return QObject::tr( "GEOM_COMPOUNDSOLID" ); - case TopAbs_COMPOUND : return QObject::tr( "GEOM_COMPOUND" ); - default : return ""; - } -} - -//================================================================ -// Function : selectedIO -// Purpose : Return the list of selected SALOME_InteractiveObject's -//================================================================ -const SALOME_ListIO& GEOMBase_Helper::selectedIO() -{ - mySelected.Clear(); - - SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() ); - if ( app ) { - SalomeApp_SelectionMgr* aSelMgr = app->selectionMgr(); - if ( aSelMgr ) - aSelMgr->selectedObjects( mySelected ); - } - - return mySelected; -} - -//================================================================ -// Function : IObjectCount -// Purpose : Return the number of selected objects -//================================================================ -int GEOMBase_Helper::IObjectCount() -{ - return selectedIO().Extent(); -} - -//================================================================ -// Function : firstIObject -// Purpose : Return the first selected object in the selected object list -//================================================================ -Handle(SALOME_InteractiveObject) GEOMBase_Helper::firstIObject() -{ - const SALOME_ListIO& aList = selectedIO(); - return aList.Extent() > 0 ? aList.First() : Handle(SALOME_InteractiveObject)(); -} - -//================================================================ -// Function : lastIObject -// Purpose : Return the last selected object in the selected object list -//================================================================ -Handle(SALOME_InteractiveObject) GEOMBase_Helper::lastIObject() -{ - const SALOME_ListIO& aList = selectedIO(); - return aList.Extent() > 0 ? aList.Last() : Handle(SALOME_InteractiveObject)(); -} - -//================================================================ -// Function : getDesktop -// Purpose : Returns myDesktop field. Initialized in constructor, usually as dynamic_cast(parentWidget()) -//================================================================ -SUIT_Desktop* GEOMBase_Helper::getDesktop() const -{ - return myDesktop; -} - diff --git a/src/GEOMBase/GEOMBase_Helper.h b/src/GEOMBase/GEOMBase_Helper.h deleted file mode 100755 index 1cf601cb4..000000000 --- a/src/GEOMBase/GEOMBase_Helper.h +++ /dev/null @@ -1,204 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2004 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.org -// -// -// -// File : GEOMBase_Helper.h -// Author : Sergey ANIKIN -// Module : GEOM -// $Header$ - -#ifndef GEOMBASE_HELPER_H -#define GEOMBASE_HELPER_H - -#include "GEOM_Displayer.h" -#include "SALOME_Prs.h" -#include "SALOME_ListIO.hxx" -#include -#include CORBA_CLIENT_HEADER(GEOM_Gen) - -#include - -#include -//#if defined WNT -//#include -//#else -//#define SALOME_WNT_EXPORT -//#endif -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define GEOMBASE_WNT_EXPORT __declspec( dllexport ) -#else -#define GEOMBASE_WNT_EXPORT -#endif -typedef std::list ObjectList; - -class SalomeApp_Study; -class SUIT_Desktop; -class SUIT_ViewWindow; -class GEOM_Operation; -class TopoDS_Shape; -class TColStd_MapOfInteger; - -//================================================================ -// Class : GEOMBase_Helper -// Description : Helper class for dialog box development, can be used as -// the second base class for dialog boxes. Contains convenient methods -// performing common operations (display/erase, selection activation, -// publication in a study, transaction management) -//================================================================ -class GEOMBASE_WNT_EXPORT GEOMBase_Helper -{ -public: - GEOMBase_Helper( SUIT_Desktop* ); - virtual ~GEOMBase_Helper(); - -protected: - static GEOM::GEOM_Gen_ptr getGeomEngine(); - - void display ( const ObjectList&, const bool = true ); - void display ( GEOM::GEOM_Object_ptr, const bool = true ); - void erase ( const ObjectList&, const bool = true ); - void erase ( GEOM::GEOM_Object_ptr, const bool = true ); - void redisplay ( const ObjectList&, const bool = true, const bool = true ); - void redisplay ( GEOM::GEOM_Object_ptr, const bool = true, const bool = true ); - - virtual void displayPreview ( const bool activate = false, - const bool update = true, - const bool toRemoveFromEngine = true, - const double lineWidth = -1 ); - // This is the easiest way to show preview. It is based on execute() method. - // It removes temporary GEOM::GEOM_Objects automatically. - - virtual void displayPreview ( GEOM::GEOM_Object_ptr obj, - const bool append = false, - const bool activate = false, - const bool update = true, - const double lineWidth = -1 ); - void displayPreview ( const SALOME_Prs* prs, - const bool append = false, - const bool = true ); - void erasePreview ( const bool = true ); - - void localSelection( const ObjectList&, const int ); - void localSelection( GEOM::GEOM_Object_ptr, const int ); - void activate( const int ); - void globalSelection( const int = GEOM_ALLOBJECTS, const bool = false ); - void globalSelection( const TColStd_MapOfInteger&, const bool = false ); - void updateViewer (); - - void prepareSelection( const ObjectList&, const int ); - void prepareSelection( GEOM::GEOM_Object_ptr, const int ); - - void addInStudy ( GEOM::GEOM_Object_ptr, const char* theName ); - - bool openCommand (); - bool abortCommand (); - bool commitCommand ( const char* = 0 ); - bool hasCommand () const; - - void updateObjBrowser() const; - int getStudyId () const; - SalomeApp_Study* getStudy () const; - bool checkViewWindow (); - - bool onAccept( const bool publish = true, const bool useTransaction = true ); - // This method should be called from "OK" button handler. - // == true means that objects returned by execute() - // should be published in a study. - - void showError(); - // Shows a message box with infromation about an error taken from getOperation()->GetErrorCode() - void showError( const QString& msg ); - // Shows a error message followed by - - GEOM::GEOM_IOperations_ptr getOperation(); - // If is nil --> calls createOperation() and put the result - // into and returns it; - // otherwise, simply returns - - inline void setPrefix( const QString& prefix ) { myPrefix = prefix; } - QString getPrefix( GEOM::GEOM_Object_ptr = GEOM::GEOM_Object::_nil() ) const; - - const SALOME_ListIO& selectedIO(); - // Function returns a list of SALOME_InteractiveObject's from - // selection manager in GUI - - int IObjectCount() ; - // Function returns the number of selected objects - - Handle(SALOME_InteractiveObject) firstIObject() ; - // Function returns the first selected object in the list - // of selected objects - - Handle(SALOME_InteractiveObject) lastIObject() ; - // Function returns the last selected object in the list - // of selected objects - - //////////////////////////////////////////////////////////////////////////// - // Virtual methods, to be redefined in dialog classes - //////////////////////////////////////////////////////////////////////////// - - virtual GEOM::GEOM_IOperations_ptr createOperation(); - // This method should be redefined in dialog boxes so as to return - // proper GEOM_IOperation interface. - // Returns nil reference by default - - virtual bool isValid( QString& msg ); - // Called by onAccept(). Redefine this method to check validity of user input in dialog boxes. - - virtual bool execute( ObjectList& objects ); - // This method is called by onAccept(). - // It should perform the required operation and put all new or modified objects into - // argument.Should return if some error occurs during its execution. - - virtual GEOM::GEOM_Object_ptr getFather( GEOM::GEOM_Object_ptr theObj ); - // This method is called by addInStudy(). It should return a father object - // for or a nil reference if should be published - // as a top-level object. - - virtual const char* getNewObjectName() const; - - void SetIsPreview(const bool thePreview) {isPreview = thePreview;} - bool IsPreview() {return isPreview;} - - GEOM_Displayer* getDisplayer(); - SUIT_Desktop* getDesktop() const; - -private: - char* getEntry ( GEOM::GEOM_Object_ptr ) const; - void clearShapeBuffer( GEOM::GEOM_Object_ptr ); - -private: - typedef std::list PrsList; - - PrsList myPreview; - GEOM_Displayer* myDisplayer; - GEOM_Operation* myCommand; - GEOM::GEOM_IOperations_var myOperation; - SUIT_ViewWindow* myViewWindow; - QString myPrefix; - bool isPreview; - SALOME_ListIO mySelected; - SUIT_Desktop* myDesktop; - -}; - -#endif diff --git a/src/GEOMBase/GEOMBase_Skeleton.cxx b/src/GEOMBase/GEOMBase_Skeleton.cxx deleted file mode 100644 index 93eeb0a90..000000000 --- a/src/GEOMBase/GEOMBase_Skeleton.cxx +++ /dev/null @@ -1,219 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOMBase_Skeleton.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header$ - -#include "GEOMBase_Skeleton.h" -#include "GeometryGUI.h" - -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include - -using namespace std; - -//================================================================================= -// class : GEOMBase_Skeleton() -// purpose : Constructs a GEOMBase_Skeleton which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -GEOMBase_Skeleton::GEOMBase_Skeleton(QWidget* parent, const char* name, bool modal, WFlags fl) - :DlgRef_Skeleton_QTD( parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu | WDestructiveClose ), - GEOMBase_Helper( dynamic_cast( parent ) ) -{ - if (!name) - setName("GEOMBase_Skeleton"); - - buttonCancel->setText(tr("GEOM_BUT_CLOSE")); - buttonOk->setText(tr("GEOM_BUT_OK")); - buttonApply->setText(tr("GEOM_BUT_APPLY")); - - GroupMedium->close(TRUE); - resize(0, 0); - - Init(); -} - - -//================================================================================= -// function : ~GEOMBase_Skeleton() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -GEOMBase_Skeleton::~GEOMBase_Skeleton() -{ - if (myGeomGUI) - myGeomGUI->SetActiveDialogBox( 0 ); -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void GEOMBase_Skeleton::Init() -{ - myGeomGUI = 0; - SalomeApp_Application* app = (SalomeApp_Application*)(SUIT_Session::session()->activeApplication()); - if (app) - { - SalomeApp_Module* module = dynamic_cast(app->loadModule("Geometry")); - if (module) - myGeomGUI = dynamic_cast(module); - } - - /* init variables */ - myGeomBase = new GEOMBase(); // SAN -- TO BE REMOVED !!! - myGeomGUI->SetActiveDialogBox(this); - - /* signals and slots connections */ - connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel())); - if (myGeomGUI) - { - connect(myGeomGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog())); - connect(myGeomGUI, SIGNAL(SignalCloseAllDialogs()), this, SLOT(ClickOnCancel())); - } - - /* Move widget on the botton right corner of main widget */ -// int x, y; -// myGeomBase->DefineDlgPosition( this, x, y ); - - /* displays Dialog */ - RadioButton1->setChecked(TRUE); - RadioButton4->hide(); - - return; -} - - -//================================================================================= -// function : ClickOnCancel() -// purpose : -//================================================================================= -void GEOMBase_Skeleton::ClickOnCancel() -{ - close(); -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void GEOMBase_Skeleton::LineEditReturnPressed() -{ - if ( !myEditCurrentArgument ) - return; - - /* User name of object input management */ - /* If successfull the selection is changed and signal emitted... */ - /* so SelectionIntoArgument() is automatically called. */ - const QString objectUserName = myEditCurrentArgument->text(); - QWidget* thisWidget = (QWidget*)this; - - if(GEOMBase::SelectionByNameInDialogs(thisWidget, objectUserName, selectedIO())) - myEditCurrentArgument->setText(objectUserName); - - return; -} - - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : -//================================================================================= -void GEOMBase_Skeleton::DeactivateActiveDialog() -{ - this->setEnabled(false); - globalSelection(); - disconnect( ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), 0, this, 0); - if (myGeomGUI) myGeomGUI->SetActiveDialogBox(0); - - return; -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void GEOMBase_Skeleton::ActivateThisDialog() -{ - /* Emit a signal to deactivate the active dialog */ - if (myGeomGUI) myGeomGUI->EmitSignalDeactivateDialog(); - this->setEnabled(true); - if (myGeomGUI) myGeomGUI->SetActiveDialogBox((QDialog*)this); - return; -} - - -//================================================================================= -// function : closeEvent() -// purpose : same than click on cancel button -//================================================================================= -void GEOMBase_Skeleton::closeEvent(QCloseEvent* e) -{ - SalomeApp_Application* app = (SalomeApp_Application*)(SUIT_Session::session()->activeApplication()); - if(app) { - disconnect( app->selectionMgr(), 0, this, 0); - app->updateActions(); - } - QDialog::closeEvent( e ); -} - -//================================================================================= -// function : initName() -// purpose : initialize the Name field with a string "thePrefix_X" (Vertex_3) -//================================================================================= -void GEOMBase_Skeleton::initName( const char* thePrefix ) -{ - if ( thePrefix ) - setPrefix( thePrefix ); - ResultName->setText( GEOMBase::GetDefaultName( getPrefix() ) ); -} - -//================================================================================= -// function : getNewObjectName() -// purpose : returns contents of Name field -//================================================================================= -const char* GEOMBase_Skeleton::getNewObjectName() const -{ - return ResultName->text(); -} - -//================================================================================= -// function : getConstructorId() -// purpose : -//================================================================================= -int GEOMBase_Skeleton::getConstructorId() const -{ - if ( GroupConstructors != NULL && GroupConstructors->selected() != NULL ) - return GroupConstructors->id( GroupConstructors->selected() ); - return -1; -} diff --git a/src/GEOMBase/GEOMBase_Skeleton.h b/src/GEOMBase/GEOMBase_Skeleton.h deleted file mode 100644 index 1d3144cc3..000000000 --- a/src/GEOMBase/GEOMBase_Skeleton.h +++ /dev/null @@ -1,87 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOMBase_Skeleton.h -// Author : Damine COQUERET -// Module : GEOM -// $Header$ - -#ifndef GEOMBASE_SKELETON_H -#define GEOMBASE_SKELETON_H - -#include "DlgRef_Skeleton_QTD.h" - -#include "GEOMBase.h" -#include "GEOMBase_Helper.h" -#include "GeometryGUI.h" - -#include -#include -#include -#include -#include -#include -#include -//#if defined WNT -//#include -//#else -//#define SALOME_WNT_EXPORT -//#endif -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define GEOMBASE_WNT_EXPORT __declspec( dllexport ) -#else -#define GEOMBASE_WNT_EXPORT -#endif - -class GEOMBASE_WNT_EXPORT GEOMBase_Skeleton : public DlgRef_Skeleton_QTD, public GEOMBase_Helper -{ - Q_OBJECT - -public: - GEOMBase_Skeleton(QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~GEOMBase_Skeleton(); -// int getConstructorId() const; // returns id of a selected "constructor" radio button or '-1' in case of error - -private : - void Init(); - -protected: - void closeEvent(QCloseEvent* e); - - void initName( const char* thePrefix = 0 ); // initialize "Name" field with a string "thePrefix_X" (Vertex_3) - virtual const char* getNewObjectName() const; // returns contents of "Name" field - int getConstructorId() const; // returns id of a selected "constructor" radio button or '-1' in case of error - - QLineEdit* myEditCurrentArgument; /* Current LineEdit */ - GEOMBase* myGeomBase; // SAN -- TO BE REMOVED !!! - GeometryGUI* myGeomGUI; /* reference GEOM GUI */ - -protected slots: - void ClickOnCancel(); - void LineEditReturnPressed(); - void DeactivateActiveDialog(); - void ActivateThisDialog(); - -}; - -#endif // GEOMBASE_SKELETON_H diff --git a/src/GEOMBase/GEOMBase_aParameterDlg.cxx b/src/GEOMBase/GEOMBase_aParameterDlg.cxx deleted file mode 100644 index 75614223b..000000000 --- a/src/GEOMBase/GEOMBase_aParameterDlg.cxx +++ /dev/null @@ -1,159 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOMBase_aParameterDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "GEOMBase_aParameterDlg.h" -#include "QtxDblSpinBox.h" - -#include - -#include -#include -#include -#include -#include -#include - -#ifndef WNT -using namespace std; -#endif - - -//====================================================================================== -// function : GEOMBase_aParameterDlg() -// purpose : Constructs a GEOMBase_aParametertDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f' -// -// avalue1 : is a float or integer used as default value in edit line -// aTitle1 : is the prompt for aValue1 -// aTitle : is the title for the user in dialog box -// -// bottom : the minimal value to be entered -// top : the maximum value to be entered -// decimals : number of decimals to be entered -// -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -// -//====================================================================================== -GEOMBase_aParameterDlg::GEOMBase_aParameterDlg(const char *aValue1, const char *aTitle1, QWidget* parent, const char* name, bool modal, WFlags fl, const double bottom, const double top, const int decimals) - :QDialog( parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) -{ - if(!name) - setName( "MyParameterDialog" ); - resize(288, 81); - setCaption(name); /* appears on the title bar */ - setSizeGripEnabled(TRUE); - - QGridLayout* topLayout = new QGridLayout(this); - topLayout->setSpacing(6); - topLayout->setMargin(11); - - QGroupBox* mainGrp = new QGroupBox(this, "mainGrp"); - mainGrp->setColumnLayout(0, Qt::Vertical); - mainGrp->layout()->setSpacing(0); - mainGrp->layout()->setMargin(0); - QGridLayout* mainGrpLayout = new QGridLayout(mainGrp->layout()); - mainGrpLayout->setAlignment(Qt::AlignTop); - mainGrpLayout ->setSpacing(6); - mainGrpLayout->setMargin(11); - topLayout->addWidget(mainGrp, 0, 0); - - /* aTitle1 : text prompt on left of edit line */ - QLabel* TextLabel1 = new QLabel(mainGrp, "TextLabel1"); - TextLabel1->setText(tr(aTitle1)); - mainGrpLayout->addWidget(TextLabel1, 0, 0); - - mySpinBox = new QtxDblSpinBox(mainGrp, "mySpinBox"); - mySpinBox->setPrecision(12); - mySpinBox->setRange(bottom, top); - ((QDoubleValidator*)(mySpinBox->validator()))->setRange(bottom, top, decimals); - mySpinBox->setValue(QString(aValue1).toDouble()); - mainGrpLayout->addWidget(mySpinBox, 0, 1); - - QGroupBox* btnGrp = new QGroupBox(this, "btnGrp"); - btnGrp->setColumnLayout(0, Qt::Vertical); - btnGrp->layout()->setSpacing(0); - btnGrp->layout()->setMargin(0); - QGridLayout* btnGrpLayout = new QGridLayout(btnGrp->layout()); - btnGrpLayout->setAlignment(Qt::AlignTop); - btnGrpLayout->setSpacing(6); - btnGrpLayout->setMargin(11); - topLayout->addWidget(btnGrp, 1, 0); - - /* Ok button */ - myButtonOk = new QPushButton(btnGrp, "buttonOk"); - myButtonOk->setText(tr("GEOM_BUT_OK")); - myButtonOk->setAutoDefault(TRUE); - myButtonOk->setDefault(TRUE); - btnGrpLayout->addWidget(myButtonOk, 0, 0); - - btnGrpLayout->addItem(new QSpacerItem(5, 5, QSizePolicy::Expanding, QSizePolicy::Minimum), 0, 1); - - /* Cancel button */ - myButtonCancel = new QPushButton(btnGrp, "buttonCancel"); - myButtonCancel->setText(tr("GEOM_BUT_CANCEL")); - myButtonCancel->setAutoDefault(TRUE); - btnGrpLayout->addWidget(myButtonCancel, 0, 2); - - /* signals and slots connections */ - connect(myButtonOk, SIGNAL(clicked()), this, SLOT(accept())); - connect(myButtonCancel, SIGNAL(clicked()), this, SLOT(reject())); - - /* Move widget on the botton right corner of main widget */ - //mzn: QAD_Tools::centerWidget(this, parent); -} - - -//====================================================================================== -// function : ~GEOMBase_aParameterDlg() destructor -// purpose : Destroys the object and frees any allocated resources -//====================================================================================== -GEOMBase_aParameterDlg::~GEOMBase_aParameterDlg() -{ - // no need to delete child widgets, Qt does it all for us -} - - -//====================================================================================== -// function : GEOMBase_aParameterDlg::setValue -// purpose : sets value -//====================================================================================== -void GEOMBase_aParameterDlg::setValue(double val) -{ - mySpinBox->setValue(val); -} - - -//====================================================================================== -// function : GEOMBase_aParameterDlg::getValue -// purpose : gets value -//====================================================================================== -double GEOMBase_aParameterDlg::getValue() -{ - return mySpinBox->value(); -} diff --git a/src/GEOMBase/GEOMBase_aParameterDlg.h b/src/GEOMBase/GEOMBase_aParameterDlg.h deleted file mode 100644 index 1e5c529b5..000000000 --- a/src/GEOMBase/GEOMBase_aParameterDlg.h +++ /dev/null @@ -1,59 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOMBase_aParameterDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef GEOMBase_aParameterDLG_H -#define GEOMBase_aParameterDLG_H - -#include - -class QPushButton; -class QtxDblSpinBox; - -//================================================================================= -// class : GEOMBase_aParameterDlg -// purpose : -//================================================================================= -class GEOMBase_aParameterDlg : public QDialog -{ - Q_OBJECT - -public: - GEOMBase_aParameterDlg(const char* aValue1 = "25", const char* aTitle1 = "Value :", QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0, const double bottom = -1E6, const double top = +1E6, const int decimals = 6); - ~GEOMBase_aParameterDlg(); - - void setValue(double val); - double getValue(); - -private: - QPushButton* myButtonOk; - QPushButton* myButtonCancel; - QtxDblSpinBox* mySpinBox; - -}; - -#endif // GEOMBase_aParameterDlg.h diff --git a/src/GEOMBase/GEOM_Operation.cxx b/src/GEOMBase/GEOM_Operation.cxx deleted file mode 100644 index 2846c8f66..000000000 --- a/src/GEOMBase/GEOM_Operation.cxx +++ /dev/null @@ -1,124 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2004 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.org -// -// -// -// File : GEOM_Operation.cxx -// Author : Sergey ANIKIN -// Module : GEOM -// $Header$ - -#include "GEOM_Operation.h" - -#include "SUIT_Application.h" -#include "SalomeApp_Tools.h" - - -//================================================================ -// Function : GEOM_Operation -// Purpose : -//================================================================ -GEOM_Operation::GEOM_Operation( SUIT_Application* app, GEOM::GEOM_IOperations_ptr oper ) -: SUIT_Operation( app ) -{ - myIOperation = GEOM::GEOM_IOperations::_narrow( oper ); -} - -//================================================================ -// Function : ~GEOM_Operation -// Purpose : -//================================================================ -GEOM_Operation::~GEOM_Operation() -{ -} - -//================================================================ -// Function : onStartOperation() -// Purpose : Opens an internal transaction in GEOM engine -//================================================================ -void GEOM_Operation::startOperation() -{ - SUIT_Operation::startOperation(); - - if ( !myIOperation->_is_nil() ) { - try { - myIOperation->StartOperation(); - } - catch( const SALOME::SALOME_Exception& e ) { - SalomeApp_Tools:: QtCatchCorbaException( e ); - } - } -} - -//================================================================ -// Function : onFinishOperation -// Purpose : Commits an internal transaction in GEOM engine -//================================================================ -void GEOM_Operation::commitOperation() -{ - SUIT_Operation::commitOperation(); - - if ( !myIOperation->_is_nil() ) { - try { - myIOperation->FinishOperation(); - } - catch( const SALOME::SALOME_Exception& e ) { - SalomeApp_Tools:: QtCatchCorbaException( e ); - } - } -} - -//================================================================ -// Function : onSuspendOperation -// Purpose : -//================================================================ -void GEOM_Operation::suspendOperation() -{ - SUIT_Operation::suspendOperation(); -} - -//================================================================ -// Function : onResumeOperation -// Purpose : -//================================================================ -void GEOM_Operation::resumeOperation() -{ - SUIT_Operation::resumeOperation(); -} - -//================================================================ -// Function : onAbortOperation -// Purpose : Aborts an internal transaction in GEOM engine -//================================================================ -void GEOM_Operation::abortOperation() -{ - SUIT_Operation::abortOperation(); - - if ( !myIOperation->_is_nil() ) { - try { - myIOperation->AbortOperation(); - } - catch( const SALOME::SALOME_Exception& e ) { - SalomeApp_Tools::QtCatchCorbaException( e ); - } - } -} - diff --git a/src/GEOMBase/GEOM_Operation.h b/src/GEOMBase/GEOM_Operation.h deleted file mode 100644 index 426de887d..000000000 --- a/src/GEOMBase/GEOM_Operation.h +++ /dev/null @@ -1,56 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2004 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.org -// -// -// -// File : GEOM_Operation.h -// Author : Sergey ANIKIN -// Module : GEOM -// $Header$ - -#ifndef GEOM_OPERATION_H -#define GEOM_OPERATION_H - -#include "SUIT_Operation.h" -#include -#include -#include CORBA_CLIENT_HEADER(GEOM_Gen) - - -class Standard_EXPORT GEOM_Operation : public SUIT_Operation -{ -public: - GEOM_Operation( SUIT_Application*, GEOM::GEOM_IOperations_ptr ); - virtual ~GEOM_Operation(); - -protected: - // Reimplemented from SUIT_Operation - virtual void startOperation(); - virtual void commitOperation(); - virtual void suspendOperation(); - virtual void resumeOperation(); - virtual void abortOperation(); - -private: - GEOM::GEOM_IOperations_var myIOperation; -}; - -#endif diff --git a/src/GEOMBase/Makefile.in b/src/GEOMBase/Makefile.in deleted file mode 100644 index c80cb2cee..000000000 --- a/src/GEOMBase/Makefile.in +++ /dev/null @@ -1,71 +0,0 @@ -# GEOM GEOMBASE : -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Author : Damien COQUERET (OCC) -# Module : GEOM -# $Header: - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -# Libraries targets -LIB = libGEOMBase.la - -# header files -EXPORT_HEADERS= GEOMBase.h \ - GEOMBase_Skeleton.h \ - GEOMBase_Helper.h \ - GEOM_Operation.h - -LIB_SRC = GEOMBase.cxx \ - GEOMBase_Skeleton.cxx \ - GEOMBase_aParameterDlg.cxx \ - GEOMBase_Helper.cxx \ - GEOM_Operation.cxx - -LIB_MOC = \ - GEOMBase_Skeleton.h \ - GEOMBase_aParameterDlg.h - -LIB_CLIENT_IDL = SALOME_Exception.idl \ - SALOMEDS.idl \ - SALOMEDS_Attributes.idl \ - SALOME_GenericObj.idl \ - GEOM_Gen.idl - -LIB_SERVER_IDL = - -# additionnal information to compil and link file - -CPPFLAGS += $(QT_INCLUDES) $(VTK_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES) $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome -CXXFLAGS += $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome - -LDFLAGS += -L$(KERNEL_ROOT_DIR)/lib/salome -L$(GUI_ROOT_DIR)/lib/salome $(CAS_LDPATH) -lDlgRef -lGEOM -lsuit -lOCCViewer -lVTKViewer -lTKPrim - -@CONCLUDE@ diff --git a/src/GEOMClient/GEOM_Client.cxx b/src/GEOMClient/GEOM_Client.cxx deleted file mode 100644 index 1bdf7482c..000000000 --- a/src/GEOMClient/GEOM_Client.cxx +++ /dev/null @@ -1,244 +0,0 @@ -// GEOM GEOMClient : tool to transfer BREP files from GEOM server to GEOM client -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOM_Client.cxx -// Author : Yves FRICAUD/Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include - -#include - -#include - -#include "GEOM_Client.hxx" -#include -#include "OpUtil.hxx" -#include "utilities.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef WNT -#include -#else -#include -#endif - -#include CORBA_SERVER_HEADER(SALOMEDS) -#include CORBA_SERVER_HEADER(GEOM_Gen) - -#define HST_CLIENT_LEN 256 - - - -//======================================================================= -// function : Load() -// purpose : -//======================================================================= -TopoDS_Shape GEOM_Client::Load( GEOM::GEOM_Gen_ptr geom, GEOM::GEOM_Object_ptr aShape ) -{ - string hst_client = GetHostname(); - - Engines::Container_var ctn_server = geom->GetContainerRef(); - long pid_server = ctn_server->getPID(); - - if ( (pid_client==pid_server) && (strcmp(hst_client.c_str(), ctn_server->getHostName())==0) ) { - TopoDS_Shape* S = (TopoDS_Shape*)(aShape->getShape()); - return(*S); - } else { - /* get sequence of bytes of resulting brep shape from GEOM server */ - TopoDS_Shape S; - SALOMEDS::TMPFile_var SeqFile = aShape->GetShapeStream(); - int sizebuf = SeqFile->length(); - char* buf; - buf = (char*) &SeqFile[0]; - istrstream streamBrep(buf,sizebuf); - BRep_Builder aBuilder; - BRepTools::Read(S, streamBrep, aBuilder); - return(S); - }; -} - - -//======================================================================= -// function : Create() -// purpose : Create in client not in a container -//======================================================================= -GEOM_Client::GEOM_Client() -{ - pid_client = -#ifdef WNT - (long)_getpid(); -#else - (long)getpid(); -#endif -} - -//======================================================================= -// function : Create() -// purpose : -//======================================================================= -GEOM_Client::GEOM_Client(Engines::Container_ptr client) -{ - pid_client = client->getPID(); -} - -//======================================================================= -// function : Find() -// purpose : -//======================================================================= -Standard_Integer GEOM_Client::Find( const TCollection_AsciiString& IOR, TopoDS_Shape& S ) -{ - for ( Standard_Integer i = 1; i<= myIORs.Length(); i++ ) { - if (myIORs.Value(i).IsEqual(IOR)) { - S = myShapes.Value(i); - return i; - } - } - return 0; -} - -//======================================================================= -// function : Find() -// purpose : -//======================================================================= -Standard_Integer GEOM_Client::Find( const TopoDS_Shape& S, TCollection_AsciiString& IOR ) -{ - for ( Standard_Integer i = 1; i<= myShapes.Length(); i++ ) { - if (myShapes.Value(i) == S) { - IOR = myIORs.Value(i); - return i; - } - } - return 0; -} - -//======================================================================= -// function : Bind() -// purpose : -//======================================================================= -void GEOM_Client::Bind( const TCollection_AsciiString& IOR, const TopoDS_Shape& S ) -{ - myIORs.Append(IOR); - myShapes.Append(S); -} - -//======================================================================= -// function : RemoveShapeFromBuffer() -// purpose : Remove shape from Client Buffer -//======================================================================= -void GEOM_Client::RemoveShapeFromBuffer( const TCollection_AsciiString& IOR) -{ - if( myIORs.IsEmpty() ) - return ; - - TopoDS_Shape S ; - Standard_Integer anIndex = Find( IOR, S ) ; - if( anIndex != 0 ) { - myIORs.Remove(anIndex) ; - myShapes.Remove(anIndex) ; - } - return ; -} - - -//======================================================================= -// function : ClearClientBuffer() -// purpose : purge buffer -//======================================================================= -void GEOM_Client::ClearClientBuffer() -{ - if( myIORs.IsEmpty() ) - return ; - myIORs.Clear() ; - myShapes.Clear() ; - return ; -} - -//======================================================================= -// function : BufferLength() -// purpose : -//======================================================================= -unsigned int GEOM_Client::BufferLength() -{ - return myIORs.Length() ; -} - - -//======================================================================= -// function : GetShape() -// purpose : -//======================================================================= - -TopoDS_Shape GEOM_Client::GetShape( GEOM::GEOM_Gen_ptr geom, GEOM::GEOM_Object_ptr aShape ) -{ - TopoDS_Shape S; - TCollection_AsciiString IOR = geom->GetStringFromIOR(aShape); - Standard_Integer anIndex = Find(IOR, S); - - if (anIndex !=0 ) return S ; - - /******* in case of a MAIN GEOM::SHAPE ********/ - if (aShape->IsMainShape()) { - S = Load(geom, aShape); - Bind(IOR, S); - return S; - } - - /******* in case of SUB GEOM::SHAPE ***********/ - // Load and Explore the Main Shape - TopoDS_Shape aMainShape = GetShape (geom, aShape->GetMainShape()); - GEOM::ListOfLong_var list = aShape->GetSubShapeIndices(); - - TopTools_IndexedMapOfShape anIndices; - TopExp::MapShapes(aMainShape, anIndices); - - /* Case of only one subshape */ - if (list->length() == 1) - { - S = anIndices.FindKey(list[0]); - } - else { - BRep_Builder B; - TopoDS_Compound aCompound; - B.MakeCompound(aCompound); - for(int i=0; ilength(); i++) { - TopoDS_Shape aSubShape = anIndices.FindKey(list[i]); - B.Add(aCompound, aSubShape); - } - - S = aCompound; - } - Bind(IOR, S); - return S; -} - diff --git a/src/GEOMClient/GEOM_Client.hxx b/src/GEOMClient/GEOM_Client.hxx deleted file mode 100644 index fd6087b93..000000000 --- a/src/GEOMClient/GEOM_Client.hxx +++ /dev/null @@ -1,110 +0,0 @@ -// GEOM GEOMClient : tool to transfer BREP files from GEOM server to GEOM client -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOM_Client.hxx -// Author : Yves FRICAUD -// Module : GEOM -// $Header$ - -#ifndef _GEOM_Client_HeaderFile -#define _GEOM_Client_HeaderFile - -#include -#include CORBA_SERVER_HEADER(GEOM_Gen) -# -#ifndef _TColStd_SequenceOfAsciiString_HeaderFile -#include -#endif -#ifndef _TopTools_SequenceOfShape_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -class TCollection_AsciiString; -class TopoDS_Shape; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define GEOMCLIENT_WNT_EXPORT __declspec( dllexport ) -#else -#define GEOMCLIENT_WNT_EXPORT -#endif - -//===================================================================== -// GEOM_Client : class definition -//===================================================================== -class GEOMCLIENT_WNT_EXPORT GEOM_Client { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - //Standard_EXPORT - GEOM_Client(); - //Standard_EXPORT - GEOM_Client(Engines::Container_ptr client); - //Standard_EXPORT - Standard_Integer Find( const TCollection_AsciiString& IOR, TopoDS_Shape& S ) ; - //Standard_EXPORT - Standard_Integer Find( const TopoDS_Shape& S, TCollection_AsciiString& IOR ) ; - //Standard_EXPORT - void Bind( const TCollection_AsciiString& IOR, const TopoDS_Shape& S ) ; - //Standard_EXPORT - TopoDS_Shape GetShape( GEOM::GEOM_Gen_ptr geom, GEOM::GEOM_Object_ptr aShape ); - //Standard_EXPORT - void RemoveShapeFromBuffer( const TCollection_AsciiString& IOR ) ; - //Standard_EXPORT - void ClearClientBuffer() ; - //Standard_EXPORT - unsigned int BufferLength() ; - TopoDS_Shape Load( GEOM::GEOM_Gen_ptr geom, GEOM::GEOM_Object_ptr aShape); - -private: - // Fields PRIVATE - // - TColStd_SequenceOfAsciiString myIORs ; - TopTools_SequenceOfShape myShapes ; - long pid_client; -}; - - -#endif diff --git a/src/GEOMClient/Makefile.in b/src/GEOMClient/Makefile.in deleted file mode 100644 index 19a402639..000000000 --- a/src/GEOMClient/Makefile.in +++ /dev/null @@ -1,62 +0,0 @@ -# GEOM GEOMClient : tool to transfer BREP files from GEOM server to GEOM client -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Author : Patrick GOLDBRONN (CEA) -# Module : GEOM -# $Header$ - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -# header files -EXPORT_HEADERS = \ - GEOM_Client.hxx - -# Libraries targets - -LIB = libGEOMClient.la -LIB_SRC = GEOM_Client.cxx -LIB_SERVER_IDL = \ - SALOME_Component.idl SALOMEDS.idl SALOME_Exception.idl SALOME_GenericObj.idl \ - GEOM_Gen.idl - -# Executables targets -BIN = -BIN_SRC = -BIN_CLIENT_IDL = -BIN_SERVER_IDL = - -# additionnal information to compil and link file -CPPFLAGS += $(OCC_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome -CXXFLAGS += $(OCC_CXXFLAGS) -I${KERNEL_ROOT_DIR}/include/salome -LDFLAGS += $(CAS_LDPATH) -lTKTopAlgo -L${KERNEL_ROOT_DIR}/lib/salome - - -@CONCLUDE@ - diff --git a/src/GEOMContext/GEOMContext.cxx b/src/GEOMContext/GEOMContext.cxx deleted file mode 100644 index fcd33c80f..000000000 --- a/src/GEOMContext/GEOMContext.cxx +++ /dev/null @@ -1,170 +0,0 @@ -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOMContext.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -using namespace std; -#include "GEOMContext.h" -#include "QAD_Tools.h" - -/* The object itself created in the static method 'GetOrCreateGEOMBase()' */ -static GEOMContext* GeomGUI = 0; - -//======================================================================= -// function : GEOMContext() -// purpose : Constructor -//======================================================================= -GEOMContext::GEOMContext() : - QObject() -{ -} - - -//======================================================================= -// function : ~GEOMContext() -// purpose : Destructor -//======================================================================= -GEOMContext::~GEOMContext() -{ -} - - -//======================================================================= -// function : GetGEOMContext() static -// purpose : Returns current 'GeomGUI' a static pointer -//======================================================================= -GEOMContext* GEOMContext::GetGeomGUI() -{ - return GeomGUI; -} - - -//======================================================================= -// function : GetOrCreateGEOMBase() -// purpose : Gets or create an object 'GEOMBase' with initialisations -// : Returns 'GeomGUI' as a pointer -//======================================================================= -GEOMContext* GEOMContext::GetOrCreateGeomGUI(QAD_Desktop* desktop) -{ - if(GeomGUI == 0) { - GeomGUI = new GEOMContext(); - Engines::Component_var comp = desktop->getEngine("FactoryServer", "GEOM"); - GeomGUI->myComponentGeom = GEOM::GEOM_Gen::_narrow(comp); - - GeomGUI->myState = -1; - GeomGUI->myActiveDialogBox = 0; - GeomGUI->myFatherior = ""; - GeomGUI->myGUILibrary = OSD_SharedLibrary(); - - /* GetCurrentStudy */ - int studyId = desktop->getActiveStudy()->getStudyId(); - GeomGUI->myComponentGeom->GetCurrentStudy(studyId); - - GeomGUI->myNbGeom = GeomGUI->myComponentGeom->NbLabels(); - } - - /* GetCurrentStudy */ - int studyId = desktop->getActiveStudy()->getStudyId(); - GeomGUI->myComponentGeom->GetCurrentStudy(studyId); - - GeomGUI->myNbGeom = GeomGUI->myComponentGeom->NbLabels(); - - return GeomGUI; -} - - -//======================================================================= -// function : LoadLibrary() -// purpose : -//======================================================================= -bool GEOMContext::LoadLibrary(QString GUILibrary) -{ - QCString libs; - QFileInfo fileInfo; - QString GUILib, fileString, dir; - - if(libs = getenv("LD_LIBRARY_PATH")) { - QStringList dirList = QStringList::split(":", libs, false); // skip empty entries - for(int i = dirList.count()-1; i >= 0; i--) { - dir = dirList[i]; - fileString = QAD_Tools::addSlash(dir) + GUILibrary; - fileInfo.setFile(fileString); - if(fileInfo.exists()) { - GUILib = fileInfo.fileName(); - break; - } - } - } - - myGUILibrary.SetName(TCollection_AsciiString((char*)GUILib.latin1()).ToCString()); - bool res = myGUILibrary.DlOpen(OSD_RTLD_LAZY); - if(!res) - cout<<"Can't open library : "< -#include - -//================================================================================= -// class : GEOMContext -// purpose : -//================================================================================= -class GEOMContext : public QObject -{ - Q_OBJECT /* for QT compatibility */ - -public : - GEOMContext(); - ~GEOMContext(); - -private : - QDialog* myActiveDialogBox; /* Unique active dialog box */ - GEOM_Client myShapeReader; - Standard_CString myFatherior; - -public : - int myNbGeom; /* Unique name for a geom entity */ - - static GEOMContext* GetOrCreateGeomGUI(QAD_Desktop* desktop); - static GEOMContext* GetGeomGUI(); - - OSD_SharedLibrary myGUILibrary; - GEOM::GEOM_Gen_var myComponentGeom; - int myState; /* Identify a method */ - - /* Returns the active DialogBox */ - QDialog* GetActiveDialogBox(){return myActiveDialogBox ;}; - int& GetNbGeom(){return myNbGeom;}; - GEOM_Client& GetShapeReader(){return myShapeReader;}; - Standard_CString& GetFatherior(){return myFatherior;}; - - bool LoadLibrary(QString GUILibrary); - - /* Sets 'myActiveDialogBox' a pointer to the active Dialog Box */ - void SetActiveDialogBox(QDialog* aDlg); - - /* Non modal dialog boxes magement */ - void EmitSignalDeactivateDialog(); - void EmitSignalCloseAllDialogs(); - void EmitSignalDefaultStepValueChanged(double newVal); - -signals : - void SignalDeactivateActiveDialog(); - void SignalCloseAllDialogs(); - void SignalDefaultStepValueChanged(double newVal); - -}; - -#endif - diff --git a/src/GEOMContext/GEOM_icons.po b/src/GEOMContext/GEOM_icons.po deleted file mode 100644 index ed64a379c..000000000 --- a/src/GEOMContext/GEOM_icons.po +++ /dev/null @@ -1,362 +0,0 @@ -# This is a Qt message file in .po format. Each msgid starts with -# a scope. This scope should *NOT* be translated - eg. translating -# from French to English, "Foo::Bar" would be translated to "Pub", -# not "Foo::Pub". -msgid "" -msgstr "" -"Project-Id-Version: PROJECT VERSION\n" -"POT-Creation-Date: 2001-06-14 09:11:49 PM CEST\n" -"PO-Revision-Date: 2003-09-22 16:39+0200\n" -"Last-Translator: FULLNAME \n" -"Content-Type: text/plain; charset=iso-8859-1\n" - -#Select -msgid "ICON_SELECT" -msgstr "select1.png" - -#: QAD_ObjectBrowser.cxx:140 -msgid "ICON_OBJBROWSER_Geometry" -msgstr "geometry.png" - -#: QAD_ObjectBrowser.cxx:140 -msgid "ICON_OBJBROWSER_COMPOUND" -msgstr "tree_compound.png" - -#: QAD_ObjectBrowser.cxx:140 -msgid "ICON_OBJBROWSER_COMPSOLID" -msgstr "tree_compsolid.png" - -#: QAD_ObjectBrowser.cxx:140 -msgid "ICON_OBJBROWSER_EDGE" -msgstr "tree_edge.png" - -#: QAD_ObjectBrowser.cxx:140 -msgid "ICON_OBJBROWSER_FACE" -msgstr "tree_face.png" - -#: QAD_ObjectBrowser.cxx:140 -msgid "ICON_OBJBROWSER_SHAPE" -msgstr "tree_shape.png" - -#: QAD_ObjectBrowser.cxx:140 -msgid "ICON_OBJBROWSER_SHELL" -msgstr "tree_shell.png" - -#: QAD_ObjectBrowser.cxx:140 -msgid "ICON_OBJBROWSER_SOLID" -msgstr "tree_solid.png" - -#: QAD_ObjectBrowser.cxx:140 -msgid "ICON_OBJBROWSER_VERTEX" -msgstr "tree_vertex.png" - -#: QAD_ObjectBrowser.cxx:140 -msgid "ICON_OBJBROWSER_WIRE" -msgstr "tree_wire.png" - -#BoxDlg -msgid "ICON_DLG_BOX_2P" -msgstr "box2points.png" - -#BoxDlg -msgid "ICON_DLG_BOX_DXYZ" -msgstr "boxdxyz.png" - -#CylinderDlg -msgid "ICON_DLG_CYLINDER_PV" -msgstr "cylinderpointvector.png" - -#CylinderDlg -msgid "ICON_DLG_CYLINDER_DXYZ" -msgstr "cylinderdxyz.png" - -#SphereDlg -msgid "ICON_DLG_SPHERE_P" -msgstr "spherepoint.png" - -#SphereDlg -msgid "ICON_DLG_SPHERE_DXYZ" -msgstr "spheredxyz.png" - -#torusDlg -msgid "ICON_DLG_TORUS_PV" -msgstr "toruspointvector.png" - -#ConeDlg -msgid "ICON_DLG_CONE_PV" -msgstr "conepointvector.png" - -#torusDlg -msgid "ICON_DLG_TORUS_DXYZ" -msgstr "torusdxyz.png" - -#ConeDlg -msgid "ICON_DLG_CONE_DXYZ" -msgstr "conedxyz.png" - -#LineDlg -msgid "ICON_DLG_LINE_2P" -msgstr "line2points.png" - -#LineDlg -msgid "ICON_DLG_LINE_EDGE" -msgstr "lineedge.png" - -#LineDlg -msgid "ICON_DLG_LINE_PV" -msgstr "linepointvector.png" - -#CircleDlg -msgid "ICON_DLG_CIRCLE_PV" -msgstr "circlepointvector.png" - -#VectorDlg -msgid "ICON_DLG_VECTOR_2P" -msgstr "vector2points.png" - -#vectorDlg -msgid "ICON_DLG_VECTOR_DXYZ" -msgstr "vectordxyz.png" - -#PlaneDlg -msgid "ICON_DLG_PLANE_DXYZ" -msgstr "planedxyz.png" - -#PlaneDlg -msgid "ICON_DLG_PLANE_FACE" -msgstr "planeface.png" - -#PlaneDlg -msgid "ICON_DLG_PLANE_PV" -msgstr "planepointvector.png" - -#WorkingPlaneDlg -msgid "ICON_DLG_WPLANE_FACE" -msgstr "planeworkingface.png" - -#PointDlg -msgid "ICON_DLG_POINT" -msgstr "point2.png" - -#PoinDlg -msgid "ICON_DLG_POINT_EDGE" -msgstr "pointonedge.png" - -#ArcDlg -msgid "ICON_DLG_ARC" -msgstr "arc.png" - -#ArchimedeDlg -msgid "ICON_DLG_ARCHIMEDE" -msgstr "archimede.png" - -#PartitionDlg -msgid "ICON_DLG_PARTITION" -msgstr "partition.png" - -#PartitionDlg -msgid "ICON_DLG_PARTITION_KEEP_FACES" -msgstr "partitionkeep.png" - -#CenterMassDlg -msgid "ICON_DLG_CENTERMASS" -msgstr "centergravity.png" - -#BoundingBoxDlg -msgid "ICON_DLG_BOUNDING_BOX" -msgstr "bounding.png" - -#CommonDlg -msgid "ICON_DLG_COMMON" -msgstr "common.png" - -#CompoundDlg -msgid "ICON_DLG_BUILD_COMPOUND" -msgstr "build_compound.png" - -#CutDlg -msgid "ICON_DLG_CUT" -msgstr "cut.png" - -#EdgeDlg -msgid "ICON_DLG_BUILD_EDGE" -msgstr "build_edge.png" - -#FaceDlg -msgid "ICON_DLG_BUILD_FACE" -msgstr "build_face.png" - -#ShellDlg -msgid "ICON_DLG_BUILD_SHELL" -msgstr "build_shell.png" - -#SolidDlg -msgid "ICON_DLG_BUILD_SOLID" -msgstr "build_solid.png" - -#WireDlg -msgid "ICON_DLG_BUILD_WIRE" -msgstr "build_wire.png" - -#FillingDlg -msgid "ICON_DLG_FILLING" -msgstr "filling.png" - -#FuseDlg -msgid "ICON_DLG_FUSE" -msgstr "fuse.png" - -#InertiaDlg -msgid "ICON_DLG_INERTIA" -msgstr "axisinertia.png" - -#ToleranceDlg -msgid "ICON_DLG_TOLERANCE" -msgstr "tolerance.png" - -#BasicPropertiesDlg -msgid "ICON_DLG_BASICPROPERTIES" -msgstr "basicproperties.png" - -#WhatisDlg -msgid "ICON_DLG_WHATIS" -msgstr "whatis.png" - -#MinDistDlg -msgid "ICON_DLG_MINDIST" -msgstr "mindist.png" - -#MirrorDlg -msgid "ICON_DLG_MIRROR" -msgstr "mirrorPlane.png" - -#TranslationDlg -msgid "ICON_DLG_TRANSLATION" -msgstr "translation.png" - -#RotationDlg -msgid "ICON_DLG_ROTATION" -msgstr "rotate.png" - -#ScaleDlg -msgid "ICON_DLG_SCALE" -msgstr "scale.png" - -#OrientationDlg -msgid "ICON_DLG_ORIENTATION" -msgstr "orientation.png" - -#SewingDlg -msgid "ICON_DLG_SEWING" -msgstr "sewing.png" - -#PipeDlg -msgid "ICON_DLG_PIPE" -msgstr "pipe.png" - -#PrismDlg -msgid "ICON_DLG_PRISM" -msgstr "prism.png" - -#RevolutionDlg -msgid "ICON_DLG_REVOL" -msgstr "revol.png" - -#SectionDlg -msgid "ICON_DLG_SECTION" -msgstr "section.png" - -#SubShapeDlg -msgid "ICON_DLG_SUBSHAPE" -msgstr "subshape.png" - -#FilletDlg -msgid "ICON_DLG_FILLET" -msgstr "fillet.png" - -#ChamferDlg -msgid "ICON_DLG_CHAMFER" -msgstr "chamfer.png" - -#FilletDlg -msgid "ICON_DLG_FILLET_ALL" -msgstr "filletall.png" - -#ChamferDlg -msgid "ICON_DLG_CHAMFER_ALL" -msgstr "chamferall.png" - -#FilletDlg -msgid "ICON_DLG_FILLET_EDGE" -msgstr "filletedge.png" - -#ChamferDlg -msgid "ICON_DLG_CHAMFER_EDGE" -msgstr "chamferedge.png" - -#FilletDlg -msgid "ICON_DLG_FILLET_FACE" -msgstr "filletface.png" - -#ChamferDlg -msgid "ICON_DLG_CHAMFER_FACE" -msgstr "chamferface.png" - -#ChamferDlg -msgid "ICON_DLG_CHECKSHAPE" -msgstr "check.png" - -#SupressFaceDlg -msgid "ICON_DLG_SUPRESS_FACE" -msgstr "supressface.png" - -#SupressHoleDlg -msgid "ICON_DLG_SUPRESS_HOLE" -msgstr "supresshole.png" - -#SupressHoleDlg -msgid "ICON_DLG_SUPRESS_HOLE_FACE_SHELL" -msgstr "supressHolesOnFaceShell.png" - -#MultiTranslationDlg -msgid "ICON_DLG_MULTITRANSLATION_SIMPLE" -msgstr "multitranslationsimple.png" - -#MultiTranslationDlg -msgid "ICON_DLG_MULTITRANSLATION" -msgstr "multitranslation.png" - -#MultiTranslationDlg -msgid "ICON_DLG_MULTITRANSLATION_DOUBLE" -msgstr "multitranslationdouble.png" - -#MultiRotationDlg -msgid "ICON_DLG_MULTIROTATION_SIMPLE" -msgstr "multirotationsimple.png" - -#MultiRotationDlg -msgid "ICON_DLG_MULTIROTATION" -msgstr "multirotation.png" - -#MultiRotationDlg -msgid "ICON_DLG_MULTIROTATION_DOUBLE" -msgstr "multirotationdouble.png" - -#EllipseDlg -msgid "ICON_DLG_ELLIPSE_PV" -msgstr "ellipsepointvector.png" - -#SplineDlg -msgid "ICON_DLG_SPLINE" -msgstr "spline.png" - -#SplineDlg -msgid "ICON_DLG_BEZIER" -msgstr "bezier.png" - -#SplineDlg -msgid "ICON_DLG_INTERPOL" -msgstr "interpol.png" - - - diff --git a/src/GEOMContext/GEOM_msg_en.po b/src/GEOMContext/GEOM_msg_en.po deleted file mode 100644 index 5d07378e1..000000000 --- a/src/GEOMContext/GEOM_msg_en.po +++ /dev/null @@ -1,1316 +0,0 @@ -# This is a Qt message file in .po format. Each msgid starts with -# a scope. This scope should *NOT* be translated - eg. translating -# from French to English, "Foo::Bar" would be translated to "Pub", -# not "Foo::Pub". -msgid "" -msgstr "" -"Project-Id-Version: PROJECT VERSION\n" -"POT-Creation-Date: 2002-03-19 09:35:48 AM CET\n" -"PO-Revision-Date: 2003-10-27 17:32+0100\n" -"Last-Translator: FULLNAME \n" -"Content-Type: text/plain; charset=iso-8859-1\n" - -# -#============================================================================== -# - -#Button Apply -msgid "GEOM_BUT_APPLY" -msgstr "&Apply" - -#Button Close -msgid "GEOM_BUT_CLOSE" -msgstr "&Close" - -#Button Cancel -msgid "GEOM_BUT_CANCEL" -msgstr "&Cancel" - -#Button Ok -msgid "GEOM_BUT_OK" -msgstr "&Ok" - -#Button Yes -msgid "GEOM_BUT_YES" -msgstr "&Yes" - -#Button No -msgid "GEOM_BUT_NO" -msgstr "&No" - -#Button Help -msgid "GEOM_BUT_HELP" -msgstr "&Help" - -#Button Explode -msgid "GEOM_BUT_EXPLODE" -msgstr "&Explode" - - -# -#============================================================================== -# - -#: GeometryGUI.cxx:563 -msgid "GEOM_INF_LOADED" -msgstr "File %1 loaded." - -# -#============================================================================== -# - -#: GeometryGUI.cxx:3069 -msgid "GEOM_PRP_COMMAND" -msgstr "No command associated with this id = %1." - -#: GeometryGUI.cxx:4977 -msgid "GEOM_PRP_ABORT" -msgstr "Operation aborted" - -#: GeometryGUI.cxx:5058 -msgid "GEOM_PRP_DONE" -msgstr "Operation done" - -#: GeometryGUI.cxx:3717 -msgid "GEOM_PRP_LOADING" -msgstr "Loading %1 ..." - -#: GeometryGUI.cxx:1412 -msgid "GEOM_PRP_NULLSHAPE" -msgstr "Error, null or inappropriate shape !" - -#: GeometryGUI.cxx:5072 -msgid "GEOM_PRP_READY" -msgstr "Ready" - -#: GeometryGUI.cxx:1690 -msgid "GEOM_PRP_SELECT_SUBSHAPES" -msgstr "Select Sub Shapes" - -msgid "GEOM_CONFIRM" -msgstr "Confirm operation" - -msgid "GEOM_CONFIRM_INFO" -msgstr "Shape contains %1 sub shapes !" - - -msgid "GEOM_PRP_NOT_FOR_VTK_VIEWER" -msgstr "Not allowed in VTK viewer" - -#: GeometryGUI.cxx:1690 -msgid "GEOM_PRP_SHAPE_IN_STUDY" -msgstr "Main shape must be in the study before" - -#: GeometryGUI.cxx:1690 -msgid "GEOM_PRP_SELECT_EDGE" -msgstr "Select edges and click on Apply" - -#: GeometryGUI.cxx:1690 -msgid "GEOM_PRP_SELECT_FACE" -msgstr "Select faces to suppress and click on Ok/Apply" - -#: GeometryGUI.cxx:1690 -msgid "GEOM_PRP_SELECT_FIRST" -msgstr "Select main shape first" - -#: GeometryGUI.cxx:1690 -msgid "GEOM_PRP_MIN_DIST" -msgstr "Min Distance not computed" - -# -#============================================================================== -# - -#: GeometryGUI.cxx:3698 -msgid "GEOM_MEN_ALL_FILES" -msgstr "All Files ( * )" - -#: GeometryGUI.cxx:4389 -msgid "GEOM_MEN_ANGLE" -msgstr "Angle :" - -#: GeometryGUI.cxx:3941 -msgid "GEOM_MEN_COMPONENT" -msgstr "Geometry" - -#: GeometryGUI.cxx:4389 -msgid "GEOM_MEN_ENTER_ANGLE" -msgstr "Enter An Angle In Degrees" - -#: GeometryGUI.cxx:3758 -msgid "GEOM_MEN_EXPORT" -msgstr "Export" - -#: GeometryGUI.cxx:3648 -msgid "GEOM_MEN_IMPORT" -msgstr "Import" - -#: GeometryGUI.cxx:3761 -msgid "GEOM_MEN_IMPORT_BREP" -msgstr "BREP Files ( *.brep )" - -#: GeometryGUI.cxx:3762 -msgid "GEOM_MEN_IMPORT_IGES" -msgstr "IGES Files ( *.iges *.igs )" - -#: GeometryGUI.cxx:3763 -msgid "GEOM_MEN_IMPORT_STEP" -msgstr "STEP Files ( *.step *.stp )" - -#: GeometryGUI.cxx:3763 -msgid "GEOM_MEN_LOAD_SCRIPT" -msgstr "PYTHON Files ( *.py )" - -#: GeometryGUI.cxx:2931 -msgid "GEOM_MEN_ISOS" -msgstr "Select Number Of Isos" - -#: GeometryGUI.cxx:4278 -msgid "GEOM_MEN_POPUP_NAME" -msgstr "%1 Objects" - -#: GeometryGUI.cxx:4414 -msgid "GEOM_MEN_SKETCHER_X" -msgstr "Enter a length to set X" - -#: GeometryGUI.cxx:4438 -msgid "GEOM_MEN_SKETCHER_Y" -msgstr "Enter a length to set Y" - -#: GeometryGUI.cxx:2898 -msgid "GEOM_MEN_TRANSPARENCY" -msgstr "Transparency" - -#: GeometryGUI.cxx:4413 -msgid "GEOM_MEN_X" -msgstr "X :" - -#: GeometryGUI.cxx:4437 -msgid "GEOM_MEN_Y" -msgstr "Y :" - -#: GeometryGUI_NbIsosDlg.cxx:36 -msgid "GEOM_MEN_ISOU" -msgstr "Isos u :" - -#: GeometryGUI_NbIsosDlg.cxx:53 -msgid "GEOM_MEN_ISOV" -msgstr "Isos v :" - -#: GeometryGUI_TransparencyDlg.cxx:31 -msgid "GEOM_MEN_TRANSPARENCY_LABEL" -msgstr "Transparency :" - -msgid "GEOM_MEN_STEP_LABEL" -msgstr "Step :" - - -msgid "GEOM_IDENTICAL_NAMES_SELECT_BY_MOUSE" -msgstr "Identical names : select by mouse !" - -msgid "GEOM_NAME_INCORRECT" -msgstr "Object name not found" - -# -#============================================================================== -# - -#: GeometryGUI.cxx:892 -msgid "GEOM_WRN_RADIUS_NULL" -msgstr "Radius is null" - -#: GeometryGUI.cxx:3854 -msgid "GEOM_WRN_WARNING" -msgstr "Warning" - -#: GeometryGUI.cxx:3854 -msgid "GEOM_REALLY_DELETE" -msgstr "Do you really want to delete object(s) ?" - -# -#============================================================================== -# - -#Object -msgid "GEOM_OBJECT" -msgstr "Object" - -#Main object -msgid "GEOM_MAIN_OBJECT" -msgstr "Main Object" - -#Tool object -msgid "GEOM_TOOL_OBJECT" -msgstr "Tool Object" - -#Base Object -msgid "GEOM_BASE_OBJECT" -msgstr "Base Object" - -#Path Object -msgid "GEOM_PATH_OBJECT" -msgstr "Path Object" - -#Objects -msgid "GEOM_OBJECTS" -msgstr "Objects" - -#Object i -msgid "GEOM_OBJECT_I" -msgstr "Object %1" - -#Object and result -msgid "GEOM_OBJECT_RESULT" -msgstr "Object And Result" - -#Point -msgid "GEOM_POINT" -msgstr "Point" - -#Base point -msgid "GEOM_BASE_POINT" -msgstr "Base Point" - -#Center Point -msgid "GEOM_CENTER_POINT" -msgstr "Center Point" - -#Diagonal Points -msgid "GEOM_DIAGONAL_POINTS" -msgstr "Diagonal Points" - -#Central Point -msgid "GEOM_CENTRAL_POINT" -msgstr "Central Point" - -#Points -msgid "GEOM_POINTS" -msgstr "Points" - -#Point i -msgid "GEOM_POINT_I" -msgstr "Point %1" - -#Arguments -msgid "GEOM_ARGUMENTS" -msgstr "Arguments" - -#Center -msgid "GEOM_CENTER" -msgstr "Center" - -#Radius -msgid "GEOM_RADIUS" -msgstr "Radius :" - -#Radius i -msgid "GEOM_RADIUS_I" -msgstr "Radius %1 :" - -#Height -msgid "GEOM_HEIGHT" -msgstr "Height :" - -#Length -msgid "GEOM_LENGTH" -msgstr "Length is :" - -#Weight -msgid "GEOM_WEIGHT" -msgstr "Weight :" - -#Coordinates -msgid "GEOM_COORDINATES" -msgstr "Coordinates" - -#Coor. -msgid "GEOM_COOR" -msgstr "Coord. :" - -#Reverse -msgid "GEOM_REVERSE" -msgstr "Reverse" - -#Reverse U -msgid "GEOM_REVERSE_U" -msgstr "Reverse U" - -#Reverse V -msgid "GEOM_REVERSE_V" -msgstr "Reverse V" - -#Angle -msgid "GEOM_ANGLE" -msgstr "Angle :" - -#Axis -msgid "GEOM_AXIS" -msgstr "Axis" - -#Matrix -msgid "GEOM_MATRIX" -msgstr "Matrix :" - -#Vector Length -msgid "GEOM_VECTOR_LENGTH" -msgstr "Vector Length :" - -#Reverse Vector -msgid "GEOM_REVERSE_VECTOR" -msgstr "Reverse Vector" - -#Plane Mirror -msgid "GEOM_PLANE_MIRROR" -msgstr "Plane Mirror" - -#Face Selection -msgid "GEOM_FACE_SELECTION" -msgstr "Face Selection" - -#Base -msgid "GEOM_BASE" -msgstr "Base" - -#Water Density -msgid "GEOM_WATER_DENSITY" -msgstr "Water Density :" - -#Meshing Deflection -msgid "GEOM_MESHING_DEFLECTION" -msgstr "Meshing Deflect. :" - -#Dimensions -msgid "GEOM_DIMENSIONS" -msgstr "Dimensions" - -#Precision -msgid "GEOM_PRECISION" -msgstr "Precision :" - -#Selection -msgid "GEOM_SELECTION" -msgstr "Selection" - -#Nb. Times -msgid "GEOM_NB_TIMES" -msgstr "Nb. Times :" - -#Nb. Times U -msgid "GEOM_NB_TIMES_U" -msgstr "Nb. Times U :" - -#Nb. Times V -msgid "GEOM_NB_TIMES_V" -msgstr "Nb. Times V :" - -#Step -msgid "GEOM_STEP" -msgstr "Step :" - -#Step V -msgid "GEOM_STEP_V" -msgstr "Step V :" - -#Step U -msgid "GEOM_STEP_U" -msgstr "Step U :" - -# -#============================================================================== -# - -#Partition -msgid "GEOM_PARTITION" -msgstr "Partition" - -#Tolerance -msgid "GEOM_TOLERANCE" -msgstr "Tolerance" - -#Orientation -msgid "GEOM_ORIENTATION" -msgstr "Orientation" - -#Pipe -msgid "GEOM_PIPE" -msgstr "Pipe" - -#Revolution -msgid "GEOM_REVOLUTION" -msgstr "Revolution" - -#Rotation -msgid "GEOM_ROTATION" -msgstr "Rotation" - -#Archimede -msgid "GEOM_ARCHIMEDE" -msgstr "Archimede" - -#Common -msgid "GEOM_COMMON" -msgstr "Common" - -#Cut -msgid "GEOM_CUT" -msgstr "Cut" - -#Distance -msgid "GEOM_DISTANCE" -msgstr "Distance" - -#Filling -msgid "GEOM_FILLING" -msgstr "Filling" - -#Fuse -msgid "GEOM_FUSE" -msgstr "Fuse" - -#Scale -msgid "GEOM_SCALE" -msgstr "Scale" - -#Section -msgid "GEOM_SECTION" -msgstr "Section" - -#Sewing -msgid "GEOM_SEWING" -msgstr "Sewing" - -#Translation -msgid "GEOM_TRANSLATION" -msgstr "Translation" - -#Working Plane -msgid "GEOM_WPLANE" -msgstr "Working Plane" - -#Mirror -msgid "GEOM_MIRROR" -msgstr "Mirror" - -#Prism -msgid "GEOM_PRISM" -msgstr "Prism" - -#Sub Shapes -msgid "GEOM_SUB_SHAPE" -msgstr "Sub Shapes" - -#Supress Face -msgid "GEOM_SUPRESSFACE" -msgstr "Supress Face" - -#Fillet -msgid "GEOM_FILLET" -msgstr "Fillet" - -#Chamfer -msgid "GEOM_CHAMFER" -msgstr "Chamfer" - -#Check Shape -msgid "GEOM_CHECK_SHAPE" -msgstr "Check Shape" - -#Whatis -msgid "GEOM_WHATIS" -msgstr "Whatis" - -#Bounding Box -msgid "GEOM_BNDBOX" -msgstr "Bounding Box" - -#Center Of Mass -msgid "GEOM_CMASS" -msgstr "Center Of Mass" - -#Basic Properties -msgid "GEOM_PROPERTIES" -msgstr "Basic Properties" - -#Multi-Translation -msgid "GEOM_MULTITRANSLATION" -msgstr "Multi-Translation" - -#Multi-Rotation -msgid "GEOM_MULTIROTATION" -msgstr "Multi-Rotation" - -# -#============================================================================== -# - -#Arc -msgid "GEOM_ARC" -msgstr "Arc" - -#Box -msgid "GEOM_BOX" -msgstr "Box" - -#Circle -msgid "GEOM_CIRCLE" -msgstr "Circle" - -#Ellipse -msgid "GEOM_ELLIPSE" -msgstr "Ellipse" - -msgid "GEOM_ELLIPSE_TITLE" -msgstr "Ellipse Construction" - -#Radius major -msgid "GEOM_RADIUS_MAJOR" -msgstr "Major radius :" - -#Radius minor -msgid "GEOM_RADIUS_MINOR" -msgstr "Minor radius :" - -#Compound -msgid "GEOM_COMPOUND" -msgstr "Compound" - -#CompSolid -msgid "GEOM_COMPOUNDSOLID" -msgstr "CompSolid" - -#Cone -msgid "GEOM_CONE" -msgstr "Cone" - -#Cylinder -msgid "GEOM_CYLINDER" -msgstr "Cylinder" - -#Edge -msgid "GEOM_EDGE" -msgstr "Edge" - -#Face -msgid "GEOM_FACE" -msgstr "Face" - -#Faces -msgid "GEOM_FACES" -msgstr "Faces" - -#Line -msgid "GEOM_LINE" -msgstr "Line" - -#Plane -msgid "GEOM_PLANE" -msgstr "Plane" - -#Shape -msgid "GEOM_SHAPE" -msgstr "Shape" - -#Shell -msgid "GEOM_SHELL" -msgstr "Shell" - -#Solid -msgid "GEOM_SOLID" -msgstr "Solid" - -#Sphere -msgid "GEOM_SPHERE" -msgstr "Sphere" - -#Conical Face -msgid "GEOM_SURFCONE" -msgstr "Conical Face" - -#Cylindrical Face -msgid "GEOM_SURFCYLINDER" -msgstr "Cylindrical Face" - -#Spherical Face -msgid "GEOM_SURFSPHERE" -msgstr "Spherical Face" - -#Toroidal Face -msgid "GEOM_SURFTORUS" -msgstr "Toroidal Face" - -#Torus -msgid "GEOM_TORUS" -msgstr "Torus" - -#Vector -msgid "GEOM_VECTOR" -msgstr "Vector" - -#Vector U -msgid "GEOM_VECTOR_U" -msgstr "Vector U" - -#Vector V -msgid "GEOM_VECTOR_V" -msgstr "Vector V" - -#Vertex -msgid "GEOM_VERTEX" -msgstr "Vertex" - -#Wire -msgid "GEOM_WIRE" -msgstr "Wire" - -#Wire(s) -msgid "GEOM_WIRES" -msgstr "Wire(s)" - -#Parameter -msgid "GEOM_PARAMETER" -msgstr "Parameter :" - -# -#============================================================================== -# - -#Min -msgid "GEOM_MIN" -msgstr "Min :" - -#Max -msgid "GEOM_MAX" -msgstr "Max :" - -#X -msgid "GEOM_X" -msgstr "X :" - -#Y -msgid "GEOM_Y" -msgstr "Y :" - -#Z -msgid "GEOM_Z" -msgstr "Z :" - -#DX -msgid "GEOM_DX" -msgstr "Dx :" - -#DY -msgid "GEOM_DY" -msgstr "Dy :" - -#DZ -msgid "GEOM_DZ" -msgstr "Dz :" - -#D1 -msgid "GEOM_D1" -msgstr "D1 :" - -#D2 -msgid "GEOM_D2" -msgstr "D2 :" - -# -#============================================================================== -# - -#: GeometryGUI.cxx -msgid "GEOM_STEP_TITLE" -msgstr "Step value for GUI constructions" - -#: GeometryGUI_ArcDlg.cxx:45 -msgid "GEOM_ARC_TITLE" -msgstr "Arc Construction" - -#: GeometryGUI_ArchimedeDlg.cxx:55 -msgid "GEOM_ARCHIMEDE_TITLE" -msgstr "Archimede Construction" - -#: GeometryGUI_BndBoxDlg.cxx:59 -msgid "GEOM_BNDBOX_TITLE" -msgstr "Bounding Box Informations" - -#: GeometryGUI_BndBoxDlg.cxx:82 -msgid "GEOM_BNDBOX_OBJDIM" -msgstr "Object And Its Dimensions" - -#: GeometryGUI_BoxDlg.cxx:50 -msgid "GEOM_BOX_TITLE" -msgstr "Box Construction" - -#: GeometryGUI_BoxDlg.cxx:50 -msgid "GEOM_BOX_OBJ" -msgstr "Dimensions At Origin" - -#: GeometryGUI_ChamferDlg.cxx:58 -msgid "GEOM_CHAMFER_TITLE" -msgstr "Chamfer Construction" - -#: GeometryGUI_ChamferDlg.cxx:58 -msgid "GEOM_CHAMFER_ALL" -msgstr "Chamfer On Whole Shape" - -#: GeometryGUI_ChamferDlg.cxx:58 -msgid "GEOM_CHAMFER_EDGES" -msgstr "Chamfer On Edges From Shape" - -#: GeometryGUI_ChamferDlg.cxx:58 -msgid "GEOM_CHAMFER_FACES" -msgstr "Chamfer On Faces From Shape" - -#: GeometryGUI_CircleDlg.cxx:48 -msgid "GEOM_CIRCLE_TITLE" -msgstr "Circle Construction" - -#: GeometryGUI_CenterMassDlg.cxx:77 -msgid "GEOM_CMASS_TITLE" -msgstr "Center Of Mass Construction" - -msgid "GEOM_PLANE_SIZE" -msgstr "Size of plane :" - -#: GeometryGUI_CommonDlg.cxx:47 -msgid "GEOM_COMMON_TITLE" -msgstr "BOOLEAN : Common Of Two Objects" - -#: GeometryGUI_CompoundDlg.cxx:44 -msgid "GEOM_COMPOUND_TITLE" -msgstr "Create A Compound" - -#: GeometryGUI_ConeDlg.cxx:49 -msgid "GEOM_CONE_TITLE" -msgstr "Cone Construction" - -#: GeometryGUI_CutDlg.cxx:48 -msgid "GEOM_CUT_TITLE" -msgstr "BOOLEAN : Cut Of Two Objects" -# -#: GeometryGUI_CylinderDlg.cxx:47 -msgid "GEOM_CYLINDER_TITLE" -msgstr "Cylinder Construction" - -#: GeometryGUI_CheckShape.cxx:60 -msgid "GEOM_CHECK_TITLE" -msgstr "Check Shape Informations" - -#: GeometryGUI_CheckShape.cxx:83 -msgid "GEOM_CHECK_INFOS" -msgstr "Object And Its Topological Informations" - -#: GeometryGUI_DistanceDlg.cxx:57 -msgid "GEOM_MINDIST_TITLE" -msgstr "Minimun Distance Between Two Objects" - -#: GeometryGUI_DistanceDlg.cxx:57 -msgid "GEOM_MINDIST_OBJ" -msgstr "Objects And Results" - -#: GeometryGUI_EdgeDlg.cxx:47 -msgid "GEOM_EDGE_TITLE" -msgstr "Create An Edge" - -#: GeometryGUI_FilletDlg.cxx:58 -msgid "GEOM_FILLET_TITLE" -msgstr "Fillet Construction" - -#: GeometryGUI_FilletDlg.cxx:58 -msgid "GEOM_FILLET_ALL" -msgstr "Fillet On Whole Shape" - -#: GeometryGUI_FilletDlg.cxx:58 -msgid "GEOM_FILLET_EDGES" -msgstr "Fillet On Edges From Shape" - -#: GeometryGUI_FilletDlg.cxx:58 -msgid "GEOM_FILLET_FACES" -msgstr "Fillet On Faces From Shape" - -#: GeometryGUI_FaceDlg.cxx:49 -msgid "GEOM_FACE_TITLE" -msgstr "Create A Face" - -#: GeometryGUI_FaceDlg.cxx:78 -msgid "GEOM_FACE_FFW" -msgstr "Face from a wire" - -#: GeometryGUI_FaceDlg.cxx:103 -msgid "GEOM_FACE_OPT" -msgstr "Try to create a planar face" - -#: GeometryGUI_FillingDlg.cxx:53 -msgid "GEOM_FILLING_TITLE" -msgstr "Filling Surface With Curves" - -#: GeometryGUI_FillingDlg.cxx:112 -msgid "GEOM_FILLING_ARG" -msgstr "Arguments And Parameters" - -#: GeometryGUI_FillingDlg.cxx:128 -msgid "GEOM_FILLING_MIN_DEG" -msgstr "Min deg" - -#: GeometryGUI_FillingDlg.cxx:142 -msgid "GEOM_FILLING_MAX_DEG" -msgstr "Max deg" - -#: GeometryGUI_FillingDlg.cxx:150 -msgid "GEOM_FILLING_TOL_2D" -msgstr "Tol. 2D :" - -#: GeometryGUI_FillingDlg.cxx:170 -msgid "GEOM_FILLING_COMPOUND" -msgstr "Curves Comp." - -#: GeometryGUI_FillingDlg.cxx:184 -msgid "GEOM_FILLING_TOL_3D" -msgstr "Tol. 3D :" - -#: GeometryGUI_FillingDlg.cxx:192 -msgid "GEOM_FILLING_NB_ITER" -msgstr "Nb. Iter :" - -#: GeometryGUI_FuseDlg.cxx:48 -msgid "GEOM_FUSE_TITLE" -msgstr "BOOLEAN : Fuse Two Objects" - -#: GeometryGUI_InertiaDlg.cxx:42 -msgid "GEOM_INERTIA_TITLE" -msgstr "Calculs Of Inertia" - -#: GeometryGUI_InertiaDlg.cxx:50 -msgid "GEOM_INERTIA_CONSTR" -msgstr "Matrix And Moments Of Inertia" - -#: GeometryGUI_InertiaDlg.cxx:100 -msgid "GEOM_INERTIA_I" -msgstr "%1:1 :" - -#: GeometryGUI_InertiaDlg.cxx:182 -msgid "GEOM_INERTIA_IXYZ" -msgstr "IX & IY & IZ :" - -#: GeometryGUI_LineDlg.cxx:50 -msgid "GEOM_LINE_TITLE" -msgstr "Line Construction" - -#: GeometryGUI_MaxToleranceDlg.cxx:53 -msgid "GEOM_TOLERANCE_TITLE" -msgstr "Maximum Tolerance" - -#: GeometryGUI_MaxToleranceDlg.cxx:84 -msgid "GEOM_TOLERANCE_CONSTR" -msgstr "Object And Its Tolerances" - -#: GeometryGUI_MaxToleranceDlg.cxx:121 -msgid "GEOM_TOLERANCE_FACE" -msgstr "Face :" - -#: GeometryGUI_MaxToleranceDlg.cxx:138 -msgid "GEOM_TOLERANCE_EDGE" -msgstr "Edge :" - -#: GeometryGUI_MaxToleranceDlg.cxx:155 -msgid "GEOM_TOLERANCE_VERTEX" -msgstr "Vertex :" - -#: GeometryGUI_MirrorDlg.cxx:52 -msgid "GEOM_MIRROR_TITLE" -msgstr "Mirror An Object" - -#: GeometryGUI_OrientationDlg.cxx:46 -msgid "GEOM_ORIENTATION_TITLE" -msgstr "Change Orientation" - -#: GeometryGUI_OrientationDlg.cxx:134 -msgid "GEOM_ORIENTATION_OPT" -msgstr "Reverse orientation with normal vectors simulation" - -#: GeometryGUI_PartitionDlg.cxx:45 -msgid "GEOM_PARTITION_TITLE" -msgstr "Partition Of Object With Tool" - -#: GeometryGUI_PartitionDlg.cxx:45 -msgid "GEOM_KEEP_OBJECT" -msgstr "Keep Object" - -#: GeometryGUI_PartitionDlg.cxx:45 -msgid "GEOM_PARTITION_ORIENTATION" -msgstr "Change Orientation" - -#: GeometryGUI_PartitionDlg.cxx:45 -msgid "SUPPRESS_RESULT" -msgstr "Suppress Result" - -#: GeometryGUI_PipeDlg.cxx:47 -msgid "GEOM_PIPE_TITLE" -msgstr "Pipe Construction" - -#: GeometryGUI_PointDlg.cxx:52 -msgid "GEOM_POINT_TITLE" -msgstr "Point Construction" - -#: GeometryGUI_PlaneDlg.cxx:60 -msgid "GEOM_PLANE_TITLE" -msgstr "Plane Construction" - -#: GeometryGUI_PlaneDlg.cxx:172 -msgid "GEOM_PLANE_PVC" -msgstr "Point + Coordinate Vector" - -#: GeometryGUI_PlaneDlg.cxx:133 -msgid "GEOM_PLANE_PV" -msgstr "Point + Vector" - -#: GeometryGUI_PrismDlg.cxx:54 -msgid "GEOM_PRISM_TITLE" -msgstr "Prism Construction" - -#: GeometryGUI_PrismDlg.cxx:83 -msgid "GEOM_PRISM_BSV" -msgstr "Base Shape + Vector" - -#: GeometryGUI_PropertiesDlg.cxx:56 -msgid "GEOM_PROPERTIES_TITLE" -msgstr "Basic Properties Informations" - -#: GeometryGUI_PropertiesDlg.cxx:78 -msgid "GEOM_PROPERTIES_CONSTR" -msgstr "Object And Its Properties" - -#: GeometryGUI_PropertiesDlg.cxx:114 -msgid "GEOM_PROPERTIES_SURFACE" -msgstr "Surface is :" - -#: GeometryGUI_PropertiesDlg.cxx:120 -msgid "GEOM_PROPERTIES_VOLUME" -msgstr "Volume is :" - -#: GeometryGUI_RevolDlg.cxx:49 -msgid "GEOM_REVOLUTION_TITLE" -msgstr "Construction By Revolution" - -#: GeometryGUI_RotationDlg.cxx:51 -msgid "GEOM_ROTATION_TITLE" -msgstr "Rotation Of An Object" - -#: GeometryGUI_ScaleDlg.cxx:52 -msgid "GEOM_SCALE_TITLE" -msgstr "Scale An Object" - -#: GeometryGUI_ScaleDlg.cxx:117 -msgid "GEOM_SCALE_FACTOR" -msgstr "Scale Factor :" - -#: GeometryGUI_SectionDlg.cxx:50 -msgid "GEOM_SECTION_TITLE" -msgstr "BOOLEAN : Section Of Two Objects" - -#: GeometryGUI_SewingDlg.cxx:48 -msgid "GEOM_SEWING_TITLE" -msgstr "Sewing Topologies" - -#: GeometryGUI_ShellDlg.cxx:53 -msgid "GEOM_SHELL_TITLE" -msgstr "Shell Construction" - -#: GeometryGUI_SolidDlg.cxx:74 -msgid "GEOM_SOLID_TITLE" -msgstr "Solid Construction" - -#: GeometryGUI_SphereDlg.cxx:50 -msgid "GEOM_SPHERE_TITLE" -msgstr "Sphere Construction" - -#: GeometryGUI_SphereDlg.cxx:113 -msgid "GEOM_SPHERE_CR" -msgstr "Center + Radius" - -#: GeometryGUI_SphereDlg.cxx:146 -msgid "GEOM_SPHERE_RO" -msgstr "Radius At Origin" - -#: GeometryGUI_SubShapeDlg.cxx:55 -msgid "GEOM_SUBSHAPE_TITLE" -msgstr "Sub Shapes Selection" - -#: GeometryGUI_SubShapeDlg.cxx:131 -msgid "GEOM_SUBSHAPE_TYPE" -msgstr "Sub Shapes Type :" - -#: GeometryGUI_SubShapeDlg.cxx:137 -msgid "GEOM_SUBSHAPE_SELECT" -msgstr "Select Sub Shapes" - -#: GeometryGUI_TorusDlg.cxx:51 -msgid "GEOM_TORUS_TITLE" -msgstr "Torus Construction" - -#: GeometryGUI_SuppressFacesDlg.cxx:103 -msgid "GEOM_SUPRESSFACE_TITLE" -msgstr "Suppress Faces In An Object" - -#: GeometryGUI_SuppressFacesDlg.cxx:164 -msgid "GEOM_SUPRESSFACE_SELECT" -msgstr "Select Faces To Suppress" - -#: GeometryGUI_TranslationDlg.cxx:78 -msgid "GEOM_TRANSLATION_COOR" -msgstr "Translation With Coordinates" - -msgid "GEOM_TRANSPARENCY_TITLE" -msgstr "Transparency" - -msgid "GEOM_TRANSPARENCY_OPAQUE" -msgstr "Opaque" - -msgid "GEOM_TRANSPARENCY_TRANSPARENT" -msgstr "Transparent" - -msgid "GEOM_SUPPRESSHOLE_TITLE" -msgstr "Suppress holes" - -msgid "GEOM_SUPPRESSHOLE_SELECTFACE" -msgstr "Select the face with hole" - -msgid "GEOM_SUPPRESSHOLE_SELECTWIRE" -msgstr "Select wire on face" - -msgid "GEOM_SUPPRESSHOLE_SELECTFACE_END" -msgstr "Select end face (if hole traversing)" - -msgid "GEOM_SUPPRESSHOLE_SELECTWIRE_END" -msgstr "Select end wire (if hole traversing)" - -msgid "GEOM_SUPPRESSHOLE_FACE_SHELL" -msgstr "Face or shell" - -msgid "GEOM_SUPPRESSHOLE_SELECT_HOLES_ON_FACE" -msgstr "Select hole(s) on the face" - -#: GeometryGUI_TranslationDlg.cxx:56 -msgid "GEOM_TRANSLATION_TITLE" -msgstr "Translation Of An Object" - -#: GeometryGUI_VectorDlg.cxx:54 -msgid "GEOM_VECTOR_TITLE" -msgstr "Vector Construction" - -#: GeometryGUI_WhatisDlg.cxx:63 -msgid "GEOM_WHATIS_TITLE" -msgstr "Whatis Informations" - -#: GeometryGUI_WhatisDlg.cxx:86 -msgid "GEOM_WHATIS_OBJECT" -msgstr "Object And Its Topological Informations" - -#: GeometryGUI_WireDlg.cxx:46 -msgid "GEOM_WIRE_TITLE" -msgstr "Create A Wire" - -#: GeometryGUI_WireDlg.cxx:103 -msgid "GEOM_WIRE_CONNECT" -msgstr "Wire creation from wires/edges connected" - -#: GeometryGUI_WorkingPlaneDlg.cxx:50 -msgid "GEOM_WPLANE_TITLE" -msgstr "Working Plane Selection" - -#: GeometryGUI_WorkingPlaneDlg.cxx:107 -msgid "GEOM_WPLANE_FACE" -msgstr "Plane Or Planar Face" - -#: GeometryGUI_multiTranslationDlg.cxx:107 -msgid "GEOM_MULTITRANSLATION_TITLE" -msgstr "Multi-Translation" - -#: GeometryGUI_multiTranslationDlg.cxx:107 -msgid "GEOM_MULTITRANSLATION_SIMPLE" -msgstr "Multi Translation Simple" - -#: GeometryGUI_multiTranslationDlg.cxx:107 -msgid "GEOM_MULTITRANSLATION_DOUBLE" -msgstr "Multi Translation Double" - -#: GeometryGUI_multiRotationDlg.cxx:107 -msgid "GEOM_MULTIROTATION_TITLE" -msgstr "Multi-Rotation" - -#: GeometryGUI_multiRotationDlg.cxx:107 -msgid "GEOM_MULTIROTATION_SIMPLE" -msgstr "Multi Rotation Simple" - -#: GeometryGUI_multiRotationDlg.cxx:107 -msgid "GEOM_MULTIROTATION_DOUBLE" -msgstr "Multi Rotation Double" - -msgid "GEOM_PARAM_POINT" -msgstr "Parametric point" - - -# -#============================================================================== -# - -#: GeometryGUI.cxx:4613 -msgid "GEOM_MEN_WIREFRAME" -msgstr "Wireframe" - -#: GeometryGUI.cxx:4613 -msgid "GEOM_MEN_SHADING" -msgstr "\nShading" - -msgid "GEOM_RECONSTRUCTION_LIMIT" -msgstr "Reconstruction Limit" - -msgid "GEOM_SUPPRESS_RESULT" -msgstr "Suppress Result" - -msgid "GEOM_SUPPRESS_RESULT_INSIDE" -msgstr "Inside" - -msgid "GEOM_SUPPRESS_RESULT_OUTSIDE" -msgstr "Outside" - -msgid "GEOM_RECONSTRUCTION_LIMIT_SHAPE" -msgstr "Shape" -msgid "GEOM_RECONSTRUCTION_LIMIT_SOLID" -msgstr "Solid" -msgid "GEOM_RECONSTRUCTION_LIMIT_SHELL" -msgstr "Shell" -msgid "GEOM_RECONSTRUCTION_LIMIT_FACE" -msgstr "Face" -msgid "GEOM_RECONSTRUCTION_LIMIT_WIRE" -msgstr "Wire" -msgid "GEOM_RECONSTRUCTION_LIMIT_EDGE" -msgstr "Edge" -msgid "GEOM_RECONSTRUCTION_LIMIT_VERTEX" -msgstr "Vertex" - -msgid "GEOM_SPLINE_TITLE" -msgstr "Spline Construction" -msgid "GEOM_SPLINE" -msgstr "Spline" -msgid "GEOM_BEZIER" -msgstr "Bezier" -msgid "GEOM_INTERPOL" -msgstr "Interpolation" - -# -#============================================================================== -# - -msgid "GEOM_SKETCHER_EL" -msgstr "Element Type" - -msgid "GEOM_BUT_CLOSE_SKETCH" -msgstr "Close Sketch" - -msgid "GEOM_BUT_END_SKETCH" -msgstr "End Sketch" - -msgid "GEOM_SKETCHER_TITLE" -msgstr "Sketch Construction" - -msgid "GEOM_SKETCHER_POINT" -msgstr "Point" - -msgid "GEOM_SKETCHER_SEGMENT" -msgstr "Segment" - -msgid "GEOM_SKETCHER_ARC" -msgstr "Arc" - -msgid "GEOM_SKETCHER_DIR" -msgstr "Direction" - -msgid "GEOM_SKETCHER_POINT2" -msgstr "Point :" - -msgid "GEOM_SKETCHER_DEST" -msgstr "Destination" - -msgid "GEOM_SKETCHER_ABS" -msgstr "Absolute" - -msgid "GEOM_SKETCHER_REL" -msgstr "Relative" - -msgid "GEOM_SKETCHER_SEL" -msgstr "Selection" - -msgid "GEOM_SKETCHER_ANGLE" -msgstr "Angle" - -msgid "GEOM_SKETCHER_PER" -msgstr "Perpendicular" - -msgid "GEOM_SKETCHER_TAN" -msgstr "Tangent" - -msgid "GEOM_SKETCHER_VXVY" -msgstr "VX-VY" - -msgid "GEOM_SKETCHER_LENGTH" -msgstr "Length" - -msgid "GEOM_SKETCHER_X" -msgstr "X" - -msgid "GEOM_SKETCHER_Y" -msgstr "Y" - -msgid "GEOM_SKETCHER_X2" -msgstr "X :" - -msgid "GEOM_SKETCHER_Y2" -msgstr "Y :" - -msgid "GEOM_SKETCHER_X3" -msgstr "Abs. X :" - -msgid "GEOM_SKETCHER_Y3" -msgstr "Abs. Y :" - -msgid "GEOM_SKETCHER_DX2" -msgstr "DX :" - -msgid "GEOM_SKETCHER_DY2" -msgstr "DY :" - -msgid "GEOM_SKETCHER_VX2" -msgstr "VX :" - -msgid "GEOM_SKETCHER_VY2" -msgstr "VY :" - -msgid "GEOM_SKETCHER_LENGTH2" -msgstr "Length :" - -msgid "GEOM_SKETCHER_ANGLE2" -msgstr "Angle :" - -msgid "GEOM_SKETCHER_RADIUS2" -msgstr "Radius :" - -msgid "GEOM_SKETCHER_UNDO" -msgstr "Undo" - -msgid "GEOM_SKETCHER_APPLY" -msgstr "Apply" - -msgid "GEOM_SKETCHER_VALUES" -msgstr "Values" - -msgid "GEOM_SKETCHER_TYPE" -msgstr "Type" - -msgid "GEOM_FILLET_ABORT" -msgstr "Fillet can't be computed with radius %1" - -msgid "GEOM_CHAMFER_ABORT" -msgstr "Chamfer can't be computed with %1 and %2" - diff --git a/src/GEOMContext/GEOM_msg_fr.po b/src/GEOMContext/GEOM_msg_fr.po deleted file mode 100644 index f0ba8041c..000000000 --- a/src/GEOMContext/GEOM_msg_fr.po +++ /dev/null @@ -1,1316 +0,0 @@ -# This is a Qt message file in .po format. Each msgid starts with -# a scope. This scope should *NOT* be translated - eg. translating -# from French to English, "Foo::Bar" would be translated to "Pub", -# not "Foo::Pub". -msgid "" -msgstr "" -"Project-Id-Version: PROJECT VERSION\n" -"POT-Creation-Date: 2002-03-19 09:35:48 AM CET\n" -"PO-Revision-Date: YYYY-MM-DD\n" -"Last-Translator: FULLNAME \n" -"Content-Type: text/plain; charset=iso-8859-1\n" - -# -#============================================================================== -# - -#Button Apply -msgid "GEOM_BUT_APPLY" -msgstr "&Appliquer" - -#Button Close -msgid "GEOM_BUT_CLOSE" -msgstr "&Fermer" - -#Button Cancel -msgid "GEOM_BUT_CANCEL" -msgstr "&Annuler" - -#Button Ok -msgid "GEOM_BUT_OK" -msgstr "&Ok" - -#Button Yes -msgid "GEOM_BUT_YES" -msgstr "&Oui" - -#Button No -msgid "GEOM_BUT_NO" -msgstr "&Non" - -#Button Help -msgid "GEOM_BUT_HELP" -msgstr "&Aide" - - -#Button Explode -msgid "GEOM_BUT_EXPLODE" -msgstr "&Exploser" - -# -#============================================================================== -# - -#: GeometryGUI.cxx:563 -msgid "GEOM_INF_LOADED" -msgstr "Le fichier %1 est chargé." - -# -#============================================================================== -# - -#: GeometryGUI.cxx:3069 -msgid "GEOM_PRP_COMMAND" -msgstr "Pas de commande associée à l'id = %1." - -#: GeometryGUI.cxx:4977 -msgid "GEOM_PRP_ABORT" -msgstr "L'opération a echoué" - -#: GeometryGUI.cxx:5058 -msgid "GEOM_PRP_DONE" -msgstr "Opération effectuée" - -#: GeometryGUI.cxx:3717 -msgid "GEOM_PRP_LOADING" -msgstr "Chargement de %1 ..." - -#: GeometryGUI.cxx:1412 -msgid "GEOM_PRP_NULLSHAPE" -msgstr "Erreur, objet inconsistant ou inapproprié !" - -#: GeometryGUI.cxx:5072 -msgid "GEOM_PRP_READY" -msgstr "Prêt..." - -#: GeometryGUI.cxx:1690 -msgid "GEOM_PRP_SELECT_SUBSHAPES" -msgstr "Selection de sous objets" - -msgid "GEOM_CONFIRM" -msgstr "Confirmer cette operation" - -msgid "GEOM_CONFIRM_INFO" -msgstr "L'objet contient %1 sous objets" - - -msgid "GEOM_PRP_NOT_FOR_VTK_VIEWER" -msgstr "Non permis dans viewer VTK" - -#: GeometryGUI.cxx:1690 -msgid "GEOM_PRP_SHAPE_IN_STUDY" -msgstr "La shape principale doit etre avant dans l'etude" - -#: GeometryGUI.cxx:1690 -msgid "GEOM_PRP_SELECT_EDGE" -msgstr "Selectionner les edges et clicker sur Apply" - -#: GeometryGUI.cxx:1690 -msgid "GEOM_PRP_SELECT_FACE" -msgstr "Select les faces a supprimer et clicker sur Ok/Apply" - -#: GeometryGUI.cxx:1690 -msgid "GEOM_PRP_SELECT_FIRST" -msgstr "Selectionner la shape principale en premier" - -#: GeometryGUI.cxx:1690 -msgid "GEOM_PRP_MIN_DIST" -msgstr "Min Distance non calculer" - -# -#============================================================================== -# - -#: GeometryGUI.cxx:3698 -msgid "GEOM_MEN_ALL_FILES" -msgstr "Tous fichiers ( * )" - -#: GeometryGUI.cxx:4389 -msgid "GEOM_MEN_ANGLE" -msgstr "Angle :" - -#: GeometryGUI.cxx:3941 -msgid "GEOM_MEN_COMPONENT" -msgstr "Géometrie" - -#: GeometryGUI.cxx:4389 -msgid "GEOM_MEN_ENTER_ANGLE" -msgstr "Saisir un angle en degrés" - -#: GeometryGUI.cxx:3758 -msgid "GEOM_MEN_EXPORT" -msgstr "Exporter" - -#: GeometryGUI.cxx:3648 -msgid "GEOM_MEN_IMPORT" -msgstr "Importer" - -#: GeometryGUI.cxx:3761 -msgid "GEOM_MEN_IMPORT_BREP" -msgstr "Fichiers BREP ( *.brep )" - -#: GeometryGUI.cxx:3762 -msgid "GEOM_MEN_IMPORT_IGES" -msgstr "Fichiers IGES ( *.iges *.igs )" - -#: GeometryGUI.cxx:3763 -msgid "GEOM_MEN_IMPORT_STEP" -msgstr "Fichiers STEP ( *.step *.stp )" - -#: GeometryGUI.cxx:3763 -msgid "GEOM_MEN_LOAD_SCRIPT" -msgstr "Fichiers PYTHON ( *.py )" - -#: GeometryGUI.cxx:2931 -msgid "GEOM_MEN_ISOS" -msgstr "Choisir un nombre d'isos" - -#: GeometryGUI.cxx:4278 -msgid "GEOM_MEN_POPUP_NAME" -msgstr "%1 Objets" - -#: GeometryGUI.cxx:4414 -msgid "GEOM_MEN_SKETCHER_X" -msgstr "Saisir une longueur pour fixer X" - -#: GeometryGUI.cxx:4438 -msgid "GEOM_MEN_SKETCHER_Y" -msgstr "Saisir une longueur pour fixer Y" - -#: GeometryGUI.cxx:2898 -msgid "GEOM_MEN_TRANSPARENCY" -msgstr "Transparence" - -#: GeometryGUI.cxx:4413 -msgid "GEOM_MEN_X" -msgstr "X :" - -#: GeometryGUI.cxx:4437 -msgid "GEOM_MEN_Y" -msgstr "Y :" - -#: GeometryGUI_NbIsosDlg.cxx:36 -msgid "GEOM_MEN_ISOU" -msgstr "Isos u :" - -#: GeometryGUI_NbIsosDlg.cxx:53 -msgid "GEOM_MEN_ISOV" -msgstr "Isos v :" - -#: GeometryGUI_TransparencyDlg.cxx:31 -msgid "GEOM_MEN_TRANSPARENCY_LABEL" -msgstr "Transparence :" - -msgid "GEOM_MEN_STEP_LABEL" -msgstr "Increment" - -msgid "GEOM_IDENTICAL_NAMES_SELECT_BY_MOUSE" -msgstr "Noms identiques : selectionner avec la souris !" - -msgid "GEOM_NAME_INCORRECT" -msgstr "Le nom saisi n'existe pas" - - - -# -#============================================================================== -# - -#: GeometryGUI.cxx:892 -msgid "GEOM_WRN_RADIUS_NULL" -msgstr "Le rayon est nul" - -#: GeometryGUI.cxx:3854 -msgid "GEOM_WRN_WARNING" -msgstr "Avertissement" - -#: GeometryGUI.cxx:3854 -msgid "GEOM_REALLY_DELETE" -msgstr "Voulez-vous supprimer l'object(s) ?" - -# -#============================================================================== -# - -#Object -msgid "GEOM_OBJECT" -msgstr "Objet" - -#Main object -msgid "GEOM_MAIN_OBJECT" -msgstr "Objet Principal" - -#Tool object -msgid "GEOM_TOOL_OBJECT" -msgstr "Objet Outil" - -#Base Object -msgid "GEOM_BASE_OBJECT" -msgstr "Objet De Base" - -#Path Object -msgid "GEOM_PATH_OBJECT" -msgstr "Objet Chemin" - -#Objects -msgid "GEOM_OBJECTS" -msgstr "Objets" - -#Object i -msgid "GEOM_OBJECT_I" -msgstr "Objet %1" - -#Object and result -msgid "GEOM_OBJECT_RESULT" -msgstr "Objet Et Résultat" - -#Point -msgid "GEOM_POINT" -msgstr "Point" - -#Base point -msgid "GEOM_BASE_POINT" -msgstr "Point De Base" - -#Center Point -msgid "GEOM_CENTER_POINT" -msgstr "Point Centre" - -#Diagonal Points -msgid "GEOM_DIAGONAL_POINTS" -msgstr "Points Diagonaux" - -#Central Point -msgid "GEOM_CENTRAL_POINT" -msgstr "Point Central" - -#Points -msgid "GEOM_POINTS" -msgstr "Points" - -#Point i -msgid "GEOM_POINT_I" -msgstr "Point %1" - -#Arguments -msgid "GEOM_ARGUMENTS" -msgstr "Arguments" - -#Center -msgid "GEOM_CENTER" -msgstr "Centre" - -#Radius -msgid "GEOM_RADIUS" -msgstr "Rayon" - -#Radius i -msgid "GEOM_RADIUS_I" -msgstr "Rayon %1" - -#Height -msgid "GEOM_HEIGHT" -msgstr "Hauteur" - -#Length -msgid "GEOM_LENGTH" -msgstr "Longueur :" - -#Weight -msgid "GEOM_WEIGHT" -msgstr "poids" - -#Coordinates -msgid "GEOM_COORDINATES" -msgstr "Coordonnées" - -#Coor. -msgid "GEOM_COOR" -msgstr "Coord. :" - -#Reverse -msgid "GEOM_REVERSE" -msgstr "Renverser" - -#Reverse U -msgid "GEOM_REVERSE_U" -msgstr "Renverser U" - -#Reverse V -msgid "GEOM_REVERSE_V" -msgstr "Reverser V" - -#Angle -msgid "GEOM_ANGLE" -msgstr "Angle :" - -#Axis -msgid "GEOM_AXIS" -msgstr "Axe" - -#Matrix -msgid "GEOM_MATRIX" -msgstr "Matrice :" - -#Vector Length -msgid "GEOM_VECTOR_LENGTH" -msgstr "Longueur Du Vecteur :" - -#Reverse Vector -msgid "GEOM_REVERSE_VECTOR" -msgstr "Renverser Le Vecteur" - -#Plane Mirror -msgid "GEOM_PLANE_MIRROR" -msgstr "Plan Miroir" - -#Face Selection -msgid "GEOM_FACE_SELECTION" -msgstr "Selection de Face" - -#Base -msgid "GEOM_BASE" -msgstr "Base" - -#Water Density -msgid "GEOM_WATER_DENSITY" -msgstr "Densité de l'eau :" - -#Meshing Deflection -msgid "GEOM_MESHING_DEFLECTION" -msgstr "Déflection Du Maillage :" - -#Dimensions -msgid "GEOM_DIMENSIONS" -msgstr "Dimensions" - -#Precision -msgid "GEOM_PRECISION" -msgstr "Précision :" - -#Selection -msgid "GEOM_SELECTION" -msgstr "Sélection" - -#Nb. Times -msgid "GEOM_NB_TIMES" -msgstr "Nb. Fois :" - -#Nb. Times U -msgid "GEOM_NB_TIMES_U" -msgstr "Nb. Fois U :" - -#Nb. Times V -msgid "GEOM_NB_TIMES_V" -msgstr "Nb. Fois V :" - -#Step -msgid "GEOM_STEP" -msgstr "Pas :" - -#Step V -msgid "GEOM_STEP_V" -msgstr "Pas V :" - -#Step U -msgid "GEOM_STEP_U" -msgstr "Pas U :" - -# -#============================================================================== -# - -#Partition -msgid "GEOM_PARTITION" -msgstr "Partition" - -#Tolerance -msgid "GEOM_TOLERANCE" -msgstr "Tolérance" - -#Orientation -msgid "GEOM_ORIENTATION" -msgstr "Orientation" - -#Pipe -msgid "GEOM_PIPE" -msgstr "Pipe" - -#Revolution -msgid "GEOM_REVOLUTION" -msgstr "Révolution" - -#Rotation -msgid "GEOM_ROTATION" -msgstr "Rotation" - -#Archimede -msgid "GEOM_ARCHIMEDE" -msgstr "Archimède" - -#Common -msgid "GEOM_COMMON" -msgstr "Joindre" - -#Cut -msgid "GEOM_CUT" -msgstr "Couper" - -#Distance -msgid "GEOM_DISTANCE" -msgstr "Distance" - -#Filling -msgid "GEOM_FILLING" -msgstr "Surface Par Courbes" - -#Fuse -msgid "GEOM_FUSE" -msgstr "Fusionner" - -#Scale -msgid "GEOM_SCALE" -msgstr "Echelle" - -#Section -msgid "GEOM_SECTION" -msgstr "Section" - -#Sewing -msgid "GEOM_SEWING" -msgstr "Coudre" - -#Translation -msgid "GEOM_TRANSLATION" -msgstr "Translation" - -#Working Plane -msgid "GEOM_WPLANE" -msgstr "Plan de Travail" - -#Mirror -msgid "GEOM_MIRROR" -msgstr "Miroir" - -#Prism -msgid "GEOM_PRISM" -msgstr "Extrusion" - -#Sub Shapes -msgid "GEOM_SUB_SHAPE" -msgstr "Sous Shapes" - -#Supress Face -msgid "GEOM_SUPRESSFACE" -msgstr "Supression de Face" - -#Fillet -msgid "GEOM_FILLET" -msgstr "Conge" - -#Chamfer -msgid "GEOM_CHAMFER" -msgstr "Chanfrein" - -#Check Shape -msgid "GEOM_CHECK_SHAPE" -msgstr "Check Shape" - -#Whatis -msgid "GEOM_WHATIS" -msgstr "Whatis" - -#Bounding Box -msgid "GEOM_BNDBOX" -msgstr "Boite Anglobante" - -#Center Of Mass -msgid "GEOM_CMASS" -msgstr "Centre de Masse" - -#Basic Properties -msgid "GEOM_PROPERTIES" -msgstr "Basiques Proprietes" - -#Multi-Translation -msgid "GEOM_MULTITRANSLATION" -msgstr "Multi-Translation" - -#Multi-Rotation -msgid "GEOM_MULTIROTATION" -msgstr "Multi-Rotation" - -# -#============================================================================== -# - -#Arc -msgid "GEOM_ARC" -msgstr "Arc" - -#Box -msgid "GEOM_BOX" -msgstr "Boite" - -#Circle -msgid "GEOM_CIRCLE" -msgstr "Cercle" - -#Ellipse -msgid "GEOM_ELLIPSE" -msgstr "Ellipse" - -msgid "GEOM_ELLIPSE_TITLE" -msgstr "Construction d'Ellipses" - -#Radius major -msgid "GEOM_RADIUS_MAJOR" -msgstr "Rayon max. :" - -#Radius minor -msgid "GEOM_RADIUS_MINOR" -msgstr "Rayon min. :" - -#Compound -msgid "GEOM_COMPOUND" -msgstr "Compound" - -#CompSolid -msgid "GEOM_COMPOUNDSOLID" -msgstr "CompSolid" - -#Cone -msgid "GEOM_CONE" -msgstr "Cone" - -#Cylinder -msgid "GEOM_CYLINDER" -msgstr "Cylindre" - -#Edge -msgid "GEOM_EDGE" -msgstr "Edge" - -#Face -msgid "GEOM_FACE" -msgstr "Face" - -#Faces -msgid "GEOM_FACES" -msgstr "Faces" - -#Line -msgid "GEOM_LINE" -msgstr "Ligne" - -#Plane -msgid "GEOM_PLANE" -msgstr "Plan" - -#Shape -msgid "GEOM_SHAPE" -msgstr "Shape" - -#Shell -msgid "GEOM_SHELL" -msgstr "Shell" - -#Solid -msgid "GEOM_SOLID" -msgstr "Solide" - -#Sphere -msgid "GEOM_SPHERE" -msgstr "Sphère" - -#Conical Face -msgid "GEOM_SURFCONE" -msgstr "Face Conique" - -#Cylindrical Face -msgid "GEOM_SURFCYLINDER" -msgstr "Face Cylindrique" - -#Spherical Face -msgid "GEOM_SURFSPHERE" -msgstr "Face Sphèrique" - -#Toroidal Face -msgid "GEOM_SURFTORUS" -msgstr "Face Toroique" - -#Torus -msgid "GEOM_TORUS" -msgstr "Tore" - -#Vector -msgid "GEOM_VECTOR" -msgstr "Vecteur" - -#Vector U -msgid "GEOM_VECTOR_U" -msgstr "Vecteur U" - -#Vector V -msgid "GEOM_VECTOR_V" -msgstr "Vecteur V" - -#Vertex -msgid "GEOM_VERTEX" -msgstr "Vertex" - -#Wire -msgid "GEOM_WIRE" -msgstr "Wire" - -#Wire(s) -msgid "GEOM_WIRES" -msgstr "Wire(s)" - -#Parameter -msgid "GEOM_PARAMETER" -msgstr "Paramètre :" - - -# -#============================================================================== -# - -#Min -msgid "GEOM_MIN" -msgstr "Min :" - -#Max -msgid "GEOM_MAX" -msgstr "Max :" - -#X -msgid "GEOM_X" -msgstr "X :" - -#Y -msgid "GEOM_Y" -msgstr "Y :" - -#Z -msgid "GEOM_Z" -msgstr "Z :" - -#DX -msgid "GEOM_DX" -msgstr "Dx :" - -#DY -msgid "GEOM_DY" -msgstr "Dy :" - -#DZ -msgid "GEOM_DZ" -msgstr "Dz :" - -#D1 -msgid "GEOM_D1" -msgstr "D1 :" - -#D2 -msgid "GEOM_D2" -msgstr "D2 :" - -# -#============================================================================== -# - -#: GeometryGUI.cxx -msgid "GEOM_STEP_TITLE" -msgstr "Increment par défaut lors des constructions" - -#: GeometryGUI_ArcDlg.cxx:45 -msgid "GEOM_ARC_TITLE" -msgstr "Construction d'un Arc" - -#: GeometryGUI_ArchimedeDlg.cxx:55 -msgid "GEOM_ARCHIMEDE_TITLE" -msgstr "Construction d'Archimède" - -#: GeometryGUI_BndBoxDlg.cxx:59 -msgid "GEOM_BNDBOX_TITLE" -msgstr "Boite Englobante" - -#: GeometryGUI_BndBoxDlg.cxx:82 -msgid "GEOM_BNDBOX_OBJDIM" -msgstr "Objet and ses dimensions" - -#: GeometryGUI_BoxDlg.cxx:50 -msgid "GEOM_BOX_TITLE" -msgstr "Construction d'une Boite" - -#: GeometryGUI_BoxDlg.cxx:50 -msgid "GEOM_BOX_OBJ" -msgstr "Dimensions A l'Origine" - -#: GeometryGUI_ChamferDlg.cxx:58 -msgid "GEOM_CHAMFER_TITLE" -msgstr "Construction d'un Chanfrein" - -#: GeometryGUI_ChamferDlg.cxx:58 -msgid "GEOM_CHAMFER_ALL" -msgstr "Chanfrein sur toute la Shape" - -#: GeometryGUI_ChamferDlg.cxx:58 -msgid "GEOM_CHAMFER_EDGES" -msgstr "Chanfrein sur Edges de la Shape" - -#: GeometryGUI_ChamferDlg.cxx:58 -msgid "GEOM_CHAMFER_FACES" -msgstr "Chanfrein sur Faces de la Shape" - -#: GeometryGUI_CircleDlg.cxx:48 -msgid "GEOM_CIRCLE_TITLE" -msgstr "Construction d'un Cercle" - -#: GeometryGUI_CenterMassDlg.cxx:77 -msgid "GEOM_CMASS_TITLE" -msgstr "Centre De Gravité" - -msgid "GEOM_PLANE_SIZE" -msgstr "Taille du plan :" - -#: GeometryGUI_CommonDlg.cxx:47 -msgid "GEOM_COMMON_TITLE" -msgstr "BOOLEEN : Jonction De Deux Objets" - -#: GeometryGUI_CompoundDlg.cxx:44 -msgid "GEOM_COMPOUND_TITLE" -msgstr "Création d'un Compound" - -#: GeometryGUI_ConeDlg.cxx:49 -msgid "GEOM_CONE_TITLE" -msgstr "Construction d'un Cone" - -#: GeometryGUI_CutDlg.cxx:48 -msgid "GEOM_CUT_TITLE" -msgstr "BOOLEEN : Couper Deux Objets" -# -#: GeometryGUI_CylinderDlg.cxx:47 -msgid "GEOM_CYLINDER_TITLE" -msgstr "Construction d'un Cylindre" - -#: GeometryGUI_CheckShape.cxx:60 -msgid "GEOM_CHECK_TITLE" -msgstr "Check Shape" - -#: GeometryGUI_CheckShape.cxx:83 -msgid "GEOM_CHECK_INFOS" -msgstr "Objet et ses Informations Topologiques" - -#: GeometryGUI_DistanceDlg.cxx:57 -msgid "GEOM_MINDIST_TITLE" -msgstr "Distance Minimale entre Deux Objets" - -#: GeometryGUI_DistanceDlg.cxx:57 -msgid "GEOM_MINDIST_OBJ" -msgstr "Objets Et Resultats" - -#: GeometryGUI_EdgeDlg.cxx:47 -msgid "GEOM_EDGE_TITLE" -msgstr "Création d'un Edge" - -#: GeometryGUI_FilletDlg.cxx:58 -msgid "GEOM_FILLET_TITLE" -msgstr "Construction d'un Congé" - -#: GeometryGUI_FilletDlg.cxx:58 -msgid "GEOM_FILLET_ALL" -msgstr "Congé sur toute la Shape" - -#: GeometryGUI_FilletDlg.cxx:58 -msgid "GEOM_FILLET_EDGES" -msgstr "Congé sur Edges de la Shape" - -#: GeometryGUI_FilletDlg.cxx:58 -msgid "GEOM_FILLET_FACES" -msgstr "Congé sur Faces de la Shape" - -#: GeometryGUI_FaceDlg.cxx:49 -msgid "GEOM_FACE_TITLE" -msgstr "Création d'une Face" - -#: GeometryGUI_FaceDlg.cxx:78 -msgid "GEOM_FACE_FFW" -msgstr "Face a partir d'un wire" - -#: GeometryGUI_FaceDlg.cxx:103 -msgid "GEOM_FACE_OPT" -msgstr "Création d'une Face plane" - -#: GeometryGUI_FillingDlg.cxx:53 -msgid "GEOM_FILLING_TITLE" -msgstr "Surface Par Courbes" - -#: GeometryGUI_FillingDlg.cxx:112 -msgid "GEOM_FILLING_ARG" -msgstr "Argument Et Parametres" - -#: GeometryGUI_FillingDlg.cxx:128 -msgid "GEOM_FILLING_MIN_DEG" -msgstr "Min. Deg" - -#: GeometryGUI_FillingDlg.cxx:142 -msgid "GEOM_FILLING_MAX_DEG" -msgstr "Max. Deg" - -#: GeometryGUI_FillingDlg.cxx:150 -msgid "GEOM_FILLING_TOL_2D" -msgstr "Tol. 2D" - -#: GeometryGUI_FillingDlg.cxx:170 -msgid "GEOM_FILLING_COMPOUND" -msgstr "Compound de Courbes" - -#: GeometryGUI_FillingDlg.cxx:184 -msgid "GEOM_FILLING_TOL_3D" -msgstr "Tol. 3D" - -#: GeometryGUI_FillingDlg.cxx:192 -msgid "GEOM_FILLING_NB_ITER" -msgstr "Nb. Iter" - -#: GeometryGUI_FuseDlg.cxx:48 -msgid "GEOM_FUSE_TITLE" -msgstr "BOOLEEN : Fusionner deux Objets" - -#: GeometryGUI_InertiaDlg.cxx:42 -msgid "GEOM_INERTIA_TITLE" -msgstr "Calculs d'Inertie" - -#: GeometryGUI_InertiaDlg.cxx:50 -msgid "GEOM_INERTIA_CONSTR" -msgstr "Matrice Et Moments d'Inertie" - -#: GeometryGUI_InertiaDlg.cxx:100 -msgid "GEOM_INERTIA_I" -msgstr "%1:1" - -#: GeometryGUI_InertiaDlg.cxx:182 -msgid "GEOM_INERTIA_IXYZ" -msgstr "IX & IY & IZ" - -#: GeometryGUI_LineDlg.cxx:50 -msgid "GEOM_LINE_TITLE" -msgstr "Construction d'une Ligne" - -#: GeometryGUI_MaxToleranceDlg.cxx:53 -msgid "GEOM_TOLERANCE_TITLE" -msgstr "Tolerance Maximale" - -#: GeometryGUI_MaxToleranceDlg.cxx:84 -msgid "GEOM_TOLERANCE_CONSTR" -msgstr "Object et ses Tolerances" - -#: GeometryGUI_MaxToleranceDlg.cxx:121 -msgid "GEOM_TOLERANCE_FACE" -msgstr "Face :" - -#: GeometryGUI_MaxToleranceDlg.cxx:138 -msgid "GEOM_TOLERANCE_EDGE" -msgstr "Edge :" - -#: GeometryGUI_MaxToleranceDlg.cxx:155 -msgid "GEOM_TOLERANCE_VERTEX" -msgstr "Vertex :" - -#: GeometryGUI_MirrorDlg.cxx:52 -msgid "GEOM_MIRROR_TITLE" -msgstr "Methode Miroir" - -#: GeometryGUI_OrientationDlg.cxx:46 -msgid "GEOM_ORIENTATION_TITLE" -msgstr "Changer l'Orientation" - -#: GeometryGUI_OrientationDlg.cxx:134 -msgid "GEOM_ORIENTATION_OPT" -msgstr "Renverser l'orientation avec une simulation de vecteur normal" - -#: GeometryGUI_PartitionDlg.cxx:45 -msgid "GEOM_PARTITION_TITLE" -msgstr "Partition d'Objects Avec Outils" - -#: GeometryGUI_PartitionDlg.cxx:45 -msgid "GEOM_KEEP_OBJECT" -msgstr "Objet garde" - -#: GeometryGUI_PartitionDlg.cxx:45 -msgid "GEOM_PARTITION_ORIENTATION" -msgstr "Change l'orientation" - -#: GeometryGUI_PartitionDlg.cxx:45 -msgid "SUPPRESS_RESULT" -msgstr "Suppress Result" - -#: GeometryGUI_PipeDlg.cxx:47 -msgid "GEOM_PIPE_TITLE" -msgstr "Construction d'une Pipe" - -#: GeometryGUI_PointDlg.cxx:52 -msgid "GEOM_POINT_TITLE" -msgstr "Construction d'un Point" - -#: GeometryGUI_PlaneDlg.cxx:60 -msgid "GEOM_PLANE_TITLE" -msgstr "Construction d'un Plan" - -#: GeometryGUI_PlaneDlg.cxx:172 -msgid "GEOM_PLANE_PVC" -msgstr "Point + Vecteur Coordonnes" - -#: GeometryGUI_PlaneDlg.cxx:133 -msgid "GEOM_PLANE_PV" -msgstr "Point + Vecteur" - -#: GeometryGUI_PrismDlg.cxx:54 -msgid "GEOM_PRISM_TITLE" -msgstr "Extruder une Shape de base" - -#: GeometryGUI_PrismDlg.cxx:83 -msgid "GEOM_PRISM_BSV" -msgstr "Shape de base + Vecteur" - -#: GeometryGUI_PropertiesDlg.cxx:56 -msgid "GEOM_PROPERTIES_TITLE" -msgstr "Proprietes Basiques" - -#: GeometryGUI_PropertiesDlg.cxx:78 -msgid "GEOM_PROPERTIES_CONSTR" -msgstr "Objet et ses Proprietes" - -#: GeometryGUI_PropertiesDlg.cxx:114 -msgid "GEOM_PROPERTIES_SURFACE" -msgstr "Surface :" - -#: GeometryGUI_PropertiesDlg.cxx:120 -msgid "GEOM_PROPERTIES_VOLUME" -msgstr "Volume :" - -#: GeometryGUI_RevolDlg.cxx:49 -msgid "GEOM_REVOLUTION_TITLE" -msgstr "Construction Par Revolution" - -#: GeometryGUI_RotationDlg.cxx:51 -msgid "GEOM_ROTATION_TITLE" -msgstr "Rotation d'un Objet" - -#: GeometryGUI_ScaleDlg.cxx:52 -msgid "GEOM_SCALE_TITLE" -msgstr "Echelle d'un Objet" - -#: GeometryGUI_ScaleDlg.cxx:117 -msgid "GEOM_SCALE_FACTOR" -msgstr "Facteur d'echelle" - -#: GeometryGUI_SectionDlg.cxx:50 -msgid "GEOM_SECTION_TITLE" -msgstr "BOOLEEN : Section De Deux Objets" - -#: GeometryGUI_SewingDlg.cxx:48 -msgid "GEOM_SEWING_TITLE" -msgstr "Coudre des Topologies" - -#: GeometryGUI_ShellDlg.cxx:53 -msgid "GEOM_SHELL_TITLE" -msgstr "Construction d'une Shell" - -#: GeometryGUI_SolidDlg.cxx:74 -msgid "GEOM_SOLID_TITLE" -msgstr "Construction d'un Solid" - -#: GeometryGUI_SphereDlg.cxx:50 -msgid "GEOM_SPHERE_TITLE" -msgstr "Construction d'une Sphere" - -#: GeometryGUI_SphereDlg.cxx:113 -msgid "GEOM_SPHERE_CR" -msgstr "Centre + rayon" - -#: GeometryGUI_SphereDlg.cxx:146 -msgid "GEOM_SPHERE_RO" -msgstr "Rayon a l'origine" - -#: GeometryGUI_SubShapeDlg.cxx:55 -msgid "GEOM_SUBSHAPE_TITLE" -msgstr "Selection de Sous Shapes" - -#: GeometryGUI_SubShapeDlg.cxx:131 -msgid "GEOM_SUBSHAPE_TYPE" -msgstr "Type de Sous Shapes" - -#: GeometryGUI_SubShapeDlg.cxx:137 -msgid "GEOM_SUBSHAPE_SELECT" -msgstr "Selectionner de Sous Shapes" - -#: GeometryGUI_TorusDlg.cxx:51 -msgid "GEOM_TORUS_TITLE" -msgstr "Constructiond'un Tore" - -#: GeometryGUI_SuppressFacesDlg.cxx:103 -msgid "GEOM_SUPRESSFACE_TITLE" -msgstr "Supprimer des Faces dans un Objet" - -#: GeometryGUI_SuppressFacesDlg.cxx:164 -msgid "GEOM_SUPRESSFACE_SELECT" -msgstr "Selectionner les Faces a Supprimer" - -#: GeometryGUI_TranslationDlg.cxx:78 -msgid "GEOM_TRANSLATION_COOR" -msgstr "Translation Avec Coordonnees" - -msgid "GEOM_TRANSPARENCY_TITLE" -msgstr "Transparence" - -msgid "GEOM_TRANSPARENCY_OPAQUE" -msgstr "Opaque" - -msgid "GEOM_TRANSPARENCY_TRANSPARENT" -msgstr "Transparent" - -msgid "GEOM_SUPPRESSHOLE_TITLE" -msgstr "Suppression de trous" - -msgid "GEOM_SUPPRESSHOLE_SELECTFACE" -msgstr "Selection de la face initiale" - -msgid "GEOM_SUPPRESSHOLE_SELECTWIRE" -msgstr "Selection du contour/trou sur la face" - -msgid "GEOM_SUPPRESSHOLE_SELECTFACE_END" -msgstr "Selection de la face terminale (si trou traversant)" - -msgid "GEOM_SUPPRESSHOLE_SELECTWIRE_END" -msgstr "Selection de contour final (si trou traversant)" - -msgid "GEOM_SUPPRESSHOLE_FACE_SHELL" -msgstr "Face ou shell" - -msgid "GEOM_SUPPRESSHOLE_SELECT_HOLES_ON_FACE" -msgstr "Selection de trou(s) sur la face" - -#: GeometryGUI_TranslationDlg.cxx:56 -msgid "GEOM_TRANSLATION_TITLE" -msgstr "Translation d'un Objet" - -#: GeometryGUI_VectorDlg.cxx:54 -msgid "GEOM_VECTOR_TITLE" -msgstr "Construction d'un Vecteur" - -#: GeometryGUI_WhatisDlg.cxx:63 -msgid "GEOM_WHATIS_TITLE" -msgstr "Whatis" - -#: GeometryGUI_WhatisDlg.cxx:86 -msgid "GEOM_WHATIS_OBJECT" -msgstr "Objet et ses Informations Topologiques" - -#: GeometryGUI_WireDlg.cxx:46 -msgid "GEOM_WIRE_TITLE" -msgstr "Creer un Wire" - -#: GeometryGUI_WireDlg.cxx:103 -msgid "GEOM_WIRE_CONNECT" -msgstr "Creation d'un Wire a partir de wires/edges connectes" - -#: GeometryGUI_WorkingPlaneDlg.cxx:50 -msgid "GEOM_WPLANE_TITLE" -msgstr "plan de travail" - -#: GeometryGUI_WorkingPlaneDlg.cxx:107 -msgid "GEOM_WPLANE_FACE" -msgstr "Plan Ou Face plane" - -#: GeometryGUI_multiTranslationDlg.cxx:107 -msgid "GEOM_MULTITRANSLATION_TITLE" -msgstr "Multi-Translation" - -#: GeometryGUI_multiTranslationDlg.cxx:107 -msgid "GEOM_MULTITRANSLATION_SIMPLE" -msgstr "Multi Translation Simple" - -#: GeometryGUI_multiTranslationDlg.cxx:107 -msgid "GEOM_MULTITRANSLATION_DOUBLE" -msgstr "Multi Translation Double" - -#: GeometryGUI_multiRotationDlg.cxx:107 -msgid "GEOM_MULTIROTATION_TITLE" -msgstr "Multi-Rotation" - -#: GeometryGUI_multiRotationDlg.cxx:107 -msgid "GEOM_MULTIROTATION_SIMPLE" -msgstr "Multi Rotation Simple" - -#: GeometryGUI_multiRotationDlg.cxx:107 -msgid "GEOM_MULTIROTATION_DOUBLE" -msgstr "Multi Rotation Double" - -msgid "GEOM_PARAM_POINT" -msgstr "Point paramétrique" - -# -#============================================================================== -# - -#: GeometryGUI.cxx:4613 -msgid "GEOM_MEN_WIREFRAME" -msgstr "Filaire" - -#: GeometryGUI.cxx:4613 -msgid "GEOM_MEN_SHADING" -msgstr "Ombré" - -msgid "GEOM_RECONSTRUCTION_LIMIT" -msgstr "Limite de Reconstruction" - -msgid "GEOM_SUPPRESS_RESULT" -msgstr "Supprimer le Resultat" - -msgid "GEOM_SUPPRESS_RESULT_INSIDE" -msgstr "Intérieur" - -msgid "GEOM_SUPPRESS_RESULT_OUTSIDE" -msgstr "Extérieur" - -msgid "GEOM_RECONSTRUCTION_LIMIT_SHAPE" -msgstr "Shape" -msgid "GEOM_RECONSTRUCTION_LIMIT_SOLID" -msgstr "Solid" -msgid "GEOM_RECONSTRUCTION_LIMIT_SHELL" -msgstr "Shell" -msgid "GEOM_RECONSTRUCTION_LIMIT_FACE" -msgstr "Face" -msgid "GEOM_RECONSTRUCTION_LIMIT_WIRE" -msgstr "Wire" -msgid "GEOM_RECONSTRUCTION_LIMIT_EDGE" -msgstr "Edge" -msgid "GEOM_RECONSTRUCTION_LIMIT_VERTEX" -msgstr "Vertex" - -msgid "GEOM_SPLINE_TITLE" -msgstr "Construction de Splines" -msgid "GEOM_SPLINE" -msgstr "Spline" -msgid "GEOM_BEZIER" -msgstr "Bezier" -msgid "GEOM_INTERPOL" -msgstr "Interpolation" - -# -#============================================================================== -# - -msgid "GEOM_SKETCHER_EL" -msgstr "Type d'Element" - -msgid "GEOM_BUT_CLOSE_SKETCH" -msgstr "Fermer Sketch" - -msgid "GEOM_BUT_END_SKETCH" -msgstr "Terminer Sketch" - -msgid "GEOM_SKETCHER_TITLE" -msgstr "Construction de Sketch" - -msgid "GEOM_SKETCHER_POINT" -msgstr "Point" - -msgid "GEOM_SKETCHER_SEGMENT" -msgstr "Sègment" - -msgid "GEOM_SKETCHER_ARC" -msgstr "Arc" - -msgid "GEOM_SKETCHER_DIR" -msgstr "Direction" - -msgid "GEOM_SKETCHER_POINT2" -msgstr "Point :" - -msgid "GEOM_SKETCHER_DEST" -msgstr "Destination" - -msgid "GEOM_SKETCHER_ABS" -msgstr "Absolu" - -msgid "GEOM_SKETCHER_REL" -msgstr "Relative" - -msgid "GEOM_SKETCHER_SEL" -msgstr "Sélection" - -msgid "GEOM_SKETCHER_ANGLE" -msgstr "Angle" - -msgid "GEOM_SKETCHER_PER" -msgstr "Perpendiculaire" - -msgid "GEOM_SKETCHER_TAN" -msgstr "Tangent" - -msgid "GEOM_SKETCHER_VXVY" -msgstr "VX-VY" - -msgid "GEOM_SKETCHER_LENGTH" -msgstr "Longueur" - -msgid "GEOM_SKETCHER_X" -msgstr "X" - -msgid "GEOM_SKETCHER_Y" -msgstr "Y" - -msgid "GEOM_SKETCHER_X2" -msgstr "X :" - -msgid "GEOM_SKETCHER_Y2" -msgstr "Y :" - -msgid "GEOM_SKETCHER_X3" -msgstr "Abs. X :" - -msgid "GEOM_SKETCHER_Y3" -msgstr "Abs. Y :" - -msgid "GEOM_SKETCHER_DX2" -msgstr "DX :" - -msgid "GEOM_SKETCHER_DY2" -msgstr "DY :" - -msgid "GEOM_SKETCHER_VX2" -msgstr "VX :" - -msgid "GEOM_SKETCHER_VY2" -msgstr "VY :" - -msgid "GEOM_SKETCHER_LENGTH2" -msgstr "Longueur :" - -msgid "GEOM_SKETCHER_ANGLE2" -msgstr "Angle :" - -msgid "GEOM_SKETCHER_RADIUS2" -msgstr "Radius :" - -msgid "GEOM_SKETCHER_UNDO" -msgstr "Undo" - -msgid "GEOM_SKETCHER_APPLY" -msgstr "Appliquer" - -msgid "GEOM_SKETCHER_VALUES" -msgstr "Valeurs" - -msgid "GEOM_SKETCHER_TYPE" -msgstr "Type" - -msgid "GEOM_FILLET_ABORT" -msgstr "Le congé ne peut-être realisé avec un rayon de %1 " - -msgid "GEOM_CHAMFER_ABORT" -msgstr "Le chanfrein ne peut-être realisé avec %1 et %2 " diff --git a/src/GEOMContext/Makefile.in b/src/GEOMContext/Makefile.in deleted file mode 100644 index 991d7480e..000000000 --- a/src/GEOMContext/Makefile.in +++ /dev/null @@ -1,65 +0,0 @@ -# GEOM GEOMCONTEXT : -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Author : Damien COQUERET (OCC) -# Module : GEOM -# $Header: - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -# Libraries targets -LIB = libGEOMContext.la - -# ressources files -PO_FILES = \ - GEOM_icons.po \ - GEOM_msg_en.po \ - GEOM_msg_fr.po - -# header files -EXPORT_HEADERS= GEOMContext.h - -LIB_SRC = GEOMContext.cxx - -LIB_MOC = \ - GEOMContext.h - -LIB_CLIENT_IDL = SALOME_Exception.idl - -LIB_SERVER_IDL = - -# additionnal information to compil and link file - -CPPFLAGS += $(QT_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome -CXXFLAGS += -I${KERNEL_ROOT_DIR}/include/salome - -LDFLAGS += -lOCCViewer -lVTKViewer -lSalomeObject -lSalomeGUI -lGEOMClient -lGEOMObject -L${KERNEL_ROOT_DIR}/lib/salome - -@CONCLUDE@ diff --git a/src/GEOMDS/GEOMDS_Commands.cxx b/src/GEOMDS/GEOMDS_Commands.cxx deleted file mode 100644 index d2fa1c38e..000000000 --- a/src/GEOMDS/GEOMDS_Commands.cxx +++ /dev/null @@ -1,303 +0,0 @@ -// GEOM GEOMDS : implementation of Geometry component data structure and Geometry documents management -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GeomDS_Commands.cxx -// Author : Yves FRICAUD/Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -using namespace std; -#include "utilities.h" -#include "GEOMDS_Commands.ixx" - -#include -#include -#include -#include -#include -#include -#include - - -//======================================================================= -//function : GEOMDS_Commands -//purpose : -//======================================================================= -GEOMDS_Commands::GEOMDS_Commands(const TDF_Label& Main) - : myLab(Main) -{ -} - - -//======================================================================= -// function : Generated() -// purpose : -//======================================================================= -TDF_Label GEOMDS_Commands::Generated(const TopoDS_Shape& S, - const TCollection_ExtendedString& Name) -{ - TDF_Label NewLab = myLab.NewChild(); - TNaming_Builder B(NewLab); - B.Generated(S); - TDataStd_Name::Set(NewLab,Name); - return NewLab; -} - - - -//======================================================================= -// function : Generated() -// purpose : -//======================================================================= -TDF_Label GEOMDS_Commands::Generated(const TopoDS_Shape& S1, - const TopoDS_Shape& S2, - const TCollection_ExtendedString& Name) -{ - TDF_Label NewLab = myLab.NewChild(); - TNaming_Builder B(NewLab); - B.Generated(S1,S2); - TDataStd_Name::Set(NewLab,Name); - return NewLab; -} - - - -//======================================================================= -// function : AddShape() -// purpose : -//======================================================================= -TDF_Label GEOMDS_Commands::AddShape(const TopoDS_Shape& S, - const TCollection_ExtendedString& Name) -{ - TDF_Label NewLab = myLab.NewChild(); - TNaming_Builder B(NewLab); - B.Select(S,S); - TDataStd_Name::Set(NewLab,Name); - return NewLab; -} - - -//======================================================================= -// function : AddIndependentShape() -// purpose : SAME than AddShape() : will be renamed later -//======================================================================= -TDF_Label GEOMDS_Commands::AddIndependentShape(const TopoDS_Shape& S, - const TCollection_AsciiString& nameIOR) -{ - TDF_Label NewLab = myLab.NewChild(); - TNaming_Builder B(NewLab); - B.Select(S,S); - TDataStd_Name::Set(NewLab, nameIOR); - return NewLab; -} - - -//======================================================================= -// function : AddDependentShape() -// purpose : -//======================================================================= -TDF_Label GEOMDS_Commands::AddDependentShape(const TopoDS_Shape& S, - const TCollection_AsciiString& nameIOR, - const TDF_Label& mainLab) -{ - TDF_Label NewLab = myLab.NewChild(); - TNaming_Builder B(NewLab); - B.Select(S,S); - TDataStd_Name::Set(NewLab, nameIOR); - /* NewLab has a reference attribute to mainLab (the main shape in fact) */ - TDF_Reference::Set(NewLab, mainLab) ; - return NewLab; -} - - - -//======================================================================= -// function : AddConstructiveElement() -// purpose : -//======================================================================= -TDF_Label GEOMDS_Commands::AddConstructiveElement(const TopoDS_Shape& S, - const TCollection_ExtendedString& nameIOR, - const GEOMDS_ConstructiveType& aType) -{ - TDF_Label NewLab = myLab.NewChild(); - TNaming_Builder B(NewLab); - B.Select(S,S); - TDataStd_Name::Set(NewLab, nameIOR); - /* Add the Attribute Constructive Element coded with a TDataStd_Integer from an enum */ - TDataStd_Integer::Set(NewLab, Standard_Integer(aType)); - return NewLab; -} - - -//======================================================================= -// function : AddIORNameAttribute() -// purpose : Add attribute TDataStd_Name to a label -// : this attribute represents the name/IOR of object -// : Return false if attribute exist before -//======================================================================= -Standard_Boolean GEOMDS_Commands::AddIORNameAttribute(const TDF_Label& aLabel, - const TCollection_ExtendedString& nameIOR) -{ - if( this->HasIOR(aLabel) ) - return false ; - TDataStd_Name::Set(aLabel, nameIOR); - return true ; -} - - - -//======================================================================= -// function : IsConstructiveElement() 1/2 -// purpose : Return true if 'aLabel' is a constructive element -//======================================================================= -Standard_Boolean GEOMDS_Commands::IsConstructiveElement(const TDF_Label& aLabel) -{ - Handle(TDataStd_Integer) anAttType ; - if( aLabel.FindAttribute(TDataStd_Integer::GetID(), anAttType ) ) - return true ; - return false; -} - - -//======================================================================= -// function : IsConstructiveElement() 2/2 -// purpose : Return true if 'aLabel' is a constructive element and return the -// : topology ' returnTopo' and type 'returnType' -//======================================================================= -Standard_Boolean GEOMDS_Commands::IsConstructiveElement(const TDF_Label& aLabel, - TopoDS_Shape& returnTopo, - GEOMDS_ConstructiveType& returnType) -{ - Handle(TDataStd_Integer) anAttType ; - Handle(TNaming_NamedShape) anAttTopo ; - - if( aLabel.FindAttribute(TDataStd_Integer::GetID(), anAttType) && aLabel.FindAttribute(TNaming_NamedShape::GetID(), anAttTopo)) { - - returnTopo = TNaming_Tool::GetShape(anAttTopo) ; - returnType = GEOMDS_ConstructiveType( anAttType->Get() ) ; - return true ; - } - return false; -} - - -//======================================================================= -// function : GetShape() -// purpose : return true and 'returnTopo' if a topology is found on 'aLabel' -//======================================================================= -Standard_Boolean GEOMDS_Commands::GetShape(const TDF_Label& aLabel, - TopoDS_Shape& returnTopo) -{ - Handle(TNaming_NamedShape) anAttTopo ; - if( aLabel.FindAttribute(TNaming_NamedShape::GetID(), anAttTopo)) { - returnTopo = TNaming_Tool::GetShape(anAttTopo) ; - return true ; - } - return false; -} - - -//======================================================================= -// function : IsDependentShape() -// purpose : return true if the shape in the label is dependant (a sub shape) -//======================================================================= -Standard_Boolean GEOMDS_Commands::IsDependentShape(const TDF_Label& aLabel) -{ - Handle(TDF_Reference) anAttRef ; - if( aLabel.FindAttribute(TDF_Reference::GetID(), anAttRef)) - return true ; - return false; -} - - - -//======================================================================= -// function : GetMainShapeLabel() -// purpose : return true if an attribute Reference is found for 'aLabel' -// : so 'returnMainLabel' is defined. 'aLabel' is supposed to be -// : a dependent object, otherwise return false. -//======================================================================= -Standard_Boolean GEOMDS_Commands::GetMainShapeLabel(const TDF_Label& aLabel, - TDF_Label& returnMainLabel) -{ - Handle(TDF_Reference) anAttRef ; - if( aLabel.FindAttribute(TDF_Reference::GetID(), anAttRef)) { - returnMainLabel = anAttRef->Get() ; - return true ; - } - return false; -} - - -//======================================================================= -// function : ClearAllIOR() -// purpose : Clear all IOR from aLabel usually the main label. -// : Useful before reconstruction after a load of a document. -// : IOR is the attribute often called 'name' or 'nameIOR' -//======================================================================= -Standard_Boolean GEOMDS_Commands::ClearAllIOR(const TDF_Label& aLabel) -{ - TDF_ChildIterator it; - Handle(TDataStd_Name) anAttName ; - bool notTested = false ; - for( it.Initialize(aLabel, Standard_False); it.More(); it.Next() ) { - TDF_Label L = it.Value() ; - if( L.FindAttribute(TDataStd_Name::GetID(), anAttName) ) { - notTested = L.ForgetAttribute(TDataStd_Name::GetID()) ; - if(notTested) - MESSAGE("in GEOMDS_Commands::ClearAllIOR : IOR CLEARED" ) - ClearAllIOR(L); - } - } - return true ; -} - - -//======================================================================= -// function : HasIOR() -// purpose : Return true is 'aLabel' has an attribute IOR (nameIOR) -//======================================================================= -Standard_Boolean GEOMDS_Commands::HasIOR(const TDF_Label& aLabel) -{ - Handle(TDataStd_Name) anAttName ; - if( !aLabel.FindAttribute(TDataStd_Name::GetID(), anAttName) ) - return false ; - return true ; -} - -//======================================================================= -// function : ReturnNameIOR() -// purpose : Return true is 'aLabel' has an attribute IOR (nameIOR) -// : and define 'returnNameIOR' -//======================================================================= -Standard_Boolean GEOMDS_Commands::ReturnNameIOR(const TDF_Label& aLabel, - TCollection_ExtendedString& returnNameIOR) -{ - Handle(TDataStd_Name) anAttName ; - if( !aLabel.FindAttribute(TDataStd_Name::GetID(), anAttName) ) - return false ; - else { - returnNameIOR = anAttName->Get() ; - return true ; - } -} diff --git a/src/GEOMDS/GEOMDS_Commands.jxx b/src/GEOMDS/GEOMDS_Commands.jxx deleted file mode 100644 index 8d4cccf10..000000000 --- a/src/GEOMDS/GEOMDS_Commands.jxx +++ /dev/null @@ -1,38 +0,0 @@ -// GEOM GEOMDS : implementation of Geometry component data structure and Geometry documents management -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOMDS_Commands.jxx -// Module : GEOM - -#ifndef _TDF_Label_HeaderFile -#include -#endif -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _TCollection_ExtendedString_HeaderFile -#include -#endif -#ifndef _GEOMDS_Commands_HeaderFile -#include "GEOMDS_Commands.hxx" -#endif diff --git a/src/GEOMFiltersSelection/GEOM_EdgeFilter.cxx b/src/GEOMFiltersSelection/GEOM_EdgeFilter.cxx deleted file mode 100644 index 4004ebe40..000000000 --- a/src/GEOMFiltersSelection/GEOM_EdgeFilter.cxx +++ /dev/null @@ -1,47 +0,0 @@ -#include "GEOM_EdgeFilter.h" - -#include -#include -#include -#include - -//======================================================================= -// function : GEOM_EdgeFilter -// purpose : -//======================================================================= -GEOM_EdgeFilter::GEOM_EdgeFilter( SalomeApp_Study* study, const int kind ) -: GEOM_SelectionFilter( study ), -myKind( kind ) -{ - add( TopAbs_EDGE ); -} - -//======================================================================= -// function : ~GEOM_SelectionFilter -// purpose : -//======================================================================= -GEOM_EdgeFilter::~GEOM_EdgeFilter() -{ -} - -//======================================================================= -// function : isShapeOk -// purpose : -//======================================================================= -bool GEOM_EdgeFilter::isShapeOk( const TopoDS_Shape& theShape ) const -{ - if ( !theShape.IsNull() && theShape.ShapeType() == TopAbs_EDGE ) - { - BRepAdaptor_Curve aCurve( TopoDS::Edge( theShape ) ); - GeomAbs_CurveType aType = aCurve.GetType(); - - switch ( myKind ) - { - case StdSelect_AnyEdge: return Standard_True; - case StdSelect_Line: return ( aType == GeomAbs_Line ); - case StdSelect_Circle: return ( aType == GeomAbs_Circle ); - } - } - return false; -} - diff --git a/src/GEOMFiltersSelection/GEOM_EdgeFilter.h b/src/GEOMFiltersSelection/GEOM_EdgeFilter.h deleted file mode 100644 index b91a82fc2..000000000 --- a/src/GEOMFiltersSelection/GEOM_EdgeFilter.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef GEOM_EDGEFILTER_H -#define GEOM_EDGEFILTER_H - -#include "GEOM_SelectionFilter.h" - -class Standard_EXPORT GEOM_EdgeFilter : public GEOM_SelectionFilter -{ -public: - GEOM_EdgeFilter( SalomeApp_Study* study, const int kind ); - ~GEOM_EdgeFilter(); - -protected: - bool isShapeOk( const TopoDS_Shape& ) const; - -private: - int myKind; - -}; - -#endif diff --git a/src/GEOMFiltersSelection/GEOM_EdgeFilter.hxx b/src/GEOMFiltersSelection/GEOM_EdgeFilter.hxx deleted file mode 100644 index ea4428983..000000000 --- a/src/GEOMFiltersSelection/GEOM_EdgeFilter.hxx +++ /dev/null @@ -1,108 +0,0 @@ -// GEOM GEOMFiltersSelection : filter selector for the viewer -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOM_EdgeFilter.hxx -// Module : GEOM - -#ifndef _GEOM_EdgeFilter_HeaderFile -#define _GEOM_EdgeFilter_HeaderFile - -#ifndef _Handle_GEOM_EdgeFilter_HeaderFile -#include "Handle_GEOM_EdgeFilter.hxx" -#endif - -#include "SALOME_InteractiveObject.hxx" -#include "GEOM_ShapeTypeFilter.hxx" - -// IDL Headers -#include -#include CORBA_SERVER_HEADER(GEOM_Gen) -#include CORBA_SERVER_HEADER(SALOMEDS_Attributes) - -// Open CASCADE Includes -#include -#include - -class GEOM_EdgeFilter : public GEOM_ShapeTypeFilter { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } -// inline void operator delete(void *anAddress, size_t size) -// { -// if (anAddress) Standard::Free((Standard_Address&)anAddress,size); -// } - // Methods PUBLIC - // -Standard_EXPORT GEOM_EdgeFilter( const StdSelect_TypeOfEdge Edge ); -Standard_EXPORT ~GEOM_EdgeFilter(); - - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& GEOM_EdgeFilter_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - Standard_EXPORT virtual Standard_Boolean IsShapeOk(const TopoDS_Shape& theShape ) const; - - // Fields PROTECTED - // -StdSelect_TypeOfEdge myKind; - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMFiltersSelection/GEOM_EdgeFilter.ixx b/src/GEOMFiltersSelection/GEOM_EdgeFilter.ixx deleted file mode 100644 index 275670b55..000000000 --- a/src/GEOMFiltersSelection/GEOM_EdgeFilter.ixx +++ /dev/null @@ -1,83 +0,0 @@ -// GEOM GEOMFiltersSelection : filter selector for the viewer -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOM_EdgeFilter.ixx -// Module : GEOM - -#include "GEOM_EdgeFilter.jxx" - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -GEOM_EdgeFilter::~GEOM_EdgeFilter() {} - - - -Standard_EXPORT Handle_Standard_Type& GEOM_EdgeFilter_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(GEOM_ShapeTypeFilter); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(GEOM_ShapeTypeFilter); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOM_EdgeFilter", - sizeof(GEOM_EdgeFilter), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(GEOM_EdgeFilter) Handle(GEOM_EdgeFilter)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOM_EdgeFilter) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOM_EdgeFilter))) { - _anOtherObject = Handle(GEOM_EdgeFilter)((Handle(GEOM_EdgeFilter)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& GEOM_EdgeFilter::DynamicType() const -{ - return STANDARD_TYPE(GEOM_EdgeFilter) ; -} -Standard_Boolean GEOM_EdgeFilter::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(GEOM_EdgeFilter) == AType || GEOM_ShapeTypeFilter::IsKind(AType)); -} -Handle_GEOM_EdgeFilter::~Handle_GEOM_EdgeFilter() {} - diff --git a/src/GEOMFiltersSelection/GEOM_EdgeFilter.jxx b/src/GEOMFiltersSelection/GEOM_EdgeFilter.jxx deleted file mode 100644 index 267be7964..000000000 --- a/src/GEOMFiltersSelection/GEOM_EdgeFilter.jxx +++ /dev/null @@ -1,29 +0,0 @@ -// GEOM GEOMFiltersSelection : filter selector for the viewer -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOM_EdgeFilter.jxx -// Module : GEOM - -#ifndef _GEOM_EdgeFilter_HeaderFile -#include "GEOM_EdgeFilter.hxx" -#endif diff --git a/src/GEOMFiltersSelection/GEOM_FaceFilter.cxx b/src/GEOMFiltersSelection/GEOM_FaceFilter.cxx deleted file mode 100644 index 57b7bb3a0..000000000 --- a/src/GEOMFiltersSelection/GEOM_FaceFilter.cxx +++ /dev/null @@ -1,55 +0,0 @@ -#include "GEOM_FaceFilter.h" - -#include -#include -#include -#include - -//======================================================================= -// function : GEOM_FaceFilter -// purpose : -//======================================================================= -GEOM_FaceFilter::GEOM_FaceFilter( SalomeApp_Study* study, const int kind ) -: GEOM_SelectionFilter( study ), -myKind( kind ) -{ - add( TopAbs_FACE ); -} - -//======================================================================= -// function : ~GEOM_SelectionFilter -// purpose : -//======================================================================= -GEOM_FaceFilter::~GEOM_FaceFilter() -{ -} - -//======================================================================= -// function : isShapeOk -// purpose : -//======================================================================= -bool GEOM_FaceFilter::isShapeOk( const TopoDS_Shape& theShape ) const -{ - if ( !theShape.IsNull() && theShape.ShapeType() == TopAbs_FACE ) - { - BRepAdaptor_Surface aSurf( TopoDS::Face( theShape ) ); - GeomAbs_SurfaceType aType = aSurf.GetType(); - - switch ( myKind ) - { - case StdSelect_AnyFace: return Standard_True; - case StdSelect_Plane: return ( aType == GeomAbs_Plane ); - case StdSelect_Cylinder: return ( aType == GeomAbs_Cylinder); - case StdSelect_Sphere: return ( aType == GeomAbs_Sphere); - case StdSelect_Torus: return ( aType == GeomAbs_Torus); - case StdSelect_Revol: return ( aType == GeomAbs_Cylinder || - aType == GeomAbs_Cone || - aType == GeomAbs_Torus || - aType == GeomAbs_Sphere || - aType == GeomAbs_SurfaceOfRevolution ); - case StdSelect_Cone: return ( aType == GeomAbs_Cone); - } - } - return false; -} - diff --git a/src/GEOMFiltersSelection/GEOM_FaceFilter.h b/src/GEOMFiltersSelection/GEOM_FaceFilter.h deleted file mode 100644 index f21592470..000000000 --- a/src/GEOMFiltersSelection/GEOM_FaceFilter.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef GEOM_FACEFILTER_H -#define GEOM_FACEFILTER_H - -#include "GEOM_SelectionFilter.h" - -class Standard_EXPORT GEOM_FaceFilter : public GEOM_SelectionFilter -{ -public: - GEOM_FaceFilter( SalomeApp_Study* study, const int kind ); - ~GEOM_FaceFilter(); - -protected: - bool isShapeOk( const TopoDS_Shape& ) const; - -private: - int myKind; - -}; - -#endif diff --git a/src/GEOMFiltersSelection/GEOM_FaceFilter.hxx b/src/GEOMFiltersSelection/GEOM_FaceFilter.hxx deleted file mode 100644 index de6e94893..000000000 --- a/src/GEOMFiltersSelection/GEOM_FaceFilter.hxx +++ /dev/null @@ -1,110 +0,0 @@ -// GEOM GEOMFiltersSelection : filter selector for the viewer -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOM_FaceFilter.hxx -// Module : GEOM - -#ifndef _GEOM_FaceFilter_HeaderFile -#define _GEOM_FaceFilter_HeaderFile - -#ifndef _Handle_GEOM_FaceFilter_HeaderFile -#include "Handle_GEOM_FaceFilter.hxx" -#endif - -#include "GEOM_ShapeTypeFilter.hxx" - -// IDL Headers -#include -#include CORBA_SERVER_HEADER(GEOM_Gen) -#include CORBA_SERVER_HEADER(SALOMEDS_Attributes) - -// Open CASCADE Includes -#include -#include - -class GEOM_FaceFilter : public GEOM_ShapeTypeFilter { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } -// inline void operator delete(void *anAddress, size_t size) -// { -// if (anAddress) Standard::Free((Standard_Address&)anAddress,size); -// } - // Methods PUBLIC - // -Standard_EXPORT GEOM_FaceFilter( const StdSelect_TypeOfFace Face ); -Standard_EXPORT ~GEOM_FaceFilter(); - - - - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& GEOM_FaceFilter_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - Standard_EXPORT virtual Standard_Boolean IsShapeOk(const TopoDS_Shape& theShape ) const; - - - // Fields PROTECTED - // -StdSelect_TypeOfFace myKind; - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMFiltersSelection/GEOM_FaceFilter.ixx b/src/GEOMFiltersSelection/GEOM_FaceFilter.ixx deleted file mode 100644 index 4f81dc83b..000000000 --- a/src/GEOMFiltersSelection/GEOM_FaceFilter.ixx +++ /dev/null @@ -1,83 +0,0 @@ -// GEOM GEOMFiltersSelection : filter selector for the viewer -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOM_FaceFilter.ixx -// Module : GEOM - -#include "GEOM_FaceFilter.jxx" - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -GEOM_FaceFilter::~GEOM_FaceFilter() {} - - - -Standard_EXPORT Handle_Standard_Type& GEOM_FaceFilter_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(GEOM_ShapeTypeFilter); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(GEOM_ShapeTypeFilter); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOM_FaceFilter", - sizeof(GEOM_FaceFilter), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(GEOM_FaceFilter) Handle(GEOM_FaceFilter)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOM_FaceFilter) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOM_FaceFilter))) { - _anOtherObject = Handle(GEOM_FaceFilter)((Handle(GEOM_FaceFilter)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& GEOM_FaceFilter::DynamicType() const -{ - return STANDARD_TYPE(GEOM_FaceFilter) ; -} -Standard_Boolean GEOM_FaceFilter::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(GEOM_FaceFilter) == AType || GEOM_ShapeTypeFilter::IsKind(AType)); -} -Handle_GEOM_FaceFilter::~Handle_GEOM_FaceFilter() {} - diff --git a/src/GEOMFiltersSelection/GEOM_FaceFilter.jxx b/src/GEOMFiltersSelection/GEOM_FaceFilter.jxx deleted file mode 100644 index 144d1a3f5..000000000 --- a/src/GEOMFiltersSelection/GEOM_FaceFilter.jxx +++ /dev/null @@ -1,29 +0,0 @@ -// GEOM GEOMFiltersSelection : filter selector for the viewer -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOM_FaceFilter.jxx -// Module : GEOM - -#ifndef _GEOM_FaceFilter_HeaderFile -#include "GEOM_FaceFilter.hxx" -#endif diff --git a/src/GEOMFiltersSelection/GEOM_LogicalFilter.cxx b/src/GEOMFiltersSelection/GEOM_LogicalFilter.cxx deleted file mode 100644 index 22ca76a26..000000000 --- a/src/GEOMFiltersSelection/GEOM_LogicalFilter.cxx +++ /dev/null @@ -1,76 +0,0 @@ -#include "GEOM_LogicalFilter.h" - -//======================================================================= -// function : GEOM_LogicalFilter -// purpose : -//======================================================================= -GEOM_LogicalFilter::GEOM_LogicalFilter( const QPtrList& lst, const int op ) -: SUIT_SelectionFilter() -{ - setFilters( lst ); - setOperation( op ); -} - -//======================================================================= -// function : ~GEOM_LogicalFilter -// purpose : -//======================================================================= -GEOM_LogicalFilter::~GEOM_LogicalFilter() -{ -} - -//======================================================================= -// function : isOk -// purpose : -//======================================================================= -bool GEOM_LogicalFilter::isOk( const SUIT_DataOwner* owner ) const -{ - GEOM_LogicalFilter* non_const_this = (GEOM_LogicalFilter*)this; - for ( SUIT_SelectionFilter* filter = non_const_this->myFilters.first(); filter; filter = non_const_this->myFilters.next() ) - { - if ( myOperation == LO_OR && filter->isOk( owner ) ) - return true; - if ( myOperation == LO_AND && !filter->isOk( owner ) ) - return false; - if ( myOperation == LO_NOT ) - return !filter->isOk( owner ); - } - - return ( myOperation != LO_OR ); -} - -//======================================================================= -// function : setFilters -// purpose : -//======================================================================= -void GEOM_LogicalFilter::setFilters( const QPtrList& lst ) -{ - myFilters = lst; -} - -//======================================================================= -// function : setOperation -// purpose : -//======================================================================= -void GEOM_LogicalFilter::setOperation( const int op ) -{ - myOperation = op; -} - -//======================================================================= -// function : getFilters -// purpose : -//======================================================================= -QPtrList GEOM_LogicalFilter::getFilters() const -{ - return myFilters; -} - -//======================================================================= -// function : getOperation -// purpose : -//======================================================================= -int GEOM_LogicalFilter::getOperation() const -{ - return myOperation; -} diff --git a/src/GEOMFiltersSelection/GEOM_LogicalFilter.h b/src/GEOMFiltersSelection/GEOM_LogicalFilter.h deleted file mode 100644 index 139997d61..000000000 --- a/src/GEOMFiltersSelection/GEOM_LogicalFilter.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef GEOM_LOGICALFILTER_H -#define GEOM_LOGICALFILTER_H - -#include -#include - -#include - -class Standard_EXPORT GEOM_LogicalFilter : public SUIT_SelectionFilter -{ -public: - enum { LO_OR, LO_AND, LO_NOT, LO_UNDEFINED }; - -public: - GEOM_LogicalFilter( const QPtrList& lst, const int op ); - ~GEOM_LogicalFilter(); - - virtual bool isOk( const SUIT_DataOwner* ) const; - - void setFilters( const QPtrList& lst ); - void setOperation( const int ); - QPtrList getFilters() const; - int getOperation() const; - -private: - QPtrList myFilters; - int myOperation; - -}; - -#endif diff --git a/src/GEOMFiltersSelection/GEOM_LogicalFilter.hxx b/src/GEOMFiltersSelection/GEOM_LogicalFilter.hxx deleted file mode 100644 index aa9fbdccf..000000000 --- a/src/GEOMFiltersSelection/GEOM_LogicalFilter.hxx +++ /dev/null @@ -1,103 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOM_LogicalFilter.hxx -// Author : Sergey LITONIN -// Module : GEOM - -#ifndef _GEOM_LogicalFilter_HeaderFile -#define _GEOM_LogicalFilter_HeaderFile - -#include "SALOME_Filter.hxx" - -#include -#include -#include - -DEFINE_STANDARD_HANDLE( GEOM_LogicalFilter, SALOME_Filter ) - -DEFINE_BASECOLLECTION( GEOM_FilterColl, Handle(SALOME_Filter) ) -DEFINE_LIST( GEOM_ListOfFilter, GEOM_FilterColl, Handle(SALOME_Filter) ) - - -/* - Class : GEOM_LogicalFilter - Description : Filter for combaining several filters with logical operation (OR or AND) -*/ - -class GEOM_LogicalFilter : public SALOME_Filter -{ -public: - - enum { LO_OR, LO_AND, LO_NOT, LO_UNDEFINED }; - -public: - - GEOM_LogicalFilter( const GEOM_ListOfFilter&, const int ); - GEOM_LogicalFilter( const Handle(SALOME_Filter)&, const int ); - - - virtual ~GEOM_LogicalFilter(); - virtual Standard_Boolean IsOk( const Handle(SALOME_InteractiveObject)& ) const; - - void SetFilters( const GEOM_ListOfFilter& ); - void SetLogOp( const int ); - const GEOM_ListOfFilter& GetFilters() const; - int GetLogOp() const; - -private: - - GEOM_ListOfFilter myFilters; - int myLogOp; - -public: - DEFINE_STANDARD_RTTI( GEOM_LogicalFilter ) -}; - -#endif - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/GEOMFiltersSelection/GEOM_OCCFilter.cxx b/src/GEOMFiltersSelection/GEOM_OCCFilter.cxx deleted file mode 100644 index 6f22d93c1..000000000 --- a/src/GEOMFiltersSelection/GEOM_OCCFilter.cxx +++ /dev/null @@ -1,46 +0,0 @@ -#include "GEOM_OCCFilter.h" - -#include -#include - -#include - -#include -#include - -IMPLEMENT_STANDARD_HANDLE(GEOM_OCCFilter, SelectMgr_Filter) -IMPLEMENT_STANDARD_RTTIEXT(GEOM_OCCFilter, SelectMgr_Filter) - -//======================================================================= -// function : GEOM_OCCFilter -// purpose : -//======================================================================= -GEOM_OCCFilter::GEOM_OCCFilter( SalomeApp_SelectionMgr* theSelMgr ) - : SelectMgr_Filter() -{ - mySelMgr = theSelMgr; -} - -//======================================================================= -// function : ~GEOM_OCCFilter -// purpose : -//======================================================================= -GEOM_OCCFilter::~GEOM_OCCFilter() -{ -} - -//======================================================================= -// function : IsOk -// purpose : -//======================================================================= -Standard_Boolean GEOM_OCCFilter::IsOk( const Handle(SelectMgr_EntityOwner)& anObj ) const -{ - Handle(AIS_InteractiveObject) anAIS = Handle(AIS_InteractiveObject)::DownCast( anObj->Selectable() ); - if ( anAIS.IsNull() || !anAIS->HasOwner() ) - return false; - - Handle(SALOME_InteractiveObject) anIO = Handle(SALOME_InteractiveObject)::DownCast(anAIS->GetOwner()); - if ( anIO.IsNull() ) return false; - - return mySelMgr->isOk( new SalomeApp_DataOwner( QString( anIO->getEntry() ) ) ); -} diff --git a/src/GEOMFiltersSelection/GEOM_OCCFilter.h b/src/GEOMFiltersSelection/GEOM_OCCFilter.h deleted file mode 100644 index b19764305..000000000 --- a/src/GEOMFiltersSelection/GEOM_OCCFilter.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef GEOM_OCCFILTER_H -#define GEOM_OCCFILTER_H - -#include - -#include - -class SalomeApp_SelectionMgr; - -class GEOM_OCCFilter : public SelectMgr_Filter -{ -public: - Standard_EXPORT GEOM_OCCFilter( SalomeApp_SelectionMgr* theSelMgr); - Standard_EXPORT ~GEOM_OCCFilter(); - - Standard_EXPORT virtual Standard_Boolean IsOk( const Handle(SelectMgr_EntityOwner)& anObj ) const; - -private: - SalomeApp_SelectionMgr* mySelMgr; - -public: - - DEFINE_STANDARD_RTTI(GEOM_OCCFilter); - -}; - -DEFINE_STANDARD_HANDLE(GEOM_OCCFilter, SelectMgr_Filter) - -#endif diff --git a/src/GEOMFiltersSelection/GEOM_PreviewFilter.cxx b/src/GEOMFiltersSelection/GEOM_PreviewFilter.cxx deleted file mode 100644 index 815ff81cb..000000000 --- a/src/GEOMFiltersSelection/GEOM_PreviewFilter.cxx +++ /dev/null @@ -1,31 +0,0 @@ -#include "GEOM_PreviewFilter.h" - -#include - -//======================================================================= -// function : GEOM_SelectionFilter -// purpose : -//======================================================================= -GEOM_PreviewFilter::GEOM_PreviewFilter( SalomeApp_Study* study ) -: SalomeApp_Filter( study ) -{ -} - -//======================================================================= -// function : ~GEOM_SelectionFilter -// purpose : -//======================================================================= -GEOM_PreviewFilter::~GEOM_PreviewFilter() -{ -} - -//======================================================================= -// function : isOk -// purpose : -//======================================================================= -bool GEOM_PreviewFilter::isOk( const SUIT_DataOwner* sOwner ) const -{ - const SalomeApp_DataOwner* owner = dynamic_cast ( sOwner ); - return ( owner && strstr( owner->entry(), "TEMP" ) ); -} - diff --git a/src/GEOMFiltersSelection/GEOM_PreviewFilter.h b/src/GEOMFiltersSelection/GEOM_PreviewFilter.h deleted file mode 100644 index b454f330d..000000000 --- a/src/GEOMFiltersSelection/GEOM_PreviewFilter.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef GEOM_PREVIEW_FILTER_H -#define GEOM_PREVIEW_FILTER_H - -#include -#include - -class Standard_EXPORT GEOM_PreviewFilter : public SalomeApp_Filter -{ -public: - GEOM_PreviewFilter( SalomeApp_Study* study ); - ~GEOM_PreviewFilter(); - - virtual bool isOk( const SUIT_DataOwner* ) const; -}; - -#endif diff --git a/src/GEOMFiltersSelection/GEOM_PreviewFilter.hxx b/src/GEOMFiltersSelection/GEOM_PreviewFilter.hxx deleted file mode 100644 index e27701ca6..000000000 --- a/src/GEOMFiltersSelection/GEOM_PreviewFilter.hxx +++ /dev/null @@ -1,102 +0,0 @@ -// GEOM GEOMFiltersSelection : filter selector for the viewer -// -// Copyright (C) 2004 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.org -// -// -// -// File : GEOM_PreviewFilter.hxx -// Module : GEOM - -#ifndef _GEOM_PreviewFilter_HeaderFile -#define _GEOM_PreviewFilter_HeaderFile - -#ifndef _Handle_GEOM_PreviewFilter_HeaderFile -#include "Handle_GEOM_PreviewFilter.hxx" -#endif - -#include "SALOME_InteractiveObject.hxx" -#include "SALOME_Filter.hxx" - -// IDL Headers - - -// Open CASCADE Includes -#include - -class GEOM_PreviewFilter : public SALOME_Filter { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT GEOM_PreviewFilter(); -Standard_EXPORT ~GEOM_PreviewFilter(); - -Standard_EXPORT virtual Standard_Boolean IsOk(const Handle(SALOME_InteractiveObject)& anobj) const; - - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& GEOM_PreviewFilter_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMFiltersSelection/GEOM_PreviewFilter.ixx b/src/GEOMFiltersSelection/GEOM_PreviewFilter.ixx deleted file mode 100644 index 6ec1aef97..000000000 --- a/src/GEOMFiltersSelection/GEOM_PreviewFilter.ixx +++ /dev/null @@ -1,83 +0,0 @@ -// GEOM GEOMFiltersSelection : filter selector for the viewer -// -// Copyright (C) 2004 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.org -// -// -// -// File : GEOM_PreviewFilter.ixx -// Module : GEOM - -#include "GEOM_PreviewFilter.jxx" - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -GEOM_PreviewFilter::~GEOM_PreviewFilter() {} - - - -Standard_EXPORT Handle_Standard_Type& GEOM_PreviewFilter_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(SALOME_Filter); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(SALOME_Filter); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOM_PreviewFilter", - sizeof(GEOM_PreviewFilter), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(GEOM_PreviewFilter) Handle(GEOM_PreviewFilter)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOM_PreviewFilter) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOM_PreviewFilter))) { - _anOtherObject = Handle(GEOM_PreviewFilter)((Handle(GEOM_PreviewFilter)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& GEOM_PreviewFilter::DynamicType() const -{ - return STANDARD_TYPE(GEOM_PreviewFilter) ; -} -Standard_Boolean GEOM_PreviewFilter::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(GEOM_PreviewFilter) == AType || SALOME_Filter::IsKind(AType)); -} -Handle_GEOM_PreviewFilter::~Handle_GEOM_PreviewFilter() {} - diff --git a/src/GEOMFiltersSelection/GEOM_PreviewFilter.jxx b/src/GEOMFiltersSelection/GEOM_PreviewFilter.jxx deleted file mode 100644 index bd82eff74..000000000 --- a/src/GEOMFiltersSelection/GEOM_PreviewFilter.jxx +++ /dev/null @@ -1,29 +0,0 @@ -// GEOM GEOMFiltersSelection : filter selector for the viewer -// -// Copyright (C) 2004 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.org -// -// -// -// File : GEOM_PreviewFilter.jxx -// Module : GEOM - -#ifndef _GEOM_PreviewFilter_HeaderFile -#include "GEOM_PreviewFilter.hxx" -#endif diff --git a/src/GEOMFiltersSelection/GEOM_SelectionFilter.cxx b/src/GEOMFiltersSelection/GEOM_SelectionFilter.cxx deleted file mode 100644 index b880fd3b4..000000000 --- a/src/GEOMFiltersSelection/GEOM_SelectionFilter.cxx +++ /dev/null @@ -1,170 +0,0 @@ -#include "GEOM_SelectionFilter.h" - -#include "GEOM_Client.hxx" - -#include -#include -#include - -#include - -#include - -#include - - -//======================================================================= -// function : GEOM_SelectionFilter -// purpose : -//======================================================================= -GEOM_SelectionFilter::GEOM_SelectionFilter( SalomeApp_Study* study, const bool theAll ) - : SalomeApp_Filter(study) -{ - myAll = theAll; -} - -//======================================================================= -// function : ~GEOM_SelectionFilter -// purpose : -//======================================================================= -GEOM_SelectionFilter::~GEOM_SelectionFilter() -{ -} - -//======================================================================= -// function : isOk -// purpose : -//======================================================================= -bool GEOM_SelectionFilter::isOk( const SUIT_DataOwner* sOwner ) const -{ - GEOM::GEOM_Object_var obj = getObject( sOwner ); - if ( !CORBA::is_nil( obj ) && obj->IsShape() ) - { - if ( isAll() ) - return true; - - TopoDS_Shape shape; - if ( getShape( obj, shape ) ) - return contains( shape.ShapeType() ) && isShapeOk( shape ); - } - return false; -} - -//======================================================================= -// function : getObject -// purpose : -//======================================================================= -GEOM::GEOM_Object_ptr GEOM_SelectionFilter::getObject (const SUIT_DataOwner* sOwner) const -{ - GEOM::GEOM_Object_var anObj; - - const SalomeApp_DataOwner* owner = dynamic_cast(sOwner); - SalomeApp_Study* appStudy = getStudy(); - if (owner && appStudy) - { - _PTR(Study) study = appStudy->studyDS(); - QString entry = owner->entry(); - - _PTR(SObject) aSO (study->FindObjectID(entry.latin1())); - if (aSO) { - std::string aValue = aSO->GetIOR(); - if (strcmp(aValue.c_str(), "") != 0) { - CORBA::ORB_ptr anORB = SalomeApp_Application::orb(); - CORBA::Object_var aCorbaObj = anORB->string_to_object(aValue.c_str()); - anObj = GEOM::GEOM_Object::_narrow(aCorbaObj); - } - } - } - - if (!CORBA::is_nil(anObj)) - return anObj._retn(); - - return GEOM::GEOM_Object::_nil(); -} - -//======================================================================= -// function : getShape -// purpose : -//======================================================================= -bool GEOM_SelectionFilter::getShape (const GEOM::GEOM_Object_ptr& theObject, - TopoDS_Shape& theShape) const -{ - if ( !CORBA::is_nil( theObject ) ) - { - SalomeApp_Application* app = dynamic_cast - ( SUIT_Session::session()->activeApplication() ); - if ( app ) - { - SALOME_LifeCycleCORBA* ls = new SALOME_LifeCycleCORBA( app->namingService() ); - Engines::Component_var comp = ls->FindOrLoad_Component( "FactoryServer", "GEOM" ); - GEOM::GEOM_Gen_var geomGen = GEOM::GEOM_Gen::_narrow( comp ); - if ( !CORBA::is_nil( geomGen ) ) - { - TopoDS_Shape aTopoDSShape = GEOM_Client().GetShape( geomGen, theObject ); - - if ( !aTopoDSShape.IsNull() ) - { - theShape = aTopoDSShape; - return true; - } - } - } - } - return false; -} - -//======================================================================= -// function : contains -// purpose : -//======================================================================= -bool GEOM_SelectionFilter::contains( const int type ) const -{ - return myTypes.contains( type ); -} - -//======================================================================= -// function : add -// purpose : -//======================================================================= -void GEOM_SelectionFilter::add( const int type ) -{ - if ( !contains( type ) ) - myTypes.append( type ); -} - -//======================================================================= -// function : remove -// purpose : -//======================================================================= -void GEOM_SelectionFilter::remove( const int type ) -{ - if ( contains( type ) ) - myTypes.remove( type ); -} - -//======================================================================= -// function : setAll -// purpose : -//======================================================================= -void GEOM_SelectionFilter::setAll( const bool all ) -{ - myAll = all; -} - -//======================================================================= -// function : isAll -// purpose : -//======================================================================= -bool GEOM_SelectionFilter::isAll() const -{ - return myAll; -} - -//======================================================================= -// function : isShapeOk -// purpose : -//======================================================================= -bool GEOM_SelectionFilter::isShapeOk( const TopoDS_Shape& ) const -{ - return true; -} diff --git a/src/GEOMFiltersSelection/GEOM_SelectionFilter.h b/src/GEOMFiltersSelection/GEOM_SelectionFilter.h deleted file mode 100644 index a4a115432..000000000 --- a/src/GEOMFiltersSelection/GEOM_SelectionFilter.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef GEOM_SELECTIONFILTER_H -#define GEOM_SELECTIONFILTER_H - -#include - -#include - -#include - -// IDL Headers -#include -#include CORBA_SERVER_HEADER(GEOM_Gen) - -class Standard_EXPORT GEOM_SelectionFilter : public SalomeApp_Filter -{ -public: - GEOM_SelectionFilter( SalomeApp_Study* study, const bool theAll = false ); - ~GEOM_SelectionFilter(); - - virtual bool isOk( const SUIT_DataOwner* ) const; - -protected: - GEOM::GEOM_Object_ptr getObject( const SUIT_DataOwner* ) const; - bool getShape( const GEOM::GEOM_Object_ptr&, TopoDS_Shape& ) const; - - bool contains( const int ) const; - void add( const int ); - void remove( const int ); - - void setAll( const bool ); - bool isAll() const; - - bool isShapeOk( const TopoDS_Shape& ) const; - -private: - QValueList myTypes; - bool myAll; - -}; - -#endif diff --git a/src/GEOMFiltersSelection/GEOM_ShapeTypeFilter.cxx b/src/GEOMFiltersSelection/GEOM_ShapeTypeFilter.cxx deleted file mode 100644 index 5292daa07..000000000 --- a/src/GEOMFiltersSelection/GEOM_ShapeTypeFilter.cxx +++ /dev/null @@ -1,165 +0,0 @@ -// GEOM GEOMFiltersSelection : filter selector for the viewer -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOM_ShapeTypeFilter.cxx -// Author : Nicolas REJNERI -// Module : GEOM -// $Header$ - -#include - -#include "GEOM_ShapeTypeFilter.ixx" -#include "SALOME_InteractiveObject.hxx" -#include "GEOM_Client.hxx" -#include "QAD_Application.h" -#include "QAD_Desktop.h" -#include "utilities.h" - -#include - -//======================================================================= -// function : getShape() -// purpose : returns a TopoDS_Shape stored in GEOM_Object -//======================================================================= -static bool getShape( const GEOM::GEOM_Object_ptr& theObject, TopoDS_Shape& theShape ) -{ - if ( !CORBA::is_nil( theObject ) ) - { - Engines::Component_var comp = QAD_Application::getDesktop()->getEngine( "FactoryServer", "GEOM" ); - GEOM::GEOM_Gen_var myGeom = GEOM::GEOM_Gen::_narrow( comp ); - TopoDS_Shape aTopoDSShape = GEOM_Client().GetShape( myGeom, theObject ); - - if ( !aTopoDSShape.IsNull() ) - { - theShape = aTopoDSShape; - return true; - } - } - return false; -} - -//======================================================================= -// function : ConvertIOinGEOMObject() -// purpose : -//======================================================================= -static GEOM::GEOM_Object_ptr convertIOinGEOMObject( - const Handle(SALOME_InteractiveObject)& theIO, Standard_Boolean& theResult ) -{ - theResult = Standard_False; - GEOM::GEOM_Object_var aReturnObject; - if ( !theIO.IsNull() ) - { - const char* anEntry = theIO->getEntry(); - SALOMEDS::SObject_var aSObj = - QAD_Application::getDesktop()->getActiveStudy()->getStudyDocument()->FindObjectID( anEntry ); - if ( !CORBA::is_nil( aSObj ) ) - { - aReturnObject = GEOM::GEOM_Object::_narrow( aSObj->GetObject() ); - theResult = !CORBA::is_nil( aReturnObject ); - } - } - return aReturnObject._retn(); -} - -//======================================================================= -// function : ShapeTypeFilter -// purpose : -//======================================================================= -GEOM_ShapeTypeFilter::GEOM_ShapeTypeFilter( const TopAbs_ShapeEnum theShapeType, - const bool theIsAll ) -{ - myIsAll = theIsAll; - myShapeTypes.Add( theShapeType ); - myTypeFilter = new SALOME_TypeFilter( "GEOM" ); -} - -//======================================================================= -// function : ShapeTypeFilter -// purpose : -//======================================================================= -GEOM_ShapeTypeFilter::GEOM_ShapeTypeFilter( const TColStd_MapOfInteger& theShapeTypes, - const bool theIsAll ) -{ - myIsAll = theIsAll; - myShapeTypes = theShapeTypes; - myTypeFilter = new SALOME_TypeFilter( "GEOM" ); -} - -//======================================================================= -// function : IsOk -// purpose : -//======================================================================= -Standard_Boolean GEOM_ShapeTypeFilter::IsOk( - const Handle(SALOME_InteractiveObject)& anObj ) const -{ - if ( !myTypeFilter->IsOk(anObj) ) - return Standard_False; - - Standard_Boolean aResult = Standard_False; - GEOM::GEOM_Object_ptr aGeomObj = convertIOinGEOMObject( anObj, aResult ); - if ( !CORBA::is_nil( aGeomObj ) && aResult && aGeomObj->IsShape() ) - { - if ( myIsAll ) - return true; - TopoDS_Shape aShape; - if ( getShape( aGeomObj, aShape ) ) - { - if ( myShapeTypes.Contains( aShape.ShapeType() ) ) - return IsShapeOk( aShape ); - } - } - return Standard_False; -} - -//======================================================================= -// function : IsShapeOk -// purpose : -//======================================================================= -Standard_Boolean GEOM_ShapeTypeFilter::IsShapeOk( const TopoDS_Shape& ) const -{ - return Standard_True; -} - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/GEOMFiltersSelection/GEOM_ShapeTypeFilter.hxx b/src/GEOMFiltersSelection/GEOM_ShapeTypeFilter.hxx deleted file mode 100644 index 1d9df8e6d..000000000 --- a/src/GEOMFiltersSelection/GEOM_ShapeTypeFilter.hxx +++ /dev/null @@ -1,110 +0,0 @@ -// GEOM GEOMFiltersSelection : filter selector for the viewer -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOM_ShapeTypeFilter.hxx -// Module : GEOM - -#ifndef _GEOM_ShapeTypeFilter_HeaderFile -#define _GEOM_ShapeTypeFilter_HeaderFile - -#ifndef _Handle_GEOM_ShapeTypeFilter_HeaderFile -#include "Handle_GEOM_ShapeTypeFilter.hxx" -#endif - -#include "SALOME_InteractiveObject.hxx" -#include "SALOME_Filter.hxx" -#include "SALOME_TypeFilter.hxx" - -// IDL Headers -#include -#include CORBA_SERVER_HEADER(GEOM_Gen) -#include CORBA_SERVER_HEADER(SALOMEDS_Attributes) - -// Open CASCADE Includes -#include -#include -#include -#include - -class GEOM_ShapeTypeFilter : public SALOME_Filter -{ - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT GEOM_ShapeTypeFilter( const TopAbs_ShapeEnum theShapeType, - const bool theIsAll = false ); -Standard_EXPORT GEOM_ShapeTypeFilter( const TColStd_MapOfInteger& theShapeTypes, - const bool theIsAll = false ); -Standard_EXPORT ~GEOM_ShapeTypeFilter(); - -Standard_EXPORT virtual Standard_Boolean IsOk(const Handle(SALOME_InteractiveObject)& anobj) const; - - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& GEOM_ShapeTypeFilter_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - Standard_EXPORT virtual Standard_Boolean IsShapeOk(const TopoDS_Shape& theShape ) const; - - - // Fields PROTECTED - // -TColStd_MapOfInteger myShapeTypes; -Handle(SALOME_TypeFilter) myTypeFilter; - -private: - - bool myIsAll; - - -}; - - - - - -// other inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/GEOMFiltersSelection/GEOM_ShapeTypeFilter.ixx b/src/GEOMFiltersSelection/GEOM_ShapeTypeFilter.ixx deleted file mode 100644 index db4643d12..000000000 --- a/src/GEOMFiltersSelection/GEOM_ShapeTypeFilter.ixx +++ /dev/null @@ -1,83 +0,0 @@ -// GEOM GEOMFiltersSelection : filter selector for the viewer -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOM_ShapeTypeFilter.ixx -// Module : GEOM - -#include "GEOM_ShapeTypeFilter.jxx" - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -GEOM_ShapeTypeFilter::~GEOM_ShapeTypeFilter() {} - - - -Standard_EXPORT Handle_Standard_Type& GEOM_ShapeTypeFilter_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(SALOME_Filter); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(SALOME_Filter); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOM_ShapeTypeFilter", - sizeof(GEOM_ShapeTypeFilter), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(GEOM_ShapeTypeFilter) Handle(GEOM_ShapeTypeFilter)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOM_ShapeTypeFilter) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOM_ShapeTypeFilter))) { - _anOtherObject = Handle(GEOM_ShapeTypeFilter)((Handle(GEOM_ShapeTypeFilter)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& GEOM_ShapeTypeFilter::DynamicType() const -{ - return STANDARD_TYPE(GEOM_ShapeTypeFilter) ; -} -Standard_Boolean GEOM_ShapeTypeFilter::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(GEOM_ShapeTypeFilter) == AType || SALOME_Filter::IsKind(AType)); -} -Handle_GEOM_ShapeTypeFilter::~Handle_GEOM_ShapeTypeFilter() {} - diff --git a/src/GEOMFiltersSelection/GEOM_ShapeTypeFilter.jxx b/src/GEOMFiltersSelection/GEOM_ShapeTypeFilter.jxx deleted file mode 100644 index 8a51985a1..000000000 --- a/src/GEOMFiltersSelection/GEOM_ShapeTypeFilter.jxx +++ /dev/null @@ -1,29 +0,0 @@ -// GEOM GEOMFiltersSelection : filter selector for the viewer -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOM_ShapeTypeFilter.jxx -// Module : GEOM - -#ifndef _GEOM_ShapeTypeFilter_HeaderFile -#include "GEOM_ShapeTypeFilter.hxx" -#endif diff --git a/src/GEOMFiltersSelection/GEOM_TypeFilter.cxx b/src/GEOMFiltersSelection/GEOM_TypeFilter.cxx deleted file mode 100644 index 645806c72..000000000 --- a/src/GEOMFiltersSelection/GEOM_TypeFilter.cxx +++ /dev/null @@ -1,47 +0,0 @@ -#include "GEOM_TypeFilter.h" - -//======================================================================= -// function : GEOM_TypeFilter -// purpose : -//======================================================================= -GEOM_TypeFilter::GEOM_TypeFilter( SalomeApp_Study* study, const int type, const bool isShapeType ) -:GEOM_SelectionFilter( study ), - myType( type ), - myIsShapeType(isShapeType) -{ -} - -//======================================================================= -// function : ~GEOM_TypeFilter -// purpose : -//======================================================================= -GEOM_TypeFilter::~GEOM_TypeFilter() -{ -} - -//======================================================================= -// function : isOk -// purpose : -//======================================================================= -bool GEOM_TypeFilter::isOk( const SUIT_DataOwner* sOwner ) const -{ - GEOM::GEOM_Object_var obj = getObject( sOwner ); - if ( !CORBA::is_nil( obj ) ) - { - if (!myIsShapeType) - return obj->GetType() == type(); - else - return obj->GetShapeType() == type(); - } - - return false; -} - -//======================================================================= -// function : type -// purpose : -//======================================================================= -int GEOM_TypeFilter::type() const -{ - return myType; -} diff --git a/src/GEOMFiltersSelection/GEOM_TypeFilter.h b/src/GEOMFiltersSelection/GEOM_TypeFilter.h deleted file mode 100644 index a9fb36deb..000000000 --- a/src/GEOMFiltersSelection/GEOM_TypeFilter.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef GEOM_TYPEFILTER_H -#define GEOM_TYPEFILTER_H - -#include "GEOM_SelectionFilter.h" - -// IDL Headers -#include -#include CORBA_SERVER_HEADER(GEOM_Gen) - -class Standard_EXPORT GEOM_TypeFilter : public GEOM_SelectionFilter -{ -public: - GEOM_TypeFilter(SalomeApp_Study* study, const int type, const bool isShapeType = false ); - ~GEOM_TypeFilter(); - - virtual bool isOk( const SUIT_DataOwner* ) const; - - int type() const; - -private: - int myType; - bool myIsShapeType; -}; - -#endif diff --git a/src/GEOMFiltersSelection/GEOM_TypeFilter.hxx b/src/GEOMFiltersSelection/GEOM_TypeFilter.hxx deleted file mode 100644 index e9c0b6e57..000000000 --- a/src/GEOMFiltersSelection/GEOM_TypeFilter.hxx +++ /dev/null @@ -1,90 +0,0 @@ -// GEOM GEOMGUI : Implementation of selection filters for GEOM module -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOM_TypeFilter.hxx -// Author : Sergey LITONIN -// Module : GEOM - -#ifndef _GEOM_TypeFilter_HeaderFile -#define _GEOM_TypeFilter_HeaderFile - -#include "SALOME_TypeFilter.hxx" - -#include - -DEFINE_STANDARD_HANDLE( GEOM_TypeFilter, SALOME_TypeFilter ) - -/* - Class : GEOM_TypeFilter - Description : Filter for verifyimg type of geom object ( GEOM_POINT, GEOM_MARKER and so on ) -*/ - -class GEOM_TypeFilter : public SALOME_TypeFilter -{ - -public: - - GEOM_TypeFilter( const int ); - - - virtual ~GEOM_TypeFilter(); - virtual Standard_Boolean IsOk( const Handle(SALOME_InteractiveObject)& ) const; - - void SetType( const int ); - int GetType() const; - -private: - - int myType; - -public: - DEFINE_STANDARD_RTTI( GEOM_TypeFilter ) -}; - -#endif - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/GEOMFiltersSelection/Handle_GEOM_EdgeFilter.hxx b/src/GEOMFiltersSelection/Handle_GEOM_EdgeFilter.hxx deleted file mode 100644 index 581ddb235..000000000 --- a/src/GEOMFiltersSelection/Handle_GEOM_EdgeFilter.hxx +++ /dev/null @@ -1,100 +0,0 @@ -// GEOM GEOMFiltersSelection : filter selector for the viewer -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : Handle_GEOM_EdgeFilter.hxx -// Module : GEOM - -#ifndef _Handle_GEOM_EdgeFilter_HeaderFile -#define _Handle_GEOM_EdgeFilter_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_GEOM_ShapeTypeFilter_HeaderFile -#include "Handle_GEOM_ShapeTypeFilter.hxx" -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(GEOM_ShapeTypeFilter); -class GEOM_EdgeFilter; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOM_EdgeFilter); - -class Handle(GEOM_EdgeFilter) : public Handle(GEOM_ShapeTypeFilter) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } -// inline void operator delete(void *anAddress, size_t size) -// { -// if (anAddress) Standard::Free((Standard_Address&)anAddress,size); -// } - Handle(GEOM_EdgeFilter)():Handle(GEOM_ShapeTypeFilter)() {} - Handle(GEOM_EdgeFilter)(const Handle(GEOM_EdgeFilter)& aHandle) : Handle(GEOM_ShapeTypeFilter)(aHandle) - { - } - - Handle(GEOM_EdgeFilter)(const GEOM_EdgeFilter* anItem) : Handle(GEOM_ShapeTypeFilter)((GEOM_ShapeTypeFilter *)anItem) - { - } - - Handle(GEOM_EdgeFilter)& operator=(const Handle(GEOM_EdgeFilter)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOM_EdgeFilter)& operator=(const GEOM_EdgeFilter* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOM_EdgeFilter* operator->() - { - return (GEOM_EdgeFilter *)ControlAccess(); - } - - GEOM_EdgeFilter* operator->() const - { - return (GEOM_EdgeFilter *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOM_EdgeFilter)(); - - Standard_EXPORT static const Handle(GEOM_EdgeFilter) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/GEOMFiltersSelection/Handle_GEOM_FaceFilter.hxx b/src/GEOMFiltersSelection/Handle_GEOM_FaceFilter.hxx deleted file mode 100644 index 49ae830d7..000000000 --- a/src/GEOMFiltersSelection/Handle_GEOM_FaceFilter.hxx +++ /dev/null @@ -1,100 +0,0 @@ -// GEOM GEOMFiltersSelection : filter selector for the viewer -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : Handle_GEOM_FaceFilter.hxx -// Module : GEOM - -#ifndef _Handle_GEOM_FaceFilter_HeaderFile -#define _Handle_GEOM_FaceFilter_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_GEOM_ShapeTypeFilter_HeaderFile -#include "Handle_GEOM_ShapeTypeFilter.hxx" -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(GEOM_ShapeTypeFilter); -class GEOM_FaceFilter; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOM_FaceFilter); - -class Handle(GEOM_FaceFilter) : public Handle(GEOM_ShapeTypeFilter) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } -// inline void operator delete(void *anAddress, size_t size) -// { -// if (anAddress) Standard::Free((Standard_Address&)anAddress,size); -// } - Handle(GEOM_FaceFilter)():Handle(GEOM_ShapeTypeFilter)() {} - Handle(GEOM_FaceFilter)(const Handle(GEOM_FaceFilter)& aHandle) : Handle(GEOM_ShapeTypeFilter)(aHandle) - { - } - - Handle(GEOM_FaceFilter)(const GEOM_FaceFilter* anItem) : Handle(GEOM_ShapeTypeFilter)((GEOM_ShapeTypeFilter *)anItem) - { - } - - Handle(GEOM_FaceFilter)& operator=(const Handle(GEOM_FaceFilter)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOM_FaceFilter)& operator=(const GEOM_FaceFilter* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOM_FaceFilter* operator->() - { - return (GEOM_FaceFilter *)ControlAccess(); - } - - GEOM_FaceFilter* operator->() const - { - return (GEOM_FaceFilter *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOM_FaceFilter)(); - - Standard_EXPORT static const Handle(GEOM_FaceFilter) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/GEOMFiltersSelection/Handle_GEOM_PreviewFilter.hxx b/src/GEOMFiltersSelection/Handle_GEOM_PreviewFilter.hxx deleted file mode 100644 index cb8285ee5..000000000 --- a/src/GEOMFiltersSelection/Handle_GEOM_PreviewFilter.hxx +++ /dev/null @@ -1,100 +0,0 @@ -// GEOM GEOMFiltersSelection : filter selector for the viewer -// -// Copyright (C) 2004 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.org -// -// -// -// File : Handle_GEOM_PreviewFilter -// Module : GEOM - -#ifndef _Handle_GEOM_PreviewFilter_HeaderFile -#define _Handle_GEOM_PreviewFilter_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_SALOME_Filter_HeaderFile -#include "Handle_SALOME_Filter.hxx" -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(SALOME_Filter); -class GEOM_PreviewFilter; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOM_PreviewFilter); - -class Handle(GEOM_PreviewFilter) : public Handle(SALOME_Filter) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } -// inline void operator delete(void *anAddress, size_t size) -// { -// if (anAddress) Standard::Free((Standard_Address&)anAddress,size); -// } - Handle(GEOM_PreviewFilter)():Handle(SALOME_Filter)() {} - Handle(GEOM_PreviewFilter)(const Handle(GEOM_PreviewFilter)& aHandle) : Handle(SALOME_Filter)(aHandle) - { - } - - Handle(GEOM_PreviewFilter)(const GEOM_PreviewFilter* anItem) : Handle(SALOME_Filter)((SALOME_Filter *)anItem) - { - } - - Handle(GEOM_PreviewFilter)& operator=(const Handle(GEOM_PreviewFilter)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOM_PreviewFilter)& operator=(const GEOM_PreviewFilter* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOM_PreviewFilter* operator->() - { - return (GEOM_PreviewFilter *)ControlAccess(); - } - - GEOM_PreviewFilter* operator->() const - { - return (GEOM_PreviewFilter *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOM_PreviewFilter)(); - - Standard_EXPORT static const Handle(GEOM_PreviewFilter) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/GEOMFiltersSelection/Handle_GEOM_ShapeTypeFilter.hxx b/src/GEOMFiltersSelection/Handle_GEOM_ShapeTypeFilter.hxx deleted file mode 100644 index d20bf6d96..000000000 --- a/src/GEOMFiltersSelection/Handle_GEOM_ShapeTypeFilter.hxx +++ /dev/null @@ -1,100 +0,0 @@ -// GEOM GEOMFiltersSelection : filter selector for the viewer -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : Handle_GEOM_ShapeTypeFilter.hxx -// Module : GEOM - -#ifndef _Handle_GEOM_ShapeTypeFilter_HeaderFile -#define _Handle_GEOM_ShapeTypeFilter_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_SALOME_Filter_HeaderFile -#include "Handle_SALOME_Filter.hxx" -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(SALOME_Filter); -class GEOM_ShapeTypeFilter; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOM_ShapeTypeFilter); - -class Handle(GEOM_ShapeTypeFilter) : public Handle(SALOME_Filter) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } -// inline void operator delete(void *anAddress, size_t size) -// { -// if (anAddress) Standard::Free((Standard_Address&)anAddress,size); -// } - Handle(GEOM_ShapeTypeFilter)():Handle(SALOME_Filter)() {} - Handle(GEOM_ShapeTypeFilter)(const Handle(GEOM_ShapeTypeFilter)& aHandle) : Handle(SALOME_Filter)(aHandle) - { - } - - Handle(GEOM_ShapeTypeFilter)(const GEOM_ShapeTypeFilter* anItem) : Handle(SALOME_Filter)((SALOME_Filter *)anItem) - { - } - - Handle(GEOM_ShapeTypeFilter)& operator=(const Handle(GEOM_ShapeTypeFilter)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOM_ShapeTypeFilter)& operator=(const GEOM_ShapeTypeFilter* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOM_ShapeTypeFilter* operator->() - { - return (GEOM_ShapeTypeFilter *)ControlAccess(); - } - - GEOM_ShapeTypeFilter* operator->() const - { - return (GEOM_ShapeTypeFilter *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOM_ShapeTypeFilter)(); - - Standard_EXPORT static const Handle(GEOM_ShapeTypeFilter) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/GEOMFiltersSelection/Makefile.in b/src/GEOMFiltersSelection/Makefile.in deleted file mode 100644 index c56e5a1ca..000000000 --- a/src/GEOMFiltersSelection/Makefile.in +++ /dev/null @@ -1,70 +0,0 @@ -# GEOM GEOMFiltersSelection : filter selector for the viewer -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Author : Patrick GOLDBRONN (CEA) -# Module : GEOM -# $Header$ - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -# Libraries targets - -LIB = libGEOMFiltersSelection.la -LIB_SRC = GEOM_SelectionFilter.cxx \ - GEOM_EdgeFilter.cxx \ - GEOM_FaceFilter.cxx \ - GEOM_TypeFilter.cxx \ - GEOM_PreviewFilter.cxx \ - GEOM_LogicalFilter.cxx \ - GEOM_OCCFilter.cxx - -# header files -EXPORT_HEADERS= GEOM_SelectionFilter.h \ - GEOM_EdgeFilter.h \ - GEOM_FaceFilter.h \ - GEOM_TypeFilter.h \ - GEOM_PreviewFilter.h \ - GEOM_LogicalFilter.h \ - GEOM_OCCFilter.h - -LIB_CLIENT_IDL= GEOM_Gen.idl SALOMEDS.idl SALOME_Exception.idl SALOME_GenericObj.idl SALOME_Component.idl - - -# additionnal information to compil and link file -CPPFLAGS += $(QT_INCLUDES) $(OCC_INCLUDES) $(BOOST_CPPFLAGS) -I$(GUI_ROOT_DIR)/include/salome -I$(KERNEL_ROOT_DIR)/include/salome -CXXFLAGS += $(QT_INCLUDES) $(BOOST_CPPFLAGS) -I$(GUI_ROOT_DIR)/include/salome -I$(KERNEL_ROOT_DIR)/include/salome -LDFLAGS += -L$(GUI_ROOT_DIR)/lib/salome -L$(KERNEL_ROOT_DIR)/lib/salome -lsuit -lSalomeApp - -# additional file to be cleaned -MOSTLYCLEAN = -CLEAN = -DISTCLEAN = - -@CONCLUDE@ diff --git a/src/GEOMGUI/GEOMGUI.cxx b/src/GEOMGUI/GEOMGUI.cxx deleted file mode 100644 index 97fc874aa..000000000 --- a/src/GEOMGUI/GEOMGUI.cxx +++ /dev/null @@ -1,117 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOMGUI.cxx -// Author : Vadim SANDLER -// Module : GEOM -// $Header$ - -#include "GEOMGUI.h" - -#include "SUIT_Desktop.h" -#include "SUIT_ViewWindow.h" - -#include "GeometryGUI.h" - -#include - -//================================================================================= -// class : GEOMGUI::GEOMGUI -// purpose : Constructor -//================================================================================= -GEOMGUI::GEOMGUI( GeometryGUI* parent ) : -QObject ( parent ), -myGeometryGUI( parent ) -{ -} - -//================================================================================= -// class : GEOMGUI::GEOMGUI -// purpose : Destructor -//================================================================================= -GEOMGUI::~GEOMGUI() -{ -} - -//================================================================================= -// class : GEOMGUI::OnGUIEvent -// purpose : Main/popup menu events processing -//================================================================================= -bool GEOMGUI::OnGUIEvent( int /*theCommandID*/, SUIT_Desktop* /*parent*/ ) -{ - return TRUE; -} - -//================================================================================= -// class : GEOMGUI::OnMousePress -// purpose : Mouse press event processing. Should return FALSE to let the event -// be processed further. -//================================================================================= -bool GEOMGUI::OnMousePress( QMouseEvent* /*pe*/, SUIT_Desktop* /*parent*/, SUIT_ViewWindow* /*studyFrame*/ ) -{ - return FALSE; -} - -//================================================================================= -// class : GEOMGUI::OnMouseMove -// purpose : Mouse move event processing -//================================================================================= -bool GEOMGUI::OnMouseMove( QMouseEvent* /*pe*/, SUIT_Desktop* /*parent*/, SUIT_ViewWindow* /*studyFrame*/ ) -{ - return TRUE; -} - -//================================================================================= -// class : GEOMGUI::OnKeyPress -// purpose : Key press event processing -//================================================================================= -bool GEOMGUI::OnKeyPress( QKeyEvent* /*pe*/, SUIT_Desktop* /*parent*/, SUIT_ViewWindow* /*studyFrame*/ ) -{ - return TRUE; -} - -//================================================================================= -// class : GEOMGUI::SetSettings -// purpose : Called when GEOM component is activated -//================================================================================= -void GEOMGUI::activate( SUIT_Desktop* /*parent*/ ) -{ -} - -//================================================================================= -// class : GEOMGUI::Deactivate -// purpose : Called when GEOM component is deactivated -//================================================================================= -void GEOMGUI::deactivate() -{ -} - -//================================================================================= -// class : GEOMGUI::Deactivate -// purpose : Called when GEOM component is deactivated -//================================================================================= -GeometryGUI* GEOMGUI::getGeometryGUI() -{ - return myGeometryGUI; -} - diff --git a/src/GEOMGUI/GEOMGUI.h b/src/GEOMGUI/GEOMGUI.h deleted file mode 100644 index 69a9bb663..000000000 --- a/src/GEOMGUI/GEOMGUI.h +++ /dev/null @@ -1,79 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOMGUI.h -// Author : Vadim SANDLER -// Module : GEOM -// $Header$ - -#if !defined( __GEOMGUI_H ) -#define __GEOMGUI_H - -#include - -class SUIT_Desktop; -class SUIT_ViewWindow; -class QMouseEvent; -class QKeyEvent; -class GeometryGUI; - -//#ifdef WNT -//#include -//#else -//#define SALOME_WNT_EXPORT -//#endif -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define GEOMGUI_WNT_EXPORT __declspec( dllexport ) -#else -#define GEOMGUI_WNT_EXPORT -#endif -//================================================================================= -// class : GEOMGUI -// purpose : Base class for all geometry GUI subclasses -//================================================================================= -class GEOMGUI_WNT_EXPORT GEOMGUI : public QObject -{ -public : - // Constructor - GEOMGUI( GeometryGUI* parent ); - // Destructor - virtual ~GEOMGUI(); - - // Each of this methods can be redifined by descendants - virtual bool OnGUIEvent( int theCommandID, SUIT_Desktop* parent ); - - virtual bool OnMousePress( QMouseEvent* pe, SUIT_Desktop* parent, SUIT_ViewWindow* ); - virtual bool OnMouseMove( QMouseEvent* pe, SUIT_Desktop* parent, SUIT_ViewWindow* ); - virtual bool OnKeyPress( QKeyEvent* pe, SUIT_Desktop* parent, SUIT_ViewWindow* ); - - virtual void activate( SUIT_Desktop* parent ); - virtual void deactivate(); - - GeometryGUI* getGeometryGUI(); - -private: - GeometryGUI* myGeometryGUI; -}; - -#endif // __GEOMGUI_H - diff --git a/src/GEOMGUI/GEOMGUI_OCCSelector.cxx b/src/GEOMGUI/GEOMGUI_OCCSelector.cxx deleted file mode 100644 index e9f04b036..000000000 --- a/src/GEOMGUI/GEOMGUI_OCCSelector.cxx +++ /dev/null @@ -1,267 +0,0 @@ -#include "GEOMGUI_OCCSelector.h" - -#include - -#include - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -//================================================================ -// Function : GEOMGUI_OCCSelector -// Purpose : -//================================================================ -GEOMGUI_OCCSelector::GEOMGUI_OCCSelector( OCCViewer_Viewer* viewer, SUIT_SelectionMgr* mgr ) -: SalomeApp_OCCSelector( viewer, mgr ) -{ -} - -//================================================================ -// Function : ~GEOMGUI_OCCSelector -// Purpose : -//================================================================ -GEOMGUI_OCCSelector::~GEOMGUI_OCCSelector() -{ -} - -//================================================================ -// Function : getSelection -// Purpose : -//================================================================ -void GEOMGUI_OCCSelector::getSelection( SUIT_DataOwnerPtrList& aList ) const -{ - OCCViewer_Viewer* vw = viewer(); - if ( !vw ) - return; - - Handle(AIS_InteractiveContext) ic = vw->getAISContext(); - - if ( ic->HasOpenedContext() ) - { - for ( ic->InitSelected(); ic->MoreSelected(); ic->NextSelected() ) - { - Handle(SelectMgr_EntityOwner) anOwner = ic->SelectedOwner(); - if ( anOwner.IsNull() ) - continue; - - Handle(AIS_InteractiveObject) io = Handle(AIS_InteractiveObject)::DownCast( anOwner->Selectable() ); - - QString entryStr = entry( io ); - int index = -1; - - if ( anOwner->ComesFromDecomposition() ) // == Local Selection - { - TopoDS_Shape subShape = anOwner->Shape(); - Handle(AIS_Shape) aisShape = Handle(AIS_Shape)::DownCast( io ); - if ( !aisShape.IsNull() ) - { - TopoDS_Shape bigShape = aisShape->Shape(); - - TopTools_IndexedMapOfShape subShapes; - TopExp::MapShapes( bigShape, subShapes ); - index = subShapes.FindIndex( subShape ); - } - } - - if ( !entryStr.isEmpty() ) - { - SalomeApp_DataOwner* owner; - if ( index > -1 ) // Local Selection - owner = new SalomeApp_DataSubOwner( entryStr, index ); - else // Global Selection - owner = new SalomeApp_DataOwner( entryStr ); - - aList.append( SUIT_DataOwnerPtr( owner ) ); - } - } - } - else - { - for ( ic->InitCurrent(); ic->MoreCurrent(); ic->NextCurrent() ) - { - Handle(AIS_InteractiveObject) io = ic->Current(); - - QString entryStr = entry( io ); - - if ( !entryStr.isEmpty() ) - { - SalomeApp_DataOwner* owner = new SalomeApp_DataOwner( entryStr ); - aList.append( SUIT_DataOwnerPtr( owner ) ); - } - } - } -} - -//================================================================ -// Function : getEntityOwners -// Purpose : -//================================================================ -static void getEntityOwners( const Handle(AIS_InteractiveObject)& theObj, - const Handle(AIS_InteractiveContext)& theIC, - SelectMgr_IndexedMapOfOwner& theMap ) -{ - if ( theObj.IsNull() || theIC.IsNull() ) - return; - - TColStd_ListOfInteger modes; - theIC->ActivatedModes( theObj, modes ); - - TColStd_ListIteratorOfListOfInteger itr( modes ); - for (; itr.More(); itr.Next() ) { - int m = itr.Value(); - if ( !theObj->HasSelection( m ) ) - continue; - - Handle(SelectMgr_Selection) sel = theObj->Selection( m ); - - for ( sel->Init(); sel->More(); sel->Next() ) { - Handle(SelectBasics_SensitiveEntity) entity = sel->Sensitive(); - if ( entity.IsNull() ) - continue; - - Handle(SelectMgr_EntityOwner) owner = - Handle(SelectMgr_EntityOwner)::DownCast(entity->OwnerId()); - if ( !owner.IsNull() ) - theMap.Add( owner ); - } - } -} - -//================================================================ -// Function : setSelection -// Purpose : -//================================================================ -void GEOMGUI_OCCSelector::setSelection( const SUIT_DataOwnerPtrList& aList ) -{ - OCCViewer_Viewer* vw = viewer(); - if ( !vw ) - return; - - Handle(AIS_InteractiveContext) ic = vw->getAISContext(); - -#ifndef WNT - NCollection_DataMap indexesMap; // "entry - list_of_int" map for LOCAL selection -#else - NCollection_DataMap indexesMap; // "entry - list_of_int" map for LOCAL selection -#endif - QMap globalSelMap; // only Key=entry from this map is used. value(int) is NOT used at all. - SelectMgr_IndexedMapOfOwner ownersmap; // map of owners to be selected - - AIS_ListOfInteractive aDispList; - ic->DisplayedObjects( aDispList ); - - // build a map of data owner indexes to be selected. - // "entry - to - list_of_ids" map - for ( SUIT_DataOwnerPtrList::const_iterator itr = aList.begin(); itr != aList.end(); ++itr ) - { - const SalomeApp_DataSubOwner* subOwner = dynamic_cast( (*itr).operator->() ); - if ( subOwner ) - { - QString entry = subOwner->entry(); -#ifndef WNT - if ( indexesMap.IsBound( TCollection_AsciiString((char*)entry.latin1()))) -#else - if ( indexesMap.IsBound( (char*)entry.latin1())) -#endif - { - TColStd_IndexedMapOfInteger& subIndexes = indexesMap.ChangeFind((char*)entry.latin1()); - subIndexes.Add( subOwner->index() ); - //indexesMap.replace( entry, subIndexes ); - } - else - { - TColStd_IndexedMapOfInteger subIndexes; - subIndexes.Add( subOwner->index() ); - indexesMap.Bind((char*)entry.latin1(), subIndexes); - } - } - else // the owner is NOT a sub owner, maybe it is a DataOwner == GLOBAL selection - { - const SalomeApp_DataOwner* owner = dynamic_cast( (*itr).operator->() ); - if ( owner ) - { - globalSelMap[owner->entry()] = 1; - } - } - } - - // get all owners. Fill "entry - list_of_owners" map. - for ( AIS_ListIteratorOfListOfInteractive it( aDispList ); it.More(); it.Next() ) - { - Handle(AIS_InteractiveObject) io = it.Value(); - QString entryStr = entry( io ); - if ( !entryStr.isEmpty() ) - { - //EntryToListOfOwnerMap entryOwnersMap; // "entry - list_of_owners" map. temporary use. - SelectMgr_IndexedMapOfOwner owners; - getEntityOwners( io, ic, owners ); // get all owners - - for ( int i = 1, n = owners.Extent(); i <= n; i++ ) - { - Handle(SelectMgr_EntityOwner) anOwner = owners( i ); - if ( anOwner.IsNull() || !anOwner->HasShape() ) - continue; - - // GLOBAL selection - if ( !anOwner->ComesFromDecomposition() && globalSelMap.contains( entryStr ) ) - { - ownersmap.Add( anOwner ); - } - // LOCAL selection - else - { - Handle(AIS_Shape) aisShape = Handle(AIS_Shape)::DownCast( io ); - - if ( !aisShape.IsNull() && indexesMap.IsBound( (char*)entryStr.latin1() ) ) - { - TopoDS_Shape shape = aisShape->Shape(); - TopTools_IndexedMapOfShape aMapOfShapes; - TopExp::MapShapes( shape, aMapOfShapes ); - const TColStd_IndexedMapOfInteger& subIndexes = indexesMap.ChangeFind((char*)entryStr.latin1()); - - const TopoDS_Shape& aSubShape = anOwner->Shape(); - int aSubShapeId = aMapOfShapes.FindIndex( aSubShape ); - - // check if the "sub_shape_index" is found in the "map of indexes for this entry", - // which was passes in the parameter - if ( subIndexes.Contains( aSubShapeId ) ) - { - ownersmap.Add( anOwner ); - } - } - } // end of local selection - } // end of for(owners) - }// end of if(entry) - }// end of for(AIS_all_ios) - - vw->unHighlightAll( false ); - - // DO the selection - for ( int i = 1, n = ownersmap.Extent(); i <= n; i++ ) - { - Handle(SelectMgr_EntityOwner) owner = ownersmap( i ); - if ( owner->State() ) - continue; - - if ( ic->HasOpenedContext() ) - ic->AddOrRemoveSelected( owner, false ); - else - ic->AddOrRemoveSelected( Handle(AIS_InteractiveObject)::DownCast(owner->Selectable()), false ); - } - - vw->update(); -} diff --git a/src/GEOMGUI/GEOMGUI_OCCSelector.h b/src/GEOMGUI/GEOMGUI_OCCSelector.h deleted file mode 100644 index 70ab0b77c..000000000 --- a/src/GEOMGUI/GEOMGUI_OCCSelector.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef GEOMGUI_OCCSELECTOR_H -#define GEOMGUI_OCCSELECTOR_H - -#include - -class GEOMGUI_OCCSelector : public SalomeApp_OCCSelector -{ -public: - GEOMGUI_OCCSelector( OCCViewer_Viewer*, SUIT_SelectionMgr* ); - virtual ~GEOMGUI_OCCSelector(); - -protected: - virtual void getSelection( SUIT_DataOwnerPtrList& ) const; - virtual void setSelection( const SUIT_DataOwnerPtrList& ); - -}; - -#endif diff --git a/src/GEOMGUI/GEOMGUI_Selection.cxx b/src/GEOMGUI/GEOMGUI_Selection.cxx deleted file mode 100644 index c7494b8c7..000000000 --- a/src/GEOMGUI/GEOMGUI_Selection.cxx +++ /dev/null @@ -1,180 +0,0 @@ -#include "GEOMGUI_Selection.h" - -#include "GeometryGUI.h" -#include "GEOM_Displayer.h" - -#include -#include - -#include - -#include -#include -#include -#include - -#include -#include - -#include -#include - -#include -#include -#include - -#include -#include - -#include "GEOMImpl_Types.hxx" - -// OCCT Includes -#include -#include -#include - -// VTK Includes -#include - -GEOMGUI_Selection::GEOMGUI_Selection() -{ -} - -GEOMGUI_Selection::~GEOMGUI_Selection() -{ -} - -QtxValue GEOMGUI_Selection::globalParam( const QString& p ) const -{ - if ( p == "isOCC" ) return QtxValue( activeViewType() == OCCViewer_Viewer::Type() ); - - return SalomeApp_Selection::globalParam( p ); -} - -QtxValue GEOMGUI_Selection::param( const int ind, const QString& p ) const -{ - if ( p == "isVisible" ) return QtxValue( isVisible( ind ) ); - else if ( p == "type" ) return QtxValue( typeName( ind ) ); - else if ( p == "displaymode" ) return QtxValue( displayMode( ind ) ); - - return SalomeApp_Selection::param( ind, p ); -} - -QString GEOMGUI_Selection::typeName( const int index ) const -{ - if ( isComponent( index ) ) - return "Component"; - GEOM::GEOM_Object_var anObj = getObject( index ); - if ( !CORBA::is_nil( anObj ) ) { - const int aGeomType = anObj->GetType(); - if ( aGeomType == GEOM_GROUP ) - return "Group"; - else - return "Shape"; - } - return "Unknown"; -} - -bool GEOMGUI_Selection::isVisible( const int index ) const -{ - GEOM::GEOM_Object_var obj = getObject( index ); - SALOME_View* view = GEOM_Displayer::GetActiveView(); - if ( !CORBA::is_nil( obj ) && view ) { - Handle(SALOME_InteractiveObject) io = new SALOME_InteractiveObject( entry( index ).latin1(), "GEOM", "TEMP_IO" ); - return view->isVisible( io ); - } - return false; -} - -QString GEOMGUI_Selection::displayMode( const int index ) const -{ - SALOME_View* view = GEOM_Displayer::GetActiveView(); - QString viewType = activeViewType(); - if ( view /*fix for 9320==>*/&& ( viewType == OCCViewer_Viewer::Type() || viewType == VTKViewer_Viewer::Type() ) ) { - SALOME_Prs* prs = view->CreatePrs( entry( index ) ); - if ( prs ) { - if ( viewType == OCCViewer_Viewer::Type() ) { // assuming OCC - SOCC_Prs* occPrs = (SOCC_Prs*) prs; - AIS_ListOfInteractive lst; - occPrs->GetObjects( lst ); - if ( lst.Extent() ) { - Handle(AIS_InteractiveObject) io = lst.First(); - if ( !io.IsNull() ) { - int dm = io->DisplayMode(); - if ( dm == AIS_WireFrame ) - return "Wireframe"; - else if ( dm == AIS_Shaded ) - return "Shading"; - else { // return default display mode of AIS_InteractiveContext - OCCViewer_Viewer* occViewer = (OCCViewer_Viewer*) SUIT_Session::session()->activeApplication()->desktop( - )->activeWindow()->getViewManager()->getViewModel(); - Handle(AIS_InteractiveContext) ic = occViewer->getAISContext(); - dm = ic->DisplayMode(); - if ( dm == AIS_WireFrame ) - return "Wireframe"; - else if ( dm == AIS_Shaded ) - return "Shading"; - } - } - } - } - else if ( viewType == VTKViewer_Viewer::Type() ) { // assuming VTK - SVTK_Prs* vtkPrs = (SVTK_Prs*) prs; - vtkActorCollection* lst = vtkPrs->GetObjects(); - if ( lst ) { - lst->InitTraversal(); - vtkActor* actor = lst->GetNextActor(); - if ( actor ) { - SALOME_Actor* salActor = dynamic_cast( actor ); - if ( salActor ) { - int dm = salActor->getDisplayMode(); - if ( dm == 0 ) - return "Wireframe"; - else if ( dm == 1 ) - return "Shading"; - } // if ( salome actor ) - } // if ( actor ) - } // if ( lst == vtkPrs->GetObjects() ) - } // if VTK - } - } - return ""; -} - -bool GEOMGUI_Selection::isComponent( const int index ) const -{ - SalomeApp_Study* appStudy = dynamic_cast - (SUIT_Session::session()->activeApplication()->activeStudy()); - - if ( appStudy && index >= 0 && index < count() ) { - _PTR(Study) study = appStudy->studyDS(); - QString anEntry = entry( index ); - - if ( study && !anEntry.isNull() ) { - _PTR(SObject) aSO( study->FindObjectID( anEntry.latin1() ) ); - if ( aSO && aSO->GetFatherComponent() ) - return aSO->GetFatherComponent()->GetIOR() == aSO->GetIOR(); - } - } - return false; -} - -GEOM::GEOM_Object_ptr GEOMGUI_Selection::getObject( const int index ) const -{ - SalomeApp_Study* appStudy = dynamic_cast - (SUIT_Session::session()->activeApplication()->activeStudy()); - - if (appStudy && index >= 0 && index < count()) { - _PTR(Study) study = appStudy->studyDS(); - QString anEntry = entry(index); - - if (study && !anEntry.isNull()) { - _PTR(SObject) aSO (study->FindObjectID(anEntry.latin1())); - if (aSO) { - CORBA::Object_var anObj = GeometryGUI::ClientSObjectToObject(aSO); - return GEOM::GEOM_Object::_narrow(anObj); - } - } - } - return GEOM::GEOM_Object::_nil(); -} diff --git a/src/GEOMGUI/GEOMGUI_Selection.h b/src/GEOMGUI/GEOMGUI_Selection.h deleted file mode 100644 index 0a6f9f217..000000000 --- a/src/GEOMGUI/GEOMGUI_Selection.h +++ /dev/null @@ -1,55 +0,0 @@ -// GEOMGUI_Selection -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOMGUI_Selection.h -// Author : Alexander SOLOVYOV -// Module : GUI -// $Header$ - -#ifndef GEOMGUI_SELECTION_HeaderFile -#define GEOMGUI_SELECTION_HeaderFile - -#include - -#include -#include CORBA_SERVER_HEADER(GEOM_Gen) - -class GEOMGUI_Selection : public SalomeApp_Selection -{ -public: - GEOMGUI_Selection(); - virtual ~GEOMGUI_Selection(); - - virtual QtxValue param( const int, const QString& ) const; - virtual QtxValue globalParam( const QString& ) const; - -private: - bool isVisible( const int ) const; - QString typeName( const int ) const; - QString displayMode( const int ) const; - - bool isComponent( const int ) const; - GEOM::GEOM_Object_ptr getObject( const int ) const; -}; - -#endif diff --git a/src/GEOMGUI/GEOM_Displayer.cxx b/src/GEOMGUI/GEOM_Displayer.cxx deleted file mode 100644 index 26313ac05..000000000 --- a/src/GEOMGUI/GEOM_Displayer.cxx +++ /dev/null @@ -1,1119 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOM_Displayer.cxx -// Author : Vadim SANDLER -// Module : GEOM -// $Header$ - -#include "GEOM_Displayer.h" - -#include "GeometryGUI.h" - -#include "GEOM_TypeFilter.h" -#include "GEOM_EdgeFilter.h" -#include "GEOM_FaceFilter.h" -#include "GEOM_PreviewFilter.h" -#include "GEOM_LogicalFilter.h" -#include "GEOM_OCCFilter.h" - -#include "GEOM_Actor.h" -#include "GEOM_AssemblyBuilder.h" -#include "GEOM_AISShape.hxx" -#include "GEOM_AISTrihedron.hxx" -#include "GEOM_VTKTrihedron.hxx" - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include - -#include -#include - -#include -#include - -#include -#include - -// OCCT Includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// VTK Includes -#include - -// STL Includes -#include - -// CORBA Headers -#include CORBA_CLIENT_HEADER(SALOMEDS_Attributes) - -#include "GEOMImpl_Types.hxx" - -using namespace std; - -//================================================================ -// Function : getActiveStudy -// Purpose : Get active study, returns 0 if no open study frame -//================================================================ -static inline SalomeApp_Study* getActiveStudy() -{ - SUIT_Session* session = SUIT_Session::session(); - SalomeApp_Application* app = dynamic_cast( session->activeApplication() ); - if ( app ) - return ( SalomeApp_Study* )app->activeStudy(); - return 0; -} - -//================================================================ -// Function : getTopAbsMode -// Purpose : Get TopAbs_ShapeEnum value corresponding to the -// one from GEOMImpl_Types.h -//================================================================ -static inline int getTopAbsMode( const int implType ) -{ - switch ( implType ) - { - case GEOM_COMPOUND : return TopAbs_COMPOUND; - case GEOM_SOLID : return TopAbs_SOLID; - case GEOM_SHELL : return TopAbs_SHELL; - case GEOM_FACE : return TopAbs_FACE; - case GEOM_WIRE : return TopAbs_WIRE; - case GEOM_EDGE : return TopAbs_EDGE; - case GEOM_POINT : return TopAbs_VERTEX; - default : return -1; - } -} - -//================================================================ -// Function : getFilter -// Purpose : Get filter corresponding to the type of object -// from GEOMImpl_Types.h -//================================================================ -SUIT_SelectionFilter* GEOM_Displayer::getFilter( const int theMode ) -{ - SUIT_SelectionFilter* aFilter; - - int aTopAbsMode = getTopAbsMode( theMode ); - if ( aTopAbsMode != -1 ) - aFilter = new GEOM_TypeFilter( getStudy(), aTopAbsMode, true ); //@ aFilter = new GEOM_TypeFilter( ( TopAbs_ShapeEnum )aTopAbsMode ); - else - switch ( theMode ) - { - case GEOM_LINE : aFilter = new GEOM_EdgeFilter( getStudy(), StdSelect_Line ); break; - case GEOM_CIRCLE : aFilter = new GEOM_EdgeFilter( getStudy(), StdSelect_Circle ); break; - - case GEOM_PLANE : aFilter = new GEOM_FaceFilter( getStudy(), StdSelect_Plane ); break; - case GEOM_CYLINDER : aFilter = new GEOM_FaceFilter( getStudy(), StdSelect_Cylinder ); break; - case GEOM_SPHERE : aFilter = new GEOM_FaceFilter( getStudy(), StdSelect_Sphere ); break; - case GEOM_TORUS : aFilter = new GEOM_FaceFilter( getStudy(), StdSelect_Torus ); break; - case GEOM_REVOLUTION: aFilter = new GEOM_FaceFilter( getStudy(), StdSelect_Revol ); break; - case GEOM_CONE : aFilter = new GEOM_FaceFilter( getStudy(), StdSelect_Cone ); break; - - case GEOM_PREVIEW : aFilter = new GEOM_PreviewFilter( getStudy() ); break; - - case GEOM_ALLSHAPES : aFilter = new GEOM_SelectionFilter(getStudy(), true ); break; - case GEOM_ALLGEOM : aFilter = new SalomeApp_TypeFilter( getStudy(), "GEOM" ); break; - - default : aFilter = new GEOM_TypeFilter( getStudy(), theMode ); break; - } - - return aFilter; -} - -//================================================================ -// Function : getEntry -// Purpose : -//================================================================ -static char* getEntry( GEOM::GEOM_Object_ptr object ) -{ - SUIT_Session* session = SUIT_Session::session(); - SalomeApp_Application* app = dynamic_cast( session->activeApplication() ); - if ( app ) - { - string IOR = app->orb()->object_to_string( object ); - if ( IOR != "" ) - { - SalomeApp_Study* study = ( SalomeApp_Study* )app->activeStudy(); - _PTR(SObject) SO ( study->studyDS()->FindObjectIOR( IOR ) ); - if ( SO ) - return (char*)(SO->GetID().c_str()); - } - } - return ""; -} - -//================================================================ -// Function : getName -// Purpose : -//================================================================ -static const char* getName( GEOM::GEOM_Object_ptr object ) -{ - SUIT_Session* session = SUIT_Session::session(); - SalomeApp_Application* app = dynamic_cast( session->activeApplication() ); - if ( app ) - { - string IOR = app->orb()->object_to_string( object ); - if ( IOR != "" ) - { - SalomeApp_Study* study = ( SalomeApp_Study* )app->activeStudy(); - _PTR(SObject) aSObj ( study->studyDS()->FindObjectIOR( IOR ) ); - - _PTR(GenericAttribute) anAttr; - - if ( aSObj && aSObj->FindAttribute( anAttr, "AttributeName") ) - { - _PTR(AttributeName) aNameAttr( anAttr ); - return aNameAttr->Value().c_str(); - } - } - } - - return ""; -} - -//================================================================= -/*! - * GEOM_Displayer::GEOM_Displayer - * Constructor - */ -//================================================================= -GEOM_Displayer::GEOM_Displayer( SalomeApp_Study* study ) -{ - myStudy = study; - - /* Shading Color */ - SUIT_Session* session = SUIT_Session::session(); - SUIT_ResourceMgr* resMgr = session->resourceMgr(); - - QColor col = resMgr->colorValue( "Geometry", "shading_color", QColor( 255, 0, 0 ) ); - myShadingColor = SalomeApp_Tools::color( col ); - - myDisplayMode = resMgr->integerValue("Geometry", "display_mode", 0); - - myColor = -1; - // This color is used for shape displaying. If it is equal -1 then - // default color is used. - - myWidth = -1; - myType = -1; - - myToActivate = true; - // This parameter is used for activisation/deactivisation of objects to be displayed - - myViewFrame = 0; -} - -//================================================================= -/*! - * GEOM_Displayer::~GEOM_Displayer - * Destructor - */ -//================================================================= -GEOM_Displayer::~GEOM_Displayer() -{ -} - -//================================================================= -/*! - * GetActiveView - * Get active study frame, returns 0 if no open study frame - */ -//================================================================= -SALOME_View* GEOM_Displayer::GetActiveView() -{ - SUIT_Session* session = SUIT_Session::session(); - if ( SUIT_Application* app = session->activeApplication() ) { - if ( SalomeApp_Application* sApp = dynamic_cast( app ) ) { - if( SUIT_ViewManager* vman = sApp->activeViewManager() ) { - if ( SUIT_ViewModel* vmod = vman->getViewModel() ) - return dynamic_cast( vmod ); - } - } - } - return 0; -} - -//================================================================= -/*! - * GEOM_Displayer::Display - * Display interactive object in the current viewer - */ -//================================================================= -void GEOM_Displayer::Display( const Handle(SALOME_InteractiveObject)& theIO, - const bool updateViewer, - SALOME_View* theViewFrame ) -{ - SALOME_View* vf = theViewFrame ? theViewFrame : GetActiveView(); - if ( vf ) - { - SALOME_Prs* prs = buildPresentation( theIO, vf ); - - if ( prs ) - { - vf->BeforeDisplay( this ); - vf->Display( prs ); - vf->AfterDisplay( this ); - - if ( updateViewer ) - vf->Repaint(); - - delete prs; // delete presentation because displayer is its owner - } - } -} - -//================================================================= -/*! - * GEOM_Displayer::Display - * This overloaded Display() method can be useful for operations - * not using dialog boxes. - */ -//================================================================= -void GEOM_Displayer::Display( GEOM::GEOM_Object_ptr theObj, const bool updateViewer ) -{ - if ( theObj->_is_nil() ) - return; - - string entry = getEntry( theObj ); - if ( entry != "" ) { - Display( new SALOME_InteractiveObject( - entry.c_str(), "GEOM", strdup( getName( theObj ) ) ), updateViewer ); - } -} - -//================================================================= -/*! - * GEOM_Displayer::Erase - * Erase interactive object in the current viewer - */ -//================================================================= -void GEOM_Displayer::Erase( const Handle(SALOME_InteractiveObject)& theIO, - const bool forced, - const bool updateViewer, - SALOME_View* theViewFrame ) -{ - if ( theIO.IsNull() ) - return; - - SALOME_View* vf = theViewFrame ? theViewFrame : GetActiveView(); - - if ( vf ) { - SALOME_Prs* prs = vf->CreatePrs( theIO->getEntry() ); - if ( prs ) { - vf->Erase( prs, forced ); - if ( updateViewer ) - vf->Repaint(); - delete prs; // delete presentation because displayer is its owner - } - } -} - -//================================================================= -/*! - * GEOM_Displayer::Erase - * Erase geometry object in the current viewer - */ -//================================================================= -void GEOM_Displayer::Erase( GEOM::GEOM_Object_ptr theObj, - const bool forced, - const bool updateViewer ) -{ - string entry = getEntry( theObj ); - if ( entry != "" ) - { - Erase( new SALOME_InteractiveObject( - entry.c_str(), "GEOM", strdup( getName( theObj ) ) ), forced, updateViewer ); - } -} - -//================================================================= -/*! - * GEOM_Displayer::EraseAll - * Erase all objects in the current viewer - */ -//================================================================= -void GEOM_Displayer::EraseAll ( const bool forced, - const bool updateViewer, - SALOME_View* theViewFrame ) -{ - SALOME_View* vf = theViewFrame ? theViewFrame : GetActiveView(); - - if ( vf ) { - vf->EraseAll( forced ); - if ( updateViewer ) - vf->Repaint(); - } -} - -//================================================================= -/*! - * GEOM_Displayer::Redisplay - * Redisplay (erase and then display again) interactive object - * in the current viewer - */ -//================================================================= -void GEOM_Displayer::Redisplay( const Handle(SALOME_InteractiveObject)& theIO, - const bool updateViewer ) -{ - // Remove the object permanently ( == true) - SUIT_Session* ses = SUIT_Session::session(); - SUIT_Application* app = ses->activeApplication(); - if ( app ) - { - SUIT_Desktop* desk = app->desktop(); - QPtrList wnds = desk->windows(); - SUIT_ViewWindow* wnd; - for ( wnd = wnds.first(); wnd; wnd = wnds.next() ) - { - SUIT_ViewManager* vman = wnd->getViewManager(); - if ( vman ) - { - SUIT_ViewModel* vmodel = vman->getViewModel(); - if ( vmodel ) - { - SALOME_View* view = dynamic_cast(vmodel); - if ( view ) - { - if ( view->isVisible( theIO ) || view == GetActiveView() ) - { - Erase( theIO, true, false, view ); - Display( theIO, updateViewer, view ); - } - } - } - } - } - } -} - -//================================================================= -/*! - * GEOM_Displayer::Display - * Calls Display() method for each object in the given list - */ -//================================================================= -void GEOM_Displayer::Display( const SALOME_ListIO& theIOList, const bool updateViewer ) -{ - SALOME_ListIteratorOfListIO Iter( theIOList ); - for ( ; Iter.More(); Iter.Next() ) { - Display( Iter.Value(), false ); - } - if ( updateViewer ) - UpdateViewer(); -} - -//================================================================= -/*! - * GEOM_Displayer::Erase - * Calls Erase() method for each object in the given list - */ -//================================================================= -void GEOM_Displayer::Erase( const SALOME_ListIO& theIOList, - const bool forced, - const bool updateViewer ) -{ - SALOME_ListIteratorOfListIO Iter( theIOList ); - for ( ; Iter.More(); Iter.Next() ) - Erase( Iter.Value(), forced, false ); - - if ( updateViewer ) - UpdateViewer(); -} - -//================================================================= -/*! - * GEOM_Displayer::Redisplay - * Calls Redisplay() method for each object in the given list - */ -//================================================================= -void GEOM_Displayer::Redisplay( const SALOME_ListIO& theIOList, const bool updateViewer ) -{ - SALOME_ListIteratorOfListIO Iter( theIOList ); - for ( ; Iter.More(); Iter.Next() ) - Redisplay( Iter.Value(), false ); - - if ( updateViewer ) - UpdateViewer(); -} - -//================================================================= -/*! - * GEOM_Displayer::UpdateViewer - * Update current viewer - */ -//================================================================= -void GEOM_Displayer::UpdateViewer() -{ - SALOME_View* vf = GetActiveView(); - if ( vf ) - vf->Repaint(); -} - -//================================================================= -/*! - * GEOM_Displayer::Update - * Update OCC presentaion - * [ Reimplemented from SALOME_Displayer ] - */ -//================================================================= -void GEOM_Displayer::Update( SALOME_OCCPrs* prs ) -{ - SOCC_Prs* occPrs = dynamic_cast( prs ); - if ( !occPrs ) - return; - - if ( myType == GEOM_MARKER && !myShape.IsNull() && myShape.ShapeType() == TopAbs_FACE ) - { - TopoDS_Face aFace = TopoDS::Face( myShape ); - Handle(Geom_Plane) aPlane = Handle(Geom_Plane)::DownCast( BRep_Tool::Surface( aFace ) ); - if ( !aPlane.IsNull() ) - { - gp_Ax3 aPos = aPlane->Pln().Position(); - Handle(Geom_Axis2Placement) aPlc = new Geom_Axis2Placement( aPos.Ax2() ); - - Handle(GEOM_AISTrihedron) aTrh; - - if ( occPrs->IsNull() ) - { - aTrh = new GEOM_AISTrihedron( aPlc ); - - if ( HasColor() ) - aTrh->SetColor( (Quantity_NameOfColor)GetColor() ); - - if ( HasWidth() ) - aTrh->SetWidth( GetWidth() ); - - if ( !myIO.IsNull() ) - { - aTrh->setIO( myIO ); - aTrh->SetOwner( myIO ); - } - - occPrs->AddObject( aTrh ); - } - else - { - AIS_ListOfInteractive aList; - occPrs->GetObjects( aList ); - AIS_ListIteratorOfListOfInteractive anIter( aList ); - for ( ; anIter.More(); anIter.Next() ) - { - aTrh = Handle(GEOM_AISTrihedron)::DownCast( anIter.Value() ); - if ( !aTrh.IsNull() ) - { - aTrh->SetComponent( aPlc ); - aTrh->SetToUpdate(); - } - } - } - - occPrs->SetToActivate( ToActivate() ); - } - } - else - { - // if presentation is empty we try to create new one - if ( occPrs->IsNull() ) - { - if ( !myShape.IsNull() ) - { - Handle(GEOM_AISShape) AISShape = new GEOM_AISShape( myShape, "" ); - // Temporary staff: vertex must be infinite for correct visualization - AISShape->SetInfiniteState( myShape.Infinite() || myShape.ShapeType() == TopAbs_VERTEX ); - - // Setup shape properties here ..., e.g. display mode, color, transparency, etc - AISShape->SetDisplayMode( myDisplayMode ); - AISShape->SetShadingColor( myShadingColor ); - - if ( HasColor() ) - { - AISShape->SetColor( (Quantity_NameOfColor)GetColor() ); - if ( myShape.ShapeType() == TopAbs_VERTEX ) - { - Handle(Prs3d_PointAspect) anAspect = AISShape->Attributes()->PointAspect(); - anAspect->SetColor( (Quantity_NameOfColor)GetColor() ); - AISShape->Attributes()->SetPointAspect( anAspect ); - } - } - - if ( HasWidth() ) - AISShape->SetWidth( GetWidth() ); - - if ( !myIO.IsNull() ) - { - AISShape->setIO( myIO ); - AISShape->SetOwner( myIO ); - } - else if ( !myName.empty() ) - { - // Workaround to allow selection of temporary objects - static int tempId = 0; - char buf[50]; - sprintf( buf, "TEMP_%d", tempId++ ); - Handle( SALOME_InteractiveObject ) anObj = - new SALOME_InteractiveObject( buf, "GEOM", myName.c_str() ); - AISShape->setIO( anObj ); - AISShape->SetOwner( anObj ); - } - // AISShape->SetName(???); ??? necessary to set name ??? - occPrs->AddObject( AISShape ); - - // In accordance with ToActivate() value object will be activated/deactivated - // when it will be displayed - occPrs->SetToActivate( ToActivate() ); - } - } - // if presentation is found -> set again shape for it - else - { - if ( !myShape.IsNull() ) - { - AIS_ListOfInteractive IOList; - occPrs->GetObjects( IOList ); - AIS_ListIteratorOfListOfInteractive Iter( IOList ); - for ( ; Iter.More(); Iter.Next() ) - { - Handle(GEOM_AISShape) AISShape = Handle(GEOM_AISShape)::DownCast( Iter.Value() ); - if ( AISShape.IsNull() ) - continue; - if ( AISShape->Shape() != myShape ) - { - AISShape->Set( myShape ); - AISShape->UpdateSelection(); - AISShape->SetToUpdate(); - } - if ( !myIO.IsNull() ) - { - AISShape->setIO( myIO ); - AISShape->SetOwner( myIO ); - } - } - } - } - } -} - -//================================================================= -/*! - * GEOM_Displayer::Update - * Update VTK presentaion - * [ Reimplemented from SALOME_Displayer ] - */ -//================================================================= -void GEOM_Displayer::Update( SALOME_VTKPrs* prs ) -{ - SVTK_Prs* vtkPrs = dynamic_cast( prs ); - if ( !vtkPrs || myShape.IsNull() ) - return; - - vtkActorCollection* theActors = 0; - - if ( myType == GEOM_MARKER && !myShape.IsNull() && myShape.ShapeType() == TopAbs_FACE ) - { - myToActivate = false; - GEOM_VTKTrihedron* aTrh = GEOM_VTKTrihedron::New(); - - if ( HasColor() ) - { - Quantity_Color aColor( (Quantity_NameOfColor)GetColor() ); - aTrh->SetColor( aColor.Red(), aColor.Green(), aColor.Blue() ); - } - - Handle(Geom_Plane) aPlane = - Handle(Geom_Plane)::DownCast( BRep_Tool::Surface( TopoDS::Face( myShape ) ) ); - if ( aPlane.IsNull() ) - return; - - gp_Ax2 anAx2 = aPlane->Pln().Position().Ax2(); - aTrh->SetPlacement( new Geom_Axis2Placement( anAx2 ) ); - -// if ( SVTK_Viewer* vf = dynamic_cast( GetActiveView() ) ) -// aTrh->SetSize( 0.5 * vf->GetTrihedronSize() ); - - vtkPrs->AddObject( aTrh ); - - theActors = vtkActorCollection::New(); - theActors->AddItem( aTrh ); - } - else - theActors = GEOM_AssemblyBuilder::BuildActors( myShape, 0, 0, Standard_True ); - - theActors->InitTraversal(); - - vtkActor* anActor = (vtkActor*)theActors->GetNextActor(); - - vtkProperty* aProp = 0; - - if ( HasColor() || HasWidth() ) - { - aProp = vtkProperty::New(); - aProp->SetRepresentationToWireframe(); - } - - if ( HasColor() ) - { - Quantity_Color aColor( (Quantity_NameOfColor)GetColor() ); - aProp->SetColor( aColor.Red(), aColor.Green(), aColor.Blue() ); - } - - if ( HasWidth() ) - { - aProp->SetLineWidth( GetWidth() ); - } - - while ( anActor != NULL ) - { - SALOME_Actor* GActor = SALOME_Actor::SafeDownCast( anActor ); - - GActor->setIO( myIO ); - - if ( aProp ) - { - GActor->SetProperty( aProp ); - GActor->SetPreviewProperty( aProp ); - - GEOM_Actor* aGeomGActor = GEOM_Actor::SafeDownCast( anActor ); - if ( aGeomGActor != 0 ) - { - aGeomGActor->SetShadingProperty( aProp ); - aGeomGActor->SetWireframeProperty( aProp ); - } - } - - if ( myToActivate ) - GActor->PickableOn(); - else - GActor->PickableOff(); - - vtkPrs->AddObject( GActor ); - - anActor = (vtkActor*)theActors->GetNextActor(); - } - - if ( aProp ) - aProp->Delete(); - - theActors->Delete(); -} - -//================================================================= -/*! - * GEOM_Displayer::BuildPrs - * Build presentation accordint to the current viewer type - */ -//================================================================= -SALOME_Prs* GEOM_Displayer::BuildPrs( GEOM::GEOM_Object_ptr theObj ) -{ - if ( theObj->_is_nil() ) - return 0; - - myViewFrame = GetActiveView(); - if ( myViewFrame == 0 ) - return 0; - - SALOME_Prs* aPrs = myViewFrame->CreatePrs(); - if ( aPrs == 0 ) - return 0; - - internalReset(); - setShape( GEOM_Client().GetShape( GeometryGUI::GetGeomGen(), theObj ) ); - myType = theObj->GetType(); - - // Update presentation - UpdatePrs( aPrs ); - - return aPrs; -} - -//================================================================= -/*! - * GEOM_Displayer::BuildPrs - * Build presentation accordint to the current viewer type - */ -//================================================================= -SALOME_Prs* GEOM_Displayer::BuildPrs( const TopoDS_Shape& theShape ) -{ - myViewFrame = GetActiveView(); - if ( theShape.IsNull() || myViewFrame == 0 ) - return 0; - - SALOME_Prs* aPrs = myViewFrame->CreatePrs(); - if ( aPrs == 0 ) - return 0; - - internalReset(); - setShape( theShape ); - myType = -1; - - UpdatePrs( aPrs ); - - return aPrs; -} - -//================================================================= -/*! - * GEOM_Displayer::buildPresentation - * Builds/finds object's presentation for the current viewer - * Calls corresponding Update() method by means of double dispatch - * [ internal ] - */ -//================================================================= -SALOME_Prs* GEOM_Displayer::buildPresentation( const Handle(SALOME_InteractiveObject)& theIO, - SALOME_View* theViewFrame ) -{ - SALOME_Prs* prs = 0; - internalReset(); - - myViewFrame = theViewFrame ? theViewFrame : GetActiveView(); - - if ( myViewFrame ) - { - prs = myViewFrame->CreatePrs( !theIO.IsNull() ? theIO->getEntry() : 0 ); - if ( prs ) - { - if ( !theIO.IsNull() ) - { - // set interactive object - setIO( theIO ); - // Find SOBject (because shape should be published previously) - SUIT_Session* session = SUIT_Session::session(); - SUIT_Application* app = session->activeApplication(); - if ( app ) - { - SalomeApp_Study* study = dynamic_cast( app->activeStudy() ); - if ( study ) - { - _PTR(SObject) SO ( study->studyDS()->FindObjectID( theIO->getEntry() ) ); - if ( SO ) - { - // get CORBA reference to data object - CORBA::Object_var object = GeometryGUI::ClientSObjectToObject(SO); - if ( !CORBA::is_nil( object ) ) - { - // downcast to GEOM object - GEOM::GEOM_Object_var GeomObject = GEOM::GEOM_Object::_narrow( object ); - if ( !GeomObject->_is_nil() ) - { - // finally set shape - setShape( GEOM_Client().GetShape( GeometryGUI::GetGeomGen(), GeomObject ) ); - myType = GeomObject->GetType(); - } - } - } - } - } - } - UpdatePrs( prs ); // Update presentation by using of the double dispatch - } - } - return prs; -} - -//================================================================= -/*! - * GEOM_Displayer::internalReset - * Resets internal data - * [internal] - */ -//================================================================= -void GEOM_Displayer::internalReset() -{ - myIO.Nullify(); - myShape.Nullify(); -} - -//================================================================= -/*! - * GEOM_Displayer::LocalSelection - * Activate selection of CAD shapes with activisation of selection - * of their sub-shapes (with opened local context for OCC viewer) - */ -//================================================================= -void GEOM_Displayer::LocalSelection( const Handle(SALOME_InteractiveObject)& theIO, const int theMode ) -{ - SUIT_Session* session = SUIT_Session::session(); - SalomeApp_Application* app = dynamic_cast( session->activeApplication() ); - if ( !app ) - return; - - SalomeApp_SelectionMgr* sm = app->selectionMgr(); - - // remove all filters from selection - sm->clearFilters(); - - SALOME_View* vf = GetActiveView(); - if ( vf ) - { - SALOME_Prs* prs = vf->CreatePrs( theIO.IsNull() ? 0 : theIO->getEntry() ); - vf->LocalSelection( prs, theMode ); - delete prs; // delete presentation because displayer is its owner - } -} - -//================================================================= -/*! - * GEOM_Displayer::globalSelection - * Activate selection of CAD shapes without activisation of selection - * of their sub-shapes (without opened local context for OCC viewer) - */ -//================================================================= -void GEOM_Displayer::GlobalSelection( const int theMode, const bool update ) -{ - TColStd_MapOfInteger aModes; - aModes.Add( theMode ); - GlobalSelection( aModes, update ); -} - -//================================================================= -/*! - * GEOM_Displayer::globalSelection - * Activate selection of CAD shapes without activisation of selection - * of their sub-shapes (without opened local context for OCC viewer) - */ -//================================================================= -void GEOM_Displayer::GlobalSelection( const TColStd_MapOfInteger& theModes, - const bool update ) -{ - SUIT_Session* session = SUIT_Session::session(); - SalomeApp_Application* app = dynamic_cast( session->activeApplication() ); - if ( !app ) - return; - - SALOME_View* vf = GetActiveView(); - if ( vf == 0 ) - return; - - // Close local context - vf->GlobalSelection( update ); - - // Set selection filters in accordance with current mode - SalomeApp_SelectionMgr* sm = app->selectionMgr(); - if ( !sm ) - return; - - // Remove from selection temporary objects if necessary - if ( !theModes.Contains( GEOM_PREVIEW ) ) - clearTemporary( sm ); - - //@ aSel->ClearIndex(); - - sm->clearFilters(); - - // Remove filters from AIS_InteractiveContext - Handle(AIS_InteractiveContext) ic; - SOCC_Viewer* viewer = dynamic_cast( vf ); - if ( viewer ) - { - ic = viewer->getAISContext(); - if ( !ic.IsNull() ) - ic->RemoveFilters(); - } - - if ( theModes.Contains( GEOM_ALLOBJECTS ) ) - return; - - SUIT_SelectionFilter* aFilter; - if ( theModes.Extent() == 1 ) - { - int aMode = TColStd_MapIteratorOfMapOfInteger( theModes ).Key(); - aFilter = getFilter( aMode ); - } - else if ( theModes.Extent() > 1 ) - { - TColStd_MapOfInteger aTopAbsModes; - TColStd_MapIteratorOfMapOfInteger anIter( theModes ); - QPtrList aListOfFilters; - for ( ; anIter.More(); anIter.Next() ) - { - SUIT_SelectionFilter* aFilter = getFilter( anIter.Key() ); - if ( aFilter ) - aListOfFilters.append( aFilter ); - } - - aFilter = new GEOM_LogicalFilter( aListOfFilters, GEOM_LogicalFilter::LO_OR ); - } - else - return; - - if ( aFilter ) - { - sm->installFilter( aFilter ); - if ( !ic.IsNull() ) - { - Handle(GEOM_OCCFilter) anOCCFilter = new GEOM_OCCFilter( sm ); - ic->AddFilter( anOCCFilter ); - } - } -} - -//================================================================= -/*! - * GEOM_Displayer::LocalSelection - * Activate selection of CAD shapes with activisation of selection - * of their sub-shapes (with opened local context for OCC viewer) - */ -//================================================================= -void GEOM_Displayer::LocalSelection( const SALOME_ListIO& theIOList, const int theMode ) -{ - SALOME_ListIteratorOfListIO Iter( theIOList ); - for ( ; Iter.More(); Iter.Next() ) - LocalSelection( Iter.Value(), theMode ); -} - -//================================================================= -/*! - * GEOM_Displayer::BeforeDisplay - * Called before displaying of pars. Close local context - * [ Reimplemented from SALOME_Displayer ] - */ -//================================================================= -void GEOM_Displayer::BeforeDisplay( SALOME_View* v, const SALOME_OCCViewType& ) -{ - SOCC_Viewer* vf = dynamic_cast( v ); - if ( vf ) - { - Handle(AIS_InteractiveContext) ic = vf->getAISContext(); - if ( !ic.IsNull() ) - { - if ( ic->HasOpenedContext() ) - ic->CloseAllContexts(); - } - } -} - -void GEOM_Displayer::AfterDisplay( SALOME_View*, const SALOME_OCCViewType& ) -{ -} - - -//================================================================= -/*! - * GEOM_Displayer::SetColor - * Set color for shape displaying. If it is equal -1 then default color is used. - * Available values are from Quantity_NameOfColor enumeration - */ -//================================================================= -void GEOM_Displayer::SetColor( const int color ) -{ - myColor = color; -} - -int GEOM_Displayer::GetColor() const -{ - return myColor; -} - -bool GEOM_Displayer::HasColor() const -{ - return myColor != -1; -} - -void GEOM_Displayer::UnsetColor() -{ - myColor = -1; -} - -//================================================================= -/*! - * GEOM_Displayer::SetWidth - * Set width of shape displaying. If it is equal -1 then default width is used. - */ -//================================================================= -void GEOM_Displayer::SetWidth( const double width ) -{ - myWidth = width; -} - -double GEOM_Displayer::GetWidth() const -{ - return myWidth; -} - -bool GEOM_Displayer::HasWidth() const -{ - return myWidth != -1; -} - -void GEOM_Displayer::UnsetWidth() -{ - myWidth = -1; -} - -//================================================================= -/*! - * GEOM_Displayer::SetToActivate - * This method is used for activisation/deactivisation of objects to be displayed - */ -//================================================================= -void GEOM_Displayer::SetToActivate( const bool toActivate ) -{ - myToActivate = toActivate; -} -bool GEOM_Displayer::ToActivate() const -{ - return myToActivate; -} - -//================================================================= -/*! - * GEOM_Displayer::clearTemporary - * Removes from selection temporary objects - */ -//================================================================= -void GEOM_Displayer::clearTemporary( SalomeApp_SelectionMgr* theSelMgr ) -{ - SALOME_ListIO selected, toSelect; - theSelMgr->selectedObjects( selected ); - - for ( SALOME_ListIteratorOfListIO it( selected ) ; it.More(); it.Next() ) { - Handle(SALOME_InteractiveObject) io = it.Value(); - if ( !io.IsNull() && io->hasEntry() && strncmp( io->getEntry(), "TEMP_", 5 ) != 0 ) - toSelect.Append( it.Value() ); - } - - theSelMgr->setSelectedObjects( toSelect, true ); -} - diff --git a/src/GEOMGUI/GEOM_Displayer.h b/src/GEOMGUI/GEOM_Displayer.h deleted file mode 100644 index 18be72e31..000000000 --- a/src/GEOMGUI/GEOM_Displayer.h +++ /dev/null @@ -1,197 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOM_Displayer.h -// Author : Vadim SANDLER -// Module : GEOM -// $Header$ - -#if !defined (__GEOM_DISPLAYER_H) -#define __GEOM_DISPLAYER_H - -#include "SALOME_Prs.h" -#include "SALOME_InteractiveObject.hxx" -#include "SALOME_ListIO.hxx" -#include -#include - -#include - -#include -#include CORBA_CLIENT_HEADER(GEOM_Gen) - -#define GEOM_ALLOBJECTS -1 // Selection of all objects is activated -#define GEOM_PREVIEW -2 // Definition for preview selection -#define GEOM_ALLSHAPES -3 // Selection of all shapes is activated -#define GEOM_ALLGEOM -4 // Selection of all geom objects is activated - -typedef std::list ObjectList; - -class TColStd_MapOfInteger; -class SalomeApp_SelectionMgr; -class SalomeApp_Study; -class SUIT_SelectionFilter; -//class SALOME_Selection; -//#ifdef WNT -//#include -//#else -//#define SALOME_WNT_EXPORT -//#endif -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define GEOMGUI_WNT_EXPORT __declspec( dllexport ) -#else -#define GEOMGUI_WNT_EXPORT -#endif - -class GEOMGUI_WNT_EXPORT GEOM_Displayer : public SALOME_Displayer -{ - -public: - /* Constructor */ - GEOM_Displayer( SalomeApp_Study* study ); - /* Destructor */ - virtual ~GEOM_Displayer(); - - /* Display/Erase object methods */ - - void Display ( const Handle(SALOME_InteractiveObject)& theIO, - const bool updateViewer = true, - SALOME_View* theViewFrame = 0 ); - - // This overloaded Display() method can be useful for operations - // not using dialog boxes. - void Display ( GEOM::GEOM_Object_ptr theObj, - const bool updateViewer = true ); - - void Redisplay ( const Handle(SALOME_InteractiveObject)& theIO, - const bool updateViewer = true ); - - void Erase ( const Handle(SALOME_InteractiveObject)& theIO, - const bool forced = false, - const bool updateViewer = true, - SALOME_View* theViewFrame = 0 ); - - void Erase ( GEOM::GEOM_Object_ptr theObj, - const bool forced = false, - const bool updateViewer = true ); - - /* Display/Erase list of objects methods */ - - void Display ( const SALOME_ListIO& theIOList, - const bool updateViewer = true ); - - void Erase ( const SALOME_ListIO& theIOList, - const bool forced = false, - const bool updateViewer = true ); - - void Redisplay ( const SALOME_ListIO& theIOList, - const bool updateViewer = true ); - - /* Erase all objects displayed in the given or active view */ - void EraseAll ( const bool forced = false, - const bool updateViewer = true, - SALOME_View* theViewFrame = 0 ); - - /* Update current viewer */ - void UpdateViewer(); - - /* build presentation accordint to the current viewer type*/ - SALOME_Prs* BuildPrs ( GEOM::GEOM_Object_ptr ); - SALOME_Prs* BuildPrs ( const TopoDS_Shape& ); - - /* Set color for shape displaying. If it is equal -1 then default color is used. - Available values are from Quantity_NameOfColor enumeration */ - void SetColor ( const int ); - void UnsetColor(); - int GetColor () const; - bool HasColor () const; - - /* Set width for shape displaying. If it is equal -1 then default width is used. */ - void SetWidth ( const double ); - void UnsetWidth(); - double GetWidth () const; - bool HasWidth () const; - - - /* Sets name - for temporary objects only */ - void SetName( const char* theName ) { myName = theName; } - void UnsetName() { myName = ""; } - - /* Reimplemented from SALOME_Displayer */ - virtual void Update( SALOME_OCCPrs* ); - virtual void Update( SALOME_VTKPrs* ); - virtual void BeforeDisplay( SALOME_View*, const SALOME_OCCViewType& ); - virtual void AfterDisplay ( SALOME_View*, const SALOME_OCCViewType& ); - - /* This methos is used for activisation/deactivisation of objects to be displayed*/ - void SetToActivate( const bool ); - bool ToActivate() const; - - /* Activate/Deactivate selection*/ - void LocalSelection( const Handle(SALOME_InteractiveObject)&, const int ); - void LocalSelection( const SALOME_ListIO& theIOList, const int ); - void GlobalSelection( const int = GEOM_ALLOBJECTS, const bool = false ); - void GlobalSelection( const TColStd_MapOfInteger&, const bool = false ); - - static SALOME_View* GetActiveView(); - SalomeApp_Study* getStudy() const {return myStudy;} - -protected: - /* internal methods */ - /* Builds presentation accordint to the current viewer type */ - SALOME_Prs* buildPresentation( const Handle(SALOME_InteractiveObject)& theIO, - SALOME_View* theViewFrame = 0 ); - - /* Sets interactive object */ - void setIO( const Handle(SALOME_InteractiveObject)& theIO ) { myIO = theIO; } - - /* Sets shape */ - void setShape( const TopoDS_Shape& theShape ) { myShape = theShape; } - - /* Resets internal data */ - void internalReset(); - - void clearTemporary( SalomeApp_SelectionMgr* theSelMgr ); - - SUIT_SelectionFilter* getFilter( const int theMode ); - -protected: - Handle(SALOME_InteractiveObject) myIO; - TopoDS_Shape myShape; - string myName; - int myType; - SALOME_View* myViewFrame; - - // Attributes - Quantity_Color myShadingColor; - int myColor; - double myWidth; - bool myToActivate; - int myDisplayMode; - -private: - SalomeApp_Study* myStudy; -}; - -#endif // __GEOM_DISPLAYER_H - diff --git a/src/GEOMGUI/GEOM_images.po b/src/GEOMGUI/GEOM_images.po deleted file mode 100644 index 82790154e..000000000 --- a/src/GEOMGUI/GEOM_images.po +++ /dev/null @@ -1,731 +0,0 @@ -# This is a Qt message file in .po format. Each msgid starts with -# a scope. This scope should *NOT* be translated - eg. translating -# from French to English, "Foo::Bar" would be translated to "Pub", -# not "Foo::Pub". -msgid "" -msgstr "" -"Project-Id-Version: PROJECT VERSION\n" -"POT-Creation-Date: 2001-06-14 09:11:49 PM CEST\n" -"PO-Revision-Date: 2003-09-22 16:39+0200\n" -"Last-Translator: FULLNAME \n" -"Content-Type: text/plain; charset=iso-8859-1\n" - -#Select -msgid "ICON_SELECT" -msgstr "select1.png" - -#: QAD_ObjectBrowser.cxx:140 -msgid "ICON_OBJBROWSER_Geometry" -msgstr "geometry.png" - -#: QAD_ObjectBrowser.cxx:140 -msgid "ICON_OBJBROWSER_COMPOUND" -msgstr "tree_compound.png" - -#: QAD_ObjectBrowser.cxx:140 -msgid "ICON_OBJBROWSER_COMPSOLID" -msgstr "tree_compsolid.png" - -#: QAD_ObjectBrowser.cxx:140 -msgid "ICON_OBJBROWSER_EDGE" -msgstr "tree_edge.png" - -#: QAD_ObjectBrowser.cxx:140 -msgid "ICON_OBJBROWSER_FACE" -msgstr "tree_face.png" - -#: QAD_ObjectBrowser.cxx:140 -msgid "ICON_OBJBROWSER_SHAPE" -msgstr "tree_shape.png" - -#: QAD_ObjectBrowser.cxx:140 -msgid "ICON_OBJBROWSER_SHELL" -msgstr "tree_shell.png" - -#: QAD_ObjectBrowser.cxx:140 -msgid "ICON_OBJBROWSER_SOLID" -msgstr "tree_solid.png" - -#: QAD_ObjectBrowser.cxx:140 -msgid "ICON_OBJBROWSER_VERTEX" -msgstr "tree_vertex.png" - -#: QAD_ObjectBrowser.cxx:140 -msgid "ICON_OBJBROWSER_WIRE" -msgstr "tree_wire.png" - -#: QAD_ObjectBrowser.cxx:140 -msgid "ICON_OBJBROWSER_BLOCK" -msgstr "tree_block.png" - -#BoxDlg -msgid "ICON_DLG_BOX_2P" -msgstr "box2points.png" - -#BoxDlg -msgid "ICON_DLG_BOX_DXYZ" -msgstr "boxdxyz.png" - -#CylinderDlg -msgid "ICON_DLG_CYLINDER_PV" -msgstr "cylinderpointvector.png" - -#CylinderDlg -msgid "ICON_DLG_CYLINDER_DXYZ" -msgstr "cylinderdxyz.png" - -#SphereDlg -msgid "ICON_DLG_SPHERE_P" -msgstr "spherepoint.png" - -#SphereDlg -msgid "ICON_DLG_SPHERE_DXYZ" -msgstr "spheredxyz.png" - -#torusDlg -msgid "ICON_DLG_TORUS_PV" -msgstr "toruspointvector.png" - -#ConeDlg -msgid "ICON_DLG_CONE_PV" -msgstr "conepointvector.png" - -#torusDlg -msgid "ICON_DLG_TORUS_DXYZ" -msgstr "torusdxyz.png" - -#ConeDlg -msgid "ICON_DLG_CONE_DXYZ" -msgstr "conedxyz.png" - -#LineDlg -msgid "ICON_DLG_LINE_2P" -msgstr "line2points.png" - -#LineDlg -msgid "ICON_DLG_LINE_EDGE" -msgstr "lineedge.png" - -#LineDlg -msgid "ICON_DLG_LINE_PV" -msgstr "linepointvector.png" - -#CircleDlg -msgid "ICON_DLG_CIRCLE_PV" -msgstr "circlepointvector.png" - -#VectorDlg -msgid "ICON_DLG_VECTOR_2P" -msgstr "vector2points.png" - -#vectorDlg -msgid "ICON_DLG_VECTOR_DXYZ" -msgstr "vectordxyz.png" - -#PlaneDlg -msgid "ICON_DLG_PLANE_DXYZ" -msgstr "planedxyz.png" - -#PlaneDlg -msgid "ICON_DLG_PLANE_FACE" -msgstr "planeface.png" - -#PlaneDlg -msgid "ICON_DLG_PLANE_PV" -msgstr "planepointvector.png" - -#WorkingPlaneDlg -msgid "ICON_DLG_WPLANE_FACE" -msgstr "planeworkingface.png" - -#WorkingPlaneDlg -msgid "ICON_DLG_WPLANE_VECTOR" -msgstr "planeworkingvector.png" - -#WorkingPlaneDlg -msgid "ICON_DLG_WPLANE_ORIGIN" -msgstr "planeworkingorigin.png" - -#PointDlg -msgid "ICON_DLG_POINT" -msgstr "point2.png" - -#PointDlg -msgid "ICON_DLG_POINT_REF" -msgstr "point3.png" - -#PoinDlg -msgid "ICON_DLG_POINT_EDGE" -msgstr "pointonedge.png" - -#ArcDlg -msgid "ICON_DLG_ARC" -msgstr "arc.png" - -#ArchimedeDlg -msgid "ICON_DLG_ARCHIMEDE" -msgstr "archimede.png" - -#PartitionDlg -msgid "ICON_DLG_PARTITION" -msgstr "partition.png" - -#PartitionDlg -msgid "ICON_DLG_PARTITION_KEEP_FACES" -msgstr "partitionkeep.png" - -#PartitionDlg -msgid "ICON_DLG_PARTITION_PLANE" -msgstr "partitionplane.png" - -#CenterMassDlg -msgid "ICON_DLG_CENTERMASS" -msgstr "centergravity.png" - -#BoundingBoxDlg -msgid "ICON_DLG_BOUNDING_BOX" -msgstr "bounding.png" - -#CommonDlg -msgid "ICON_DLG_COMMON" -msgstr "common.png" - -#CompoundDlg -msgid "ICON_DLG_BUILD_COMPOUND" -msgstr "build_compound.png" - -#CutDlg -msgid "ICON_DLG_CUT" -msgstr "cut.png" - -#EdgeDlg -msgid "ICON_DLG_BUILD_EDGE" -msgstr "build_edge.png" - -#FaceDlg -msgid "ICON_DLG_BUILD_FACE" -msgstr "build_face.png" - -#ShellDlg -msgid "ICON_DLG_BUILD_SHELL" -msgstr "build_shell.png" - -#SolidDlg -msgid "ICON_DLG_BUILD_SOLID" -msgstr "build_solid.png" - -#WireDlg -msgid "ICON_DLG_BUILD_WIRE" -msgstr "build_wire.png" - -#FillingDlg -msgid "ICON_DLG_FILLING" -msgstr "filling.png" - -#FuseDlg -msgid "ICON_DLG_FUSE" -msgstr "fuse.png" - -#InertiaDlg -msgid "ICON_DLG_INERTIA" -msgstr "axisinertia.png" - -#ToleranceDlg -msgid "ICON_DLG_TOLERANCE" -msgstr "tolerance.png" - -#BasicPropertiesDlg -msgid "ICON_DLG_BASICPROPERTIES" -msgstr "basicproperties.png" - -#WhatisDlg -msgid "ICON_DLG_WHATIS" -msgstr "whatis.png" - -#MinDistDlg -msgid "ICON_DLG_MINDIST" -msgstr "mindist.png" - -#MirrorDlg (MZN: add icons for point and axe) -msgid "ICON_DLG_MIRROR_POINT" -msgstr "mirrorPoint.png" - -msgid "ICON_DLG_MIRROR_AXE" -msgstr "mirrorAxe.png" - -msgid "ICON_DLG_MIRROR_PLANE" -msgstr "mirrorPlane.png" - -#TranslationDlg -msgid "ICON_DLG_TRANSLATION_DXYZ" -msgstr "translationDxyz.png" - -#TranslationDlg -msgid "ICON_DLG_TRANSLATION_POINTS" -msgstr "translationPoints.png" - -#TranslationDlg -msgid "ICON_DLG_TRANSLATION_VECTOR" -msgstr "translationVector.png" - -#RotationDlg -msgid "ICON_DLG_ROTATION" -msgstr "rotate.png" - -#ScaleDlg -msgid "ICON_DLG_SCALE" -msgstr "scale.png" - -#OffsetDlg -msgid "ICON_DLG_OFFSET" -msgstr "offset.png" - -#OrientationDlg -msgid "ICON_DLG_DIVIDE_EDGE" -msgstr "pointonedge.png" - -#SewingDlg -msgid "ICON_DLG_SEWING" -msgstr "sewing.png" - -#PipeDlg -msgid "ICON_DLG_PIPE" -msgstr "pipe.png" - -#PrismDlg -msgid "ICON_DLG_PRISM" -msgstr "prism.png" - -#RevolutionDlg -msgid "ICON_DLG_REVOL" -msgstr "revol.png" - -#SectionDlg -msgid "ICON_DLG_SECTION" -msgstr "section.png" - -#SubShapeDlg -msgid "ICON_DLG_SUBSHAPE" -msgstr "subshape.png" - -#FilletDlg -msgid "ICON_DLG_FILLET" -msgstr "fillet.png" - -#ChamferDlg -msgid "ICON_DLG_CHAMFER" -msgstr "chamfer.png" - -#FilletDlg -msgid "ICON_DLG_FILLET_ALL" -msgstr "filletall.png" - -#ChamferDlg -msgid "ICON_DLG_CHAMFER_ALL" -msgstr "chamferall.png" - -#FilletDlg -msgid "ICON_DLG_FILLET_EDGE" -msgstr "filletedge.png" - -#ChamferDlg -msgid "ICON_DLG_CHAMFER_EDGE" -msgstr "chamferedge.png" - -#FilletDlg -msgid "ICON_DLG_FILLET_FACE" -msgstr "filletface.png" - -#ChamferDlg -msgid "ICON_DLG_CHAMFER_FACE" -msgstr "chamferface.png" - -#ChamferDlg -msgid "ICON_DLG_CHECKSHAPE" -msgstr "check.png" - -msgid "ICON_DLG_CHECK_COMPOUND_OF_BLOCKS" -msgstr "check_blocks_compound.png" - -#SupressFaceDlg -msgid "ICON_DLG_SUPRESS_FACE" -msgstr "supressface.png" - -msgid "ICON_DLG_CLOSECONTOUR" -msgstr "closecontour.png" - -#SupressHoleDlg -msgid "ICON_DLG_SUPRESS_HOLE" -msgstr "supresshole.png" - -#SupressHoleDlg -msgid "ICON_DLG_SUPRESS_HOLE_FACE_SHELL" -msgstr "supressHolesOnFaceShell.png" - -#MultiTranslationDlg -msgid "ICON_DLG_MULTITRANSLATION_SIMPLE" -msgstr "multitranslationsimple.png" - -#MultiTranslationDlg -msgid "ICON_DLG_MULTITRANSLATION" -msgstr "multitranslation.png" - -#MultiTranslationDlg -msgid "ICON_DLG_MULTITRANSLATION_DOUBLE" -msgstr "multitranslationdouble.png" - -#MultiRotationDlg -msgid "ICON_DLG_MULTIROTATION_SIMPLE" -msgstr "multirotationsimple.png" - -#MultiRotationDlg -msgid "ICON_DLG_MULTIROTATION" -msgstr "multirotation.png" - -#MultiRotationDlg -msgid "ICON_DLG_MULTIROTATION_DOUBLE" -msgstr "multirotationdouble.png" - -#EllipseDlg -msgid "ICON_DLG_ELLIPSE_PV" -msgstr "ellipsepointvector.png" - -#SplineDlg -msgid "ICON_DLG_SPLINE" -msgstr "spline.png" - -#SplineDlg -msgid "ICON_DLG_BEZIER" -msgstr "bezier.png" - -#SplineDlg -msgid "ICON_DLG_INTERPOL" -msgstr "interpol.png" - -msgid "ICON_DLG_CIRCLE_PNTS" -msgstr "circle3points.png" - -msgid "ICON_DLG_PLANE_3PNTS" -msgstr "plane3points.png" - -msgid "ICON_DLG_POLYLINE" -msgstr "polyline.png" - -msgid "ICON_DLG_SUPPRESS_INT_WIRES" -msgstr "suppressintwires.png" - -msgid "ICON_DLG_ADD_POINT_ON_EDGE" -msgstr "pointonedge.png" - -msgid "ICON_DLG_SUPPRESS_HOLES" -msgstr "supressHolesOnFaceShell.png" - -msgid "ICON_MARKER" -msgstr "marker.png" - -msgid "ICON_MARKER2" -msgstr "marker2.png" - -msgid "ICON_MARKER3" -msgstr "marker3.png" - -msgid "ICON_DLG_POSITION" -msgstr "position.png" - -msgid "ICON_DLG_POSITION2" -msgstr "position2.png" - -msgid "ICON_DLG_UNDO" -msgstr "undo.png" - -msgid "ICON_DLG_REDO" -msgstr "redo.png" - -msgid "ICON_OBJBROWSER_GROUP_PNT" -msgstr "tree_group_vertex.png" - -msgid "ICON_OBJBROWSER_GROUP_EDGE" -msgstr "tree_group_edge.png" - -msgid "ICON_OBJBROWSER_GROUP_FACE" -msgstr "tree_group_face.png" - -msgid "ICON_OBJBROWSER_GROUP_SOLID" -msgstr "tree_group_solid.png" - -msgid "ICON_OBJBROWSER_LCS" -msgstr "tree_lcs.png" - -msgid "ICON_DLG_SHAPEPROCESS" -msgstr "shapeprocess.png" - -#BlocksGUI_BlockDlg -msgid "ICON_DLG_BLOCK_2F" -msgstr "block_2f.png" - -msgid "ICON_DLG_BLOCK_6F" -msgstr "block_6f.png" - -#BlocksGUI_ExplodeDlg -msgid "ICON_DLG_BLOCK_EXPLODE" -msgstr "subblock.png" - -#BlocksGUI_TrsfDlg -msgid "ICON_DLG_BLOCK_MULTITRSF_SIMPLE" -msgstr "block_multitrsf_simple.png" - -msgid "ICON_DLG_BLOCK_MULTITRSF_DOUBLE" -msgstr "block_multitrsf_double.png" - -#BlocksGUI_QuadFaceDlg -msgid "ICON_DLG_QUAD_FACE_4_VERT" -msgstr "block_face_4v.png" - -msgid "ICON_DLG_QUAD_FACE_2_EDGE" -msgstr "block_face_2e.png" - -msgid "ICON_DLG_QUAD_FACE_4_EDGE" -msgstr "block_face_4e.png" - -msgid "ICON_DLG_GLUE_FACES" -msgstr "glue.png" - -msgid "ICON_DLG_FREE_FACES" -msgstr "free_faces.png" - -msgid "ICON_DLG_PROPAGATE" -msgstr "propagate.png" - -msgid "ICO_DELETE" -msgstr "delete.png" - -msgid "ICO_POINT" -msgstr "point2.png" - -msgid "ICO_LINE" -msgstr "line.png" - -msgid "ICO_CIRCLE" -msgstr "circle.png" - -msgid "ICO_ELLIPSE" -msgstr "ellipse.png" - -msgid "ICO_ARC" -msgstr "arc.png" - -msgid "ICO_CURVE" -msgstr "spline.png" - -msgid "ICO_VECTOR" -msgstr "vector.png" - -msgid "ICO_PLANE" -msgstr "plane.png" - -msgid "ICO_WORK_PLANE" -msgstr "planeWorking.png" - -msgid "ICO_LOCAL_CS" -msgstr "marker.png" - -msgid "ICO_BOX" -msgstr "box.png" - -msgid "ICO_CYLINDER" -msgstr "cylinder.png" - -msgid "ICO_SPHERE" -msgstr "sphere.png" - -msgid "ICO_TORUS" -msgstr "torus.png" - -msgid "ICO_CONE" -msgstr "cone.png" - -msgid "ICO_EXTRUSION" -msgstr "prism.png" - -msgid "ICO_REVOLUTION" -msgstr "revol.png" - -msgid "ICO_FILLING" -msgstr "filling.png" - -msgid "ICO_PIPE" -msgstr "pipe.png" - -msgid "ICO_GROUP_CREATE" -msgstr "group_new.png" - -msgid "ICO_GROUP_EDIT" -msgstr "group_edit.png" - -msgid "ICO_Q_FACE" -msgstr "build_face.png" - -msgid "ICO_HEX_SOLID" -msgstr "box.png" - -msgid "ICO_SKETCH" -msgstr "sketch.png" - -msgid "ICO_EXPLODE" -msgstr "subshape.png" - -msgid "ICO_EDGE" -msgstr "build_edge.png" - -msgid "ICO_WIRE" -msgstr "build_wire.png" - -msgid "ICO_FACE" -msgstr "build_face.png" - -msgid "ICO_SHELL" -msgstr "build_shell.png" - -msgid "ICO_SOLID" -msgstr "build_solid.png" - -msgid "ICO_COMPOUND" -msgstr "build_compound.png" - -msgid "ICO_FUSE" -msgstr "fuse.png" - -msgid "ICO_COMMON" -msgstr "common.png" - -msgid "ICO_CUT" -msgstr "cut.png" - -msgid "ICO_SECTION" -msgstr "section.png" - -msgid "ICO_TRANSLATION" -msgstr "translationVector.png" - -msgid "ICO_ROTATION" -msgstr "rotate.png" - -msgid "ICO_MODIFY_LOCATION" -msgstr "position2.png" - -msgid "ICO_MIRROR" -msgstr "mirrorPlane.png" - -msgid "ICO_SCALE" -msgstr "scale.png" - -msgid "ICO_OFFSET" -msgstr "offset.png" - -msgid "ICO_MUL_TRANSLATION" -msgstr "multitranslation.png" - -msgid "ICO_MUL_ROTATION" -msgstr "multirotation.png" - -msgid "ICO_PARTITION" -msgstr "partition.png" - -msgid "ICO_ARCHIMEDE" -msgstr "archimede.png" - -msgid "ICO_FILLET" -msgstr "fillet.png" - -msgid "ICO_CHAMFER" -msgstr "chamfer.png" - -msgid "ICO_MUL_TRANSFORM" -msgstr "multirotation.png" - -msgid "ICO_EXPLODE_BLOCKS" -msgstr "subshape.png" - -msgid "ICO_PROPAGATE" -msgstr "propagate.png" - -msgid "ICO_SEWING" -msgstr "sewing.png" - -msgid "ICO_GLUE_FACES" -msgstr "glue.png" - -msgid "ICO_SUPPRESS_FACES" -msgstr "supressface.png" - -msgid "ICO_SUPPERSS_HOLES" -msgstr "supresshole.png" - -msgid "ICO_SHAPE_PROCESS" -msgstr "shapeprocess.png" - -msgid "ICO_CLOSE_CONTOUR" -msgstr "closecontour.png" - -msgid "ICO_SUPPRESS_INT_WIRES" -msgstr "suppressintwires.png" - -msgid "ICO_POINT_ON_EDGE" -msgstr "pointonedge.png" - -msgid "ICO_CHECK_FREE_BNDS" -msgstr "free_bound.png" - -msgid "ICO_CHECK_FREE_FACES" -msgstr "free_faces.png" - -msgid "ICO_POINT_COORDS" -msgstr "point_coord.png" - -msgid "ICO_BASIC_PROPS" -msgstr "basicproperties.png" - -msgid "ICO_MASS_CENTER" -msgstr "centergravity.png" - -msgid "ICO_INERTIA" -msgstr "axisinertia.png" - -msgid "ICO_BND_BOX" -msgstr "bounding.png" - -msgid "ICO_MIN_DIST" -msgstr "mindist.png" - -msgid "ICO_TOLERANCE" -msgstr "tolerance.png" - -msgid "ICO_WHAT_IS" -msgstr "whatis.png" - -msgid "ICO_CHECK" -msgstr "check.png" - -msgid "ICO_CHECK_COMPOUND" -msgstr "check_blocks_compound.png" - -msgid "ICO_SHADING" -msgstr "shading.png" - -msgid "ICO_DISPLAY_ALL" -msgstr "displayall.png" - -msgid "ICO_ERASE_ALL" -msgstr "eraseall.png" - -msgid "ICO_DISPLAY" -msgstr "display.png" - -msgid "ICO_DISPLAY_ONLY" -msgstr "displayonly.png" - -msgid "ICO_ERASE" -msgstr "erase.png" - -msgid "ICO_POP_CREATE_GROUP" -msgstr "group_new.png" diff --git a/src/GEOMGUI/GEOM_msg_en.po b/src/GEOMGUI/GEOM_msg_en.po deleted file mode 100644 index a93ce5af3..000000000 --- a/src/GEOMGUI/GEOM_msg_en.po +++ /dev/null @@ -1,2898 +0,0 @@ -# This is a Qt message file in .po format. Each msgid starts with -# a scope. This scope should *NOT* be translated - eg. translating -# from French to English, "Foo::Bar" would be translated to "Pub", -# not "Foo::Pub". -msgid "" -msgstr "" -"Project-Id-Version: PROJECT VERSION\n" -"POT-Creation-Date: 2002-03-19 09:35:48 AM CET\n" -"PO-Revision-Date: 2003-10-27 17:32+0100\n" -"Last-Translator: FULLNAME \n" -"Content-Type: text/plain; charset=iso-8859-1\n" - -# -#============================================================================== -# - -#Button Apply -msgid "GEOM_BUT_APPLY" -msgstr "&Apply" - -#Button Close -msgid "GEOM_BUT_CLOSE" -msgstr "&Close" - -#Button Cancel -msgid "GEOM_BUT_CANCEL" -msgstr "&Cancel" - -#Button Ok -msgid "GEOM_BUT_OK" -msgstr "O&k" - -#Button Yes -msgid "GEOM_BUT_YES" -msgstr "&Yes" - -#Button No -msgid "GEOM_BUT_NO" -msgstr "&No" - -#Button Help -msgid "GEOM_BUT_HELP" -msgstr "&Help" - -#Button Explode -msgid "GEOM_BUT_EXPLODE" -msgstr "&Explode" - -# -#============================================================================== -# - -#: GeometryGUI.cxx:563 -msgid "GEOM_INF_LOADED" -msgstr "File %1 loaded." - -# -#============================================================================== -# - -#: GeometryGUI.cxx:3069 -msgid "GEOM_PRP_COMMAND" -msgstr "No command associated with this id = %1." - -#: GeometryGUI.cxx:4977 -msgid "GEOM_PRP_ABORT" -msgstr "Operation aborted" - -#: GeometryGUI.cxx:5058 -msgid "GEOM_PRP_DONE" -msgstr "Operation done" - -#: GeometryGUI.cxx:3717 -msgid "GEOM_PRP_LOADING" -msgstr "Loading %1 ..." - -#: GeometryGUI.cxx:1412 -msgid "GEOM_PRP_NULLSHAPE" -msgstr "Error, null or inappropriate shape !" - -#: GeometryGUI.cxx:5072 -msgid "GEOM_PRP_READY" -msgstr "Ready" - -#: GeometryGUI.cxx:1690 -msgid "GEOM_PRP_SELECT_SUBSHAPES" -msgstr "Select Sub Shapes" - -msgid "GEOM_PRP_EXPORT" -msgstr "Exporting geometry to %1 ..." - -msgid "GEOM_CONFIRM" -msgstr "Confirm operation" - -msgid "GEOM_CONFIRM_INFO" -msgstr "Shape contains %1 sub shapes !" - - -msgid "GEOM_PRP_NOT_FOR_VTK_VIEWER" -msgstr "Not allowed in VTK viewer" - -#: GeometryGUI.cxx:1690 -msgid "GEOM_PRP_SHAPE_IN_STUDY" -msgstr "Main shape must be in the study before" - -#: GeometryGUI.cxx:1690 -msgid "GEOM_PRP_SELECT_EDGE" -msgstr "Select edges and click on Apply" - -#: GeometryGUI.cxx:1690 -msgid "GEOM_PRP_SELECT_FACE" -msgstr "Select faces to suppress and click on Ok/Apply" - -#: GeometryGUI.cxx:1690 -msgid "GEOM_PRP_SELECT_FIRST" -msgstr "Select main shape first" - -#: GeometryGUI.cxx:1690 -msgid "GEOM_PRP_MIN_DIST" -msgstr "Min Distance not computed" - -msgid "GEOM_STUDY_LOCKED" -msgstr "The active study is locked and therefore cannot be modified" - -# -#============================================================================== -# - -#: GeometryGUI.cxx:3698 -msgid "GEOM_MEN_ALL_FILES" -msgstr "All Files ( * )" - -#: GeometryGUI.cxx:4389 -msgid "GEOM_MEN_ANGLE" -msgstr "Angle :" - -#: GeometryGUI.cxx:3941 -msgid "GEOM_MEN_COMPONENT" -msgstr "Geometry" - -#: GeometryGUI.cxx:4389 -msgid "GEOM_MEN_ENTER_ANGLE" -msgstr "Enter An Angle In Degrees" - -#: GeometryGUI.cxx:3758 -msgid "GEOM_MEN_EXPORT" -msgstr "Export" - -#: GeometryGUI.cxx:3648 -msgid "GEOM_MEN_IMPORT" -msgstr "Import" - -#: GeometryGUI.cxx:2931 -msgid "GEOM_MEN_ISOS" -msgstr "Select Number Of Isos" - -#: GeometryGUI.cxx:4278 -msgid "GEOM_MEN_POPUP_NAME" -msgstr "%1 Objects" - -#: GeometryGUI.cxx:4414 -msgid "GEOM_MEN_SKETCHER_X" -msgstr "Enter a length to set X" - -#: GeometryGUI.cxx:4438 -msgid "GEOM_MEN_SKETCHER_Y" -msgstr "Enter a length to set Y" - -#: GeometryGUI.cxx:2898 -msgid "GEOM_MEN_TRANSPARENCY" -msgstr "Transparency" - -#: GeometryGUI.cxx:4413 -msgid "GEOM_MEN_X" -msgstr "X :" - -#: GeometryGUI.cxx:4437 -msgid "GEOM_MEN_Y" -msgstr "Y :" - -#: GeometryGUI_NbIsosDlg.cxx:36 -msgid "GEOM_MEN_ISOU" -msgstr "Isos u :" - -#: GeometryGUI_NbIsosDlg.cxx:53 -msgid "GEOM_MEN_ISOV" -msgstr "Isos v :" - -#: GeometryGUI_TransparencyDlg.cxx:31 -msgid "GEOM_MEN_TRANSPARENCY_LABEL" -msgstr "Transparency :" - -msgid "GEOM_MEN_STEP_LABEL" -msgstr "Step :" - -msgid "GEOM_IDENTICAL_NAMES_SELECT_BY_MOUSE" -msgstr "Identical names : select by mouse !" - -msgid "GEOM_NAME_INCORRECT" -msgstr "Object name not found" - -msgid "GEOM_INCORRECT_INPUT" -msgstr "Incorrect input data!" - -# -#============================================================================== -# - -#: GeometryGUI.cxx:892 -msgid "GEOM_WRN_RADIUS_NULL" -msgstr "Radius is null" - -#: GeometryGUI.cxx:3854 -msgid "GEOM_WRN_WARNING" -msgstr "Warning" - -#: GeometryGUI.cxx:3854 -msgid "GEOM_REALLY_DELETE" -msgstr "Do you really want to delete object(s) ?" - -# -#============================================================================== -# - -#Object -msgid "GEOM_OBJECT" -msgstr "Object" - -#Main object -msgid "GEOM_MAIN_OBJECT" -msgstr "Main Object" - -#Tool object -msgid "GEOM_TOOL_OBJECT" -msgstr "Tool Object" - -#Base Object -msgid "GEOM_BASE_OBJECT" -msgstr "Base Object" - -#Path Object -msgid "GEOM_PATH_OBJECT" -msgstr "Path Object" - -#Objects -msgid "GEOM_OBJECTS" -msgstr "Objects" - -#Object i -msgid "GEOM_OBJECT_I" -msgstr "Object %1" - -#Object and result -msgid "GEOM_OBJECT_RESULT" -msgstr "Object And Result" - -#Point -msgid "GEOM_POINT" -msgstr "Point" - -#Base point -msgid "GEOM_BASE_POINT" -msgstr "Base Point" - -#Center Point -msgid "GEOM_CENTER_POINT" -msgstr "Center Point" - -#Diagonal Points -msgid "GEOM_DIAGONAL_POINTS" -msgstr "Diagonal Points" - -#Central Point -msgid "GEOM_CENTRAL_POINT" -msgstr "Central Point" - -#Points -msgid "GEOM_POINTS" -msgstr "Points" - -#Point i -msgid "GEOM_POINT_I" -msgstr "Point %1" - -#Arguments -msgid "GEOM_ARGUMENTS" -msgstr "Arguments" - -#Center -msgid "GEOM_CENTER" -msgstr "Center" - -#Radius -msgid "GEOM_RADIUS" -msgstr "Radius :" - -#Radius i -msgid "GEOM_RADIUS_I" -msgstr "Radius %1 :" - -#Height -msgid "GEOM_HEIGHT" -msgstr "Height :" - -#Length -msgid "GEOM_LENGTH" -msgstr "Length is :" - -#Weight -msgid "GEOM_WEIGHT" -msgstr "Weight :" - -#Coordinates -msgid "GEOM_COORDINATES" -msgstr "Coordinates" - -#Coor. -msgid "GEOM_COOR" -msgstr "Coord. :" - -#Reverse -msgid "GEOM_REVERSE" -msgstr "Reverse" - -#Reverse U -msgid "GEOM_REVERSE_U" -msgstr "Reverse U" - -#Reverse V -msgid "GEOM_REVERSE_V" -msgstr "Reverse V" - -#Angle -msgid "GEOM_ANGLE" -msgstr "Angle :" - -#Axis -msgid "GEOM_AXIS" -msgstr "Axis" - -#Matrix -msgid "GEOM_MATRIX" -msgstr "Matrix :" - -#Vector Length -msgid "GEOM_VECTOR_LENGTH" -msgstr "Vector Length :" - -#Reverse Vector -msgid "GEOM_REVERSE_VECTOR" -msgstr "Reverse Vector" - -#Point Mirror -msgid "GEOM_POINT_MIRROR" -msgstr "Point Mirror" - -#Axe Mirror -msgid "GEOM_AXE_MIRROR" -msgstr "Axe Mirror" - -#Plane Mirror -msgid "GEOM_PLANE_MIRROR" -msgstr "Plane Mirror" - -#Face Selection -msgid "GEOM_FACE_SELECTION" -msgstr "Face Selection" - -#Base -msgid "GEOM_BASE" -msgstr "Base" - -#Water Density -msgid "GEOM_WATER_DENSITY" -msgstr "Water Density :" - -#Meshing Deflection -msgid "GEOM_MESHING_DEFLECTION" -msgstr "Meshing Deflect. :" - -#Dimensions -msgid "GEOM_DIMENSIONS" -msgstr "Dimensions" - -#Precision -msgid "GEOM_PRECISION" -msgstr "Precision :" - -#Selection -msgid "GEOM_SELECTION" -msgstr "Selection" - -#Nb. Times -msgid "GEOM_NB_TIMES" -msgstr "Nb. Times :" - -#Nb. Times U -msgid "GEOM_NB_TIMES_U" -msgstr "Nb. Times U :" - -#Nb. Times V -msgid "GEOM_NB_TIMES_V" -msgstr "Nb. Times V :" - -#Step -msgid "GEOM_STEP" -msgstr "Step :" - -#Step V -msgid "GEOM_STEP_V" -msgstr "Step V :" - -#Step U -msgid "GEOM_STEP_U" -msgstr "Step U :" - -# -#============================================================================== -# - -#Partition -msgid "GEOM_PARTITION" -msgstr "Partition" - -#Half-space partition -msgid "GEOM_PARTITION_HALFSPACE" -msgstr "Half-space partition" - -#Tolerance -msgid "GEOM_TOLERANCE" -msgstr "Tolerance" - -#Orientation -msgid "GEOM_ORIENTATION" -msgstr "Orientation" - -#Pipe -msgid "GEOM_PIPE" -msgstr "Pipe" - -#Revolution -msgid "GEOM_REVOLUTION" -msgstr "Revolution" - -#Rotation -msgid "GEOM_ROTATION" -msgstr "Rotation" - -#Archimede -msgid "GEOM_ARCHIMEDE" -msgstr "Archimede" - -#Common -msgid "GEOM_COMMON" -msgstr "Common" - -#Cut -msgid "GEOM_CUT" -msgstr "Cut" - -#Distance -msgid "GEOM_DISTANCE" -msgstr "Distance" - -#Filling -msgid "GEOM_FILLING" -msgstr "Filling" - -#Fuse -msgid "GEOM_FUSE" -msgstr "Fuse" - -#Scale -msgid "GEOM_SCALE" -msgstr "Scale" - -#Position -msgid "GEOM_POSITION" -msgstr "Location" - -#Offset -msgid "GEOM_OFFSET" -msgstr "Offset" - -#Section -msgid "GEOM_SECTION" -msgstr "Section" - -#Sewing -msgid "GEOM_SEWING" -msgstr "Sewing" - -#Translation -msgid "GEOM_TRANSLATION" -msgstr "Translation" - -#Working Plane -msgid "GEOM_WPLANE" -msgstr "Working Plane" - -#Mirror -msgid "GEOM_MIRROR" -msgstr "Mirror" - -#Prism -msgid "GEOM_PRISM" -msgstr "Prism" - -#Sub Shapes -msgid "GEOM_SUB_SHAPE" -msgstr "Sub Shapes" - -#Supress Face -msgid "GEOM_SUPRESSFACE" -msgstr "Supress Face" - -#Fillet -msgid "GEOM_FILLET" -msgstr "Fillet" - -#Chamfer -msgid "GEOM_CHAMFER" -msgstr "Chamfer" - -#Check Shape -msgid "GEOM_CHECK_SHAPE" -msgstr "Check Shape" - -#Check Blocks Compound -msgid "GEOM_CHECK_BLOCKS_COMPOUND" -msgstr "Check Blocks Compound" - -#Check Blocks Compound Errors -msgid "GEOM_CHECK_BLOCKS_COMPOUND_ERRORS" -msgstr "Errors" - -#Check Blocks Compound Errors -msgid "GEOM_CHECK_BLOCKS_COMPOUND_HAS_NO_ERRORS" -msgstr "The Compound of Blocks has no errors" - -msgid "GEOM_CHECK_BLOCKS_COMPOUND_HAS_ERRORS" -msgstr "The Compound of Blocks has errors" - -#Check Blocks Compound SubShapes -msgid "GEOM_CHECK_BLOCKS_COMPOUND_SUBSHAPES" -msgstr "Incriminated Sub-Shapes" - -#Whatis -msgid "GEOM_WHATIS" -msgstr "Whatis" - -#Bounding Box -msgid "GEOM_BNDBOX" -msgstr "Bounding Box" - -#Center Of Mass -msgid "GEOM_CMASS" -msgstr "Center Of Mass" - -#Basic Properties -msgid "GEOM_PROPERTIES" -msgstr "Basic Properties" - -#Multi-Translation -msgid "GEOM_MULTITRANSLATION" -msgstr "Multi-Translation" - -#Multi-Rotation -msgid "GEOM_MULTIROTATION" -msgstr "Multi-Rotation" - -# -#============================================================================== -# - -#Arc -msgid "GEOM_ARC" -msgstr "Arc" - -#Box -msgid "GEOM_BOX" -msgstr "Box" - -#Circle -msgid "GEOM_CIRCLE" -msgstr "Circle" - -#Ellipse -msgid "GEOM_ELLIPSE" -msgstr "Ellipse" - -msgid "GEOM_ELLIPSE_TITLE" -msgstr "Ellipse Construction" - -#Radius major -msgid "GEOM_RADIUS_MAJOR" -msgstr "Major radius :" - -#Radius minor -msgid "GEOM_RADIUS_MINOR" -msgstr "Minor radius :" - -#Compound -msgid "GEOM_COMPOUND" -msgstr "Compound" - -#CompSolid -msgid "GEOM_COMPOUNDSOLID" -msgstr "CompSolid" - -#Cone -msgid "GEOM_CONE" -msgstr "Cone" - -#Cylinder -msgid "GEOM_CYLINDER" -msgstr "Cylinder" - -#Edge -msgid "GEOM_EDGE" -msgstr "Edge" - -#Face -msgid "GEOM_FACE" -msgstr "Face" - -#Faces -msgid "GEOM_FACES" -msgstr "Faces" - -#Line -msgid "GEOM_LINE" -msgstr "Line" - -#Plane -msgid "GEOM_PLANE" -msgstr "Plane" - -#Shape -msgid "GEOM_SHAPE" -msgstr "Shape" - -#Shell -msgid "GEOM_SHELL" -msgstr "Shell" - -#Shells -msgid "GEOM_SHELLS" -msgstr "Shells" - -#Solid -msgid "GEOM_SOLID" -msgstr "Solid" - -#Sphere -msgid "GEOM_SPHERE" -msgstr "Sphere" - -#Conical Face -msgid "GEOM_SURFCONE" -msgstr "Conical Face" - -#Cylindrical Face -msgid "GEOM_SURFCYLINDER" -msgstr "Cylindrical Face" - -#Spherical Face -msgid "GEOM_SURFSPHERE" -msgstr "Spherical Face" - -#Toroidal Face -msgid "GEOM_SURFTORUS" -msgstr "Toroidal Face" - -#Torus -msgid "GEOM_TORUS" -msgstr "Torus" - -#Vector -msgid "GEOM_VECTOR" -msgstr "Vector" - -#Vector U -msgid "GEOM_VECTOR_U" -msgstr "Vector U" - -#Vector V -msgid "GEOM_VECTOR_V" -msgstr "Vector V" - -#Vertex -msgid "GEOM_VERTEX" -msgstr "Vertex" - -#Wire -msgid "GEOM_WIRE" -msgstr "Wire" - -#Wire(s) -msgid "GEOM_WIRES" -msgstr "Wire(s)" - -#Wires -msgid "GEOM_WIREZ" -msgstr "Wires" - -msgid "GEOM_IMPORT" -msgstr "Imported_Shape" - -#Parameter -msgid "GEOM_PARAMETER" -msgstr "Parameter :" - -# -#============================================================================== -# - -#Min -msgid "GEOM_MIN" -msgstr "Min :" - -#Max -msgid "GEOM_MAX" -msgstr "Max :" - -#X -msgid "GEOM_X" -msgstr "X :" - -#Y -msgid "GEOM_Y" -msgstr "Y :" - -#Z -msgid "GEOM_Z" -msgstr "Z :" - -#DX -msgid "GEOM_DX" -msgstr "Dx :" - -#DY -msgid "GEOM_DY" -msgstr "Dy :" - -#DZ -msgid "GEOM_DZ" -msgstr "Dz :" - -#D1 -msgid "GEOM_D1" -msgstr "D1 :" - -#D2 -msgid "GEOM_D2" -msgstr "D2 :" - -# -#============================================================================== -# - -#: GeometryGUI.cxx -msgid "GEOM_STEP_TITLE" -msgstr "Step value for GUI constructions" - -#: GeometryGUI_ArcDlg.cxx:45 -msgid "GEOM_ARC_TITLE" -msgstr "Arc Construction" - -#: GeometryGUI_ArchimedeDlg.cxx:55 -msgid "GEOM_ARCHIMEDE_TITLE" -msgstr "Archimede Construction" - -#: GeometryGUI_BndBoxDlg.cxx:59 -msgid "GEOM_BNDBOX_TITLE" -msgstr "Bounding Box Informations" - -#: GeometryGUI_BndBoxDlg.cxx:82 -msgid "GEOM_BNDBOX_OBJDIM" -msgstr "Object And Its Dimensions" - -#: GeometryGUI_BoxDlg.cxx:50 -msgid "GEOM_BOX_TITLE" -msgstr "Box Construction" - -#: GeometryGUI_BoxDlg.cxx:50 -msgid "GEOM_BOX_OBJ" -msgstr "Dimensions At Origin" - -#: GeometryGUI_ChamferDlg.cxx:58 -msgid "GEOM_CHAMFER_TITLE" -msgstr "Chamfer Construction" - -#: GeometryGUI_ChamferDlg.cxx:58 -msgid "GEOM_CHAMFER_ALL" -msgstr "Chamfer On Whole Shape" - -#: GeometryGUI_ChamferDlg.cxx:58 -msgid "GEOM_CHAMFER_EDGES" -msgstr "Chamfer On Edges From Shape" - -#: GeometryGUI_ChamferDlg.cxx:58 -msgid "GEOM_CHAMFER_FACES" -msgstr "Chamfer On Faces From Shape" - -#: GeometryGUI_CircleDlg.cxx:48 -msgid "GEOM_CIRCLE_TITLE" -msgstr "Circle Construction" - -#: GeometryGUI_CenterMassDlg.cxx:77 -msgid "GEOM_CMASS_TITLE" -msgstr "Center Of Mass Construction" - -msgid "GEOM_PLANE_SIZE" -msgstr "Size of plane :" - -#: GeometryGUI_CommonDlg.cxx:47 -msgid "GEOM_COMMON_TITLE" -msgstr "BOOLEAN : Common Of Two Objects" - -#: GeometryGUI_CompoundDlg.cxx:44 -msgid "GEOM_COMPOUND_TITLE" -msgstr "Create A Compound" - -#: GeometryGUI_ConeDlg.cxx:49 -msgid "GEOM_CONE_TITLE" -msgstr "Cone Construction" - -#: GeometryGUI_CutDlg.cxx:48 -msgid "GEOM_CUT_TITLE" -msgstr "BOOLEAN : Cut Of Two Objects" -# -#: GeometryGUI_CylinderDlg.cxx:47 -msgid "GEOM_CYLINDER_TITLE" -msgstr "Cylinder Construction" - -#: GeometryGUI_CheckShape.cxx:60 -msgid "GEOM_CHECK_TITLE" -msgstr "Check Shape Informations" - -#: MeasureGUI_CheckCompoundOfBlocks.cxx:61 -msgid "GEOM_CHECK_COMPOUND_BLOCKS_TITLE" -msgstr "Check Blocks Compound" - -#: GeometryGUI_CheckShape.cxx:83 -msgid "GEOM_CHECK_INFOS" -msgstr "Object And Its Topological Informations" - -#: GeometryGUI_DistanceDlg.cxx:57 -msgid "GEOM_MINDIST_TITLE" -msgstr "Minimun Distance Between Two Objects" - -#: GeometryGUI_DistanceDlg.cxx:57 -msgid "GEOM_MINDIST_OBJ" -msgstr "Objects And Results" - -#: GeometryGUI_EdgeDlg.cxx:47 -msgid "GEOM_EDGE_TITLE" -msgstr "Create An Edge" - -#: GeometryGUI_FilletDlg.cxx:58 -msgid "GEOM_FILLET_TITLE" -msgstr "Fillet Construction" - -#: GeometryGUI_FilletDlg.cxx:58 -msgid "GEOM_FILLET_ALL" -msgstr "Fillet On Whole Shape" - -#: GeometryGUI_FilletDlg.cxx:58 -msgid "GEOM_FILLET_EDGES" -msgstr "Fillet On Edges From Shape" - -#: GeometryGUI_FilletDlg.cxx:58 -msgid "GEOM_FILLET_FACES" -msgstr "Fillet On Faces From Shape" - -#: GeometryGUI_FaceDlg.cxx:49 -msgid "GEOM_FACE_TITLE" -msgstr "Create A Face" - -#: GeometryGUI_FaceDlg.cxx:78 -msgid "GEOM_FACE_FFW" -msgstr "Face from a wire" - -#: GeometryGUI_FaceDlg.cxx:103 -msgid "GEOM_FACE_OPT" -msgstr "Try to create a planar face" - -#: GeometryGUI_FillingDlg.cxx:53 -msgid "GEOM_FILLING_TITLE" -msgstr "Filling Surface With Curves" - -#: GeometryGUI_FillingDlg.cxx:112 -msgid "GEOM_FILLING_ARG" -msgstr "Arguments And Parameters" - -#: GeometryGUI_FillingDlg.cxx:128 -msgid "GEOM_FILLING_MIN_DEG" -msgstr "Min deg" - -#: GeometryGUI_FillingDlg.cxx:142 -msgid "GEOM_FILLING_MAX_DEG" -msgstr "Max deg" - -#: GeometryGUI_FillingDlg.cxx:150 -msgid "GEOM_FILLING_TOL_2D" -msgstr "Tol. 2D :" - -#: GeometryGUI_FillingDlg.cxx:170 -msgid "GEOM_FILLING_COMPOUND" -msgstr "Curves Comp." - -#: GeometryGUI_FillingDlg.cxx:184 -msgid "GEOM_FILLING_TOL_3D" -msgstr "Tol. 3D :" - -#: GeometryGUI_FillingDlg.cxx:192 -msgid "GEOM_FILLING_NB_ITER" -msgstr "Nb. Iter :" - -#: GeometryGUI_FuseDlg.cxx:48 -msgid "GEOM_FUSE_TITLE" -msgstr "BOOLEAN : Fuse Two Objects" - -#: GeometryGUI_InertiaDlg.cxx:42 -msgid "GEOM_INERTIA_TITLE" -msgstr "Calculs Of Inertia" - -#: GeometryGUI_InertiaDlg.cxx:50 -msgid "GEOM_INERTIA_CONSTR" -msgstr "Matrix And Moments Of Inertia" - -#: GeometryGUI_InertiaDlg.cxx:100 -msgid "GEOM_INERTIA_I" -msgstr "%1:1 :" - -#: GeometryGUI_InertiaDlg.cxx:182 -msgid "GEOM_INERTIA_IXYZ" -msgstr "IX & IY & IZ :" - -#: GeometryGUI_LineDlg.cxx:50 -msgid "GEOM_LINE_TITLE" -msgstr "Line Construction" - -#: GeometryGUI_MaxToleranceDlg.cxx:53 -msgid "GEOM_TOLERANCE_TITLE" -msgstr "Maximum Tolerance" - -#: GeometryGUI_MaxToleranceDlg.cxx:84 -msgid "GEOM_TOLERANCE_CONSTR" -msgstr "Object And Its Tolerances" - -#: GeometryGUI_MaxToleranceDlg.cxx:121 -msgid "GEOM_TOLERANCE_FACE" -msgstr "Face :" - -#: GeometryGUI_MaxToleranceDlg.cxx:138 -msgid "GEOM_TOLERANCE_EDGE" -msgstr "Edge :" - -#: GeometryGUI_MaxToleranceDlg.cxx:155 -msgid "GEOM_TOLERANCE_VERTEX" -msgstr "Vertex :" - -#: GeometryGUI_MirrorDlg.cxx:52 -msgid "GEOM_MIRROR_TITLE" -msgstr "Mirror An Object" - -#: GeometryGUI_OrientationDlg.cxx:46 -msgid "GEOM_ORIENTATION_TITLE" -msgstr "Change Orientation" - -#: GeometryGUI_OrientationDlg.cxx:134 -msgid "GEOM_ORIENTATION_OPT" -msgstr "Reverse orientation with normal vectors simulation" - -#: GeometryGUI_PartitionDlg.cxx:45 -msgid "GEOM_PARTITION_TITLE" -msgstr "Partition Of Object With Tool" - -#: GeometryGUI_PartitionDlg.cxx:45 -msgid "GEOM_KEEP_OBJECT" -msgstr "Keep Object" - -#: GeometryGUI_PartitionDlg.cxx:45 -msgid "GEOM_PARTITION_ORIENTATION" -msgstr "Change Orientation" - -#: GeometryGUI_PartitionDlg.cxx:45 -msgid "SUPPRESS_RESULT" -msgstr "Suppress Result" - -msgid "GEOM_REMOVE_WEBS" -msgstr "Remove webs" - -msgid "GEOM_SET_MATERIALS" -msgstr "Set materials" - -#: OperationGUI_MaterialDlg.cxx:45 -msgid "GEOM_MATERIAL_TITLE" -msgstr "Define materials for Dominant Fuse" - -msgid "GEOM_MATERIAL_SHAPE" -msgstr "Shapes" - -msgid "GEOM_MATERIAL_MATERIAL" -msgstr "Material" - -msgid "GEOM_MATERIAL_ID" -msgstr "Material ID:" - -msgid "GEOM_MATERIAL_SET" -msgstr "<< Set" - -#: GeometryGUI_PipeDlg.cxx:47 -msgid "GEOM_PIPE_TITLE" -msgstr "Pipe Construction" - -#: GeometryGUI_PointDlg.cxx:52 -msgid "GEOM_POINT_TITLE" -msgstr "Point Construction" - -#: GeometryGUI_PlaneDlg.cxx:60 -msgid "GEOM_PLANE_TITLE" -msgstr "Plane Construction" - -#: GeometryGUI_PlaneDlg.cxx:172 -msgid "GEOM_PLANE_PVC" -msgstr "Point + Coordinate Vector" - -#: GeometryGUI_PlaneDlg.cxx:133 -msgid "GEOM_PLANE_PV" -msgstr "Point + Vector" - -#: GeometryGUI_PrismDlg.cxx:54 -msgid "GEOM_PRISM_TITLE" -msgstr "Prism Construction" - -#: GeometryGUI_PrismDlg.cxx:83 -msgid "GEOM_PRISM_BSV" -msgstr "Base Shape + Vector" - -#: GeometryGUI_PropertiesDlg.cxx:56 -msgid "GEOM_PROPERTIES_TITLE" -msgstr "Basic Properties Informations" - -#: GeometryGUI_PropertiesDlg.cxx:78 -msgid "GEOM_PROPERTIES_CONSTR" -msgstr "Object And Its Properties" - -#: GeometryGUI_PropertiesDlg.cxx:114 -msgid "GEOM_PROPERTIES_SURFACE" -msgstr "Surface is :" - -#: GeometryGUI_PropertiesDlg.cxx:120 -msgid "GEOM_PROPERTIES_VOLUME" -msgstr "Volume is :" - -#: GeometryGUI_RevolDlg.cxx:49 -msgid "GEOM_REVOLUTION_TITLE" -msgstr "Construction By Revolution" - -#: GeometryGUI_RotationDlg.cxx:51 -msgid "GEOM_ROTATION_TITLE" -msgstr "Rotation Of An Object" - -#: GeometryGUI_ScaleDlg.cxx:52 -msgid "GEOM_SCALE_TITLE" -msgstr "Scale An Object" - -#: GeometryGUI_PositionDlg.cxx:52 -msgid "GEOM_POSITION_TITLE" -msgstr "Modify the Location of an Object" - -#: GeometryGUI_PositionDlg.cxx:52 -msgid "GEOM_START_LCS" -msgstr "Start LCS" - -#: GeometryGUI_PositionDlg.cxx:52 -msgid "GEOM_END_LCS" -msgstr "End LCS" - -#: GeometryGUI_OffsetDlg.cxx:53 -msgid "GEOM_OFFSET_TITLE" -msgstr "Offset Surface" - -#: GeometryGUI_ScaleDlg.cxx:117 -msgid "GEOM_SCALE_FACTOR" -msgstr "Scale Factor :" - -#: GeometryGUI_SectionDlg.cxx:50 -msgid "GEOM_SECTION_TITLE" -msgstr "BOOLEAN : Section Of Two Objects" - -#: GeometryGUI_SewingDlg.cxx:48 -msgid "GEOM_SEWING_TITLE" -msgstr "Topological sewing" - -#: GeometryGUI_ShellDlg.cxx:53 -msgid "GEOM_SHELL_TITLE" -msgstr "Shell Construction" - -#: GeometryGUI_SolidDlg.cxx:74 -msgid "GEOM_SOLID_TITLE" -msgstr "Solid Construction" - -#: GeometryGUI_SphereDlg.cxx:50 -msgid "GEOM_SPHERE_TITLE" -msgstr "Sphere Construction" - -#: GeometryGUI_SphereDlg.cxx:113 -msgid "GEOM_SPHERE_CR" -msgstr "Center + Radius" - -#: GeometryGUI_SphereDlg.cxx:146 -msgid "GEOM_SPHERE_RO" -msgstr "Radius At Origin" - -#: GeometryGUI_SubShapeDlg.cxx:55 -msgid "GEOM_SUBSHAPE_TITLE" -msgstr "Sub Shapes Selection" - -#: GeometryGUI_SubShapeDlg.cxx:131 -msgid "GEOM_SUBSHAPE_TYPE" -msgstr "Sub Shapes Type :" - -#: GeometryGUI_SubShapeDlg.cxx:137 -msgid "GEOM_SUBSHAPE_SELECT" -msgstr "Select Sub Shapes" - -msgid "EntityGUI_SubShapeDlg::NO_SUBSHAPES_SELECTED" -msgstr "Please, select one or more sub-shapes" - -#: GeometryGUI_TorusDlg.cxx:51 -msgid "GEOM_TORUS_TITLE" -msgstr "Torus Construction" - -#: GeometryGUI_SuppressFacesDlg.cxx:103 -msgid "GEOM_SUPRESSFACE_TITLE" -msgstr "Suppress Faces In An Object" - -#: GeometryGUI_SuppressFacesDlg.cxx:164 -msgid "GEOM_SUPRESSFACE_SELECT" -msgstr "Select Faces To Suppress" - -#: GeometryGUI_TranslationDlg.cxx:78 -msgid "GEOM_TRANSLATION_COOR" -msgstr "Translation With Coordinates" - -msgid "GEOM_TRANSPARENCY_TITLE" -msgstr "Transparency" - -msgid "GEOM_TRANSPARENCY_OPAQUE" -msgstr "Opaque" - -msgid "GEOM_TRANSPARENCY_TRANSPARENT" -msgstr "Transparent" - -msgid "GEOM_SUPPRESSHOLE_TITLE" -msgstr "Suppress holes" - -msgid "GEOM_SUPPRESSHOLE_SELECTFACE" -msgstr "Select the face with hole" - -msgid "GEOM_SUPPRESSHOLE_SELECTWIRE" -msgstr "Select wire on face" - -msgid "GEOM_SUPPRESSHOLE_SELECTFACE_END" -msgstr "Select end face (if hole traversing)" - -msgid "GEOM_SUPPRESSHOLE_SELECTWIRE_END" -msgstr "Select end wire (if hole traversing)" - -msgid "GEOM_SUPPRESSHOLE_FACE_SHELL" -msgstr "Face or shell" - -msgid "GEOM_SUPPRESSHOLE_SELECT_HOLES_ON_FACE" -msgstr "Select hole(s) on the face" - -#: GeometryGUI_TranslationDlg.cxx:56 -msgid "GEOM_TRANSLATION_TITLE" -msgstr "Translation Of An Object" - -#: GeometryGUI_VectorDlg.cxx:54 -msgid "GEOM_VECTOR_TITLE" -msgstr "Vector Construction" - -#: GeometryGUI_WhatisDlg.cxx:63 -msgid "GEOM_WHATIS_TITLE" -msgstr "Whatis Informations" - -#: GeometryGUI_WhatisDlg.cxx:86 -msgid "GEOM_WHATIS_OBJECT" -msgstr "Object And Its Topological Informations" - -#: GeometryGUI_WireDlg.cxx:46 -msgid "GEOM_WIRE_TITLE" -msgstr "Create A Wire" - -#: GeometryGUI_WireDlg.cxx:103 -msgid "GEOM_WIRE_CONNECT" -msgstr "Wire creation from wires/edges connected" - -#: GeometryGUI_WorkingPlaneDlg.cxx:50 -msgid "GEOM_WPLANE_TITLE" -msgstr "Working Plane Selection" - -#: GeometryGUI_WorkingPlaneDlg.cxx:107 -msgid "GEOM_WPLANE_FACE" -msgstr "Plane Or Planar Face" - -#: GeometryGUI_WorkingPlaneDlg.cxx:107 -msgid "GEOM_WPLANE_VECTOR" -msgstr "Select 2 vectors" - -#: GeometryGUI_WorkingPlaneDlg.cxx:107 -msgid "GEOM_WPLANE_VX" -msgstr "Vector X" - -#: GeometryGUI_WorkingPlaneDlg.cxx:107 -msgid "GEOM_WPLANE_VZ" -msgstr "Vector Z" - -#: GeometryGUI_WorkingPlaneDlg.cxx:107 -msgid "GEOM_WPLANE_ORIGIN" -msgstr "Select a plane" - -#: GeometryGUI_WorkingPlaneDlg.cxx:107 -msgid "GEOM_WPLANE_OYZ" -msgstr "OYZ" - -#: GeometryGUI_WorkingPlaneDlg.cxx:107 -msgid "GEOM_WPLANE_OZX" -msgstr "OZX" - -#: GeometryGUI_WorkingPlaneDlg.cxx:107 -msgid "GEOM_WPLANE_OXY" -msgstr "OXY" - -#: GeometryGUI_multiTranslationDlg.cxx:107 -msgid "GEOM_MULTITRANSLATION_TITLE" -msgstr "Multi-Translation" - -#: GeometryGUI_multiTranslationDlg.cxx:107 -msgid "GEOM_MULTITRANSLATION_SIMPLE" -msgstr "Multi Translation Simple" - -#: GeometryGUI_multiTranslationDlg.cxx:107 -msgid "GEOM_MULTITRANSLATION_DOUBLE" -msgstr "Multi Translation Double" - -#: GeometryGUI_multiRotationDlg.cxx:107 -msgid "GEOM_MULTIROTATION_TITLE" -msgstr "Multi-Rotation" - -#: GeometryGUI_multiRotationDlg.cxx:107 -msgid "GEOM_MULTIROTATION_SIMPLE" -msgstr "Multi Rotation Simple" - -#: GeometryGUI_multiRotationDlg.cxx:107 -msgid "GEOM_MULTIROTATION_DOUBLE" -msgstr "Multi Rotation Double" - -msgid "GEOM_PARAM_POINT" -msgstr "Parametric point" - -msgid "GEOM_REF_POINT" -msgstr "Point with reference" - -# -#============================================================================== -# - -#: GeometryGUI.cxx:4613 -msgid "GEOM_MEN_WIREFRAME" -msgstr "Wireframe" - -#: GeometryGUI.cxx:4613 -msgid "GEOM_MEN_SHADING" -msgstr "\nShading" - -msgid "GEOM_RECONSTRUCTION_LIMIT" -msgstr "Reconstruction Limit" - -msgid "GEOM_SUPPRESS_RESULT" -msgstr "Suppress Result" - -msgid "GEOM_SUPPRESS_RESULT_INSIDE" -msgstr "Inside" - -msgid "GEOM_SUPPRESS_RESULT_OUTSIDE" -msgstr "Outside" - -msgid "GEOM_RECONSTRUCTION_LIMIT_SHAPE" -msgstr "Shape" -msgid "GEOM_RECONSTRUCTION_LIMIT_SOLID" -msgstr "Solid" -msgid "GEOM_RECONSTRUCTION_LIMIT_SHELL" -msgstr "Shell" -msgid "GEOM_RECONSTRUCTION_LIMIT_FACE" -msgstr "Face" -msgid "GEOM_RECONSTRUCTION_LIMIT_WIRE" -msgstr "Wire" -msgid "GEOM_RECONSTRUCTION_LIMIT_EDGE" -msgstr "Edge" -msgid "GEOM_RECONSTRUCTION_LIMIT_VERTEX" -msgstr "Vertex" - -msgid "GEOM_SPLINE_TITLE" -msgstr "Spline Construction" -msgid "GEOM_SPLINE" -msgstr "Spline" -msgid "GEOM_BEZIER" -msgstr "Bezier" -msgid "GEOM_INTERPOL" -msgstr "Interpolation" - -# -#============================================================================== -# - -msgid "GEOM_SKETCHER_EL" -msgstr "Element Type" - -msgid "GEOM_BUT_CLOSE_SKETCH" -msgstr "Sketch Closure" - -msgid "GEOM_BUT_END_SKETCH" -msgstr "Sketch Validation" - -msgid "GEOM_SKETCHER_TITLE" -msgstr "Sketch Construction" - -msgid "GEOM_SKETCHER_POINT" -msgstr "Point" - -msgid "GEOM_SKETCHER_SEGMENT" -msgstr "Segment" - -msgid "GEOM_SKETCHER_ARC" -msgstr "Arc" - -msgid "GEOM_SKETCHER_DIR" -msgstr "Direction" - -msgid "GEOM_SKETCHER_POINT2" -msgstr "Point :" - -msgid "GEOM_SKETCHER_DEST" -msgstr "Destination" - -msgid "GEOM_SKETCHER_ABS" -msgstr "Absolute" - -msgid "GEOM_SKETCHER_REL" -msgstr "Relative" - -msgid "GEOM_SKETCHER_SEL" -msgstr "Selection" - -msgid "GEOM_SKETCHER_ANGLE" -msgstr "Angle" - -msgid "GEOM_SKETCHER_PER" -msgstr "Perpendicular" - -msgid "GEOM_SKETCHER_TAN" -msgstr "Tangent" - -msgid "GEOM_SKETCHER_VXVY" -msgstr "VX-VY" - -msgid "GEOM_SKETCHER_LENGTH" -msgstr "Length" - -msgid "GEOM_SKETCHER_X" -msgstr "X" - -msgid "GEOM_SKETCHER_Y" -msgstr "Y" - -msgid "GEOM_SKETCHER_X2" -msgstr "X :" - -msgid "GEOM_SKETCHER_Y2" -msgstr "Y :" - -msgid "GEOM_SKETCHER_X3" -msgstr "Abs. X :" - -msgid "GEOM_SKETCHER_Y3" -msgstr "Abs. Y :" - -msgid "GEOM_SKETCHER_DX2" -msgstr "DX :" - -msgid "GEOM_SKETCHER_DY2" -msgstr "DY :" - -msgid "GEOM_SKETCHER_VX2" -msgstr "VX :" - -msgid "GEOM_SKETCHER_VY2" -msgstr "VY :" - -msgid "GEOM_SKETCHER_LENGTH2" -msgstr "Length :" - -msgid "GEOM_SKETCHER_ANGLE2" -msgstr "Angle :" - -msgid "GEOM_SKETCHER_RADIUS2" -msgstr "Radius :" - -msgid "GEOM_SKETCHER_UNDO" -msgstr "Undo" - -msgid "GEOM_SKETCHER_APPLY" -msgstr "Apply" - -msgid "GEOM_SKETCHER_VALUES" -msgstr "Values" - -msgid "GEOM_SKETCHER_TYPE" -msgstr "Type" - -msgid "EntityGUI_SketcherDlg::CANNOT_CLOSE" -msgstr "It is impossible to close sketch\nNumber of sketch points too small" - -msgid "GEOM_FILLET_ABORT" -msgstr "Fillet can't be computed with radius %1" - -msgid "GEOM_CHAMFER_ABORT" -msgstr "Chamfer can't be computed with %1 and %2" - -msgid "GEOM_3_POINTS" -msgstr "3 points" - -msgid "GEOM_POINT1" -msgstr "Point 1" - -msgid "GEOM_POINT2" -msgstr "Point 2" - -msgid "GEOM_POINT3" -msgstr "Point 3" - -msgid "GEOM_CREATE_COPY" -msgstr "Create a copy" - -msgid "GEOM_CREATE_SINGLE_SOLID" -msgstr "Create a single solid" - -msgid "GEOM_ERROR" -msgstr "Error" - -msgid "GEOM_ERROR_STATUS" -msgstr "Operation status" - -msgid "GEOM_ELLIPSE_ERROR_1" -msgstr "Error creating ellipse. Reason: minor radius is greater than major radius." - -msgid "GEOM_CURVE" -msgstr "Curve" - -msgid "GEOM_POLYLINE" -msgstr "Polyline" - -msgid "GEOM_NODES" -msgstr "Nodes" - -msgid "GEOM_CURVE_TITLE" -msgstr "Curve Construction" - -# ShapeProcessDlg.cxx -msgid "GEOM_SHAPEPROCESS_TITLE" -msgstr "Shape Processing" - -msgid "GEOM_SHAPES" -msgstr "Shapes" - -msgid "GEOM_SELECTED_OBJECTS" -msgstr "Selected objects" - -msgid "GEOM_OPERATIONS" -msgstr "Operations" - -msgid "GEOM_PARAMETERS" -msgstr "Parameters" - -msgid "GEOM_FixShape" -msgstr "FixShape" - -msgid "GEOM_FixFaceSize" -msgstr "FixFaceSize" - -msgid "GEOM_DropSmallEdges" -msgstr "DropSmallEdges" - -msgid "GEOM_SplitAngle" -msgstr "SplitAngle" - -msgid "GEOM_SplitClosedFaces" -msgstr "SplitClosedFaces" - -msgid "GEOM_SplitContinuity" -msgstr "SplitContinuity" - -msgid "GEOM_BSplineRestriction" -msgstr "BSplineRestriction" - -msgid "GEOM_ToBezier" -msgstr "ToBezier" - -msgid "GEOM_SameParameter" -msgstr "SameParameter" - -msgid "GEOM_3D_TOLERANCE" -msgstr "3D tolerance" - -msgid "GEOM_MAX_3D_TOLERANCE" -msgstr "Max 3D tolerance" - -msgid "GEOM_MAX_TOLERANCE" -msgstr "Max tolerance" - -msgid "GEOM_ANGLE_1" -msgstr "Angle" - -msgid "GEOM_NUM_SPLIT_POINTS" -msgstr "Number of splitting points" - -msgid "GEOM_SURFACE_CONTINUTY" -msgstr "Surface continuity" - -msgid "GEOM_CURVE_CONTINUTY" -msgstr "Curve continuity" - -msgid "GEOM_SURFACE_MODE" -msgstr "Surface mode" - -msgid "GEOM_3D_CURVE_MODE" -msgstr "3D curve mode" - -msgid "GEOM_2D_CURVE_MODE" -msgstr "2D curve mode" - -msgid "GEOM_2D_TOLERANCE" -msgstr "2D tolerance" - -msgid "GEOM_REQUIRED_DEGREE" -msgstr "Required degree" - -msgid "GEOM_REQUIRED_NUM_SEGMENTS" -msgstr "Required number of segments" - -msgid "GEOM_3D_CONTINUTY" -msgstr "3D continuity" - -msgid "GEOM_2D_CONTINUTY" -msgstr "2D continuity" - -msgid "GEOM_CLOSECONTOUR_TITLE" -msgstr "Close contour" - -msgid "GEOM_ERR_LIB_NOT_FOUND" -msgstr "GUI library corresponding to the user action can not be found or loaded" - -msgid "OperationGUI_ChamferDlg::FACE_1" -msgstr "Face 1" - -msgid "OperationGUI_ChamferDlg::FACE_2" -msgstr "Face 2" - -msgid "OperationGUI_ChamferDlg::SELECTED_FACES" -msgstr "Selected faces" - -msgid "OperationGUI_ChamferDlg::D" -msgstr "D" - -msgid "OperationGUI_FilletDlg::SELECTED_EDGES" -msgstr "Selected edges" - -msgid "OperationGUI_FilletDlg::SELECTED_FACES" -msgstr "Selected faces" - -msgid "GEOM_REMOVE_INTERNAL_WIRES_TITLE" -msgstr "Suppress internal wires" - -msgid "GEOM_INTERNAL_WIRES" -msgstr "Internal wires" - -msgid "GEOM_SELECTED_FACE" -msgstr "Selected face" - -msgid "GEOM_REMOVE_ALL_INT_WIRES" -msgstr "Remove all internal wires" - -msgid "GEOM_REMOVE_HOLES_TITLE" -msgstr "Suppress holes" - -msgid "GEOM_SELECTED_SHAPE" -msgstr "Selected shape" - -msgid "GEOM_REMOVE_ALL_HOLES" -msgstr "Remove all holes" - -msgid "GEOM_HOLES" -msgstr "Holes" - -msgid "GEOM_WIRES_TO_REMOVE" -msgstr "Wires to remove" - -msgid "GEOM_DETECT" -msgstr "Detect" - -msgid "GEOM_FREE_BOUNDARIES" -msgstr "Free boundaries" - -msgid "GEOM_FREE_FACES" -msgstr "Free faces" - -msgid "GEOM_BY_PARAMETER" -msgstr "By parameter" - -msgid "GEOM_BY_LENGTH" -msgstr "By length" - -msgid "GEOM_DIVIDE_EDGE_TITLE" -msgstr "Addition of point" - -msgid "GEOM_ADD_POINT" -msgstr "Add point" - -msgid "GEOM_VALUE" -msgstr "Value" - -msgid "GEOM_MARKER_TITLE" -msgstr "Create marker" - -msgid "GEOM_MARKER" -msgstr "Marker" - -msgid "GEOM_TRIHEDRON" -msgstr "Trihedron" - -msgid "GEOM_FREE_BOUNDS_MSG" -msgstr "Number of free boundaries detected: %1 (%2 closed, %3 open)" - -msgid "GEOM_FREE_BOUNDS_ERROR" -msgstr "Object is not selected" - -msgid "GEOM_FREE_BOUNDS_TLT" -msgstr "Free boundary detection" - -msgid "RepairGUI_FreeBoundDlg::CAPTION" -msgstr "Check free boundaries" - -msgid "RepairGUI_FreeBoundDlg::FREE_BOUND" -msgstr "Free boundaries" - -msgid "RepairGUI_FreeBoundDlg::NUMBER_CLOSED" -msgstr "Number of closed free boundaries: " - -msgid "RepairGUI_FreeBoundDlg::NUMBER_OPEN" -msgstr "Number of open free boundaries: " - -msgid "RepairGUI_ShapeProcessDlg::ERROR_NO_OPERATORS" -msgstr "Please, select at least one Shape Process operation to proceed." - -msgid "RepairGUI_ShapeProcessDlg::ERROR_NO_OBJECTS" -msgstr "Please, select a geometrical object for Shape Processing." - -msgid "RepairGUI_ShapeProcessDlg::TIME_CONSUMING" -msgstr "Enabling this option may result in a very time-consuming operation for some input shapes.\nWould you like to continue?" - -msgid "MeasureGUI_PointDlg::POINT" -msgstr "Point" - -msgid "MeasureGUI_PointDlg::X" -msgstr "X" - -msgid "MeasureGUI_PointDlg::Y" -msgstr "Y" - -msgid "MeasureGUI_PointDlg::Z" -msgstr "Z" - -msgid "MeasureGUI_PointDlg::CAPTION" -msgstr "Point Coordinates" - -msgid "MeasureGUI_PointDlg::COORDINATES" -msgstr "Point and its coordinates" - -msgid "GroupGUI_GroupDlg::CREATE_GROUP_TITLE" -msgstr "Create Group" - -msgid "GroupGUI_GroupDlg::EDIT_GROUP_TITLE" -msgstr "Edit Group" - -msgid "GroupGUI_GroupDlg::SHAPE_TYPE" -msgstr "Shape Type" - -msgid "GroupGUI_GroupDlg::GROUP_NAME" -msgstr "Group Name" - -msgid "GroupGUI_GroupDlg::MAIN_SUB_SHAPES" -msgstr "Main Shape And Sub-Shapes" - -msgid "GroupGUI_GroupDlg::MAIN_SHAPE" -msgstr "Main Shape" - -msgid "GroupGUI_GroupDlg::SELECT_SUB_SHAPES" -msgstr "Select Sub-Shapes" - -msgid "GroupGUI_GroupDlg::SELECT_ALL" -msgstr "Select All" - -msgid "GroupGUI_GroupDlg::ADD" -msgstr "Add" - -msgid "GroupGUI_GroupDlg::REMOVE" -msgstr "Remove" - -msgid "GroupGUI_GroupDlg::GROUP_PREFIX" -msgstr "Group" - -msgid "GroupGUI_GroupDlg::EMPTY_NAME" -msgstr "Please, specify a non-empty group name" - -msgid "GroupGUI_GroupDlg::NO_MAIN_OBJ" -msgstr "Please, select a main shape" - -msgid "GroupGUI_GroupDlg::NO_GROUP" -msgstr "Please, select a group to edit" - -msgid "GroupGUI_GroupDlg::EMPTY_LIST" -msgstr "Please, select one or more sub-shapes to put into the group" - -msgid "GroupGUI::NO_GROUP" -msgstr "Please, select a group to edit" - -msgid "_S_" -msgstr "(s)" - -### BlocksGUI ### - -msgid "WRN_NOT_IMPLEMENTED" -msgstr "Sorry, this functionality is not yet implemented" - -### BlocksGUI_TrsfDlg ### - -msgid "BlocksGUI_TrsfDlg::FACE_1" -msgstr "Face 1" - -msgid "BlocksGUI_TrsfDlg::FACE_2" -msgstr "Face 2" - -msgid "BlocksGUI_TrsfDlg::FACE_1U" -msgstr "Face 1 U" - -msgid "BlocksGUI_TrsfDlg::FACE_2U" -msgstr "Face 2 U" - -msgid "BlocksGUI_TrsfDlg::FACE_1V" -msgstr "Face 1 V" - -msgid "BlocksGUI_TrsfDlg::FACE_2V" -msgstr "Face 2 V" - -msgid "GEOM_BLOCK_MULTITRSF_TITLE" -msgstr "Block Multi-Transformation" - -msgid "GEOM_BLOCK_MULTITRSF" -msgstr "Block Multi-Transformation" - -msgid "GEOM_BLOCK_MULTITRSF_SIMPLE" -msgstr "Multi-Transformation Simple" - -msgid "GEOM_BLOCK_MULTITRSF_DOUBLE" -msgstr "Multi-Transformation Double" - -### BlocksGUI_QuadFaceDlg ### - -msgid "BlocksGUI_QuadFaceDlg::VERTEX_1" -msgstr "Vertex 1" - -msgid "BlocksGUI_QuadFaceDlg::VERTEX_2" -msgstr "Vertex 2" - -msgid "BlocksGUI_QuadFaceDlg::VERTEX_3" -msgstr "Vertex 3" - -msgid "BlocksGUI_QuadFaceDlg::VERTEX_4" -msgstr "Vertex 4" - -msgid "BlocksGUI_QuadFaceDlg::EDGE_1" -msgstr "Edge 1" - -msgid "BlocksGUI_QuadFaceDlg::EDGE_2" -msgstr "Edge 2" - -msgid "BlocksGUI_QuadFaceDlg::EDGE_3" -msgstr "Edge 3" - -msgid "BlocksGUI_QuadFaceDlg::EDGE_4" -msgstr "Edge 4" - -msgid "GEOM_QUAD_FACE_TITLE" -msgstr "Quadrangle Face Construction" - -msgid "GEOM_QUAD_FACE" -msgstr "Quadrangle Face" - -### BlocksGUI_BlockDlg ### - -msgid "BlocksGUI_BlockDlg::FACE_1" -msgstr "Face 1" - -msgid "BlocksGUI_BlockDlg::FACE_2" -msgstr "Face 2" - -msgid "BlocksGUI_BlockDlg::FACE_3" -msgstr "Face 3" - -msgid "BlocksGUI_BlockDlg::FACE_4" -msgstr "Face 4" - -msgid "BlocksGUI_BlockDlg::FACE_5" -msgstr "Face 5" - -msgid "BlocksGUI_BlockDlg::FACE_6" -msgstr "Face 6" - -msgid "GEOM_BLOCK_TITLE" -msgstr "Hexahedral Solid Construction" - -msgid "GEOM_BLOCK" -msgstr "Hexahedral Solid" - -#============================================================================== - -msgid "BasicGUI_MarkerDlg::CAPTION" -msgstr "Local CS Construction" - -msgid "BasicGUI_MarkerDlg::LOCALCS" -msgstr "Local coordinate system" - -msgid "BasicGUI_MarkerDlg::ORIGIN" -msgstr "Coordinates of origin" - -msgid "BasicGUI_MarkerDlg::XDIR" -msgstr "X axis direction" - -msgid "BasicGUI_MarkerDlg::YDIR" -msgstr "Y axis direction" - -msgid "BasicGUI_MarkerDlg::DX" -msgstr "Dx" - -msgid "BasicGUI_MarkerDlg::DY" -msgstr "Dy" - -msgid "BasicGUI_MarkerDlg::DZ" -msgstr "Dz" - -msgid "BasicGUI_MarkerDlg::LCS_NAME" -msgstr "LocalCS" - -msgid "BasicGUI_MarkerDlg::VEC_PARALLEL" -msgstr "Coordinate system axes cannot be parallel" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -======= - -### BlocksGUI_ExplodeDlg ### - -msgid "BlocksGUI_ExplodeDlg::NB_FACES_MIN" -msgstr "Min. nb. faces" - -msgid "BlocksGUI_ExplodeDlg::NB_FACES_MAX" -msgstr "Max. nb. faces" - -msgid "GEOM_BLOCK_EXPLODE_TITLE" -msgstr "Sub Blocks Selection" - -msgid "GEOM_BLOCK_EXPLODE" -msgstr "Sub Blocks" - -msgid "GEOM_NB_BLOCKS_NO_OTHERS" -msgstr "There are %1 specified blocks and NO other solids" - -msgid "GEOM_NB_BLOCKS_SOME_OTHERS" -msgstr "There are %1 specified blocks and some other solids" - -msgid "ShHealOper_NotError_msg" -msgstr "Shape Healing algorithm has done no modification of the original shape" - -msgid "ShHealOper_InvalidParameters_msg" -msgstr "Incorrect parameters for Shape Healing algorithm" - -msgid "ShHealOper_ErrorExecution_msg" -msgstr "Shape Healing algorithm failed" - -msgid "GEOM_GLUE_TITLE" -msgstr "Glue faces" - -msgid "GEOM_GLUE" -msgstr "Glue" - -msgid "GEOM_FREE_FACES_TITLE" -msgstr "Free faces" - -### New object names for RepairGUI ### -msgid "SEWING_NEW_OBJ_NAME" -msgstr "Sewing" - -msgid "DEVIDE_EDGE_NEW_OBJECT_NAME" -msgstr "NewObject" - -msgid "CLOSE_CONTOUR_NEW_OBJ_NAME" -msgstr "CloseContour" - -msgid "REMOVE_HOLES_NEW_OBJ_NAME" -msgstr "SupressHoles" - -msgid "GLUE_NEW_OBJ_NAME" -msgstr "Glue" - -msgid "REMOVE_INT_WIRES_NEW_OBJ_NAME" -msgstr "RemoveIntWires" - -msgid "PROCESS_SHAPE_NEW_OBJ_NAME" -msgstr "ProcessShape" - -msgid "SUPRESS_FACE_NEW_OBJ_NAME" -msgstr "SupressFaces" - -msgid "NON_GEOM_OBJECTS_SELECTED" -msgstr "There are objects selected which do not belong to %1 component." - -msgid "GEOM_PROPAGATE_TITLE" -msgstr "Propagate" - -msgid "GEOM_PROPAGATE" -msgstr "Propagate" - -### Menu of GEOM module ### -msgid "MEN_FILE" -msgstr "File" - -msgid "TOP_IMPORT" -msgstr "Import geometry from BREP file" - -msgid "MEN_IMPORT" -msgstr "Import..." - -msgid "STB_IMPORT" -msgstr "Import geometry from BREP file" - -msgid "TOP_EXPORT" -msgstr "Export geometry to BREP file" - -msgid "MEN_EXPORT" -msgstr "Export..." - -msgid "STB_EXPORT" -msgstr "Export geometry to BREP file" - -msgid "MEN_EDIT" -msgstr "Edit" - -msgid "TOP_DELETE" -msgstr "Delete object" - -msgid "MEN_DELETE" -msgstr "Delete" - -msgid "STB_DELETE" -msgstr "Delete object" - -msgid "MEN_NEW_ENTITY" -msgstr "New Entity" - -msgid "MEN_BASIC" -msgstr "Basic" - -msgid "TOP_POINT" -msgstr "Create a point" - -msgid "MEN_POINT" -msgstr "Point" - -msgid "STB_POINT" -msgstr "Create a point" - -msgid "TOP_LINE" -msgstr "Create a line" - -msgid "MEN_LINE" -msgstr "Line" - -msgid "STB_LINE" -msgstr "Create a line" - -msgid "TOP_CIRCLE" -msgstr "Create a circle" - -msgid "MEN_CIRCLE" -msgstr "Circle" - -msgid "STB_CIRCLE" -msgstr "Create a circle" - -msgid "TOP_ELLIPSE" -msgstr "Create an ellipse" - -msgid "MEN_ELLIPSE" -msgstr "Ellipse" - -msgid "STB_ELLIPSE" -msgstr "Create an ellipse" - -msgid "TOP_ARC" -msgstr "Create an arc" - -msgid "MEN_ARC" -msgstr "Arc" - -msgid "STB_ARC" -msgstr "Create an arc" - -msgid "TOP_CURVE" -msgstr "Create a curve" - -msgid "MEN_CURVE" -msgstr "Curve" - -msgid "STB_CURVE" -msgstr "Create a curve" - -msgid "TOP_VECTOR" -msgstr "Create a vector" - -msgid "MEN_VECTOR" -msgstr "Vector" - -msgid "STB_VECTOR" -msgstr "Create a vector" - -msgid "TOP_PLANE" -msgstr "Create a plane" - -msgid "MEN_PLANE" -msgstr "Plane" - -msgid "STB_PLANE" -msgstr "Create a plane" - -msgid "TOP_WORK_PLANE" -msgstr "Create a working plane" - -msgid "MEN_WORK_PLANE" -msgstr "Working plane" - -msgid "STB_WORK_PLANE" -msgstr "Create a working plane" - -msgid "TOP_LOCAL_CS" -msgstr "Create a local coordinate system" - -msgid "MEN_LOCAL_CS" -msgstr "Local coordinate system" - -msgid "STB_LOCAL_CS" -msgstr "Create a local coordinate system" - -msgid "MEN_PRIMITIVES" -msgstr "Primitives" - -msgid "TOP_BOX" -msgstr "Create a box" - -msgid "MEN_BOX" -msgstr "Box" - -msgid "STB_BOX" -msgstr "Create a box" - -msgid "TOP_CYLINDER" -msgstr "Create a cyliner" - -msgid "MEN_CYLINDER" -msgstr "Cyliner" - -msgid "STB_CYLINDER" -msgstr "Create a cylinder" - -msgid "TOP_SPHERE" -msgstr "Create a sphere" - -msgid "MEN_SPHERE" -msgstr "Sphere" - -msgid "STB_SPHERE" -msgstr "Create a sphere" - -msgid "TOP_TORUS" -msgstr "Create a torus" - -msgid "MEN_TORUS" -msgstr "Torus" - -msgid "STB_TORUS" -msgstr "Create a torus" - -msgid "TOP_CONE" -msgstr "Create a cone" - -msgid "MEN_CONE" -msgstr "Cone" - -msgid "STB_CONE" -msgstr "Create a cone" - -msgid "MEN_GENERATION" -msgstr "Generation" - -msgid "TOP_EXTRUSION" -msgstr "Create an extrusion" - -msgid "MEN_EXTRUSION" -msgstr "Extrusion" - -msgid "STB_EXTRUSION" -msgstr "Create an extrusion" - -msgid "TOP_REVOLUTION" -msgstr "Create a revolution" - -msgid "MEN_REVOLUTION" -msgstr "Revolution" - -msgid "STB_REVOLUTION" -msgstr "Create a revolution" - -msgid "TOP_FILLING" -msgstr "Create a filling" - -msgid "MEN_FILLING" -msgstr "Filling" - -msgid "STB_FILLING" -msgstr "Create a filling" - -msgid "TOP_PIPE" -msgstr "Create a pipe" - -msgid "MEN_PIPE" -msgstr "Pipe" - -msgid "STB_PIPE" -msgstr "Create a pipe" - -msgid "MEN_GROUP" -msgstr "Group" - -msgid "TOP_GROUP_CREATE" -msgstr "Create a group" - -msgid "MEN_GROUP_CREATE" -msgstr "Create" - -msgid "STB_GROUP_CREATE" -msgstr "Create a group" - -msgid "TOP_GROUP_EDIT" -msgstr "Edit a group" - -msgid "MEN_GROUP_EDIT" -msgstr "Edit" - -msgid "STB_GROUP_EDIT" -msgstr "Edit a group" - -msgid "MEN_BLOCKS" -msgstr "Blocks" - -msgid "TOP_Q_FACE" -msgstr "Quadrangle Face" - -msgid "MEN_Q_FACE" -msgstr "Quadrangle Face" - -msgid "STB_Q_FACE" -msgstr "Quadrangle Face" - -msgid "TOP_HEX_SOLID" -msgstr "Hexahedral Solid" - -msgid "MEN_HEX_SOLID" -msgstr "Hexahedral Solid" - -msgid "STB_HEX_SOLID" -msgstr "Hexahedral Solid" - -msgid "TOP_SKETCH" -msgstr "Sketch" - -msgid "MEN_SKETCH" -msgstr "Sketch" - -msgid "STB_SKETCH" -msgstr "Sketch" - -msgid "TOP_EXPLODE" -msgstr "Explode" - -msgid "MEN_EXPLODE" -msgstr "Explode" - -msgid "STB_EXPLODE" -msgstr "Explode" - -msgid "MEN_BUILD" -msgstr "Build" - -msgid "TOP_EDGE" -msgstr "Build an edge" - -msgid "MEN_EDGE" -msgstr "Edge" - -msgid "STB_EDGE" -msgstr "Build an edge" - -msgid "TOP_WIRE" -msgstr "Build a wire" - -msgid "MEN_WIRE" -msgstr "Wire" - -msgid "STB_WIRE" -msgstr "Build a wire" - -msgid "TOP_FACE" -msgstr "Build a face" - -msgid "MEN_FACE" -msgstr "Face" - -msgid "STB_FACE" -msgstr "Build a face" - -msgid "TOP_SHELL" -msgstr "Build a shell" - -msgid "MEN_SHELL" -msgstr "Shell" - -msgid "STB_SHELL" -msgstr "Build a shell" - -msgid "TOP_SOLID" -msgstr "Build a solid" - -msgid "MEN_SOLID" -msgstr "Solid" - -msgid "STB_SOLID" -msgstr "Build a solid" - -msgid "TOP_COMPOUND" -msgstr "Build a compound" - -msgid "MEN_COMPOUND" -msgstr "Compound" - -msgid "STB_COMPOUND" -msgstr "Build a compound" - -msgid "MEN_OPERATIONS" -msgstr "Operations" - -msgid "MEN_BOOLEAN" -msgstr "Boolean" - -msgid "TOP_FUSE" -msgstr "Fuse" - -msgid "MEN_FUSE" -msgstr "Fuse" - -msgid "STB_FUSE" -msgstr "Fuse" - -msgid "TOP_COMMON" -msgstr "Common" - -msgid "MEN_COMMON" -msgstr "Common" - -msgid "STB_COMMON" -msgstr "Common" - -msgid "TOP_CUT" -msgstr "Cut" - -msgid "MEN_CUT" -msgstr "Cut" - -msgid "STB_CUT" -msgstr "Cut" - -msgid "TOP_SECTION" -msgstr "Section" - -msgid "MEN_SECTION" -msgstr "Section" - -msgid "STB_SECTION" -msgstr "Section" - -msgid "MEN_TRANSFORMATION" -msgstr "Transformation" - -msgid "TOP_TRANSLATION" -msgstr "Translation" - -msgid "MEN_TRANSLATION" -msgstr "Translation" - -msgid "STB_TRANSLATION" -msgstr "Translation" - -msgid "TOP_ROTATION" -msgstr "Rotation" - -msgid "MEN_ROTATION" -msgstr "Rotation" - -msgid "STB_ROTATION" -msgstr "Rotation" - -msgid "TOP_MODIFY_LOCATION" -msgstr "Modify the Location" - -msgid "MEN_MODIFY_LOCATION" -msgstr "Modify the Location" - -msgid "STB_MODIFY_LOCATION" -msgstr "Modify the Location" - -msgid "TOP_MIRROR" -msgstr "Mirror image" - -msgid "MEN_MIRROR" -msgstr "Mirror image" - -msgid "STB_MIRROR" -msgstr "Mirror image" - -msgid "TOP_SCALE" -msgstr "Scale transform" - -msgid "MEN_SCALE" -msgstr "Scale transform" - -msgid "STB_SCALE" -msgstr "Scale transform" - -msgid "TOP_OFFSET" -msgstr "Offset surface" - -msgid "MEN_OFFSET" -msgstr "Offset surface" - -msgid "STB_OFFSET" -msgstr "Offset surface" - -msgid "TOP_MUL_TRANSLATION" -msgstr "Multi-Translation" - -msgid "MEN_MUL_TRANSLATION" -msgstr "Multi-Translation" - -msgid "STB_MUL_TRANSLATION" -msgstr "Multi-Translation" - -msgid "TOP_MUL_ROTATION" -msgstr "Multi-Rotation" - -msgid "MEN_MUL_ROTATION" -msgstr "Multi-Rotation" - -msgid "STB_MUL_ROTATION" -msgstr "Multi-Rotation" - -msgid "TOP_PARTITION" -msgstr "Partition" - -msgid "MEN_PARTITION" -msgstr "Partition" - -msgid "STB_PARTITION" -msgstr "Partition" - -msgid "TOP_ARCHIMEDE" -msgstr "Archimede" - -msgid "MEN_ARCHIMEDE" -msgstr "Archimede" - -msgid "STB_ARCHIMEDE" -msgstr "Archimede" - -msgid "TOP_FILLET" -msgstr "Fillet" - -msgid "MEN_FILLET" -msgstr "Fillet" - -msgid "STB_FILLET" -msgstr "Fillet" - -msgid "TOP_CHAMFER" -msgstr "Chamfer" - -msgid "MEN_CHAMFER" -msgstr "Chamfer" - -msgid "STB_CHAMFER" -msgstr "Chamfer" - -msgid "TOP_CLIPPING" -msgstr "Clipping range" - -msgid "MEN_CLIPPING" -msgstr "Clipping range" - -msgid "STB_CLIPPING" -msgstr "Clipping range" - -msgid "TOP_MUL_TRANSFORM" -msgstr "Multi-transformation" - -msgid "MEN_MUL_TRANSFORM" -msgstr "Multi-transformation" - -msgid "STB_MUL_TRANSFORM" -msgstr "Multi-transformation" - -msgid "TOP_EXPLODE_BLOCKS" -msgstr "Explode on Blocks" - -msgid "MEN_EXPLODE_BLOCKS" -msgstr "Explode on Blocks" - -msgid "STB_EXPLODE_BLOCKS" -msgstr "Explode on Blocks" - -msgid "TOP_PROPAGATE" -msgstr "Propagate" - -msgid "MEN_PROPAGATE" -msgstr "Propagate" - -msgid "STB_PROPAGATE" -msgstr "Propagate" - -msgid "MEN_REPAIR" -msgstr "Repair" - -msgid "TOP_SHAPE_PROCESS" -msgstr "Perform shape processing" - -msgid "MEN_SHAPE_PROCESS" -msgstr "Shape processing" - -msgid "STB_SHAPE_PROCESS" -msgstr "Perform shape processing " - -msgid "TOP_SUPPRESS_FACES" -msgstr "Perform suppress faces" - -msgid "MEN_SUPPRESS_FACES" -msgstr "Suppress faces" - -msgid "STB_SUPPRESS_FACES" -msgstr "Perform suppress faces" - -msgid "TOP_CLOSE_CONTOUR" -msgstr "Perform close contour" - -msgid "MEN_CLOSE_CONTOUR" -msgstr "Close contour" - -msgid "STB_CLOSE_CONTOUR" -msgstr "Perform close contour" - -msgid "TOP_SUPPRESS_INT_WIRES" -msgstr "Perform suppress internal wires" - -msgid "MEN_SUPPRESS_INT_WIRES" -msgstr "Suppress internal wires" - -msgid "STB_SUPPRESS_INT_WIRES" -msgstr "Perform suppress internal wires" - -msgid "TOP_SUPPERSS_HOLES" -msgstr "Perform suppress holes" - -msgid "MEN_SUPPERSS_HOLES" -msgstr "Suppress holes" - -msgid "STB_SUPPERSS_HOLES" -msgstr "Perform suppress holes" - -msgid "TOP_SEWING" -msgstr "Perform sewing" - -msgid "MEN_SEWING" -msgstr "Sewing" - -msgid "STB_SEWING" -msgstr "Perform sewing" - -msgid "TOP_GLUE_FACES" -msgstr "Perform glue faces" - -msgid "MEN_GLUE_FACES" -msgstr "Glue faces" - -msgid "STB_GLUE_FACES" -msgstr "Perform glue faces" - -msgid "TOP_POINT_ON_EDGE" -msgstr "Add point on edge" - -msgid "MEN_POINT_ON_EDGE" -msgstr "Add point on edge" - -msgid "STB_POINT_ON_EDGE" -msgstr "Add point on edge" - -msgid "TOP_CHECK_FREE_BNDS" -msgstr "Check free boundaries" - -msgid "MEN_CHECK_FREE_BNDS" -msgstr "Check free boundaries" - -msgid "STB_CHECK_FREE_BNDS" -msgstr "Check free boundaries" - -msgid "TOP_CHECK_FREE_FACES" -msgstr "Check free faces" - -msgid "MEN_CHECK_FREE_FACES" -msgstr "Check free faces" - -msgid "STB_CHECK_FREE_FACES" -msgstr "Check free faces" - -msgid "MEN_MEASURES" -msgstr "Measures" - -msgid "TOP_POINT_COORDS" -msgstr "Point coordinates" - -msgid "MEN_POINT_COORDS" -msgstr "Point coordinates" - -msgid "STB_POINT_COORDS" -msgstr "Point coordinates" - -msgid "TOP_BASIC_PROPS" -msgstr "Basic properties" - -msgid "MEN_BASIC_PROPS" -msgstr "Basic properties" - -msgid "STB_BASIC_PROPS" -msgstr "Basic properties" - -msgid "TOP_MASS_CENTER" -msgstr "Compute center of mass" - -msgid "MEN_MASS_CENTER" -msgstr "Center of mass" - -msgid "STB_MASS_CENTER" -msgstr "Compute center of mass" - -msgid "TOP_INERTIA" -msgstr "Compute intertia" - -msgid "MEN_INERTIA" -msgstr "Inertia" - -msgid "STB_INERTIA" -msgstr "Compute intertia" - -msgid "MEN_DIMENSIONS" -msgstr "Dimensions" - -msgid "TOP_BND_BOX" -msgstr "Compute bounding box" - -msgid "MEN_BND_BOX" -msgstr "Bounding box" - -msgid "STB_BND_BOX" -msgstr "Compute bounding box" - -msgid "TOP_MIN_DIST" -msgstr "Compute minimum distance" - -msgid "MEN_MIN_DIST" -msgstr "Min distance" - -msgid "STB_MIN_DIST" -msgstr "Compute minimum distance" - -msgid "TOP_TOLERANCE" -msgstr "Compute tolerance" - -msgid "MEN_TOLERANCE" -msgstr "Compute tolerance" - -msgid "STB_TOLERANCE" -msgstr "Compute tolerance" - -msgid "TOP_WHAT_IS" -msgstr "What is" - -msgid "MEN_WHAT_IS" -msgstr "What is" - -msgid "STB_WHAT_IS" -msgstr "What is" - -msgid "TOP_CHECK" -msgstr "Check" - -msgid "MEN_CHECK" -msgstr "Check" - -msgid "STB_CHECK" -msgstr "Check" - -msgid "TOP_CHECK_COMPOUND" -msgstr "Check compound of blocks" - -msgid "MEN_CHECK_COMPOUND" -msgstr "Check compound of blocks" - -msgid "STB_CHECK_COMPOUND" -msgstr "Check compound of blocks" - -msgid "MEN_TOOLS" -msgstr "Tools" - -msgid "TOP_CHECK_GEOMETRY" -msgstr "Check Geometry" - -msgid "MEN_CHECK_GEOMETRY" -msgstr "Check Geometry" - -msgid "STB_CHECK_GEOMETRY" -msgstr "Check Geometry" - -msgid "MEN_PREFERENCES" -msgstr "Preferences" - -msgid "MEN_PREFERENCES_GEOM" -msgstr "Geometry" - -msgid "TOP_SHADING_COLOR" -msgstr "Set shading color" - -msgid "MEN_SHADING_COLOR" -msgstr "Shading color" - -msgid "STB_SHADING_COLOR" -msgstr "Set shading color" - -msgid "TOP_ISOS" -msgstr "Set number of isolines" - -msgid "MEN_ISOS" -msgstr "Isos" - -msgid "STB_ISOS" -msgstr "Set number of isolines" - -msgid "TOP_STEP_VALUE" -msgstr "Set step value" - -msgid "MEN_STEP_VALUE" -msgstr "Step value" - -msgid "STB_STEP_VALUE" -msgstr "Set step value" - -msgid "MEN_VIEW" -msgstr "View" - -msgid "MEN_DISPLAY_MODE" -msgstr "Display mode" - -msgid "TOP_SHADING" -msgstr "Shading" - -msgid "MEN_SHADING" -msgstr "Shading" - -msgid "MEN_WIREFRAME" -msgstr "Wireframe" - -msgid "STB_SHADING" -msgstr "Shading" - -msgid "TOP_DISPLAY_ALL" -msgstr "Display all" - -msgid "MEN_DISPLAY_ALL" -msgstr "Display all" - -msgid "STB_DISPLAY_ALL" -msgstr "Display all" - -msgid "TOP_ERASE_ALL" -msgstr "Erase all" - -msgid "MEN_ERASE_ALL" -msgstr "Erase all" - -msgid "STB_ERASE_ALL" -msgstr "Erase all" - -msgid "TOP_DISPLAY" -msgstr "Display" - -msgid "MEN_DISPLAY" -msgstr "Display" - -msgid "STB_DISPLAY" -msgstr "Display" - -msgid "TOP_DISPLAY_ONLY" -msgstr "Display only" - -msgid "MEN_DISPLAY_ONLY" -msgstr "Display only" - -msgid "STB_DISPLAY_ONLY" -msgstr "Display only" - -msgid "TOP_ERASE" -msgstr "Erase" - -msgid "MEN_ERASE" -msgstr "Erase" - -msgid "STB_ERASE" -msgstr "Erase" - -msgid "TOP_POP_RENAME" -msgstr "Rename" - -msgid "MEN_POP_RENAME" -msgstr "Rename" - -msgid "STB_POP_RENAME" -msgstr "Rename" - -msgid "TOP_POP_WIREFRAME" -msgstr "Wireframe" - -msgid "MEN_POP_WIREFRAME" -msgstr "Wireframe" - -msgid "STB_POP_WIREFRAME" -msgstr "Wireframe" - -msgid "TOP_POP_SHADING" -msgstr "Shading" - -msgid "MEN_POP_SHADING" -msgstr "Shading" - -msgid "STB_POP_SHADING" -msgstr "Shading" - -msgid "TOP_POP_COLOR" -msgstr "Color" - -msgid "MEN_POP_COLOR" -msgstr "Color" - -msgid "STB_POP_COLOR" -msgstr "Color" - -msgid "TOP_POP_TRANSPARENCY" -msgstr "Transparency" - -msgid "MEN_POP_TRANSPARENCY" -msgstr "Transparency" - -msgid "STB_POP_TRANSPARENCY" -msgstr "Transparency" - -msgid "TOP_POP_ISOS" -msgstr "Isolines" - -msgid "MEN_POP_ISOS" -msgstr "Isos" - -msgid "STB_POP_ISOS" -msgstr "Isolines" - -msgid "TOP_POP_CREATE_GROUP" -msgstr "Create Group" - -msgid "MEN_POP_CREATE_GROUP" -msgstr "Create Group" - -msgid "STB_POP_CREATE_GROUP" -msgstr "Create Group" - -msgid "TOOL_BASIC" -msgstr "Basic" - -msgid "TOOL_PRIMITIVES" -msgstr "Primitives" - -msgid "TOOL_BOOLEAN" -msgstr "Boolean operations" - -msgid "TOOL_GENERATION" -msgstr "Generation" - -msgid "TOOL_TRANSFORMATION" -msgstr "Transformation" - -msgid "TLT_RENAME" -msgstr "Rename" - -msgid "NAME_LBL" -msgstr "Name: " - -msgid "GEOM_ERR_GET_ENGINE" -msgstr "Failed to obtain GEOM Engine component. Reload Geometry module and try again." - -msgid "PREF_GROUP_OCCVIEWER" -msgstr "OCC Viewer 3d" - -msgid "PREF_GROUP_GENERAL" -msgstr "General" - -msgid "PREF_SHADING_COLOR" -msgstr "Default shading color" - -msgid "PREF_STEP_VALUE" -msgstr "Step value for spin boxes" - -msgid "PREF_DISPLAY_MODE" -msgstr "Default display mode" - -msgid "PREF_TAB_SETTINGS" -msgstr "Settings" diff --git a/src/GEOMGUI/GEOM_msg_fr.po b/src/GEOMGUI/GEOM_msg_fr.po deleted file mode 100644 index 3a3e3c481..000000000 --- a/src/GEOMGUI/GEOM_msg_fr.po +++ /dev/null @@ -1,1385 +0,0 @@ -# This is a Qt message file in .po format. Each msgid starts with -# a scope. This scope should *NOT* be translated - eg. translating -# from French to English, "Foo::Bar" would be translated to "Pub", -# not "Foo::Pub". -msgid "" -msgstr "" -"Project-Id-Version: PROJECT VERSION\n" -"POT-Creation-Date: 2002-03-19 09:35:48 AM CET\n" -"PO-Revision-Date: YYYY-MM-DD\n" -"Last-Translator: FULLNAME \n" -"Content-Type: text/plain; charset=iso-8859-1\n" - -# -#============================================================================== -# - -#Button Apply -msgid "GEOM_BUT_APPLY" -msgstr "&Appliquer" - -#Button Close -msgid "GEOM_BUT_CLOSE" -msgstr "&Fermer" - -#Button Cancel -msgid "GEOM_BUT_CANCEL" -msgstr "&Annuler" - -#Button Ok -msgid "GEOM_BUT_OK" -msgstr "&Ok" - -#Button Yes -msgid "GEOM_BUT_YES" -msgstr "&Oui" - -#Button No -msgid "GEOM_BUT_NO" -msgstr "&Non" - -#Button Help -msgid "GEOM_BUT_HELP" -msgstr "&Aide" - - -#Button Explode -msgid "GEOM_BUT_EXPLODE" -msgstr "&Exploser" - -# -#============================================================================== -# - -#: GeometryGUI.cxx:563 -msgid "GEOM_INF_LOADED" -msgstr "Le fichier %1 est chargé." - -# -#============================================================================== -# - -#: GeometryGUI.cxx:3069 -msgid "GEOM_PRP_COMMAND" -msgstr "Pas de commande associée à l'id = %1." - -#: GeometryGUI.cxx:4977 -msgid "GEOM_PRP_ABORT" -msgstr "L'opération a echoué" - -#: GeometryGUI.cxx:5058 -msgid "GEOM_PRP_DONE" -msgstr "Opération effectuée" - -#: GeometryGUI.cxx:3717 -msgid "GEOM_PRP_LOADING" -msgstr "Chargement de %1 ..." - -#: GeometryGUI.cxx:1412 -msgid "GEOM_PRP_NULLSHAPE" -msgstr "Erreur, objet inconsistant ou inapproprié !" - -#: GeometryGUI.cxx:5072 -msgid "GEOM_PRP_READY" -msgstr "Prêt..." - -#: GeometryGUI.cxx:1690 -msgid "GEOM_PRP_SELECT_SUBSHAPES" -msgstr "Selection de sous objets" - -msgid "GEOM_CONFIRM" -msgstr "Confirmer cette operation" - -msgid "GEOM_CONFIRM_INFO" -msgstr "L'objet contient %1 sous objets" - - -msgid "GEOM_PRP_NOT_FOR_VTK_VIEWER" -msgstr "Non permis dans viewer VTK" - -#: GeometryGUI.cxx:1690 -msgid "GEOM_PRP_SHAPE_IN_STUDY" -msgstr "La shape principale doit etre avant dans l'etude" - -#: GeometryGUI.cxx:1690 -msgid "GEOM_PRP_SELECT_EDGE" -msgstr "Selectionner les edges et clicker sur Apply" - -#: GeometryGUI.cxx:1690 -msgid "GEOM_PRP_SELECT_FACE" -msgstr "Select les faces a supprimer et clicker sur Ok/Apply" - -#: GeometryGUI.cxx:1690 -msgid "GEOM_PRP_SELECT_FIRST" -msgstr "Selectionner la shape principale en premier" - -#: GeometryGUI.cxx:1690 -msgid "GEOM_PRP_MIN_DIST" -msgstr "Min Distance non calculer" - -# -#============================================================================== -# - -#: GeometryGUI.cxx:3698 -msgid "GEOM_MEN_ALL_FILES" -msgstr "Tous fichiers ( * )" - -#: GeometryGUI.cxx:4389 -msgid "GEOM_MEN_ANGLE" -msgstr "Angle :" - -#: GeometryGUI.cxx:3941 -msgid "GEOM_MEN_COMPONENT" -msgstr "Géometrie" - -#: GeometryGUI.cxx:4389 -msgid "GEOM_MEN_ENTER_ANGLE" -msgstr "Saisir un angle en degrés" - -#: GeometryGUI.cxx:3758 -msgid "GEOM_MEN_EXPORT" -msgstr "Exporter" - -#: GeometryGUI.cxx:3648 -msgid "GEOM_MEN_IMPORT" -msgstr "Importer" - -#: GeometryGUI.cxx:3763 -msgid "GEOM_MEN_LOAD_SCRIPT" -msgstr "Fichiers PYTHON ( *.py )" - -#: GeometryGUI.cxx:2931 -msgid "GEOM_MEN_ISOS" -msgstr "Choisir un nombre d'isos" - -#: GeometryGUI.cxx:4278 -msgid "GEOM_MEN_POPUP_NAME" -msgstr "%1 Objets" - -#: GeometryGUI.cxx:4414 -msgid "GEOM_MEN_SKETCHER_X" -msgstr "Saisir une longueur pour fixer X" - -#: GeometryGUI.cxx:4438 -msgid "GEOM_MEN_SKETCHER_Y" -msgstr "Saisir une longueur pour fixer Y" - -#: GeometryGUI.cxx:2898 -msgid "GEOM_MEN_TRANSPARENCY" -msgstr "Transparence" - -#: GeometryGUI.cxx:4413 -msgid "GEOM_MEN_X" -msgstr "X :" - -#: GeometryGUI.cxx:4437 -msgid "GEOM_MEN_Y" -msgstr "Y :" - -#: GeometryGUI_NbIsosDlg.cxx:36 -msgid "GEOM_MEN_ISOU" -msgstr "Isos u :" - -#: GeometryGUI_NbIsosDlg.cxx:53 -msgid "GEOM_MEN_ISOV" -msgstr "Isos v :" - -#: GeometryGUI_TransparencyDlg.cxx:31 -msgid "GEOM_MEN_TRANSPARENCY_LABEL" -msgstr "Transparence :" - -msgid "GEOM_MEN_STEP_LABEL" -msgstr "Increment" - -msgid "GEOM_IDENTICAL_NAMES_SELECT_BY_MOUSE" -msgstr "Noms identiques : selectionner avec la souris !" - -msgid "GEOM_NAME_INCORRECT" -msgstr "Le nom saisi n'existe pas" - - - -# -#============================================================================== -# - -#: GeometryGUI.cxx:892 -msgid "GEOM_WRN_RADIUS_NULL" -msgstr "Le rayon est nul" - -#: GeometryGUI.cxx:3854 -msgid "GEOM_WRN_WARNING" -msgstr "Avertissement" - -#: GeometryGUI.cxx:3854 -msgid "GEOM_REALLY_DELETE" -msgstr "Voulez-vous supprimer l'object(s) ?" - -# -#============================================================================== -# - -#Object -msgid "GEOM_OBJECT" -msgstr "Objet" - -#Main object -msgid "GEOM_MAIN_OBJECT" -msgstr "Objet Principal" - -#Tool object -msgid "GEOM_TOOL_OBJECT" -msgstr "Objet Outil" - -#Base Object -msgid "GEOM_BASE_OBJECT" -msgstr "Objet De Base" - -#Path Object -msgid "GEOM_PATH_OBJECT" -msgstr "Objet Chemin" - -#Objects -msgid "GEOM_OBJECTS" -msgstr "Objets" - -#Object i -msgid "GEOM_OBJECT_I" -msgstr "Objet %1" - -#Object and result -msgid "GEOM_OBJECT_RESULT" -msgstr "Objet Et Résultat" - -#Point -msgid "GEOM_POINT" -msgstr "Point" - -#Base point -msgid "GEOM_BASE_POINT" -msgstr "Point De Base" - -#Center Point -msgid "GEOM_CENTER_POINT" -msgstr "Point Centre" - -#Diagonal Points -msgid "GEOM_DIAGONAL_POINTS" -msgstr "Points Diagonaux" - -#Central Point -msgid "GEOM_CENTRAL_POINT" -msgstr "Point Central" - -#Points -msgid "GEOM_POINTS" -msgstr "Points" - -#Point i -msgid "GEOM_POINT_I" -msgstr "Point %1" - -#Arguments -msgid "GEOM_ARGUMENTS" -msgstr "Arguments" - -#Center -msgid "GEOM_CENTER" -msgstr "Centre" - -#Radius -msgid "GEOM_RADIUS" -msgstr "Rayon" - -#Radius i -msgid "GEOM_RADIUS_I" -msgstr "Rayon %1" - -#Height -msgid "GEOM_HEIGHT" -msgstr "Hauteur" - -#Length -msgid "GEOM_LENGTH" -msgstr "Longueur :" - -#Weight -msgid "GEOM_WEIGHT" -msgstr "poids" - -#Coordinates -msgid "GEOM_COORDINATES" -msgstr "Coordonnées" - -#Coor. -msgid "GEOM_COOR" -msgstr "Coord. :" - -#Reverse -msgid "GEOM_REVERSE" -msgstr "Renverser" - -#Reverse U -msgid "GEOM_REVERSE_U" -msgstr "Renverser U" - -#Reverse V -msgid "GEOM_REVERSE_V" -msgstr "Reverser V" - -#Angle -msgid "GEOM_ANGLE" -msgstr "Angle :" - -#Axis -msgid "GEOM_AXIS" -msgstr "Axe" - -#Matrix -msgid "GEOM_MATRIX" -msgstr "Matrice :" - -#Vector Length -msgid "GEOM_VECTOR_LENGTH" -msgstr "Longueur Du Vecteur :" - -#Reverse Vector -msgid "GEOM_REVERSE_VECTOR" -msgstr "Renverser Le Vecteur" - -#Point Mirror -msgid "GEOM_POINT_MIRROR" -msgstr "Point Miroir" - -#Axe Mirror -msgid "GEOM_AXE_MIRROR" -msgstr "Axe Miroir" - -#Plane Mirror -msgid "GEOM_PLANE_MIRROR" -msgstr "Plan Miroir" - -#Face Selection -msgid "GEOM_FACE_SELECTION" -msgstr "Selection de Face" - -#Base -msgid "GEOM_BASE" -msgstr "Base" - -#Water Density -msgid "GEOM_WATER_DENSITY" -msgstr "Densité de l'eau :" - -#Meshing Deflection -msgid "GEOM_MESHING_DEFLECTION" -msgstr "Déflection Du Maillage :" - -#Dimensions -msgid "GEOM_DIMENSIONS" -msgstr "Dimensions" - -#Precision -msgid "GEOM_PRECISION" -msgstr "Précision :" - -#Selection -msgid "GEOM_SELECTION" -msgstr "Sélection" - -#Nb. Times -msgid "GEOM_NB_TIMES" -msgstr "Nb. Fois :" - -#Nb. Times U -msgid "GEOM_NB_TIMES_U" -msgstr "Nb. Fois U :" - -#Nb. Times V -msgid "GEOM_NB_TIMES_V" -msgstr "Nb. Fois V :" - -#Step -msgid "GEOM_STEP" -msgstr "Pas :" - -#Step V -msgid "GEOM_STEP_V" -msgstr "Pas V :" - -#Step U -msgid "GEOM_STEP_U" -msgstr "Pas U :" - -# -#============================================================================== -# - -#Partition -msgid "GEOM_PARTITION" -msgstr "Partition" - -#Half-space partition -msgid "GEOM_PARTITION_HALFSPACE" -msgstr "Half-space partition" - -#Tolerance -msgid "GEOM_TOLERANCE" -msgstr "Tolérance" - -#Orientation -msgid "GEOM_ORIENTATION" -msgstr "Orientation" - -#Pipe -msgid "GEOM_PIPE" -msgstr "Pipe" - -#Revolution -msgid "GEOM_REVOLUTION" -msgstr "Révolution" - -#Rotation -msgid "GEOM_ROTATION" -msgstr "Rotation" - -#Archimede -msgid "GEOM_ARCHIMEDE" -msgstr "Archimède" - -#Common -msgid "GEOM_COMMON" -msgstr "Joindre" - -#Cut -msgid "GEOM_CUT" -msgstr "Couper" - -#Distance -msgid "GEOM_DISTANCE" -msgstr "Distance" - -#Filling -msgid "GEOM_FILLING" -msgstr "Surface Par Courbes" - -#Fuse -msgid "GEOM_FUSE" -msgstr "Fusionner" - -#Scale -msgid "GEOM_SCALE" -msgstr "Echelle" - -#Section -msgid "GEOM_SECTION" -msgstr "Section" - -#Sewing -msgid "GEOM_SEWING" -msgstr "Coudre" - -#Translation -msgid "GEOM_TRANSLATION" -msgstr "Translation" - -#Working Plane -msgid "GEOM_WPLANE" -msgstr "Plan de Travail" - -#Mirror -msgid "GEOM_MIRROR" -msgstr "Miroir" - -#Prism -msgid "GEOM_PRISM" -msgstr "Extrusion" - -#Sub Shapes -msgid "GEOM_SUB_SHAPE" -msgstr "Sous Shapes" - -#Supress Face -msgid "GEOM_SUPRESSFACE" -msgstr "Supression de Face" - -#Fillet -msgid "GEOM_FILLET" -msgstr "Conge" - -#Chamfer -msgid "GEOM_CHAMFER" -msgstr "Chanfrein" - -#Check Shape -msgid "GEOM_CHECK_SHAPE" -msgstr "Check Shape" - -#Check Blocks Compound -msgid "GEOM_CHECK_BLOCKS_COMPOUND" -msgstr "Check Blocks Compound" - -#Check Blocks Compound Errors -msgid "GEOM_CHECK_BLOCKS_COMPOUND_ERRORS" -msgstr "Errors" - -#Check Blocks Compound Errors -msgid "GEOM_CHECK_BLOCKS_COMPOUND_HAS_NO_ERRORS" -msgstr "The Compound of Blocks has no errors" - -msgid "GEOM_CHECK_BLOCKS_COMPOUND_HAS_ERRORS" -msgstr "The Compound of Blocks has errors" - -#Check Blocks Compound SubShapes -msgid "GEOM_CHECK_BLOCKS_COMPOUND_SUBSHAPES" -msgstr "Incriminated Sub-Shapes" - -#Whatis -msgid "GEOM_WHATIS" -msgstr "Whatis" - -#Bounding Box -msgid "GEOM_BNDBOX" -msgstr "Boite Anglobante" - -#Center Of Mass -msgid "GEOM_CMASS" -msgstr "Centre de Masse" - -#Basic Properties -msgid "GEOM_PROPERTIES" -msgstr "Basiques Proprietes" - -#Multi-Translation -msgid "GEOM_MULTITRANSLATION" -msgstr "Multi-Translation" - -#Multi-Rotation -msgid "GEOM_MULTIROTATION" -msgstr "Multi-Rotation" - -# -#============================================================================== -# - -#Arc -msgid "GEOM_ARC" -msgstr "Arc" - -#Box -msgid "GEOM_BOX" -msgstr "Boite" - -#Circle -msgid "GEOM_CIRCLE" -msgstr "Cercle" - -#Ellipse -msgid "GEOM_ELLIPSE" -msgstr "Ellipse" - -msgid "GEOM_ELLIPSE_TITLE" -msgstr "Construction d'Ellipses" - -#Radius major -msgid "GEOM_RADIUS_MAJOR" -msgstr "Rayon max. :" - -#Radius minor -msgid "GEOM_RADIUS_MINOR" -msgstr "Rayon min. :" - -#Compound -msgid "GEOM_COMPOUND" -msgstr "Compound" - -#CompSolid -msgid "GEOM_COMPOUNDSOLID" -msgstr "CompSolid" - -#Cone -msgid "GEOM_CONE" -msgstr "Cone" - -#Cylinder -msgid "GEOM_CYLINDER" -msgstr "Cylindre" - -#Edge -msgid "GEOM_EDGE" -msgstr "Edge" - -#Face -msgid "GEOM_FACE" -msgstr "Face" - -#Faces -msgid "GEOM_FACES" -msgstr "Faces" - -#Line -msgid "GEOM_LINE" -msgstr "Ligne" - -#Plane -msgid "GEOM_PLANE" -msgstr "Plan" - -#Shape -msgid "GEOM_SHAPE" -msgstr "Shape" - -#Shell -msgid "GEOM_SHELL" -msgstr "Shell" - -#Shells -msgid "GEOM_SHELLS" -msgstr "Shells" - -#Solid -msgid "GEOM_SOLID" -msgstr "Solide" - -#Sphere -msgid "GEOM_SPHERE" -msgstr "Sphère" - -#Conical Face -msgid "GEOM_SURFCONE" -msgstr "Face Conique" - -#Cylindrical Face -msgid "GEOM_SURFCYLINDER" -msgstr "Face Cylindrique" - -#Spherical Face -msgid "GEOM_SURFSPHERE" -msgstr "Face Sphèrique" - -#Toroidal Face -msgid "GEOM_SURFTORUS" -msgstr "Face Toroique" - -#Torus -msgid "GEOM_TORUS" -msgstr "Tore" - -#Vector -msgid "GEOM_VECTOR" -msgstr "Vecteur" - -#Vector U -msgid "GEOM_VECTOR_U" -msgstr "Vecteur U" - -#Vector V -msgid "GEOM_VECTOR_V" -msgstr "Vecteur V" - -#Vertex -msgid "GEOM_VERTEX" -msgstr "Vertex" - -#Wire -msgid "GEOM_WIRE" -msgstr "Wire" - -#Wire(s) -msgid "GEOM_WIRES" -msgstr "Wire(s)" - -#Parameter -msgid "GEOM_PARAMETER" -msgstr "Paramètre :" - - -# -#============================================================================== -# - -#Min -msgid "GEOM_MIN" -msgstr "Min :" - -#Max -msgid "GEOM_MAX" -msgstr "Max :" - -#X -msgid "GEOM_X" -msgstr "X :" - -#Y -msgid "GEOM_Y" -msgstr "Y :" - -#Z -msgid "GEOM_Z" -msgstr "Z :" - -#DX -msgid "GEOM_DX" -msgstr "Dx :" - -#DY -msgid "GEOM_DY" -msgstr "Dy :" - -#DZ -msgid "GEOM_DZ" -msgstr "Dz :" - -#D1 -msgid "GEOM_D1" -msgstr "D1 :" - -#D2 -msgid "GEOM_D2" -msgstr "D2 :" - -# -#============================================================================== -# - -#: GeometryGUI.cxx -msgid "GEOM_STEP_TITLE" -msgstr "Increment par défaut lors des constructions" - -#: GeometryGUI_ArcDlg.cxx:45 -msgid "GEOM_ARC_TITLE" -msgstr "Construction d'un Arc" - -#: GeometryGUI_ArchimedeDlg.cxx:55 -msgid "GEOM_ARCHIMEDE_TITLE" -msgstr "Construction d'Archimède" - -#: GeometryGUI_BndBoxDlg.cxx:59 -msgid "GEOM_BNDBOX_TITLE" -msgstr "Boite Englobante" - -#: GeometryGUI_BndBoxDlg.cxx:82 -msgid "GEOM_BNDBOX_OBJDIM" -msgstr "Objet and ses dimensions" - -#: GeometryGUI_BoxDlg.cxx:50 -msgid "GEOM_BOX_TITLE" -msgstr "Construction d'une Boite" - -#: GeometryGUI_BoxDlg.cxx:50 -msgid "GEOM_BOX_OBJ" -msgstr "Dimensions A l'Origine" - -#: GeometryGUI_ChamferDlg.cxx:58 -msgid "GEOM_CHAMFER_TITLE" -msgstr "Construction d'un Chanfrein" - -#: GeometryGUI_ChamferDlg.cxx:58 -msgid "GEOM_CHAMFER_ALL" -msgstr "Chanfrein sur toute la Shape" - -#: GeometryGUI_ChamferDlg.cxx:58 -msgid "GEOM_CHAMFER_EDGES" -msgstr "Chanfrein sur Edges de la Shape" - -#: GeometryGUI_ChamferDlg.cxx:58 -msgid "GEOM_CHAMFER_FACES" -msgstr "Chanfrein sur Faces de la Shape" - -#: GeometryGUI_CircleDlg.cxx:48 -msgid "GEOM_CIRCLE_TITLE" -msgstr "Construction d'un Cercle" - -#: GeometryGUI_CenterMassDlg.cxx:77 -msgid "GEOM_CMASS_TITLE" -msgstr "Centre De Gravité" - -msgid "GEOM_PLANE_SIZE" -msgstr "Taille du plan :" - -#: GeometryGUI_CommonDlg.cxx:47 -msgid "GEOM_COMMON_TITLE" -msgstr "BOOLEEN : Jonction De Deux Objets" - -#: GeometryGUI_CompoundDlg.cxx:44 -msgid "GEOM_COMPOUND_TITLE" -msgstr "Création d'un Compound" - -#: GeometryGUI_ConeDlg.cxx:49 -msgid "GEOM_CONE_TITLE" -msgstr "Construction d'un Cone" - -#: GeometryGUI_CutDlg.cxx:48 -msgid "GEOM_CUT_TITLE" -msgstr "BOOLEEN : Couper Deux Objets" -# -#: GeometryGUI_CylinderDlg.cxx:47 -msgid "GEOM_CYLINDER_TITLE" -msgstr "Construction d'un Cylindre" - -#: GeometryGUI_CheckShape.cxx:60 -msgid "GEOM_CHECK_TITLE" -msgstr "Check Shape" - -#: MeasureGUI_CheckCompoundOfBlocks.cxx:61 -msgid "GEOM_CHECK_COMPOUND_BLOCKS_TITLE" -msgstr "Check Blocks Compound" - -#: GeometryGUI_CheckShape.cxx:83 -msgid "GEOM_CHECK_INFOS" -msgstr "Objet et ses Informations Topologiques" - -#: GeometryGUI_DistanceDlg.cxx:57 -msgid "GEOM_MINDIST_TITLE" -msgstr "Distance Minimale entre Deux Objets" - -#: GeometryGUI_DistanceDlg.cxx:57 -msgid "GEOM_MINDIST_OBJ" -msgstr "Objets Et Resultats" - -#: GeometryGUI_EdgeDlg.cxx:47 -msgid "GEOM_EDGE_TITLE" -msgstr "Création d'un Edge" - -#: GeometryGUI_FilletDlg.cxx:58 -msgid "GEOM_FILLET_TITLE" -msgstr "Construction d'un Congé" - -#: GeometryGUI_FilletDlg.cxx:58 -msgid "GEOM_FILLET_ALL" -msgstr "Congé sur toute la Shape" - -#: GeometryGUI_FilletDlg.cxx:58 -msgid "GEOM_FILLET_EDGES" -msgstr "Congé sur Edges de la Shape" - -#: GeometryGUI_FilletDlg.cxx:58 -msgid "GEOM_FILLET_FACES" -msgstr "Congé sur Faces de la Shape" - -#: GeometryGUI_FaceDlg.cxx:49 -msgid "GEOM_FACE_TITLE" -msgstr "Création d'une Face" - -#: GeometryGUI_FaceDlg.cxx:78 -msgid "GEOM_FACE_FFW" -msgstr "Face a partir d'un wire" - -#: GeometryGUI_FaceDlg.cxx:103 -msgid "GEOM_FACE_OPT" -msgstr "Création d'une Face plane" - -#: GeometryGUI_FillingDlg.cxx:53 -msgid "GEOM_FILLING_TITLE" -msgstr "Surface Par Courbes" - -#: GeometryGUI_FillingDlg.cxx:112 -msgid "GEOM_FILLING_ARG" -msgstr "Argument Et Parametres" - -#: GeometryGUI_FillingDlg.cxx:128 -msgid "GEOM_FILLING_MIN_DEG" -msgstr "Min. Deg" - -#: GeometryGUI_FillingDlg.cxx:142 -msgid "GEOM_FILLING_MAX_DEG" -msgstr "Max. Deg" - -#: GeometryGUI_FillingDlg.cxx:150 -msgid "GEOM_FILLING_TOL_2D" -msgstr "Tol. 2D" - -#: GeometryGUI_FillingDlg.cxx:170 -msgid "GEOM_FILLING_COMPOUND" -msgstr "Compound de Courbes" - -#: GeometryGUI_FillingDlg.cxx:184 -msgid "GEOM_FILLING_TOL_3D" -msgstr "Tol. 3D" - -#: GeometryGUI_FillingDlg.cxx:192 -msgid "GEOM_FILLING_NB_ITER" -msgstr "Nb. Iter" - -#: GeometryGUI_FuseDlg.cxx:48 -msgid "GEOM_FUSE_TITLE" -msgstr "BOOLEEN : Fusionner deux Objets" - -#: GeometryGUI_InertiaDlg.cxx:42 -msgid "GEOM_INERTIA_TITLE" -msgstr "Calculs d'Inertie" - -#: GeometryGUI_InertiaDlg.cxx:50 -msgid "GEOM_INERTIA_CONSTR" -msgstr "Matrice Et Moments d'Inertie" - -#: GeometryGUI_InertiaDlg.cxx:100 -msgid "GEOM_INERTIA_I" -msgstr "%1:1" - -#: GeometryGUI_InertiaDlg.cxx:182 -msgid "GEOM_INERTIA_IXYZ" -msgstr "IX & IY & IZ" - -#: GeometryGUI_LineDlg.cxx:50 -msgid "GEOM_LINE_TITLE" -msgstr "Construction d'une Ligne" - -#: GeometryGUI_MaxToleranceDlg.cxx:53 -msgid "GEOM_TOLERANCE_TITLE" -msgstr "Tolerance Maximale" - -#: GeometryGUI_MaxToleranceDlg.cxx:84 -msgid "GEOM_TOLERANCE_CONSTR" -msgstr "Object et ses Tolerances" - -#: GeometryGUI_MaxToleranceDlg.cxx:121 -msgid "GEOM_TOLERANCE_FACE" -msgstr "Face :" - -#: GeometryGUI_MaxToleranceDlg.cxx:138 -msgid "GEOM_TOLERANCE_EDGE" -msgstr "Edge :" - -#: GeometryGUI_MaxToleranceDlg.cxx:155 -msgid "GEOM_TOLERANCE_VERTEX" -msgstr "Vertex :" - -#: GeometryGUI_MirrorDlg.cxx:52 -msgid "GEOM_MIRROR_TITLE" -msgstr "Methode Miroir" - -#: GeometryGUI_OrientationDlg.cxx:46 -msgid "GEOM_ORIENTATION_TITLE" -msgstr "Changer l'Orientation" - -#: GeometryGUI_OrientationDlg.cxx:134 -msgid "GEOM_ORIENTATION_OPT" -msgstr "Renverser l'orientation avec une simulation de vecteur normal" - -#: GeometryGUI_PartitionDlg.cxx:45 -msgid "GEOM_PARTITION_TITLE" -msgstr "Partition d'Objects Avec Outils" - -#: GeometryGUI_PartitionDlg.cxx:45 -msgid "GEOM_KEEP_OBJECT" -msgstr "Objet garde" - -#: GeometryGUI_PartitionDlg.cxx:45 -msgid "GEOM_PARTITION_ORIENTATION" -msgstr "Change l'orientation" - -#: GeometryGUI_PartitionDlg.cxx:45 -msgid "SUPPRESS_RESULT" -msgstr "Suppress Result" - -msgid "GEOM_REMOVE_WEBS" -msgstr "Remove webs" - -msgid "GEOM_SET_MATERIALS" -msgstr "Set materials" - -#: OperationGUI_MaterialDlg.cxx:45 -msgid "GEOM_MATERIAL_TITLE" -msgstr "Define materials for Dominant Fuse" - -msgid "GEOM_MATERIAL_SHAPE" -msgstr "Shapes" - -msgid "GEOM_MATERIAL_MATERIAL" -msgstr "Material" - -msgid "GEOM_MATERIAL_ID" -msgstr "Material ID:" - -msgid "GEOM_MATERIAL_SET" -msgstr "<< Set" - -#: GeometryGUI_PipeDlg.cxx:47 -msgid "GEOM_PIPE_TITLE" -msgstr "Construction d'une Pipe" - -#: GeometryGUI_PointDlg.cxx:52 -msgid "GEOM_POINT_TITLE" -msgstr "Construction d'un Point" - -#: GeometryGUI_PlaneDlg.cxx:60 -msgid "GEOM_PLANE_TITLE" -msgstr "Construction d'un Plan" - -#: GeometryGUI_PlaneDlg.cxx:172 -msgid "GEOM_PLANE_PVC" -msgstr "Point + Vecteur Coordonnes" - -#: GeometryGUI_PlaneDlg.cxx:133 -msgid "GEOM_PLANE_PV" -msgstr "Point + Vecteur" - -#: GeometryGUI_PrismDlg.cxx:54 -msgid "GEOM_PRISM_TITLE" -msgstr "Extruder une Shape de base" - -#: GeometryGUI_PrismDlg.cxx:83 -msgid "GEOM_PRISM_BSV" -msgstr "Shape de base + Vecteur" - -#: GeometryGUI_PropertiesDlg.cxx:56 -msgid "GEOM_PROPERTIES_TITLE" -msgstr "Proprietes Basiques" - -#: GeometryGUI_PropertiesDlg.cxx:78 -msgid "GEOM_PROPERTIES_CONSTR" -msgstr "Objet et ses Proprietes" - -#: GeometryGUI_PropertiesDlg.cxx:114 -msgid "GEOM_PROPERTIES_SURFACE" -msgstr "Surface :" - -#: GeometryGUI_PropertiesDlg.cxx:120 -msgid "GEOM_PROPERTIES_VOLUME" -msgstr "Volume :" - -#: GeometryGUI_RevolDlg.cxx:49 -msgid "GEOM_REVOLUTION_TITLE" -msgstr "Construction Par Revolution" - -#: GeometryGUI_RotationDlg.cxx:51 -msgid "GEOM_ROTATION_TITLE" -msgstr "Rotation d'un Objet" - -#: GeometryGUI_ScaleDlg.cxx:52 -msgid "GEOM_SCALE_TITLE" -msgstr "Echelle d'un Objet" - -#: GeometryGUI_ScaleDlg.cxx:117 -msgid "GEOM_SCALE_FACTOR" -msgstr "Facteur d'echelle" - -#: GeometryGUI_SectionDlg.cxx:50 -msgid "GEOM_SECTION_TITLE" -msgstr "BOOLEEN : Section De Deux Objets" - -#: GeometryGUI_SewingDlg.cxx:48 -msgid "GEOM_SEWING_TITLE" -msgstr "Coudre des Topologies" - -#: GeometryGUI_ShellDlg.cxx:53 -msgid "GEOM_SHELL_TITLE" -msgstr "Construction d'une Shell" - -#: GeometryGUI_SolidDlg.cxx:74 -msgid "GEOM_SOLID_TITLE" -msgstr "Construction d'un Solid" - -#: GeometryGUI_SphereDlg.cxx:50 -msgid "GEOM_SPHERE_TITLE" -msgstr "Construction d'une Sphere" - -#: GeometryGUI_SphereDlg.cxx:113 -msgid "GEOM_SPHERE_CR" -msgstr "Centre + rayon" - -#: GeometryGUI_SphereDlg.cxx:146 -msgid "GEOM_SPHERE_RO" -msgstr "Rayon a l'origine" - -#: GeometryGUI_SubShapeDlg.cxx:55 -msgid "GEOM_SUBSHAPE_TITLE" -msgstr "Selection de Sous Shapes" - -#: GeometryGUI_SubShapeDlg.cxx:131 -msgid "GEOM_SUBSHAPE_TYPE" -msgstr "Type de Sous Shapes" - -#: GeometryGUI_SubShapeDlg.cxx:137 -msgid "GEOM_SUBSHAPE_SELECT" -msgstr "Selectionner de Sous Shapes" - -#: GeometryGUI_TorusDlg.cxx:51 -msgid "GEOM_TORUS_TITLE" -msgstr "Constructiond'un Tore" - -#: GeometryGUI_SuppressFacesDlg.cxx:103 -msgid "GEOM_SUPRESSFACE_TITLE" -msgstr "Supprimer des Faces dans un Objet" - -#: GeometryGUI_SuppressFacesDlg.cxx:164 -msgid "GEOM_SUPRESSFACE_SELECT" -msgstr "Selectionner les Faces a Supprimer" - -#: GeometryGUI_TranslationDlg.cxx:78 -msgid "GEOM_TRANSLATION_COOR" -msgstr "Translation Avec Coordonnees" - -msgid "GEOM_TRANSPARENCY_TITLE" -msgstr "Transparence" - -msgid "GEOM_TRANSPARENCY_OPAQUE" -msgstr "Opaque" - -msgid "GEOM_TRANSPARENCY_TRANSPARENT" -msgstr "Transparent" - -msgid "GEOM_SUPPRESSHOLE_TITLE" -msgstr "Suppression de trous" - -msgid "GEOM_SUPPRESSHOLE_SELECTFACE" -msgstr "Selection de la face initiale" - -msgid "GEOM_SUPPRESSHOLE_SELECTWIRE" -msgstr "Selection du contour/trou sur la face" - -msgid "GEOM_SUPPRESSHOLE_SELECTFACE_END" -msgstr "Selection de la face terminale (si trou traversant)" - -msgid "GEOM_SUPPRESSHOLE_SELECTWIRE_END" -msgstr "Selection de contour final (si trou traversant)" - -msgid "GEOM_SUPPRESSHOLE_FACE_SHELL" -msgstr "Face ou shell" - -msgid "GEOM_SUPPRESSHOLE_SELECT_HOLES_ON_FACE" -msgstr "Selection de trou(s) sur la face" - -#: GeometryGUI_TranslationDlg.cxx:56 -msgid "GEOM_TRANSLATION_TITLE" -msgstr "Translation d'un Objet" - -#: GeometryGUI_VectorDlg.cxx:54 -msgid "GEOM_VECTOR_TITLE" -msgstr "Construction d'un Vecteur" - -#: GeometryGUI_WhatisDlg.cxx:63 -msgid "GEOM_WHATIS_TITLE" -msgstr "Whatis" - -#: GeometryGUI_WhatisDlg.cxx:86 -msgid "GEOM_WHATIS_OBJECT" -msgstr "Objet et ses Informations Topologiques" - -#: GeometryGUI_WireDlg.cxx:46 -msgid "GEOM_WIRE_TITLE" -msgstr "Creer un Wire" - -#: GeometryGUI_WireDlg.cxx:103 -msgid "GEOM_WIRE_CONNECT" -msgstr "Creation d'un Wire a partir de wires/edges connectes" - -#: GeometryGUI_WorkingPlaneDlg.cxx:50 -msgid "GEOM_WPLANE_TITLE" -msgstr "plan de travail" - -#: GeometryGUI_WorkingPlaneDlg.cxx:107 -msgid "GEOM_WPLANE_FACE" -msgstr "Plan Ou Face plane" - -#: GeometryGUI_multiTranslationDlg.cxx:107 -msgid "GEOM_MULTITRANSLATION_TITLE" -msgstr "Multi-Translation" - -#: GeometryGUI_multiTranslationDlg.cxx:107 -msgid "GEOM_MULTITRANSLATION_SIMPLE" -msgstr "Multi Translation Simple" - -#: GeometryGUI_multiTranslationDlg.cxx:107 -msgid "GEOM_MULTITRANSLATION_DOUBLE" -msgstr "Multi Translation Double" - -#: GeometryGUI_multiRotationDlg.cxx:107 -msgid "GEOM_MULTIROTATION_TITLE" -msgstr "Multi-Rotation" - -#: GeometryGUI_multiRotationDlg.cxx:107 -msgid "GEOM_MULTIROTATION_SIMPLE" -msgstr "Multi Rotation Simple" - -#: GeometryGUI_multiRotationDlg.cxx:107 -msgid "GEOM_MULTIROTATION_DOUBLE" -msgstr "Multi Rotation Double" - -msgid "GEOM_PARAM_POINT" -msgstr "Point paramétrique" - -# -#============================================================================== -# - -#: GeometryGUI.cxx:4613 -msgid "GEOM_MEN_WIREFRAME" -msgstr "Filaire" - -#: GeometryGUI.cxx:4613 -msgid "GEOM_MEN_SHADING" -msgstr "Ombré" - -msgid "GEOM_RECONSTRUCTION_LIMIT" -msgstr "Limite de Reconstruction" - -msgid "GEOM_SUPPRESS_RESULT" -msgstr "Supprimer le Resultat" - -msgid "GEOM_SUPPRESS_RESULT_INSIDE" -msgstr "Intérieur" - -msgid "GEOM_SUPPRESS_RESULT_OUTSIDE" -msgstr "Extérieur" - -msgid "GEOM_RECONSTRUCTION_LIMIT_SHAPE" -msgstr "Shape" -msgid "GEOM_RECONSTRUCTION_LIMIT_SOLID" -msgstr "Solid" -msgid "GEOM_RECONSTRUCTION_LIMIT_SHELL" -msgstr "Shell" -msgid "GEOM_RECONSTRUCTION_LIMIT_FACE" -msgstr "Face" -msgid "GEOM_RECONSTRUCTION_LIMIT_WIRE" -msgstr "Wire" -msgid "GEOM_RECONSTRUCTION_LIMIT_EDGE" -msgstr "Edge" -msgid "GEOM_RECONSTRUCTION_LIMIT_VERTEX" -msgstr "Vertex" - -msgid "GEOM_SPLINE_TITLE" -msgstr "Construction de Splines" -msgid "GEOM_SPLINE" -msgstr "Spline" -msgid "GEOM_BEZIER" -msgstr "Bezier" -msgid "GEOM_INTERPOL" -msgstr "Interpolation" - -# -#============================================================================== -# - -msgid "GEOM_SKETCHER_EL" -msgstr "Type d'Element" - -msgid "GEOM_BUT_CLOSE_SKETCH" -msgstr "Fermer Sketch" - -msgid "GEOM_BUT_END_SKETCH" -msgstr "Terminer Sketch" - -msgid "GEOM_SKETCHER_TITLE" -msgstr "Construction de Sketch" - -msgid "GEOM_SKETCHER_POINT" -msgstr "Point" - -msgid "GEOM_SKETCHER_SEGMENT" -msgstr "Sègment" - -msgid "GEOM_SKETCHER_ARC" -msgstr "Arc" - -msgid "GEOM_SKETCHER_DIR" -msgstr "Direction" - -msgid "GEOM_SKETCHER_POINT2" -msgstr "Point :" - -msgid "GEOM_SKETCHER_DEST" -msgstr "Destination" - -msgid "GEOM_SKETCHER_ABS" -msgstr "Absolu" - -msgid "GEOM_SKETCHER_REL" -msgstr "Relative" - -msgid "GEOM_SKETCHER_SEL" -msgstr "Sélection" - -msgid "GEOM_SKETCHER_ANGLE" -msgstr "Angle" - -msgid "GEOM_SKETCHER_PER" -msgstr "Perpendiculaire" - -msgid "GEOM_SKETCHER_TAN" -msgstr "Tangent" - -msgid "GEOM_SKETCHER_VXVY" -msgstr "VX-VY" - -msgid "GEOM_SKETCHER_LENGTH" -msgstr "Longueur" - -msgid "GEOM_SKETCHER_X" -msgstr "X" - -msgid "GEOM_SKETCHER_Y" -msgstr "Y" - -msgid "GEOM_SKETCHER_X2" -msgstr "X :" - -msgid "GEOM_SKETCHER_Y2" -msgstr "Y :" - -msgid "GEOM_SKETCHER_X3" -msgstr "Abs. X :" - -msgid "GEOM_SKETCHER_Y3" -msgstr "Abs. Y :" - -msgid "GEOM_SKETCHER_DX2" -msgstr "DX :" - -msgid "GEOM_SKETCHER_DY2" -msgstr "DY :" - -msgid "GEOM_SKETCHER_VX2" -msgstr "VX :" - -msgid "GEOM_SKETCHER_VY2" -msgstr "VY :" - -msgid "GEOM_SKETCHER_LENGTH2" -msgstr "Longueur :" - -msgid "GEOM_SKETCHER_ANGLE2" -msgstr "Angle :" - -msgid "GEOM_SKETCHER_RADIUS2" -msgstr "Radius :" - -msgid "GEOM_SKETCHER_UNDO" -msgstr "Undo" - -msgid "GEOM_SKETCHER_APPLY" -msgstr "Appliquer" - -msgid "GEOM_SKETCHER_VALUES" -msgstr "Valeurs" - -msgid "GEOM_SKETCHER_TYPE" -msgstr "Type" - -msgid "GEOM_FILLET_ABORT" -msgstr "Le congé ne peut-être realisé avec un rayon de %1 " - -msgid "GEOM_CHAMFER_ABORT" -msgstr "Le chanfrein ne peut-être realisé avec %1 et %2 " - -#MZN: to be translated -msgid "GEOM_CREATE_COPY" -msgstr "Create a copy" - -#MZN: to be translated -msgid "GEOM_CREATE_SINGLE_SOLID" -msgstr "Create a single solid" - -msgid "GEOM_FREE_FACES" -msgstr "Free faces" - -msgid "GEOM_FREE_FACES_TITLE" -msgstr "Free faces" - -msgid "GEOM_PROPAGATE_TITLE" -msgstr "Propagate" - -msgid "GEOM_PROPAGATE" -msgstr "Propagate" diff --git a/src/GEOMGUI/GeometryGUI.cxx b/src/GEOMGUI/GeometryGUI.cxx deleted file mode 100644 index 4f72ceb79..000000000 --- a/src/GEOMGUI/GeometryGUI.cxx +++ /dev/null @@ -1,1615 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GeometryGUI.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "GeometryGUI.h" -#include "GEOMGUI_OCCSelector.h" -#include "GEOMGUI_Selection.h" - -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -// External includes -#include -#include - -#include -#include -#include - -#include - -#include -#include - - -extern "C" { - Standard_EXPORT CAM_Module* createModule() { - return new GeometryGUI(); - } -} - - - -GEOM::GEOM_Gen_var GeometryGUI::myComponentGeom = GEOM::GEOM_Gen::_nil(); - -GEOM::GEOM_Gen_var GeometryGUI::GetGeomGen() { return GeometryGUI::myComponentGeom; } - -bool GeometryGUI::InitGeomGen() -{ - GeometryGUI aGG; - if( CORBA::is_nil( myComponentGeom ) ) return false; - return true; -} - -//======================================================================= -// function : ClientSObjectToObject -// purpose : -//======================================================================= -CORBA::Object_var GeometryGUI::ClientSObjectToObject (_PTR(SObject) theSObject) -{ - _PTR(GenericAttribute) anAttr; - CORBA::Object_var anObj; - try { - std::string aValue = theSObject->GetIOR(); - if (strcmp(aValue.c_str(), "") != 0) { - CORBA::ORB_ptr anORB = SalomeApp_Application::orb(); - anObj = anORB->string_to_object(aValue.c_str()); - } - } catch(...) { - INFOS("ClientSObjectToObject - Unknown exception was occured!!!"); - } - return anObj._retn(); -} - -//======================================================================= -// function : ClientStudyToStudy -// purpose : -//======================================================================= -SALOMEDS::Study_var GeometryGUI::ClientStudyToStudy (_PTR(Study) theStudy) -{ - SALOME_NamingService *aNamingService = SalomeApp_Application::namingService(); - CORBA::Object_var aSMObject = aNamingService->Resolve("/myStudyManager"); - SALOMEDS::StudyManager_var aStudyManager = SALOMEDS::StudyManager::_narrow(aSMObject); - int aStudyID = theStudy->StudyId(); - SALOMEDS::Study_var aDSStudy = aStudyManager->GetStudyByID(aStudyID); - return aDSStudy._retn(); -} - -//================================================================================= -// class : CustomItem -// purpose : Set Font to a text. -//================================================================================= -class CustomItem : public QCustomMenuItem -{ -public: - CustomItem(const QString& s, const QFont& f) : myString(s), myFont(f) {} - ~CustomItem() {} - - void paint(QPainter* p, const QColorGroup& cg, bool act, bool /*enabled*/, int x, int y, int w, int h) - { - p->save(); - p->fillRect( x, y, w, h, act ? cg.highlight() : cg.mid() ); - p->setPen( act ? cg.highlightedText() : cg.buttonText() ); - p->setFont( myFont ); - p->drawText( x, y, w, h, AlignHCenter | AlignVCenter | ShowPrefix | DontClip | SingleLine, myString ); - p->restore(); - } - - QSize sizeHint() - { - return QFontMetrics( myFont ).size( AlignHCenter | AlignVCenter | ShowPrefix | DontClip | SingleLine, myString ); - } - - bool fullSpan() const - { - return true; - } - -private: - QString myString; - QFont myFont; -}; - -//======================================================================= -// function : GeometryGUI::GeometryGUI() -// purpose : Constructor -//======================================================================= -GeometryGUI::GeometryGUI() : - SalomeApp_Module( "GEOM" ) -{ - if ( CORBA::is_nil( myComponentGeom ) ) - { - SALOME_LifeCycleCORBA* ls = new SALOME_LifeCycleCORBA( getApp()->namingService() ); - Engines::Component_var comp = ls->FindOrLoad_Component( "FactoryServer", "GEOM" ); - myComponentGeom = GEOM::GEOM_Gen::_narrow( comp ); - } - - myState = -1; - myActiveDialogBox = 0; - myFatherior = ""; - - gp_Pnt origin = gp_Pnt(0., 0., 0.); - gp_Dir direction = gp_Dir(0., 0., 1.); - myWorkingPlane = gp_Ax3(origin, direction); - - myOCCSelectors.setAutoDelete( true ); - myVTKSelectors.setAutoDelete( true ); -} - -//======================================================================= -// function : GeometryGUI::~GeometryGUI() -// purpose : Destructor -//======================================================================= -GeometryGUI::~GeometryGUI() -{ -} - -//======================================================================= -// function : GeometryGUI::getLibrary() -// purpose : get or load GUI library by name [ internal ] -//======================================================================= -typedef GEOMGUI* (*LibraryGUI)( GeometryGUI* ); -GEOMGUI* GeometryGUI::getLibrary( const QString& libraryName ) -{ - if ( !myGUIMap.contains( libraryName ) ) { - // try to load library if it is not loaded yet - QCString libs; -#ifndef WNT - if( ( libs = getenv( "LD_LIBRARY_PATH" ) ) ) { - QStringList dirList = QStringList::split( ":", libs, false ); // skip empty entries -#else - if( ( libs = getenv( "PATH" ) ) ) { - QStringList dirList = QStringList::split( ";", libs, false ); // skip empty entries -#endif - for( int i = dirList.count()-1; i >= 0; i-- ) { - QString dir = dirList[ i ]; - QFileInfo fi( Qtx::addSlash( dirList[ i ] ) + libraryName ); - if( fi.exists() ) { - OSD_SharedLibrary aSharedLibrary( (char*)fi.fileName().latin1() ); - bool res = aSharedLibrary.DlOpen( OSD_RTLD_LAZY ); - if( !res ) { - MESSAGE( "Can't open library : " << aSharedLibrary.DlError() ); - continue; // continue search further - } - OSD_Function osdF = aSharedLibrary.DlSymb( "GetLibGUI" ); - if ( osdF != NULL ) { - LibraryGUI func = (GEOMGUI* (*) (GeometryGUI*))osdF; - GEOMGUI* libGUI = (*func)(this); - if ( libGUI ) { - myGUIMap[ libraryName ] = libGUI; - break; // found and loaded! - } - } - } - } - } - } - if ( myGUIMap.contains( libraryName ) ) - // library is successfully loaded - return myGUIMap[ libraryName ]; - return 0; -} - -//======================================================================= -// function : GeometryGUI::ActiveWorkingPlane() -// purpose : Activate Working Plane View -//======================================================================= -void GeometryGUI::ActiveWorkingPlane() -{ - gp_Dir DZ = myWorkingPlane.Direction(); - gp_Dir DY = myWorkingPlane.YDirection(); - - SUIT_ViewWindow* window = application()->desktop()->activeWindow(); - bool ViewOCC = ( window && window->getViewManager()->getType() == OCCViewer_Viewer::Type() ); - bool ViewVTK = ( window && window->getViewManager()->getType() == VTKViewer_Viewer::Type() ); - - if( ViewOCC ) { - OCCViewer_ViewWindow* vw = dynamic_cast( window ); - if ( vw ) { - Handle(V3d_View) view3d = vw->getViewPort()->getView(); - - view3d->SetProj(DZ.X(), DZ.Y(), DZ.Z()); - view3d->SetUp(DY.X(), DY.Y(), DY.Z()); - - vw->onViewFitAll(); - } - } - else if( ViewVTK ) { - VTKViewer_ViewWindow* vw = dynamic_cast( window ); - if ( vw ) { - vtkCamera* camera = vw->getRenderer()->GetActiveCamera(); - - camera->SetPosition(DZ.X(), DZ.Y(), DZ.Z()); - camera->SetViewUp(DY.X(), DY.Y(), DY.Z()); - camera->SetFocalPoint(0,0,0); - - vw->onFitAll(); - } - } -} - -//======================================================================= -// function : GeometryGUI::SetActiveDialogBox() -// purpose : Set active dialog box -//======================================================================= -void GeometryGUI::SetActiveDialogBox( QDialog* aDlg ) -{ - myActiveDialogBox = (QDialog*)aDlg; -} - -//======================================================================= -// function : GeometryGUI::EmitSignalDeactivateDialog() -// purpose : Emit a signal to deactivate the active dialog Box -//======================================================================= -void GeometryGUI::EmitSignalDeactivateDialog() -{ - emit SignalDeactivateActiveDialog(); -} - -//======================================================================= -// function : GeometryGUI::EmitSignalCloseAllDialogs() -// purpose : Emit a signal to close all non modal dialogs box -//======================================================================= -void GeometryGUI::EmitSignalCloseAllDialogs() -{ - emit SignalCloseAllDialogs(); -} - -//======================================================================= -// function : GeometryGUI::EmitSignalDefaultStepValueChanged() -// purpose : Emit a signal to inform that default real spin box step has -// been changed -//======================================================================= -void GeometryGUI::EmitSignalDefaultStepValueChanged(double newVal) -{ - emit SignalDefaultStepValueChanged(newVal); -} - -//======================================================================= -// function : GeometryGUI::OnGUIEvent() -// purpose : common slot for all menu/toolbar actions -//======================================================================= -void GeometryGUI::OnGUIEvent() -{ - const QObject* obj = sender(); - if ( !obj || !obj->inherits( "QAction" ) ) - return; - int id = actionId((QAction*)obj); - if ( id != -1 ) - OnGUIEvent( id ); -} - -//======================================================================= -// function : GeometryGUI::OnGUIEvent() -// purpose : manage all events on GUI [static] -//======================================================================= -void GeometryGUI::OnGUIEvent( int id ) -{ - SUIT_Desktop* desk = application()->desktop(); - - // check type of the active viewframe - SUIT_ViewWindow* window = desk->activeWindow(); - bool ViewOCC = ( window && window->getViewManager()->getType() == OCCViewer_Viewer::Type() ); - bool ViewVTK = ( window && window->getViewManager()->getType() == VTKViewer_Viewer::Type() ); - // if current viewframe is not of OCC and not of VTK type - return immediately - // fix for IPAL8958 - allow some commands to execute even when NO viewer is active (rename for example) - bool NotViewerDependentCommand = ( id == 901 || id == 216 || id == 213 ); - if ( !ViewOCC && !ViewVTK && !NotViewerDependentCommand ) - return; - - // fix for IPAL9103, point 2 - if ( CORBA::is_nil( GetGeomGen() ) ) { - SUIT_MessageBox::error1( desk, tr( "GEOM_ERROR" ), tr( "GEOM_ERR_GET_ENGINE" ), tr( "GEOM_BUT_OK" ) ); - return; - } - - GEOMGUI* library = 0; - // try to get-or-load corresponding GUI library - if( id == 111 || // MENU FILE - IMPORT BREP - id == 112 || // MENU FILE - IMPORT IGES - id == 113 || // MENU FILE - IMPORT STEP - id == 121 || // MENU FILE - EXPORT BREP - id == 122 || // MENU FILE - EXPORT IGES - id == 123 || // MENU FILE - EXPORT STEP - id == 31 || // MENU EDIT - COPY - id == 33 || // MENU EDIT - DELETE - id == 411 || // MENU SETTINGS - ADD IN STUDY - id == 412 || // MENU SETTINGS - SHADING COLOR - id == 413 || // MENU SETTINGS - ISOS - id == 414 || // MENU SETTINGS - STEP VALUE FOR SPIN BOXES - id == 5103 || // MENU TOOLS - CHECK GEOMETRY - id == 8032 || // POPUP VIEWER - COLOR - id == 8033 || // POPUP VIEWER - TRANSPARENCY - id == 8034 || // POPUP VIEWER - ISOS - id == 804 || // POPUP VIEWER - ADD IN STUDY - id == 901 || // OBJECT BROWSER - RENAME - id == 9024 ) { // OBJECT BROWSER - OPEN - //cout << "id " << id << " received" << endl; -#ifndef WNT - library = getLibrary( "libGEOMToolsGUI.so" ); -#else - library = getLibrary( "GEOMToolsGUI.dll" ); -#endif - } - else if( id == 211 || // MENU VIEW - WIREFRAME/SHADING - id == 212 || // MENU VIEW - DISPLAY ALL - id == 213 || // MENU VIEW - DISPLAY ONLY - id == 214 || // MENU VIEW - ERASE ALL - id == 215 || // MENU VIEW - ERASE - id == 216 || // MENU VIEW - DISPLAY - id == 80311 || // POPUP VIEWER - WIREFRAME - id == 80312 ) { // POPUP VIEWER - SHADING -#ifndef WNT - library = getLibrary( "libDisplayGUI.so" ); -#else - library = getLibrary( "DisplayGUI.dll" ); -#endif - } - else if( id == 4011 || // MENU BASIC - POINT - id == 4012 || // MENU BASIC - LINE - id == 4013 || // MENU BASIC - CIRCLE - id == 4014 || // MENU BASIC - ELLIPSE - id == 4015 || // MENU BASIC - ARC - id == 4016 || // MENU BASIC - VECTOR - id == 4017 || // MENU BASIC - PLANE - id == 4018 || // MENU BASIC - WPLANE - id == 4019 || // MENU BASIC - CURVE - id == 4020 ) { // MENU BASIC - REPAIR -#ifndef WNT - library = getLibrary( "libBasicGUI.so" ); -#else - library = getLibrary( "BasicGUI.dll" ); -#endif - } - else if( id == 4021 || // MENU PRIMITIVE - BOX - id == 4022 || // MENU PRIMITIVE - CYLINDER - id == 4023 || // MENU PRIMITIVE - SPHERE - id == 4024 || // MENU PRIMITIVE - TORUS - id == 4025 ) { // MENU PRIMITIVE - CONE -#ifndef WNT - library = getLibrary( "libPrimitiveGUI.so" ); -#else - library = getLibrary( "PrimitiveGUI.dll" ); -#endif - } - else if( id == 4031 || // MENU GENERATION - PRISM - id == 4032 || // MENU GENERATION - REVOLUTION - id == 4033 || // MENU GENERATION - FILLING - id == 4034 ) { // MENU GENERATION - PIPE -#ifndef WNT - library = getLibrary( "libGenerationGUI.so" ); -#else - library = getLibrary( "GenerationGUI.dll" ); -#endif - } - else if( id == 404 || // MENU ENTITY - SKETCHER - id == 407 ) { // MENU ENTITY - EXPLODE -#ifndef WNT - library = getLibrary( "libEntityGUI.so" ); -#else - library = getLibrary( "EntityGUI.dll" ); -#endif - } - else if( id == 4081 || // MENU BUILD - EDGE - id == 4082 || // MENU BUILD - WIRE - id == 4083 || // MENU BUILD - FACE - id == 4084 || // MENU BUILD - SHELL - id == 4085 || // MENU BUILD - SOLID - id == 4086 ) { // MENU BUILD - COMPUND -#ifndef WNT - library = getLibrary( "libBuildGUI.so" ); -#else - library = getLibrary( "BuildGUI.dll" ); -#endif - } - else if( id == 5011 || // MENU BOOLEAN - FUSE - id == 5012 || // MENU BOOLEAN - COMMON - id == 5013 || // MENU BOOLEAN - CUT - id == 5014 ) { // MENU BOOLEAN - SECTION -#ifndef WNT - library = getLibrary( "libBooleanGUI.so" ); -#else - library = getLibrary( "BooleanGUI.dll" ); -#endif - } - else if( id == 5021 || // MENU TRANSFORMATION - TRANSLATION - id == 5022 || // MENU TRANSFORMATION - ROTATION - id == 5023 || // MENU TRANSFORMATION - LOCATION - id == 5024 || // MENU TRANSFORMATION - MIRROR - id == 5025 || // MENU TRANSFORMATION - SCALE - id == 5026 || // MENU TRANSFORMATION - OFFSET - id == 5027 || // MENU TRANSFORMATION - MULTI-TRANSLATION - id == 5028 ) { // MENU TRANSFORMATION - MULTI-ROTATION -#ifndef WNT - library = getLibrary( "libTransformationGUI.so" ); -#else - library = getLibrary( "TransformationGUI.dll" ); -#endif - } - else if( id == 503 || // MENU OPERATION - PARTITION - id == 504 || // MENU OPERATION - ARCHIMEDE - id == 505 || // MENU OPERATION - FILLET - id == 506 || // MENU OPERATION - CHAMFER - id == 507 ) { // MENU OPERATION - CLIPPING RANGE -#ifndef WNT - library = getLibrary( "libOperationGUI.so" ); -#else - library = getLibrary( "OperationGUI.dll" ); -#endif - } - else if( id == 601 || // MENU REPAIR - SEWING - id == 603 || // MENU REPAIR - SUPPRESS FACES - id == 604 || // MENU REPAIR - SUPPRESS HOLE - id == 605 || // MENU REPAIR - SHAPE PROCESSING - id == 606 || // MENU REPAIR - CLOSE CONTOUR - id == 607 || // MENU REPAIR - REMOVE INTERNAL WIRES - id == 608 || // MENU REPAIR - ADD POINT ON EDGE - id == 609 || // MENU REPAIR - FREE BOUNDARIES - id == 610 || // MENU REPAIR - FREE FACES - id == 602 ) { // MENU REPAIR - GLUE FACES -#ifndef WNT - library = getLibrary( "libRepairGUI.so" ); -#else - library = getLibrary( "RepairGUI.dll" ); -#endif - } - else if( id == 701 || // MENU MEASURE - PROPERTIES - id == 702 || // MENU MEASURE - CDG - id == 703 || // MENU MEASURE - INERTIA - id == 7041 || // MENU MEASURE - BOUNDING BOX - id == 7042 || // MENU MEASURE - MIN DISTANCE - id == 705 || // MENU MEASURE - TOLERANCE - id == 706 || // MENU MEASURE - WHATIS - id == 707 || // MENU MEASURE - CHECK - id == 7072 || // MENU MEASURE - CHECK COMPOUND OF BLOCKS - id == 708 ) { // MENU MEASURE - POINT COORDINATES -#ifndef WNT - library = getLibrary( "libMeasureGUI.so" ); -#else - library = getLibrary( "MeasureGUI.dll" ); -#endif - } - else if( id == 800 || // MENU GROUP - CREATE - id == 8001 || // POPUP MENU - CREATE GROUP - id == 801 ) { // MENU GROUP - EDIT -#ifndef WNT - library = getLibrary( "libGroupGUI.so" ); -#else - library = getLibrary( "GroupGUI.dll" ); -#endif - } - else if( id == 9999 || // MENU BLOCKS - HEXAHEDRAL SOLID - id == 9998 || // MENU BLOCKS - MULTI-TRANSFORMATION - id == 9997 || // MENU BLOCKS - QUADRANGLE FACE - id == 99991 || // MENU BLOCKS - PROPAGATE - id == 9995 ) { // MENU BLOCKS - EXPLODE ON BLOCKS -#ifndef WNT - library = getLibrary( "libBlocksGUI.so" ); -#else - library = getLibrary( "BlocksGUI.dll" ); -#endif - } - - // call method of corresponding GUI library - if ( library ) - library->OnGUIEvent( id, desk ); - else - SUIT_MessageBox::error1( desk, tr( "GEOM_ERROR" ), tr( "GEOM_ERR_LIB_NOT_FOUND" ), tr( "GEOM_BUT_OK" ) ); -} - - -//================================================================================= -// function : GeometryGUI::OnKeyPress() -// purpose : Called when any key is pressed by user [static] -//================================================================================= -bool GeometryGUI::OnKeyPress( QKeyEvent* pe, SUIT_ViewWindow* win ) -{ - GUIMap::Iterator it; - bool bOk = true; - for ( it = myGUIMap.begin(); it != myGUIMap.end(); ++it ) - bOk = bOk && it.data()->OnKeyPress( pe, application()->desktop(), win ); - return bOk; -} - - -//================================================================================= -// function : GeometryGUI::OnMouseMove() -// purpose : Manages mouse move events [static] -//================================================================================= -bool GeometryGUI::OnMouseMove( QMouseEvent* pe, SUIT_ViewWindow* win ) -{ - GUIMap::Iterator it; - bool bOk = true; - for ( it = myGUIMap.begin(); it != myGUIMap.end(); ++it ) - bOk = bOk && it.data()->OnMouseMove( pe, application()->desktop(), win ); - return bOk; -} - - -//================================================================================= -// function : GeometryGUI::0nMousePress() -// purpose : Manage mouse press events [static] -//================================================================================= -bool GeometryGUI::OnMousePress( QMouseEvent* pe, SUIT_ViewWindow* win ) -{ - GUIMap::Iterator it; - // OnMousePress() should return false if this event should be processed further - // (see OCCViewer_Viewer3d::onMousePress() for explanation) - bool processed = false; - for ( it = myGUIMap.begin(); it != myGUIMap.end(); ++it ) - processed = processed || it.data()->OnMousePress( pe, application()->desktop(), win ); - return processed; -} - -/* -static void UpdateVtkSelection() -{ - QPtrList winList = application()->desktop()->windows(); - SUIT_ViewWindow* win = 0; - for ( win = winList.first(); win; win = winList.next() ) { - if ( win->getViewManager()->getTypeView() == VIEW_VTK ) { - VTKViewer_ViewWindow* vw = dynamic_cast( window ); - if ( vw ) { - VTKViewer_RenderWindowInteractor* anInteractor = vw->getRWInteractor(); - anInteractor->SetSelectionProp(); - anInteractor->SetSelectionTolerance(); - SVTK_InteractorStyleSALOME* aStyle = anInteractor->GetInteractorStyleSALOME(); - if (aStyle) { - aStyle->setPreselectionProp(); - } - } - } - } -} - -//================================================================================= -// function : GeometryGUI::SetSettings() -// purpose : Called when GEOM module is activated [static] -//================================================================================= -bool GeometryGUI::SetSettings() -{ - QMenuBar* Mb = parent->getMainMenuBar(); - SUIT_Study* ActiveStudy = application()->activeStudy(); - -// Wireframe or Shading - int DisplayMode = 0; - SUIT_ViewWindow* window = application()->desktop()->activeWindow(); - bool ViewOCC = ( window && window->getViewManager()->getType() == VIEW_OCC ); - bool ViewVTK = ( window && window->getViewManager()->getType() == VIEW_VTK ); - if ( ViewOCC ) { - OCCViewer_ViewManager* vm = dynamic_cast( window->getViewManager() ); - if ( vm ) { - Handle(AIS_InteractiveContext) ic = vm->getOCCViewer()->getAISContext(); - DisplayMode = ic->DisplayMode(); - } - } - else if ( ViewVTK ) { - VTKViewer_ViewWindow* vw = dynamic_cast( window ); - if ( vw ) { - VTKViewer_RenderWindowInteractor* myRenderInter = vw->getRWInteractor(); - DisplayMode = myRenderInter->GetDisplayMode(); - } - } - - if( DisplayMode == 1 ) - getApp()-> - Mb->changeItem( 211, tr( "GEOM_MEN_WIREFRAME" ) ); - else - Mb->changeItem( 211, tr( "GEOM_MEN_SHADING" ) ); - - - // Add in Study - !!!ALWAYS TRUE!!! /////// VSR : TO BE REMOVED - QString AddInStudy = QAD_CONFIG->getSetting("Geometry:SettingsAddInStudy"); - int Settings_AddInStudy; - // if(!AddInStudy.isEmpty()) - // Settings_AddInStudy = AddInStudy.toInt(); - // else - - Settings_AddInStudy = 1; - Mb->setItemChecked(411, Settings_AddInStudy); - - // step value - QString S = QAD_CONFIG->getSetting("Geometry:SettingsGeomStep"); - if(S.isEmpty()) - QAD_CONFIG->addSetting("Geometry:SettingsGeomStep", "100"); - - // isos - int count = ActiveStudy->getStudyFramesCount(); - for(int i = 0; i < count; i++) { - if(ActiveStudy->getStudyFrame(i)->getTypeView() == VIEW_OCC) { - OCCViewer_Viewer3d* v3d = ((OCCViewer_ViewFrame*)ActiveStudy->getStudyFrame(i)->getRightFrame()->getViewFrame())->getViewer(); - Handle (AIS_InteractiveContext) ic = v3d->getAISContext(); - - QString IsoU = QAD_CONFIG->getSetting("Geometry:SettingsIsoU"); - QString IsoV = QAD_CONFIG->getSetting("Geometry:SettingsIsoV"); - if(!IsoU.isEmpty()) - ic->DefaultDrawer()->UIsoAspect()->SetNumber(IsoU.toInt()); - if(!IsoV.isEmpty()) - ic->DefaultDrawer()->VIsoAspect()->SetNumber(IsoV.toInt()); - } - } - - setActionsEnabled(); - - // PAL5356: update VTK selection - ::UpdateVtkSelection(); - bool bOk = true; - GUIMap::Iterator it; - for ( it = myGUIMap.begin(); it != myGUIMap.end(); ++it ) - bOk = bOk && it.data()->SetSettings( parent ); - - // MZN: Enable/disable "Clipping range" menu item(from GEOM_CLIPPING variable) - if (getenv( "GEOM_CLIPPING" ) == NULL) - { - QMenuItem* mi = Mb->findItem(50); - if (mi && mi->popup()) - mi->popup()->removeItem(507); - } - - return bOk; -} -*/ - -//======================================================================= -// function : createGeomAction -// purpose : -//======================================================================= -void GeometryGUI::createGeomAction( const int id, const QString& po_id, const QString& icon_id, const int key, const bool toggle ) -{ - QIconSet icon; - QWidget* parent = application()->desktop(); - SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); - QPixmap pix; - if ( icon_id.length() ) - pix = resMgr->loadPixmap( "GEOM", tr( icon_id ) ); - else - pix = resMgr->loadPixmap( "GEOM", tr( QString( "ICO_" )+po_id ), false ); - if ( !pix.isNull() ) - icon = QIconSet( pix ); - - QString tooltip = tr( QString( "TOP_" )+po_id ), - menu = tr( QString( "MEN_" )+po_id ), - status_bar = tr( QString( "STB_" )+po_id ); - - createAction( id, tooltip, icon, menu, status_bar, key, parent, toggle, this, SLOT( OnGUIEvent() ) ); -} - - - -//======================================================================= -// function : GeometryGUI::Deactivate() -// purpose : Called when GEOM module is deactivated [ static ] -//======================================================================= -void GeometryGUI::initialize( CAM_Application* app ) -{ - SalomeApp_Module::initialize( app ); - - // ----- create actions -------------- - - createGeomAction( 111, "IMPORT", "", (CTRL + Key_I) ); - createGeomAction( 121, "EXPORT", "", (CTRL + Key_E) ); - - createGeomAction( 33, "DELETE" ); - - createGeomAction( 4011, "POINT" ); - createGeomAction( 4012, "LINE" ); - createGeomAction( 4013, "CIRCLE" ); - createGeomAction( 4014, "ELLIPSE" ); - createGeomAction( 4015, "ARC" ); - createGeomAction( 4019, "CURVE" ); - createGeomAction( 4016, "VECTOR" ); - createGeomAction( 4017, "PLANE" ); - createGeomAction( 4018, "WORK_PLANE" ); - createGeomAction( 4020, "LOCAL_CS" ); - - createGeomAction( 4021, "BOX" ); - createGeomAction( 4022, "CYLINDER" ); - createGeomAction( 4023, "SPHERE" ); - createGeomAction( 4024, "TORUS" ); - createGeomAction( 4025, "CONE" ); - - createGeomAction( 4031, "EXTRUSION" ); - createGeomAction( 4032, "REVOLUTION" ); - createGeomAction( 4033, "FILLING" ); - createGeomAction( 4034, "PIPE" ); - - createGeomAction( 800, "GROUP_CREATE" ); - createGeomAction( 801, "GROUP_EDIT" ); - - createGeomAction( 9997, "Q_FACE" ); - createGeomAction( 9999, "HEX_SOLID" ); - - createGeomAction( 404, "SKETCH" ); - createGeomAction( 407, "EXPLODE" ); - - createGeomAction( 4081, "EDGE" ); - createGeomAction( 4082, "WIRE" ); - createGeomAction( 4083, "FACE" ); - createGeomAction( 4084, "SHELL" ); - createGeomAction( 4085, "SOLID" ); - createGeomAction( 4086, "COMPOUND" ); - - createGeomAction( 5011, "FUSE" ); - createGeomAction( 5012, "COMMON" ); - createGeomAction( 5013, "CUT" ); - createGeomAction( 5014, "SECTION" ); - - createGeomAction( 5021, "TRANSLATION" ); - createGeomAction( 5022, "ROTATION" ); - createGeomAction( 5023, "MODIFY_LOCATION" ); - createGeomAction( 5024, "MIRROR" ); - createGeomAction( 5025, "SCALE" ); - createGeomAction( 5026, "OFFSET" ); - createGeomAction( 5027, "MUL_TRANSLATION" ); - createGeomAction( 5028, "MUL_ROTATION" ); - - createGeomAction( 503, "PARTITION" ); - createGeomAction( 504, "ARCHIMEDE" ); - createGeomAction( 505, "FILLET" ); - createGeomAction( 506, "CHAMFER" ); - //createGeomAction( 507, "CLIPPING" ); - - createGeomAction( 9998, "MUL_TRANSFORM" ); - createGeomAction( 9995, "EXPLODE_BLOCKS" ); - createGeomAction( 99991, "PROPAGATE" ); - - createGeomAction( 601, "SEWING" ); - createGeomAction( 602, "GLUE_FACES" ); - createGeomAction( 603, "SUPPRESS_FACES" ); - createGeomAction( 604, "SUPPERSS_HOLES" ); - createGeomAction( 605, "SHAPE_PROCESS" ); - createGeomAction( 606, "CLOSE_CONTOUR" ); - createGeomAction( 607, "SUPPRESS_INT_WIRES" ); - createGeomAction( 608, "POINT_ON_EDGE" ); - createGeomAction( 609, "CHECK_FREE_BNDS" ); - createGeomAction( 610, "CHECK_FREE_FACES" ); - - createGeomAction( 708, "POINT_COORDS" ); - createGeomAction( 701, "BASIC_PROPS" ); - createGeomAction( 702, "MASS_CENTER" ); - createGeomAction( 703, "INERTIA" ); - createGeomAction( 7041, "BND_BOX" ); - createGeomAction( 7042, "MIN_DIST" ); - - createGeomAction( 705, "TOLERANCE" ); - createGeomAction( 706, "WHAT_IS" ); - createGeomAction( 707, "CHECK" ); - createGeomAction( 7072, "CHECK_COMPOUND" ); - - createGeomAction( 5103, "CHECK_GEOMETRY" ); - - createGeomAction( 412, "SHADING_COLOR" ); - createGeomAction( 413, "ISOS" ); - createGeomAction( 414, "STEP_VALUE" ); - - createGeomAction( 211, "SHADING" ); - createGeomAction( 212, "DISPLAY_ALL" ); - createGeomAction( 214, "ERASE_ALL" ); - createGeomAction( 216, "DISPLAY" ); - createGeomAction( 213, "DISPLAY_ONLY" ); - createGeomAction( 215, "ERASE" ); - - createGeomAction( 901, "POP_RENAME" ); - createGeomAction( 80311, "POP_WIREFRAME", "", 0, true ); - createGeomAction( 80312, "POP_SHADING", "", 0, true ); - createGeomAction( 8032, "POP_COLOR" ); - createGeomAction( 8033, "POP_TRANSPARENCY" ); - createGeomAction( 8034, "POP_ISOS" ); - createGeomAction( 8001, "POP_CREATE_GROUP" ); - - // make wireframe-shading items to be exclusive (only one at a time is selected) - //QActionGroup* dispModeGr = new QActionGroup( this, "", true ); - //dispModeGr->add( action( 80311 ) ); - //dispModeGr->add( action( 80312 ) ); - // ---- create menu -------------------------- - - int fileId = createMenu( tr( "MEN_FILE" ), -1, -1 ); - createMenu( separator(), fileId, 10 ); - createMenu( 111, fileId, 10 ); - createMenu( 121, fileId, 10 ); - createMenu( separator(), fileId, -1 ); - - int editId = createMenu( tr( "MEN_EDIT" ), -1, -1 ); - createMenu( 33, editId, -1 ); - - int newEntId = createMenu( tr( "MEN_NEW_ENTITY" ), -1, -1, 10 ); - - int basicId = createMenu( tr( "MEN_BASIC" ), newEntId, -1 ); - createMenu( 4011, basicId, -1 ); - createMenu( 4012, basicId, -1 ); - createMenu( 4013, basicId, -1 ); - createMenu( 4014, basicId, -1 ); - createMenu( 4015, basicId, -1 ); - createMenu( 4019, basicId, -1 ); - createMenu( separator(), basicId, -1 ); - createMenu( 4016, basicId, -1 ); - createMenu( 4017, basicId, -1 ); - createMenu( 4018, basicId, -1 ); - createMenu( 4020, basicId, -1 ); - - int primId = createMenu( tr( "MEN_PRIMITIVES" ), newEntId, -1 ); - createMenu( 4021, primId, -1 ); - createMenu( 4022, primId, -1 ); - createMenu( 4023, primId, -1 ); - createMenu( 4024, primId, -1 ); - createMenu( 4025, primId, -1 ); - - int genId = createMenu( tr( "MEN_GENERATION" ), newEntId, -1 ); - createMenu( 4031, genId, -1 ); - createMenu( 4032, genId, -1 ); - createMenu( 4033, genId, -1 ); - createMenu( 4034, genId, -1 ); - createMenu( separator(), newEntId, -1 ); - - int groupId = createMenu( tr( "MEN_GROUP" ), newEntId, -1 ); - createMenu( 800, groupId, -1 ); - createMenu( 801, groupId, -1 ); - createMenu( separator(), newEntId, -1 ); - - int blocksId = createMenu( tr( "MEN_BLOCKS" ), newEntId, -1 ); - createMenu( 9997, blocksId, -1 ); - createMenu( 9999, blocksId, -1 ); - - createMenu( separator(), newEntId, -1 ); - createMenu( 404, newEntId, -1 ); - createMenu( separator(), newEntId, -1 ); - createMenu( 407, newEntId, -1 ); - - int buildId = createMenu( tr( "MEN_BUILD" ), newEntId, -1 ); - createMenu( 4081, buildId, -1 ); - createMenu( 4082, buildId, -1 ); - createMenu( 4083, buildId, -1 ); - createMenu( 4084, buildId, -1 ); - createMenu( 4085, buildId, -1 ); - createMenu( 4086, buildId, -1 ); - - int operId = createMenu( tr( "MEN_OPERATIONS" ), -1, -1, 10 ); - - int boolId = createMenu( tr( "MEN_BOOLEAN" ), operId, -1 ); - createMenu( 5011, boolId, -1 ); - createMenu( 5012, boolId, -1 ); - createMenu( 5013, boolId, -1 ); - createMenu( 5014, boolId, -1 ); - - int transId = createMenu( tr( "MEN_TRANSFORMATION" ), operId, -1 ); - createMenu( 5021, transId, -1 ); - createMenu( 5022, transId, -1 ); - createMenu( 5023, transId, -1 ); - createMenu( 5024, transId, -1 ); - createMenu( 5025, transId, -1 ); - createMenu( 5026, transId, -1 ); - createMenu( separator(), transId, -1 ); - createMenu( 5027, transId, -1 ); - createMenu( 5028, transId, -1 ); - - createMenu( 503, operId, -1 ); - createMenu( 504, operId, -1 ); - createMenu( separator(), operId, -1 ); - createMenu( 505, transId, -1 ); - createMenu( 506, transId, -1 ); - //createMenu( 507, transId, -1 ); - - int blockId = createMenu( tr( "MEN_BLOCKS" ), operId, -1 ); - createMenu( 9998, blockId, -1 ); - createMenu( 9995, blockId, -1 ); - createMenu( 99991, blockId, -1 ); - - int repairId = createMenu( tr( "MEN_REPAIR" ), -1, -1, 10 ); - createMenu( 605, repairId, -1 ); - createMenu( 603, repairId, -1 ); - createMenu( 606, repairId, -1 ); - createMenu( 607, repairId, -1 ); - createMenu( 604, repairId, -1 ); - createMenu( 601, repairId, -1 ); - createMenu( 602, repairId, -1 ); - createMenu( 608, repairId, -1 ); - createMenu( 609, repairId, -1 ); - createMenu( 610, repairId, -1 ); - - int measurId = createMenu( tr( "MEN_MEASURES" ), -1, -1, 10 ); - createMenu( 708, measurId, -1 ); - createMenu( 701, measurId, -1 ); - createMenu( separator(), measurId, -1 ); - createMenu( 702, measurId, -1 ); - createMenu( 703, measurId, -1 ); - createMenu( separator(), measurId, -1 ); - - int dimId = createMenu( tr( "MEN_DIMENSIONS" ), measurId, -1 ); - createMenu( 7041, dimId, -1 ); - createMenu( 7042, dimId, -1 ); - createMenu( separator(), measurId, -1 ); - - createMenu( 705, measurId, -1 ); - createMenu( separator(), measurId, -1 ); - createMenu( 706, measurId, -1 ); - createMenu( 707, measurId, -1 ); - createMenu( 7072, measurId, -1 ); - - int toolsId = createMenu( tr( "MEN_TOOLS" ), -1, -1, 50 ); - createMenu( separator(), toolsId, -1 ); - createMenu( 5103, toolsId, -1 ); - - //int prefId = createMenu( tr( "MEN_PREFERENCES" ), -1, -1, 50 ); - //createMenu( separator(), prefId, -1 ); - //int geomId = createMenu( tr( "MEN_PREFERENCES_GEOM" ), prefId, -1 ); - //createMenu( 412, geomId, -1 ); - //createMenu( 413, geomId, -1 ); - //createMenu( 414, geomId, -1 ); - //createMenu( separator(), prefId, -1 ); - - int viewId = createMenu( tr( "MEN_VIEW" ), -1, -1 ); - createMenu( separator(), viewId, -1 ); - - int dispmodeId = createMenu( tr( "MEN_DISPLAY_MODE" ), viewId, -1 ); - createMenu( 211, dispmodeId, -1 ); - - createMenu( separator(), viewId, -1 ); - createMenu( 212, viewId, -1 ); - createMenu( 214, viewId, -1 ); - createMenu( separator(), viewId, -1 ); - createMenu( 216, viewId, -1 ); - createMenu( 213, viewId, -1 ); - createMenu( 215, viewId, -1 ); - - // ---- create toolbars -------------------------- - - int basicTbId = createTool( tr( "TOOL_BASIC" ) ); - createTool( 4011, basicTbId ); - createTool( 4012, basicTbId ); - createTool( 4013, basicTbId ); - createTool( 4014, basicTbId ); - createTool( 4015, basicTbId ); - createTool( 4019, basicTbId ); - createTool( 4016, basicTbId ); - createTool( 4017, basicTbId ); - createTool( 4018, basicTbId ); - createTool( 4020, basicTbId ); - - int primTbId = createTool( tr( "TOOL_PRIMITIVES" ) ); - createTool( 4021, primTbId ); - createTool( 4022, primTbId ); - createTool( 4023, primTbId ); - createTool( 4024, primTbId ); - createTool( 4025, primTbId ); - - int boolTbId = createTool( tr( "TOOL_BOOLEAN" ) ); - createTool( 5011, boolTbId ); - createTool( 5012, boolTbId ); - createTool( 5013, boolTbId ); - createTool( 5014, boolTbId ); - - int genTbId = createTool( tr( "TOOL_GENERATION" ) ); - createTool( 4031, genTbId ); - createTool( 4032, genTbId ); - createTool( 4033, genTbId ); - createTool( 4034, genTbId ); - - int transTbId = createTool( tr( "TOOL_TRANSFORMATION" ) ); - createTool( 5021, transTbId ); - createTool( 5022, transTbId ); - createTool( 5023, transTbId ); - createTool( 5024, transTbId ); - createTool( 5025, transTbId ); - createTool( 5026, transTbId ); - createTool( separator(), transTbId ); - createTool( 5027, transTbId ); - createTool( 5028, transTbId ); - - QtxPopupMgr* mgr = popupMgr(); - mgr->insert( action( 901 ), -1, -1 ); // rename - mgr->setRule( action( 901 ), "$type in {'Shape' 'Group'} and selcount=1", true ); - mgr->insert( action( 8001 ), -1, -1 ); // create group - mgr->setRule( action( 8001 ), "client='ObjectBrowser' and type='Shape' and selcount=1 and isOCC=true", true ); - mgr->insert( action( 801 ), -1, -1 ); // edit group - mgr->setRule( action( 801 ), "client='ObjectBrowser' and type='Group' and selcount=1 and isOCC=true", true ); - mgr->insert( separator(), -1, -1 ); // ----------- - dispmodeId = mgr->insert( tr( "MEN_DISPLAY_MODE" ), -1, -1 ); // display mode menu - mgr->insert( action( 80311 ), dispmodeId, -1 ); // wireframe - mgr->setRule( action( 80311 ), "(client='OCCViewer' or client='VTKViewer') and selcount>0", true ); - mgr->setRule( action( 80311 ), "(client='OCCViewer' or client='VTKViewer') and displaymode='Wireframe'", false ); - mgr->insert( action( 80312 ), dispmodeId, -1 ); // shading - mgr->setRule( action( 80312 ), "(client='OCCViewer' or client='VTKViewer') and selcount>0", true ); - mgr->setRule( action( 80312 ), "(client='OCCViewer' or client='VTKViewer') and displaymode='Shading'", false ); - mgr->insert( separator(), -1, -1 ); // ----------- - mgr->insert( action( 8032 ), -1, -1 ); // color - mgr->setRule( action( 8032 ), "(client='OCCViewer' or client='VTKViewer') and selcount>0", true ); - mgr->insert( action( 8033 ), -1, -1 ); // transparency - mgr->setRule( action( 8033 ), "(client='OCCViewer' or client='VTKViewer') and selcount>0", true ); - mgr->insert( action( 8034 ), -1, -1 ); // isos - mgr->setRule( action( 8034 ), "client='OCCViewer' and selcount>0", true ); - mgr->insert( separator(), -1, -1 ); // ----------- - mgr->insert( action( 216 ), -1, -1 ); // display - mgr->setRule( action( 216 ), "(selcount>0) and (((isActiveView=true) and (($type in {'Shape' 'Group'} and isVisible=false) or type='Component'))" - "or ((isActiveView=false) and ($type in {'Shape' 'Group' 'Component'})))", true ); - mgr->insert( action( 215 ), -1, -1 ); // erase - mgr->setRule( action( 215 ), "(isActiveView=true) and (($type in {'Shape' 'Group'} and isVisible=true and selcount>0) or (type='Component' and selcount=1))", true ); - mgr->insert( action( 214 ), -1, -1 ); // erase All - mgr->setRule( action( 214 ), "client='OCCViewer' or client='VTKViewer'", true ); - mgr->insert( action( 213 ), -1, -1 ); // display only - mgr->setRule( action( 213 ), "($type in {'Shape' 'Group'} and selcount>0) or (type='Component' and selcount=1)", true ); - mgr->insert( separator(), -1, -1 ); -} - -//======================================================================= -// function : GeometryGUI::Deactivate() -// purpose : Called when GEOM module is deactivated [ static ] -//======================================================================= -bool GeometryGUI::activateModule( SUIT_Study* study ) -{ - if ( CORBA::is_nil( myComponentGeom ) ) - return false; - - bool res = SalomeApp_Module::activateModule( study ); - - if ( !res ) - return false; - - setMenuShown( true ); - setToolShown( true ); - - connect( application()->desktop(), SIGNAL( windowActivated( SUIT_ViewWindow* ) ), - this, SLOT( onWindowActivated( SUIT_ViewWindow* ) ) ); - connect( (STD_Application*)application(), SIGNAL( viewManagerAdded( SUIT_ViewManager* ) ), - this, SLOT( onViewManagerAdded( SUIT_ViewManager* ) ) ); - - GUIMap::Iterator it; - for ( it = myGUIMap.begin(); it != myGUIMap.end(); ++it ) - it.data()->activate( application()->desktop() ); - - SalomeApp_SelectionMgr* sm = getApp()->selectionMgr(); - SUIT_ViewManager* vm; - ViewManagerList OCCViewManagers, VTKViewManagers; - application()->viewManagers( OCCViewer_Viewer::Type(), OCCViewManagers ); - for ( vm = OCCViewManagers.first(); vm; vm = OCCViewManagers.next() ) - myOCCSelectors.append( new GEOMGUI_OCCSelector( ((OCCViewer_ViewManager*)vm)->getOCCViewer(), sm ) ); - application()->viewManagers( VTKViewer_Viewer::Type(), VTKViewManagers ); - for ( vm = VTKViewManagers.first(); vm; vm = VTKViewManagers.next() ) - myVTKSelectors.append( new SalomeApp_VTKSelector( (SVTK_Viewer*)vm->getViewModel(), sm ) ); - - // disable OCC selectors - getApp()->selectionMgr()->setEnabled( false, OCCViewer_Viewer::Type() ); - for ( GEOMGUI_OCCSelector* sr = myOCCSelectors.first(); sr; sr = myOCCSelectors.next() ) - sr->setEnabled(true); - - // disable VTK selectors - getApp()->selectionMgr()->setEnabled( false, VTKViewer_Viewer::Type() ); - for ( SalomeApp_VTKSelector* sr = myVTKSelectors.first(); sr; sr = myVTKSelectors.next() ) - sr->setEnabled(true); - - return true; -} - - -//======================================================================= -// function : GeometryGUI::Deactivate() -// purpose : Called when GEOM module is deactivated [ static ] -//======================================================================= -bool GeometryGUI::deactivateModule( SUIT_Study* study ) -{ - setMenuShown( false ); - setToolShown( false ); - - disconnect( application()->desktop(), SIGNAL( windowActivated( SUIT_ViewWindow* ) ), - this, SLOT( onWindowActivated( SUIT_ViewWindow* ) ) ); - disconnect( (STD_Application*)application(), SIGNAL( viewManagerAdded( SUIT_ViewManager* ) ), - this, SLOT( onViewManagerAdded( SUIT_ViewManager* ) ) ); - - EmitSignalCloseAllDialogs(); - - GUIMap::Iterator it; - for ( it = myGUIMap.begin(); it != myGUIMap.end(); ++it ) - it.data()->deactivate(); - - myOCCSelectors.clear(); - getApp()->selectionMgr()->setEnabled( true, OCCViewer_Viewer::Type() ); - - myVTKSelectors.clear(); - getApp()->selectionMgr()->setEnabled( true, VTKViewer_Viewer::Type() ); - - return SalomeApp_Module::deactivateModule( study ); -} - -//================================================================================= -// function : GeometryGUI::DefinePopup() -// purpose : Called from desktop to define popup menu [static] -//================================================================================= -/* -void GeometryGUI::DefinePopup(QString& theContext, QString& theParent, QString& theObject) -{ - QAD_Study* ActiveStudy = QAD_Application::getDesktop()->getActiveStudy(); - SALOME_Selection* Sel = SALOME_Selection::Selection(ActiveStudy->getSelection()); - - theObject = ""; - theContext = ""; - - if ( theParent == "Viewer" ) { - if ( Sel->IObjectCount() == 0 ) - theContext = "NothingSelected"; - } - - if ( Sel->IObjectCount() == 1 ) { - Handle(SALOME_InteractiveObject) IO = Sel->firstIObject(); - if( IO->hasEntry() ) { - SALOMEDS::SObject_var sobj = ActiveStudy->getStudyDocument()->FindObjectID( IO->getEntry() ); - if ( !sobj->_is_nil() ) { - SALOMEDS::SComponent_var scomp = sobj->GetFatherComponent(); - if ( !strcmp(scomp->GetID(), IO->getEntry() ) ) { - // component is selected - theObject = "Component"; - } - else { - GEOM::GEOM_Object_var aGObj = GEOM::GEOM_Object::_narrow( sobj->GetObject() ); - if ( !CORBA::is_nil( aGObj ) ) { - switch( aGObj->GetType() ) { - case GEOM_GROUP: - theObject = "Group"; - break; - default: - theObject = "Shape"; - break; - } - } - } - } - } - } -} - -//================================================================================= -// function : GeometryGUI::CustomPopup() -// purpose : Called from desktop to create popup menu [static] -//================================================================================= -bool GeometryGUI::CustomPopup(QAD_Desktop* parent, QPopupMenu* popup, const QString& theContext, - const QString& theParent, const QString& theObject) -{ - GeometryGUI* geomGUI = GetGeomGUI(); - - // Deactivate any non modal dialog box to get the neutral point - geomGUI->EmitSignalDeactivateDialog(); - QAD_Study* anActiveStudy = parent->getActiveStudy(); - QAD_StudyFrame* aStudyFrame = anActiveStudy->getActiveStudyFrame(); - QAD_ViewFrame* aViewFrame = aStudyFrame->getRightFrame()->getViewFrame(); - SALOME_Selection* Sel = SALOME_Selection::Selection(anActiveStudy->getSelection()); - QString parentComponent = ((SALOMEGUI_Desktop*)parent)->getComponentFromSelection(); - bool isOCCViewer = aViewFrame->getTypeView() == VIEW_OCC; - bool isVTKViewer = aViewFrame->getTypeView() == VIEW_VTK; - int aDisplayMode = 0; - QString objectName; - - if ( aViewFrame->getTypeView() == VIEW_OCC ) - aDisplayMode = ((OCCViewer_ViewFrame*)aViewFrame)->getViewer()->getAISContext()->DisplayMode(); - else if ( aViewFrame->getTypeView() == VIEW_VTK ) - aDisplayMode = ((VTKViewer_ViewFrame*)aViewFrame)->getRWInteractor()->GetDisplayMode(); - - int nbSel = Sel->IObjectCount(); - - if( nbSel == 0 ) { - ////// NOTHING SELECTED - popup->clear(); - } - else if ( nbSel == 1 ) { - ////// SINGLE OBJECT SELECTION - if ( parentComponent != parent->getActiveComponent() ) { - ////// selected object does not belong to GEOM module: - // remove all commands except Display/Erase... - while ( 1 ) { - int id = popup->idAt( 0 ); - if ( id <= QAD_TopLabel_Popup_ID ) - popup->removeItemAt( 0 ); - else - break; - } - } - else { - ////// selected object belong to the GEOM module - // get interactive object - Handle(SALOME_InteractiveObject) IObject = Sel->firstIObject(); - objectName = IObject->getName(); - // if object has entry get SObject - SALOMEDS::SObject_var SO; - if ( IObject->hasEntry() ) - SO = anActiveStudy->getStudyDocument()->FindObjectID( IObject->getEntry() ); - - if ( theObject == "Component" ) { - ////// menu for component - if ( !isOCCViewer && !isVTKViewer ) { - popup->removeItem( QAD_DisplayOnly_Popup_ID ); - popup->removeItem( QAD_Display_Popup_ID ); - popup->removeItem( QAD_Erase_Popup_ID ); - } - } - else { - ////// not component (should be shape) - if ( IObject->hasEntry() ) /////// VSR : TO BE REMOVED - popup->removeItem( 804 ); // "Add in Study" - - // Here could be analysis of the geom shape's type - // ... // - - SALOMEDS::GenericAttribute_var aTmpAttr; - if( SO->_is_nil() || SO->GetFatherComponent()->FindAttribute( aTmpAttr, "AttributeIOR") ) - popup->removeItem( 9024 ); // "Open" /////// VSR : TO BE REMOVED - - if ( !isOCCViewer && theParent == "ObjectBrowser" ) { - if ( theObject == "Shape" ) - popup->removeItem( 800 ); // Create Group - else if ( theObject == "Group" ) - popup->removeItem( 801 ); // Edit Group - } - - if ( isOCCViewer || isVTKViewer ) { - ////// current viewer is OCC or VTK - SALOME_Prs* prs = aViewFrame->CreatePrs( IObject->getEntry() ); - if ( aViewFrame->isVisible( IObject ) ) { - ////// object is already displayed in the viewer - popup->removeItem( QAD_Display_Popup_ID ); - if ( isOCCViewer ) { - ////// OCC viewer only - OCCViewer_Prs* occPrs = dynamic_cast( prs ); - if ( occPrs && !occPrs->IsNull() ) { - AIS_ListOfInteractive ioList; - occPrs->GetObjects( ioList ); - QMenuItem* mi = popup->findItem( 803 ); - if ( mi && mi->popup() ) { - if ( ioList.First()->DisplayMode() == 0 ) - mi->popup()->setItemChecked( 80311, true ); // "Wireframe" - else if ( ioList.First()->DisplayMode() == 1 ) - mi->popup()->setItemChecked( 80312, true ); // "Shading" - else if ( ioList.First()->DisplayMode() < 0 ) - mi->popup()->setItemChecked( aDisplayMode == 0 ? 80311 : 80312 , true ); // "Wireframe" or "Shading" - } - } - } - else { - ////// VTK viewer only - popup->removeItem( 8034 ); // "Isos" - VTKViewer_Prs* vtkPrs = dynamic_cast( prs ); - if ( vtkPrs && !vtkPrs->IsNull() ) { - vtkActorCollection* actorList = vtkPrs->GetObjects(); - actorList->InitTraversal(); - SALOME_Actor* ac = SALOME_Actor::SafeDownCast( actorList->GetNextActor() ); - QMenuItem* mi = popup->findItem( 803 ); - if ( ac && mi && mi->popup() ) { - if ( ac->getDisplayMode() == 0 ) - mi->popup()->setItemChecked( 80311, true ); // "Wireframe" - else if ( ac->getDisplayMode() == 1 ) - mi->popup()->setItemChecked( 80312, true ); // "Shading" - else - mi->popup()->setItemChecked( aDisplayMode == 0 ? 80311 : 80312 , true ); // "Wireframe" or "Shading" - } - } - } - } - else { - ////// object is not yet displayed in the viewer - popup->removeItem( 803 ); // "Display Mode" - popup->removeItem( 8032 ); // "Color" - popup->removeItem( 8033 ); // "Transparency" - popup->removeItem( 8034 ); // "Isos" - popup->removeItem( QAD_Erase_Popup_ID ); - } - delete prs; - } - else { - ////// other viewer type (neither OCC nor VTK) - popup->removeItem( 803 ); // "Display Mode" - popup->removeItem( 8032 ); // "Color" - popup->removeItem( 8033 ); // "Transparency" - popup->removeItem( 8034 ); // "Isos" - popup->removeItem( QAD_Display_Popup_ID ); - popup->removeItem( QAD_DisplayOnly_Popup_ID ); - popup->removeItem( QAD_Erase_Popup_ID ); - } - } - } - } - else { - ////// MULTIPLE SELECTION - if ( parentComponent != parent->getActiveComponent() ) { - ////// not GEOM module objects or objects belong to different modules - // remove all commands except Display/Erase... - while ( 1 ) { - int id = popup->idAt( 0 ); - if ( id <= QAD_TopLabel_Popup_ID ) - popup->removeItemAt( 0 ); - else - break; - } - if ( parentComponent.isNull() ) { - ////// objects belong to different modules - popup->removeItem(QAD_Display_Popup_ID); - popup->removeItem(QAD_DisplayOnly_Popup_ID); - popup->removeItem(QAD_Erase_Popup_ID); - } - else { - objectName = tr( "GEOM_MEN_POPUP_NAME" ).arg( nbSel ); - } - } - else { - ////// all selected objects belong to GEOM module - popup->removeItem( 901 ); // "Rename" - - SALOME_ListIteratorOfListIO It( Sel->StoredIObjects() ); - bool isComponent = false; - bool needOpen = false; - bool needDisplay = false; - bool needErase = false; - int needToPublish = 0; - - for( ;It.More();It.Next() ) { - Handle(SALOME_InteractiveObject) anIObject = It.Value(); - - if ( aViewFrame->isVisible( anIObject ) ) - needErase = true; - else - needDisplay = true; - - if( anIObject->hasEntry() ) { - needToPublish = -1; /////// VSR : TO BE REMOVED - SALOMEDS::SObject_var obj = anActiveStudy->getStudyDocument()->FindObjectID( anIObject->getEntry() ); - SALOMEDS::GenericAttribute_var aTmpAttr; - if ( !obj->_is_nil() && !obj->GetFatherComponent()->FindAttribute( aTmpAttr, "AttributeIOR" ) ) - needOpen = true; /////// VSR : TO BE REMOVED - if ( !obj->_is_nil() && QString( obj->GetID() ) == QString( obj->GetFatherComponent()->GetID() ) ) - isComponent = true; - } - else { - if ( needToPublish != -1 ) needToPublish = 1; - } - } - if( needOpen || ( !isOCCViewer && !isVTKViewer ) ) { - ////// Data is not loaded yet or current viewer is neither OCC nor VTK - popup->removeItem( 803 ); // "Display Mode" - popup->removeItem( 8032 ); // "Color" - popup->removeItem( 8033 ); // "Transparency" - popup->removeItem( 8034 ); // "Isos" - popup->removeItem( 804 ); // "Add in Study" - popup->removeItem( QAD_DisplayOnly_Popup_ID ); - popup->removeItem( QAD_Display_Popup_ID ); - popup->removeItem( QAD_Erase_Popup_ID ); - } - else { - popup->removeItem( 9024 ); // "Open" - if ( needToPublish <= 0 ) - popup->removeItem( 804 ); // "Add in Study" - - if( isComponent ) { - popup->removeItem( 803 ); // "Display Mode" - popup->removeItem( 8032 ); // "Color" - popup->removeItem( 8033 ); // "Transparency" - popup->removeItem( 8034 ); // "Isos" - popup->removeItem( QAD_DisplayOnly_Popup_ID ); - } - - if ( !needDisplay ) - popup->removeItem( QAD_Display_Popup_ID ); - if ( !needErase ) - popup->removeItem( QAD_Erase_Popup_ID ); - if ( !isOCCViewer ) - popup->removeItem( 8034 ); // "Isos" - } - } - } - - // check popup for unnecessary separators - QAD_Tools::checkPopup( popup ); - // find popup menu's TopLabel item (with title) - int topItem = popup->indexOf( QAD_TopLabel_Popup_ID ); - if ( topItem >= 0 ) { - // remove popup menu's title item - popup->removeItem( QAD_TopLabel_Popup_ID ); - if ( theParent == "Viewer" && !objectName.isEmpty() && popup->count() > 0 ) { - // set bold font for popup menu's title - QFont f = popup->font(); f.setBold( TRUE ); - popup->removeItem( QAD_TopLabel_Popup_ID ); - popup->insertItem( new CustomItem( objectName, f ), QAD_TopLabel_Popup_ID, topItem ); - } - } - - return false; -} - -*/ - -//======================================================================= -// function : GeometryGUI::BuildPresentation() -// purpose : -//======================================================================= -void GeometryGUI::BuildPresentation( const Handle(SALOME_InteractiveObject)& io, SUIT_ViewWindow* win ) -{ - //GEOM_Displayer().Display( io, false, win ); -} - -//======================================================================= -// function : setCommandsEnabled() -// purpose : update menu items' status - disable non-OCC-viewer-compatible actions -//======================================================================= -void GeometryGUI::onWindowActivated( SUIT_ViewWindow* win ) -{ - if ( !win ) - return; - - const bool ViewOCC = ( win->getViewManager()->getType() == OCCViewer_Viewer::Type() ); -// const bool ViewVTK = ( win->getViewManager()->getType() == VTKViewer_Viewer::Type() ); - - // disable non-OCC viewframe menu commands -// action( 404 )->setEnabled( ViewOCC ); // SKETCHER - action( 603 )->setEnabled( ViewOCC ); // SuppressFace - action( 604 )->setEnabled( ViewOCC ); // SuppressHole - action( 606 )->setEnabled( ViewOCC ); // CloseContour - action( 607 )->setEnabled( ViewOCC ); // RemoveInternalWires - action( 608 )->setEnabled( ViewOCC ); // AddPointOnEdge -// action( 609 )->setEnabled( ViewOCC ); // Free boundaries - action( 413 )->setEnabled( ViewOCC ); // Isos Settings - - action( 800 )->setEnabled( ViewOCC ); // Create Group - action( 801 )->setEnabled( ViewOCC ); // Edit Group - - action( 9998 )->setEnabled( ViewOCC ); // MENU BLOCKS - MULTI-TRANSFORMATION -} - -void GeometryGUI::windows( QMap& mappa ) const -{ - mappa.insert( SalomeApp_Application::WT_ObjectBrowser, Qt::DockLeft ); - mappa.insert( SalomeApp_Application::WT_PyConsole, Qt::DockBottom ); -} - -void GeometryGUI::viewManagers( QStringList& lst ) const -{ - lst.append( OCCViewer_Viewer::Type() ); -} - -void GeometryGUI::onViewManagerAdded( SUIT_ViewManager* vm ) -{ - if ( vm->getType() == OCCViewer_Viewer::Type() ) - { - SalomeApp_SelectionMgr* sm = getApp()->selectionMgr(); - myOCCSelectors.append( new GEOMGUI_OCCSelector( ((OCCViewer_ViewManager*)vm)->getOCCViewer(), sm ) ); - - // disable OCC selectors - getApp()->selectionMgr()->setEnabled( false, OCCViewer_Viewer::Type() ); - for ( GEOMGUI_OCCSelector* sr = myOCCSelectors.first(); sr; sr = myOCCSelectors.next() ) - sr->setEnabled(true); - } - else if ( vm->getType() == VTKViewer_Viewer::Type() ) - { - SalomeApp_SelectionMgr* sm = getApp()->selectionMgr(); - myVTKSelectors.append( new SalomeApp_VTKSelector( (SVTK_Viewer*)vm->getViewModel(), sm ) ); - - // disable VTK selectors - getApp()->selectionMgr()->setEnabled( false, VTKViewer_Viewer::Type() ); - for ( SalomeApp_VTKSelector* sr = myVTKSelectors.first(); sr; sr = myVTKSelectors.next() ) - sr->setEnabled(true); - } -} - -void GeometryGUI::onViewManagerRemoved( SUIT_ViewManager* vm ) -{ - SUIT_ViewModel* viewer = vm->getViewModel(); - if ( vm->getType() == OCCViewer_Viewer::Type() ) - { - for ( GEOMGUI_OCCSelector* sr = myOCCSelectors.first(); sr; sr = myOCCSelectors.next() ) - if ( sr->viewer() == viewer ) - { - myOCCSelectors.remove( sr ); - break; - } - } - if ( vm->getType() == VTKViewer_Viewer::Type() ) - { - for ( SalomeApp_VTKSelector* sr = myVTKSelectors.first(); sr; sr = myVTKSelectors.next() ) - if ( sr->viewer() == viewer ) - { - myVTKSelectors.remove( sr ); - break; - } - } -} - -QString GeometryGUI::engineIOR() const -{ - if ( !CORBA::is_nil( GetGeomGen() ) ) - return QString( getApp()->orb()->object_to_string( GetGeomGen() ) ); - return QString( "" ); -} - -SalomeApp_Selection* GeometryGUI::createSelection() const -{ - return new GEOMGUI_Selection(); -} - -void GeometryGUI::contextMenuPopup( const QString& client, QPopupMenu* menu, QString& title ) -{ - SalomeApp_Module::contextMenuPopup( client, menu, title ); - SALOME_ListIO lst; - getApp()->selectionMgr()->selectedObjects( lst ); - if ( ( client == "OCCViewer" || client == "VTKViewer" ) && lst.Extent() == 1 ) { - Handle(SALOME_InteractiveObject) io = lst.First(); - SalomeApp_Study* appStudy = dynamic_cast( application()->activeStudy() ); - _PTR(Study) study = appStudy->studyDS(); - _PTR(SObject) obj = study->FindObjectID( io->getEntry() ); - if ( obj ) - title = QString( obj->GetName().c_str() ); - } -} - -void GeometryGUI::createPreferences() -{ - int tabId = addPreference( tr( "PREF_TAB_SETTINGS" ) ); - - int genGroup = addPreference( tr( "PREF_GROUP_GENERAL" ), tabId ); - addPreference( tr( "PREF_SHADING_COLOR" ), genGroup, - SalomeApp_Preferences::Color, "Geometry", "shading_color" ); - int step = addPreference( tr( "PREF_STEP_VALUE" ), genGroup, - SalomeApp_Preferences::IntSpin, "Geometry", "SettingsGeomStep" ); - int dispmode = addPreference( tr( "PREF_DISPLAY_MODE" ), genGroup, - SalomeApp_Preferences::Selector, "Geometry", "display_mode" ); - - setPreferenceProperty( genGroup, "columns", 1 ); - - setPreferenceProperty( step, "min", 0.001 ); - setPreferenceProperty( step, "max", 10000 ); - setPreferenceProperty( step, "precision", 3 ); - - // Set property for default display mode - QStringList aModesList; - aModesList.append( tr("MEN_WIREFRAME") ); - aModesList.append( tr("MEN_SHADING") ); - - QValueList anIndexesList; - anIndexesList.append(0); - anIndexesList.append(1); - - setPreferenceProperty( dispmode, "strings", aModesList ); - setPreferenceProperty( dispmode, "indexes", anIndexesList ); -} - -void GeometryGUI::preferencesChanged( const QString& section, const QString& param ) -{ -} diff --git a/src/GEOMGUI/GeometryGUI.h b/src/GEOMGUI/GeometryGUI.h deleted file mode 100644 index 854dbc615..000000000 --- a/src/GEOMGUI/GeometryGUI.h +++ /dev/null @@ -1,186 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GeometryGUI.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef GEOMETRYGUI_H -#define GEOMETRYGUI_H - -#include "SalomeApp_Module.h" - -#include "GEOMGUI.h" -#include "GEOM_Client.hxx" -#include "SALOME_InteractiveObject.hxx" - -#include "SALOMEDSClient.hxx" - -// QT Includes -#include - -// OCCT Includes -#include - -// IDL headers -#include "SALOMEconfig.h" -#include CORBA_CLIENT_HEADER(SALOMEDS) - -#ifdef WNT -#include -#else -#define SALOME_WNT_EXPORT -#endif - -//#if defined WNT -//#include -//#else -//#define SALOME_WNT_EXPORT -//#endif - -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define GEOMGUI_WNT_EXPORT __declspec( dllexport ) -#else -#define GEOMGUI_WNT_EXPORT -#endif - -typedef QMap GUIMap; - -class QDialog; -class QPopupMenu; -class GEOMGUI_OCCSelector; -class SalomeApp_VTKSelector; -class SUIT_ViewManager; - -//================================================================================= -// class : GeometryGUI -// purpose : -//================================================================================= -class GEOMGUI_WNT_EXPORT GeometryGUI : public SalomeApp_Module -{ - Q_OBJECT; - -public: - // Constructor - GeometryGUI(); - - // Destructor - ~GeometryGUI(); - - virtual void initialize( CAM_Application* ); - virtual QString engineIOR() const; - - static bool InitGeomGen(); //BugID IPAL9186: SRN: To be called by Python scripts - - static GEOM::GEOM_Gen_var GetGeomGen();// { return GeometryGUI::myComponentGeom; } - - static CORBA::Object_var ClientSObjectToObject (_PTR(SObject) theSObject); - static SALOMEDS::Study_var ClientStudyToStudy (_PTR(Study) theStudy); - - GEOM_Client& GetShapeReader() { return myShapeReader; } - Standard_CString& GetFatherior() { return myFatherior; } - //void SetState( const int state ) { myState = state; } - //int GetState() const { return myState; } - - // Get active dialog box - QDialog* GetActiveDialogBox(){ return myActiveDialogBox; } - // Set active dialog box - void SetActiveDialogBox( QDialog* aDlg ); - - // Non modal dialog boxes management - void EmitSignalDeactivateDialog(); - void EmitSignalCloseAllDialogs(); - void EmitSignalDefaultStepValueChanged( double newVal ); - - void OnGUIEvent( int id ); - - virtual bool OnKeyPress( QKeyEvent*, SUIT_ViewWindow* ); - virtual bool OnMousePress( QMouseEvent*, SUIT_ViewWindow* ); - virtual bool OnMouseMove( QMouseEvent*, SUIT_ViewWindow* ); - -// virtual bool SetSettings(); -// virtual void SupportedViewType ( int* buffer, int bufferSize ); - virtual void BuildPresentation( const Handle(SALOME_InteractiveObject)&, SUIT_ViewWindow* = 0 ); - -// virtual void DefinePopup( QString & theContext, QString & theParent, QString & theObject); -// virtual bool CustomPopup( QAD_Desktop* parent, QPopupMenu* popup, const QString& theContext, -// const QString& theParent, const QString& theObject ); - - // The Working Plane management - void SetWorkingPlane( gp_Ax3 wp ) { myWorkingPlane = wp; } - gp_Ax3 GetWorkingPlane() { return myWorkingPlane; } - void ActiveWorkingPlane(); - - virtual void windows( QMap& ) const; - virtual void viewManagers( QStringList& ) const; - - virtual void contextMenuPopup( const QString&, QPopupMenu*, QString& ); - virtual void createPreferences(); - virtual void preferencesChanged( const QString&, const QString& ); - - -public slots: - virtual bool deactivateModule( SUIT_Study* ); - virtual bool activateModule( SUIT_Study* ); - -private slots: - void OnGUIEvent(); - void onViewManagerAdded( SUIT_ViewManager* ); - void onViewManagerRemoved( SUIT_ViewManager* ); - void onWindowActivated( SUIT_ViewWindow* ); - -signals : - void SignalDeactivateActiveDialog(); - void SignalCloseAllDialogs(); - void SignalDefaultStepValueChanged( double newVal ); - -protected: - virtual SalomeApp_Selection* createSelection() const; - -private: - GEOMGUI* getLibrary( const QString& libraryName ); - void createGeomAction( const int id, const QString& po_id, - const QString& icon_id = QString(""), - const int key = 0, const bool toggle = false ); - void createPopupItem( const int, const QString& clients, const QString& types, - const bool isSingle = false, const int isVisible = -1, - const bool isExpandAll = false, const bool isOCC = false, - const int parentId = -1 ); - -public: - static GEOM::GEOM_Gen_var myComponentGeom; // GEOM engine!!! -private: - GUIMap myGUIMap; // GUI libraries map - QDialog* myActiveDialogBox; // active dialog box - GEOM_Client myShapeReader; // geom shape reader - Standard_CString myFatherior; - int myState; // identify a method - gp_Ax3 myWorkingPlane; - QMap myRules; // popup rules - - QPtrList myOCCSelectors; - QPtrList myVTKSelectors; -}; - -#endif diff --git a/src/GEOMGUI/GeometryGUI_Swig.hxx b/src/GEOMGUI/GeometryGUI_Swig.hxx deleted file mode 100644 index 02489d402..000000000 --- a/src/GEOMGUI/GeometryGUI_Swig.hxx +++ /dev/null @@ -1,65 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GeometryGUI_Swig.hxx -// Author : Nicolas REJNERI, Paul RASCLE -// Module : GEOM -// $Header$ - -#ifndef _GeometryGUI_SWIG_HXX_ -#define _GeometryGUI_SWIG_HXX_ - -// IDL Headers -#include -#include CORBA_SERVER_HEADER(GEOM_Gen) -#include CORBA_SERVER_HEADER(SALOMEDS) -#include CORBA_SERVER_HEADER(SALOMEDS_Attributes) - -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define GEOMGUI_WNT_EXPORT __declspec( dllexport ) -#else -#define GEOMGUI_WNT_EXPORT -#endif - -class GEOM_Client; - -class GEOMGUI_WNT_EXPORT GEOM_Swig -{ -public: - GEOM_Swig(); - ~GEOM_Swig(); - - void createAndDisplayGO(const char* Entry); - void setDisplayMode(const char* Entry, int mode); - void setColor(const char* Entry, int red, int green, int blue); - void setTransparency(const char* Entry, float transp); - - int getIndexTopology(const char *SubEntry, const char *Entry); - const char* getShapeTypeString(const char *Entry); - const char* getShapeTypeIcon(const char *Ior); - - bool initGeomGen(); -}; - - -#endif diff --git a/src/GEOMGUI/GeometryGUI_Swig.i b/src/GEOMGUI/GeometryGUI_Swig.i deleted file mode 100644 index d8be6b738..000000000 --- a/src/GEOMGUI/GeometryGUI_Swig.i +++ /dev/null @@ -1,49 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GeometryGUI_Swig.i -// Author : Nicolas REJNERI, Paul RASCLE -// Module : GEOM -// $Header$ - -%{ -#include "GeometryGUI_Swig.hxx" -%} - -class GEOM_Swig -{ - public: - GEOM_Swig(); - ~GEOM_Swig(); - - void createAndDisplayGO(const char* Entry); - int getIndexTopology(const char *SubEntry, const char *Entry); - const char* getShapeTypeString(const char *Entry); - - void setDisplayMode(const char* Entry, int mode); - void setColor(const char* Entry, int red, int green, int blue); - void setTransparency(const char* Entry, float transp); - const char* getShapeTypeIcon(const char *Ior); - - bool initGeomGen(); -}; diff --git a/src/GEOMGUI/Makefile.in b/src/GEOMGUI/Makefile.in deleted file mode 100644 index a14ea4cb1..000000000 --- a/src/GEOMGUI/Makefile.in +++ /dev/null @@ -1,78 +0,0 @@ -# GEOM GEOMGUI : GUI for Geometry component -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Author : Marc Tajchman (CEA) -# Module : GEOM -# $Header$ - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -# ressources files -PO_FILES = \ - GEOM_images.po \ - GEOM_msg_en.po \ - GEOM_msg_fr.po - -# header files -EXPORT_HEADERS= GeometryGUI.h \ - GEOMGUI.h \ - GEOM_Displayer.h \ - GEOMGUI_OCCSelector.h \ - GEOMGUI_Selection.h \ - GeometryGUI_Swig.hxx \ - GeometryGUI_Swig.i - -# Libraries targets -LIB = libGEOM.la -LIB_SRC = GeometryGUI.cxx \ - GEOMGUI.cxx \ - GEOM_Displayer.cxx \ - GEOMGUI_OCCSelector.cxx \ - GEOMGUI_Selection.cxx \ - GeometryGUI_Swig.cxx - -LIB_MOC = GeometryGUI.h \ - -LIB_CLIENT_IDL = SALOME_Exception.idl \ - SALOMEDS.idl \ - SALOMEDS_Attributes.idl \ - SALOME_GenericObj.idl \ - SALOME_Component.idl - -LIB_SERVER_IDL = - -# additionnal information to compil and link file - -CPPFLAGS += $(QT_INCLUDES) $(VTK_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES) $(BOOST_CPPFLAGS) -I$(KERNEL_ROOT_DIR)/include/salome -I$(GUI_ROOT_DIR)/include/salome -CXXFLAGS += $(BOOST_CPPFLAGS) -I$(KERNEL_ROOT_DIR)/include/salome -I$(GUI_ROOT_DIR)/include/salome - -LDFLAGS += -lGEOMFiltersSelection -L$(KERNEL_ROOT_DIR)/lib/salome -L$(GUI_ROOT_DIR)/lib/salome -lOCCViewer -lVTKViewer -lSalomeApp -lCAM -lGEOMClient -lSOCC -lSVTK -lGEOMObject -lToolsGUI -lEvent - -@CONCLUDE@ diff --git a/src/GEOMImpl/GEOMImpl_ArcDriver.cxx b/src/GEOMImpl/GEOMImpl_ArcDriver.cxx deleted file mode 100644 index c00640c07..000000000 --- a/src/GEOMImpl/GEOMImpl_ArcDriver.cxx +++ /dev/null @@ -1,133 +0,0 @@ - -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_ArcDriver::GetID() -{ - static Standard_GUID aArcDriver("FF1BBB35-5D14-4df2-980B-3A668264EA16"); - return aArcDriver; -} - - -//======================================================================= -//function : GEOMImpl_ArcDriver -//purpose : -//======================================================================= -GEOMImpl_ArcDriver::GEOMImpl_ArcDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_ArcDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - GEOMImpl_IArc aCI (aFunction); - Standard_Integer aType = aFunction->GetType(); - - TopoDS_Shape aShape; - - if (aType == CIRC_ARC_THREE_PNT) { - Handle(GEOM_Function) aRefPoint1 = aCI.GetPoint1(); - Handle(GEOM_Function) aRefPoint2 = aCI.GetPoint2(); - Handle(GEOM_Function) aRefPoint3 = aCI.GetPoint3(); - TopoDS_Shape aShapePnt1 = aRefPoint1->GetValue(); - TopoDS_Shape aShapePnt2 = aRefPoint2->GetValue(); - TopoDS_Shape aShapePnt3 = aRefPoint3->GetValue(); - if (aShapePnt1.ShapeType() == TopAbs_VERTEX && - aShapePnt2.ShapeType() == TopAbs_VERTEX && - aShapePnt3.ShapeType() == TopAbs_VERTEX) { - gp_Pnt aP1 = BRep_Tool::Pnt(TopoDS::Vertex(aShapePnt1)); - gp_Pnt aP2 = BRep_Tool::Pnt(TopoDS::Vertex(aShapePnt2)); - gp_Pnt aP3 = BRep_Tool::Pnt(TopoDS::Vertex(aShapePnt3)); - if (aP1.Distance(aP2) < gp::Resolution() || - aP1.Distance(aP3) < gp::Resolution() || - aP2.Distance(aP3) < gp::Resolution()) - Standard_ConstructionError::Raise("Arc creation aborted: coincident points given"); - if (gp_Vec(aP1, aP2).IsParallel(gp_Vec(aP1, aP3), Precision::Angular())) - Standard_ConstructionError::Raise("Arc creation aborted: points lay on one line"); - GC_MakeArcOfCircle arc (aP1, aP2, aP3); - aShape = BRepBuilderAPI_MakeEdge(arc).Edge(); - } - } else { - } - - if (aShape.IsNull()) return 0; - - aFunction->SetValue(aShape); - - log.SetTouched(Label()); - - return 1; -} - - -//======================================================================= -//function : GEOMImpl_ArcDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_ArcDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_ArcDriver", - sizeof(GEOMImpl_ArcDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= -const Handle(GEOMImpl_ArcDriver) Handle(GEOMImpl_ArcDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_ArcDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_ArcDriver))) { - _anOtherObject = Handle(GEOMImpl_ArcDriver)((Handle(GEOMImpl_ArcDriver)&)AnObject); - } - } - - return _anOtherObject ; -} diff --git a/src/GEOMImpl/GEOMImpl_ArcDriver.hxx b/src/GEOMImpl/GEOMImpl_ArcDriver.hxx deleted file mode 100644 index 95cee034a..000000000 --- a/src/GEOMImpl/GEOMImpl_ArcDriver.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// File : GEOMImpl_ArcDriver.ixx -// Module : GEOMImpl - -#ifndef _GEOMImpl_ArcDriver_HeaderFile -#define _GEOMImpl_ArcDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_ArcDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_ArcDriver); - -class Handle(GEOMImpl_ArcDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_ArcDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_ArcDriver)(const Handle(GEOMImpl_ArcDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_ArcDriver)(const GEOMImpl_ArcDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_ArcDriver)& operator=(const Handle(GEOMImpl_ArcDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_ArcDriver)& operator=(const GEOMImpl_ArcDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_ArcDriver* operator->() - { - return (GEOMImpl_ArcDriver *)ControlAccess(); - } - - GEOMImpl_ArcDriver* operator->() const - { - return (GEOMImpl_ArcDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_ArcDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_ArcDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_ArcDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_ArcDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_ArcDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_ArcDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_ArcDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_ArcDriver) == AType || TFunction_Driver::IsKind(AType)); } - - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_ArchimedeDriver.cxx b/src/GEOMImpl/GEOMImpl_ArchimedeDriver.cxx deleted file mode 100644 index 05114c950..000000000 --- a/src/GEOMImpl/GEOMImpl_ArchimedeDriver.cxx +++ /dev/null @@ -1,168 +0,0 @@ - -#include "GEOMImpl_ArchimedeDriver.hxx" -#include "GEOMImpl_IArchimede.hxx" -#include "GEOMImpl_Types.hxx" - -#include "Archimede_VolumeSection.hxx" - -#include - -#include - -#include -#include - -#include -#include -#include - -#include -#include - -#include - -using namespace std; - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_ArchimedeDriver::GetID() -{ - static Standard_GUID aArchimedeDriver("FF1BBB59-5D14-4df2-980B-3A668264EA16"); - return aArchimedeDriver; -} - - -//======================================================================= -//function : GEOMImpl_ArchimedeDriver -//purpose : -//======================================================================= - -GEOMImpl_ArchimedeDriver::GEOMImpl_ArchimedeDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_ArchimedeDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - Standard_Integer aType = aFunction->GetType(); - if (aType != ARCHIMEDE_TYPE) return 0; - - GEOMImpl_IArchimede IA (aFunction); - - Handle(GEOM_Function) aShapeFunction = IA.GetBasicShape(); - if (aShapeFunction.IsNull()) return 0; - TopoDS_Shape shape = aShapeFunction->GetValue(); - if(shape.IsNull()) return 0; - - Standard_Real aWaterDensity = IA.GetDensity(); - Standard_Real aWeight = IA.GetWeight(); - Standard_Real aMeshingDeflection = IA.GetDeflection(); - - double cste = -1; - if (aWaterDensity != 0.) - cste = aWeight/aWaterDensity; - else - return 0; - - gp_Dir direct (0.0, 0.0, 1.0); - gp_Pnt PosPlan (0.0, 0.0, 0.0); - Geom_Plane PP (PosPlan, direct); - Handle(Geom_Plane) P = Handle(Geom_Plane)::DownCast(PP.Copy()); - - gp_Dir Zdirection (0.0, 0.0, 1.0); - VolumeSection VOL (shape, aMeshingDeflection); - VOL.SetPlane(P); - Handle(Geom_RectangularTrimmedSurface) SurfaceTrimmee; - - if (Zdirection.IsEqual(direct, Precision::Angular()) == Standard_False) { - VOL.MakeRotation(direct); - } - - VOL.CenterOfGravity(); - SurfaceTrimmee = VOL.TrimSurf(); - Standard_Real Cote = VOL.Archimede(cste, aMeshingDeflection); - - if (Cote == -1) { - double Zmin,Zmax; - VOL.getZ(Zmin,Zmax); - double volume = VOL.CalculateVolume(Zmax) * aWaterDensity; - - char msg[100] = ""; - sprintf(msg, "shape sinks to the bottom : Weigth max = %.1f", volume); - - StdFail_NotDone::Raise(msg); - } - - SurfaceTrimmee = VOL.AjustePlan(SurfaceTrimmee,Cote,PosPlan); - if (Zdirection.IsEqual(direct,Precision::Angular()) == Standard_False) { - SurfaceTrimmee = VOL.InvMakeRotation(direct,SurfaceTrimmee); - } - - Standard_Real u1,u2,v1,v2; - SurfaceTrimmee->Bounds(u1,u2,v1,v2); - TopoDS_Face tirant = BRepBuilderAPI_MakeFace(SurfaceTrimmee, u1, u2, v1, v2); - - if (tirant.IsNull()) { - StdFail_NotDone::Raise("Failed to build secant face"); - } - - aFunction->SetValue(tirant); - - log.SetTouched(Label()); - - return 1; -} - - -//======================================================================= -//function : GEOMImpl_ArchimedeDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_ArchimedeDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_ArchimedeDriver", - sizeof(GEOMImpl_ArchimedeDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= - -const Handle(GEOMImpl_ArchimedeDriver) Handle(GEOMImpl_ArchimedeDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_ArchimedeDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_ArchimedeDriver))) { - _anOtherObject = Handle(GEOMImpl_ArchimedeDriver)((Handle(GEOMImpl_ArchimedeDriver)&)AnObject); - } - } - - return _anOtherObject ; -} - - diff --git a/src/GEOMImpl/GEOMImpl_ArchimedeDriver.hxx b/src/GEOMImpl/GEOMImpl_ArchimedeDriver.hxx deleted file mode 100644 index ba2fcfb29..000000000 --- a/src/GEOMImpl/GEOMImpl_ArchimedeDriver.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// File : GEOMImpl_ArchimedeDriver.hxx -// Module : GEOMImpl - -#ifndef _GEOMImpl_ArchimedeDriver_HeaderFile -#define _GEOMImpl_ArchimedeDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_ArchimedeDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_ArchimedeDriver); - -class Handle(GEOMImpl_ArchimedeDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_ArchimedeDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_ArchimedeDriver)(const Handle(GEOMImpl_ArchimedeDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_ArchimedeDriver)(const GEOMImpl_ArchimedeDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_ArchimedeDriver)& operator=(const Handle(GEOMImpl_ArchimedeDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_ArchimedeDriver)& operator=(const GEOMImpl_ArchimedeDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_ArchimedeDriver* operator->() - { - return (GEOMImpl_ArchimedeDriver *)ControlAccess(); - } - - GEOMImpl_ArchimedeDriver* operator->() const - { - return (GEOMImpl_ArchimedeDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_ArchimedeDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_ArchimedeDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_ArchimedeDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_ArchimedeDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_ArchimedeDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_ArchimedeDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_ArchimedeDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_ArchimedeDriver) == AType || TFunction_Driver::IsKind(AType)); } - - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_Block6Explorer.cxx b/src/GEOMImpl/GEOMImpl_Block6Explorer.cxx deleted file mode 100644 index c660f5a33..000000000 --- a/src/GEOMImpl/GEOMImpl_Block6Explorer.cxx +++ /dev/null @@ -1,1215 +0,0 @@ -#include - -#include - -#include - -#include "utilities.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include -#include - -#define NBFACES 6 -#define NBEDGES 12 -#define NBVERTS 8 - -static Standard_Integer mod4 (Standard_Integer nb) -{ - if (nb <= 0) return nb + 4; - if (nb > 4) return nb - 4; - return nb; -} - -static Standard_Integer edge_id (const Standard_Integer theFaceID, - const Standard_Integer theEdgeNB) -{ - static Standard_Integer edge_ids[NBFACES][4] = { - { 1, 2, 3, 4 }, // face 1 - { 5, 6, 7, 8 }, // face 2 - { 9, 5, 10, 1 }, // face 3 - { 12, 7, 11, 3 }, // face 4 - { 4, 12, 8, 9 }, // face 5 - { 2, 11, 6, 10 } }; // face 6 - - return edge_ids[theFaceID - 1][theEdgeNB - 1]; -} - -static Standard_Integer side_edge_id (const Standard_Integer theEdgeNB) -{ - static Standard_Integer side_edge_ids[4] = {9, 10, 11, 12}; - - return side_edge_ids[theEdgeNB - 1]; -} - -static Standard_Integer vertex_id (const Standard_Integer theFaceID, - const Standard_Integer theVertexNB) -{ - static Standard_Integer vertex_ids[NBFACES][4] = { - { 1, 2, 3, 4 }, // face 1 - { 5, 6, 7, 8 }, // face 2 - { 1, 5, 6, 2 }, // face 3 - { 4, 8, 7, 3 }, // face 4 - { 1, 4, 8, 5 }, // face 5 - { 2, 3, 7, 6 } }; // face 6 - - return vertex_ids[theFaceID - 1][theVertexNB - 1]; -} - -static Standard_Integer vertex_id_edge (const Standard_Integer theEdgeID, // [1,12] - const Standard_Integer theVertexNB) // [1,2] -{ - static Standard_Integer vertex_ids_edge[NBEDGES][2] = { - {1, 2}, // edge 1 - {2, 3}, // edge 2 - {3, 4}, // edge 3 - {4, 1}, // edge 4 - {5, 6}, // edge 5 - {6, 7}, // edge 6 - {7, 8}, // edge 7 - {8, 5}, // edge 8 - {1, 5}, // edge 9 - {2, 6}, // edge 10 - {3, 7}, // edge 11 - {4, 8} }; // edge 12 - - return vertex_ids_edge[theEdgeID - 1][theVertexNB - 1]; -} - -static Standard_Integer face_id_edges (const Standard_Integer theEdge1ID, // [1,12] - const Standard_Integer theEdge2ID) // [1,12] -{ - static Standard_Integer face_ids_edges[NBEDGES][NBEDGES] = { - // 1 2 3 4 5 6 7 8 9 10 11 12 - { 0, 1, 1, 1, 3, 0, 0, 0, 3, 3, 0, 0 }, // edge 1 - { 1, 0, 1, 1, 0, 6, 0, 0, 0, 6, 6, 0 }, // edge 2 - { 1, 1, 0, 1, 0, 0, 4, 0, 0, 0, 4, 4 }, // edge 3 - { 1, 1, 1, 0, 0, 0, 0, 5, 5, 0, 0, 5 }, // edge 4 - { 3, 0, 0, 0, 0, 2, 2, 2, 3, 3, 0, 0 }, // edge 5 - { 0, 6, 0, 0, 2, 0, 2, 2, 0, 6, 6, 0 }, // edge 6 - { 0, 0, 4, 0, 2, 2, 0, 2, 0, 0, 4, 4 }, // edge 7 - { 0, 0, 0, 5, 2, 2, 2, 0, 5, 0, 0, 5 }, // edge 8 - { 3, 0, 0, 5, 3, 0, 0, 5, 0, 3, 0, 5 }, // edge 9 - { 3, 6, 0, 0, 3, 6, 0, 0, 3, 0, 6, 0 }, // edge 10 - { 0, 6, 4, 0, 0, 6, 4, 0, 0, 6, 0, 4 }, // edge 11 - { 0, 0, 4, 5, 0, 0, 4, 5, 5, 0, 4, 0 } }; // edge 12 - - return face_ids_edges[theEdge1ID - 1][theEdge2ID - 1]; -} - -static Standard_Integer edge_id_vertices (const Standard_Integer theVertex1ID, // [1,8] - const Standard_Integer theVertex2ID) // [1,8] -{ - static Standard_Integer edge_ids_vertices[NBVERTS][NBVERTS] = { - // 1 2 3 4 5 6 7 8 - { 0, 1, 0, 4, 9, 0, 0, 0}, // vertex 1 - { 1, 0, 2, 0, 0, 10, 0, 0}, // vertex 2 - { 0, 2, 0, 3, 0, 0, 11, 0}, // vertex 3 - { 4, 0, 3, 0, 0, 0, 0, 12}, // vertex 4 - { 9, 0, 0, 0, 0, 5, 0, 8}, // vertex 5 - { 0, 10, 0, 0, 5, 0, 6, 0}, // vertex 6 - { 0, 0, 11, 0, 0, 6, 0, 7}, // vertex 7 - { 0, 0, 0, 12, 8, 0, 7, 0} }; // vertex 8 - - return edge_ids_vertices[theVertex1ID - 1][theVertex2ID - 1]; -} - -static Standard_Integer edge_id_faces (const Standard_Integer theFace1ID, // [1,6] - const Standard_Integer theFace2ID) // [1,6] -{ - static Standard_Integer edge_ids_faces[NBFACES][NBFACES] = { - // 1 2 3 4 5 6 - { 0, 0, 1, 3, 4, 2 }, // face 1 - { 0, 0, 5, 7, 8, 6 }, // face 2 - { 1, 5, 0, 0, 9, 10 }, // face 3 - { 3, 7, 0, 0, 12, 11 }, // face 4 - { 4, 8, 9, 12, 0, 0 }, // face 5 - { 2, 6, 10, 11, 0, 0 } }; // face 6 - - return edge_ids_faces[theFace1ID - 1][theFace2ID - 1]; -} - -//======================================================================= -//function : GEOMImpl_Block6Explorer -//purpose : Constructor -//======================================================================= -GEOMImpl_Block6Explorer::GEOMImpl_Block6Explorer () - : myFaces(1,NBFACES), myEdges(1,NBEDGES), myVertices(1,NBVERTS) -{ -} - -//======================================================================= -//function : GetVertex -//purpose : -//======================================================================= -TopoDS_Shape GEOMImpl_Block6Explorer::GetVertex (const Standard_Integer theVertexID) -{ - TopoDS_Shape aNullShape; - if (theVertexID < 1 || theVertexID > NBVERTS) return aNullShape; - return myVertices(theVertexID); -} - -//======================================================================= -//function : GetVertexID -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_Block6Explorer::GetVertexID (const TopoDS_Shape& theVertex) -{ - for (Standard_Integer id = 1; id <= NBVERTS; id++) { - if (theVertex.IsSame(myVertices(id))) return id; - } - Standard_NoSuchObject::Raise("The Vertex does not belong to the Block"); - return 0; -} - -//======================================================================= -//function : GetVertexID -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_Block6Explorer::GetVertexID (const Standard_Integer theFaceID, - const Standard_Integer theVertexNB) -{ - return vertex_id(theFaceID, theVertexNB); -} - -//======================================================================= -//function : GetVertexOnEdgeID -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_Block6Explorer::GetVertexOnEdgeID - (const Standard_Integer theEdgeID, - const Standard_Integer theVertexNB) -{ - return vertex_id_edge(theEdgeID, theVertexNB); -} - -//======================================================================= -//function : GetEdge -//purpose : -//======================================================================= -TopoDS_Shape GEOMImpl_Block6Explorer::GetEdge (const Standard_Integer theEdgeID, - const Standard_Boolean doMake) -{ - TopoDS_Shape aNullShape; - if (theEdgeID < 1 || theEdgeID > NBEDGES) return aNullShape; - if (myEdges(theEdgeID).IsNull() && doMake) { - // Create the required edge as a linear segment between - // corresponding vertices and put it in the Block's edges - BRepBuilderAPI_MakeEdge ME (TopoDS::Vertex(myVertices(vertex_id_edge(theEdgeID, 1))), - TopoDS::Vertex(myVertices(vertex_id_edge(theEdgeID, 2)))); - if (!ME.IsDone()) { - Standard_ConstructionError::Raise("Edge construction failed"); - } - myEdges(theEdgeID) = ME.Shape(); - } - - return myEdges(theEdgeID); -} - -//======================================================================= -//function : GetEdgeID -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_Block6Explorer::GetEdgeID (const TopoDS_Shape& theEdge) -{ - for (Standard_Integer id = 1; id <= NBEDGES; id++) { - if (theEdge.IsSame(myEdges(id))) return id; - } - Standard_NoSuchObject::Raise("The Edge does not belong to the Block"); - return 0; -} - -//======================================================================= -//function : GetEdgeID -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_Block6Explorer::GetEdgeID (const Standard_Integer theFaceID, - const Standard_Integer theEdgeNB) -{ - return edge_id(theFaceID, theEdgeNB); -} - -//======================================================================= -//function : FindEdgeID -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_Block6Explorer::FindEdgeID (const Standard_Integer theVertex1ID, - const Standard_Integer theVertex2ID) -{ - return edge_id_vertices(theVertex1ID, theVertex2ID); -} - -//======================================================================= -//function : FindCommonEdgeID -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_Block6Explorer::FindCommonEdgeID - (const Standard_Integer theFace1ID, - const Standard_Integer theFace2ID) -{ - return edge_id_faces(theFace1ID, theFace2ID); -} - -//======================================================================= -//function : GetFace -//purpose : -//======================================================================= -TopoDS_Shape GEOMImpl_Block6Explorer::GetFace (const Standard_Integer theFaceID, - const Standard_Boolean doMake) -{ - TopoDS_Shape aNullShape; - if (theFaceID < 1 || theFaceID > NBFACES) return aNullShape; - - if (myFaces(theFaceID).IsNull() && doMake) { - - // Create the required face between - // corresponding edges and put it in the Block's faces - - TopoDS_Shape E1 = GetEdge(edge_id(theFaceID, 1), doMake); - TopoDS_Shape E2 = GetEdge(edge_id(theFaceID, 2), doMake); - TopoDS_Shape E3 = GetEdge(edge_id(theFaceID, 3), doMake); - TopoDS_Shape E4 = GetEdge(edge_id(theFaceID, 4), doMake); - - BRepBuilderAPI_MakeWire MW (TopoDS::Edge(E1), - TopoDS::Edge(E2), - TopoDS::Edge(E3), - TopoDS::Edge(E4)); - if (!MW.IsDone()) { - Standard_ConstructionError::Raise("Wire construction failed"); - } - TopoDS_Shape aFace; - MakeFace(MW, Standard_False, aFace); - if (aFace.IsNull()) { - Standard_ConstructionError::Raise("Face construction failed"); - } - myFaces(theFaceID) = aFace; - } - - return myFaces(theFaceID); -} - -//======================================================================= -//function : GetFaceID -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_Block6Explorer::GetFaceID (const TopoDS_Shape& theFace) -{ - for (Standard_Integer id = 1; id <= NBFACES; id++) { - if (theFace.IsSame(myFaces(id))) return id; - } - Standard_NoSuchObject::Raise("The Face does not belong to the Block"); - return 0; -} - -//======================================================================= -//function : FindFaceID -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_Block6Explorer::FindFaceID (const Standard_Integer theEdge1ID, - const Standard_Integer theEdge2ID) -{ - return face_id_edges(theEdge1ID, theEdge2ID); -} - -//======================================================================= -//function : GetOppositeFaceID -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_Block6Explorer::GetOppositeFaceID (const Standard_Integer theFaceID) -{ - Standard_Integer opp_face_id[NBFACES + 1] = { - 0, - 2, // to 1 face - 1, // to 2 face - 4, // to 3 face - 3, // to 4 face - 6, // to 5 face - 5}; // to 6 face - - return opp_face_id[theFaceID]; -} - -//======================================================================= -//function : IsSimilarFaces -//purpose : -//======================================================================= -Standard_Boolean GEOMImpl_Block6Explorer::IsSimilarFaces (const Standard_Integer theFace1ID, - const Standard_Integer theFace2ID, - const gp_Trsf theTransformation) -{ - Standard_Integer common_edge_id = FindCommonEdgeID(theFace1ID, theFace2ID); - - if (common_edge_id == 0) { // opposite faces - for (Standard_Integer id = 1; id <= 4; id++) { - TopoDS_Shape E1 = GetEdge(edge_id(theFace1ID, id)); - TopoDS_Shape E2 = GetEdge(edge_id(theFace2ID, id)); - - BRepBuilderAPI_Transform aTrsf (E1, theTransformation, Standard_False); - if (!IsSimilarEdges(aTrsf.Shape(), E2)) - return Standard_False; - } - } else { // the faces have common edge - TopTools_Array1OfShape aVerts1 (1,4); - TopTools_Array1OfShape aVerts2 (1,4); - - Standard_Integer common_vertex1 = GetVertexOnEdgeID(common_edge_id, 1); - Standard_Integer common_vertex2 = GetVertexOnEdgeID(common_edge_id, 2); - aVerts1(1) = myVertices(common_vertex1); - aVerts1(2) = myVertices(common_vertex2); - aVerts2(1) = myVertices(common_vertex1); - aVerts2(2) = myVertices(common_vertex2); - - Standard_Integer not_common_v11 = 0, not_common_v12 = 0; - Standard_Integer vnb, vid; - for (vnb = 1; vnb <= 4; vnb++) { - vid = GetVertexID(theFace1ID, vnb); - if (vid != common_vertex1 && FindEdgeID(vid, common_vertex1) == 0) { - not_common_v12 = vid; - } else { - if (vid != common_vertex2 && FindEdgeID(vid, common_vertex2) == 0) { - not_common_v11 = vid; - } - } - } - - Standard_Integer not_common_v21 = 0, not_common_v22 = 0; - for (vnb = 1; vnb <= 4; vnb++) { - vid = GetVertexID(theFace2ID, vnb); - if (vid != common_vertex1 && FindEdgeID(vid, common_vertex1) == 0) { - not_common_v22 = vid; - } else { - if (vid != common_vertex2 && FindEdgeID(vid, common_vertex2) == 0) { - not_common_v21 = vid; - } - } - } - aVerts1(3) = myVertices(not_common_v11); - aVerts1(4) = myVertices(not_common_v12); - aVerts2(3) = myVertices(not_common_v21); - aVerts2(4) = myVertices(not_common_v22); - - for (Standard_Integer id = 1; id <= 4; id++) { - BRepBuilderAPI_Transform aTrsf (aVerts1(id), theTransformation, Standard_False); - TopoDS_Vertex V1 = TopoDS::Vertex(aTrsf.Shape()); - TopoDS_Vertex V2 = TopoDS::Vertex(aVerts2(id)); - if (!BRepTools::Compare(V1, V2)) { - return Standard_False; - } - } - } - - return Standard_True; -} - -//============ Initialization methods =================================== - -//======================================================================= -//function : InitByBlock -//purpose : -//======================================================================= -void GEOMImpl_Block6Explorer::InitByBlock (const TopoDS_Shape& theBlock) -{ - // 1. Find any one face of the block - TopExp_Explorer faces (theBlock, TopAbs_FACE); - if (!faces.More()) { - Standard_ConstructionError::Raise("The block has no faces"); - } - TopoDS_Shape aFirstFace = faces.Current(); - - // 2. Store all elements of the block relatively aFirstFace - InitByBlockAndFace(theBlock, aFirstFace); -} - -//======================================================================= -//function : InitByBlockAndFace -//purpose : -//======================================================================= -void GEOMImpl_Block6Explorer::InitByBlockAndFace (const TopoDS_Shape& theBlock, - const TopoDS_Shape& theFace) -{ - myFaces(1) = theFace; - - // 2. Get wire of the first face - TopExp_Explorer wires (myFaces(1), TopAbs_WIRE); - if (!wires.More()) { - Standard_ConstructionError::Raise("A face of the block has no wires"); - } - TopoDS_Shape aWire = wires.Current(); - wires.Next(); - if (wires.More()) { - Standard_ConstructionError::Raise("A face of the block has more than one wires"); - } - - // 3. Explore wire to init edges and vertices of the first face - BRepTools_WireExplorer aWE (TopoDS::Wire(aWire), TopoDS::Face(myFaces(1))); - Standard_Integer nb = 1; - for (; aWE.More(); aWE.Next(), nb++) { - if (nb > 4) { - Standard_ConstructionError::Raise("A face of the block has more than four edges"); - } - myEdges(edge_id(1, nb)) = aWE.Current(); - myVertices(vertex_id(1, nb)) = aWE.CurrentVertex(); - } - if (nb < 5) { - Standard_ConstructionError::Raise("A face of the block has less than four edges"); - } - - // 2. Store all other elements of the block - InitByBlockAndVertices (theBlock, - myVertices(vertex_id(1,1)), - myVertices(vertex_id(1,2)), - myVertices(vertex_id(1,3))); -} - -//======================================================================= -//function : InitByBlockAndEdges -//purpose : -//======================================================================= -void GEOMImpl_Block6Explorer::InitByBlockAndEdges (const TopoDS_Shape& theBlock, - const TopoDS_Shape& theEdge1, - const TopoDS_Shape& theEdge3) -{ - // 1. Store vertices and edges of the first face - - // 1.1. Store two given edges - myEdges(edge_id(1, 1)) = theEdge1; - myEdges(edge_id(1, 3)) = theEdge3; - - // 1.2. Find and store the first face - TopTools_IndexedDataMapOfShapeListOfShape MEF; - MapShapesAndAncestors(theBlock, TopAbs_EDGE, TopAbs_FACE, MEF); - if (MEF.Extent() != NBEDGES) { - Standard_TypeMismatch::Raise("Block has wrong number of edges"); - } - const TopTools_ListOfShape& aFacesOfE1 = MEF.FindFromKey(theEdge1); - const TopTools_ListOfShape& aFacesOfE3 = MEF.FindFromKey(theEdge3); - - Standard_Boolean isFound = Standard_False; - TopTools_ListIteratorOfListOfShape anIterF1 (aFacesOfE1); - for (; anIterF1.More() && !isFound; anIterF1.Next()) { - - TopTools_ListIteratorOfListOfShape anIterF3 (aFacesOfE3); - for (; anIterF3.More() && !isFound; anIterF3.Next()) { - - if (anIterF1.Value().IsSame(anIterF3.Value())) { - isFound = Standard_True; - - // Store the face, defined by two opposite edges - myFaces(1) = anIterF1.Value(); - } - } - } - if (!isFound) { - Standard_ConstructionError::Raise - ("Edges 1 and 2 do not belong to one face of the block"); - } - - // 1.3. Make vertices of the first edge the first and the - // second vertices of the first face. Order is free. - TopoDS_Edge E = TopoDS::Edge(theEdge1); - TopoDS_Vertex V1, V2; - TopExp::Vertices(E, V1, V2, Standard_True); - myVertices(vertex_id(1,1)) = V1; - myVertices(vertex_id(1,2)) = V2; - - // Init maps vertex->list_of_edges for the face - TopTools_IndexedDataMapOfShapeListOfShape M1; - MapShapesAndAncestors(myFaces(1), TopAbs_VERTEX, TopAbs_EDGE, M1); - if (M1.Extent() != 4) { - Standard_TypeMismatch::Raise("The first face of block has wrong number of vertices"); - } - - // 1.4. Find and store others elements of the first face - - // edges of the first vertex - TopoDS_Shape E1_f = M1.FindFromKey(V1).First(); - TopoDS_Shape E1_l = M1.FindFromKey(V1).Last(); - - if (E1_f.IsSame(theEdge1)) { - myEdges(edge_id(1, 4)) = E1_l; - } else { - myEdges(edge_id(1, 4)) = E1_f; - } - - // fourth vertex - TopoDS_Edge E4 = TopoDS::Edge(myEdges(edge_id(1, 4))); - TopoDS_Vertex V41, V42; - TopExp::Vertices(E4, V41, V42, Standard_True); - if (V41.IsSame(V1)) { - myVertices(vertex_id(1,4)) = V42; - } else { - myVertices(vertex_id(1,4)) = V41; - } - - // edges of the second vertex - TopoDS_Shape E2_f = M1.FindFromKey(V2).First(); - TopoDS_Shape E2_l = M1.FindFromKey(V2).Last(); - - if (E2_f.IsSame(theEdge1)) { - myEdges(edge_id(1, 2)) = E2_l; - } else { - myEdges(edge_id(1, 2)) = E2_f; - } - - // fird vertex - TopoDS_Edge E2 = TopoDS::Edge(myEdges(edge_id(1, 2))); - TopoDS_Vertex V21, V22; - TopExp::Vertices(E2, V21, V22, Standard_True); - if (V21.IsSame(V2)) { - myVertices(vertex_id(1,3)) = V22; - } else { - myVertices(vertex_id(1,3)) = V21; - } - - // 2. Store all other elements of the block - InitByBlockAndVertices (theBlock, - myVertices(vertex_id(1,1)), - myVertices(vertex_id(1,2)), - myVertices(vertex_id(1,3))); -} - -//======================================================================= -//function : InitByBlockAndVertices -//purpose : -//======================================================================= -void GEOMImpl_Block6Explorer::InitByBlockAndVertices (const TopoDS_Shape& theBlock, - const TopoDS_Shape& theVertex1, - const TopoDS_Shape& theVertex2, - const TopoDS_Shape& theVertex3) -{ - // Here we suppose, that vertices are ordered, i.e. exists edge between - // theVertex1 and theVertex2 and edge between theVertex2 and theVertex3 - - // 1. Store vertices and edges of the first face. - // If the first face is initialized, it means, that this - // method is called from another initialization method, and all - // vertices and edges of the first face are also initialized - if (myFaces(1).IsNull()) { - - // 1.1. Store first three vertices - myVertices(vertex_id(1, 1)) = theVertex1; - myVertices(vertex_id(1, 2)) = theVertex2; - myVertices(vertex_id(1, 3)) = theVertex3; - - // 1.2. Find and store the first face - TopTools_IndexedDataMapOfShapeListOfShape MVF; - MapShapesAndAncestors(theBlock, TopAbs_VERTEX, TopAbs_FACE, MVF); - if (MVF.Extent() != NBVERTS) { - Standard_TypeMismatch::Raise("Block has wrong number of vertices"); - } - const TopTools_ListOfShape& aFacesOfV1 = MVF.FindFromKey(theVertex1); - const TopTools_ListOfShape& aFacesOfV3 = MVF.FindFromKey(theVertex3); - - Standard_Boolean isFound = Standard_False; - TopTools_ListIteratorOfListOfShape anIterF1 (aFacesOfV1); - for (; anIterF1.More() && !isFound; anIterF1.Next()) { - - TopTools_ListIteratorOfListOfShape anIterF3 (aFacesOfV3); - for (; anIterF3.More() && !isFound; anIterF3.Next()) { - - if (anIterF1.Value().IsSame(anIterF3.Value())) { - isFound = Standard_True; - - // Store the face, defined by two opposite vertices - myFaces(1) = anIterF1.Value(); - } - } - } - if (!isFound) { - Standard_ConstructionError::Raise - ("Vertices 1 and 3 do not belong to one face of the block"); - } - - // Init maps vertex->list_of_edges for the face - TopTools_IndexedDataMapOfShapeListOfShape M1; - MapShapesAndAncestors(myFaces(1), TopAbs_VERTEX, TopAbs_EDGE, M1); - if (M1.Extent() != 4) { - Standard_TypeMismatch::Raise("The first face of block has wrong number of vertices"); - } - - // 1.3. Find and store edges and last vertex of the first face - const TopTools_ListOfShape& anEdgesOfV1 = M1.FindFromKey(theVertex1); - const TopTools_ListOfShape& anEdgesOfV2 = M1.FindFromKey(theVertex2); - const TopTools_ListOfShape& anEdgesOfV3 = M1.FindFromKey(theVertex3); - - TopTools_ListIteratorOfListOfShape anIterE2 (anEdgesOfV2); - for (; anIterE2.More(); anIterE2.Next()) { - - TopTools_ListIteratorOfListOfShape anIterE1 (anEdgesOfV1); - for (; anIterE1.More(); anIterE1.Next()) { - - if (anIterE1.Value().IsSame(anIterE2.Value())) { - // Store the first edge, defined by two vertices - myEdges(edge_id(1,1)) = anIterE1.Value(); - - } else { - // Store the last edge - myEdges(edge_id(1,4)) = anIterE1.Value(); - - // Find and store the last vertex - TopoDS_Edge E = TopoDS::Edge(myEdges(4)); - TopoDS_Vertex V1, V2; - TopExp::Vertices(E, V1, V2, Standard_True); - - if (V1.IsSame(theVertex1)) { - myVertices(vertex_id(1,4)) = V2; - } else { - myVertices(vertex_id(1,4)) = V1; - } - } - } - - TopTools_ListIteratorOfListOfShape anIterE3 (anEdgesOfV3); - for (; anIterE3.More(); anIterE3.Next()) { - - if (anIterE3.Value().IsSame(anIterE2.Value())) { - // Store the second edge, defined by two vertices - myEdges(edge_id(1,2)) = anIterE3.Value(); - - } else { - // Store the fird edge - myEdges(edge_id(1,3)) = anIterE3.Value(); - } - } - } - } - - // Init map vertex->list_of_edges for the block - TopTools_IndexedDataMapOfShapeListOfShape MB; - MapShapesAndAncestors(theBlock, TopAbs_VERTEX, TopAbs_EDGE, MB); - if (MB.Extent() != NBVERTS) { - Standard_TypeMismatch::Raise("Block has wrong number of vertices"); - } - - // 2. Store edges, linking the first face with the second one - // and vertices of the second face - TopTools_IndexedMapOfShape aFaceEdges; - TopExp::MapShapes(myFaces(1), TopAbs_EDGE, aFaceEdges); - - Standard_Integer i = 1; - for (; i <= 4; i++) { - // Get i-th vertex of the face 1 - TopoDS_Shape Vi = myVertices(vertex_id(1, i)); - if (!MB.Contains(Vi)) { - Standard_ConstructionError::Raise("Face does not belong to the block"); - } - - // Get list of block's edges, sharing this Vertex - const TopTools_ListOfShape& anEdgesOfVi = MB.FindFromKey(Vi); - TopTools_ListIteratorOfListOfShape anEdgesIter (anEdgesOfVi); - - // Get Edge (from the List), not belonging to the face 1 - Standard_Boolean isFound = Standard_False; - for (; anEdgesIter.More() && !isFound; anEdgesIter.Next()) { - if (!aFaceEdges.Contains(anEdgesIter.Value())) { - isFound = Standard_True; - - // Store the linking edge - TopoDS_Shape aLinkEdge = anEdgesIter.Value(); - myEdges(side_edge_id(i)) = aLinkEdge; - - // Get another vertex of the linking edge - TopoDS_Edge E = TopoDS::Edge(aLinkEdge); - TopoDS_Vertex V1, V2; - TopExp::Vertices(E, V1, V2, Standard_True); - - // Store the i-th vertex of the second (opposite to the first) face - if (V1.IsSame(Vi)) { - myVertices(vertex_id(2, i)) = V2; - } else { - myVertices(vertex_id(2, i)) = V1; - } - } - } - } - - // 3. Store edges of the second (opposite to the first) face - for (i = 1; i <= 4; i++) { - // Get i-th and (i+1)-th vertices of the face 2 - TopoDS_Shape Vi = myVertices(vertex_id(2, i)); - TopoDS_Shape Vj = myVertices(vertex_id(2, mod4(i + 1))); - - // Get list of block's edges, sharing Vi - const TopTools_ListOfShape& anEdgesOfVi = MB.FindFromKey(Vi); - // Get list of block's edges, sharing Vj - const TopTools_ListOfShape& anEdgesOfVj = MB.FindFromKey(Vj); - - // Get Edge (from the List), linking this vertex with the next one - Standard_Boolean isFound = Standard_False; - TopTools_ListIteratorOfListOfShape anEdgesIteri (anEdgesOfVi); - for (; anEdgesIteri.More() && !isFound; anEdgesIteri.Next()) { - - TopTools_ListIteratorOfListOfShape anEdgesIterj (anEdgesOfVj); - for (; anEdgesIterj.More() && !isFound; anEdgesIterj.Next()) { - - if (anEdgesIteri.Value().IsSame(anEdgesIterj.Value())) { - isFound = Standard_True; - - // Store the linking edge - myEdges(edge_id(2, i)) = anEdgesIteri.Value(); - } - } - } - } - - // 4. Store faces of the block - TopTools_IndexedDataMapOfShapeListOfShape MBE; - MapShapesAndAncestors(theBlock, TopAbs_EDGE, TopAbs_FACE, MBE); - if (MBE.Extent() != NBEDGES) { - Standard_TypeMismatch::Raise("Block has wrong number of edges"); - } - - for (i = 2; i <= NBFACES; i++) { - TopoDS_Shape Ei1 = myEdges(edge_id(i, 1)); - TopoDS_Shape Ei2 = myEdges(edge_id(i, 2)); - const TopTools_ListOfShape& aFacesOfEi1 = MBE.FindFromKey(Ei1); - const TopTools_ListOfShape& aFacesOfEi2 = MBE.FindFromKey(Ei2); - - Standard_Boolean isFound = Standard_False; - TopTools_ListIteratorOfListOfShape anIterEi1 (aFacesOfEi1); - for (; anIterEi1.More() && !isFound; anIterEi1.Next()) { - - TopTools_ListIteratorOfListOfShape anIterEi2 (aFacesOfEi2); - for (; anIterEi2.More() && !isFound; anIterEi2.Next()) { - - if (anIterEi1.Value().IsSame(anIterEi2.Value())) { - isFound = Standard_True; - - // Store the face, defined by two edges - myFaces(i) = anIterEi1.Value(); - } - } - } - } -} - -//======================================================================= -//function : InitByTwoFaces -//purpose : -//======================================================================= -void GEOMImpl_Block6Explorer::InitByTwoFaces (const TopoDS_Shape& theFace1, - const TopoDS_Shape& theFace2) -{ - if (theFace1.IsSame(theFace2)) { - Standard_ConstructionError::Raise("The faces must be different"); - } - - // Add two given faces in the structure - myFaces(1) = theFace1; - myFaces(2) = theFace2; - - // Step 1. Order vertices (and edges) - - // 1.1. Ordered vertices and edges of the first face we put in - - // Get wire of the first face - TopExp_Explorer wires1 (myFaces(1), TopAbs_WIRE); - if (!wires1.More()) { - Standard_ConstructionError::Raise("A face for the block has no wires"); - } - TopoDS_Shape aWire1 = wires1.Current(); - wires1.Next(); - if (wires1.More()) { - Standard_ConstructionError::Raise("A face for the block has more than one wire"); - } - - BRepTools_WireExplorer aWE1 (TopoDS::Wire(aWire1), TopoDS::Face(myFaces(1))); - Standard_Integer nb; - for (nb = 1; aWE1.More(); aWE1.Next(), nb++) { - if (nb > 4) { - Standard_ConstructionError::Raise("A face for the block has more than four edges"); - } - myEdges(edge_id(1, nb)) = aWE1.Current(); - myVertices(vertex_id(1, nb)) = aWE1.CurrentVertex(); - } - if (nb < 5) { - Standard_ConstructionError::Raise("A face for the block has less than four edges"); - } - - // 1.2. Ordered vertices and edges of the second face we temporarily store - // in arrays, to find for them rigth location in on the Step 2. - - // declare arrays - TopTools_Array1OfShape aVertis2(1,4); // ordered vertices of the second face - TopTools_Array1OfShape anEdges2(1,4); // anEdges2(i) links aVertis2(i) and aVertis2(i+1) - - // Get wire of the second face - TopExp_Explorer wires2 (myFaces(2), TopAbs_WIRE); - if (!wires2.More()) { - Standard_ConstructionError::Raise("A face for the block has no wires"); - } - TopoDS_Shape aWire2 = wires2.Current(); - wires2.Next(); - if (wires2.More()) { - Standard_ConstructionError::Raise("A face for the block has more than one wire"); - } - - BRepTools_WireExplorer aWE2 (TopoDS::Wire(aWire2), TopoDS::Face(myFaces(2))); - for (nb = 1; aWE2.More(); aWE2.Next(), nb++) { - if (nb > 4) { - Standard_ConstructionError::Raise("A face for the block has more than four edges"); - } - anEdges2(nb) = aWE2.Current(); - aVertis2(nb) = aWE2.CurrentVertex(); - } - if (nb < 5) { - Standard_ConstructionError::Raise("A face for the block has less than four edges"); - } - - // Step 2. Find right place in for the , - // so as to minimize common length of linking edges - // between face 1 and face 2. - // Each linking edge (of four) will link vertices of the - // faces 1 and 2 with equal local numbers. - // The right place is defined by: - // - vertex , which will become the first vertex - // of the second face - // - orientation of relatively their future location - // in (s_min = 1 if direct, s_min = -1 if reversed) - Standard_Integer i_min = 0, s_min = 0; - - TColgp_Array1OfPnt aPnts1 (1,4); // points of the first face - aPnts1(1) = BRep_Tool::Pnt(TopoDS::Vertex(myVertices(vertex_id(1, 1)))); - aPnts1(2) = BRep_Tool::Pnt(TopoDS::Vertex(myVertices(vertex_id(1, 2)))); - aPnts1(3) = BRep_Tool::Pnt(TopoDS::Vertex(myVertices(vertex_id(1, 3)))); - aPnts1(4) = BRep_Tool::Pnt(TopoDS::Vertex(myVertices(vertex_id(1, 4)))); - - TColgp_Array1OfPnt aPnts2 (1,4); // points of the second face - aPnts2(1) = BRep_Tool::Pnt(TopoDS::Vertex(aVertis2(1))); - aPnts2(2) = BRep_Tool::Pnt(TopoDS::Vertex(aVertis2(2))); - aPnts2(3) = BRep_Tool::Pnt(TopoDS::Vertex(aVertis2(3))); - aPnts2(4) = BRep_Tool::Pnt(TopoDS::Vertex(aVertis2(4))); - - Standard_Real Dist_min = RealLast(); - // try all possible locations to find the best (with minimum sum distance) - Standard_Integer i = 1; - for (; i <= 4; i++) { - // try direct orientation - Standard_Real Dist_plus = aPnts1(1).Distance(aPnts2(i)) + - aPnts1(2).Distance(aPnts2(mod4(i + 1))) + - aPnts1(3).Distance(aPnts2(mod4(i + 2))) + - aPnts1(4).Distance(aPnts2(mod4(i + 3))); - if (Dist_plus < Dist_min) { - Dist_min = Dist_plus; - i_min = i; - s_min = 1; - } - - // try reversed orientation - Standard_Real Dist_minus = aPnts1(1).Distance(aPnts2(i)) + - aPnts1(2).Distance(aPnts2(mod4(i - 1))) + - aPnts1(3).Distance(aPnts2(mod4(i - 2))) + - aPnts1(4).Distance(aPnts2(mod4(i - 3))); - if (Dist_minus < Dist_min) { - Dist_min = Dist_minus; - i_min = i; - s_min = - 1; - } - } - - // 3. Put vertices and edges of the second face to they - // permanent location in and - for (i = 1; i <= 4; i++) { - Standard_Integer nb = mod4(i_min + s_min*(i - 1)); - - if (aPnts1(i).Distance(aPnts2(nb)) < Precision::Confusion()) { - Standard_ConstructionError::Raise("The faces are too close"); - } - - myVertices(vertex_id(2, i)) = aVertis2(nb); - - if (s_min == -1) nb = mod4(nb - 1); - myEdges(edge_id(2, i)) = anEdges2(nb); - } - - // 4. Generate side surface - if (!aWire1.Closed() || !aWire2.Closed()) { - // BRepOffsetAPI_ThruSections is not applicable on not closed wires - GetFace(3, Standard_True); - GetFace(4, Standard_True); - GetFace(5, Standard_True); - GetFace(6, Standard_True); - } else { - // try to build faces on native surfaces of edges or planar - Standard_Boolean tryThru = Standard_False; - for (Standard_Integer i = 3; i <= 6 && !tryThru; i++) { - Standard_Boolean doMake = Standard_True; - TopoDS_Shape E1 = GetEdge(edge_id(i, 1), doMake); - TopoDS_Shape E2 = GetEdge(edge_id(i, 2), doMake); - TopoDS_Shape E3 = GetEdge(edge_id(i, 3), doMake); - TopoDS_Shape E4 = GetEdge(edge_id(i, 4), doMake); - - BRepBuilderAPI_MakeWire MW (TopoDS::Edge(E1), - TopoDS::Edge(E2), - TopoDS::Edge(E3), - TopoDS::Edge(E4)); - if (!MW.IsDone()) { - Standard_ConstructionError::Raise("Wire construction failed"); - } - - BRepBuilderAPI_MakeFace MF (MW, Standard_False); - if (MF.IsDone()) { - myFaces(i) = MF.Shape(); - } else { - tryThru = Standard_True; - } - } - - // Build side surface by ThruSections algorithm - if (tryThru) { - BRepOffsetAPI_ThruSections THS; - THS.AddWire(TopoDS::Wire(aWire1)); - THS.AddWire(TopoDS::Wire(aWire2)); - THS.Build(); - if (!THS.IsDone()) { - StdFail_NotDone::Raise("Side surface generation failed"); - } - for (Standard_Integer i = 1; i <= 4; i++) { - // fill face - myFaces(i+2) = THS.GeneratedFace(myEdges(i)); - - // fill edge - Standard_Integer ee = side_edge_id(i); - TopTools_IndexedDataMapOfShapeListOfShape MVE; - MapShapesAndAncestors(myFaces(i+2), TopAbs_VERTEX, TopAbs_EDGE, MVE); - FindEdge(myEdges(ee), - myVertices(vertex_id_edge(ee, 1)), - myVertices(vertex_id_edge(ee, 2)), - MVE); - } - } - } -} - -//======================================================================= -//function : MapShapesAndAncestors -//purpose : -//======================================================================= -void GEOMImpl_Block6Explorer::MapShapesAndAncestors (const TopoDS_Shape& S, - const TopAbs_ShapeEnum TS, - const TopAbs_ShapeEnum TA, - TopTools_IndexedDataMapOfShapeListOfShape& M) -{ - TopTools_ListOfShape empty; - TopTools_MapOfShape mapA; - - // visit ancestors - TopExp_Explorer exa (S,TA); - for (; exa.More(); exa.Next()) { - // visit shapes - const TopoDS_Shape& anc = exa.Current(); - if (mapA.Add(anc)) { - TopExp_Explorer exs (anc,TS); - TopTools_MapOfShape mapS; - for (; exs.More(); exs.Next()) { - if (mapS.Add(exs.Current())) { - Standard_Integer index = M.FindIndex(exs.Current()); - if (index == 0) index = M.Add(exs.Current(),empty); - M(index).Append(anc); - } - } - } - } - - // visit shapes not under ancestors - TopExp_Explorer ex (S,TS,TA); - for (; ex.More(); ex.Next()) { - Standard_Integer index = M.FindIndex(ex.Current()); - if (index == 0) index = M.Add(ex.Current(),empty); - } -} - -//======================================================================= -//function : IsSimilarEdges -//purpose : -//======================================================================= -Standard_Boolean GEOMImpl_Block6Explorer::IsSimilarEdges (const TopoDS_Shape& E1, - const TopoDS_Shape& E2) -{ - TopoDS_Edge E1e = TopoDS::Edge(E1); - TopoDS_Edge E2e = TopoDS::Edge(E2); - TopoDS_Vertex V11, V12, V21, V22; - TopExp::Vertices(E1e, V11, V12, Standard_True); - TopExp::Vertices(E2e, V21, V22, Standard_True); - if (BRepTools::Compare(V11, V21) && BRepTools::Compare(V12, V22)) - return Standard_True; - if (BRepTools::Compare(V11, V22) && BRepTools::Compare(V12, V21)) - return Standard_True; - - return Standard_False; -} - -//======================================================================= -//function : FindEdge -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_Block6Explorer::FindEdge - (TopoDS_Shape& theResult, - const TopoDS_Shape& V1, - const TopoDS_Shape& V2, - const TopTools_IndexedDataMapOfShapeListOfShape& MVE, - const Standard_Boolean findAll) -{ - Standard_Integer isFound = 0; - - const TopTools_ListOfShape& anEdgesOfV1 = MVE.FindFromKey(V1); - const TopTools_ListOfShape& anEdgesOfV2 = MVE.FindFromKey(V2); - - TopTools_ListIteratorOfListOfShape it1 (anEdgesOfV1); - for (; it1.More(); it1.Next()) { - TopTools_ListIteratorOfListOfShape it2 (anEdgesOfV2); - for (; it2.More(); it2.Next()) { - if (it1.Value().IsSame(it2.Value())) { - isFound++; - theResult = it1.Value(); - if (!findAll) return isFound; - } - } - } - - return isFound; -} - -//======================================================================= -//function : FindFace -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_Block6Explorer::FindFace - (TopoDS_Shape& theResult, - const TopoDS_Shape& V1, - const TopoDS_Shape& V2, - const TopoDS_Shape& V3, - const TopoDS_Shape& V4, - const TopTools_IndexedDataMapOfShapeListOfShape& MVF, - const Standard_Boolean findAll) -{ - Standard_Integer isFound = Standard_False; - - const TopTools_ListOfShape& aFacesOfV1 = MVF.FindFromKey(V1); - const TopTools_ListOfShape& aFacesOfV2 = MVF.FindFromKey(V2); - const TopTools_ListOfShape& aFacesOfV3 = MVF.FindFromKey(V3); - const TopTools_ListOfShape& aFacesOfV4 = MVF.FindFromKey(V4); - - TopTools_ListIteratorOfListOfShape it1 (aFacesOfV1); - for (; it1.More(); it1.Next()) { - TopTools_ListIteratorOfListOfShape it2 (aFacesOfV2); - for (; it2.More(); it2.Next()) { - if (it1.Value().IsSame(it2.Value())) { - TopTools_ListIteratorOfListOfShape it3 (aFacesOfV3); - for (; it3.More(); it3.Next()) { - if (it1.Value().IsSame(it3.Value())) { - TopTools_ListIteratorOfListOfShape it4 (aFacesOfV4); - for (; it4.More(); it4.Next()) { - if (it1.Value().IsSame(it4.Value())) { - isFound++; - theResult = it1.Value(); - if (!findAll) return isFound; - } - } - } - } - } - } - } - - return isFound; -} - -//======================================================================= -//function : MakeFace -//purpose : -//======================================================================= -void GEOMImpl_Block6Explorer::MakeFace (const TopoDS_Wire& theWire, - const Standard_Boolean isPlanarWanted, - TopoDS_Shape& theResult) -{ - // try to build face on plane or on any surface under the edges of the wire - BRepBuilderAPI_MakeFace MK (theWire, isPlanarWanted); - if (MK.IsDone()) { - theResult = MK.Shape(); - return; - } - - // try to construct filling surface - if (!isPlanarWanted) { - BRepOffsetAPI_MakeFilling MF; - - Standard_Integer nbEdges = 0; - BRepTools_WireExplorer aWE (theWire); - for (; aWE.More(); aWE.Next(), nbEdges++) { - MF.Add(TopoDS::Edge(aWE.Current()), GeomAbs_C0); - } - - MF.Build(); - if (MF.IsDone()) { - // Result of filling - TopoDS_Shape aFace = MF.Shape(); - - // Update tolerance - Standard_Real aTol = MF.G0Error(); - - TColgp_Array1OfPnt aPnts (1,nbEdges); // points of the given wire - BRepTools_WireExplorer aWE1 (theWire); - Standard_Integer vi = 1; - for (; aWE1.More() && vi <= nbEdges; aWE1.Next(), vi++) { - aPnts(vi) = BRep_Tool::Pnt(TopoDS::Vertex(aWE1.CurrentVertex())); - } - - // Find maximum deviation in vertices - TopExp_Explorer exp (aFace, TopAbs_VERTEX); - TopTools_MapOfShape mapShape; - for (; exp.More(); exp.Next()) { - if (mapShape.Add(exp.Current())) { - TopoDS_Vertex aV = TopoDS::Vertex(exp.Current()); - Standard_Real aTolV = BRep_Tool::Tolerance(aV); - gp_Pnt aP = BRep_Tool::Pnt(aV); - Standard_Real min_dist = aP.Distance(aPnts(1)); - for (vi = 2; vi <= nbEdges; vi++) { - min_dist = Min(min_dist, aP.Distance(aPnts(vi))); - } - aTol = Max(aTol, aTolV); - aTol = Max(aTol, min_dist); - } - } - - if ((*((Handle(BRep_TFace)*)&aFace.TShape()))->Tolerance() < aTol) { - (*((Handle(BRep_TFace)*)&aFace.TShape()))->Tolerance(aTol); - } - theResult = aFace; - } - } -} diff --git a/src/GEOMImpl/GEOMImpl_Block6Explorer.hxx b/src/GEOMImpl/GEOMImpl_Block6Explorer.hxx deleted file mode 100644 index d7d09c1bc..000000000 --- a/src/GEOMImpl/GEOMImpl_Block6Explorer.hxx +++ /dev/null @@ -1,207 +0,0 @@ -// File : GEOMImpl_Block6Explorer.hxx -// Module : GEOMImpl - -#ifndef GEOMImpl_Block6Explorer_HeaderFile -#define GEOMImpl_Block6Explorer_HeaderFile - -#include -#include -#include -#include -#include - - // Class GEOMImpl_Block6Explorer gives easy and fast access to a certain sub-elements of hexahedral solid - // Each face can be accessed by its global ID [1-6] - // Each edge can be accessed by its global ID [1-12] or by its local NB [1-4] inside certain face - // Each vertex can be accessed by its global ID [1-8] or by its local NB [1-4] inside certain face - // Numeration of the sub-shapes is defined in constructors, see they comments - // - // face 2 face 4 | 4 face 2 face | - // | / | \ | | - // \|/ |/_ | _\| \|/ | - // ' ' | ' ' | - // 8_______7__7 | 7__7_______8 | - // /| /| | |\ |\ | - // 8 12 6 11 | 11 6 12 8 | - // / | / | | | \ | \ | - // 5/______5__6/ | | | \6__5______\5 | - // face 5 ---> | | | | <--- 6 face | face 6 ---> | | | | <--- 5 face | - // | |__3__|____| | |____|__3__| | | - // | /4 | /3 | 3\ | 4\ | | - // | / | / | \ | \ | | - // 9 4 10 2 | 2 10 4 9 | - // |/__1______|/ | \|______1__\| | - // 1 2 | 2 1 | - // _. . | . ._ | - // /| /|\ | /|\ |\ | - // / | | | \ | - // 3 face 1 face | face 1 face 3 | - // | | - // Picture 1 (right orientation) | Picture 2 (left orientation) | - // | - // For the moment, the orientation of numbering is not controlled - - // Faces: 1 - bottom, 2 - top, 3 - front, 4 - back, 5 - left (right), 6 - right (left) - - // - // 4_______3__3 2 ______2__3 - // / / | | - // 4 2 1 3 - // / / | | - // 1/______1__2/ | | - // | | - // | __4______| - // face 2 face 4 1 4 - // | / - // \|/ |/_ - // ' ' - // 3 8_______7__7 3 - // /| /| /| /| - // 3 2 8 12 6 11 3 2 - // / | / | / | / | - // 4/ | 5/______5__6/ | 4/ | - // | | face 5 ---> | | | | <--- 6 face | | - // | | | |__3__|____| | | - // | /2 | /4 | /3 | /2 - // | / | / | / | / - // 4 1 9 4 10 2 4 1 - // |/ |/__1______|/ |/ - // 1 1 2 1 - // _. . - // /| /|\ - // / | - // 2 ______2__3 3 face 1 face - // | | - // | | __3_______ - // | | /4 /3 - // | | / / - // 1 3 4 2 - // | __4______| /__1______ / - // 1 4 1 2 - // - // Picture 3 (On periferal pictures the local - // numeration of edges and vertices is shown) - -class GEOMImpl_Block6Explorer -{ - public: - // ---------- PUBLIC METHODS ---------- - - GEOMImpl_Block6Explorer (); - // Constructor. - - // Initialization by existing solid, - // sub-elements regulate numeration - - void InitByBlock (const TopoDS_Shape& theBlock); - // Init by hexahedral solid. First face, edge and vertex is defined randomly - - void InitByBlockAndFace (const TopoDS_Shape& theBlock, - const TopoDS_Shape& theFace); - // Constructor from hexahedral solid, making theFace the first face. - // First edge and vertex is defined randomly from theFace entities - - void InitByBlockAndEdges (const TopoDS_Shape& theBlock, - const TopoDS_Shape& theEdge1, - const TopoDS_Shape& theEdge2); - // Init by hexahedral solid, making theEdge1 the first, theEdge2 the fird. - // First vertex is defined randomly from theEdge1 vertices - // (Picture 1 and Picture 2 shows two possible cases) - - void InitByBlockAndVertices (const TopoDS_Shape& theBlock, - const TopoDS_Shape& theVertex1, - const TopoDS_Shape& theVertex2, - const TopoDS_Shape& theVertex3); - // Init by hexahedral solid, making theVertex1 the first, - // theVertex2 the second and theVertex3 the fird vertices. - - // Initialization by parts of solid to be built - - void InitByTwoFaces (const TopoDS_Shape& theFace1, - const TopoDS_Shape& theFace2); - // Init by two faces. TheFace1 will be the first, - // theFace2 will be the second. - // First edge and vertex is defined randomly from theFace1 entities. - - // Access to vertices - TopoDS_Shape GetVertex (const Standard_Integer theVertexID); // [1-8] - - Standard_Integer GetVertexID (const TopoDS_Shape& theVertex); - - Standard_Integer GetVertexID (const Standard_Integer theFaceID, // [1-6] - const Standard_Integer theVertexNB); // [1-4] - - Standard_Integer GetVertexOnEdgeID (const Standard_Integer theEdgeID, // [1-12] - const Standard_Integer theVertexNB); // [1-2] - - // Access to edges - TopoDS_Shape GetEdge (const Standard_Integer theEdgeID, // [1-12] - const Standard_Boolean doMake = Standard_False); - - Standard_Integer GetEdgeID (const TopoDS_Shape& theEdge); - - Standard_Integer GetEdgeID (const Standard_Integer theFaceID, // [1-6] - const Standard_Integer theEdgeNB); // [1-4] - - Standard_Integer FindEdgeID (const Standard_Integer theVertex1ID, - const Standard_Integer theVertex2ID); - - Standard_Integer FindCommonEdgeID (const Standard_Integer theFace1ID, - const Standard_Integer theFace2ID); - - // Access to faces - TopoDS_Shape GetFace (const Standard_Integer theFaceID, // [1-6] - const Standard_Boolean doMake = Standard_False); - - Standard_Integer GetFaceID (const TopoDS_Shape& theFace); - - Standard_Integer FindFaceID (const Standard_Integer theEdge1ID, - const Standard_Integer theEdge2ID); - - Standard_Integer GetOppositeFaceID (const Standard_Integer theFaceID); - - // Check Block - Standard_Boolean IsSimilarFaces (const Standard_Integer theFace1ID, - const Standard_Integer theFace2ID, - const gp_Trsf theTransformation); - // returns true, if theFace1, transformed - // by theTransformation, coincides with theFace2 - public: - // ---------- STATIC PUBLIC METHODS ---------- - static void MapShapesAndAncestors (const TopoDS_Shape& S, - const TopAbs_ShapeEnum TS, - const TopAbs_ShapeEnum TA, - TopTools_IndexedDataMapOfShapeListOfShape& M); - - static Standard_Boolean IsSimilarEdges (const TopoDS_Shape& E1, - const TopoDS_Shape& E2); - - static Standard_Integer FindEdge (TopoDS_Shape& theResult, - const TopoDS_Shape& V1, - const TopoDS_Shape& V2, - const TopTools_IndexedDataMapOfShapeListOfShape& MVE, - const Standard_Boolean findAll = Standard_False); - // returns number of found edges - - static Standard_Integer FindFace (TopoDS_Shape& theResult, - const TopoDS_Shape& V1, - const TopoDS_Shape& V2, - const TopoDS_Shape& V3, - const TopoDS_Shape& V4, - const TopTools_IndexedDataMapOfShapeListOfShape& MVF, - const Standard_Boolean findAll = Standard_False); - // returns number of found faces - - static void MakeFace (const TopoDS_Wire& theWire, - const Standard_Boolean isPlanarWanted, - TopoDS_Shape& theResult); - - private: - // ---------- PRIVATE FIELDS ---------- - - TopTools_Array1OfShape myFaces; - TopTools_Array1OfShape myEdges; - TopTools_Array1OfShape myVertices; -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_BlockDriver.cxx b/src/GEOMImpl/GEOMImpl_BlockDriver.cxx deleted file mode 100644 index c6527f70e..000000000 --- a/src/GEOMImpl/GEOMImpl_BlockDriver.cxx +++ /dev/null @@ -1,986 +0,0 @@ - -#include - -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include -#include - -#include "utilities.h" - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_BlockDriver::GetID() -{ - static Standard_GUID aBlockDriver("FF1BBB67-5D14-4df2-980B-3A668264EA16"); - return aBlockDriver; -} - - -//======================================================================= -//function : GEOMImpl_BlockDriver -//purpose : -//======================================================================= -GEOMImpl_BlockDriver::GEOMImpl_BlockDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_BlockDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - Standard_Integer aType = aFunction->GetType(); - - TopoDS_Shape aShape; - BRep_Builder B; - - Standard_Real prec = Precision::Confusion(); - - Standard_Integer aNbSub = 0; - if (aType == BLOCK_COMPOUND_GLUE) { - - aNbSub = 1; - - } else if (aType == BLOCK_FACE_TWO_EDGES || - aType == BLOCK_TWO_FACES) { - - aNbSub = 2; - - } else if (aType == BLOCK_FACE_FOUR_PNT || - aType == BLOCK_FACE_FOUR_EDGES) { - - aNbSub = 4; - - } else if (aType == BLOCK_SIX_FACES) { - - aNbSub = 6; - - } else { - } - - if (aNbSub > 0) { - GEOMImpl_IBlocks aCI (aFunction); - Handle(TColStd_HSequenceOfTransient) aShapes = aCI.GetShapes(); - Standard_Integer nbshapes = aShapes->Length(); - - if (nbshapes != aNbSub) { - Standard_TypeMismatch::Raise - ("Number of elements for object construction does not correspond to the used constructor"); - } - - TopTools_Array1OfShape anArgs (1, aNbSub); - Standard_Integer argi; - for (argi = 1; argi <= aNbSub; argi++) { - Handle(GEOM_Function) aRef = Handle(GEOM_Function)::DownCast(aShapes->Value(argi)); - TopoDS_Shape anArg = aRef->GetValue(); - if (anArg.IsNull()) { - Standard_NullObject::Raise("Null shape is given as argument"); - } - anArgs(argi) = anArg; - } - - if (aType == BLOCK_FACE_FOUR_EDGES) { - - // Make face from four edges - if (anArgs(1).ShapeType() != TopAbs_EDGE || anArgs(2).ShapeType() != TopAbs_EDGE || - anArgs(3).ShapeType() != TopAbs_EDGE || anArgs(4).ShapeType() != TopAbs_EDGE) { - Standard_TypeMismatch::Raise("Shape for face construction is not an edge"); - } - - // count corner vertices - TopTools_MapOfShape aVertMap; - for (Standard_Integer ii = 1; ii <= 4; ii++) { - TopoDS_Edge anEdge = TopoDS::Edge(anArgs(ii)); - TopoDS_Vertex V1, V2; - TopExp::Vertices(anEdge, V1, V2, Standard_True); - if (V1.IsNull() || V2.IsNull()) { - Standard_NullObject::Raise("Bad edge for face construction: vertex is not defined"); - } - if (BRepTools::Compare(V1,V2)) { - Standard_ConstructionError::Raise("Edge ends are too close"); - } - Standard_Boolean isCoin1 = Standard_False, isCoin2 = Standard_False; - TopTools_MapIteratorOfMapOfShape anIter (aVertMap); - for (; anIter.More(); anIter.Next()) { - TopoDS_Vertex V = TopoDS::Vertex(anIter.Key()); - if (BRepTools::Compare(V,V1)) isCoin1 = Standard_True; - if (BRepTools::Compare(V,V2)) isCoin2 = Standard_True; - } - if (!isCoin1) aVertMap.Add(V1); - if (!isCoin2) aVertMap.Add(V2); - } - if (aVertMap.Extent() != 4) { - Standard_ConstructionError::Raise("The edges must form a closed wire"); - } - - TopoDS_Edge anEdge1 = TopoDS::Edge(anArgs(1)); - TopoDS_Edge anEdge2 = TopoDS::Edge(anArgs(2)); - TopoDS_Edge anEdge3 = TopoDS::Edge(anArgs(3)); - TopoDS_Edge anEdge4 = TopoDS::Edge(anArgs(4)); - - // check, if anEdge1 has common/coincident vertex with anEdge2, - Standard_Boolean isConnected12 = Standard_False; - TopoDS_Vertex V11, V12, V21, V22; - TopExp::Vertices(anEdge1, V11, V12, Standard_True); - TopExp::Vertices(anEdge2, V21, V22, Standard_True); - if (BRepTools::Compare(V11,V21) || BRepTools::Compare(V11,V22) || - BRepTools::Compare(V12,V21) || BRepTools::Compare(V12,V22)) { - // the edges have common vertex - isConnected12 = Standard_True; - } - - // build wire in right order, corresponding to edges connexity - BRepBuilderAPI_MakeWire* MW; - if (isConnected12) - MW = new BRepBuilderAPI_MakeWire(anEdge1, anEdge2, anEdge3, anEdge4); - else - MW = new BRepBuilderAPI_MakeWire(anEdge1, anEdge3, anEdge2, anEdge4); - - if (!MW->IsDone()) { - Standard_ConstructionError::Raise - ("Impossible to build a connected wire from the given edges"); - } - TopoDS_Wire aWire = *MW; - delete MW; - if (!aWire.Closed()) { - Standard_ConstructionError::Raise - ("Impossible to build a closed wire from the given edges"); - } - - // try to build face on the wire - GEOMImpl_Block6Explorer::MakeFace(aWire, Standard_False, aShape); - if (aShape.IsNull()) { - Standard_ConstructionError::Raise("Face construction failed"); - } - - } else if (aType == BLOCK_FACE_TWO_EDGES) { - - // Make face from two opposite edges - if (anArgs(1).ShapeType() != TopAbs_EDGE || - anArgs(2).ShapeType() != TopAbs_EDGE) { - Standard_TypeMismatch::Raise("Shape for face construction is not an edge"); - } - - TopoDS_Edge anEdge1 = TopoDS::Edge(anArgs(1)); - TopoDS_Edge anEdge2 = TopoDS::Edge(anArgs(2)); - - if (anEdge1.IsSame(anEdge2)) { - Standard_ConstructionError::Raise("The edges must be different"); - } - - // create two edges, linking ends of the given edges - TopoDS_Vertex V11, V12, V21, V22; - TopExp::Vertices(anEdge1, V11, V12, Standard_True); - TopExp::Vertices(anEdge2, V21, V22, Standard_True); - if (V11.IsNull() || V12.IsNull() || - V21.IsNull() || V22.IsNull()) { - Standard_NullObject::Raise("Bad edge for face construction: vertex is not defined"); - } - gp_Pnt P11 = BRep_Tool::Pnt(V11); - gp_Pnt P12 = BRep_Tool::Pnt(V12); - gp_Pnt P21 = BRep_Tool::Pnt(V21); - gp_Pnt P22 = BRep_Tool::Pnt(V22); - - if (P11.Distance(P21) < prec || P12.Distance(P22) < prec || - P11.Distance(P22) < prec || P12.Distance(P21) < prec) { - Standard_ConstructionError::Raise("Given edges have too close ends"); - } - - Standard_Real per11 = P11.Distance(P21) + P12.Distance(P22); - Standard_Real per12 = P11.Distance(P22) + P12.Distance(P21); - - TopoDS_Edge anEdge3; - TopoDS_Edge anEdge4; - if (per11 < per12) { - anEdge3 = BRepBuilderAPI_MakeEdge(V11, V21); - anEdge4 = BRepBuilderAPI_MakeEdge(V12, V22); - } else { - anEdge3 = BRepBuilderAPI_MakeEdge(V11, V22); - anEdge4 = BRepBuilderAPI_MakeEdge(V12, V21); - } - - // build a wire - BRepBuilderAPI_MakeWire MW (anEdge1, anEdge3, anEdge2, anEdge4); - if (!MW.IsDone()) { - Standard_ConstructionError::Raise("Wire construction failed"); - } - - // try to build face on the wire - GEOMImpl_Block6Explorer::MakeFace(MW, Standard_False, aShape); - if (aShape.IsNull()) { - Standard_ConstructionError::Raise("Face construction failed"); - } - - } else if (aType == BLOCK_FACE_FOUR_PNT) { - - // Make face from four corner vertices - if (anArgs(1).ShapeType() != TopAbs_VERTEX || - anArgs(2).ShapeType() != TopAbs_VERTEX || - anArgs(3).ShapeType() != TopAbs_VERTEX || - anArgs(4).ShapeType() != TopAbs_VERTEX) { - Standard_TypeMismatch::Raise("Shape for face construction is not a vertex"); - } - - TopoDS_Vertex V1 = TopoDS::Vertex(anArgs(1)); - TopoDS_Vertex V2 = TopoDS::Vertex(anArgs(2)); - TopoDS_Vertex V3 = TopoDS::Vertex(anArgs(3)); - TopoDS_Vertex V4 = TopoDS::Vertex(anArgs(4)); - - gp_Pnt P1 = BRep_Tool::Pnt(V1); - gp_Pnt P2 = BRep_Tool::Pnt(V2); - gp_Pnt P3 = BRep_Tool::Pnt(V3); - gp_Pnt P4 = BRep_Tool::Pnt(V4); - - if (P1.Distance(P2) < prec || P1.Distance(P3) < prec || - P1.Distance(P4) < prec || P2.Distance(P3) < prec || - P2.Distance(P4) < prec || P3.Distance(P4) < prec) { - Standard_ConstructionError::Raise("Four not coincident points must be given"); - } - - // calculate perimeters - Standard_Real per1234 = P1.Distance(P2) + P2.Distance(P3) + - P3.Distance(P4) + P4.Distance(P1); - Standard_Real per1243 = P1.Distance(P2) + P2.Distance(P4) + - P4.Distance(P3) + P3.Distance(P1); - Standard_Real per1324 = P1.Distance(P3) + P3.Distance(P2) + - P2.Distance(P4) + P4.Distance(P1); - - // order vertices - if (per1243 < per1234 && per1243 < per1324) { - TopoDS_Vertex Vtmp = V3; - V3 = V4; - V4 = Vtmp; - } else if (per1324 < per1234 && per1324 < per1243) { - TopoDS_Vertex Vtmp = V3; - V3 = V2; - V2 = Vtmp; - } else { - } - - // build wire - BRepBuilderAPI_MakePolygon aMkPoly (V1, V2, V3, V4, Standard_True); - if (!aMkPoly.IsDone()) { - Standard_ConstructionError::Raise("Polygon construction failed"); - } - - // try to build face on the wire - GEOMImpl_Block6Explorer::MakeFace(aMkPoly, Standard_False, aShape); - if (aShape.IsNull()) { - Standard_ConstructionError::Raise("Face construction failed"); - } - - } else if (aType == BLOCK_SIX_FACES || aType == BLOCK_TWO_FACES) { - - BRepTools_Quilt Glue; - - if (aType == BLOCK_SIX_FACES) { - - // Make block (hexahedral solid) from six faces - for (Standard_Integer ind = 1; ind <= nbshapes; ind++) { - if (anArgs(ind).ShapeType() != TopAbs_FACE) { - Standard_TypeMismatch::Raise("Shape for block construction is not a face"); - } - Glue.Add(anArgs(ind)); - } - - } else { - - // Make block (hexahedral solid) from two opposite faces - if (anArgs(1).ShapeType() != TopAbs_FACE || - anArgs(2).ShapeType() != TopAbs_FACE) { - Standard_TypeMismatch::Raise("Shape for block construction is not a face"); - } - - // Get wires of the given faces - TopExp_Explorer wires1 (anArgs(1), TopAbs_WIRE); - TopExp_Explorer wires2 (anArgs(2), TopAbs_WIRE); - if (!wires1.More() || !wires2.More()) { - Standard_ConstructionError::Raise("A face for the block has no wires"); - } - TopoDS_Shape aWire1 = wires1.Current(); - TopoDS_Shape aWire2 = wires2.Current(); - wires1.Next(); - wires2.Next(); - if (wires1.More() || wires2.More()) { - Standard_ConstructionError::Raise("A face for the block has more than one wire"); - } - - GEOMImpl_Block6Explorer aBlockTool; - aBlockTool.InitByTwoFaces(anArgs(1), anArgs(2)); - - // Construct the linking faces and add them in the gluing tool - Glue.Add(anArgs(1)); - Glue.Add(aBlockTool.GetFace(3, Standard_True)); - Glue.Add(aBlockTool.GetFace(4, Standard_True)); - Glue.Add(aBlockTool.GetFace(5, Standard_True)); - Glue.Add(aBlockTool.GetFace(6, Standard_True)); - Glue.Add(anArgs(2)); - } - - TopExp_Explorer exp (Glue.Shells(), TopAbs_SHELL); - Standard_Integer ish = 0; - TopTools_MapOfShape mapShape; - for (; exp.More(); exp.Next()) { - if (mapShape.Add(exp.Current())) { - aShape = exp.Current(); - ish++; - } - } - - if (ish > 1) { - aShape = Glue.Shells(); - Standard_Real aTol = prec; // Precision::Confusion() - TopExp_Explorer expF (aShape, TopAbs_FACE); - TopTools_MapOfShape mapF; - TopoDS_Shell Shell; - B.MakeShell(Shell); - for (; expF.More(); expF.Next()) { - if (mapF.Add(expF.Current())) { - B.Add(Shell, expF.Current()); - Standard_Real aToler = BRep_Tool::Tolerance(TopoDS::Face(expF.Current())); - if (aToler > aTol) - aTol = aToler; - } - } - ShHealOper_Sewing aHealer (Shell, aTol); - if (aHealer.Perform()) - aShape = aHealer.GetResultShape(); - else - Standard_ConstructionError::Raise - ("Impossible to build a connected shell on the given faces"); - } - - if (aType == BLOCK_SIX_FACES) { - if (!aShape.Closed()) { - Standard_ConstructionError::Raise - ("Impossible to build a closed shell on the given faces"); - } - } - - TopoDS_Solid Sol; - B.MakeSolid(Sol); - B.Add(Sol, aShape); - BRepClass3d_SolidClassifier SC (Sol); - SC.PerformInfinitePoint(prec); - if (SC.State() == TopAbs_IN) { - B.MakeSolid(Sol); - B.Add(Sol, aShape.Reversed()); - } - aShape = Sol; - BRepLib::SameParameter(aShape, 1.E-5, Standard_True); - - } else if (aType == BLOCK_COMPOUND_GLUE) { - - // Make blocks compound from a compound - if (anArgs(1).ShapeType() != TopAbs_COMPOUND && - anArgs(2).ShapeType() != TopAbs_COMPSOLID) { - Standard_TypeMismatch::Raise("Not a compound given"); - } - - TopoDS_Shape aCompound = anArgs(1); - - // Glue coincident faces and edges (with Partition algorithm). - NMTAlgo_Splitter1 PS; - PS.AddShape(aCompound); - PS.Compute(); - PS.SetRemoveWebs(Standard_False); -// PS.Build(aCompound.ShapeType()); - PS.Build(TopAbs_SOLID); - - aShape = PS.Shape(); - } else { - } - - } else { // Multi-transformations and compound improving - - if (aType == BLOCK_REMOVE_EXTRA || - aType == BLOCK_COMPOUND_IMPROVE) { - - GEOMImpl_IBlockTrsf aCI (aFunction); - Handle(GEOM_Function) aRefShape = aCI.GetOriginal(); - TopoDS_Shape aBlockOrComp = aRefShape->GetValue(); - if (aBlockOrComp.IsNull()) { - Standard_NullObject::Raise("Null Shape given"); - } - - // 1. Improve solids with seam and/or degenerated edges - BlockFix_BlockFixAPI aTool; - //aTool.Tolerance() = toler; - aTool.SetShape(aBlockOrComp); - aTool.Perform(); - - if (aType == BLOCK_REMOVE_EXTRA) { - - aShape = aTool.Shape(); - if (aShape == aBlockOrComp) { - MESSAGE("No modifications have been done"); - } - - } else { // aType == BLOCK_COMPOUND_IMPROVE - - TopoDS_Shape aFixedExtra = aTool.Shape(); - - // 2. Separate non-blocks - TopTools_ListOfShape BLO; // All blocks from the given compound - TopTools_ListOfShape NOT; // Not blocks - TopTools_ListOfShape EXT; // Hexahedral solids, having degenerated and/or seam edges - GEOMImpl_IBlocksOperations::AddBlocksFrom(aFixedExtra, BLO, NOT, EXT); - - if (NOT.Extent() > 0) { - MESSAGE("Some non-blocks have been removed"); - } - - // 3. Warn about staying extra-edges - if (EXT.Extent() > 0) { - MESSAGE("Warning: Not all seam or degenerated edges was removed"); - } - - // ??? Throw away standalone blocks ??? - - // 4. Create compound of all blocks - TopoDS_Compound aComp; - BRep_Builder BB; - BB.MakeCompound(aComp); - TopTools_ListIteratorOfListOfShape BLOit (BLO); - for (; BLOit.More(); BLOit.Next()) { - BB.Add(aComp, BLOit.Value()); - } - - // 5. Glue Faces - aShape = GEOMImpl_GlueDriver::GlueFaces(aComp, Precision::Confusion()); - } - - } else if (aType == BLOCK_MULTI_TRANSFORM_1D || - aType == BLOCK_MULTI_TRANSFORM_2D) { - - TopoDS_Shape aMulti; - GEOMImpl_IBlockTrsf aCI (aFunction); - Handle(GEOM_Function) aRefShape = aCI.GetOriginal(); - TopoDS_Shape aBlockIni = aRefShape->GetValue(); - if (aBlockIni.IsNull()) { - Standard_NullObject::Raise("Null Block"); - } - - // Copy block to avoid problems (PAL6706) - TColStd_IndexedDataMapOfTransientTransient aMap; - TopoDS_Shape aBlock; - TNaming_CopyShape::CopyTool(aBlockIni, aMap, aBlock); - - // Block tolerance in vertices - Standard_Real aTol = prec; - TopExp_Explorer expV (aBlock, TopAbs_VERTEX); - TopTools_MapOfShape mapShape; - for (; expV.More(); expV.Next()) { - if (mapShape.Add(expV.Current())) { - TopoDS_Vertex aV = TopoDS::Vertex(expV.Current()); - aTol = Max(BRep_Tool::Tolerance(aV), aTol); - } - } - - if (aType == BLOCK_MULTI_TRANSFORM_1D) { - // Retrieve a faces by Ids - Standard_Integer aFace1Id = aCI.GetFace1U(); - Standard_Integer aFace2Id = aCI.GetFace2U(); - TopoDS_Shape aFace1, aFace2; - if (!GEOMImpl_ILocalOperations::GetSubShape(aBlock, aFace1Id, aFace1)) { - Standard_NullObject::Raise("Can not retrieve a sub-shape with given Id"); - } - if (aFace1.ShapeType() != TopAbs_FACE) { - Standard_TypeMismatch::Raise("Sub-shape with given Id is not a face"); - } - - if (aFace2Id > 0) { - if (!GEOMImpl_ILocalOperations::GetSubShape(aBlock, aFace2Id, aFace2)) { - Standard_NullObject::Raise("Can not retrieve a sub-shape with given Id"); - } - if (aFace2.ShapeType() != TopAbs_FACE) { - Standard_TypeMismatch::Raise("Sub-shape with given Id is not a face"); - } - } - - Standard_Integer aNbIter = aCI.GetNbIterU(); - - MultiTransformate1D(aBlock, aFace1, aFace2, aNbIter, aMulti); - - } else { // aType == BLOCK_MULTI_TRANSFORM_2D - // Retrieve a faces by Ids - Standard_Integer aFace1UId = aCI.GetFace1U(); - Standard_Integer aFace2UId = aCI.GetFace2U(); - Standard_Integer aFace1VId = aCI.GetFace1V(); - Standard_Integer aFace2VId = aCI.GetFace2V(); - - TopoDS_Shape aFace1U, aFace2U, aFace1V, aFace2V; - if (!GEOMImpl_ILocalOperations::GetSubShape(aBlock, aFace1UId, aFace1U) || - !GEOMImpl_ILocalOperations::GetSubShape(aBlock, aFace1VId, aFace1V)) { - Standard_NullObject::Raise("Can not retrieve a sub-shape with given Id"); - } - - if (aFace1U.ShapeType() != TopAbs_FACE || - aFace1V.ShapeType() != TopAbs_FACE) { - Standard_TypeMismatch::Raise("Sub-shape with given Id is not a face"); - } - - if (aFace2UId > 0) { - if (!GEOMImpl_ILocalOperations::GetSubShape(aBlock, aFace2UId, aFace2U)) { - Standard_NullObject::Raise("Can not retrieve a sub-shape with given Id"); - } - - if (aFace2U.ShapeType() != TopAbs_FACE) { - Standard_TypeMismatch::Raise("Sub-shape with given Id is not a face"); - } - } - - if (aFace2VId > 0) { - if (!GEOMImpl_ILocalOperations::GetSubShape(aBlock, aFace2VId, aFace2V)) { - Standard_NullObject::Raise("Can not retrieve a sub-shape with given Id"); - } - - if (aFace2V.ShapeType() != TopAbs_FACE) { - Standard_TypeMismatch::Raise("Sub-shape with given Id is not a face"); - } - } - - Standard_Integer aNbIterU = aCI.GetNbIterU(); - Standard_Integer aNbIterV = aCI.GetNbIterV(); - - MultiTransformate2D(aBlock, - aFace1U, aFace2U, aNbIterU, - aFace1V, aFace2V, aNbIterV, aMulti); - } - - if (aMulti.IsNull()) { - StdFail_NotDone::Raise("Multi-transformation failed"); - } - - // Glue faces of the multi-block - aShape = GEOMImpl_GlueDriver::GlueFaces(aMulti, aTol); - - } else { // unknown function type - return 0; - } - } - - if (aShape.IsNull()) return 0; - - aFunction->SetValue(aShape); - - log.SetTouched(Label()); - - return 1; -} - -//======================================================================= -//function : MultiTransformate1D -//purpose : -//======================================================================= -void GEOMImpl_BlockDriver::MultiTransformate1D (const TopoDS_Shape& theBlock, - const TopoDS_Shape& theFace1, - const TopoDS_Shape& theFace2, - const Standard_Integer theNbIter, - TopoDS_Shape& theResult) const -{ - // Construct Tool, where will be the first face, - // and a face, opposite to , will be the second face - GEOMImpl_Block6Explorer aBlockTool; - aBlockTool.InitByBlockAndFace(theBlock, theFace1); - - // Find IDs of the faces - Standard_Integer dir_face1 = 1, dir_face2 = 2; - if (!theFace2.IsNull()) { - dir_face2 = aBlockTool.GetFaceID(theFace2); - } - - // Find three pairs of points - Standard_Integer v11_id = 0, v12_id = 0, v13_id = 0; // vertices of the first face - Standard_Integer v21_id = 0, v22_id = 0, v23_id = 0; // vertices of the second face - - if (dir_face2 == 2) { // is opposite to - - // We will take vertices with equal local numbers on the faces, - // as the Block6Explorer gives equal local numbers - // to the linked vertices on the opposite faces, - // i.e. v1* is linked with the v2* by an edge: - - // _________ - // /|v23 /| - // / | / | dir_face1 - bottom - // / | / | - // /________ / | dir_face2 - top - // |v21 | |v22 | - // | |____|____| - // | / v13 | / - // | / | / - // | / | / - // |/________|/ - // v11 v12 - - v11_id = aBlockTool.GetVertexID(dir_face1, 1); - v12_id = aBlockTool.GetVertexID(dir_face1, 2); - v13_id = aBlockTool.GetVertexID(dir_face1, 4); - - v21_id = aBlockTool.GetVertexID(dir_face2, 1); - v22_id = aBlockTool.GetVertexID(dir_face2, 2); - v23_id = aBlockTool.GetVertexID(dir_face2, 4); - - } else { - - // _________ - // /| /| - // / | / | dir_face1 - bottom - // / | / | - // /________ / | dir_face2 - right (for example) - // | | |v23 | - // | |____|____| - // | / | /v12 = v22 (common_vertex2) - // | / | / - // | / | / - // |/________|/ - // v13 v11 = v21 (common_vertex1) - - Standard_Integer common_edge_id = aBlockTool.FindCommonEdgeID(dir_face1, dir_face2); - Standard_Integer common_vertex1 = aBlockTool.GetVertexOnEdgeID(common_edge_id, 1); - Standard_Integer common_vertex2 = aBlockTool.GetVertexOnEdgeID(common_edge_id, 2); - - Standard_Integer not_common_v1 = 0; - Standard_Integer vid = 1; - Standard_Boolean isFound = Standard_False; - while (!isFound && vid <= 4) { - not_common_v1 = aBlockTool.GetVertexID(dir_face1, vid); - isFound = (not_common_v1 != common_vertex2 && - aBlockTool.FindEdgeID(not_common_v1, common_vertex1) != 0); - vid++; - } - - Standard_Integer not_common_v2 = 0; - vid = 1; - isFound = Standard_False; - while (!isFound && vid <= 4) { - not_common_v2 = aBlockTool.GetVertexID(dir_face2, vid); - isFound = (not_common_v2 != common_vertex2 && - aBlockTool.FindEdgeID(not_common_v2, common_vertex1) != 0); - vid++; - } - - v11_id = common_vertex1; - v12_id = common_vertex2; - v13_id = not_common_v1; - - v21_id = common_vertex1; - v22_id = common_vertex2; - v23_id = not_common_v2; - } - - // Construct a transformation operator - TopoDS_Vertex V11 = TopoDS::Vertex(aBlockTool.GetVertex(v11_id)); - TopoDS_Vertex V12 = TopoDS::Vertex(aBlockTool.GetVertex(v12_id)); - TopoDS_Vertex V13 = TopoDS::Vertex(aBlockTool.GetVertex(v13_id)); - - TopoDS_Vertex V21 = TopoDS::Vertex(aBlockTool.GetVertex(v21_id)); - TopoDS_Vertex V22 = TopoDS::Vertex(aBlockTool.GetVertex(v22_id)); - TopoDS_Vertex V23 = TopoDS::Vertex(aBlockTool.GetVertex(v23_id)); - - // Axes of the first direction face - gp_Pnt P1 = BRep_Tool::Pnt(V11); - gp_Vec VecN1 (P1, BRep_Tool::Pnt(V12)); - gp_Vec VecX1 (P1, BRep_Tool::Pnt(V13)); - gp_Ax3 Ax1 (P1, VecN1, VecX1); - - // Axes of the second direction face - gp_Pnt P2 = BRep_Tool::Pnt(V21); - gp_Vec VecN2 (P2, BRep_Tool::Pnt(V22)); - gp_Vec VecX2 (P2, BRep_Tool::Pnt(V23)); - gp_Ax3 Ax2 (P2, VecN2, VecX2); - - gp_Trsf aTrsf; - aTrsf.SetDisplacement(Ax1, Ax2); - - // Check, that is similar to . - // Actually, we need only to check right position of one - // vertex, not involved into the transformation construction. - if (!aBlockTool.IsSimilarFaces(dir_face1, dir_face2, aTrsf)) { - Standard_ConstructionError::Raise("The direction faces are not similar"); - } - - // Perform multi-transformation - TopoDS_Compound aCompound; - BRep_Builder B; - B.MakeCompound(aCompound); - - TopoDS_Shape aPrevShape = theBlock; - for (Standard_Integer i = 0; i < theNbIter; i++) { - B.Add(aCompound, aPrevShape); - BRepBuilderAPI_Transform aTransformation (aPrevShape, aTrsf, Standard_False); - aPrevShape = aTransformation.Shape(); - } - theResult = aCompound; -} - -//======================================================================= -//function : MultiTransformate2D -//purpose : -//======================================================================= -void GEOMImpl_BlockDriver::MultiTransformate2D (const TopoDS_Shape& theBlock, - const TopoDS_Shape& theFace1U, - const TopoDS_Shape& theFace2U, - const Standard_Integer theNbIterU, - const TopoDS_Shape& theFace1V, - const TopoDS_Shape& theFace2V, - const Standard_Integer theNbIterV, - TopoDS_Shape& theResult) const -{ - // Construct Tool, where will be the first face, - // and a face, opposite to , will be the second face - GEOMImpl_Block6Explorer aBlockTool; - aBlockTool.InitByBlockAndFace(theBlock, theFace1U); - - gp_Trsf aTrsfU, aTrsfV; - gp_Ax3 Ax1V, Ax2V; - for (Standard_Integer uv = 1; uv <= 2; uv++) { - // U transformation - TopoDS_Shape theFace1 = theFace1U; - TopoDS_Shape theFace2 = theFace2U; - if (uv == 2) { - // V transformation - theFace1 = theFace1V; - theFace2 = theFace2V; - } - - // Find IDs of the faces - Standard_Integer dir_face1 = aBlockTool.GetFaceID(theFace1); - Standard_Integer dir_face2 = 0; - Standard_Integer opp_face1 = aBlockTool.GetOppositeFaceID(dir_face1); - if (theFace2.IsNull()) { - dir_face2 = opp_face1; - } else { - dir_face2 = aBlockTool.GetFaceID(theFace2); - } - - // Find three pairs of points - Standard_Integer v11_id = 0, v12_id = 0, v13_id = 0; // vertices of the first face - Standard_Integer v21_id = 0, v22_id = 0, v23_id = 0; // vertices of the second face - - if (dir_face2 == opp_face1) { // is opposite to - - // We will take vertices with equal local numbers on the faces, - // as the Block6Explorer gives equal local numbers - // to the linked vertices on the opposite faces, - // i.e. v1* is linked with the v2* by an edge: - - v11_id = aBlockTool.GetVertexID(dir_face1, 1); - v12_id = aBlockTool.GetVertexID(dir_face1, 2); - v13_id = aBlockTool.GetVertexID(dir_face1, 4); - - v21_id = aBlockTool.GetVertexID(dir_face2, 1); - v22_id = aBlockTool.GetVertexID(dir_face2, 2); - v23_id = aBlockTool.GetVertexID(dir_face2, 4); - - } else { - - Standard_Integer common_edge_id = aBlockTool.FindCommonEdgeID(dir_face1, dir_face2); - Standard_Integer common_vertex1 = aBlockTool.GetVertexOnEdgeID(common_edge_id, 1); - Standard_Integer common_vertex2 = aBlockTool.GetVertexOnEdgeID(common_edge_id, 2); - - Standard_Integer not_common_v1 = 0; - Standard_Integer vid = 1; - Standard_Boolean isFound = Standard_False; - while (!isFound && vid <= 4) { - not_common_v1 = aBlockTool.GetVertexID(dir_face1, vid); - isFound = (not_common_v1 != common_vertex2 && - aBlockTool.FindEdgeID(not_common_v1, common_vertex1) != 0); - vid++; - } - - Standard_Integer not_common_v2 = 0; - vid = 1; - isFound = Standard_False; - while (!isFound && vid <= 4) { - not_common_v2 = aBlockTool.GetVertexID(dir_face2, vid); - isFound = (not_common_v2 != common_vertex2 && - aBlockTool.FindEdgeID(not_common_v2, common_vertex1) != 0); - vid++; - } - - v11_id = common_vertex1; - v12_id = common_vertex2; - v13_id = not_common_v1; - - v21_id = common_vertex1; - v22_id = common_vertex2; - v23_id = not_common_v2; - } - - // Construct a transformation operator - TopoDS_Vertex V11 = TopoDS::Vertex(aBlockTool.GetVertex(v11_id)); - TopoDS_Vertex V12 = TopoDS::Vertex(aBlockTool.GetVertex(v12_id)); - TopoDS_Vertex V13 = TopoDS::Vertex(aBlockTool.GetVertex(v13_id)); - - TopoDS_Vertex V21 = TopoDS::Vertex(aBlockTool.GetVertex(v21_id)); - TopoDS_Vertex V22 = TopoDS::Vertex(aBlockTool.GetVertex(v22_id)); - TopoDS_Vertex V23 = TopoDS::Vertex(aBlockTool.GetVertex(v23_id)); - - // Axes of the first direction face - gp_Pnt P1 = BRep_Tool::Pnt(V11); - gp_Vec VecN1 (P1, BRep_Tool::Pnt(V12)); - gp_Vec VecX1 (P1, BRep_Tool::Pnt(V13)); - gp_Ax3 Ax1 (P1, VecN1, VecX1); - - // Axes of the second direction face - gp_Pnt P2 = BRep_Tool::Pnt(V21); - gp_Vec VecN2 (P2, BRep_Tool::Pnt(V22)); - gp_Vec VecX2 (P2, BRep_Tool::Pnt(V23)); - gp_Ax3 Ax2 (P2, VecN2, VecX2); - - gp_Trsf aTrsf; - aTrsf.SetDisplacement(Ax1, Ax2); - if (uv == 1) { - aTrsfU = aTrsf; - } else { - aTrsfV = aTrsf; - Ax1V = Ax1; - Ax2V = Ax2; - } - - // Check, that is similar to . - // Actually, we need only to check right position of one - // vertex, not involved into the transformation construction. - if (!aBlockTool.IsSimilarFaces(dir_face1, dir_face2, aTrsf)) { - Standard_ConstructionError::Raise("The direction faces are not similar"); - } - } - - // Perform multi-transformation - TopoDS_Compound aCompound; - BRep_Builder B; - B.MakeCompound(aCompound); - - TopoDS_Shape aPrevShapeU = theBlock; - for (int i = 0; i < theNbIterU; i++) { - TopoDS_Shape aPrevShapeV = aPrevShapeU; - for (int j = 0; j < theNbIterV; j++) { - B.Add(aCompound, aPrevShapeV); - BRepBuilderAPI_Transform aTransformationV (aPrevShapeV, aTrsfV, Standard_False); - aPrevShapeV = aTransformationV.Shape(); - } - BRepBuilderAPI_Transform aTransformationU (aPrevShapeU, aTrsfU, Standard_False); - aPrevShapeU = aTransformationU.Shape(); - // Correction of the second transformation according to the first transformation - Ax1V.Transform(aTrsfU); - Ax2V.Transform(aTrsfU); - aTrsfV.SetDisplacement(Ax1V, Ax2V); - // Correction done - } - theResult = aCompound; -} - -//======================================================================= -//function : GEOMImpl_BlockDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_BlockDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_BlockDriver", - sizeof(GEOMImpl_BlockDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= -const Handle(GEOMImpl_BlockDriver) Handle(GEOMImpl_BlockDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_BlockDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_BlockDriver))) { - _anOtherObject = Handle(GEOMImpl_BlockDriver)((Handle(GEOMImpl_BlockDriver)&)AnObject); - } - } - - return _anOtherObject ; -} diff --git a/src/GEOMImpl/GEOMImpl_BlockDriver.hxx b/src/GEOMImpl/GEOMImpl_BlockDriver.hxx deleted file mode 100644 index 8d78a468d..000000000 --- a/src/GEOMImpl/GEOMImpl_BlockDriver.hxx +++ /dev/null @@ -1,155 +0,0 @@ -// File : GEOMImpl_BlockDriver.ixx -// Module : GEOMImpl - -#ifndef _GEOMImpl_BlockDriver_HeaderFile -#define _GEOMImpl_BlockDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_BlockDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_BlockDriver); - -class Handle(GEOMImpl_BlockDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_BlockDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_BlockDriver)(const Handle(GEOMImpl_BlockDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_BlockDriver)(const GEOMImpl_BlockDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_BlockDriver)& operator=(const Handle(GEOMImpl_BlockDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_BlockDriver)& operator=(const GEOMImpl_BlockDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_BlockDriver* operator->() - { - return (GEOMImpl_BlockDriver *)ControlAccess(); - } - - GEOMImpl_BlockDriver* operator->() const - { - return (GEOMImpl_BlockDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_BlockDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_BlockDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif -#include - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_BlockDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_BlockDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_BlockDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_BlockDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_BlockDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_BlockDriver) == AType || TFunction_Driver::IsKind(AType)); } - -private: - void MultiTransformate1D (const TopoDS_Shape& theBlock, - const TopoDS_Shape& theFace1, - const TopoDS_Shape& theFace2, - const Standard_Integer theNbIter, - TopoDS_Shape& theResult) const; - - void MultiTransformate2D (const TopoDS_Shape& theBlock, - const TopoDS_Shape& theFace1U, - const TopoDS_Shape& theFace2U, - const Standard_Integer theNbIterU, - const TopoDS_Shape& theFace1V, - const TopoDS_Shape& theFace2V, - const Standard_Integer theNbIterV, - TopoDS_Shape& theResult) const; - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_BooleanDriver.cxx b/src/GEOMImpl/GEOMImpl_BooleanDriver.cxx deleted file mode 100644 index 53be70dda..000000000 --- a/src/GEOMImpl/GEOMImpl_BooleanDriver.cxx +++ /dev/null @@ -1,139 +0,0 @@ - -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include -#include - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_BooleanDriver::GetID() -{ - static Standard_GUID aBooleanDriver("FF1BBB21-5D14-4df2-980B-3A668264EA16"); - return aBooleanDriver; -} - - -//======================================================================= -//function : GEOMImpl_BooleanDriver -//purpose : -//======================================================================= -GEOMImpl_BooleanDriver::GEOMImpl_BooleanDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_BooleanDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - GEOMImpl_IBoolean aCI (aFunction); - Standard_Integer aType = aFunction->GetType(); - - TopoDS_Shape aShape; - - Handle(GEOM_Function) aRefShape1 = aCI.GetShape1(); - Handle(GEOM_Function) aRefShape2 = aCI.GetShape2(); - TopoDS_Shape aShape1 = aRefShape1->GetValue(); - TopoDS_Shape aShape2 = aRefShape2->GetValue(); - if (!aShape1.IsNull() && !aShape2.IsNull()) { - if (aType == BOOLEAN_COMMON) { - BRepAlgoAPI_Common BO (aShape1, aShape2); -// BO.Build(); - if (!BO.IsDone()) { - StdFail_NotDone::Raise("Requested boolean operation can not be performed on the given shapes"); - } - aShape = BO.Shape(); - } else if (aType == BOOLEAN_CUT) { - BRepAlgoAPI_Cut BO (aShape1, aShape2); - if (!BO.IsDone()) { - StdFail_NotDone::Raise("Requested boolean operation can not be performed on the given shapes"); - } - aShape = BO.Shape(); - } else if (aType == BOOLEAN_FUSE) { - BRepAlgoAPI_Fuse BO (aShape1, aShape2); - if (!BO.IsDone()) { - StdFail_NotDone::Raise("Requested boolean operation can not be performed on the given shapes"); - } - aShape = BO.Shape(); - } else if (aType == BOOLEAN_SECTION) { - BRepAlgoAPI_Section BO (aShape1, aShape2); - if (!BO.IsDone()) { - StdFail_NotDone::Raise("Requested boolean operation can not be performed on the given shapes"); - } - aShape = BO.Shape(); - } else { - } - } - - if (aShape.IsNull()) return 0; - if (!BRepAlgo::IsValid(aShape)) { - Standard_ConstructionError::Raise("Boolean aborted : non valid shape result"); - } - - aFunction->SetValue(aShape); - - log.SetTouched(Label()); - - return 1; -} - - -//======================================================================= -//function : GEOMImpl_BooleanDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_BooleanDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_BooleanDriver", - sizeof(GEOMImpl_BooleanDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= -const Handle(GEOMImpl_BooleanDriver) Handle(GEOMImpl_BooleanDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_BooleanDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_BooleanDriver))) { - _anOtherObject = Handle(GEOMImpl_BooleanDriver)((Handle(GEOMImpl_BooleanDriver)&)AnObject); - } - } - - return _anOtherObject ; -} diff --git a/src/GEOMImpl/GEOMImpl_BooleanDriver.hxx b/src/GEOMImpl/GEOMImpl_BooleanDriver.hxx deleted file mode 100644 index 72163fbf8..000000000 --- a/src/GEOMImpl/GEOMImpl_BooleanDriver.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// File : GEOMImpl_BooleanDriver.ixx -// Module : GEOMImpl - -#ifndef _GEOMImpl_BooleanDriver_HeaderFile -#define _GEOMImpl_BooleanDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_BooleanDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_BooleanDriver); - -class Handle(GEOMImpl_BooleanDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_BooleanDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_BooleanDriver)(const Handle(GEOMImpl_BooleanDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_BooleanDriver)(const GEOMImpl_BooleanDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_BooleanDriver)& operator=(const Handle(GEOMImpl_BooleanDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_BooleanDriver)& operator=(const GEOMImpl_BooleanDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_BooleanDriver* operator->() - { - return (GEOMImpl_BooleanDriver *)ControlAccess(); - } - - GEOMImpl_BooleanDriver* operator->() const - { - return (GEOMImpl_BooleanDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_BooleanDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_BooleanDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_BooleanDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_BooleanDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_BooleanDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_BooleanDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_BooleanDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_BooleanDriver) == AType || TFunction_Driver::IsKind(AType)); } - - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_BoxDriver.cxx b/src/GEOMImpl/GEOMImpl_BoxDriver.cxx deleted file mode 100644 index 0ea8ec594..000000000 --- a/src/GEOMImpl/GEOMImpl_BoxDriver.cxx +++ /dev/null @@ -1,132 +0,0 @@ - -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_BoxDriver::GetID() -{ - static Standard_GUID aBoxDriver("FF1BBB13-5D14-4df2-980B-3A668264EA16"); - return aBoxDriver; -} - - -//======================================================================= -//function : GEOMImpl_BoxDriver -//purpose : -//======================================================================= -GEOMImpl_BoxDriver::GEOMImpl_BoxDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_BoxDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - GEOMImpl_IBox aBI (aFunction); - Standard_Integer aType = aFunction->GetType(); - - TopoDS_Shape aShape; - - if (aType == BOX_DX_DY_DZ) { - BRepPrimAPI_MakeBox MB (aBI.GetDX(), aBI.GetDY(), aBI.GetDZ()); - MB.Build(); - - if (!MB.IsDone()) { - StdFail_NotDone::Raise("Box with the given dimensions can not be computed"); - } - aShape = MB.Shape(); - } - else if (aType == BOX_TWO_PNT) { - Handle(GEOM_Function) aRefPoint1 = aBI.GetRef1(); - Handle(GEOM_Function) aRefPoint2 = aBI.GetRef2(); - TopoDS_Shape aShape1 = aRefPoint1->GetValue(); - TopoDS_Shape aShape2 = aRefPoint2->GetValue(); - if (aShape1.ShapeType() == TopAbs_VERTEX && - aShape2.ShapeType() == TopAbs_VERTEX) { - gp_Pnt P1 = BRep_Tool::Pnt(TopoDS::Vertex(aShape1)); - gp_Pnt P2 = BRep_Tool::Pnt(TopoDS::Vertex(aShape2)); - BRepPrimAPI_MakeBox MB (P1,P2); - MB.Build(); - - if (!MB.IsDone()) { - StdFail_NotDone::Raise("Box can not be computed from the given point"); - } - aShape = MB.Shape(); - } - } - else { - } - - if (aShape.IsNull()) return 0; - - aFunction->SetValue(aShape); - - log.SetTouched(Label()); - - return 1; -} - - -//======================================================================= -//function : GEOMImpl_BoxDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_BoxDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_BoxDriver", - sizeof(GEOMImpl_BoxDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= -const Handle(GEOMImpl_BoxDriver) Handle(GEOMImpl_BoxDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_BoxDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_BoxDriver))) { - _anOtherObject = Handle(GEOMImpl_BoxDriver)((Handle(GEOMImpl_BoxDriver)&)AnObject); - } - } - - return _anOtherObject ; -} diff --git a/src/GEOMImpl/GEOMImpl_BoxDriver.hxx b/src/GEOMImpl/GEOMImpl_BoxDriver.hxx deleted file mode 100644 index 104bff796..000000000 --- a/src/GEOMImpl/GEOMImpl_BoxDriver.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// File : GEOMImpl_BoxDriver.ixx -// Module : GEOMImpl - -#ifndef _GEOMImpl_BoxDriver_HeaderFile -#define _GEOMImpl_BoxDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_BoxDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_BoxDriver); - -class Handle(GEOMImpl_BoxDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_BoxDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_BoxDriver)(const Handle(GEOMImpl_BoxDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_BoxDriver)(const GEOMImpl_BoxDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_BoxDriver)& operator=(const Handle(GEOMImpl_BoxDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_BoxDriver)& operator=(const GEOMImpl_BoxDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_BoxDriver* operator->() - { - return (GEOMImpl_BoxDriver *)ControlAccess(); - } - - GEOMImpl_BoxDriver* operator->() const - { - return (GEOMImpl_BoxDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_BoxDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_BoxDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_BoxDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_BoxDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_BoxDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_BoxDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_BoxDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_BoxDriver) == AType || TFunction_Driver::IsKind(AType)); } - - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_ChamferDriver.cxx b/src/GEOMImpl/GEOMImpl_ChamferDriver.cxx deleted file mode 100644 index 2d1714931..000000000 --- a/src/GEOMImpl/GEOMImpl_ChamferDriver.cxx +++ /dev/null @@ -1,229 +0,0 @@ - -#include - -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_ChamferDriver::GetID() -{ - static Standard_GUID aChamferDriver("FF1BBB42-5D14-4df2-980B-3A668264EA16"); - return aChamferDriver; -} - - -//======================================================================= -//function : GEOMImpl_ChamferDriver -//purpose : -//======================================================================= -GEOMImpl_ChamferDriver::GEOMImpl_ChamferDriver() -{ -} - -//======================================================================= -//function : isGoodForChamfer -//purpose : -//======================================================================= -static Standard_Boolean isGoodForChamfer (const TopoDS_Shape& theShape) -{ - if (theShape.ShapeType() == TopAbs_SHELL || - theShape.ShapeType() == TopAbs_SOLID || - theShape.ShapeType() == TopAbs_COMPSOLID) { - return Standard_True; - } - - if (theShape.ShapeType() == TopAbs_COMPOUND) { - TopTools_MapOfShape mapShape; - TopoDS_Iterator It (theShape, Standard_False, Standard_False); - for (; It.More(); It.Next()) { - if (mapShape.Add(It.Value())) { - if (!isGoodForChamfer(It.Value())) { - return Standard_False; - } - } - } - return Standard_True; - } - - return Standard_False; -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_ChamferDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - GEOMImpl_IChamfer aCI (aFunction); - Standard_Integer aType = aFunction->GetType(); - - TopoDS_Shape aShape; - - Handle(GEOM_Function) aRefShape = aCI.GetShape(); - TopoDS_Shape aShapeBase = aRefShape->GetValue(); - - // Check the shape type. It have to be shell - // or solid, or compsolid, or compound of these shapes. - if (!isGoodForChamfer(aShapeBase)) { - StdFail_NotDone::Raise - ("Wrong shape. Must be shell or solid, or compsolid or compound of these shapes"); - } - - BRepFilletAPI_MakeChamfer fill (aShapeBase); - - if (aType == CHAMFER_SHAPE_ALL) { - // symmetric chamfer on all edges - double aD = aCI.GetD(); - TopTools_IndexedDataMapOfShapeListOfShape M; - GEOMImpl_Block6Explorer::MapShapesAndAncestors(aShapeBase, TopAbs_EDGE, TopAbs_FACE, M); - for (int i = 1; i <= M.Extent(); i++) { - TopoDS_Edge E = TopoDS::Edge(M.FindKey(i)); - TopoDS_Face F = TopoDS::Face(M.FindFromIndex(i).First()); - if (!BRepTools::IsReallyClosed(E, F) && - !BRep_Tool::Degenerated(E) && - M.FindFromIndex(i).Extent() == 2) - fill.Add(aD, E, F); - } - } else if (aType == CHAMFER_SHAPE_EDGE) { - // chamfer on edges, common to two faces, with D1 on the first face - double aD1 = aCI.GetD1(); - double aD2 = aCI.GetD2(); - TopoDS_Shape aFace1, aFace2; - if (GEOMImpl_ILocalOperations::GetSubShape(aShapeBase, aCI.GetFace1(), aFace1) && - GEOMImpl_ILocalOperations::GetSubShape(aShapeBase, aCI.GetFace2(), aFace2)) { - TopoDS_Face F = TopoDS::Face(aFace1); - - // fill map of edges of the second face - TopTools_MapOfShape aMap; - TopExp_Explorer Exp2 (aFace2, TopAbs_EDGE); - for (; Exp2.More(); Exp2.Next()) { - aMap.Add(Exp2.Current()); - } - - // find edges of the first face, common with the second face - TopExp_Explorer Exp (aFace1, TopAbs_EDGE); - for (; Exp.More(); Exp.Next()) { - if (aMap.Contains(Exp.Current())) { - TopoDS_Edge E = TopoDS::Edge(Exp.Current()); - if (!BRepTools::IsReallyClosed(E, F) && !BRep_Tool::Degenerated(E)) - fill.Add(aD1, aD2, E, F); - } - } - } - } else if (aType == CHAMFER_SHAPE_FACES) { - // chamfer on all edges of the selected faces, with D1 on the selected face - // (on first selected face, if the edge belongs to two selected faces) - double aD1 = aCI.GetD1(); - double aD2 = aCI.GetD2(); - int aLen = aCI.GetLength(); - int ind = 1; - TopTools_MapOfShape aMap; - TopTools_IndexedDataMapOfShapeListOfShape M; - GEOMImpl_Block6Explorer::MapShapesAndAncestors(aShapeBase, TopAbs_EDGE, TopAbs_FACE, M); - for (; ind <= aLen; ind++) - { - TopoDS_Shape aShapeFace; - if (GEOMImpl_ILocalOperations::GetSubShape - (aShapeBase, aCI.GetFace(ind), aShapeFace)) { - TopoDS_Face F = TopoDS::Face(aShapeFace); - TopExp_Explorer Exp (F, TopAbs_EDGE); - for (; Exp.More(); Exp.Next()) { - if (!aMap.Contains(Exp.Current())) { - TopoDS_Edge E = TopoDS::Edge(Exp.Current()); - if (!BRepTools::IsReallyClosed(E, F) && - !BRep_Tool::Degenerated(E) && - M.FindFromKey(E).Extent() == 2) - fill.Add(aD1, aD2, E, F); - } - } - } - } - } else { - } - - fill.Build(); - if (!fill.IsDone()) { - StdFail_NotDone::Raise("Chamfer can not be computed on the given shape with the given parameters"); - } - aShape = fill.Shape(); - - if (aShape.IsNull()) return 0; - - aFunction->SetValue(aShape); - - log.SetTouched(Label()); - - return 1; -} - - -//======================================================================= -//function : GEOMImpl_ChamferDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_ChamferDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_ChamferDriver", - sizeof(GEOMImpl_ChamferDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= -const Handle(GEOMImpl_ChamferDriver) Handle(GEOMImpl_ChamferDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_ChamferDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_ChamferDriver))) { - _anOtherObject = Handle(GEOMImpl_ChamferDriver)((Handle(GEOMImpl_ChamferDriver)&)AnObject); - } - } - - return _anOtherObject ; -} diff --git a/src/GEOMImpl/GEOMImpl_ChamferDriver.hxx b/src/GEOMImpl/GEOMImpl_ChamferDriver.hxx deleted file mode 100644 index 72e2ef480..000000000 --- a/src/GEOMImpl/GEOMImpl_ChamferDriver.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// File : GEOMImpl_ChamferDriver.ixx -// Module : GEOMImpl - -#ifndef _GEOMImpl_ChamferDriver_HeaderFile -#define _GEOMImpl_ChamferDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_ChamferDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_ChamferDriver); - -class Handle(GEOMImpl_ChamferDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_ChamferDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_ChamferDriver)(const Handle(GEOMImpl_ChamferDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_ChamferDriver)(const GEOMImpl_ChamferDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_ChamferDriver)& operator=(const Handle(GEOMImpl_ChamferDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_ChamferDriver)& operator=(const GEOMImpl_ChamferDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_ChamferDriver* operator->() - { - return (GEOMImpl_ChamferDriver *)ControlAccess(); - } - - GEOMImpl_ChamferDriver* operator->() const - { - return (GEOMImpl_ChamferDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_ChamferDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_ChamferDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_ChamferDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_ChamferDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_ChamferDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_ChamferDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_ChamferDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_ChamferDriver) == AType || TFunction_Driver::IsKind(AType)); } - - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_CircleDriver.cxx b/src/GEOMImpl/GEOMImpl_CircleDriver.cxx deleted file mode 100644 index 998c6384d..000000000 --- a/src/GEOMImpl/GEOMImpl_CircleDriver.cxx +++ /dev/null @@ -1,155 +0,0 @@ - -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_CircleDriver::GetID() -{ - static Standard_GUID aCircleDriver("FF1BBB32-5D14-4df2-980B-3A668264EA16"); - return aCircleDriver; -} - - -//======================================================================= -//function : GEOMImpl_CircleDriver -//purpose : -//======================================================================= -GEOMImpl_CircleDriver::GEOMImpl_CircleDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_CircleDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - GEOMImpl_ICircle aCI (aFunction); - Standard_Integer aType = aFunction->GetType(); - - TopoDS_Shape aShape; - - if (aType == CIRCLE_PNT_VEC_R) { - Handle(GEOM_Function) aRefPoint = aCI.GetCenter(); - Handle(GEOM_Function) aRefVector = aCI.GetVector(); - TopoDS_Shape aShapePnt = aRefPoint->GetValue(); - TopoDS_Shape aShapeVec = aRefVector->GetValue(); - if (aShapePnt.ShapeType() == TopAbs_VERTEX && - aShapeVec.ShapeType() == TopAbs_EDGE) { - gp_Pnt aP = BRep_Tool::Pnt(TopoDS::Vertex(aShapePnt)); - TopoDS_Edge anE = TopoDS::Edge(aShapeVec); - TopoDS_Vertex V1, V2; - TopExp::Vertices(anE, V1, V2, Standard_True); - if (!V1.IsNull() && !V2.IsNull()) { - gp_Vec aV (BRep_Tool::Pnt(V1), BRep_Tool::Pnt(V2)); - gp_Ax2 anAxes (aP, aV); - gp_Circ aCirc (anAxes, aCI.GetRadius()); - aShape = BRepBuilderAPI_MakeEdge(aCirc).Edge(); - } - } - } - else if (aType == CIRCLE_THREE_PNT) { - Handle(GEOM_Function) aRefPoint1 = aCI.GetPoint1(); - Handle(GEOM_Function) aRefPoint2 = aCI.GetPoint2(); - Handle(GEOM_Function) aRefPoint3 = aCI.GetPoint3(); - TopoDS_Shape aShapePnt1 = aRefPoint1->GetValue(); - TopoDS_Shape aShapePnt2 = aRefPoint2->GetValue(); - TopoDS_Shape aShapePnt3 = aRefPoint3->GetValue(); - if (aShapePnt1.ShapeType() == TopAbs_VERTEX && - aShapePnt2.ShapeType() == TopAbs_VERTEX && - aShapePnt3.ShapeType() == TopAbs_VERTEX) { - gp_Pnt aP1 = BRep_Tool::Pnt(TopoDS::Vertex(aShapePnt1)); - gp_Pnt aP2 = BRep_Tool::Pnt(TopoDS::Vertex(aShapePnt2)); - gp_Pnt aP3 = BRep_Tool::Pnt(TopoDS::Vertex(aShapePnt3)); - if (aP1.Distance(aP2) < gp::Resolution() || - aP1.Distance(aP3) < gp::Resolution() || - aP2.Distance(aP3) < gp::Resolution()) - Standard_ConstructionError::Raise("Circle creation aborted: coincident points given"); - if (gp_Vec(aP1, aP2).IsParallel(gp_Vec(aP1, aP3), Precision::Angular())) - Standard_ConstructionError::Raise("Circle creation aborted: points lay on one line"); - Handle(Geom_Circle) aCirc = GC_MakeCircle(aP1, aP2, aP3).Value(); - aShape = BRepBuilderAPI_MakeEdge(aCirc).Edge(); - } - } - else { - } - - if (aShape.IsNull()) return 0; - - aFunction->SetValue(aShape); - - log.SetTouched(Label()); - - return 1; -} - - -//======================================================================= -//function : GEOMImpl_CircleDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_CircleDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_CircleDriver", - sizeof(GEOMImpl_CircleDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= -const Handle(GEOMImpl_CircleDriver) Handle(GEOMImpl_CircleDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_CircleDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_CircleDriver))) { - _anOtherObject = Handle(GEOMImpl_CircleDriver)((Handle(GEOMImpl_CircleDriver)&)AnObject); - } - } - - return _anOtherObject ; -} diff --git a/src/GEOMImpl/GEOMImpl_CircleDriver.hxx b/src/GEOMImpl/GEOMImpl_CircleDriver.hxx deleted file mode 100644 index f28cadc01..000000000 --- a/src/GEOMImpl/GEOMImpl_CircleDriver.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// File : GEOMImpl_CircleDriver.ixx -// Module : GEOMImpl - -#ifndef _GEOMImpl_CircleDriver_HeaderFile -#define _GEOMImpl_CircleDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_CircleDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_CircleDriver); - -class Handle(GEOMImpl_CircleDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_CircleDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_CircleDriver)(const Handle(GEOMImpl_CircleDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_CircleDriver)(const GEOMImpl_CircleDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_CircleDriver)& operator=(const Handle(GEOMImpl_CircleDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_CircleDriver)& operator=(const GEOMImpl_CircleDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_CircleDriver* operator->() - { - return (GEOMImpl_CircleDriver *)ControlAccess(); - } - - GEOMImpl_CircleDriver* operator->() const - { - return (GEOMImpl_CircleDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_CircleDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_CircleDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_CircleDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_CircleDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_CircleDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_CircleDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_CircleDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_CircleDriver) == AType || TFunction_Driver::IsKind(AType)); } - - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_ConeDriver.cxx b/src/GEOMImpl/GEOMImpl_ConeDriver.cxx deleted file mode 100644 index 57e8f5381..000000000 --- a/src/GEOMImpl/GEOMImpl_ConeDriver.cxx +++ /dev/null @@ -1,166 +0,0 @@ - -#include - -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_ConeDriver::GetID() -{ - static Standard_GUID aConeDriver("FF1BBB15-5D14-4df2-980B-3A668264EA16"); - return aConeDriver; -} - - -//======================================================================= -//function : GEOMImpl_ConeDriver -//purpose : -//======================================================================= -GEOMImpl_ConeDriver::GEOMImpl_ConeDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_ConeDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - GEOMImpl_ICone aCI (aFunction); - Standard_Integer aType = aFunction->GetType(); - - gp_Pnt aP; - gp_Vec aV; - - Standard_Real aR1 = aCI.GetR1(); - Standard_Real aR2 = aCI.GetR2(); - - if (aType == CONE_R1_R2_H) { - aP = gp::Origin(); - aV = gp::DZ(); - - } else if (aType == CONE_PNT_VEC_R1_R2_H) { - Handle(GEOM_Function) aRefPoint = aCI.GetPoint(); - Handle(GEOM_Function) aRefVector = aCI.GetVector(); - TopoDS_Shape aShapePnt = aRefPoint->GetValue(); - TopoDS_Shape aShapeVec = aRefVector->GetValue(); - if (aShapePnt.IsNull() || aShapeVec.IsNull()) { - Standard_NullObject::Raise - ("Cone creation aborted: point or vector is not defined"); - } - if (aShapePnt.ShapeType() != TopAbs_VERTEX || - aShapeVec.ShapeType() != TopAbs_EDGE) { - Standard_TypeMismatch::Raise - ("Cone creation aborted: point or vector shapes has wrong type"); - } - - aP = BRep_Tool::Pnt(TopoDS::Vertex(aShapePnt)); - - TopoDS_Edge anE = TopoDS::Edge(aShapeVec); - TopoDS_Vertex V1, V2; - TopExp::Vertices(anE, V1, V2, Standard_True); - if (V1.IsNull() || V2.IsNull()) { - Standard_NullObject::Raise - ("Cylinder creation aborted: vector is not defined"); - } - aV = gp_Vec(BRep_Tool::Pnt(V1), BRep_Tool::Pnt(V2)); - - } else { - return 0; - } - - if (aCI.GetH() < 0.0) aV.Reverse(); - gp_Ax2 anAxes (aP, aV); - - TopoDS_Shape aShape; - // Cone does not work if same radius - if (fabs(aR1 - aR2) <= Precision::Confusion()) { - BRepPrimAPI_MakeCylinder MC (anAxes, (aR1 + aR2)/2.0, Abs(aCI.GetH())); - MC.Build(); - if (!MC.IsDone()) { - StdFail_NotDone::Raise("Cylinder can't be computed from the given parameters"); - } - aShape = MC.Shape(); - } else { - BRepPrimAPI_MakeCone MC (anAxes, aCI.GetR1(), aCI.GetR2(), Abs(aCI.GetH())); - MC.Build(); - if (!MC.IsDone()) { - StdFail_NotDone::Raise("Cylinder can't be computed from the given parameters"); - } - aShape = MC.Shape(); - } - if (aShape.IsNull()) return 0; - - log.SetTouched(Label()); - - aFunction->SetValue(aShape); - return 1; -} - - -//======================================================================= -//function : GEOMImpl_ConeDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_ConeDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_ConeDriver", - sizeof(GEOMImpl_ConeDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= -const Handle(GEOMImpl_ConeDriver) Handle(GEOMImpl_ConeDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_ConeDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_ConeDriver))) { - _anOtherObject = Handle(GEOMImpl_ConeDriver)((Handle(GEOMImpl_ConeDriver)&)AnObject); - } - } - - return _anOtherObject ; -} diff --git a/src/GEOMImpl/GEOMImpl_ConeDriver.hxx b/src/GEOMImpl/GEOMImpl_ConeDriver.hxx deleted file mode 100644 index 86332dc75..000000000 --- a/src/GEOMImpl/GEOMImpl_ConeDriver.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// File : GEOMImpl_ConeDriver.ixx -// Module : GEOMImpl - -#ifndef _GEOMImpl_ConeDriver_HeaderFile -#define _GEOMImpl_ConeDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_ConeDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_ConeDriver); - -class Handle(GEOMImpl_ConeDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_ConeDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_ConeDriver)(const Handle(GEOMImpl_ConeDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_ConeDriver)(const GEOMImpl_ConeDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_ConeDriver)& operator=(const Handle(GEOMImpl_ConeDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_ConeDriver)& operator=(const GEOMImpl_ConeDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_ConeDriver* operator->() - { - return (GEOMImpl_ConeDriver *)ControlAccess(); - } - - GEOMImpl_ConeDriver* operator->() const - { - return (GEOMImpl_ConeDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_ConeDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_ConeDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_ConeDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_ConeDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_ConeDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_ConeDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_ConeDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_ConeDriver) == AType || TFunction_Driver::IsKind(AType)); } - - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_CopyDriver.cxx b/src/GEOMImpl/GEOMImpl_CopyDriver.cxx deleted file mode 100644 index 92ded20b0..000000000 --- a/src/GEOMImpl/GEOMImpl_CopyDriver.cxx +++ /dev/null @@ -1,115 +0,0 @@ - -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_CopyDriver::GetID() -{ - static Standard_GUID aCopyDriver("FF1BBB53-5D14-4df2-980B-3A668264EA16"); - return aCopyDriver; -} - - -//======================================================================= -//function : GEOMImpl_CopyDriver -//purpose : -//======================================================================= -GEOMImpl_CopyDriver::GEOMImpl_CopyDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_CopyDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - Standard_Integer aType = aFunction->GetType(); - - GEOMImpl_ICopy aCI (aFunction); - TopoDS_Shape aCopy; - - if(aType == COPY_WITH_REF) { - - Handle(GEOM_Function) aRefFunction = aCI.GetOriginal(); - if (aRefFunction.IsNull()) return 0; - TopoDS_Shape anOriginal = aRefFunction->GetValue(); - - TColStd_IndexedDataMapOfTransientTransient aMap; - - TNaming_CopyShape::CopyTool(anOriginal, aMap, aCopy); - } - else if(aType == COPY_WITHOUT_REF) { - aCopy = aFunction->GetValue(); - } - - if (aCopy.IsNull()) return 0; - - aFunction->SetValue(aCopy); - - log.SetTouched(Label()); - - return 1; -} - - -//======================================================================= -//function : GEOMImpl_CopyDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_CopyDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_CopyDriver", - sizeof(GEOMImpl_CopyDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= -const Handle(GEOMImpl_CopyDriver) Handle(GEOMImpl_CopyDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_CopyDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_CopyDriver))) { - _anOtherObject = Handle(GEOMImpl_CopyDriver)((Handle(GEOMImpl_CopyDriver)&)AnObject); - } - } - - return _anOtherObject ; -} diff --git a/src/GEOMImpl/GEOMImpl_CopyDriver.hxx b/src/GEOMImpl/GEOMImpl_CopyDriver.hxx deleted file mode 100644 index 5fab4d5cb..000000000 --- a/src/GEOMImpl/GEOMImpl_CopyDriver.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// File : GEOMImpl_CopyDriver.ixx -// Module : GEOMImpl - -#ifndef _GEOMImpl_CopyDriver_HeaderFile -#define _GEOMImpl_CopyDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_CopyDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_CopyDriver); - -class Handle(GEOMImpl_CopyDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_CopyDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_CopyDriver)(const Handle(GEOMImpl_CopyDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_CopyDriver)(const GEOMImpl_CopyDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_CopyDriver)& operator=(const Handle(GEOMImpl_CopyDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_CopyDriver)& operator=(const GEOMImpl_CopyDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_CopyDriver* operator->() - { - return (GEOMImpl_CopyDriver *)ControlAccess(); - } - - GEOMImpl_CopyDriver* operator->() const - { - return (GEOMImpl_CopyDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_CopyDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_CopyDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_CopyDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_CopyDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_CopyDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_CopyDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_CopyDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_CopyDriver) == AType || TFunction_Driver::IsKind(AType)); } - - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_CylinderDriver.cxx b/src/GEOMImpl/GEOMImpl_CylinderDriver.cxx deleted file mode 100644 index 50e69d22d..000000000 --- a/src/GEOMImpl/GEOMImpl_CylinderDriver.cxx +++ /dev/null @@ -1,149 +0,0 @@ - -#include - -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_CylinderDriver::GetID() -{ - static Standard_GUID aCylinderDriver("FF1BBB14-5D14-4df2-980B-3A668264EA16"); - return aCylinderDriver; -} - - -//======================================================================= -//function : GEOMImpl_CylinderDriver -//purpose : -//======================================================================= -GEOMImpl_CylinderDriver::GEOMImpl_CylinderDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_CylinderDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - GEOMImpl_ICylinder aCI (aFunction); - Standard_Integer aType = aFunction->GetType(); - - gp_Pnt aP; - gp_Vec aV; - - if (aType == CYLINDER_R_H) { - aP = gp::Origin(); - aV = gp::DZ(); - } - else if (aType == CYLINDER_PNT_VEC_R_H) { - Handle(GEOM_Function) aRefPoint = aCI.GetPoint(); - Handle(GEOM_Function) aRefVector = aCI.GetVector(); - TopoDS_Shape aShapePnt = aRefPoint->GetValue(); - TopoDS_Shape aShapeVec = aRefVector->GetValue(); - if (aShapePnt.IsNull() || aShapeVec.IsNull()) { - Standard_NullObject::Raise("Cylinder creation aborted: point or vector is not defined"); - } - if (aShapePnt.ShapeType() != TopAbs_VERTEX || - aShapeVec.ShapeType() != TopAbs_EDGE) { - Standard_TypeMismatch::Raise("Cylinder creation aborted: point or vector shapes has wrong type"); - } - - aP = BRep_Tool::Pnt(TopoDS::Vertex(aShapePnt)); - - TopoDS_Edge anE = TopoDS::Edge(aShapeVec); - TopoDS_Vertex V1, V2; - TopExp::Vertices(anE, V1, V2, Standard_True); - if (V1.IsNull() || V2.IsNull()) { - Standard_NullObject::Raise("Cylinder creation aborted: vector is not defined"); - } - aV = gp_Vec(BRep_Tool::Pnt(V1), BRep_Tool::Pnt(V2)); - } - else { - return 0; - } - - if (aCI.GetH() < 0.0) aV.Reverse(); - gp_Ax2 anAxes (aP, aV); - - BRepPrimAPI_MakeCylinder MC (anAxes, aCI.GetR(), Abs(aCI.GetH())); - MC.Build(); - if (!MC.IsDone()) { - StdFail_NotDone::Raise("Cylinder can't be computed from the given parameters"); - } - - TopoDS_Shape aShape = MC.Shape(); - if (aShape.IsNull()) return 0; - - aFunction->SetValue(aShape); - - log.SetTouched(Label()); - - return 1; -} - - -//======================================================================= -//function : GEOMImpl_CylinderDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_CylinderDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_CylinderDriver", - sizeof(GEOMImpl_CylinderDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= -const Handle(GEOMImpl_CylinderDriver) Handle(GEOMImpl_CylinderDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_CylinderDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_CylinderDriver))) { - _anOtherObject = Handle(GEOMImpl_CylinderDriver)((Handle(GEOMImpl_CylinderDriver)&)AnObject); - } - } - - return _anOtherObject ; -} diff --git a/src/GEOMImpl/GEOMImpl_CylinderDriver.hxx b/src/GEOMImpl/GEOMImpl_CylinderDriver.hxx deleted file mode 100644 index 20a5778ed..000000000 --- a/src/GEOMImpl/GEOMImpl_CylinderDriver.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// File : GEOMImpl_CylinderDriver.ixx -// Module : GEOMImpl - -#ifndef _GEOMImpl_CylinderDriver_HeaderFile -#define _GEOMImpl_CylinderDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_CylinderDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_CylinderDriver); - -class Handle(GEOMImpl_CylinderDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_CylinderDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_CylinderDriver)(const Handle(GEOMImpl_CylinderDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_CylinderDriver)(const GEOMImpl_CylinderDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_CylinderDriver)& operator=(const Handle(GEOMImpl_CylinderDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_CylinderDriver)& operator=(const GEOMImpl_CylinderDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_CylinderDriver* operator->() - { - return (GEOMImpl_CylinderDriver *)ControlAccess(); - } - - GEOMImpl_CylinderDriver* operator->() const - { - return (GEOMImpl_CylinderDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_CylinderDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_CylinderDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_CylinderDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_CylinderDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_CylinderDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_CylinderDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_CylinderDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_CylinderDriver) == AType || TFunction_Driver::IsKind(AType)); } - - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_EllipseDriver.cxx b/src/GEOMImpl/GEOMImpl_EllipseDriver.cxx deleted file mode 100644 index a38b6b8ca..000000000 --- a/src/GEOMImpl/GEOMImpl_EllipseDriver.cxx +++ /dev/null @@ -1,125 +0,0 @@ - -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_EllipseDriver::GetID() -{ - static Standard_GUID aEllipseDriver("FF1BBB34-5D14-4df2-980B-3A668264EA16"); - return aEllipseDriver; -} - - -//======================================================================= -//function : GEOMImpl_EllipseDriver -//purpose : -//======================================================================= -GEOMImpl_EllipseDriver::GEOMImpl_EllipseDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_EllipseDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - GEOMImpl_IEllipse aCI (aFunction); - Standard_Integer aType = aFunction->GetType(); - - TopoDS_Shape aShape; - - if (aType == ELLIPSE_PNT_VEC_RR) { - Handle(GEOM_Function) aRefPoint = aCI.GetCenter(); - Handle(GEOM_Function) aRefVector = aCI.GetVector(); - TopoDS_Shape aShapePnt = aRefPoint->GetValue(); - TopoDS_Shape aShapeVec = aRefVector->GetValue(); - if (aShapePnt.ShapeType() == TopAbs_VERTEX && - aShapeVec.ShapeType() == TopAbs_EDGE) { - gp_Pnt aP = BRep_Tool::Pnt(TopoDS::Vertex(aShapePnt)); - TopoDS_Edge anE = TopoDS::Edge(aShapeVec); - TopoDS_Vertex V1, V2; - TopExp::Vertices(anE, V1, V2, Standard_True); - if (!V1.IsNull() && !V2.IsNull()) { - gp_Vec aV (BRep_Tool::Pnt(V1), BRep_Tool::Pnt(V2)); - gp_Ax2 anAxes (aP, aV); - gp_Elips anEll (anAxes, aCI.GetRMajor(), aCI.GetRMinor()); - aShape = BRepBuilderAPI_MakeEdge(anEll).Edge(); - } - } - } else { - } - - if (aShape.IsNull()) return 0; - - aFunction->SetValue(aShape); - - log.SetTouched(Label()); - - return 1; -} - - -//======================================================================= -//function : GEOMImpl_EllipseDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_EllipseDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_EllipseDriver", - sizeof(GEOMImpl_EllipseDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= -const Handle(GEOMImpl_EllipseDriver) Handle(GEOMImpl_EllipseDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_EllipseDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_EllipseDriver))) { - _anOtherObject = Handle(GEOMImpl_EllipseDriver)((Handle(GEOMImpl_EllipseDriver)&)AnObject); - } - } - - return _anOtherObject ; -} diff --git a/src/GEOMImpl/GEOMImpl_EllipseDriver.hxx b/src/GEOMImpl/GEOMImpl_EllipseDriver.hxx deleted file mode 100644 index 9fcc9e293..000000000 --- a/src/GEOMImpl/GEOMImpl_EllipseDriver.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// File : GEOMImpl_EllipseDriver.ixx -// Module : GEOMImpl - -#ifndef _GEOMImpl_EllipseDriver_HeaderFile -#define _GEOMImpl_EllipseDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_EllipseDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_EllipseDriver); - -class Handle(GEOMImpl_EllipseDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_EllipseDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_EllipseDriver)(const Handle(GEOMImpl_EllipseDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_EllipseDriver)(const GEOMImpl_EllipseDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_EllipseDriver)& operator=(const Handle(GEOMImpl_EllipseDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_EllipseDriver)& operator=(const GEOMImpl_EllipseDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_EllipseDriver* operator->() - { - return (GEOMImpl_EllipseDriver *)ControlAccess(); - } - - GEOMImpl_EllipseDriver* operator->() const - { - return (GEOMImpl_EllipseDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_EllipseDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_EllipseDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_EllipseDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_EllipseDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_EllipseDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_EllipseDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_EllipseDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_EllipseDriver) == AType || TFunction_Driver::IsKind(AType)); } - - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_ExportDriver.cxx b/src/GEOMImpl/GEOMImpl_ExportDriver.cxx deleted file mode 100644 index 19a2593c0..000000000 --- a/src/GEOMImpl/GEOMImpl_ExportDriver.cxx +++ /dev/null @@ -1,140 +0,0 @@ - -#include - -#include -#include -#include -#include - -#include -#include - -#include - -#ifdef WNT -#include -#else -#include -#endif - -#ifdef WNT -#define LibHandle HMODULE -#define LoadLib( name ) LoadLibrary( name ) -#define GetProc GetProcAddress -#define UnLoadLib( handle ) FreeLibrary( handle ); -#else -#define LibHandle void* -#define LoadLib( name ) dlopen( name, RTLD_LAZY ) -#define GetProc dlsym -#define UnLoadLib( handle ) dlclose( handle ); -#endif - -typedef int (*funcPoint)(const TopoDS_Shape&, const TCollection_AsciiString&); - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_ExportDriver::GetID() -{ - static Standard_GUID aExportDriver("FF1BBB58-5D14-4df2-980B-3A668264EA16"); - return aExportDriver; -} - - -//======================================================================= -//function : GEOMImpl_ExportDriver -//purpose : -//======================================================================= -GEOMImpl_ExportDriver::GEOMImpl_ExportDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_ExportDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - GEOMImpl_IImportExport aCI (aFunction); - - // retrieve the being exported shape - TopoDS_Shape aShape; - Handle(GEOM_Function) aRefFunction = aCI.GetOriginal(); - if (aRefFunction.IsNull()) return 0; - aShape = aRefFunction->GetValue(); - if (aShape.IsNull()) return 0; - // !!! set the result of function to be used by next operations - aFunction->SetValue(aShape); - - // retrieve the file and format names - TCollection_AsciiString aFileName = aCI.GetFileName(); - TCollection_AsciiString aLibName = aCI.GetPluginName(); - if (aFileName.IsEmpty() || aLibName.IsEmpty()) - return 0; - - // load plugin library - LibHandle anExportLib = LoadLib( aLibName.ToCString() ); - funcPoint fp = 0; - if ( anExportLib ) - fp = (funcPoint)GetProc( anExportLib, "Export" ); - - if ( !fp ) - return 0; - - // perform the export - int res = fp( aShape, aFileName ); - - // unload plugin library - UnLoadLib( anExportLib ); - if ( res ) - log.SetTouched(Label()); - - return res; -} - - -//======================================================================= -//function : GEOMImpl_ExportDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_ExportDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_ExportDriver", - sizeof(GEOMImpl_ExportDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= -const Handle(GEOMImpl_ExportDriver) Handle(GEOMImpl_ExportDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_ExportDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_ExportDriver))) { - _anOtherObject = Handle(GEOMImpl_ExportDriver)((Handle(GEOMImpl_ExportDriver)&)AnObject); - } - } - - return _anOtherObject ; -} diff --git a/src/GEOMImpl/GEOMImpl_ExportDriver.hxx b/src/GEOMImpl/GEOMImpl_ExportDriver.hxx deleted file mode 100644 index 795e5258d..000000000 --- a/src/GEOMImpl/GEOMImpl_ExportDriver.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// File : GEOMImpl_ExportDriver.ixx -// Module : GEOMImpl - -#ifndef _GEOMImpl_ExportDriver_HeaderFile -#define _GEOMImpl_ExportDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_ExportDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_ExportDriver); - -class Handle(GEOMImpl_ExportDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_ExportDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_ExportDriver)(const Handle(GEOMImpl_ExportDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_ExportDriver)(const GEOMImpl_ExportDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_ExportDriver)& operator=(const Handle(GEOMImpl_ExportDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_ExportDriver)& operator=(const GEOMImpl_ExportDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_ExportDriver* operator->() - { - return (GEOMImpl_ExportDriver *)ControlAccess(); - } - - GEOMImpl_ExportDriver* operator->() const - { - return (GEOMImpl_ExportDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_ExportDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_ExportDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_ExportDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_ExportDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_ExportDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_ExportDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_ExportDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_ExportDriver) == AType || TFunction_Driver::IsKind(AType)); } - - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_FilletDriver.cxx b/src/GEOMImpl/GEOMImpl_FilletDriver.cxx deleted file mode 100644 index 33cd76469..000000000 --- a/src/GEOMImpl/GEOMImpl_FilletDriver.cxx +++ /dev/null @@ -1,158 +0,0 @@ - -#include - -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include -#include - -#include -#include -#include - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_FilletDriver::GetID() -{ - static Standard_GUID aFilletDriver("FF1BBB41-5D14-4df2-980B-3A668264EA16"); - return aFilletDriver; -} - - -//======================================================================= -//function : GEOMImpl_FilletDriver -//purpose : -//======================================================================= -GEOMImpl_FilletDriver::GEOMImpl_FilletDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_FilletDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - GEOMImpl_IFillet aCI (aFunction); - Standard_Integer aType = aFunction->GetType(); - - TopoDS_Shape aShape; - - Handle(GEOM_Function) aRefShape = aCI.GetShape(); - TopoDS_Shape aShapeBase = aRefShape->GetValue(); - BRepFilletAPI_MakeFillet fill (aShapeBase); - - if (aType == FILLET_SHAPE_ALL) { - TopExp_Explorer Exp (aShapeBase, TopAbs_EDGE); - for (; Exp.More(); Exp.Next()) { - TopoDS_Edge E = TopoDS::Edge(Exp.Current()); - fill.Add(E); - } - } else if (aType == FILLET_SHAPE_EDGES) { - int aLen = aCI.GetLength(); - int ind = 1; - for (; ind <= aLen; ind++) { - TopoDS_Shape aShapeEdge; - if (GEOMImpl_ILocalOperations::GetSubShape - (aShapeBase, aCI.GetEdge(ind), aShapeEdge)) { - fill.Add(TopoDS::Edge(aShapeEdge)); - } - } - } else if (aType == FILLET_SHAPE_FACES) { - int aLen = aCI.GetLength(); - int ind = 1; - for (; ind <= aLen; ind++) { - TopoDS_Shape aShapeFace; - if (GEOMImpl_ILocalOperations::GetSubShape - (aShapeBase, aCI.GetFace(ind), aShapeFace)) { - TopExp_Explorer Exp (aShapeFace, TopAbs_EDGE); - for (; Exp.More(); Exp.Next()) { - fill.Add(TopoDS::Edge(Exp.Current())); - } - } - } - } else { - } - - for (int i = 1; i <= fill.NbContours(); i++) { - fill.SetRadius(aCI.GetR(), i, i); - } - fill.Build(); - if (!fill.IsDone()) { - StdFail_NotDone::Raise("Fillet can't be computed on the given shape with the given radius"); - } - aShape = fill.Shape(); - - if (aShape.IsNull()) return 0; - - // Check shape validity - BRepCheck_Analyzer ana (aShape, false); - if (!ana.IsValid()) { - StdFail_NotDone::Raise("Fillet algorithm have produced an invalid shape result"); - } - - aFunction->SetValue(aShape); - - log.SetTouched(Label()); - - return 1; -} - - -//======================================================================= -//function : GEOMImpl_FilletDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_FilletDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_FilletDriver", - sizeof(GEOMImpl_FilletDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= -const Handle(GEOMImpl_FilletDriver) Handle(GEOMImpl_FilletDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_FilletDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_FilletDriver))) { - _anOtherObject = Handle(GEOMImpl_FilletDriver)((Handle(GEOMImpl_FilletDriver)&)AnObject); - } - } - - return _anOtherObject ; -} diff --git a/src/GEOMImpl/GEOMImpl_FilletDriver.hxx b/src/GEOMImpl/GEOMImpl_FilletDriver.hxx deleted file mode 100644 index c6a3f9e0b..000000000 --- a/src/GEOMImpl/GEOMImpl_FilletDriver.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// File : GEOMImpl_FilletDriver.ixx -// Module : GEOMImpl - -#ifndef _GEOMImpl_FilletDriver_HeaderFile -#define _GEOMImpl_FilletDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_FilletDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_FilletDriver); - -class Handle(GEOMImpl_FilletDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_FilletDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_FilletDriver)(const Handle(GEOMImpl_FilletDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_FilletDriver)(const GEOMImpl_FilletDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_FilletDriver)& operator=(const Handle(GEOMImpl_FilletDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_FilletDriver)& operator=(const GEOMImpl_FilletDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_FilletDriver* operator->() - { - return (GEOMImpl_FilletDriver *)ControlAccess(); - } - - GEOMImpl_FilletDriver* operator->() const - { - return (GEOMImpl_FilletDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_FilletDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_FilletDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_FilletDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_FilletDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_FilletDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_FilletDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_FilletDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_FilletDriver) == AType || TFunction_Driver::IsKind(AType)); } - - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_FillingDriver.cxx b/src/GEOMImpl/GEOMImpl_FillingDriver.cxx deleted file mode 100644 index 43e206ef1..000000000 --- a/src/GEOMImpl/GEOMImpl_FillingDriver.cxx +++ /dev/null @@ -1,167 +0,0 @@ - -#include - -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_FillingDriver::GetID() -{ - static Standard_GUID aFillingDriver ("FF1BBB62-5D14-4df2-980B-3A668264EA16"); - return aFillingDriver; -} - - -//======================================================================= -//function : GEOMImpl_FillingDriver -//purpose : -//======================================================================= - -GEOMImpl_FillingDriver::GEOMImpl_FillingDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_FillingDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - if (aFunction.IsNull()) return 0; - - if (aFunction->GetType() != BASIC_FILLING) return 0; - - GEOMImpl_IFilling IF (aFunction); - Handle(GEOM_Function) aShapeFunction = IF.GetShape(); - if (aShapeFunction.IsNull()) return 0; - TopoDS_Shape aShape = aShapeFunction->GetValue(); - if (aShape.IsNull() || aShape.ShapeType() != TopAbs_COMPOUND) return 0; - - Standard_Integer mindeg = IF.GetMinDeg(); - Standard_Integer maxdeg = IF.GetMaxDeg(); - Standard_Real tol3d = IF.GetTol2D(); - Standard_Real tol2d = IF.GetTol3D(); - Standard_Integer nbiter = IF.GetNbIter(); - - if (mindeg > maxdeg) { - Standard_RangeError::Raise("Minimal degree can not be more than maximal degree"); - } - - /* we verify the contents of the shape */ - TopExp_Explorer Ex; - TopoDS_Shape Scurrent; - Standard_Real First, Last; - Handle(Geom_Curve) C; - GeomFill_SectionGenerator Section; - - Standard_Integer i = 0; - for (Ex.Init(aShape, TopAbs_EDGE); Ex.More(); Ex.Next()) { - Scurrent = Ex.Current() ; - if (Scurrent.IsNull() || Scurrent.ShapeType() != TopAbs_EDGE) return 0; - C = BRep_Tool::Curve(TopoDS::Edge(Scurrent), First, Last); - C = new Geom_TrimmedCurve(C, First, Last); - Section.AddCurve(C); - i++; - } - - /* a 'tolerance' is used to compare 2 knots : see GeomFill_Generator.cdl */ - Section.Perform(Precision::Confusion()); - Handle(GeomFill_Line) Line = new GeomFill_Line(i); - - GeomFill_AppSurf App (mindeg, maxdeg, tol3d, tol2d, nbiter); /* user parameters */ - App.Perform(Line, Section); - - if (!App.IsDone()) return 0; - Standard_Integer UDegree, VDegree, NbUPoles, NbVPoles, NbUKnots, NbVKnots; - App.SurfShape(UDegree, VDegree, NbUPoles, NbVPoles, NbUKnots, NbVKnots); - Handle(Geom_BSplineSurface) GBS = new Geom_BSplineSurface - (App.SurfPoles(), App.SurfWeights(), App.SurfUKnots(), App.SurfVKnots(), - App.SurfUMults(), App.SurfVMults(), App.UDegree(), App.VDegree()); - - if (GBS.IsNull()) return 0; - aShape = BRepBuilderAPI_MakeFace(GBS); - - /* We test the validity of resulting shape */ - if (!BRepAlgo::IsValid((aShape))) { - Standard_ConstructionError::Raise("Algorithm have produced an invalid shape result"); - return 0; - } - - aFunction->SetValue(aShape); - - log.SetTouched(Label()); - return 1; -} - - -//======================================================================= -//function : GEOMImpl_FillingDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_FillingDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_FillingDriver", - sizeof(GEOMImpl_FillingDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= - -const Handle(GEOMImpl_FillingDriver) Handle(GEOMImpl_FillingDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_FillingDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_FillingDriver))) { - _anOtherObject = Handle(GEOMImpl_FillingDriver)((Handle(GEOMImpl_FillingDriver)&)AnObject); - } - } - - return _anOtherObject ; -} - - diff --git a/src/GEOMImpl/GEOMImpl_FillingDriver.hxx b/src/GEOMImpl/GEOMImpl_FillingDriver.hxx deleted file mode 100644 index 89ac7ce98..000000000 --- a/src/GEOMImpl/GEOMImpl_FillingDriver.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// File : GEOMImpl_FillingDriver.hxx -// Module : GEOMImpl - -#ifndef _GEOMImpl_FillingDriver_HeaderFile -#define _GEOMImpl_FillingDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_FillingDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_FillingDriver); - -class Handle(GEOMImpl_FillingDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_FillingDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_FillingDriver)(const Handle(GEOMImpl_FillingDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_FillingDriver)(const GEOMImpl_FillingDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_FillingDriver)& operator=(const Handle(GEOMImpl_FillingDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_FillingDriver)& operator=(const GEOMImpl_FillingDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_FillingDriver* operator->() - { - return (GEOMImpl_FillingDriver *)ControlAccess(); - } - - GEOMImpl_FillingDriver* operator->() const - { - return (GEOMImpl_FillingDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_FillingDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_FillingDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_FillingDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_FillingDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_FillingDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_FillingDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_FillingDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_FillingDriver) == AType || TFunction_Driver::IsKind(AType)); } - - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_Gen.cxx b/src/GEOMImpl/GEOMImpl_Gen.cxx deleted file mode 100644 index 2420f7f83..000000000 --- a/src/GEOMImpl/GEOMImpl_Gen.cxx +++ /dev/null @@ -1,356 +0,0 @@ -#ifdef WNT -#pragma warning( disable:4786 ) -#endif - -#include - -#include - -#include "utilities.h" -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//============================================================================= -/*! - * default constructor: - */ -//============================================================================= - -GEOMImpl_Gen::GEOMImpl_Gen() -{ - MESSAGE("GEOMImpl_Gen::GEOMImpl_Gen"); - _mapOfBasicOperations.clear(); - - // Basic elements - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_PointDriver::GetID(), new GEOMImpl_PointDriver()); - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_VectorDriver::GetID(), new GEOMImpl_VectorDriver()); - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_LineDriver::GetID(), new GEOMImpl_LineDriver()); - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_PlaneDriver::GetID(), new GEOMImpl_PlaneDriver()); - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_MarkerDriver::GetID(), new GEOMImpl_MarkerDriver()); - - // Curves - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_ArcDriver::GetID(), new GEOMImpl_ArcDriver()); - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_CircleDriver::GetID(), new GEOMImpl_CircleDriver()); - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_EllipseDriver::GetID(), new GEOMImpl_EllipseDriver()); - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_PolylineDriver::GetID(), new GEOMImpl_PolylineDriver()); - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_SplineDriver::GetID(), new GEOMImpl_SplineDriver()); - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_SketcherDriver::GetID(), new GEOMImpl_SketcherDriver()); - - // 3D Primitives - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_BoxDriver::GetID(), new GEOMImpl_BoxDriver()); - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_ConeDriver::GetID(), new GEOMImpl_ConeDriver()); - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_CylinderDriver::GetID(), new GEOMImpl_CylinderDriver()); - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_PrismDriver::GetID(), new GEOMImpl_PrismDriver()); - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_PipeDriver::GetID(), new GEOMImpl_PipeDriver()); - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_RevolutionDriver::GetID(), new GEOMImpl_RevolutionDriver()); - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_SphereDriver::GetID(), new GEOMImpl_SphereDriver()); - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_TorusDriver::GetID(), new GEOMImpl_TorusDriver()); - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_FillingDriver::GetID(), new GEOMImpl_FillingDriver()); - - // Shapes Operations - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_ShapeDriver::GetID(), new GEOMImpl_ShapeDriver()); - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_GlueDriver::GetID(), new GEOMImpl_GlueDriver()); - - // Blocks Operations - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_BlockDriver::GetID(), new GEOMImpl_BlockDriver()); - - // Boolean Operations, Partition - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_BooleanDriver::GetID(), new GEOMImpl_BooleanDriver()); - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_PartitionDriver::GetID(), new GEOMImpl_PartitionDriver()); - - // Local Operations - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_ChamferDriver::GetID(), new GEOMImpl_ChamferDriver()); - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_FilletDriver::GetID(), new GEOMImpl_FilletDriver()); - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_ArchimedeDriver::GetID(), new GEOMImpl_ArchimedeDriver()); - - // Geometrical Transformations, Offset, Scale - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_TranslateDriver::GetID(), new GEOMImpl_TranslateDriver()); - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_RotateDriver::GetID(), new GEOMImpl_RotateDriver()); - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_MirrorDriver::GetID(), new GEOMImpl_MirrorDriver()); - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_OffsetDriver::GetID(), new GEOMImpl_OffsetDriver()); - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_ScaleDriver::GetID(), new GEOMImpl_ScaleDriver()); - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_PositionDriver::GetID(), new GEOMImpl_PositionDriver()); - - // Insert Operations (Copy, Import/Export) - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_CopyDriver::GetID(), new GEOMImpl_CopyDriver()); - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_ImportDriver::GetID(), new GEOMImpl_ImportDriver()); - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_ExportDriver::GetID(), new GEOMImpl_ExportDriver()); - - // Shape Healing - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_HealingDriver::GetID(), new GEOMImpl_HealingDriver()); - - // Measurements - TFunction_DriverTable::Get()->AddDriver(GEOMImpl_MeasureDriver::GetID(), new GEOMImpl_MeasureDriver()); - - SetEngine(this); -} - -//============================================================================= -/*! - * - */ -//============================================================================= - -GEOMImpl_Gen::~GEOMImpl_Gen() -{ - MESSAGE("GEOMImpl_Gen::~GEOMImpl_Gen"); - - std::map::iterator aBasicIter = _mapOfBasicOperations.begin(); - for (; aBasicIter != _mapOfBasicOperations.end(); aBasicIter++) - delete (*aBasicIter).second; - - std::map::iterator aTransformIter = _mapOfTransformOperations.begin(); - for (; aTransformIter != _mapOfTransformOperations.end(); aTransformIter++) - delete (*aTransformIter).second; - - std::map::iterator a3DPrimIter = _mapOf3DPrimOperations.begin(); - for (; a3DPrimIter != _mapOf3DPrimOperations.end(); a3DPrimIter++) - delete (*a3DPrimIter).second; - - std::map::iterator aShapesIter = _mapOfShapesOperations.begin(); - for (; aShapesIter != _mapOfShapesOperations.end(); aShapesIter++) - delete (*aShapesIter).second; - - std::map::iterator aBlocksIter = _mapOfBlocksOperations.begin(); - for (; aBlocksIter != _mapOfBlocksOperations.end(); aBlocksIter++) - delete (*aBlocksIter).second; - - std::map::iterator aBooleanIter = _mapOfBooleanOperations.begin(); - for (; aBooleanIter != _mapOfBooleanOperations.end(); aBooleanIter++) - delete (*aBooleanIter).second; - - std::map::iterator aHealingIter = _mapOfHealingOperations.begin(); - for (; aHealingIter != _mapOfHealingOperations.end(); aHealingIter++) - delete (*aHealingIter).second; - - std::map::iterator aCurvesIter = _mapOfCurvesOperations.begin(); - for (; aCurvesIter != _mapOfCurvesOperations.end(); aCurvesIter++) - delete (*aCurvesIter).second; - - std::map::iterator aLocalIter = _mapOfLocalOperations.begin(); - for (; aLocalIter != _mapOfLocalOperations.end(); aLocalIter++) - delete (*aLocalIter).second; - - std::map::iterator aInsertIter = _mapOfInsertOperations.begin(); - for (; aInsertIter != _mapOfInsertOperations.end(); aInsertIter++) - delete (*aInsertIter).second; - - std::map::iterator aMeasureIter = _mapOfMeasureOperations.begin(); - for (; aMeasureIter != _mapOfMeasureOperations.end(); aMeasureIter++) - delete (*aMeasureIter).second; - - std::map::iterator aGroupIter = _mapOfGroupOperations.begin(); - for (; aGroupIter != _mapOfGroupOperations.end(); aGroupIter++) - delete (*aGroupIter).second; -} - -//============================================================================= -/*! - * GetIBasicOperations - */ -//============================================================================= -GEOMImpl_IBasicOperations* GEOMImpl_Gen::GetIBasicOperations(int theDocID) -{ - if(_mapOfBasicOperations.find(theDocID) == _mapOfBasicOperations.end()) { - _mapOfBasicOperations[theDocID] = new GEOMImpl_IBasicOperations(this, theDocID); - } - - return _mapOfBasicOperations[theDocID]; -} - -//============================================================================= -/*! - * GetITransformOperations - */ -//============================================================================= -GEOMImpl_ITransformOperations* GEOMImpl_Gen::GetITransformOperations(int theDocID) -{ - if(_mapOfTransformOperations.find(theDocID) == _mapOfTransformOperations.end()) { - _mapOfTransformOperations[theDocID] = new GEOMImpl_ITransformOperations(this, theDocID); - } - - return _mapOfTransformOperations[theDocID]; -} - -//============================================================================= -/*! - * GetIBooleanOperations - */ -//============================================================================= -GEOMImpl_IBooleanOperations* GEOMImpl_Gen::GetIBooleanOperations(int theDocID) -{ - if(_mapOfBooleanOperations.find(theDocID) == _mapOfBooleanOperations.end()) { - _mapOfBooleanOperations[theDocID] = new GEOMImpl_IBooleanOperations(this, theDocID); - } - - return _mapOfBooleanOperations[theDocID]; -} - -//============================================================================= -/*! - * GetIHealingOperations - */ -//============================================================================= -GEOMImpl_IHealingOperations* GEOMImpl_Gen::GetIHealingOperations(int theDocID) -{ - if(_mapOfHealingOperations.find(theDocID) == _mapOfHealingOperations.end()) { - _mapOfHealingOperations[theDocID] = new GEOMImpl_IHealingOperations(this, theDocID); - } - - return _mapOfHealingOperations[theDocID]; -} - -//============================================================================= -/*! - * GetI3DPrimOperations - */ -//============================================================================= -GEOMImpl_I3DPrimOperations* GEOMImpl_Gen::GetI3DPrimOperations(int theDocID) -{ - if(_mapOf3DPrimOperations.find(theDocID) == _mapOf3DPrimOperations.end()) { - _mapOf3DPrimOperations[theDocID] = new GEOMImpl_I3DPrimOperations(this, theDocID); - } - - return _mapOf3DPrimOperations[theDocID]; -} - -//============================================================================= -/*! - * GetIShapesOperations - */ -//============================================================================= -GEOMImpl_IShapesOperations* GEOMImpl_Gen::GetIShapesOperations(int theDocID) -{ - if(_mapOfShapesOperations.find(theDocID) == _mapOfShapesOperations.end()) { - _mapOfShapesOperations[theDocID] = new GEOMImpl_IShapesOperations(this, theDocID); - } - - return _mapOfShapesOperations[theDocID]; -} - -//============================================================================= -/*! - * GetIBlocksOperations - */ -//============================================================================= -GEOMImpl_IBlocksOperations* GEOMImpl_Gen::GetIBlocksOperations(int theDocID) -{ - if(_mapOfBlocksOperations.find(theDocID) == _mapOfBlocksOperations.end()) { - _mapOfBlocksOperations[theDocID] = new GEOMImpl_IBlocksOperations(this, theDocID); - } - - return _mapOfBlocksOperations[theDocID]; -} - -//============================================================================= -/*! - * GetICurvesOperations - */ -//============================================================================= -GEOMImpl_ICurvesOperations* GEOMImpl_Gen::GetICurvesOperations(int theDocID) -{ - if(_mapOfCurvesOperations.find(theDocID) == _mapOfCurvesOperations.end()) { - _mapOfCurvesOperations[theDocID] = new GEOMImpl_ICurvesOperations(this, theDocID); - } - - return _mapOfCurvesOperations[theDocID]; -} - -//============================================================================= -/*! - * GetILocalOperations - */ -//============================================================================= -GEOMImpl_ILocalOperations* GEOMImpl_Gen::GetILocalOperations(int theDocID) -{ - if(_mapOfLocalOperations.find(theDocID) == _mapOfLocalOperations.end()) { - _mapOfLocalOperations[theDocID] = new GEOMImpl_ILocalOperations(this, theDocID); - } - - return _mapOfLocalOperations[theDocID]; -} - -//============================================================================= -/*! - * GetIInsertOperations - */ -//============================================================================= -GEOMImpl_IInsertOperations* GEOMImpl_Gen::GetIInsertOperations(int theDocID) -{ - if(_mapOfInsertOperations.find(theDocID) == _mapOfInsertOperations.end()) { - _mapOfInsertOperations[theDocID] = new GEOMImpl_IInsertOperations(this, theDocID); - } - - return _mapOfInsertOperations[theDocID]; -} - -//============================================================================= -/*! - * GetIMeasureOperations - */ -//============================================================================= -GEOMImpl_IMeasureOperations* GEOMImpl_Gen::GetIMeasureOperations(int theDocID) -{ - if(_mapOfMeasureOperations.find(theDocID) == _mapOfMeasureOperations.end()) { - _mapOfMeasureOperations[theDocID] = new GEOMImpl_IMeasureOperations(this, theDocID); - } - - return _mapOfMeasureOperations[theDocID]; -} - -//============================================================================= -/*! - * GetIGroupOperations - */ -//============================================================================= -GEOMImpl_IGroupOperations* GEOMImpl_Gen::GetIGroupOperations(int theDocID) -{ - if(_mapOfGroupOperations.find(theDocID) == _mapOfGroupOperations.end()) { - _mapOfGroupOperations[theDocID] = new GEOMImpl_IGroupOperations(this, theDocID); - } - - return _mapOfGroupOperations[theDocID]; -} diff --git a/src/GEOMImpl/GEOMImpl_Gen.hxx b/src/GEOMImpl/GEOMImpl_Gen.hxx deleted file mode 100644 index 8b1b072e5..000000000 --- a/src/GEOMImpl/GEOMImpl_Gen.hxx +++ /dev/null @@ -1,73 +0,0 @@ - -#ifndef _GEOMImpl_GEN_HXX_ -#define _GEOMImpl_GEN_HXX_ - -#include - -#include "GEOMImpl_IBasicOperations.hxx" -#include "GEOMImpl_ITransformOperations.hxx" -#include "GEOMImpl_I3DPrimOperations.hxx" -#include "GEOMImpl_IShapesOperations.hxx" -#include "GEOMImpl_IBlocksOperations.hxx" -#include "GEOMImpl_IBooleanOperations.hxx" -#include "GEOMImpl_IHealingOperations.hxx" -#include "GEOMImpl_ICurvesOperations.hxx" -#include "GEOMImpl_ILocalOperations.hxx" -#include "GEOMImpl_IInsertOperations.hxx" -#include "GEOMImpl_IMeasureOperations.hxx" -#include "GEOMImpl_IGroupOperations.hxx" -#include "GEOM_Engine.hxx" - -#ifdef WNT -#include -#else -#define SALOME_WNT_EXPORT -#endif - -class SALOME_WNT_EXPORT GEOMImpl_Gen : public GEOM_Engine -{ - public: - GEOMImpl_Gen(); - ~GEOMImpl_Gen(); - - GEOMImpl_IBasicOperations* GetIBasicOperations(int theDocID); - - GEOMImpl_ITransformOperations* GetITransformOperations(int theDocID); - - GEOMImpl_I3DPrimOperations* GetI3DPrimOperations(int theDocID); - - GEOMImpl_IShapesOperations* GetIShapesOperations(int theDocID); - - GEOMImpl_IBlocksOperations* GetIBlocksOperations(int theDocID); - - GEOMImpl_IMeasureOperations* GetIMeasureOperations(int theDocID); - - GEOMImpl_IBooleanOperations* GetIBooleanOperations(int theDocID); - - GEOMImpl_ICurvesOperations* GetICurvesOperations(int theDocID); - - GEOMImpl_ILocalOperations* GetILocalOperations(int theDocID); - - GEOMImpl_IInsertOperations* GetIInsertOperations(int theDocID); - - GEOMImpl_IHealingOperations* GetIHealingOperations(int theDocID); - - GEOMImpl_IGroupOperations* GetIGroupOperations(int theDocID); - - private: - - std::map _mapOfBasicOperations; - std::map _mapOfTransformOperations; - std::map _mapOf3DPrimOperations; - std::map _mapOfShapesOperations; - std::map _mapOfBlocksOperations; - std::map _mapOfBooleanOperations; - std::map _mapOfHealingOperations; - std::map _mapOfCurvesOperations; - std::map _mapOfLocalOperations; - std::map _mapOfInsertOperations; - std::map _mapOfMeasureOperations; - std::map _mapOfGroupOperations; -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_GlueDriver.cxx b/src/GEOMImpl/GEOMImpl_GlueDriver.cxx deleted file mode 100644 index d9ed67437..000000000 --- a/src/GEOMImpl/GEOMImpl_GlueDriver.cxx +++ /dev/null @@ -1,313 +0,0 @@ - -#include - -#include -#include -#include - -#include -#include - -#include - -#include "utilities.h" - -#include - -#include -#include -#include -#include -#include - -#include -#include - -#define MSG_BAD_TOLERANCE "Tolerance is too big" -#define MSG_BAD_ARG_SHAPE "Argument shape is not a compound of hexahedral solids" - -//======================================================================= -//function : GEOMImpl_GlueDriver -//purpose : -//======================================================================= -GEOMImpl_GlueDriver::GEOMImpl_GlueDriver() -{ -} - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_GlueDriver::GetID() -{ - static Standard_GUID aGlueDriver("FF1BBB63-5D14-4df2-980B-3A668264EA16"); - return aGlueDriver; -} - -//======================================================================= -//function : GlueFacesWithWarnings -//purpose : -//======================================================================= -TopoDS_Shape GEOMImpl_GlueDriver::GlueFacesWithWarnings (const TopoDS_Shape& theShape, - const Standard_Real theTolerance, - TCollection_AsciiString& theWarning) const -{ - Standard_Integer iErr, iWrn; - TopoDS_Shape aRes; - GEOMAlgo_Gluer aGluer; - - aGluer.SetShape(theShape); - aGluer.SetTolerance(theTolerance); - aGluer.SetCheckGeometry(Standard_True); - - aGluer.Perform(); - - iErr = aGluer.ErrorStatus(); - if (iErr) { - switch (iErr) { - case 2: - Standard_Failure::Raise("No vertices found in source shape"); - break; - case 3: - case 4: - Standard_Failure::Raise(MSG_BAD_TOLERANCE " or " MSG_BAD_ARG_SHAPE); - break; - case 5: - Standard_Failure::Raise("Source shape is Null"); - break; - case 6: - Standard_Failure::Raise("Result shape is Null"); - break; - case 100: - Standard_Failure::Raise(MSG_BAD_TOLERANCE); - break; - case 101: - case 102: - Standard_Failure::Raise(MSG_BAD_ARG_SHAPE); - break; - case 200: - Standard_Failure::Raise("Error occured during check of geometric coincidence"); - break; - default: - { - // description of all errors see in GEOMAlgo_Gluer.cxx - TCollection_AsciiString aMsg ("Error in GEOMAlgo_Gluer with code "); - aMsg += TCollection_AsciiString(iErr); - Standard_Failure::Raise(aMsg.ToCString()); - break; - } - } - return aRes; - } - - iWrn = aGluer.WarningStatus(); - if (iWrn) { - switch (iWrn) { - case 1: - { - Standard_Integer nbAlone = aGluer.AloneShapes(); - theWarning = TCollection_AsciiString(nbAlone); - theWarning += " solid(s) can not be glued by faces"; - } - break; - default: - // description of all warnings see in GEOMAlgo_Gluer.cxx - theWarning = "Warning in GEOMAlgo_Gluer with code "; - theWarning += TCollection_AsciiString(iWrn); - break; - } - } - - aRes = aGluer.Result(); - - // Fill history to be used by GetInPlace functionality - TopTools_IndexedMapOfShape aResIndices; - TopExp::MapShapes(aRes, aResIndices); - - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - // history for all argument shapes - TDF_LabelSequence aLabelSeq; - aFunction->GetDependency(aLabelSeq); - Standard_Integer nbArg = aLabelSeq.Length(); - - for (Standard_Integer iarg = 1; iarg <= nbArg; iarg++) { - - TDF_Label anArgumentRefLabel = aLabelSeq.Value(iarg); - - Handle(GEOM_Object) anArgumentObject = GEOM_Object::GetReferencedObject(anArgumentRefLabel); - TopoDS_Shape anArgumentShape = anArgumentObject->GetValue(); - - TopTools_IndexedMapOfShape anArgumentIndices; - TopExp::MapShapes(anArgumentShape, anArgumentIndices); - Standard_Integer nbArgumentEntities = anArgumentIndices.Extent(); - - // Find corresponding label in history - TDF_Label anArgumentHistoryLabel = - aFunction->GetArgumentHistoryEntry(anArgumentRefLabel, Standard_True); - - for (Standard_Integer ie = 1; ie <= nbArgumentEntities; ie++) { - TopoDS_Shape anEntity = anArgumentIndices.FindKey(ie); - const TopTools_ListOfShape& aModified = aGluer.Modified(anEntity); - Standard_Integer nbModified = aModified.Extent(); - - if (nbModified > 0) { - TDF_Label aWhatHistoryLabel = anArgumentHistoryLabel.FindChild(ie, Standard_True); - Handle(TDataStd_IntegerArray) anAttr = - TDataStd_IntegerArray::Set(aWhatHistoryLabel, 1, nbModified); - - TopTools_ListIteratorOfListOfShape itM (aModified); - for (int im = 1; itM.More(); itM.Next(), ++im) { - int id = aResIndices.FindIndex(itM.Value()); - anAttr->SetValue(im, id); - } - } - } - } - - return aRes; -} - -//======================================================================= -//function : GlueFaces -//purpose : -//======================================================================= -TopoDS_Shape GEOMImpl_GlueDriver::GlueFaces (const TopoDS_Shape& theShape, - const Standard_Real theTolerance) -{ - Standard_Integer iErr, iWrn; - TopoDS_Shape aRes; - GEOMAlgo_Gluer aGluer; - - aGluer.SetShape(theShape); - aGluer.SetTolerance(theTolerance); - aGluer.SetCheckGeometry(Standard_True); - - aGluer.Perform(); - - iErr = aGluer.ErrorStatus(); - if (iErr) { - switch (iErr) { - case 2: - Standard_Failure::Raise("No vertices found in source shape"); - break; - case 5: - Standard_Failure::Raise("Source shape is Null"); - break; - case 6: - Standard_Failure::Raise("Result shape is Null"); - break; - case 200: - Standard_Failure::Raise("Error occured during check of geometric coincidence"); - break; - default: - { - // description of all errors see in GEOMAlgo_Gluer.cxx - TCollection_AsciiString aMsg ("Error in GEOMAlgo_Gluer with code "); - aMsg += TCollection_AsciiString(iErr); - Standard_Failure::Raise(aMsg.ToCString()); - break; - } - } - return aRes; - } - - iWrn = aGluer.WarningStatus(); - if (iWrn) { - switch (iWrn) { - case 1: - MESSAGE("Some shapes can not be glued by faces"); - break; - default: - // description of all warnings see in GEOMAlgo_Gluer.cxx - MESSAGE("Warning in GEOMAlgo_Gluer with code " << iWrn); - break; - } - } - - aRes = aGluer.Result(); - - return aRes; -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_GlueDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - GEOMImpl_IGlue aCI (aFunction); - Standard_Integer aType = aFunction->GetType(); - - TopoDS_Shape aShape; - TCollection_AsciiString aWrn; - - if (aType == GLUE_FACES) { - Handle(GEOM_Function) aRefBase = aCI.GetBase(); - TopoDS_Shape aShapeBase = aRefBase->GetValue(); - if (aShapeBase.IsNull()) { - Standard_NullObject::Raise("Shape for gluing is null"); - } - - Standard_Real tol3d = aCI.GetTolerance(); - aShape = GlueFacesWithWarnings(aShapeBase, tol3d, aWrn); - } else { - } - - if (aShape.IsNull()) return 0; - - aFunction->SetValue(aShape); - - log.SetTouched(Label()); - - if (!aWrn.IsEmpty()) { - Standard_Failure::Raise(aWrn.ToCString()); - } - - return 1; -} - -//======================================================================= -//function : GEOMImpl_GlueDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_GlueDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_GlueDriver", - sizeof(GEOMImpl_GlueDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= -const Handle(GEOMImpl_GlueDriver) Handle(GEOMImpl_GlueDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_GlueDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_GlueDriver))) { - _anOtherObject = Handle(GEOMImpl_GlueDriver)((Handle(GEOMImpl_GlueDriver)&)AnObject); - } - } - - return _anOtherObject ; -} diff --git a/src/GEOMImpl/GEOMImpl_GlueDriver.hxx b/src/GEOMImpl/GEOMImpl_GlueDriver.hxx deleted file mode 100644 index c8f2679cd..000000000 --- a/src/GEOMImpl/GEOMImpl_GlueDriver.hxx +++ /dev/null @@ -1,147 +0,0 @@ -// File : GEOMImpl_GlueDriver.ixx -// Module : GEOMImpl - -#ifndef _GEOMImpl_GlueDriver_HeaderFile -#define _GEOMImpl_GlueDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_GlueDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_GlueDriver); - -class Handle(GEOMImpl_GlueDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_GlueDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_GlueDriver)(const Handle(GEOMImpl_GlueDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_GlueDriver)(const GEOMImpl_GlueDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_GlueDriver)& operator=(const Handle(GEOMImpl_GlueDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_GlueDriver)& operator=(const GEOMImpl_GlueDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_GlueDriver* operator->() - { - return (GEOMImpl_GlueDriver *)ControlAccess(); - } - - GEOMImpl_GlueDriver* operator->() const - { - return (GEOMImpl_GlueDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_GlueDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_GlueDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif -#include -#include - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_GlueDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_GlueDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_GlueDriver() {}; - -Standard_EXPORT static TopoDS_Shape GlueFaces (const TopoDS_Shape& theShape, - const Standard_Real theTolerance); - -Standard_EXPORT TopoDS_Shape GlueFacesWithWarnings (const TopoDS_Shape& theShape, - const Standard_Real theTolerance, - TCollection_AsciiString& theWarning) const; - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_GlueDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_GlueDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_GlueDriver) == AType || TFunction_Driver::IsKind(AType)); } - - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_HealingDriver.cxx b/src/GEOMImpl/GEOMImpl_HealingDriver.cxx deleted file mode 100644 index b1fc5e41b..000000000 --- a/src/GEOMImpl/GEOMImpl_HealingDriver.cxx +++ /dev/null @@ -1,406 +0,0 @@ - -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include - -//======================================================================= -//function : raiseNotDoneExeption -//purpose : global function: forms error message and raises exeption -//======================================================================= -void raiseNotDoneExeption( const int theErrorStatus ) -{ - switch ( theErrorStatus ) - { - case ShHealOper_NotError: StdFail_NotDone::Raise( "ShHealOper_NotError_msg" ); - case ShHealOper_InvalidParameters: StdFail_NotDone::Raise( "ShHealOper_InvalidParameters_msg" ); - case ShHealOper_ErrorExecution: - default: StdFail_NotDone::Raise( "ShHealOper_ErrorExecution_msg" ); - } -} - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_HealingDriver::GetID() -{ - static Standard_GUID aHealingDriver("FF1BBB61-5D14-4df2-980B-3A668264EA16"); - return aHealingDriver; -} - - -//======================================================================= -//function : GEOMImpl_HealingDriver -//purpose : -//======================================================================= - -GEOMImpl_HealingDriver::GEOMImpl_HealingDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_HealingDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - if (aFunction.IsNull()) return 0; - - GEOMImpl_IHealing HI (aFunction); - Standard_Integer aType = aFunction->GetType(); - Handle(GEOM_Function) anOriginalFunction = HI.GetOriginal(); - if (anOriginalFunction.IsNull()) return 0; - TopoDS_Shape aShape, anOriginalShape = anOriginalFunction->GetValue(); - if (anOriginalShape.IsNull()) return 0; - - switch (aType) - { - case SHAPE_PROCESS: - ShapeProcess(&HI, anOriginalShape, aShape); - break; - case SUPPRESS_FACES: - SuppressFaces(&HI, anOriginalShape, aShape); - break; - case CLOSE_CONTOUR: - CloseContour(&HI, anOriginalShape, aShape); - break; - case REMOVE_INT_WIRES: - RemoveIntWires(&HI, anOriginalShape, aShape); - break; - case FILL_HOLES: - RemoveHoles(&HI, anOriginalShape, aShape); - break; - case SEWING: - Sew(&HI, anOriginalShape, aShape); - break; - case DIVIDE_EDGE: - AddPointOnEdge(&HI, anOriginalShape, aShape); - break; - default: - return 0; - } - - if (aShape.IsNull()) - raiseNotDoneExeption( ShHealOper_ErrorExecution ); - - aFunction->SetValue(aShape); - - log.SetTouched(Label()); - return 1; -} - -//======================================================================= -//function : ShapeProcess -//purpose : -//======================================================================= -Standard_Boolean GEOMImpl_HealingDriver::ShapeProcess (GEOMImpl_IHealing* theHI, - const TopoDS_Shape& theOriginalShape, - TopoDS_Shape& theOutShape) const -{ - Handle(TColStd_HArray1OfExtendedString) anOperators = theHI->GetOperators(); - Handle(TColStd_HArray1OfExtendedString) aParams = theHI->GetParameters(); - Handle(TColStd_HArray1OfExtendedString) aValues = theHI->GetValues(); - - if (anOperators.IsNull() || anOperators->Length() <= 0) - return Standard_False; - - Standard_Integer nbParams = 0, nbValues = 0; - if (!aParams.IsNull()) { - nbParams = aParams->Length(); - } - if (!aValues.IsNull()) { - nbValues = aValues->Length(); - } - if (nbParams != nbValues) - return Standard_False; - - ShHealOper_ShapeProcess aHealer; - TColStd_SequenceOfAsciiString anOperatorsAS, aParamsAS, aValuesAS; - int i; - for (i = 1; i <= anOperators->Length(); i++) - anOperatorsAS.Append(TCollection_AsciiString(anOperators->Value(i))); - - aHealer.SetOperators(anOperatorsAS); - - for (i = 1; i <= nbParams; i++) { - aHealer.SetParameter(TCollection_AsciiString(aParams->Value(i)), - TCollection_AsciiString(aValues->Value(i))); - } - - aHealer.Perform(theOriginalShape, theOutShape); - - if (!aHealer.isDone()) - raiseNotDoneExeption( ShHealOper_NotError ); - - return Standard_True; -} - -//======================================================================= -//function : SupressFaces -//purpose : -//======================================================================= -Standard_Boolean GEOMImpl_HealingDriver::SuppressFaces (GEOMImpl_IHealing* theHI, - const TopoDS_Shape& theOriginalShape, - TopoDS_Shape& theOutShape) const -{ - Handle(TColStd_HArray1OfInteger) aFaces = theHI->GetFaces(); - - ShHealOper_RemoveFace aHealer (theOriginalShape); - - Standard_Boolean aResult = Standard_False; - if (aFaces.IsNull()) // remove all faces - { - aResult = aHealer.Perform(); - } else { - TopTools_SequenceOfShape aShapesFaces; - TopTools_IndexedMapOfShape aShapes; - TopExp::MapShapes(theOriginalShape, aShapes); - for (int i = 1; i <= aFaces->Length(); i++) { - int indexOfFace = aFaces->Value(i); - TopoDS_Shape aFace = aShapes.FindKey(indexOfFace); - aShapesFaces.Append(aFace); - } - - aResult = aHealer.Perform(aShapesFaces); - } - - if ( aResult ) - theOutShape = aHealer.GetResultShape(); - else - raiseNotDoneExeption( aHealer.GetErrorStatus() ); - - return aResult; -} - -//======================================================================= -//function : CloseContour -//purpose : -//======================================================================= -Standard_Boolean GEOMImpl_HealingDriver::CloseContour (GEOMImpl_IHealing* theHI, - const TopoDS_Shape& theOriginalShape, - TopoDS_Shape& theOutShape) const -{ - Standard_Boolean isByVertex = theHI->GetIsCommonVertex(); - Handle(TColStd_HArray1OfInteger) aWires = theHI->GetWires(); - - ShHealOper_CloseContour aHealer (theOriginalShape); - - Standard_Boolean aResult = Standard_False; - if ( aWires.IsNull() ) { - if ( theOriginalShape.ShapeType() == TopAbs_WIRE ) - aResult = aHealer.Perform(TopoDS::Wire(theOriginalShape), isByVertex, !isByVertex); - } - else { - TopTools_SequenceOfShape aShapesWires; - TopTools_IndexedMapOfShape aShapes; - TopExp::MapShapes(theOriginalShape, aShapes); - for (int i = 1; i <= aWires->Length(); i++) { - int indexOfWire = aWires->Value(i); - TopoDS_Shape aWire = aShapes.FindKey(indexOfWire); - aShapesWires.Append(aWire); - } - - aResult = aHealer.Perform( aShapesWires, isByVertex, !isByVertex ); - } - - if (aResult) - theOutShape = aHealer.GetResultShape(); - else - raiseNotDoneExeption( aHealer.GetErrorStatus() ); - - return aResult; -} - -//======================================================================= -//function : RemoveIntWires -//purpose : -//======================================================================= -Standard_Boolean GEOMImpl_HealingDriver::RemoveIntWires (GEOMImpl_IHealing* theHI, - const TopoDS_Shape& theOriginalShape, - TopoDS_Shape& theOutShape) const -{ - Handle(TColStd_HArray1OfInteger) aWires = theHI->GetWires(); - - ShHealOper_RemoveInternalWires aHealer(theOriginalShape); - - Standard_Boolean aResult = Standard_False; - if (aWires.IsNull()) { // remove all faces - aResult = aHealer.Remove(); - } else { - TopTools_SequenceOfShape aShapesWires; - TopTools_IndexedMapOfShape aShapes; - TopExp::MapShapes(theOriginalShape, aShapes); - for (int i = 1; i <= aWires->Length(); i++) { - int indexOfWire = aWires->Value(i); - TopoDS_Shape aWire = aShapes.FindKey(indexOfWire); - aShapesWires.Append(aWire); - } - - aResult = aHealer.Remove(aShapesWires); - } - - if (aResult) - theOutShape = aHealer.GetResultShape(); - else - raiseNotDoneExeption( aHealer.GetErrorStatus() ); - - return aResult; -} - -//======================================================================= -//function : RemoveHoles -//purpose : -//======================================================================= -Standard_Boolean GEOMImpl_HealingDriver::RemoveHoles (GEOMImpl_IHealing* theHI, - const TopoDS_Shape& theOriginalShape, - TopoDS_Shape& theOutShape) const -{ - Handle(TColStd_HArray1OfInteger) aWires = theHI->GetWires(); - - ShHealOper_FillHoles aHealer (theOriginalShape); - - Standard_Boolean aResult = Standard_False; - if (aWires.IsNull()) { // remove all faces - aResult = aHealer.Fill(); - } else { - TopTools_SequenceOfShape aShapesWires; - TopTools_IndexedMapOfShape aShapes; - TopExp::MapShapes(theOriginalShape, aShapes); - for (int i = 1; i <= aWires->Length(); i++) { - int indexOfWire = aWires->Value(i); - TopoDS_Shape aWire = aShapes.FindKey(indexOfWire); - aShapesWires.Append(aWire); - } - - aResult = aHealer.Fill(aShapesWires); - } - - if (aResult) - theOutShape = aHealer.GetResultShape(); - else - raiseNotDoneExeption( aHealer.GetErrorStatus() ); - - return aResult; -} - -//======================================================================= -//function : Sew -//purpose : -//======================================================================= -Standard_Boolean GEOMImpl_HealingDriver::Sew (GEOMImpl_IHealing* theHI, - const TopoDS_Shape& theOriginalShape, - TopoDS_Shape& theOutShape) const -{ - Standard_Real aTol = theHI->GetTolerance(); - - ShHealOper_Sewing aHealer (theOriginalShape, aTol); - - Standard_Boolean aResult = aHealer.Perform(); - - if (aResult) - theOutShape = aHealer.GetResultShape(); - else - raiseNotDoneExeption( aHealer.GetErrorStatus() ); - - return aResult; -} - -//======================================================================= -//function : AddPointOnEdge -//purpose : -//======================================================================= -Standard_Boolean GEOMImpl_HealingDriver::AddPointOnEdge (GEOMImpl_IHealing* theHI, - const TopoDS_Shape& theOriginalShape, - TopoDS_Shape& theOutShape) const -{ - Standard_Boolean isByParameter = theHI->GetIsByParameter(); - Standard_Integer anIndex = theHI->GetIndex(); - Standard_Real aValue = theHI->GetDevideEdgeValue(); - - ShHealOper_EdgeDivide aHealer (theOriginalShape); - - Standard_Boolean aResult = Standard_False; - if (anIndex == -1) { // apply algorythm for the whole shape which is EDGE - if (theOriginalShape.ShapeType() == TopAbs_EDGE) - aResult = aHealer.Perform(TopoDS::Edge(theOriginalShape), aValue, isByParameter); - } else { - TopTools_IndexedMapOfShape aShapes; - TopExp::MapShapes(theOriginalShape, aShapes); - TopoDS_Shape aEdgeShape = aShapes.FindKey(anIndex); - if (aEdgeShape.ShapeType() == TopAbs_EDGE) - aResult = aHealer.Perform(TopoDS::Edge(aEdgeShape), aValue, isByParameter); - } - - if (aResult) - theOutShape = aHealer.GetResultShape(); - else - raiseNotDoneExeption( aHealer.GetErrorStatus() ); - - return aResult; -} - - -//======================================================================= -//function : GEOMImpl_HealingDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_HealingDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_HealingDriver", - sizeof(GEOMImpl_HealingDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= - -const Handle(GEOMImpl_HealingDriver) Handle(GEOMImpl_HealingDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_HealingDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_HealingDriver))) { - _anOtherObject = Handle(GEOMImpl_HealingDriver)((Handle(GEOMImpl_HealingDriver)&)AnObject); - } - } - - return _anOtherObject ; -} - - diff --git a/src/GEOMImpl/GEOMImpl_HealingDriver.hxx b/src/GEOMImpl/GEOMImpl_HealingDriver.hxx deleted file mode 100644 index 97390d632..000000000 --- a/src/GEOMImpl/GEOMImpl_HealingDriver.hxx +++ /dev/null @@ -1,152 +0,0 @@ -// File : GEOMImpl_HealingDriver.hxx -// Module : GEOMImpl - -#ifndef _GEOMImpl_HealingDriver_HeaderFile -#define _GEOMImpl_HealingDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_HealingDriver; - -class GEOMImpl_IHealing; -#include - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_HealingDriver); - -class Handle(GEOMImpl_HealingDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_HealingDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_HealingDriver)(const Handle(GEOMImpl_HealingDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_HealingDriver)(const GEOMImpl_HealingDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_HealingDriver)& operator=(const Handle(GEOMImpl_HealingDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_HealingDriver)& operator=(const GEOMImpl_HealingDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_HealingDriver* operator->() - { - return (GEOMImpl_HealingDriver *)ControlAccess(); - } - - GEOMImpl_HealingDriver* operator->() const - { - return (GEOMImpl_HealingDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_HealingDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_HealingDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_HealingDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_HealingDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_HealingDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_HealingDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_HealingDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_HealingDriver) == AType || TFunction_Driver::IsKind(AType)); } - -private: -Standard_Boolean ShapeProcess ( GEOMImpl_IHealing*, const TopoDS_Shape&, TopoDS_Shape& ) const; -Standard_Boolean SuppressFaces ( GEOMImpl_IHealing*, const TopoDS_Shape&, TopoDS_Shape& ) const; -Standard_Boolean CloseContour ( GEOMImpl_IHealing*, const TopoDS_Shape&, TopoDS_Shape& ) const; -Standard_Boolean RemoveIntWires( GEOMImpl_IHealing*, const TopoDS_Shape&, TopoDS_Shape& ) const; -Standard_Boolean RemoveHoles ( GEOMImpl_IHealing*, const TopoDS_Shape&, TopoDS_Shape& ) const; -Standard_Boolean Sew ( GEOMImpl_IHealing*, const TopoDS_Shape&, TopoDS_Shape& ) const; -Standard_Boolean AddPointOnEdge( GEOMImpl_IHealing*, const TopoDS_Shape&, TopoDS_Shape& ) const; - - - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_I3DPrimOperations.cxx b/src/GEOMImpl/GEOMImpl_I3DPrimOperations.cxx deleted file mode 100644 index 38439febc..000000000 --- a/src/GEOMImpl/GEOMImpl_I3DPrimOperations.cxx +++ /dev/null @@ -1,916 +0,0 @@ -#include - -#include - -#include "utilities.h" -#include -#include - -#include -#include -#include -#include - -#include -#include - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC - -//============================================================================= -/*! - * constructor: - */ -//============================================================================= -GEOMImpl_I3DPrimOperations::GEOMImpl_I3DPrimOperations (GEOM_Engine* theEngine, int theDocID) -: GEOM_IOperations(theEngine, theDocID) -{ - MESSAGE("GEOMImpl_I3DPrimOperations::GEOMImpl_I3DPrimOperations"); -} - -//============================================================================= -/*! - * destructor - */ -//============================================================================= -GEOMImpl_I3DPrimOperations::~GEOMImpl_I3DPrimOperations() -{ - MESSAGE("GEOMImpl_I3DPrimOperations::~GEOMImpl_I3DPrimOperations"); -} - - -//============================================================================= -/*! - * MakeBoxDXDYDZ - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeBoxDXDYDZ (double theDX, double theDY, double theDZ) -{ - SetErrorCode(KO); - - //Add a new Box object - Handle(GEOM_Object) aBox = GetEngine()->AddObject(GetDocID(), GEOM_BOX); - - //Add a new Box function with DX_DY_DZ parameters - Handle(GEOM_Function) aFunction = aBox->AddFunction(GEOMImpl_BoxDriver::GetID(), BOX_DX_DY_DZ); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_BoxDriver::GetID()) return NULL; - - GEOMImpl_IBox aBI (aFunction); - - aBI.SetDX(theDX); - aBI.SetDY(theDY); - aBI.SetDZ(theDZ); - - //Compute the box value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Box driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aBox << " = geompy.MakeBoxDXDYDZ(" - << theDX << ", " << theDY << ", " << theDZ << ")"; - - SetErrorCode(OK); - return aBox; -} - - -//============================================================================= -/*! - * MakeBoxTwoPnt - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeBoxTwoPnt (Handle(GEOM_Object) thePnt1, - Handle(GEOM_Object) thePnt2) -{ - SetErrorCode(KO); - - if (thePnt1.IsNull() || thePnt2.IsNull()) return NULL; - - //Add a new Box object - Handle(GEOM_Object) aBox = GetEngine()->AddObject(GetDocID(), GEOM_BOX); - - //Add a new Box function for creation a box relatively to two points - Handle(GEOM_Function) aFunction = aBox->AddFunction(GEOMImpl_BoxDriver::GetID(), BOX_TWO_PNT); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_BoxDriver::GetID()) return aBox; - - GEOMImpl_IBox aBI (aFunction); - - Handle(GEOM_Function) aRefFunction1 = thePnt1->GetLastFunction(); - Handle(GEOM_Function) aRefFunction2 = thePnt2->GetLastFunction(); - - if (aRefFunction1.IsNull() || aRefFunction2.IsNull()) return aBox; - - aBI.SetRef1(aRefFunction1); - aBI.SetRef2(aRefFunction2); - - //Compute the Box value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Box driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aBox << " = geompy.MakeBoxTwoPnt(" - << thePnt1 << ", " << thePnt2 << ")"; - - SetErrorCode(OK); - return aBox; -} - - -//============================================================================= -/*! - * MakeCylinderRH - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeCylinderRH (double theR, double theH) -{ - SetErrorCode(KO); - - //Add a new Cylinder object - Handle(GEOM_Object) aCylinder = GetEngine()->AddObject(GetDocID(), GEOM_CYLINDER); - - //Add a new Cylinder function with R and H parameters - Handle(GEOM_Function) aFunction = aCylinder->AddFunction(GEOMImpl_CylinderDriver::GetID(), CYLINDER_R_H); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_CylinderDriver::GetID()) return NULL; - - GEOMImpl_ICylinder aCI (aFunction); - - aCI.SetR(theR); - aCI.SetH(theH); - - //Compute the Cylinder value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Cylinder driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aCylinder - << " = geompy.MakeCylinderRH(" << theR << ", " << theH << ")"; - - SetErrorCode(OK); - return aCylinder; -} - - -//============================================================================= -/*! - * MakeCylinderPntVecRH - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeCylinderPntVecRH (Handle(GEOM_Object) thePnt, - Handle(GEOM_Object) theVec, - double theR, double theH) -{ - SetErrorCode(KO); - - if (thePnt.IsNull() || theVec.IsNull()) return NULL; - - //Add a new Cylinder object - Handle(GEOM_Object) aCylinder = GetEngine()->AddObject(GetDocID(), GEOM_CYLINDER); - - //Add a new Cylinder function for creation a cylinder relatively to point and vector - Handle(GEOM_Function) aFunction = - aCylinder->AddFunction(GEOMImpl_CylinderDriver::GetID(), CYLINDER_PNT_VEC_R_H); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_CylinderDriver::GetID()) return NULL; - - GEOMImpl_ICylinder aCI (aFunction); - - Handle(GEOM_Function) aRefPnt = thePnt->GetLastFunction(); - Handle(GEOM_Function) aRefVec = theVec->GetLastFunction(); - - if (aRefPnt.IsNull() || aRefVec.IsNull()) return NULL; - - aCI.SetPoint(aRefPnt); - aCI.SetVector(aRefVec); - aCI.SetR(theR); - aCI.SetH(theH); - - //Compute the Cylinder value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Cylinder driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aCylinder << " = geompy.MakeCylinder(" - << thePnt << ", " << theVec << ", " << theR << ", " << theH << ")"; - - SetErrorCode(OK); - return aCylinder; -} - - -//============================================================================= -/*! - * MakeConeR1R2H - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeConeR1R2H (double theR1, double theR2, - double theH) -{ - SetErrorCode(KO); - - //Add a new Cone object - Handle(GEOM_Object) aCone = GetEngine()->AddObject(GetDocID(), GEOM_CONE); - - //Add a new Cone function with R and H parameters - Handle(GEOM_Function) aFunction = - aCone->AddFunction(GEOMImpl_ConeDriver::GetID(), CONE_R1_R2_H); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_ConeDriver::GetID()) return NULL; - - GEOMImpl_ICone aCI (aFunction); - - aCI.SetR1(theR1); - aCI.SetR2(theR2); - aCI.SetH(theH); - - //Compute the Cone value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Cone driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aCone << " = geompy.MakeConeR1R2H(" - << theR1 << ", " << theR2 << ", " << theH << ")"; - - SetErrorCode(OK); - return aCone; -} - - -//============================================================================= -/*! - * MakeConePntVecR1R2H - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeConePntVecR1R2H (Handle(GEOM_Object) thePnt, - Handle(GEOM_Object) theVec, - double theR1, double theR2, - double theH) -{ - SetErrorCode(KO); - - if (thePnt.IsNull() || theVec.IsNull()) return NULL; - - //Add a new Cone object - Handle(GEOM_Object) aCone = GetEngine()->AddObject(GetDocID(), GEOM_CONE); - - //Add a new Cone function for creation a cone relatively to point and vector - Handle(GEOM_Function) aFunction = - aCone->AddFunction(GEOMImpl_ConeDriver::GetID(), CONE_PNT_VEC_R1_R2_H); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_ConeDriver::GetID()) return NULL; - - GEOMImpl_ICone aCI (aFunction); - - Handle(GEOM_Function) aRefPnt = thePnt->GetLastFunction(); - Handle(GEOM_Function) aRefVec = theVec->GetLastFunction(); - - if (aRefPnt.IsNull() || aRefVec.IsNull()) return NULL; - - aCI.SetPoint(aRefPnt); - aCI.SetVector(aRefVec); - aCI.SetR1(theR1); - aCI.SetR2(theR2); - aCI.SetH(theH); - - //Compute the Cone value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Cone driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aCone << " = geompy.MakeCone(" << thePnt - << ", " << theVec << ", " << theR1 << ", " << theR2 << ", " << theH << ")"; - - SetErrorCode(OK); - return aCone; -} - - -//============================================================================= -/*! - * MakeSphereR - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeSphereR (double theR) -{ - SetErrorCode(KO); - - //Add a new Sphere object - Handle(GEOM_Object) aSphere = GetEngine()->AddObject(GetDocID(), GEOM_SPHERE); - - //Add a new Sphere function with R parameter - Handle(GEOM_Function) aFunction = aSphere->AddFunction(GEOMImpl_SphereDriver::GetID(), SPHERE_R); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_SphereDriver::GetID()) return NULL; - - GEOMImpl_ISphere aCI (aFunction); - - aCI.SetR(theR); - - //Compute the Sphere value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Sphere driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aSphere << " = geompy.MakeSphereR(" << theR << ")"; - - SetErrorCode(OK); - return aSphere; -} - - -//============================================================================= -/*! - * MakeSpherePntR - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeSpherePntR (Handle(GEOM_Object) thePnt, - double theR) -{ - SetErrorCode(KO); - - if (thePnt.IsNull()) return NULL; - - //Add a new Point object - Handle(GEOM_Object) aSphere = GetEngine()->AddObject(GetDocID(), GEOM_SPHERE); - - //Add a new Sphere function for creation a sphere relatively to point - Handle(GEOM_Function) aFunction = aSphere->AddFunction(GEOMImpl_SphereDriver::GetID(), SPHERE_PNT_R); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_SphereDriver::GetID()) return NULL; - - GEOMImpl_ISphere aCI (aFunction); - - Handle(GEOM_Function) aRefPnt = thePnt->GetLastFunction(); - - if (aRefPnt.IsNull()) return NULL; - - aCI.SetPoint(aRefPnt); - aCI.SetR(theR); - - //Compute the Sphere value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Sphere driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aSphere - << " = geompy.MakeSpherePntR(" << thePnt << ", " << theR << ")"; - - SetErrorCode(OK); - return aSphere; -} - - -//============================================================================= -/*! - * MakeTorusRR - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeTorusRR - (double theRMajor, double theRMinor) -{ - SetErrorCode(KO); - - //Add a new Torus object - Handle(GEOM_Object) anEll = GetEngine()->AddObject(GetDocID(), GEOM_TORUS); - - //Add a new Torus function - Handle(GEOM_Function) aFunction = - anEll->AddFunction(GEOMImpl_TorusDriver::GetID(), TORUS_RR); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_TorusDriver::GetID()) return NULL; - - GEOMImpl_ITorus aCI (aFunction); - - aCI.SetRMajor(theRMajor); - aCI.SetRMinor(theRMinor); - - //Compute the Torus value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Torus driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << anEll << " = geompy.MakeTorusRR(" - << theRMajor << ", " << theRMinor << ")"; - - SetErrorCode(OK); - return anEll; -} - -//============================================================================= -/*! - * MakeTorusPntVecRR - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeTorusPntVecRR - (Handle(GEOM_Object) thePnt, Handle(GEOM_Object) theVec, - double theRMajor, double theRMinor) -{ - SetErrorCode(KO); - - if (thePnt.IsNull() || theVec.IsNull()) return NULL; - - //Add a new Torus object - Handle(GEOM_Object) anEll = GetEngine()->AddObject(GetDocID(), GEOM_TORUS); - - //Add a new Torus function - Handle(GEOM_Function) aFunction = - anEll->AddFunction(GEOMImpl_TorusDriver::GetID(), TORUS_PNT_VEC_RR); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_TorusDriver::GetID()) return NULL; - - GEOMImpl_ITorus aCI (aFunction); - - Handle(GEOM_Function) aRefPnt = thePnt->GetLastFunction(); - Handle(GEOM_Function) aRefVec = theVec->GetLastFunction(); - - if (aRefPnt.IsNull() || aRefVec.IsNull()) return NULL; - - aCI.SetCenter(aRefPnt); - aCI.SetVector(aRefVec); - aCI.SetRMajor(theRMajor); - aCI.SetRMinor(theRMinor); - - //Compute the Torus value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Torus driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << anEll << " = geompy.MakeTorus(" << thePnt - << ", " << theVec << ", " << theRMajor << ", " << theRMinor << ")"; - - SetErrorCode(OK); - return anEll; -} - - -//============================================================================= -/*! - * MakePrismVecH - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakePrismVecH (Handle(GEOM_Object) theBase, - Handle(GEOM_Object) theVec, - double theH) -{ - SetErrorCode(KO); - - if (theBase.IsNull() || theVec.IsNull()) return NULL; - - //Add a new Prism object - Handle(GEOM_Object) aPrism = GetEngine()->AddObject(GetDocID(), GEOM_PRISM); - - //Add a new Prism function for creation a Prism relatively to vector - Handle(GEOM_Function) aFunction = - aPrism->AddFunction(GEOMImpl_PrismDriver::GetID(), PRISM_BASE_VEC_H); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_PrismDriver::GetID()) return NULL; - - GEOMImpl_IPrism aCI (aFunction); - - Handle(GEOM_Function) aRefBase = theBase->GetLastFunction(); - Handle(GEOM_Function) aRefVec = theVec->GetLastFunction(); - - if (aRefBase.IsNull() || aRefVec.IsNull()) return NULL; - - aCI.SetBase(aRefBase); - aCI.SetVector(aRefVec); - aCI.SetH(theH); - - //Compute the Prism value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Prism driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aPrism << " = geompy.MakePrismVecH(" - << theBase << ", " << theVec << ", " << theH << ")"; - - SetErrorCode(OK); - return aPrism; -} - -//============================================================================= -/*! - * MakePrismTwoPnt - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakePrismTwoPnt - (Handle(GEOM_Object) theBase, - Handle(GEOM_Object) thePoint1, Handle(GEOM_Object) thePoint2) -{ - SetErrorCode(KO); - - if (theBase.IsNull() || thePoint1.IsNull() || thePoint2.IsNull()) return NULL; - - //Add a new Prism object - Handle(GEOM_Object) aPrism = GetEngine()->AddObject(GetDocID(), GEOM_PRISM); - - //Add a new Prism function for creation a Prism relatively to two points - Handle(GEOM_Function) aFunction = - aPrism->AddFunction(GEOMImpl_PrismDriver::GetID(), PRISM_BASE_TWO_PNT); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_PrismDriver::GetID()) return NULL; - - GEOMImpl_IPrism aCI (aFunction); - - Handle(GEOM_Function) aRefBase = theBase->GetLastFunction(); - Handle(GEOM_Function) aRefPnt1 = thePoint1->GetLastFunction(); - Handle(GEOM_Function) aRefPnt2 = thePoint2->GetLastFunction(); - - if (aRefBase.IsNull() || aRefPnt1.IsNull() || aRefPnt2.IsNull()) return NULL; - - aCI.SetBase(aRefBase); - aCI.SetFirstPoint(aRefPnt1); - aCI.SetLastPoint(aRefPnt2); - - //Compute the Prism value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Prism driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aPrism << " = geompy.MakePrism(" - << theBase << ", " << thePoint1 << ", " << thePoint2 << ")"; - - SetErrorCode(OK); - return aPrism; -} - - -//============================================================================= -/*! - * MakePipe - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakePipe (Handle(GEOM_Object) theBase, - Handle(GEOM_Object) thePath) -{ - SetErrorCode(KO); - - if (theBase.IsNull() || thePath.IsNull()) return NULL; - - //Add a new Pipe object - Handle(GEOM_Object) aPipe = GetEngine()->AddObject(GetDocID(), GEOM_PIPE); - - //Add a new Pipe function - Handle(GEOM_Function) aFunction = - aPipe->AddFunction(GEOMImpl_PipeDriver::GetID(), PIPE_BASE_PATH); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_PipeDriver::GetID()) return NULL; - - GEOMImpl_IPipe aCI (aFunction); - - Handle(GEOM_Function) aRefBase = theBase->GetLastFunction(); - Handle(GEOM_Function) aRefPath = thePath->GetLastFunction(); - - if (aRefBase.IsNull() || aRefPath.IsNull()) return NULL; - - aCI.SetBase(aRefBase); - aCI.SetPath(aRefPath); - - //Compute the Pipe value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Pipe driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aPipe << " = geompy.MakePipe(" - << theBase << ", " << thePath << ")"; - - SetErrorCode(OK); - return aPipe; -} - - -//============================================================================= -/*! - * MakeRevolutionAxisAngle - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeRevolutionAxisAngle (Handle(GEOM_Object) theBase, - Handle(GEOM_Object) theAxis, - double theAngle) -{ - SetErrorCode(KO); - - if (theBase.IsNull() || theAxis.IsNull()) return NULL; - - //Add a new Revolution object - Handle(GEOM_Object) aRevolution = GetEngine()->AddObject(GetDocID(), GEOM_REVOLUTION); - - //Add a new Revolution function for creation a revolution relatively to axis - Handle(GEOM_Function) aFunction = - aRevolution->AddFunction(GEOMImpl_RevolutionDriver::GetID(), REVOLUTION_BASE_AXIS_ANGLE); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_RevolutionDriver::GetID()) return NULL; - - GEOMImpl_IRevolution aCI (aFunction); - - Handle(GEOM_Function) aRefBase = theBase->GetLastFunction(); - Handle(GEOM_Function) aRefAxis = theAxis->GetLastFunction(); - - if (aRefBase.IsNull() || aRefAxis.IsNull()) return NULL; - - aCI.SetBase(aRefBase); - aCI.SetAxis(aRefAxis); - aCI.SetAngle(theAngle); - - //Compute the Revolution value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Revolution driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aRevolution << " = geompy.MakeRevolution(" - << theBase << ", " << theAxis << ", " << theAngle * 180.0 / PI << "*math.pi/180.0)"; - - SetErrorCode(OK); - return aRevolution; -} - - -//============================================================================= -/*! - * MakeSolidShell - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeSolidShell (Handle(GEOM_Object) theShell) -{ - SetErrorCode(KO); - - if (theShell.IsNull()) return NULL; - - //Add a new Solid object - Handle(GEOM_Object) aSolid = GetEngine()->AddObject(GetDocID(), GEOM_SOLID); - - //Add a new Solid function for creation a solid from a shell - Handle(GEOM_Function) aFunction = - aSolid->AddFunction(GEOMImpl_ShapeDriver::GetID(), SOLID_SHELL); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_ShapeDriver::GetID()) return NULL; - - GEOMImpl_IShapes aCI (aFunction); - - Handle(GEOM_Function) aRefShell = theShell->GetLastFunction(); - - if (aRefShell.IsNull()) return NULL; - - aCI.SetBase(aRefShell); - - //Compute the Solid value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Solid driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aSolid << " = geompy.MakeSolid(" << theShell << ")"; - - SetErrorCode(OK); - return aSolid; -} - -//============================================================================= -/*! - * MakeFilling - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeFilling - (Handle(GEOM_Object) theShape, int theMinDeg, int theMaxDeg, - double theTol2D, double theTol3D, int theNbIter) -{ - SetErrorCode(KO); - - if (theShape.IsNull()) return NULL; - - //Add a new Filling object - Handle(GEOM_Object) aFilling = GetEngine()->AddObject(GetDocID(), GEOM_FILLING); - - //Add a new Filling function for creation a filling from a compound - Handle(GEOM_Function) aFunction = aFilling->AddFunction(GEOMImpl_FillingDriver::GetID(), BASIC_FILLING); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_FillingDriver::GetID()) return NULL; - - GEOMImpl_IFilling aFI (aFunction); - - Handle(GEOM_Function) aRefShape = theShape->GetLastFunction(); - - if (aRefShape.IsNull()) return NULL; - - aFI.SetShape(aRefShape); - aFI.SetMinDeg(theMinDeg); - aFI.SetMaxDeg(theMaxDeg); - aFI.SetTol2D(theTol2D); - aFI.SetTol3D(theTol3D); - aFI.SetNbIter(theNbIter); - - //Compute the Solid value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Filling driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - if (strcmp(aFail->GetMessageString(), "Geom_BSplineSurface") == 0) - SetErrorCode("B-Spline surface construction failed"); - else - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aFilling << " = geompy.MakeFilling(" - << theShape << ", " << theMinDeg << ", " << theMaxDeg << ", " - << theTol2D << ", " << theTol3D << ", " << theNbIter << ")"; - - SetErrorCode(OK); - return aFilling; -} diff --git a/src/GEOMImpl/GEOMImpl_I3DPrimOperations.hxx b/src/GEOMImpl/GEOMImpl_I3DPrimOperations.hxx deleted file mode 100644 index 7cbf81700..000000000 --- a/src/GEOMImpl/GEOMImpl_I3DPrimOperations.hxx +++ /dev/null @@ -1,59 +0,0 @@ - -#ifndef _GEOMImpl_I3DPrimOperations_HXX_ -#define _GEOMImpl_I3DPrimOperations_HXX_ - -#include "Utils_SALOME_Exception.hxx" -#include "GEOM_IOperations.hxx" -#include "GEOM_Engine.hxx" -#include "GEOM_Object.hxx" -#include - -class GEOMImpl_I3DPrimOperations : public GEOM_IOperations { - public: - Standard_EXPORT GEOMImpl_I3DPrimOperations(GEOM_Engine* theEngine, int theDocID); - Standard_EXPORT ~GEOMImpl_I3DPrimOperations(); - - Standard_EXPORT Handle(GEOM_Object) MakeBoxDXDYDZ (double theDX, double theDY, double theDZ); - Standard_EXPORT Handle(GEOM_Object) MakeBoxTwoPnt (Handle(GEOM_Object) thePnt1, - Handle(GEOM_Object) thePnt2); - - Standard_EXPORT Handle(GEOM_Object) MakeCylinderRH (double theR, double theH); - Standard_EXPORT Handle(GEOM_Object) MakeCylinderPntVecRH (Handle(GEOM_Object) thePnt, - Handle(GEOM_Object) theVec, - double theR, double theH); - - Standard_EXPORT Handle(GEOM_Object) MakeConeR1R2H (double theR1, double theR2, double theH); - Standard_EXPORT Handle(GEOM_Object) MakeConePntVecR1R2H (Handle(GEOM_Object) thePnt, - Handle(GEOM_Object) theVec, - double theR1, double theR2, double theH); - - Standard_EXPORT Handle(GEOM_Object) MakeSphereR (double theR); - Standard_EXPORT Handle(GEOM_Object) MakeSpherePntR (Handle(GEOM_Object) thePnt, double theR); - - Standard_EXPORT Handle(GEOM_Object) MakeTorusRR (double theRMajor, double theRMinor); - - Standard_EXPORT Handle(GEOM_Object) MakeTorusPntVecRR (Handle(GEOM_Object) thePnt, - Handle(GEOM_Object) theVec, - double theRMajor, double theRMinor); - - Standard_EXPORT Handle(GEOM_Object) MakePrismVecH (Handle(GEOM_Object) theBase, - Handle(GEOM_Object) theVec, double theH); - - Standard_EXPORT Handle(GEOM_Object) MakePrismTwoPnt (Handle(GEOM_Object) theBase, - Handle(GEOM_Object) thePoint1, - Handle(GEOM_Object) thePoint2); - - Standard_EXPORT Handle(GEOM_Object) MakePipe (Handle(GEOM_Object) theBase, - Handle(GEOM_Object) thePath); - - Standard_EXPORT Handle(GEOM_Object) MakeRevolutionAxisAngle (Handle(GEOM_Object) theBase, - Handle(GEOM_Object) theAxis, - double theAngle); - - Standard_EXPORT Handle(GEOM_Object) MakeSolidShell (Handle(GEOM_Object) theShell); - - Standard_EXPORT Handle(GEOM_Object) MakeFilling (Handle(GEOM_Object) theShape, int theMinDeg, int theMaxDeg, double theTol2D, double theTol3D, int theNbIter); - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_IArc.hxx b/src/GEOMImpl/GEOMImpl_IArc.hxx deleted file mode 100644 index 0c8c75d5e..000000000 --- a/src/GEOMImpl/GEOMImpl_IArc.hxx +++ /dev/null @@ -1,27 +0,0 @@ -//NOTE: This is an intreface to a function for the Arc creation. - - -#include "GEOM_Function.hxx" - -#define ARC_ARG_PI 1 -#define ARC_ARG_PC 2 -#define ARC_ARG_PE 3 - -class GEOMImpl_IArc -{ - public: - - GEOMImpl_IArc(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetPoint1(Handle(GEOM_Function) theP) { _func->SetReference(ARC_ARG_PI, theP); } - void SetPoint2(Handle(GEOM_Function) theP) { _func->SetReference(ARC_ARG_PC, theP); } - void SetPoint3(Handle(GEOM_Function) theP) { _func->SetReference(ARC_ARG_PE, theP); } - - Handle(GEOM_Function) GetPoint1() { return _func->GetReference(ARC_ARG_PI); } - Handle(GEOM_Function) GetPoint2() { return _func->GetReference(ARC_ARG_PC); } - Handle(GEOM_Function) GetPoint3() { return _func->GetReference(ARC_ARG_PE); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_IArchimede.hxx b/src/GEOMImpl/GEOMImpl_IArchimede.hxx deleted file mode 100644 index 0b298a03a..000000000 --- a/src/GEOMImpl/GEOMImpl_IArchimede.hxx +++ /dev/null @@ -1,36 +0,0 @@ -//NOTE: This is an intreface to a function for the Archimede operation. - - -#include "GEOM_Function.hxx" - -#define ARG_WEIGHT 1 -#define ARG_DENSITY 2 -#define ARG_DEFLECT 3 -#define ARG_SHAPE 4 - -class GEOMImpl_IArchimede -{ - public: - - GEOMImpl_IArchimede(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetWeight(Standard_Real theWeight) { _func->SetReal(ARG_WEIGHT, theWeight); } - - Standard_Real GetWeight() { return _func->GetReal(ARG_WEIGHT); } - - void SetDensity(Standard_Real theDensity) { _func->SetReal(ARG_DENSITY, theDensity); } - - Standard_Real GetDensity() { return _func->GetReal(ARG_DENSITY); } - - void SetDeflection(Standard_Real theDeflection) { _func->SetReal(ARG_DEFLECT, theDeflection); } - - Standard_Real GetDeflection() { return _func->GetReal(ARG_DEFLECT); } - - void SetBasicShape(Handle(GEOM_Function) theShape) { _func->SetReference(ARG_SHAPE, theShape); } - - Handle(GEOM_Function) GetBasicShape() { return _func->GetReference(ARG_SHAPE); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_IBasicOperations.cxx b/src/GEOMImpl/GEOMImpl_IBasicOperations.cxx deleted file mode 100644 index d252f6ebb..000000000 --- a/src/GEOMImpl/GEOMImpl_IBasicOperations.cxx +++ /dev/null @@ -1,624 +0,0 @@ -#include - -#include - -#include "utilities.h" -#include -#include - -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include - -#include // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC - -//============================================================================= -/*! - * constructor: - */ -//============================================================================= -GEOMImpl_IBasicOperations::GEOMImpl_IBasicOperations(GEOM_Engine* theEngine, int theDocID) -: GEOM_IOperations(theEngine, theDocID) -{ - MESSAGE("GEOMImpl_IBasicOperations::GEOMImpl_IBasicOperations"); -} - -//============================================================================= -/*! - * destructor - */ -//============================================================================= -GEOMImpl_IBasicOperations::~GEOMImpl_IBasicOperations() -{ - MESSAGE("GEOMImpl_IBasicOperations::~GEOMImpl_IBasicOperations"); -} - - -//============================================================================= -/*! - * MakePointXYZ - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakePointXYZ - (double theX, double theY, double theZ) -{ - SetErrorCode(KO); - - //Add a new Point object - Handle(GEOM_Object) aPoint = GetEngine()->AddObject(GetDocID(), GEOM_POINT); - - //Add a new Point function with XYZ parameters - Handle(GEOM_Function) aFunction = - aPoint->AddFunction(GEOMImpl_PointDriver::GetID(), POINT_XYZ); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_PointDriver::GetID()) return NULL; - - GEOMImpl_IPoint aPI(aFunction); - - aPI.SetX(theX); - aPI.SetY(theY); - aPI.SetZ(theZ); - - //Compute the point value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Point driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aPoint << " = geompy.MakeVertex(" - << theX << ", " << theY << ", " << theZ << ")"; - - SetErrorCode(OK); - return aPoint; -} - -//============================================================================= -/*! - * MakePointWithReference - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakePointWithReference - (Handle(GEOM_Object) theReference, double theX, double theY, double theZ) -{ - SetErrorCode(KO); - - if (theReference.IsNull()) return NULL; - - //Add a new Point object - Handle(GEOM_Object) aPoint = GetEngine()->AddObject(GetDocID(), GEOM_POINT); - - //Add a new Point function for creation a point relativley another point - Handle(GEOM_Function) aFunction = aPoint->AddFunction(GEOMImpl_PointDriver::GetID(), POINT_XYZ_REF); - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_PointDriver::GetID()) return NULL; - - GEOMImpl_IPoint aPI(aFunction); - - Handle(GEOM_Function) aRefFunction = theReference->GetLastFunction(); - if (aRefFunction.IsNull()) return NULL; - - aPI.SetRef(aRefFunction); - aPI.SetX(theX); - aPI.SetY(theY); - aPI.SetZ(theZ); - - //Compute the point value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Point driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aPoint << " = geompy.MakeVertexWithRef(" - << theReference << ", " << theX << ", " << theY << ", " << theZ << ")"; - - SetErrorCode(OK); - return aPoint; -} - -//============================================================================= -/*! - * MakePointOnCurve - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakePointOnCurve - (Handle(GEOM_Object) theCurve, double theParameter) -{ - SetErrorCode(KO); - - if (theCurve.IsNull()) return NULL; - - //Add a new Point object - Handle(GEOM_Object) aPoint = GetEngine()->AddObject(GetDocID(), GEOM_POINT); - - //Add a new Point function for creation a point relativley another point - Handle(GEOM_Function) aFunction = aPoint->AddFunction(GEOMImpl_PointDriver::GetID(), POINT_CURVE_PAR); - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_PointDriver::GetID()) return NULL; - - GEOMImpl_IPoint aPI (aFunction); - - Handle(GEOM_Function) aRefFunction = theCurve->GetLastFunction(); - if (aRefFunction.IsNull()) return NULL; - - aPI.SetCurve(aRefFunction); - aPI.SetParameter(theParameter); - - //Compute the point value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Point driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aPoint << " = geompy.MakeVertexOnCurve(" - << theCurve << ", " << theParameter << ")"; - - SetErrorCode(OK); - return aPoint; -} - - -//============================================================================= -/*! - * MakeVectorDXDYDZ - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakeVectorDXDYDZ - (double theDX, double theDY, double theDZ) -{ - SetErrorCode(KO); - - //Add a new Vector object - Handle(GEOM_Object) aVector = GetEngine()->AddObject(GetDocID(), GEOM_VECTOR); - - //Add a new Vector function with DXDYDZ parameters - Handle(GEOM_Function) aFunction = - aVector->AddFunction(GEOMImpl_VectorDriver::GetID(), VECTOR_DX_DY_DZ); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_VectorDriver::GetID()) return NULL; - - GEOMImpl_IVector aPI (aFunction); - - aPI.SetDX(theDX); - aPI.SetDY(theDY); - aPI.SetDZ(theDZ); - - //Compute the Vector value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Vector driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aVector << " = geompy.MakeVectorDXDYDZ(" - << theDX << ", " << theDY << ", " << theDZ << ")"; - - SetErrorCode(OK); - return aVector; -} - -//============================================================================= -/*! - * MakeVectorTwoPnt - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakeVectorTwoPnt - (Handle(GEOM_Object) thePnt1, Handle(GEOM_Object) thePnt2) -{ - SetErrorCode(KO); - - if (thePnt1.IsNull() || thePnt2.IsNull()) return NULL; - - //Add a new Vector object - Handle(GEOM_Object) aVector = GetEngine()->AddObject(GetDocID(), GEOM_VECTOR); - - //Add a new Vector function - Handle(GEOM_Function) aFunction = - aVector->AddFunction(GEOMImpl_VectorDriver::GetID(), VECTOR_TWO_PNT); - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_VectorDriver::GetID()) return NULL; - - GEOMImpl_IVector aPI (aFunction); - - Handle(GEOM_Function) aRef1 = thePnt1->GetLastFunction(); - Handle(GEOM_Function) aRef2 = thePnt2->GetLastFunction(); - if (aRef1.IsNull() || aRef2.IsNull()) return NULL; - - aPI.SetPoint1(aRef1); - aPI.SetPoint2(aRef2); - - //Compute the Vector value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Vector driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aVector << " = geompy.MakeVector(" - << thePnt1 << ", " << thePnt2 << ")"; - - SetErrorCode(OK); - return aVector; -} - - -//============================================================================= -/*! - * MakeLine - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakeLine - (Handle(GEOM_Object) thePnt, Handle(GEOM_Object) theDir) -{ - SetErrorCode(KO); - - if (thePnt.IsNull() || theDir.IsNull()) return NULL; - - //Add a new Line object - Handle(GEOM_Object) aLine = GetEngine()->AddObject(GetDocID(), GEOM_LINE); - - //Add a new Line function - Handle(GEOM_Function) aFunction = - aLine->AddFunction(GEOMImpl_LineDriver::GetID(), LINE_PNT_DIR); - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_LineDriver::GetID()) return NULL; - - GEOMImpl_ILine aPI (aFunction); - - Handle(GEOM_Function) aRef1 = thePnt->GetLastFunction(); - Handle(GEOM_Function) aRef2 = theDir->GetLastFunction(); - if (aRef1.IsNull() || aRef2.IsNull()) return NULL; - - aPI.SetPoint1(aRef1); - aPI.SetPoint2(aRef2); - - //Compute the Line value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Line driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aLine << " = geompy.MakeLine(" - << thePnt << ", " << theDir << ")"; - - SetErrorCode(OK); - return aLine; -} - -//============================================================================= -/*! - * MakeLineTwoPnt - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakeLineTwoPnt - (Handle(GEOM_Object) thePnt1, Handle(GEOM_Object) thePnt2) -{ - SetErrorCode(KO); - - if (thePnt1.IsNull() || thePnt2.IsNull()) return NULL; - - //Add a new Line object - Handle(GEOM_Object) aLine = GetEngine()->AddObject(GetDocID(), GEOM_LINE); - - //Add a new Line function - Handle(GEOM_Function) aFunction = - aLine->AddFunction(GEOMImpl_LineDriver::GetID(), LINE_TWO_PNT); - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_LineDriver::GetID()) return NULL; - - GEOMImpl_ILine aPI (aFunction); - - Handle(GEOM_Function) aRef1 = thePnt1->GetLastFunction(); - Handle(GEOM_Function) aRef2 = thePnt2->GetLastFunction(); - if (aRef1.IsNull() || aRef2.IsNull()) return NULL; - - aPI.SetPoint1(aRef1); - aPI.SetPoint2(aRef2); - - //Compute the Line value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Line driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aLine << " = geompy.MakeLineTwoPnt(" - << thePnt1 << ", " << thePnt2 << ")"; - - SetErrorCode(OK); - return aLine; -} - - -//============================================================================= -/*! - * MakePlaneThreePnt - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakePlaneThreePnt - (Handle(GEOM_Object) thePnt1, Handle(GEOM_Object) thePnt2, - Handle(GEOM_Object) thePnt3, double theSize) -{ - SetErrorCode(KO); - - if (thePnt1.IsNull() || thePnt2.IsNull() || thePnt3.IsNull()) return NULL; - - //Add a new Plane object - Handle(GEOM_Object) aPlane = GetEngine()->AddObject(GetDocID(), GEOM_PLANE); - - //Add a new Plane function - Handle(GEOM_Function) aFunction = - aPlane->AddFunction(GEOMImpl_PlaneDriver::GetID(), PLANE_THREE_PNT); - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_PlaneDriver::GetID()) return NULL; - - GEOMImpl_IPlane aPI (aFunction); - - Handle(GEOM_Function) aRef1 = thePnt1->GetLastFunction(); - Handle(GEOM_Function) aRef2 = thePnt2->GetLastFunction(); - Handle(GEOM_Function) aRef3 = thePnt3->GetLastFunction(); - if (aRef1.IsNull() || aRef2.IsNull() || aRef3.IsNull()) return NULL; - - aPI.SetPoint1(aRef1); - aPI.SetPoint2(aRef2); - aPI.SetPoint3(aRef3); - aPI.SetSize(theSize); - - //Compute the Plane value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Plane driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aPlane << " = geompy.MakePlaneThreePnt(" - << thePnt1 << ", " << thePnt2 << ", " << thePnt3 << ", " << theSize << ")"; - - SetErrorCode(OK); - return aPlane; -} - -//============================================================================= -/*! - * MakePlanePntVec - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakePlanePntVec - (Handle(GEOM_Object) thePnt, Handle(GEOM_Object) theVec, - double theSize) -{ - SetErrorCode(KO); - - if (thePnt.IsNull() || theVec.IsNull()) return NULL; - - //Add a new Plane object - Handle(GEOM_Object) aPlane = GetEngine()->AddObject(GetDocID(), GEOM_PLANE); - - //Add a new Plane function - Handle(GEOM_Function) aFunction = - aPlane->AddFunction(GEOMImpl_PlaneDriver::GetID(), PLANE_PNT_VEC); - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_PlaneDriver::GetID()) return NULL; - - GEOMImpl_IPlane aPI (aFunction); - - Handle(GEOM_Function) aRefPnt = thePnt->GetLastFunction(); - Handle(GEOM_Function) aRefVec = theVec->GetLastFunction(); - if (aRefPnt.IsNull() || aRefVec.IsNull()) return NULL; - - aPI.SetPoint(aRefPnt); - aPI.SetVector(aRefVec); - aPI.SetSize(theSize); - - //Compute the Plane value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Plane driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aPlane << " = geompy.MakePlane(" - << thePnt << ", " << theVec << ", " << theSize << ")"; - - SetErrorCode(OK); - return aPlane; -} - -//============================================================================= -/*! - * MakePlaneFace - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakePlaneFace - (Handle(GEOM_Object) theFace, double theSize) -{ - SetErrorCode(KO); - - if (theFace.IsNull()) return NULL; - - //Add a new Plane object - Handle(GEOM_Object) aPlane = GetEngine()->AddObject(GetDocID(), GEOM_PLANE); - - //Add a new Plane function - Handle(GEOM_Function) aFunction = - aPlane->AddFunction(GEOMImpl_PlaneDriver::GetID(), PLANE_FACE); - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_PlaneDriver::GetID()) return NULL; - - GEOMImpl_IPlane aPI (aFunction); - - Handle(GEOM_Function) aRef = theFace->GetLastFunction(); - if (aRef.IsNull()) return NULL; - - aPI.SetFace(aRef); - aPI.SetSize(theSize); - - //Compute the Plane value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Plane driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aPlane << " = geompy.MakePlaneFace(" - << theFace << ", " << theSize << ")"; - - SetErrorCode(OK); - return aPlane; -} - - -//============================================================================= -/*! - * MakeMarker - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakeMarker - (double theOX, double theOY, double theOZ, - double theXDX, double theXDY, double theXDZ, - double theYDX, double theYDY, double theYDZ) -{ - SetErrorCode(KO); - - //Add a new Marker object - Handle(GEOM_Object) aMarker = GetEngine()->AddObject(GetDocID(), GEOM_MARKER); - - //Add a new Marker function - Handle(GEOM_Function) aFunction = - aMarker->AddFunction(GEOMImpl_MarkerDriver::GetID(), MARKER_CS); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_MarkerDriver::GetID()) return NULL; - - GEOMImpl_IMarker aPI(aFunction); - - aPI.SetOrigin(theOX, theOY, theOZ); - aPI.SetXDir(theXDX, theXDY, theXDZ); - aPI.SetYDir(theYDX, theYDY, theYDZ); - - //Compute the marker value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Marker driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aMarker << " = geompy.MakeMarker(" - << theOX << ", " << theOY << ", " << theOZ << ", " - << theXDX << ", " << theXDY << ", " << theXDZ << ", " - << theYDX << ", " << theYDY << ", " << theYDZ << ")"; - - SetErrorCode(OK); - return aMarker; -} diff --git a/src/GEOMImpl/GEOMImpl_IBasicOperations.hxx b/src/GEOMImpl/GEOMImpl_IBasicOperations.hxx deleted file mode 100644 index 631559b8a..000000000 --- a/src/GEOMImpl/GEOMImpl_IBasicOperations.hxx +++ /dev/null @@ -1,56 +0,0 @@ - -#ifndef _GEOMImpl_IBasicOperations_HXX_ -#define _GEOMImpl_IBasicOperations_HXX_ - -#include "Utils_SALOME_Exception.hxx" -#include "GEOM_IOperations.hxx" -#include "GEOM_Engine.hxx" -#include "GEOM_Object.hxx" -#include - -class GEOMImpl_IBasicOperations : public GEOM_IOperations { - public: - Standard_EXPORT GEOMImpl_IBasicOperations(GEOM_Engine* theEngine, int theDocID); - Standard_EXPORT ~GEOMImpl_IBasicOperations(); - - // Point - Standard_EXPORT Handle(GEOM_Object) MakePointXYZ (double theX, double theY, double theZ); - - Standard_EXPORT Handle(GEOM_Object) MakePointWithReference (Handle(GEOM_Object) theReference, - double theX, double theY, double theZ); - - Standard_EXPORT Handle(GEOM_Object) MakePointOnCurve (Handle(GEOM_Object) theCurve, - double theParameter); - - // Vector - Standard_EXPORT Handle(GEOM_Object) MakeVectorDXDYDZ (double theDX, double theDY, double theDZ); - - Standard_EXPORT Handle(GEOM_Object) MakeVectorTwoPnt (Handle(GEOM_Object) thePnt1, - Handle(GEOM_Object) thePnt2); - - // Line - Standard_EXPORT Handle(GEOM_Object) MakeLineTwoPnt (Handle(GEOM_Object) thePnt1, - Handle(GEOM_Object) thePnt2); - - Standard_EXPORT Handle(GEOM_Object) MakeLine (Handle(GEOM_Object) thePnt, - Handle(GEOM_Object) theDir); - - // Plane - Standard_EXPORT Handle(GEOM_Object) MakePlaneThreePnt (Handle(GEOM_Object) thePnt1, - Handle(GEOM_Object) thePnt2, - Handle(GEOM_Object) thePnt3, - double theSize); - - Standard_EXPORT Handle(GEOM_Object) MakePlanePntVec (Handle(GEOM_Object) thePnt, - Handle(GEOM_Object) theVec, - double theSize); - - Standard_EXPORT Handle(GEOM_Object) MakePlaneFace (Handle(GEOM_Object) theFace, double theSize); - - // Marker - Standard_EXPORT Handle(GEOM_Object) MakeMarker (double theOX, double theOY, double theOZ, - double theXDX, double theXDY, double theXDZ, - double theYDX, double theYDY, double theYDZ); -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_IBlockTrsf.hxx b/src/GEOMImpl/GEOMImpl_IBlockTrsf.hxx deleted file mode 100644 index 205f7405c..000000000 --- a/src/GEOMImpl/GEOMImpl_IBlockTrsf.hxx +++ /dev/null @@ -1,42 +0,0 @@ -//NOTE: This is an interface to a function for the Blocks Multi-Transformations. - - -#include "GEOM_Function.hxx" - -#define TRSF_ORIGIN 1 - -#define TRSF_FACE_1_U 2 -#define TRSF_FACE_2_U 3 -#define TRSF_NBITER_U 4 -#define TRSF_FACE_1_V 5 -#define TRSF_FACE_2_V 6 -#define TRSF_NBITER_V 7 - -class GEOMImpl_IBlockTrsf -{ - public: - - GEOMImpl_IBlockTrsf (Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetOriginal (Handle(GEOM_Function) theOriginal) { _func->SetReference(TRSF_ORIGIN, theOriginal); } - - Handle(GEOM_Function) GetOriginal() { return _func->GetReference(TRSF_ORIGIN); } - - void SetFace1U (int theFaceId) { _func->SetInteger(TRSF_FACE_1_U, theFaceId); } - void SetFace2U (int theFaceId) { _func->SetInteger(TRSF_FACE_2_U, theFaceId); } - void SetFace1V (int theFaceId) { _func->SetInteger(TRSF_FACE_1_V, theFaceId); } - void SetFace2V (int theFaceId) { _func->SetInteger(TRSF_FACE_2_V, theFaceId); } - void SetNbIterU (int theNbIter) { _func->SetInteger(TRSF_NBITER_U, theNbIter); } - void SetNbIterV (int theNbIter) { _func->SetInteger(TRSF_NBITER_V, theNbIter); } - - int GetFace1U () { return _func->GetInteger(TRSF_FACE_1_U); } - int GetFace2U () { return _func->GetInteger(TRSF_FACE_2_U); } - int GetFace1V () { return _func->GetInteger(TRSF_FACE_1_V); } - int GetFace2V () { return _func->GetInteger(TRSF_FACE_2_V); } - int GetNbIterU() { return _func->GetInteger(TRSF_NBITER_U); } - int GetNbIterV() { return _func->GetInteger(TRSF_NBITER_V); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_IBlocks.hxx b/src/GEOMImpl/GEOMImpl_IBlocks.hxx deleted file mode 100644 index a98c9d32b..000000000 --- a/src/GEOMImpl/GEOMImpl_IBlocks.hxx +++ /dev/null @@ -1,26 +0,0 @@ -// NOTE: This is an interface to a function for the Blocks -// creation and transformation. - - -#include "GEOM_Function.hxx" - -#include "TColStd_HSequenceOfTransient.hxx" - -#define BLOCK_ARG_SHAPES 1 // Arguments for creation of block or face of block - -class GEOMImpl_IBlocks -{ - public: - - GEOMImpl_IBlocks(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetShapes(const Handle(TColStd_HSequenceOfTransient)& theShapes) - { _func->SetReferenceList(BLOCK_ARG_SHAPES, theShapes); } - - Handle(TColStd_HSequenceOfTransient) GetShapes() - { return _func->GetReferenceList(BLOCK_ARG_SHAPES); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_IBlocksOperations.cxx b/src/GEOMImpl/GEOMImpl_IBlocksOperations.cxx deleted file mode 100644 index 9f0bcc926..000000000 --- a/src/GEOMImpl/GEOMImpl_IBlocksOperations.cxx +++ /dev/null @@ -1,3129 +0,0 @@ -#ifdef WNT -#pragma warning( disable:4786 ) -#endif - -#include - -#include - -#include - -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include - -#include "utilities.h" -#include -#include - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include - -#include -#include -#include -#include - -//#include - -#include - -#include // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC - -//============================================================================= -/*! - * constructor: - */ -//============================================================================= -GEOMImpl_IBlocksOperations::GEOMImpl_IBlocksOperations (GEOM_Engine* theEngine, int theDocID) -: GEOM_IOperations(theEngine, theDocID) -{ - MESSAGE("GEOMImpl_IBlocksOperations::GEOMImpl_IBlocksOperations"); -} - -//============================================================================= -/*! - * destructor - */ -//============================================================================= -GEOMImpl_IBlocksOperations::~GEOMImpl_IBlocksOperations() -{ - MESSAGE("GEOMImpl_IBlocksOperations::~GEOMImpl_IBlocksOperations"); -} - - -//============================================================================= -/*! - * MakeQuad - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IBlocksOperations::MakeQuad - (Handle(GEOM_Object) theEdge1, Handle(GEOM_Object) theEdge2, - Handle(GEOM_Object) theEdge3, Handle(GEOM_Object) theEdge4) -{ - SetErrorCode(KO); - - if (theEdge1.IsNull() || theEdge2.IsNull() || - theEdge3.IsNull() || theEdge4.IsNull()) return NULL; - - //Add a new Face object - Handle(GEOM_Object) aFace = GetEngine()->AddObject(GetDocID(), GEOM_FACE); - - //Add a new Face function - Handle(GEOM_Function) aFunction = - aFace->AddFunction(GEOMImpl_BlockDriver::GetID(), BLOCK_FACE_FOUR_EDGES); - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_BlockDriver::GetID()) return NULL; - - GEOMImpl_IBlocks aPI (aFunction); - - Handle(GEOM_Function) aRef1 = theEdge1->GetLastFunction(); - Handle(GEOM_Function) aRef2 = theEdge2->GetLastFunction(); - Handle(GEOM_Function) aRef3 = theEdge3->GetLastFunction(); - Handle(GEOM_Function) aRef4 = theEdge4->GetLastFunction(); - if (aRef1.IsNull() || aRef2.IsNull() || - aRef3.IsNull() || aRef4.IsNull()) return NULL; - - Handle(TColStd_HSequenceOfTransient) aShapesSeq = new TColStd_HSequenceOfTransient; - aShapesSeq->Append(aRef1); - aShapesSeq->Append(aRef2); - aShapesSeq->Append(aRef3); - aShapesSeq->Append(aRef4); - - aPI.SetShapes(aShapesSeq); - - //Compute the Face value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Block driver failed to compute a face"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aFace << " = geompy.MakeQuad(" - << theEdge1 << ", " << theEdge2 << ", " << theEdge3 << ", " << theEdge4 << ")"; - - SetErrorCode(OK); - return aFace; -} - -//============================================================================= -/*! - * MakeQuad2Edges - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IBlocksOperations::MakeQuad2Edges - (Handle(GEOM_Object) theEdge1, Handle(GEOM_Object) theEdge2) -{ - SetErrorCode(KO); - - if (theEdge1.IsNull() || theEdge2.IsNull()) return NULL; - - //Add a new Face object - Handle(GEOM_Object) aFace = GetEngine()->AddObject(GetDocID(), GEOM_FACE); - - //Add a new Face function - Handle(GEOM_Function) aFunction = - aFace->AddFunction(GEOMImpl_BlockDriver::GetID(), BLOCK_FACE_TWO_EDGES); - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_BlockDriver::GetID()) return NULL; - - GEOMImpl_IBlocks aPI (aFunction); - - Handle(GEOM_Function) aRef1 = theEdge1->GetLastFunction(); - Handle(GEOM_Function) aRef2 = theEdge2->GetLastFunction(); - if (aRef1.IsNull() || aRef2.IsNull()) return NULL; - - Handle(TColStd_HSequenceOfTransient) aShapesSeq = new TColStd_HSequenceOfTransient; - aShapesSeq->Append(aRef1); - aShapesSeq->Append(aRef2); - - aPI.SetShapes(aShapesSeq); - - //Compute the Face value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Block driver failed to compute a face"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aFace << " = geompy.MakeQuad2Edges(" - << theEdge1 << ", " << theEdge2 << ")"; - - SetErrorCode(OK); - return aFace; -} - -//============================================================================= -/*! - * MakeQuad4Vertices - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IBlocksOperations::MakeQuad4Vertices - (Handle(GEOM_Object) thePnt1, Handle(GEOM_Object) thePnt2, - Handle(GEOM_Object) thePnt3, Handle(GEOM_Object) thePnt4) -{ - SetErrorCode(KO); - - if (thePnt1.IsNull() || thePnt2.IsNull() || - thePnt3.IsNull() || thePnt4.IsNull()) return NULL; - - //Add a new Face object - Handle(GEOM_Object) aFace = GetEngine()->AddObject(GetDocID(), GEOM_FACE); - - //Add a new Face function - Handle(GEOM_Function) aFunction = - aFace->AddFunction(GEOMImpl_BlockDriver::GetID(), BLOCK_FACE_FOUR_PNT); - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_BlockDriver::GetID()) return NULL; - - GEOMImpl_IBlocks aPI (aFunction); - - Handle(GEOM_Function) aRef1 = thePnt1->GetLastFunction(); - Handle(GEOM_Function) aRef2 = thePnt2->GetLastFunction(); - Handle(GEOM_Function) aRef3 = thePnt3->GetLastFunction(); - Handle(GEOM_Function) aRef4 = thePnt4->GetLastFunction(); - if (aRef1.IsNull() || aRef2.IsNull() || - aRef3.IsNull() || aRef4.IsNull()) return NULL; - - Handle(TColStd_HSequenceOfTransient) aShapesSeq = new TColStd_HSequenceOfTransient; - aShapesSeq->Append(aRef1); - aShapesSeq->Append(aRef2); - aShapesSeq->Append(aRef3); - aShapesSeq->Append(aRef4); - - aPI.SetShapes(aShapesSeq); - - //Compute the Face value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Block driver failed to compute a face"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aFace << " = geompy.MakeQuad4Vertices(" - << thePnt1 << ", " << thePnt2 << ", " << thePnt3 << ", " << thePnt4 << ")"; - - SetErrorCode(OK); - return aFace; -} - -//============================================================================= -/*! - * MakeHexa - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IBlocksOperations::MakeHexa - (Handle(GEOM_Object) theFace1, Handle(GEOM_Object) theFace2, - Handle(GEOM_Object) theFace3, Handle(GEOM_Object) theFace4, - Handle(GEOM_Object) theFace5, Handle(GEOM_Object) theFace6) -{ - SetErrorCode(KO); - - if (theFace1.IsNull() || theFace2.IsNull() || - theFace3.IsNull() || theFace4.IsNull() || - theFace5.IsNull() || theFace6.IsNull()) return NULL; - - //Add a new Solid object - Handle(GEOM_Object) aBlock = GetEngine()->AddObject(GetDocID(), GEOM_BLOCK); - - //Add a new Block function - Handle(GEOM_Function) aFunction = - aBlock->AddFunction(GEOMImpl_BlockDriver::GetID(), BLOCK_SIX_FACES); - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_BlockDriver::GetID()) return NULL; - - GEOMImpl_IBlocks aPI (aFunction); - - Handle(GEOM_Function) aRef1 = theFace1->GetLastFunction(); - Handle(GEOM_Function) aRef2 = theFace2->GetLastFunction(); - Handle(GEOM_Function) aRef3 = theFace3->GetLastFunction(); - Handle(GEOM_Function) aRef4 = theFace4->GetLastFunction(); - Handle(GEOM_Function) aRef5 = theFace5->GetLastFunction(); - Handle(GEOM_Function) aRef6 = theFace6->GetLastFunction(); - if (aRef1.IsNull() || aRef2.IsNull() || - aRef3.IsNull() || aRef4.IsNull() || - aRef5.IsNull() || aRef6.IsNull()) return NULL; - - Handle(TColStd_HSequenceOfTransient) aShapesSeq = new TColStd_HSequenceOfTransient; - aShapesSeq->Append(aRef1); - aShapesSeq->Append(aRef2); - aShapesSeq->Append(aRef3); - aShapesSeq->Append(aRef4); - aShapesSeq->Append(aRef5); - aShapesSeq->Append(aRef6); - - aPI.SetShapes(aShapesSeq); - - //Compute the Block value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Block driver failed to compute a block"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aBlock << " = geompy.MakeHexa(" - << theFace1 << ", " << theFace2 << ", " << theFace3 << ", " - << theFace4 << ", " << theFace5 << ", " << theFace6 << ")"; - - SetErrorCode(OK); - return aBlock; -} - -//============================================================================= -/*! - * MakeHexa2Faces - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IBlocksOperations::MakeHexa2Faces - (Handle(GEOM_Object) theFace1, Handle(GEOM_Object) theFace2) -{ - SetErrorCode(KO); - - if (theFace1.IsNull() || theFace2.IsNull()) return NULL; - - //Add a new Solid object - Handle(GEOM_Object) aBlock = GetEngine()->AddObject(GetDocID(), GEOM_BLOCK); - - //Add a new Block function - Handle(GEOM_Function) aFunction = - aBlock->AddFunction(GEOMImpl_BlockDriver::GetID(), BLOCK_TWO_FACES); - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_BlockDriver::GetID()) return NULL; - - GEOMImpl_IBlocks aPI (aFunction); - - Handle(GEOM_Function) aRef1 = theFace1->GetLastFunction(); - Handle(GEOM_Function) aRef2 = theFace2->GetLastFunction(); - if (aRef1.IsNull() || aRef2.IsNull()) return NULL; - - Handle(TColStd_HSequenceOfTransient) aShapesSeq = new TColStd_HSequenceOfTransient; - aShapesSeq->Append(aRef1); - aShapesSeq->Append(aRef2); - - aPI.SetShapes(aShapesSeq); - - //Compute the Block value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Block driver failed to compute a block"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aBlock << " = geompy.MakeHexa2Faces(" - << theFace1 << ", " << theFace2 << ")"; - - SetErrorCode(OK); - return aBlock; -} - -//============================================================================= -/*! - * MakeBlockCompound - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IBlocksOperations::MakeBlockCompound - (Handle(GEOM_Object) theCompound) -{ - SetErrorCode(KO); - - if (theCompound.IsNull()) return NULL; - - //Add a new object - Handle(GEOM_Object) aBlockComp = GetEngine()->AddObject(GetDocID(), GEOM_COMPOUND); - - //Add a new BlocksComp function - Handle(GEOM_Function) aFunction = - aBlockComp->AddFunction(GEOMImpl_BlockDriver::GetID(), BLOCK_COMPOUND_GLUE); - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_BlockDriver::GetID()) return NULL; - - GEOMImpl_IBlocks aPI (aFunction); - - Handle(GEOM_Function) aRef1 = theCompound->GetLastFunction(); - if (aRef1.IsNull()) return NULL; - - Handle(TColStd_HSequenceOfTransient) aShapesSeq = new TColStd_HSequenceOfTransient; - aShapesSeq->Append(aRef1); - - aPI.SetShapes(aShapesSeq); - - //Compute the Blocks Compound value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Block driver failed to compute a blocks compound"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aBlockComp - << " = geompy.MakeBlockCompound(" << theCompound << ")"; - - SetErrorCode(OK); - return aBlockComp; -} - -//============================================================================= -/*! - * GetEdge - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IBlocksOperations::GetPoint - (Handle(GEOM_Object) theShape, - const Standard_Real theX, - const Standard_Real theY, - const Standard_Real theZ, - const Standard_Real theEpsilon) -{ - SetErrorCode(KO); - - //New Point object - Handle(GEOM_Object) aResult; - - // Arguments - if (theShape.IsNull()) return NULL; - - TopoDS_Shape aBlockOrComp = theShape->GetValue(); - if (aBlockOrComp.IsNull()) { - SetErrorCode("Block or compound is null"); - return NULL; - } - if (aBlockOrComp.ShapeType() != TopAbs_SOLID && - aBlockOrComp.ShapeType() != TopAbs_COMPOUND && - aBlockOrComp.ShapeType() != TopAbs_COMPSOLID) { - SetErrorCode("Shape is neither a block, nor a compound of blocks"); - return NULL; - } - - //Compute the Vertex value - gp_Pnt P (theX, theY, theZ); - Standard_Real eps = Max(theEpsilon, Precision::Confusion()); - - TopoDS_Shape V; - Standard_Integer isFound = 0; - TopTools_MapOfShape mapShape; - TopExp_Explorer exp (aBlockOrComp, TopAbs_VERTEX); - - for (; exp.More(); exp.Next()) { - if (mapShape.Add(exp.Current())) { - TopoDS_Vertex aVi = TopoDS::Vertex(exp.Current()); - gp_Pnt aPi = BRep_Tool::Pnt(aVi); - if (aPi.Distance(P) < eps) { - V = aVi; - isFound++; - } - } - } - - if (isFound == 0) { - SetErrorCode("Vertex has not been found"); - return NULL; - } else if (isFound > 1) { - SetErrorCode("Multiple vertices found by the given coordinates and epsilon"); - return NULL; - } else { - TopTools_IndexedMapOfShape anIndices; - TopExp::MapShapes(aBlockOrComp, anIndices); - Handle(TColStd_HArray1OfInteger) anArray = new TColStd_HArray1OfInteger(1,1); - anArray->SetValue(1, anIndices.FindIndex(V)); - aResult = GetEngine()->AddSubShape(theShape, anArray); - } - - //The GetPoint() doesn't change object so no new function is required. - Handle(GEOM_Function) aFunction = theShape->GetLastFunction(); - TCollection_AsciiString anOldDescr = aFunction->GetDescription(); - - //Make a Python command - GEOM::TPythonDump(aFunction) << anOldDescr.ToCString() << "\n\t" - << aResult << " = geompy.GetPoint(" << theShape << ", " - << theX << ", " << theY << ", " << theZ << ", " << theEpsilon << ")"; - - SetErrorCode(OK); - return aResult; -} - -//============================================================================= -/*! - * GetEdge - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IBlocksOperations::GetEdge - (Handle(GEOM_Object) theShape, - Handle(GEOM_Object) thePoint1, - Handle(GEOM_Object) thePoint2) -{ - SetErrorCode(KO); - - //New Edge object - Handle(GEOM_Object) aResult; - - // Arguments - if (theShape.IsNull() || thePoint1.IsNull() || thePoint2.IsNull()) return NULL; - - TopoDS_Shape aBlockOrComp = theShape->GetValue(); - if (aBlockOrComp.IsNull()) { - SetErrorCode("Block or compound is null"); - return NULL; - } - if (aBlockOrComp.ShapeType() != TopAbs_SOLID && - aBlockOrComp.ShapeType() != TopAbs_COMPOUND && - aBlockOrComp.ShapeType() != TopAbs_COMPSOLID) { - SetErrorCode("Shape is neither a block, nor a compound of blocks"); - return NULL; - } - - TopoDS_Shape anArg1 = thePoint1->GetValue(); - TopoDS_Shape anArg2 = thePoint2->GetValue(); - if (anArg1.IsNull() || anArg2.IsNull()) { - SetErrorCode("Null shape is given as argument"); - return NULL; - } - if (anArg1.ShapeType() != TopAbs_VERTEX || - anArg2.ShapeType() != TopAbs_VERTEX) { - SetErrorCode("Element for edge identification is not a vertex"); - return NULL; - } - - //Compute the Edge value - try { - TopTools_IndexedDataMapOfShapeListOfShape MVE; - GEOMImpl_Block6Explorer::MapShapesAndAncestors - (aBlockOrComp, TopAbs_VERTEX, TopAbs_EDGE, MVE); - - TopoDS_Shape V1,V2; - Standard_Integer ish, ext = MVE.Extent(); - - if (MVE.Contains(anArg1)) { - V1 = anArg1; - } else { - for (ish = 1; ish <= ext; ish++) { - TopoDS_Shape aShi = MVE.FindKey(ish); - if (BRepTools::Compare(TopoDS::Vertex(anArg1), TopoDS::Vertex(aShi))) { - V1 = aShi; - break; - } - } - } - - if (MVE.Contains(anArg2)) { - V2 = anArg2; - } else { - for (ish = 1; ish <= ext; ish++) { - TopoDS_Shape aShi = MVE.FindKey(ish); - if (BRepTools::Compare(TopoDS::Vertex(anArg2), TopoDS::Vertex(aShi))) { - V2 = aShi; - break; - } - } - } - - if (V1.IsNull() || V2.IsNull()) { - SetErrorCode("The given vertex does not belong to the shape"); - return NULL; - } - - TopoDS_Shape anEdge; - Standard_Integer isFound = - GEOMImpl_Block6Explorer::FindEdge(anEdge, V1, V2, MVE, Standard_True); - if (isFound == 0) { - SetErrorCode("The given vertices do not belong to one edge of the given shape"); - return NULL; - } else if (isFound > 1) { - SetErrorCode("Multiple edges found by the given vertices of the shape"); - return NULL; - } else { - TopTools_IndexedMapOfShape anIndices; - TopExp::MapShapes(aBlockOrComp, anIndices); - Handle(TColStd_HArray1OfInteger) anArray = new TColStd_HArray1OfInteger(1,1); - anArray->SetValue(1, anIndices.FindIndex(anEdge)); - aResult = GetEngine()->AddSubShape(theShape, anArray); - } - } catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - Handle(GEOM_Function) aFunction = aResult->GetLastFunction(); - - //Make a Python command - GEOM::TPythonDump(aFunction) << aResult << " = geompy.GetEdge(" - << theShape << ", " << thePoint1 << ", " << thePoint2 << ")"; - - SetErrorCode(OK); - return aResult; -} - -//============================================================================= -/*! - * GetEdgeNearPoint - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IBlocksOperations::GetEdgeNearPoint - (Handle(GEOM_Object) theShape, - Handle(GEOM_Object) thePoint) -{ - SetErrorCode(KO); - - //New object - Handle(GEOM_Object) aResult; - - // Arguments - if (theShape.IsNull() || thePoint.IsNull()) return NULL; - - TopoDS_Shape aBlockOrComp = theShape->GetValue(); - if (aBlockOrComp.IsNull()) { - SetErrorCode("Block or compound is null"); - return NULL; - } - if (aBlockOrComp.ShapeType() != TopAbs_SOLID && - aBlockOrComp.ShapeType() != TopAbs_COMPOUND && - aBlockOrComp.ShapeType() != TopAbs_COMPSOLID) { - SetErrorCode("Shape is neither a block, nor a compound of blocks"); - return NULL; - } - - TopoDS_Shape anArg = thePoint->GetValue(); - if (anArg.IsNull()) { - SetErrorCode("Null shape is given as argument"); - return NULL; - } - if (anArg.ShapeType() != TopAbs_VERTEX) { - SetErrorCode("Element for edge identification is not a vertex"); - return NULL; - } - - //Compute the Edge value - try { - TopoDS_Shape aShape; - - TopoDS_Vertex aVert = TopoDS::Vertex(anArg); - - // 1. Explode blocks on edges - TopTools_MapOfShape mapShape; - Standard_Integer nbEdges = 0; - TopExp_Explorer exp (aBlockOrComp, TopAbs_EDGE); - for (; exp.More(); exp.Next()) { - if (mapShape.Add(exp.Current())) { - nbEdges++; - } - } - - mapShape.Clear(); - Standard_Integer ind = 1; - TopTools_Array1OfShape anEdges (1, nbEdges); - TColStd_Array1OfReal aDistances (1, nbEdges); - for (exp.Init(aBlockOrComp, TopAbs_EDGE); exp.More(); exp.Next()) { - if (mapShape.Add(exp.Current())) { - TopoDS_Shape anEdge = exp.Current(); - anEdges(ind) = anEdge; - - // 2. Classify the point relatively each edge - BRepExtrema_DistShapeShape aDistTool (aVert, anEdges(ind)); - if (!aDistTool.IsDone()) { - SetErrorCode("Can not find a distance from the given point to one of edges"); - return NULL; - } - aDistances(ind) = aDistTool.Value(); - ind++; - } - } - - // 3. Define edge, having minimum distance to the point - Standard_Real nearest = RealLast(), nbFound = 0; - Standard_Real prec = Precision::Confusion(); - for (ind = 1; ind <= nbEdges; ind++) { - if (Abs(aDistances(ind) - nearest) < prec) { - nbFound++; - } else if (aDistances(ind) < nearest) { - nearest = aDistances(ind); - aShape = anEdges(ind); - nbFound = 1; - } else { - } - } - if (nbFound > 1) { - SetErrorCode("Multiple edges near the given point are found"); - return NULL; - } else if (nbFound == 0) { - SetErrorCode("There are no edges near the given point"); - return NULL; - } else { - TopTools_IndexedMapOfShape anIndices; - TopExp::MapShapes(aBlockOrComp, anIndices); - Handle(TColStd_HArray1OfInteger) anArray = new TColStd_HArray1OfInteger(1,1); - anArray->SetValue(1, anIndices.FindIndex(aShape)); - aResult = GetEngine()->AddSubShape(theShape, anArray); - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - Handle(GEOM_Function) aFunction = aResult->GetLastFunction(); - - //Make a Python command - GEOM::TPythonDump(aFunction) << aResult << " = geompy.GetEdgeNearPoint(" - << theShape << ", " << thePoint << ")"; - - SetErrorCode(OK); - return aResult; -} - -//============================================================================= -/*! - * GetFaceByPoints - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IBlocksOperations::GetFaceByPoints - (Handle(GEOM_Object) theShape, - Handle(GEOM_Object) thePoint1, - Handle(GEOM_Object) thePoint2, - Handle(GEOM_Object) thePoint3, - Handle(GEOM_Object) thePoint4) -{ - SetErrorCode(KO); - - //New object - Handle(GEOM_Object) aResult; - - // Arguments - if (theShape.IsNull() || - thePoint1.IsNull() || thePoint2.IsNull() || - thePoint3.IsNull() || thePoint4.IsNull()) return NULL; - - TopoDS_Shape aBlockOrComp = theShape->GetValue(); - if (aBlockOrComp.IsNull()) { - SetErrorCode("Block or compound is null"); - return NULL; - } - if (aBlockOrComp.ShapeType() != TopAbs_SOLID && - aBlockOrComp.ShapeType() != TopAbs_COMPOUND && - aBlockOrComp.ShapeType() != TopAbs_COMPSOLID) { - SetErrorCode("Shape is neither a block, nor a compound of blocks"); - return NULL; - } - - TopoDS_Shape anArg1 = thePoint1->GetValue(); - TopoDS_Shape anArg2 = thePoint2->GetValue(); - TopoDS_Shape anArg3 = thePoint3->GetValue(); - TopoDS_Shape anArg4 = thePoint4->GetValue(); - if (anArg1.IsNull() || anArg2.IsNull() || - anArg3.IsNull() || anArg4.IsNull()) { - SetErrorCode("Null shape is given as argument"); - return NULL; - } - if (anArg1.ShapeType() != TopAbs_VERTEX || - anArg2.ShapeType() != TopAbs_VERTEX || - anArg3.ShapeType() != TopAbs_VERTEX || - anArg4.ShapeType() != TopAbs_VERTEX) { - SetErrorCode("Element for face identification is not a vertex"); - return NULL; - } - - //Compute the Face value - try { - TopoDS_Shape aShape; - - TopTools_IndexedDataMapOfShapeListOfShape MVF; - GEOMImpl_Block6Explorer::MapShapesAndAncestors(aBlockOrComp, TopAbs_VERTEX, TopAbs_FACE, MVF); - - TopoDS_Shape V1,V2,V3,V4; - Standard_Integer ish, ext = MVF.Extent(); - - if (MVF.Contains(anArg1)) { - V1 = anArg1; - } else { - for (ish = 1; ish <= ext; ish++) { - TopoDS_Shape aShi = MVF.FindKey(ish); - if (BRepTools::Compare(TopoDS::Vertex(anArg1), TopoDS::Vertex(aShi))) { - V1 = aShi; - break; - } - } - } - - if (MVF.Contains(anArg2)) { - V2 = anArg2; - } else { - for (ish = 1; ish <= ext; ish++) { - TopoDS_Shape aShi = MVF.FindKey(ish); - if (BRepTools::Compare(TopoDS::Vertex(anArg2), TopoDS::Vertex(aShi))) { - V2 = aShi; - break; - } - } - } - - if (MVF.Contains(anArg3)) { - V3 = anArg3; - } else { - for (ish = 1; ish <= ext; ish++) { - TopoDS_Shape aShi = MVF.FindKey(ish); - if (BRepTools::Compare(TopoDS::Vertex(anArg3), TopoDS::Vertex(aShi))) { - V3 = aShi; - break; - } - } - } - - if (MVF.Contains(anArg4)) { - V4 = anArg4; - } else { - for (ish = 1; ish <= ext; ish++) { - TopoDS_Shape aShi = MVF.FindKey(ish); - if (BRepTools::Compare(TopoDS::Vertex(anArg4), TopoDS::Vertex(aShi))) { - V4 = aShi; - break; - } - } - } - - if (V1.IsNull() || V2.IsNull() || V3.IsNull() || V4.IsNull()) { - SetErrorCode("The given vertex does not belong to the shape"); - return NULL; - } - - Standard_Integer isFound = - GEOMImpl_Block6Explorer::FindFace(aShape, V1, V2, V3, V4, MVF, Standard_True); - if (isFound == 0) { - SetErrorCode("The given vertices do not belong to one face of the given shape"); - return NULL; - } else if (isFound > 1) { - SetErrorCode("The given vertices belong to several faces of the given shape"); - return NULL; - } else { - TopTools_IndexedMapOfShape anIndices; - TopExp::MapShapes(aBlockOrComp, anIndices); - Handle(TColStd_HArray1OfInteger) anArray = new TColStd_HArray1OfInteger(1,1); - anArray->SetValue(1, anIndices.FindIndex(aShape)); - aResult = GetEngine()->AddSubShape(theShape, anArray); - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - Handle(GEOM_Function) aFunction = aResult->GetLastFunction(); - - //Make a Python command - GEOM::TPythonDump(aFunction) << aResult << " = geompy.GetFaceByPoints(" - << theShape << ", " << thePoint1 << ", " << thePoint2 - << ", " << thePoint3 << ", " << thePoint4 << ")"; - - SetErrorCode(OK); - return aResult; -} - -//============================================================================= -/*! - * GetFaceByEdges - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IBlocksOperations::GetFaceByEdges - (Handle(GEOM_Object) theShape, - Handle(GEOM_Object) theEdge1, - Handle(GEOM_Object) theEdge2) -{ - SetErrorCode(KO); - - //New object - Handle(GEOM_Object) aResult; - - // Arguments - if (theShape.IsNull() || theEdge1.IsNull() || theEdge2.IsNull()) return NULL; - - TopoDS_Shape aBlockOrComp = theShape->GetValue(); - if (aBlockOrComp.IsNull()) { - SetErrorCode("Block or compound is null"); - return NULL; - } - if (aBlockOrComp.ShapeType() != TopAbs_SOLID && - aBlockOrComp.ShapeType() != TopAbs_COMPOUND && - aBlockOrComp.ShapeType() != TopAbs_COMPSOLID) { - SetErrorCode("Shape is neither a block, nor a compound of blocks"); - return NULL; - } - - TopoDS_Shape anArg1 = theEdge1->GetValue(); - TopoDS_Shape anArg2 = theEdge2->GetValue(); - if (anArg1.IsNull() || anArg2.IsNull()) { - SetErrorCode("Null shape is given as argument"); - return NULL; - } - if (anArg1.ShapeType() != TopAbs_EDGE || - anArg2.ShapeType() != TopAbs_EDGE) { - SetErrorCode("Element for face identification is not an edge"); - return NULL; - } - - //Compute the Face value - try { - TopoDS_Shape aShape; - - TopTools_IndexedDataMapOfShapeListOfShape MEF; - GEOMImpl_Block6Explorer::MapShapesAndAncestors(aBlockOrComp, TopAbs_EDGE, TopAbs_FACE, MEF); - - TopoDS_Shape E1,E2; - Standard_Integer ish, ext = MEF.Extent(); - - if (MEF.Contains(anArg1)) { - E1 = anArg1; - } else { - for (ish = 1; ish <= ext; ish++) { - TopoDS_Shape aShi = MEF.FindKey(ish); - if (GEOMImpl_Block6Explorer::IsSimilarEdges(anArg1, aShi)) { - E1 = aShi; - } - } - } - - if (MEF.Contains(anArg2)) { - E2 = anArg2; - } else { - for (ish = 1; ish <= ext; ish++) { - TopoDS_Shape aShi = MEF.FindKey(ish); - if (GEOMImpl_Block6Explorer::IsSimilarEdges(anArg2, aShi)) { - E2 = aShi; - } - } - } - - if (E1.IsNull() || E2.IsNull()) { - SetErrorCode("The given edge does not belong to the shape"); - return NULL; - } - - const TopTools_ListOfShape& aFacesOfE1 = MEF.FindFromKey(E1); - const TopTools_ListOfShape& aFacesOfE2 = MEF.FindFromKey(E2); - - Standard_Integer isFound = 0; - TopTools_ListIteratorOfListOfShape anIterF1 (aFacesOfE1); - for (; anIterF1.More(); anIterF1.Next()) { - - TopTools_ListIteratorOfListOfShape anIterF2 (aFacesOfE2); - for (; anIterF2.More(); anIterF2.Next()) { - - if (anIterF1.Value().IsSame(anIterF2.Value())) { - isFound++; - - // Store the face, defined by two edges - aShape = anIterF1.Value(); - } - } - } - if (isFound == 0) { - SetErrorCode("The given edges do not belong to one face of the given shape"); - return NULL; - } else if (isFound > 1) { - SetErrorCode("The given edges belong to several faces of the given shape"); - return NULL; - } else { - TopTools_IndexedMapOfShape anIndices; - TopExp::MapShapes(aBlockOrComp, anIndices); - Handle(TColStd_HArray1OfInteger) anArray = new TColStd_HArray1OfInteger(1,1); - anArray->SetValue(1, anIndices.FindIndex(aShape)); - aResult = GetEngine()->AddSubShape(theShape, anArray); - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - Handle(GEOM_Function) aFunction = aResult->GetLastFunction(); - - //Make a Python command - GEOM::TPythonDump(aFunction) << aResult << " = geompy.GetFaceByEdges(" - << theShape << ", " << theEdge1 << ", " << theEdge2 << ")"; - - SetErrorCode(OK); - return aResult; -} - -//============================================================================= -/*! - * GetOppositeFace - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IBlocksOperations::GetOppositeFace - (Handle(GEOM_Object) theShape, - Handle(GEOM_Object) theFace) -{ - SetErrorCode(KO); - - //New object - Handle(GEOM_Object) aResult; - - // Arguments - if (theShape.IsNull() || theFace.IsNull()) return NULL; - - TopoDS_Shape aBlockOrComp = theShape->GetValue(); - if (aBlockOrComp.IsNull()) { - SetErrorCode("Block is null"); - return NULL; - } - if (aBlockOrComp.ShapeType() != TopAbs_SOLID) { - SetErrorCode("Shape is not a block"); - return NULL; - } - - TopoDS_Shape anArg = theFace->GetValue(); - if (anArg.IsNull()) { - SetErrorCode("Null shape is given as argument"); - return NULL; - } - if (anArg.ShapeType() != TopAbs_FACE) { - SetErrorCode("Element for face identification is not a face"); - return NULL; - } - - //Compute the Face value - try { - TopoDS_Shape aShape; - - GEOMImpl_Block6Explorer aBlockTool; - aBlockTool.InitByBlockAndFace(aBlockOrComp, anArg); - aShape = aBlockTool.GetFace(2); - - TopTools_IndexedMapOfShape anIndices; - TopExp::MapShapes(aBlockOrComp, anIndices); - Handle(TColStd_HArray1OfInteger) anArray = new TColStd_HArray1OfInteger(1,1); - anArray->SetValue(1, anIndices.FindIndex(aShape)); - aResult = GetEngine()->AddSubShape(theShape, anArray); - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - Handle(GEOM_Function) aFunction = aResult->GetLastFunction(); - - //Make a Python command - GEOM::TPythonDump(aFunction) << aResult << " = geompy.GetOppositeFace(" - << theShape << ", " << theFace << ")"; - - SetErrorCode(OK); - return aResult; -} - -//============================================================================= -/*! - * GetFaceNearPoint - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IBlocksOperations::GetFaceNearPoint - (Handle(GEOM_Object) theShape, - Handle(GEOM_Object) thePoint) -{ - SetErrorCode(KO); - - //New object - Handle(GEOM_Object) aResult; - - // Arguments - if (theShape.IsNull() || thePoint.IsNull()) return NULL; - - TopoDS_Shape aBlockOrComp = theShape->GetValue(); - if (aBlockOrComp.IsNull()) { - SetErrorCode("Block or compound is null"); - return NULL; - } - if (aBlockOrComp.ShapeType() != TopAbs_SOLID && - aBlockOrComp.ShapeType() != TopAbs_COMPOUND && - aBlockOrComp.ShapeType() != TopAbs_COMPSOLID) { - SetErrorCode("Shape is neither a block, nor a compound of blocks"); - return NULL; - } - - TopoDS_Shape anArg = thePoint->GetValue(); - if (anArg.IsNull()) { - SetErrorCode("Null shape is given as argument"); - return NULL; - } - if (anArg.ShapeType() != TopAbs_VERTEX) { - SetErrorCode("Element for face identification is not a vertex"); - return NULL; - } - - //Compute the Face value - try { - TopoDS_Shape aShape; - - TopoDS_Vertex aVert = TopoDS::Vertex(anArg); - gp_Pnt aPnt = BRep_Tool::Pnt(aVert); - Standard_Real PX, PY, PZ; - aPnt.Coord(PX, PY, PZ); - - // 1. Classify the point relatively each face - Standard_Integer nearest = 2, nbFound = 0; - TopTools_DataMapOfShapeInteger mapShapeDist; - TopExp_Explorer exp (aBlockOrComp, TopAbs_FACE); - for (; exp.More(); exp.Next()) { - TopoDS_Shape aFace = exp.Current(); - - if (!mapShapeDist.IsBound(aFace)) { - Standard_Integer aDistance = 2; - - // 1.a. Classify relatively Surface - Handle(Geom_Surface) aSurf = BRep_Tool::Surface(TopoDS::Face(aFace)); - Handle(ShapeAnalysis_Surface) aSurfAna = new ShapeAnalysis_Surface (aSurf); - gp_Pnt2d p2dOnSurf = aSurfAna->ValueOfUV(aPnt, Precision::Confusion()); - gp_Pnt p3dOnSurf = aSurfAna->Value(p2dOnSurf); - Standard_Real aDist = p3dOnSurf.Distance(aPnt); - if (aDist > Precision::Confusion()) { - // OUT of Surface - aDistance = 1; - } else { - // 1.b. Classify relatively the face itself - BRepClass_FaceClassifier FC (TopoDS::Face(aFace), p2dOnSurf, Precision::Confusion()); - if (FC.State() == TopAbs_IN) { - aDistance = -1; - } else if (FC.State() == TopAbs_ON) { - aDistance = 0; - } else { // OUT - aDistance = 1; - } - } - - if (aDistance < nearest) { - nearest = aDistance; - aShape = aFace; - nbFound = 1; - - // A first found face, containing the point inside, will be returned. - // It is the solution, if there are no - // coincident or intersecting faces in the compound. - if (nearest == -1) break; - - } else if (aDistance == nearest) { - nbFound++; - } else { - } - - mapShapeDist.Bind(aFace, aDistance); - } // if (!mapShapeDist.IsBound(aFace)) - } - - // 2. Define face, containing the point or having minimum distance to it - if (nbFound > 1) { - if (nearest == 0) { - // The point is on boundary of some faces and there are - // no faces, having the point inside - SetErrorCode("Multiple faces near the given point are found"); - return NULL; - - } else if (nearest == 1) { - // The point is outside some faces and there are - // no faces, having the point inside or on boundary. - // We will get a nearest face - Standard_Real bigReal = RealLast(); - Standard_Real minDist = bigReal; - TopTools_DataMapIteratorOfDataMapOfShapeInteger mapShapeDistIter (mapShapeDist); - for (; mapShapeDistIter.More(); mapShapeDistIter.Next()) { - if (mapShapeDistIter.Value() == 1) { - TopoDS_Shape aFace = mapShapeDistIter.Key(); - Standard_Real aDist = bigReal; - - // 2.a. Fast check of distance - if point projection on surface is on face - Handle(Geom_Surface) aSurf = BRep_Tool::Surface(TopoDS::Face(aFace)); - Handle(ShapeAnalysis_Surface) aSurfAna = new ShapeAnalysis_Surface (aSurf); - gp_Pnt2d p2dOnSurf = aSurfAna->ValueOfUV(aPnt, Precision::Confusion()); - gp_Pnt p3dOnSurf = aSurfAna->Value(p2dOnSurf); - aDist = p3dOnSurf.Distance(aPnt); - - BRepClass_FaceClassifier FC (TopoDS::Face(aFace), p2dOnSurf, Precision::Confusion()); - if (FC.State() == TopAbs_OUT) { - if (aDist < minDist) { - // 2.b. Slow check - if point projection on surface is outside of face - BRepExtrema_DistShapeShape aDistTool (aVert, aFace); - if (!aDistTool.IsDone()) { - SetErrorCode("Can not find a distance from the given point to one of faces"); - return NULL; - } - aDist = aDistTool.Value(); - } else { - aDist = bigReal; - } - } - - if (aDist < minDist) { - minDist = aDist; - aShape = aFace; - } - } - } - } else { // nearest == -1 -// // The point is inside some faces. -// // We will get a face with nearest center -// Standard_Real minDist = RealLast(); -// TopTools_DataMapIteratorOfDataMapOfShapeInteger mapShapeDistIter (mapShapeDist); -// for (; mapShapeDistIter.More(); mapShapeDistIter.Next()) { -// if (mapShapeDistIter.Value() == -1) { -// TopoDS_Shape aFace = mapShapeDistIter.Key(); -// GProp_GProps aSystem; -// BRepGProp::SurfaceProperties(aFace, aSystem); -// gp_Pnt aCenterMass = aSystem.CentreOfMass(); -// -// Standard_Real aDist = aCenterMass.Distance(aPnt); -// if (aDist < minDist) { -// minDist = aDist; -// aShape = aFace; -// } -// } -// } - } - } // if (nbFound > 1) - - if (nbFound == 0) { - SetErrorCode("There are no faces near the given point"); - return NULL; - } else { - TopTools_IndexedMapOfShape anIndices; - TopExp::MapShapes(aBlockOrComp, anIndices); - Handle(TColStd_HArray1OfInteger) anArray = new TColStd_HArray1OfInteger(1,1); - anArray->SetValue(1, anIndices.FindIndex(aShape)); - aResult = GetEngine()->AddSubShape(theShape, anArray); - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - Handle(GEOM_Function) aFunction = aResult->GetLastFunction(); - - //Make a Python command - GEOM::TPythonDump(aFunction) << aResult << " = geompy.GetFaceNearPoint(" - << theShape << ", " << thePoint << ")"; - - SetErrorCode(OK); - return aResult; -} - -//============================================================================= -/*! - * GetFaceByNormale - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IBlocksOperations::GetFaceByNormale - (Handle(GEOM_Object) theShape, - Handle(GEOM_Object) theVector) -{ - SetErrorCode(KO); - - //New object - Handle(GEOM_Object) aResult; - - // Arguments - if (theShape.IsNull() || theVector.IsNull()) return NULL; - - TopoDS_Shape aBlockOrComp = theShape->GetValue(); - if (aBlockOrComp.IsNull()) { - SetErrorCode("Block or compound is null"); - return NULL; - } - if (aBlockOrComp.ShapeType() != TopAbs_SOLID && - aBlockOrComp.ShapeType() != TopAbs_COMPOUND && - aBlockOrComp.ShapeType() != TopAbs_COMPSOLID) { - SetErrorCode("Shape is neither a block, nor a compound of blocks"); - return NULL; - } - - TopoDS_Shape anArg = theVector->GetValue(); - if (anArg.IsNull()) { - SetErrorCode("Null shape is given as argument"); - return NULL; - } - if (anArg.ShapeType() != TopAbs_EDGE) { - SetErrorCode("Element for normale identification is not an edge"); - return NULL; - } - - //Compute the Face value - try { - TopoDS_Shape aShape; - - TopoDS_Edge anEdge = TopoDS::Edge(anArg); - TopoDS_Vertex V1, V2; - TopExp::Vertices(anEdge, V1, V2, Standard_True); - gp_Pnt P1 = BRep_Tool::Pnt(V1); - gp_Pnt P2 = BRep_Tool::Pnt(V2); - gp_Vec aVec (P1, P2); - if (aVec.Magnitude() < Precision::Confusion()) { - SetErrorCode("Vector with null magnitude is given"); - return NULL; - } - - Standard_Real minAngle = RealLast(); - TopTools_MapOfShape mapShape; - TopExp_Explorer exp (aBlockOrComp, TopAbs_FACE); - for (; exp.More(); exp.Next()) { - if (mapShape.Add(exp.Current())) { - TopoDS_Face aFace = TopoDS::Face(exp.Current()); - BRepAdaptor_Surface SF (aFace); - - Standard_Real u, v, x; - - // find a point on the surface to get normal direction in - u = SF.FirstUParameter(); - x = SF.LastUParameter(); - if (Precision::IsInfinite(u)) { - u = (Precision::IsInfinite(x)) ? 0. : x; - } else if (!Precision::IsInfinite(x)) { - u = (u+x) / 2.; - } - - v = SF.FirstVParameter(); - x = SF.LastVParameter(); - if (Precision::IsInfinite(v)) { - v = (Precision::IsInfinite(x)) ? 0. : x; - } else if (!Precision::IsInfinite(x)) { - v = (v+x) / 2.; - } - - // compute the normal direction - gp_Vec Vec1,Vec2; - SF.D1(u,v,P1,Vec1,Vec2); - gp_Vec V = Vec1.Crossed(Vec2); - x = V.Magnitude(); - if (V.Magnitude() < Precision::Confusion()) { - SetErrorCode("Normal vector of a face has null magnitude"); - return NULL; - } - - // consider the face orientation - if (aFace.Orientation() == TopAbs_REVERSED || - aFace.Orientation() == TopAbs_INTERNAL) { - V = - V; - } - - // compute the angle and compare with the minimal one - Standard_Real anAngle = aVec.Angle(V); - if (anAngle < minAngle) { - minAngle = anAngle; - aShape = aFace; - } - } - } - - if (aShape.IsNull()) { - SetErrorCode("Failed to find a face by the given normale"); - return NULL; - } else { - TopTools_IndexedMapOfShape anIndices; - TopExp::MapShapes(aBlockOrComp, anIndices); - Handle(TColStd_HArray1OfInteger) anArray = new TColStd_HArray1OfInteger(1,1); - anArray->SetValue(1, anIndices.FindIndex(aShape)); - aResult = GetEngine()->AddSubShape(theShape, anArray); - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - Handle(GEOM_Function) aFunction = aResult->GetLastFunction(); - - //Make a Python command - GEOM::TPythonDump(aFunction) << aResult << " = geompy.GetFaceByNormale(" - << theShape << ", " << theVector << ")"; - - SetErrorCode(OK); - return aResult; -} - -//============================================================================= -/*! - * IsCompoundOfBlocks - */ -//============================================================================= -Standard_Boolean GEOMImpl_IBlocksOperations::IsCompoundOfBlocks - (Handle(GEOM_Object) theCompound, - const Standard_Integer theMinNbFaces, - const Standard_Integer theMaxNbFaces, - Standard_Integer& theNbBlocks) -{ - SetErrorCode(KO); - Standard_Boolean isCompOfBlocks = Standard_False; - theNbBlocks = 0; - - if (theCompound.IsNull()) return isCompOfBlocks; - TopoDS_Shape aBlockOrComp = theCompound->GetValue(); - - //Check - isCompOfBlocks = Standard_True; - try { - TopTools_MapOfShape mapShape; - TopExp_Explorer exp (aBlockOrComp, TopAbs_SOLID); - for (; exp.More(); exp.Next()) { - if (mapShape.Add(exp.Current())) { - TopoDS_Shape aSolid = exp.Current(); - - TopTools_MapOfShape mapFaces; - TopExp_Explorer expF (aSolid, TopAbs_FACE); - Standard_Integer nbFaces = 0; - for (; expF.More(); expF.Next()) { - if (mapFaces.Add(expF.Current())) { - nbFaces++; - if (nbFaces > theMaxNbFaces) { - isCompOfBlocks = Standard_False; - break; - } - } - } - if (nbFaces < theMinNbFaces || theMaxNbFaces < nbFaces) { - isCompOfBlocks = Standard_False; - } else { - theNbBlocks++; - } - } - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return isCompOfBlocks; - } - - SetErrorCode(OK); - return isCompOfBlocks; -} - -//============================================================================= -/*! - * Set of functions, used by CheckCompoundOfBlocks() method - */ -//============================================================================= -void GEOMImpl_IBlocksOperations::AddBlocksFrom (const TopoDS_Shape& theShape, - TopTools_ListOfShape& BLO, - TopTools_ListOfShape& NOT, - TopTools_ListOfShape& EXT) -{ - TopAbs_ShapeEnum aType = theShape.ShapeType(); - switch (aType) { - case TopAbs_COMPOUND: - case TopAbs_COMPSOLID: - { - TopoDS_Iterator It (theShape); - for (; It.More(); It.Next()) { - AddBlocksFrom(It.Value(), BLO, NOT, EXT); - } - } - break; - case TopAbs_SOLID: - { - // Check, if there are seam or degenerated edges - BlockFix_CheckTool aTool; - aTool.SetShape(theShape); - aTool.Perform(); - if (aTool.NbPossibleBlocks() > 0) { - EXT.Append(theShape); - } else { - // Count faces and edges in each face to recognize blocks - TopTools_MapOfShape mapFaces; - Standard_Integer nbFaces = 0; - Standard_Boolean hasNonQuadr = Standard_False; - TopExp_Explorer expF (theShape, TopAbs_FACE); - - for (; expF.More(); expF.Next()) { - if (mapFaces.Add(expF.Current())) { - nbFaces++; - if (nbFaces > 6) break; - - // get wire - TopoDS_Shape aF = expF.Current(); - TopExp_Explorer wires (aF, TopAbs_WIRE); - if (!wires.More()) { - // no wire in the face - hasNonQuadr = Standard_True; - break; - } - TopoDS_Shape aWire = wires.Current(); - wires.Next(); - if (wires.More()) { - // multiple wires in the face - hasNonQuadr = Standard_True; - break; - } - - // Check number of edges in the face - Standard_Integer nbEdges = 0; - TopTools_MapOfShape mapEdges; - TopExp_Explorer expW (aWire, TopAbs_EDGE); - for (; expW.More(); expW.Next()) { - if (mapEdges.Add(expW.Current())) { - nbEdges++; - if (nbEdges > 4) break; - } - } - if (nbEdges != 4) { - hasNonQuadr = Standard_True; - } - } - } - - if (nbFaces == 6 && !hasNonQuadr) { - BLO.Append(theShape); - } else { - NOT.Append(theShape); - } - } - } - break; - default: - NOT.Append(theShape); - } -} - -void AddBlocksFromOld (const TopoDS_Shape& theShape, - TopTools_ListOfShape& BLO, - TopTools_ListOfShape& NOT, - TopTools_ListOfShape& DEG, - TopTools_ListOfShape& SEA) -{ - TopAbs_ShapeEnum aType = theShape.ShapeType(); - switch (aType) { - case TopAbs_COMPOUND: - case TopAbs_COMPSOLID: - { - TopoDS_Iterator It (theShape); - for (; It.More(); It.Next()) { - AddBlocksFromOld(It.Value(), BLO, NOT, DEG, SEA); - } - } - break; - case TopAbs_SOLID: - { - TopTools_MapOfShape mapFaces; - TopExp_Explorer expF (theShape, TopAbs_FACE); - Standard_Integer nbFaces = 0; - Standard_Boolean hasNonQuadr = Standard_False; - Standard_Boolean hasDegenerated = Standard_False; - Standard_Boolean hasSeam = Standard_False; - for (; expF.More(); expF.Next()) { - if (mapFaces.Add(expF.Current())) { - nbFaces++; - if (nbFaces > 6) break; - - // Check number of edges in the face - Standard_Integer nbEdges = 0; - TopTools_MapOfShape mapEdges; - - // get wire - TopoDS_Shape aF = expF.Current(); - TopExp_Explorer wires (aF, TopAbs_WIRE); - if (!wires.More()) { - // no wire in the face - hasNonQuadr = Standard_True; - break; - } - TopoDS_Shape aWire = wires.Current(); - wires.Next(); - if (wires.More()) { - // multiple wires in the face - hasNonQuadr = Standard_True; - break; - } - - // iterate on wire - BRepTools_WireExplorer aWE (TopoDS::Wire(aWire), TopoDS::Face(aF)); - for (; aWE.More(); aWE.Next(), nbEdges++) { - if (BRep_Tool::Degenerated(aWE.Current())) { - // degenerated edge found - hasDegenerated = Standard_True; -// break; - } - if (mapEdges.Contains(aWE.Current())) { - // seam edge found - hasSeam = Standard_True; -// break; - } - mapEdges.Add(aWE.Current()); - } - if (nbEdges != 4) { - hasNonQuadr = Standard_True; - } - } - } - if (nbFaces == 6) { - if (hasDegenerated || hasSeam) { - if (hasDegenerated) { - DEG.Append(theShape); - } - if (hasSeam) { - SEA.Append(theShape); - } - } else if (hasNonQuadr) { - NOT.Append(theShape); - } else { - BLO.Append(theShape); - } - } else { - NOT.Append(theShape); - } - } - break; - default: - NOT.Append(theShape); - } -} - -#define REL_NOT_CONNECTED 0 -#define REL_OK 1 -#define REL_NOT_GLUED 2 -#define REL_COLLISION_VV 3 -#define REL_COLLISION_FF 4 -#define REL_COLLISION_EE 5 -#define REL_UNKNOWN 6 - -Standard_Integer BlocksRelation (const TopoDS_Shape& theBlock1, - const TopoDS_Shape& theBlock2) -{ - // Compare bounding boxes before calling BRepExtrema_DistShapeShape - Standard_Real Xmin1, Ymin1, Zmin1, Xmax1, Ymax1, Zmax1; - Standard_Real Xmin2, Ymin2, Zmin2, Xmax2, Ymax2, Zmax2; - Bnd_Box B1, B2; - BRepBndLib::Add(theBlock1, B1); - BRepBndLib::Add(theBlock2, B2); - B1.Get(Xmin1, Ymin1, Zmin1, Xmax1, Ymax1, Zmax1); - B2.Get(Xmin2, Ymin2, Zmin2, Xmax2, Ymax2, Zmax2); - if (Xmax2 < Xmin1 || Xmax1 < Xmin2 || - Ymax2 < Ymin1 || Ymax1 < Ymin2 || - Zmax2 < Zmin1 || Zmax1 < Zmin2) { - return REL_NOT_CONNECTED; - } - - BRepExtrema_DistShapeShape dst (theBlock1, theBlock2); - if (!dst.IsDone()) { - return REL_UNKNOWN; - } - - if (dst.Value() > Precision::Confusion()) { - return REL_NOT_CONNECTED; - } - - if (dst.InnerSolution()) { - return REL_COLLISION_VV; - } - - Standard_Integer nbSol = dst.NbSolution(); - Standard_Integer relation = REL_OK; - Standard_Integer nbVerts = 0; - Standard_Integer nbEdges = 0; - Standard_Integer sol = 1; - for (; sol <= nbSol; sol++) { - BRepExtrema_SupportType supp1 = dst.SupportTypeShape1(sol); - BRepExtrema_SupportType supp2 = dst.SupportTypeShape2(sol); - if (supp1 == BRepExtrema_IsVertex && supp2 == BRepExtrema_IsVertex) { - nbVerts++; - } else if (supp1 == BRepExtrema_IsInFace || supp2 == BRepExtrema_IsInFace) { - return REL_COLLISION_FF; - } else if (supp1 == BRepExtrema_IsOnEdge && supp2 == BRepExtrema_IsOnEdge) { - nbEdges++; - } else if ((supp1 == BRepExtrema_IsOnEdge && supp2 == BRepExtrema_IsVertex) || - (supp2 == BRepExtrema_IsOnEdge && supp1 == BRepExtrema_IsVertex)) { - relation = REL_COLLISION_EE; - } else { - } - } - - if (relation != REL_OK) { - return relation; - } - - TColStd_Array1OfInteger vertSol (1, nbVerts); - TopTools_Array1OfShape V1 (1, nbVerts); - TopTools_Array1OfShape V2 (1, nbVerts); - Standard_Integer ivs = 0; - for (sol = 1; sol <= nbSol; sol++) { - if (dst.SupportTypeShape1(sol) == BRepExtrema_IsVertex && - dst.SupportTypeShape2(sol) == BRepExtrema_IsVertex) { - TopoDS_Vertex Vcur = TopoDS::Vertex(dst.SupportOnShape1(sol)); - // Check, that this vertex is far enough from other solution vertices. - Standard_Integer ii = 1; - for (; ii <= ivs; ii++) { - if (BRepTools::Compare(TopoDS::Vertex(V1(ii)), Vcur)) { - continue; - } - } - ivs++; - vertSol(ivs) = sol; - V1(ivs) = Vcur; - V2(ivs) = dst.SupportOnShape2(sol); - } - } - - // As we deal only with quadrangles, - // 2, 3 or 4 vertex solutions can be found. - if (ivs <= 1) { - if (nbEdges > 0) { - return REL_COLLISION_FF; - } - return REL_NOT_CONNECTED; - } - if (ivs > 4) { - return REL_UNKNOWN; - } - - // Check sharing of coincident entities. - if (ivs == 2 || ivs == 3) { - // Map vertices and edges of the blocks - TopTools_IndexedDataMapOfShapeListOfShape MVE1, MVE2; - GEOMImpl_Block6Explorer::MapShapesAndAncestors - (theBlock1, TopAbs_VERTEX, TopAbs_EDGE, MVE1); - GEOMImpl_Block6Explorer::MapShapesAndAncestors - (theBlock2, TopAbs_VERTEX, TopAbs_EDGE, MVE2); - - if (ivs == 2) { - // Find common edge - TopoDS_Shape anEdge1, anEdge2; - GEOMImpl_Block6Explorer::FindEdge(anEdge1, V1(1), V1(2), MVE1); - if (anEdge1.IsNull()) return REL_UNKNOWN; - - GEOMImpl_Block6Explorer::FindEdge(anEdge2, V2(1), V2(2), MVE2); - if (anEdge2.IsNull()) return REL_UNKNOWN; - - if (!anEdge1.IsSame(anEdge2)) return REL_NOT_GLUED; - - } else { // ivs == 3 - // Find common edges - Standard_Integer e1_v1 = 1; - Standard_Integer e1_v2 = 2; - Standard_Integer e2_v1 = 3; - Standard_Integer e2_v2 = 1; - - TopoDS_Shape anEdge11, anEdge12; - GEOMImpl_Block6Explorer::FindEdge(anEdge11, V1(e1_v1), V1(e1_v2), MVE1); - if (anEdge11.IsNull()) { - e1_v2 = 3; - e2_v1 = 2; - GEOMImpl_Block6Explorer::FindEdge(anEdge11, V1(e1_v1), V1(e1_v2), MVE1); - if (anEdge11.IsNull()) return REL_UNKNOWN; - } - GEOMImpl_Block6Explorer::FindEdge(anEdge12, V1(e2_v1), V1(e2_v2), MVE1); - if (anEdge12.IsNull()) { - e2_v2 = 5 - e2_v1; - GEOMImpl_Block6Explorer::FindEdge(anEdge12, V1(e2_v1), V1(e2_v2), MVE1); - if (anEdge12.IsNull()) return REL_UNKNOWN; - } - - TopoDS_Shape anEdge21, anEdge22; - GEOMImpl_Block6Explorer::FindEdge(anEdge21, V2(e1_v1), V2(e1_v2), MVE2); - if (anEdge21.IsNull()) return REL_UNKNOWN; - GEOMImpl_Block6Explorer::FindEdge(anEdge22, V2(e2_v1), V2(e2_v2), MVE2); - if (anEdge22.IsNull()) return REL_UNKNOWN; - - // Check of edges coincidence (with some precision) have to be done here - // if (!anEdge11.IsEqual(anEdge21)) return REL_UNKNOWN; - // if (!anEdge12.IsEqual(anEdge22)) return REL_UNKNOWN; - - // Check of edges sharing - if (!anEdge11.IsSame(anEdge21)) return REL_NOT_GLUED; - if (!anEdge12.IsSame(anEdge22)) return REL_NOT_GLUED; - } - } - - if (ivs == 4) { - // Map vertices and faces of the blocks - TopTools_IndexedDataMapOfShapeListOfShape MVF1, MVF2; - GEOMImpl_Block6Explorer::MapShapesAndAncestors - (theBlock1, TopAbs_VERTEX, TopAbs_FACE, MVF1); - GEOMImpl_Block6Explorer::MapShapesAndAncestors - (theBlock2, TopAbs_VERTEX, TopAbs_FACE, MVF2); - - TopoDS_Shape aFace1, aFace2; - GEOMImpl_Block6Explorer::FindFace(aFace1, V1(1), V1(2), V1(3), V1(4), MVF1); - if (aFace1.IsNull()) return REL_UNKNOWN; - GEOMImpl_Block6Explorer::FindFace(aFace2, V2(1), V2(2), V2(3), V2(4), MVF2); - if (aFace2.IsNull()) return REL_UNKNOWN; - - // Check of faces coincidence (with some precision) have to be done here - // if (!aFace1.IsEqual(aFace2)) return REL_UNKNOWN; - - // Check of faces sharing - if (!aFace1.IsSame(aFace2)) return REL_NOT_GLUED; - } - - return REL_OK; -} - -void FindConnected (const Standard_Integer theBlockIndex, - const TColStd_Array2OfInteger& theRelations, - TColStd_MapOfInteger& theProcessedMap, - TColStd_MapOfInteger& theConnectedMap) -{ - theConnectedMap.Add(theBlockIndex); - theProcessedMap.Add(theBlockIndex); - - Standard_Integer nbBlocks = theRelations.ColLength(); - Standard_Integer col = 1; - for (; col <= nbBlocks; col++) { - if (theRelations(theBlockIndex, col) == REL_OK || - theRelations(theBlockIndex, col) == REL_NOT_GLUED) { - if (!theProcessedMap.Contains(col)) { - FindConnected(col, theRelations, theProcessedMap, theConnectedMap); - } - } - } -} - -Standard_Boolean HasAnyConnection (const Standard_Integer theBlockIndex, - const TColStd_MapOfInteger& theWith, - const TColStd_Array2OfInteger& theRelations, - TColStd_MapOfInteger& theProcessedMap) -{ - theProcessedMap.Add(theBlockIndex); - - Standard_Integer nbBlocks = theRelations.ColLength(); - Standard_Integer col = 1; - for (; col <= nbBlocks; col++) { - if (theRelations(theBlockIndex, col) != REL_NOT_CONNECTED) { - if (!theProcessedMap.Contains(col)) { - if (theWith.Contains(col)) - return Standard_True; - if (HasAnyConnection(col, theWith, theRelations, theProcessedMap)) - return Standard_True; - } - } - } - - return Standard_False; -} - -//============================================================================= -/*! - * CheckCompoundOfBlocksOld - */ -//============================================================================= -Standard_Boolean GEOMImpl_IBlocksOperations::CheckCompoundOfBlocksOld - (Handle(GEOM_Object) theCompound, - list& theErrors) -{ - SetErrorCode(KO); - - if (theCompound.IsNull()) return Standard_False; - TopoDS_Shape aBlockOrComp = theCompound->GetValue(); - - Standard_Boolean isCompOfBlocks = Standard_True; - - // Map sub-shapes and their indices - TopTools_IndexedMapOfShape anIndices; - TopExp::MapShapes(aBlockOrComp, anIndices); - - // 1. Report non-blocks - TopTools_ListOfShape NOT; // Not blocks - TopTools_ListOfShape DEG; // Hexahedral solids, having degenerated edges - TopTools_ListOfShape SEA; // Hexahedral solids, having seam edges - TopTools_ListOfShape BLO; // All blocks from the given compound - AddBlocksFromOld(aBlockOrComp, BLO, NOT, DEG, SEA); - - if (NOT.Extent() > 0) { - isCompOfBlocks = Standard_False; - BCError anErr; - anErr.error = NOT_BLOCK; - TopTools_ListIteratorOfListOfShape it (NOT); - for (; it.More(); it.Next()) { - anErr.incriminated.push_back(anIndices.FindIndex(it.Value())); - } - theErrors.push_back(anErr); - } - - if (DEG.Extent() > 0 || SEA.Extent() > 0) { - isCompOfBlocks = Standard_False; - BCError anErr; - anErr.error = EXTRA_EDGE; - - TopTools_ListIteratorOfListOfShape itDEG (DEG); - for (; itDEG.More(); itDEG.Next()) { - anErr.incriminated.push_back(anIndices.FindIndex(itDEG.Value())); - } - - TopTools_ListIteratorOfListOfShape itSEA (SEA); - for (; itSEA.More(); itSEA.Next()) { - anErr.incriminated.push_back(anIndices.FindIndex(itSEA.Value())); - } - - theErrors.push_back(anErr); - } - - Standard_Integer nbBlocks = BLO.Extent(); - if (nbBlocks == 0) { - isCompOfBlocks = Standard_False; - SetErrorCode(OK); - return isCompOfBlocks; - } - if (nbBlocks == 1) { - SetErrorCode(OK); - return isCompOfBlocks; - } - - // Convert list of blocks into array for easy and fast access - Standard_Integer ibl = 1; - TopTools_Array1OfShape aBlocks (1, nbBlocks); - TopTools_ListIteratorOfListOfShape BLOit (BLO); - for (; BLOit.More(); BLOit.Next(), ibl++) { - aBlocks.SetValue(ibl, BLOit.Value()); - } - - // 2. Find relations between all blocks, - // report connection errors (NOT_GLUED and INVALID_CONNECTION) - TColStd_Array2OfInteger aRelations (1, nbBlocks, 1, nbBlocks); - aRelations.Init(REL_NOT_CONNECTED); - - Standard_Integer row = 1; - for (row = 1; row <= nbBlocks; row++) { - TopoDS_Shape aBlock = aBlocks.Value(row); - - Standard_Integer col = row + 1; - for (; col <= nbBlocks; col++) { - Standard_Integer aRel = BlocksRelation(aBlock, aBlocks.Value(col)); - if (aRel != REL_NOT_CONNECTED) { - aRelations.SetValue(row, col, aRel); - aRelations.SetValue(col, row, aRel); - if (aRel == REL_NOT_GLUED) { - // report connection error - isCompOfBlocks = Standard_False; - BCError anErr; - anErr.error = NOT_GLUED; - anErr.incriminated.push_back(anIndices.FindIndex(aBlocks.Value(row))); - anErr.incriminated.push_back(anIndices.FindIndex(aBlocks.Value(col))); - theErrors.push_back(anErr); - } else if (aRel == REL_COLLISION_VV || - aRel == REL_COLLISION_FF || - aRel == REL_COLLISION_EE || - aRel == REL_UNKNOWN) { - // report connection error - isCompOfBlocks = Standard_False; - BCError anErr; - anErr.error = INVALID_CONNECTION; - anErr.incriminated.push_back(anIndices.FindIndex(aBlocks.Value(row))); - anErr.incriminated.push_back(anIndices.FindIndex(aBlocks.Value(col))); - theErrors.push_back(anErr); - } else { - } - } - } - } - - // 3. Find largest set of connected (good connection or not glued) blocks - TColStd_MapOfInteger aProcessedMap; - TColStd_MapOfInteger aLargestSet; - TColStd_MapOfInteger aCurrentSet; - for (ibl = 1; ibl <= nbBlocks; ibl++) { - if (!aProcessedMap.Contains(ibl)) { - aCurrentSet.Clear(); - FindConnected(ibl, aRelations, aProcessedMap, aCurrentSet); - if (aCurrentSet.Extent() > aLargestSet.Extent()) { - aLargestSet = aCurrentSet; - } - } - } - - // 4. Report all blocks, isolated from - BCError anErr; - anErr.error = NOT_CONNECTED; - Standard_Boolean hasIsolated = Standard_False; - for (ibl = 1; ibl <= nbBlocks; ibl++) { - if (!aLargestSet.Contains(ibl)) { - aProcessedMap.Clear(); - if (!HasAnyConnection(ibl, aLargestSet, aRelations, aProcessedMap)) { - // report connection absence - hasIsolated = Standard_True; - anErr.incriminated.push_back(anIndices.FindIndex(aBlocks.Value(ibl))); - } - } - } - if (hasIsolated) { - isCompOfBlocks = Standard_False; - theErrors.push_back(anErr); - } - - SetErrorCode(OK); - return isCompOfBlocks; -} - -//============================================================================= -/*! - * PrintBCErrors - */ -//============================================================================= -TCollection_AsciiString GEOMImpl_IBlocksOperations::PrintBCErrors - (Handle(GEOM_Object) theCompound, - const list& theErrors) -{ - TCollection_AsciiString aDescr; - - list::const_iterator errIt = theErrors.begin(); - int i = 0; - for (; errIt != theErrors.end(); i++, errIt++) { - BCError errStruct = *errIt; - - switch (errStruct.error) { - case NOT_BLOCK: - aDescr += "\n\tNot a Blocks: "; - break; - case EXTRA_EDGE: - aDescr += "\n\tHexahedral solids with degenerated and/or seam edges: "; - break; - case INVALID_CONNECTION: - aDescr += "\n\tInvalid connection between two blocks: "; - break; - case NOT_CONNECTED: - aDescr += "\n\tBlocks, not connected with main body: "; - break; - case NOT_GLUED: - aDescr += "\n\tNot glued blocks: "; - break; - default: - break; - } - - list sshList = errStruct.incriminated; - list::iterator sshIt = sshList.begin(); - int jj = 0; - for (; sshIt != sshList.end(); jj++, sshIt++) { - if (jj > 0) - aDescr += ", "; - aDescr += TCollection_AsciiString(*sshIt); - } - } - - return aDescr; -} - -//============================================================================= -/*! - * CheckCompoundOfBlocks - */ -//============================================================================= -Standard_Boolean GEOMImpl_IBlocksOperations::CheckCompoundOfBlocks - (Handle(GEOM_Object) theCompound, - list& theErrors) -{ - SetErrorCode(KO); - - if (theCompound.IsNull()) return Standard_False; - TopoDS_Shape aBlockOrComp = theCompound->GetValue(); - - Standard_Boolean isCompOfBlocks = Standard_True; - - // Map sub-shapes and their indices - TopTools_IndexedMapOfShape anIndices; - TopExp::MapShapes(aBlockOrComp, anIndices); - - // 1. Separate blocks from non-blocks - TopTools_ListOfShape NOT; // Not blocks - TopTools_ListOfShape EXT; // Hexahedral solids, having degenerated and/or seam edges - TopTools_ListOfShape BLO; // All blocks from the given compound - AddBlocksFrom(aBlockOrComp, BLO, NOT, EXT); - - // Report non-blocks - if (NOT.Extent() > 0) { - isCompOfBlocks = Standard_False; - BCError anErr; - anErr.error = NOT_BLOCK; - TopTools_ListIteratorOfListOfShape it (NOT); - for (; it.More(); it.Next()) { - anErr.incriminated.push_back(anIndices.FindIndex(it.Value())); - } - theErrors.push_back(anErr); - } - - // Report solids, having degenerated and/or seam edges - if (EXT.Extent() > 0) { - isCompOfBlocks = Standard_False; - BCError anErr; - anErr.error = EXTRA_EDGE; - TopTools_ListIteratorOfListOfShape it (EXT); - for (; it.More(); it.Next()) { - anErr.incriminated.push_back(anIndices.FindIndex(it.Value())); - } - theErrors.push_back(anErr); - } - - Standard_Integer nbBlocks = BLO.Extent(); - if (nbBlocks == 0) { - isCompOfBlocks = Standard_False; - SetErrorCode(OK); - return isCompOfBlocks; - } - if (nbBlocks == 1) { - SetErrorCode(OK); - return isCompOfBlocks; - } - - // Prepare data for 2. and 3. - TColStd_Array2OfInteger aRelations (1, nbBlocks, 1, nbBlocks); - aRelations.Init(REL_NOT_CONNECTED); - - TopTools_IndexedMapOfShape mapBlocks; - - BRep_Builder BB; - TopoDS_Compound aComp; - BB.MakeCompound(aComp); - - TopTools_ListIteratorOfListOfShape BLOit (BLO); - for (; BLOit.More(); BLOit.Next()) { - mapBlocks.Add(BLOit.Value()); - BB.Add(aComp, BLOit.Value()); - } - - // 2. Find glued blocks (having shared faces) - TopTools_IndexedDataMapOfShapeListOfShape mapFaceBlocks; - GEOMImpl_Block6Explorer::MapShapesAndAncestors - (aComp, TopAbs_FACE, TopAbs_SOLID, mapFaceBlocks); - - Standard_Integer prevInd = 0, curInd = 0; - Standard_Integer ind = 1, nbFaces = mapFaceBlocks.Extent(); - for (; ind <= nbFaces; ind++) { - const TopTools_ListOfShape& aGluedBlocks = mapFaceBlocks.FindFromIndex(ind); - if (aGluedBlocks.Extent() > 1) { // Shared face found - TopTools_ListIteratorOfListOfShape aGluedBlocksIt (aGluedBlocks); - TopoDS_Shape prevBlock, curBlock; - for (; aGluedBlocksIt.More(); aGluedBlocksIt.Next()) { - curBlock = aGluedBlocksIt.Value(); - if (!prevBlock.IsNull()) { - prevInd = mapBlocks.FindIndex(prevBlock); - curInd = mapBlocks.FindIndex(curBlock); - aRelations.SetValue(prevInd, curInd, REL_OK); - aRelations.SetValue(curInd, prevInd, REL_OK); - } - prevBlock = curBlock; - } - } - } - - // 3. Find not glued blocks - GEOMAlgo_GlueAnalyser aGD; - - aGD.SetShape(aComp); - aGD.SetTolerance(Precision::Confusion()); - aGD.SetCheckGeometry(Standard_True); - aGD.Perform(); - - Standard_Integer iErr, iWrn; - iErr = aGD.ErrorStatus(); - if (iErr) { - SetErrorCode("Error in GEOMAlgo_GlueAnalyser"); - return isCompOfBlocks; - } - iWrn = aGD.WarningStatus(); - if (iWrn) { - MESSAGE("Warning in GEOMAlgo_GlueAnalyser"); - } - - // Report not glued blocks - if (aGD.HasSolidsToGlue()) { - isCompOfBlocks = Standard_False; - Standard_Integer aSx1Ind, aSx2Ind; - - const GEOMAlgo_ListOfCoupleOfShapes& aLCS = aGD.SolidsToGlue(); - GEOMAlgo_ListIteratorOfListOfCoupleOfShapes aItCS (aLCS); - for (; aItCS.More(); aItCS.Next()) { - const GEOMAlgo_CoupleOfShapes& aCS = aItCS.Value(); - const TopoDS_Shape& aSx1 = aCS.Shape1(); - const TopoDS_Shape& aSx2 = aCS.Shape2(); - - aSx1Ind = mapBlocks.FindIndex(aSx1); - aSx2Ind = mapBlocks.FindIndex(aSx2); - aRelations.SetValue(aSx1Ind, aSx2Ind, NOT_GLUED); - aRelations.SetValue(aSx2Ind, aSx1Ind, NOT_GLUED); - - BCError anErr; - anErr.error = NOT_GLUED; - anErr.incriminated.push_back(anIndices.FindIndex(aSx1)); - anErr.incriminated.push_back(anIndices.FindIndex(aSx2)); - theErrors.push_back(anErr); - } - } - - // 4. Find largest set of connected (good connection or not glued) blocks - Standard_Integer ibl = 1; - TColStd_MapOfInteger aProcessedMap; - TColStd_MapOfInteger aLargestSet; - TColStd_MapOfInteger aCurrentSet; - for (ibl = 1; ibl <= nbBlocks; ibl++) { - if (!aProcessedMap.Contains(ibl)) { - aCurrentSet.Clear(); - FindConnected(ibl, aRelations, aProcessedMap, aCurrentSet); - if (aCurrentSet.Extent() > aLargestSet.Extent()) { - aLargestSet = aCurrentSet; - } - } - } - - // 5. Report all blocks, isolated from - BCError anErr; - anErr.error = NOT_CONNECTED; - Standard_Boolean hasIsolated = Standard_False; - for (ibl = 1; ibl <= nbBlocks; ibl++) { - if (!aLargestSet.Contains(ibl)) { - aProcessedMap.Clear(); - if (!HasAnyConnection(ibl, aLargestSet, aRelations, aProcessedMap)) { - // report connection absence - hasIsolated = Standard_True; - anErr.incriminated.push_back(anIndices.FindIndex(mapBlocks.FindKey(ibl))); - } - } - } - if (hasIsolated) { - isCompOfBlocks = Standard_False; - theErrors.push_back(anErr); - } - - SetErrorCode(OK); - return isCompOfBlocks; -} - -//============================================================================= -/*! - * RemoveExtraEdges - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IBlocksOperations::RemoveExtraEdges - (Handle(GEOM_Object) theObject) -{ - SetErrorCode(KO); - - if (theObject.IsNull()) return NULL; - - Handle(GEOM_Function) aLastFunction = theObject->GetLastFunction(); - if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be fixed - - //Add a new Copy object - Handle(GEOM_Object) aCopy = GetEngine()->AddObject(GetDocID(), GEOM_COPY); - - //Add a function - Handle(GEOM_Function) aFunction = - aCopy->AddFunction(GEOMImpl_BlockDriver::GetID(), BLOCK_REMOVE_EXTRA); - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_BlockDriver::GetID()) return NULL; - - GEOMImpl_IBlockTrsf aTI (aFunction); - aTI.SetOriginal(aLastFunction); - - //Compute the fixed shape - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Block driver failed to remove extra edges of the given shape"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aCopy - << " = geompy.RemoveExtraEdges(" << theObject << ")"; - - SetErrorCode(OK); - return aCopy; -} - -//============================================================================= -/*! - * CheckAndImprove - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IBlocksOperations::CheckAndImprove - (Handle(GEOM_Object) theObject) -{ - SetErrorCode(KO); - - if (theObject.IsNull()) return NULL; - - Handle(GEOM_Function) aLastFunction = theObject->GetLastFunction(); - if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be fixed - - //Add a new Copy object - Handle(GEOM_Object) aCopy = GetEngine()->AddObject(GetDocID(), GEOM_COPY); - - //Add a function - Handle(GEOM_Function) aFunction = - aCopy->AddFunction(GEOMImpl_BlockDriver::GetID(), BLOCK_COMPOUND_IMPROVE); - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_BlockDriver::GetID()) return NULL; - - GEOMImpl_IBlockTrsf aTI (aFunction); - aTI.SetOriginal(aLastFunction); - - //Compute the fixed shape - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Block driver failed to improve the given blocks compound"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aCopy - << " = geompy.CheckAndImprove(" << theObject << ")"; - - SetErrorCode(OK); - return aCopy; -} - -//============================================================================= -/*! - * ExplodeCompoundOfBlocks - */ -//============================================================================= -Handle(TColStd_HSequenceOfTransient) GEOMImpl_IBlocksOperations::ExplodeCompoundOfBlocks - (Handle(GEOM_Object) theCompound, - const Standard_Integer theMinNbFaces, - const Standard_Integer theMaxNbFaces) -{ - SetErrorCode(KO); - - if (theCompound.IsNull()) return NULL; - TopoDS_Shape aBlockOrComp = theCompound->GetValue(); - if (aBlockOrComp.IsNull()) return NULL; - - Handle(TColStd_HSequenceOfTransient) aBlocks = new TColStd_HSequenceOfTransient; - Handle(GEOM_Object) anObj; - Handle(GEOM_Function) aFunction; - - TopTools_MapOfShape mapShape; - TCollection_AsciiString anAsciiList, anEntry; - - // Map shapes - TopTools_IndexedMapOfShape anIndices; - TopExp::MapShapes(aBlockOrComp, anIndices); - Handle(TColStd_HArray1OfInteger) anArray; - - // Explode - try { - TopExp_Explorer exp (aBlockOrComp, TopAbs_SOLID); - for (; exp.More(); exp.Next()) { - if (mapShape.Add(exp.Current())) { - TopoDS_Shape aSolid = exp.Current(); - - TopTools_MapOfShape mapFaces; - TopExp_Explorer expF (aSolid, TopAbs_FACE); - Standard_Integer nbFaces = 0; - for (; expF.More(); expF.Next()) { - if (mapFaces.Add(expF.Current())) { - nbFaces++; - } - } - - if (theMinNbFaces <= nbFaces && nbFaces <= theMaxNbFaces) { - anArray = new TColStd_HArray1OfInteger(1,1); - anArray->SetValue(1, anIndices.FindIndex(aSolid)); - anObj = GetEngine()->AddSubShape(theCompound, anArray); - aBlocks->Append(anObj); - - //Make a Python command - TDF_Tool::Entry(anObj->GetEntry(), anEntry); - anAsciiList += anEntry + ", "; - } - } - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return aBlocks; - } - - if (aBlocks->IsEmpty()) { - SetErrorCode("There are no specified blocks in the given shape"); - return aBlocks; - } - - anAsciiList.Trunc(anAsciiList.Length() - 2); - - //The explode doesn't change object so no new function is required. - aFunction = theCompound->GetLastFunction(); - TCollection_AsciiString anOldDescr = aFunction->GetDescription(); - - //Make a Python command - GEOM::TPythonDump(aFunction) << anOldDescr.ToCString() << "\n\t[" - << anAsciiList.ToCString() << "] = geompy.MakeBlockExplode(" - << theCompound << ", " << theMinNbFaces << ", " << theMaxNbFaces << ")"; - - SetErrorCode(OK); - return aBlocks; -} - -//============================================================================= -/*! - * GetBlockNearPoint - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IBlocksOperations::GetBlockNearPoint - (Handle(GEOM_Object) theCompound, - Handle(GEOM_Object) thePoint) -{ - SetErrorCode(KO); - - //New object - Handle(GEOM_Object) aResult; - - // Arguments - if (theCompound.IsNull() || thePoint.IsNull()) return NULL; - - TopoDS_Shape aBlockOrComp = theCompound->GetValue(); - if (aBlockOrComp.IsNull()) { - SetErrorCode("Compound is null"); - return NULL; - } - if (aBlockOrComp.ShapeType() != TopAbs_COMPOUND && - aBlockOrComp.ShapeType() != TopAbs_COMPSOLID) { - SetErrorCode("Shape to find block in is not a compound"); - return NULL; - } - - TopoDS_Shape anArg = thePoint->GetValue(); - if (anArg.IsNull()) { - SetErrorCode("Point is null"); - return NULL; - } - if (anArg.ShapeType() != TopAbs_VERTEX) { - SetErrorCode("Shape for block identification is not a vertex"); - return NULL; - } - - //Compute the Block value - try { - TopoDS_Shape aShape; - - TopoDS_Vertex aVert = TopoDS::Vertex(anArg); - gp_Pnt aPnt = BRep_Tool::Pnt(aVert); - Standard_Real PX, PY, PZ; - aPnt.Coord(PX, PY, PZ); - - // 1. Classify the point relatively each block - Standard_Integer nearest = 2, nbFound = 0; - TopTools_DataMapOfShapeInteger mapShapeDist; - TopExp_Explorer exp (aBlockOrComp, TopAbs_SOLID); - for (; exp.More(); exp.Next()) { - TopoDS_Shape aSolid = exp.Current(); - - if (!mapShapeDist.IsBound(aSolid)) { - Standard_Integer aDistance = 2; - - // 1.a. Classify relatively Bounding box - Standard_Real Xmin, Ymin, Zmin, Xmax, Ymax, Zmax; - Bnd_Box BB; - BRepBndLib::Add(aSolid, BB); - BB.Get(Xmin, Ymin, Zmin, Xmax, Ymax, Zmax); - if (PX < Xmin || Xmax < PX || - PY < Ymin || Ymax < PY || - PZ < Zmin || Zmax < PZ) { - // OUT of bounding box - aDistance = 1; - } else { - // 1.b. Classify relatively the solid itself - BRepClass3d_SolidClassifier SC (aSolid, aPnt, Precision::Confusion()); - if (SC.State() == TopAbs_IN) { - aDistance = -1; - } else if (SC.State() == TopAbs_ON) { - aDistance = 0; - } else { // OUT - aDistance = 1; - } - } - - if (aDistance < nearest) { - nearest = aDistance; - aShape = aSolid; - nbFound = 1; - - // A first found block, containing the point inside, will be returned. - // It is the solution, if there are no intersecting blocks in the compound. - if (nearest == -1) break; - - } else if (aDistance == nearest) { - nbFound++; - } else { - } - - mapShapeDist.Bind(aSolid, aDistance); - } // if (!mapShapeDist.IsBound(aSolid)) - } - - // 2. Define block, containing the point or having minimum distance to it - if (nbFound > 1) { - if (nearest == 0) { - // The point is on boundary of some blocks and there are - // no blocks, having the point inside their volume - SetErrorCode("Multiple blocks near the given point are found"); - return NULL; - - } else if (nearest == 1) { - // The point is outside some blocks and there are - // no blocks, having the point inside or on boundary. - // We will get a nearest block - Standard_Real minDist = RealLast(); - TopTools_DataMapIteratorOfDataMapOfShapeInteger mapShapeDistIter (mapShapeDist); - for (; mapShapeDistIter.More(); mapShapeDistIter.Next()) { - if (mapShapeDistIter.Value() == 1) { - TopoDS_Shape aSolid = mapShapeDistIter.Key(); - BRepExtrema_DistShapeShape aDistTool (aVert, aSolid); - if (!aDistTool.IsDone()) { - SetErrorCode("Can not find a distance from the given point to one of blocks"); - return NULL; - } - Standard_Real aDist = aDistTool.Value(); - if (aDist < minDist) { - minDist = aDist; - aShape = aSolid; - } - } - } - } else { // nearest == -1 -// // The point is inside some blocks. -// // We will get a block with nearest center -// Standard_Real minDist = RealLast(); -// TopTools_DataMapIteratorOfDataMapOfShapeInteger mapShapeDistIter (mapShapeDist); -// for (; mapShapeDistIter.More(); mapShapeDistIter.Next()) { -// if (mapShapeDistIter.Value() == -1) { -// TopoDS_Shape aSolid = mapShapeDistIter.Key(); -// GProp_GProps aSystem; -// BRepGProp::VolumeProperties(aSolid, aSystem); -// gp_Pnt aCenterMass = aSystem.CentreOfMass(); -// -// Standard_Real aDist = aCenterMass.Distance(aPnt); -// if (aDist < minDist) { -// minDist = aDist; -// aShape = aSolid; -// } -// } -// } - } - } // if (nbFound > 1) - - if (nbFound == 0) { - SetErrorCode("There are no blocks near the given point"); - return NULL; - } else { - TopTools_IndexedMapOfShape anIndices; - TopExp::MapShapes(aBlockOrComp, anIndices); - Handle(TColStd_HArray1OfInteger) anArray = new TColStd_HArray1OfInteger(1,1); - anArray->SetValue(1, anIndices.FindIndex(aShape)); - aResult = GetEngine()->AddSubShape(theCompound, anArray); - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - Handle(GEOM_Function) aFunction = aResult->GetLastFunction(); - - //Make a Python command - GEOM::TPythonDump(aFunction) << aResult << " = geompy.GetBlockNearPoint(" - << theCompound << ", " << thePoint << ")"; - - SetErrorCode(OK); - return aResult; -} - -//============================================================================= -/*! - * GetBlockByParts - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IBlocksOperations::GetBlockByParts - (Handle(GEOM_Object) theCompound, - const Handle(TColStd_HSequenceOfTransient)& theParts) -{ - SetErrorCode(KO); - - Handle(GEOM_Object) aResult; - - if (theCompound.IsNull() || theParts.IsNull()) return NULL; - TopoDS_Shape aBlockOrComp = theCompound->GetValue(); - if (aBlockOrComp.IsNull()) return NULL; - - //Get the parts - Standard_Integer argi, aLen = theParts->Length(); - TopTools_Array1OfShape anArgs (1, aLen); - TCollection_AsciiString anEntry, aPartsDescr; - for (argi = 1; argi <= aLen; argi++) { - Handle(GEOM_Object) anObj = Handle(GEOM_Object)::DownCast(theParts->Value(argi)); - Handle(GEOM_Function) aRef = anObj->GetLastFunction(); - if (aRef.IsNull()) return NULL; - - TopoDS_Shape anArg = aRef->GetValue(); - if (anArg.IsNull()) { - SetErrorCode("Null shape is given as argument"); - return NULL; - } - anArgs(argi) = anArg; - - // For Python command - TDF_Tool::Entry(anObj->GetEntry(), anEntry); - if (argi > 1) aPartsDescr += ", "; - aPartsDescr += anEntry; - } - - //Compute the Block value - try { - // 1. Explode compound on solids - TopTools_MapOfShape mapShape; - Standard_Integer nbSolids = 0; - TopExp_Explorer exp (aBlockOrComp, TopAbs_SOLID); - for (; exp.More(); exp.Next()) { - if (mapShape.Add(exp.Current())) { - nbSolids++; - } - } - - mapShape.Clear(); - Standard_Integer ind = 1; - TopTools_Array1OfShape aSolids (1, nbSolids); - TColStd_Array1OfInteger aNbParts (1, nbSolids); - for (exp.Init(aBlockOrComp, TopAbs_SOLID); exp.More(); exp.Next(), ind++) { - if (mapShape.Add(exp.Current())) { - TopoDS_Shape aSolid = exp.Current(); - aSolids(ind) = aSolid; - aNbParts(ind) = 0; - - // 2. Define quantity of parts, contained in each solid - TopTools_IndexedMapOfShape aSubShapes; - TopExp::MapShapes(aSolid, aSubShapes); - for (argi = 1; argi <= aLen; argi++) { - if (aSubShapes.Contains(anArgs(argi))) { - aNbParts(ind)++; - } - } - } - } - - // 3. Define solid, containing maximum quantity of parts - Standard_Integer maxNb = 0, nbFound = 0; - TopoDS_Shape aShape; - for (ind = 1; ind <= nbSolids; ind++) { - if (aNbParts(ind) > maxNb) { - maxNb = aNbParts(ind); - aShape = aSolids(ind); - nbFound = 1; - } else if (aNbParts(ind) == maxNb) { - nbFound++; - } else { - } - } - if (nbFound > 1) { - SetErrorCode("Multiple blocks, containing maximum quantity of the given parts, are found"); - return NULL; - } else if (nbFound == 0) { - SetErrorCode("There are no blocks, containing the given parts"); - return NULL; - } else { - TopTools_IndexedMapOfShape anIndices; - TopExp::MapShapes(aBlockOrComp, anIndices); - Handle(TColStd_HArray1OfInteger) anArray = new TColStd_HArray1OfInteger(1,1); - anArray->SetValue(1, anIndices.FindIndex(aShape)); - aResult = GetEngine()->AddSubShape(theCompound, anArray); - } - } catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - Handle(GEOM_Function) aFunction = aResult->GetLastFunction(); - - //Make a Python command - GEOM::TPythonDump(aFunction) << aResult << " = geompy.GetBlockByParts(" - << theCompound << ", [" << aPartsDescr.ToCString() << "])"; - - SetErrorCode(OK); - return aResult; -} - -//============================================================================= -/*! - * GetBlocksByParts - */ -//============================================================================= -Handle(TColStd_HSequenceOfTransient) GEOMImpl_IBlocksOperations::GetBlocksByParts - (Handle(GEOM_Object) theCompound, - const Handle(TColStd_HSequenceOfTransient)& theParts) -{ - SetErrorCode(KO); - - if (theCompound.IsNull() || theParts.IsNull()) return NULL; - TopoDS_Shape aBlockOrComp = theCompound->GetValue(); - if (aBlockOrComp.IsNull()) return NULL; - - Handle(TColStd_HSequenceOfTransient) aBlocks = new TColStd_HSequenceOfTransient; - Handle(GEOM_Object) anObj; - Handle(GEOM_Function) aFunction; - - //Get the parts - Standard_Integer argi, aLen = theParts->Length(); - TopTools_Array1OfShape anArgs (1, aLen); - TCollection_AsciiString anEntry, aPartsDescr, anAsciiList; - - for (argi = 1; argi <= aLen; argi++) { - Handle(GEOM_Object) anObj = Handle(GEOM_Object)::DownCast(theParts->Value(argi)); - Handle(GEOM_Function) aRef = anObj->GetLastFunction(); - if (aRef.IsNull()) return NULL; - - TopoDS_Shape anArg = aRef->GetValue(); - if (anArg.IsNull()) { - SetErrorCode("Null shape is given as argument"); - return NULL; - } - anArgs(argi) = anArg; - - // For Python command - TDF_Tool::Entry(anObj->GetEntry(), anEntry); - aPartsDescr += anEntry + ", "; - } - - //Get the Blocks - try { - TopTools_MapOfShape mapShape; - Standard_Integer nbSolids = 0; - TopExp_Explorer exp (aBlockOrComp, TopAbs_SOLID); - for (; exp.More(); exp.Next()) { - if (mapShape.Add(exp.Current())) { - nbSolids++; - } - } - - mapShape.Clear(); - Standard_Integer ind = 1; - TopTools_Array1OfShape aSolids (1, nbSolids); - TColStd_Array1OfInteger aNbParts (1, nbSolids); - for (exp.Init(aBlockOrComp, TopAbs_SOLID); exp.More(); exp.Next(), ind++) { - if (mapShape.Add(exp.Current())) { - TopoDS_Shape aSolid = exp.Current(); - aSolids(ind) = aSolid; - aNbParts(ind) = 0; - - // 2. Define quantity of parts, contained in each solid - TopTools_IndexedMapOfShape aSubShapes; - TopExp::MapShapes(aSolid, aSubShapes); - for (argi = 1; argi <= aLen; argi++) { - if (aSubShapes.Contains(anArgs(argi))) { - aNbParts(ind)++; - } - } - } - } - - // 3. Define solid, containing maximum quantity of parts - Standard_Integer maxNb = 0, nbFound = 0; - for (ind = 1; ind <= nbSolids; ind++) { - if (aNbParts(ind) > maxNb) { - maxNb = aNbParts(ind); - nbFound = 1; - } else if (aNbParts(ind) == maxNb) { - nbFound++; - } else { - } - } - if (nbFound == 0) { - SetErrorCode("There are no blocks, containing the given parts"); - return NULL; - } - - // Map shapes - TopTools_IndexedMapOfShape anIndices; - TopExp::MapShapes(aBlockOrComp, anIndices); - Handle(TColStd_HArray1OfInteger) anArray; - - for (ind = 1; ind <= nbSolids; ind++) { - if (aNbParts(ind) == maxNb) { - anArray = new TColStd_HArray1OfInteger(1,1); - anArray->SetValue(1, anIndices.FindIndex(aSolids(ind))); - anObj = GetEngine()->AddSubShape(theCompound, anArray); - aBlocks->Append(anObj); - - // For Python command - TDF_Tool::Entry(anObj->GetEntry(), anEntry); - anAsciiList += anEntry + ", "; - if (aFunction.IsNull()) - aFunction = anObj->GetLastFunction(); - } - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - aPartsDescr.Trunc(aPartsDescr.Length() - 2); - anAsciiList.Trunc(anAsciiList.Length() - 2); - - GEOM::TPythonDump(aFunction) << "[" << anAsciiList.ToCString() - << "] = geompy.GetBlocksByParts(" << theCompound - << ", [" << aPartsDescr.ToCString() << "])"; - - SetErrorCode(OK); - return aBlocks; -} - -//============================================================================= -/*! - * MakeMultiTransformation1D - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IBlocksOperations::MakeMultiTransformation1D - (Handle(GEOM_Object) theObject, - const Standard_Integer theDirFace1, - const Standard_Integer theDirFace2, - const Standard_Integer theNbTimes) -{ - SetErrorCode(KO); - - if (theObject.IsNull()) return NULL; - - Handle(GEOM_Function) aLastFunction = theObject->GetLastFunction(); - if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be moved - - //Add a new Copy object - Handle(GEOM_Object) aCopy = GetEngine()->AddObject(GetDocID(), GEOM_COPY); - - //Add a translate function - Handle(GEOM_Function) aFunction = - aCopy->AddFunction(GEOMImpl_BlockDriver::GetID(), BLOCK_MULTI_TRANSFORM_1D); - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_BlockDriver::GetID()) return NULL; - - GEOMImpl_IBlockTrsf aTI (aFunction); - aTI.SetOriginal(aLastFunction); - aTI.SetFace1U(theDirFace1); - aTI.SetFace2U(theDirFace2); - aTI.SetNbIterU(theNbTimes); - - //Compute the transformation - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Block driver failed to make multi-transformation"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aCopy << " = geompy.MakeMultiTransformation1D(" - << theObject << ", " << theDirFace1 << ", " << theDirFace2 << ", " << theNbTimes << ")"; - - SetErrorCode(OK); - return aCopy; -} - -//============================================================================= -/*! - * MakeMultiTransformation2D - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IBlocksOperations::MakeMultiTransformation2D - (Handle(GEOM_Object) theObject, - const Standard_Integer theDirFace1U, - const Standard_Integer theDirFace2U, - const Standard_Integer theNbTimesU, - const Standard_Integer theDirFace1V, - const Standard_Integer theDirFace2V, - const Standard_Integer theNbTimesV) -{ - SetErrorCode(KO); - - if (theObject.IsNull()) return NULL; - - Handle(GEOM_Function) aLastFunction = theObject->GetLastFunction(); - if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be moved - - //Add a new Copy object - Handle(GEOM_Object) aCopy = GetEngine()->AddObject(GetDocID(), GEOM_COPY); - - //Add a translate function - Handle(GEOM_Function) aFunction = - aCopy->AddFunction(GEOMImpl_BlockDriver::GetID(), BLOCK_MULTI_TRANSFORM_2D); - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_BlockDriver::GetID()) return NULL; - - GEOMImpl_IBlockTrsf aTI (aFunction); - aTI.SetOriginal(aLastFunction); - aTI.SetFace1U(theDirFace1U); - aTI.SetFace2U(theDirFace2U); - aTI.SetNbIterU(theNbTimesU); - aTI.SetFace1V(theDirFace1V); - aTI.SetFace2V(theDirFace2V); - aTI.SetNbIterV(theNbTimesV); - - //Compute the transformation - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Block driver failed to make multi-transformation"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aCopy << " = geompy.MakeMultiTransformation2D(" - << theObject << ", " << theDirFace1U << ", " << theDirFace2U << ", " << theNbTimesU - << ", " << theDirFace1V << ", " << theDirFace2V << ", " << theNbTimesV << ")"; - - SetErrorCode(OK); - return aCopy; -} - -//============================================================================= -/*! - * Propagate - */ -//============================================================================= -Handle(TColStd_HSequenceOfTransient) GEOMImpl_IBlocksOperations::Propagate - (Handle(GEOM_Object) theShape) -{ - SetErrorCode(KO); - - if (theShape.IsNull()) return NULL; - - TopoDS_Shape aShape = theShape->GetValue(); - if (aShape.IsNull()) return NULL; - - TopTools_IndexedMapOfShape anIndices; - TopExp::MapShapes(aShape, anIndices); - - TopTools_IndexedDataMapOfShapeListOfShape MEW; - GEOMImpl_Block6Explorer::MapShapesAndAncestors - (aShape, TopAbs_EDGE, TopAbs_WIRE, MEW); - Standard_Integer ie, nbEdges = MEW.Extent(); - - // Result - Handle(TColStd_HSequenceOfTransient) aSeq = new TColStd_HSequenceOfTransient; - - TopTools_MapOfShape mapAcceptedEdges; - TCollection_AsciiString aListRes, anEntry; - - for (ie = 1; ie <= nbEdges; ie++) { - TopoDS_Shape curE = MEW.FindKey(ie); - - if (mapAcceptedEdges.Contains(curE)) continue; - - // Build the chain - TopTools_ListOfShape currentChain; - TopTools_ListOfShape listPrevEdges; - - currentChain.Append(curE); - listPrevEdges.Append(curE); - mapAcceptedEdges.Add(curE); - - // Collect all edges pass by pass - while (listPrevEdges.Extent() > 0) { - // List of edges, added to chain on this cycle pass - TopTools_ListOfShape listCurEdges; - - // Find the next portion of edges - TopTools_ListIteratorOfListOfShape itE (listPrevEdges); - for (; itE.More(); itE.Next()) { - TopoDS_Shape anE = itE.Value(); - - // Iterate on faces, having edge - TopTools_ListIteratorOfListOfShape itW (MEW.FindFromKey(anE)); - for (; itW.More(); itW.Next()) { - TopoDS_Shape aW = itW.Value(); - TopoDS_Shape anOppE; - - BRepTools_WireExplorer aWE (TopoDS::Wire(aW)); - Standard_Integer nb = 1, found = 0; - TopTools_Array1OfShape anEdges (1,4); - for (; aWE.More(); aWE.Next(), nb++) { - if (nb > 4) { - found = 0; - break; - } - anEdges(nb) = aWE.Current(); - if (anEdges(nb).IsSame(anE)) found = nb; - } - - if (nb == 5 && found > 0) { - // Quadrangle face found, get an opposite edge - Standard_Integer opp = found + 2; - if (opp > 4) opp -= 4; - anOppE = anEdges(opp); - - if (!mapAcceptedEdges.Contains(anOppE)) { - // Add found edge to the chain - currentChain.Append(anOppE); - listCurEdges.Append(anOppE); - mapAcceptedEdges.Add(anOppE); - } - } // if (nb == 5 && found > 0) - } // for (; itF.More(); itF.Next()) - } // for (; itE.More(); itE.Next()) - - listPrevEdges = listCurEdges; - } // while (listPrevEdges.Extent() > 0) - - // Store the chain in the document - Handle(TColStd_HArray1OfInteger) anArray = - new TColStd_HArray1OfInteger (1, currentChain.Extent()); - - // Fill array of sub-shape indices - TopTools_ListIteratorOfListOfShape itSub (currentChain); - for (int index = 1; itSub.More(); itSub.Next(), ++index) { - int id = anIndices.FindIndex(itSub.Value()); - anArray->SetValue(index, id); - } - - // Add a new group object - Handle(GEOM_Object) aChain = GetEngine()->AddSubShape(theShape, anArray); - - // Set a GROUP type - aChain->SetType(GEOM_GROUP); - - // Set a sub shape type - TDF_Label aFreeLabel = aChain->GetFreeLabel(); - TDataStd_Integer::Set(aFreeLabel, (Standard_Integer)TopAbs_EDGE); - - // Add the chain to the result - aSeq->Append(aChain); - - //Make a Python command - TDF_Tool::Entry(aChain->GetEntry(), anEntry); - aListRes += anEntry + ", "; - } - - if (aSeq->IsEmpty()) { - SetErrorCode("There are no quadrangle faces in the shape"); - return aSeq; - } - - aListRes.Trunc(aListRes.Length() - 2); - - // The Propagation doesn't change object so no new function is required. - Handle(GEOM_Function) aFunction = theShape->GetLastFunction(); - TCollection_AsciiString anOldDescr = aFunction->GetDescription(); - - // Make a Python command - GEOM::TPythonDump(aFunction) << anOldDescr.ToCString() << "\n\t[" - << aListRes.ToCString() << "] = geompy.Propagate(" << theShape << ")"; - - SetErrorCode(OK); - return aSeq; -} diff --git a/src/GEOMImpl/GEOMImpl_IBlocksOperations.hxx b/src/GEOMImpl/GEOMImpl_IBlocksOperations.hxx deleted file mode 100644 index 1b41e9585..000000000 --- a/src/GEOMImpl/GEOMImpl_IBlocksOperations.hxx +++ /dev/null @@ -1,152 +0,0 @@ - -#ifndef _GEOMImpl_IBlocksOperations_HXX_ -#define _GEOMImpl_IBlocksOperations_HXX_ - -#include "GEOM_IOperations.hxx" - -#include -#include - -#include - -class GEOM_Engine; -class Handle(GEOM_Object); -class Handle(TColStd_HArray1OfInteger); - -class GEOMImpl_IBlocksOperations : public GEOM_IOperations { - public: - Standard_EXPORT GEOMImpl_IBlocksOperations(GEOM_Engine* theEngine, int theDocID); - Standard_EXPORT ~GEOMImpl_IBlocksOperations(); - - // Creation of blocks and block faces - Standard_EXPORT Handle(GEOM_Object) MakeQuad (Handle(GEOM_Object) theEdge1, - Handle(GEOM_Object) theEdge2, - Handle(GEOM_Object) theEdge3, - Handle(GEOM_Object) theEdge4); - - Standard_EXPORT Handle(GEOM_Object) MakeQuad2Edges (Handle(GEOM_Object) theEdge1, - Handle(GEOM_Object) theEdge2); - - Standard_EXPORT Handle(GEOM_Object) MakeQuad4Vertices (Handle(GEOM_Object) thePoint1, - Handle(GEOM_Object) thePoint2, - Handle(GEOM_Object) thePoint3, - Handle(GEOM_Object) thePoint4); - - Standard_EXPORT Handle(GEOM_Object) MakeHexa (Handle(GEOM_Object) theFace1, - Handle(GEOM_Object) theFace2, - Handle(GEOM_Object) theFace3, - Handle(GEOM_Object) theFace4, - Handle(GEOM_Object) theFace5, - Handle(GEOM_Object) theFace6); - - Standard_EXPORT Handle(GEOM_Object) MakeHexa2Faces (Handle(GEOM_Object) theFace1, - Handle(GEOM_Object) theFace2); - - Standard_EXPORT Handle(GEOM_Object) MakeBlockCompound (Handle(GEOM_Object) theCompound); - - // Extract elements of blocks and blocks compounds - Standard_EXPORT Handle(GEOM_Object) GetPoint (Handle(GEOM_Object) theShape, - const Standard_Real theX, - const Standard_Real theY, - const Standard_Real theZ, - const Standard_Real theEpsilon); - - Standard_EXPORT Handle(GEOM_Object) GetEdge (Handle(GEOM_Object) theShape, - Handle(GEOM_Object) thePoint1, - Handle(GEOM_Object) thePoint2); - - Standard_EXPORT Handle(GEOM_Object) GetEdgeNearPoint (Handle(GEOM_Object) theBlock, - Handle(GEOM_Object) thePoint); - - Standard_EXPORT Handle(GEOM_Object) GetFaceByPoints (Handle(GEOM_Object) theShape, - Handle(GEOM_Object) thePoint1, - Handle(GEOM_Object) thePoint2, - Handle(GEOM_Object) thePoint3, - Handle(GEOM_Object) thePoint4); - - Standard_EXPORT Handle(GEOM_Object) GetFaceByEdges (Handle(GEOM_Object) theShape, - Handle(GEOM_Object) theEdge1, - Handle(GEOM_Object) theEdge2); - - Standard_EXPORT Handle(GEOM_Object) GetOppositeFace (Handle(GEOM_Object) theBlock, - Handle(GEOM_Object) theFace); - - Standard_EXPORT Handle(GEOM_Object) GetFaceNearPoint (Handle(GEOM_Object) theBlock, - Handle(GEOM_Object) thePoint); - - Standard_EXPORT Handle(GEOM_Object) GetFaceByNormale (Handle(GEOM_Object) theBlock, - Handle(GEOM_Object) theVector); - - // Check blocks compounds - Standard_EXPORT Standard_Boolean IsCompoundOfBlocks (Handle(GEOM_Object) theCompound, - const Standard_Integer theMinNbFaces, - const Standard_Integer theMaxNbFaces, - Standard_Integer& theNbBlocks); - - enum BCErrorType { - NOT_BLOCK, - EXTRA_EDGE, - INVALID_CONNECTION, - NOT_CONNECTED, - NOT_GLUED - }; - - struct BCError { - BCErrorType error; - list incriminated; - }; - - Standard_EXPORT Standard_Boolean CheckCompoundOfBlocksOld (Handle(GEOM_Object) theCompound, - list& theErrors); - - Standard_EXPORT Standard_Boolean CheckCompoundOfBlocks (Handle(GEOM_Object) theCompound, - list& theErrors); - - Standard_EXPORT TCollection_AsciiString PrintBCErrors (Handle(GEOM_Object) theCompound, - const list& theErrors); - - Standard_EXPORT Handle(GEOM_Object) RemoveExtraEdges (Handle(GEOM_Object) theShape); - - Standard_EXPORT Handle(GEOM_Object) CheckAndImprove (Handle(GEOM_Object) theCompound); - - Standard_EXPORT static void AddBlocksFrom (const TopoDS_Shape& theShape, - TopTools_ListOfShape& BLO, - TopTools_ListOfShape& NOT, - TopTools_ListOfShape& EXT); - - // Extract blocks from blocks compounds - Standard_EXPORT Handle(TColStd_HSequenceOfTransient) ExplodeCompoundOfBlocks - (Handle(GEOM_Object) theCompound, - const Standard_Integer theMinNbFaces, - const Standard_Integer theMaxNbFaces); - - Standard_EXPORT Handle(GEOM_Object) GetBlockNearPoint (Handle(GEOM_Object) theCompound, - Handle(GEOM_Object) thePoint); - - Standard_EXPORT Handle(GEOM_Object) GetBlockByParts - (Handle(GEOM_Object) theCompound, - const Handle(TColStd_HSequenceOfTransient)& theParts); - - Standard_EXPORT Handle(TColStd_HSequenceOfTransient) GetBlocksByParts - (Handle(GEOM_Object) theCompound, - const Handle(TColStd_HSequenceOfTransient)& theParts); - - // Operations on blocks with gluing of result - Standard_EXPORT Handle(GEOM_Object) MakeMultiTransformation1D (Handle(GEOM_Object) theBlock, - const Standard_Integer theDirFace1, - const Standard_Integer theDirFace2, - const Standard_Integer theNbTimes); - - Standard_EXPORT Handle(GEOM_Object) MakeMultiTransformation2D (Handle(GEOM_Object) theBlock, - const Standard_Integer theDirFace1U, - const Standard_Integer theDirFace2U, - const Standard_Integer theNbTimesU, - const Standard_Integer theDirFace1V, - const Standard_Integer theDirFace2V, - const Standard_Integer theNbTimesV); - - // Build groups for Propagation of 1D hypotheses - Standard_EXPORT Handle(TColStd_HSequenceOfTransient) Propagate (Handle(GEOM_Object) theShape); -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_IBoolean.hxx b/src/GEOMImpl/GEOMImpl_IBoolean.hxx deleted file mode 100644 index 8668bf9b8..000000000 --- a/src/GEOMImpl/GEOMImpl_IBoolean.hxx +++ /dev/null @@ -1,24 +0,0 @@ -//NOTE: This is an intreface to a function for the Common, Cut and Fuse creation. - - -#include "GEOM_Function.hxx" - -#define BOOL_ARG_SHAPE1 1 -#define BOOL_ARG_SHAPE2 2 - -class GEOMImpl_IBoolean -{ - public: - - GEOMImpl_IBoolean(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetShape1(Handle(GEOM_Function) theRef) { _func->SetReference(BOOL_ARG_SHAPE1, theRef); } - void SetShape2(Handle(GEOM_Function) theRef) { _func->SetReference(BOOL_ARG_SHAPE2, theRef); } - - Handle(GEOM_Function) GetShape1() { return _func->GetReference(BOOL_ARG_SHAPE1); } - Handle(GEOM_Function) GetShape2() { return _func->GetReference(BOOL_ARG_SHAPE2); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_IBooleanOperations.cxx b/src/GEOMImpl/GEOMImpl_IBooleanOperations.cxx deleted file mode 100644 index cd635dfce..000000000 --- a/src/GEOMImpl/GEOMImpl_IBooleanOperations.cxx +++ /dev/null @@ -1,330 +0,0 @@ -#include - -#include - -#include -#include - -#include - -#include -#include - -#include -#include - -#include - -#include "utilities.h" - -#include // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC - -//============================================================================= -/*! - * constructor: - */ -//============================================================================= -GEOMImpl_IBooleanOperations::GEOMImpl_IBooleanOperations (GEOM_Engine* theEngine, int theDocID) -: GEOM_IOperations(theEngine, theDocID) -{ - MESSAGE("GEOMImpl_IBooleanOperations::GEOMImpl_IBooleanOperations"); -} - -//============================================================================= -/*! - * destructor - */ -//============================================================================= -GEOMImpl_IBooleanOperations::~GEOMImpl_IBooleanOperations() -{ - MESSAGE("GEOMImpl_IBooleanOperations::~GEOMImpl_IBooleanOperations"); -} - - -//============================================================================= -/*! - * MakeBoolean - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IBooleanOperations::MakeBoolean (Handle(GEOM_Object) theShape1, - Handle(GEOM_Object) theShape2, - Standard_Integer theOp) -{ - SetErrorCode(KO); - - if (theShape1.IsNull() || theShape2.IsNull()) return NULL; - - //Add a new Boolean object - Handle(GEOM_Object) aBool = GetEngine()->AddObject(GetDocID(), GEOM_BOOLEAN); - - //Add a new Boolean function - Handle(GEOM_Function) aFunction; - if (theOp == 1) { - aFunction = aBool->AddFunction(GEOMImpl_BooleanDriver::GetID(), BOOLEAN_COMMON); - } else if (theOp == 2) { - aFunction = aBool->AddFunction(GEOMImpl_BooleanDriver::GetID(), BOOLEAN_CUT); - } else if (theOp == 3) { - aFunction = aBool->AddFunction(GEOMImpl_BooleanDriver::GetID(), BOOLEAN_FUSE); - } else if (theOp == 4) { - aFunction = aBool->AddFunction(GEOMImpl_BooleanDriver::GetID(), BOOLEAN_SECTION); - } else { - } - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_BooleanDriver::GetID()) return NULL; - - GEOMImpl_IBoolean aCI (aFunction); - - Handle(GEOM_Function) aRef1 = theShape1->GetLastFunction(); - Handle(GEOM_Function) aRef2 = theShape2->GetLastFunction(); - - if (aRef1.IsNull() || aRef2.IsNull()) return NULL; - - aCI.SetShape1(aRef1); - aCI.SetShape2(aRef2); - - //Compute the Boolean value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Boolean driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump pd (aFunction); - pd << aBool; - if (theOp == 1) pd << " = geompy.MakeCommon("; - else if (theOp == 2) pd << " = geompy.MakeCut("; - else if (theOp == 3) pd << " = geompy.MakeFuse("; - else if (theOp == 4) pd << " = geompy.MakeSection("; - else {} - pd << theShape1 << ", " << theShape2 << ")"; - - SetErrorCode(OK); - return aBool; -} - -//============================================================================= -/*! - * MakePartition - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IBooleanOperations::MakePartition - (const Handle(TColStd_HSequenceOfTransient)& theShapes, - const Handle(TColStd_HSequenceOfTransient)& theTools, - const Handle(TColStd_HSequenceOfTransient)& theKeepIns, - const Handle(TColStd_HSequenceOfTransient)& theRemoveIns, - const Standard_Integer theLimit, - const Standard_Boolean theRemoveWebs, - const Handle(TColStd_HArray1OfInteger)& theMaterials) -{ - SetErrorCode(KO); - - //Add a new Partition object - Handle(GEOM_Object) aPartition = GetEngine()->AddObject(GetDocID(), GEOM_PARTITION); - - //Add a new Partition function - Handle(GEOM_Function) aFunction = - aPartition->AddFunction(GEOMImpl_PartitionDriver::GetID(), PARTITION_PARTITION); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_PartitionDriver::GetID()) return NULL; - - GEOMImpl_IPartition aCI (aFunction); - -// int aLen = theShapes.size(); -// aCI.SetLength(aLen); - - Handle(TColStd_HSequenceOfTransient) aShapesSeq = new TColStd_HSequenceOfTransient; - Handle(TColStd_HSequenceOfTransient) aToolsSeq = new TColStd_HSequenceOfTransient; - Handle(TColStd_HSequenceOfTransient) aKeepInsSeq = new TColStd_HSequenceOfTransient; - Handle(TColStd_HSequenceOfTransient) aRemInsSeq = new TColStd_HSequenceOfTransient; - - Standard_Integer ind, aLen; - TCollection_AsciiString anEntry; - TCollection_AsciiString aShapesDescr, aToolsDescr, aKeepInsDescr, aRemoveInsDescr; - - // Shapes - aLen = theShapes->Length(); - for (ind = 1; ind <= aLen; ind++) { - Handle(GEOM_Object) anObj = Handle(GEOM_Object)::DownCast(theShapes->Value(ind)); - Handle(GEOM_Function) aRefSh = anObj->GetLastFunction(); - if (aRefSh.IsNull()) { - SetErrorCode("NULL shape for Partition"); - return NULL; - } - aShapesSeq->Append(aRefSh); - - // For Python command - TDF_Tool::Entry(anObj->GetEntry(), anEntry); - if (ind > 1) aShapesDescr += ", "; - aShapesDescr += anEntry; - } - aCI.SetShapes(aShapesSeq); - - // Tools - aLen = theTools->Length(); - for (ind = 1; ind <= aLen; ind++) { - Handle(GEOM_Object) anObj = Handle(GEOM_Object)::DownCast(theTools->Value(ind)); - Handle(GEOM_Function) aRefSh = anObj->GetLastFunction(); - if (aRefSh.IsNull()) { - SetErrorCode("NULL tool shape for Partition"); - return NULL; - } - aToolsSeq->Append(aRefSh); - - // For Python command - TDF_Tool::Entry(anObj->GetEntry(), anEntry); - if (ind > 1) aToolsDescr += ", "; - aToolsDescr += anEntry; - } - aCI.SetTools(aToolsSeq); - - // Keep Inside - aLen = theKeepIns->Length(); - for (ind = 1; ind <= aLen; ind++) { - Handle(GEOM_Object) anObj = Handle(GEOM_Object)::DownCast(theKeepIns->Value(ind)); - Handle(GEOM_Function) aRefSh = anObj->GetLastFunction(); - if (aRefSh.IsNull()) { - SetErrorCode("NULL shape for Partition"); - return NULL; - } - aKeepInsSeq->Append(aRefSh); - - // For Python command - TDF_Tool::Entry(anObj->GetEntry(), anEntry); - if (ind > 1) aKeepInsDescr += ", "; - aKeepInsDescr += anEntry; - } - aCI.SetKeepIns(aKeepInsSeq); - - // Remove Inside - aLen = theRemoveIns->Length(); - for (ind = 1; ind <= aLen; ind++) { - Handle(GEOM_Object) anObj = Handle(GEOM_Object)::DownCast(theRemoveIns->Value(ind)); - Handle(GEOM_Function) aRefSh = anObj->GetLastFunction(); - if (aRefSh.IsNull()) { - SetErrorCode("NULL shape for Partition"); - return NULL; - } - aRemInsSeq->Append(aRefSh); - - // For Python command - TDF_Tool::Entry(anObj->GetEntry(), anEntry); - if (ind > 1) aRemoveInsDescr += ", "; - aRemoveInsDescr += anEntry; - } - aCI.SetRemoveIns(aRemInsSeq); - - // Limit - aCI.SetLimit(theLimit); - - // Materials - if (theRemoveWebs) { - if (theMaterials.IsNull()) { - Handle(TColStd_HArray1OfInteger) aMaterials = - new TColStd_HArray1OfInteger (1, aShapesSeq->Length()); - aCI.SetMaterials(aMaterials); - } else { - aCI.SetMaterials(theMaterials); - } - } - - //Compute the Partition - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Partition driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump pd (aFunction); - pd << aPartition << " = geompy.MakePartition(["; - // Shapes, Tools - pd << aShapesDescr.ToCString() << "], [" << aToolsDescr.ToCString() << "], ["; - // Keep Ins, Remove Ins - pd << aKeepInsDescr.ToCString() << "], [" << aRemoveInsDescr.ToCString() << "], "; - // Limit, Remove Webs - pd << theLimit << ", " << (int)theRemoveWebs << ", ["; - // Materials - if (theMaterials->Length() > 0) { - int i = theMaterials->Lower(); - pd << theMaterials->Value(i); - i++; - for (; i <= theMaterials->Upper(); i++) { - pd << ", " << theMaterials->Value(i); - } - } - pd << "])"; - - SetErrorCode(OK); - return aPartition; -} - -//============================================================================= -/*! - * MakeHalfPartition - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IBooleanOperations::MakeHalfPartition - (Handle(GEOM_Object) theShape, Handle(GEOM_Object) thePlane) -{ - SetErrorCode(KO); - - if (theShape.IsNull() || thePlane.IsNull()) return NULL; - - //Add a new Boolean object - Handle(GEOM_Object) aPart = GetEngine()->AddObject(GetDocID(), GEOM_BOOLEAN); - - //Add a new Partition function - Handle(GEOM_Function) aFunction = - aPart->AddFunction(GEOMImpl_PartitionDriver::GetID(), PARTITION_HALF); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_PartitionDriver::GetID()) return NULL; - - GEOMImpl_IPartition aCI (aFunction); - - Handle(GEOM_Function) aRef1 = theShape->GetLastFunction(); - Handle(GEOM_Function) aRef2 = thePlane->GetLastFunction(); - - if (aRef1.IsNull() || aRef2.IsNull()) return NULL; - - aCI.SetShape(aRef1); - aCI.SetPlane(aRef2); - - //Compute the Partition value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Partition driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aPart << " = geompy.MakeHalfPartition(" - << theShape << ", " << thePlane << ")"; - - SetErrorCode(OK); - return aPart; -} diff --git a/src/GEOMImpl/GEOMImpl_IBooleanOperations.hxx b/src/GEOMImpl/GEOMImpl_IBooleanOperations.hxx deleted file mode 100644 index 336911d62..000000000 --- a/src/GEOMImpl/GEOMImpl_IBooleanOperations.hxx +++ /dev/null @@ -1,36 +0,0 @@ - -#ifndef _GEOMImpl_IBooleanOperations_HXX_ -#define _GEOMImpl_IBooleanOperations_HXX_ - -#include "GEOM_IOperations.hxx" - -//#include "TColStd_HSequenceOfTransient.hxx" - -#include "list" - -class GEOM_Engine; -class Handle(GEOM_Object); -class Handle(TColStd_HArray1OfInteger); - -class GEOMImpl_IBooleanOperations : public GEOM_IOperations { - public: - Standard_EXPORT GEOMImpl_IBooleanOperations(GEOM_Engine* theEngine, int theDocID); - Standard_EXPORT ~GEOMImpl_IBooleanOperations(); - - Standard_EXPORT Handle(GEOM_Object) MakeBoolean (Handle(GEOM_Object) theShape1, - Handle(GEOM_Object) theShape2, - Standard_Integer theOp); - - Standard_EXPORT Handle(GEOM_Object) MakePartition (const Handle(TColStd_HSequenceOfTransient)& theShapes, - const Handle(TColStd_HSequenceOfTransient)& theTools, - const Handle(TColStd_HSequenceOfTransient)& theKeepInside, - const Handle(TColStd_HSequenceOfTransient)& theRemoveInside, - const Standard_Integer theLimit, - const Standard_Boolean theRemoveWebs, - const Handle(TColStd_HArray1OfInteger)& theMaterials); - - Standard_EXPORT Handle(GEOM_Object) MakeHalfPartition (Handle(GEOM_Object) theShape, - Handle(GEOM_Object) thePlane); -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_IBox.hxx b/src/GEOMImpl/GEOMImpl_IBox.hxx deleted file mode 100644 index 45a33b5b3..000000000 --- a/src/GEOMImpl/GEOMImpl_IBox.hxx +++ /dev/null @@ -1,41 +0,0 @@ -//NOTE: This is an intreface to a function for the Box creation. - - -#include "GEOM_Function.hxx" - -#define BOX_ARG_DX 1 -#define BOX_ARG_DY 2 -#define BOX_ARG_DZ 3 -#define BOX_ARG_REF1 4 -#define BOX_ARG_REF2 5 - -class GEOMImpl_IBox -{ - public: - - GEOMImpl_IBox(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetDX(double theX) { _func->SetReal(BOX_ARG_DX, theX); } - - double GetDX() { return _func->GetReal(BOX_ARG_DX); } - - void SetDY(double theY) { _func->SetReal(BOX_ARG_DY, theY); } - - double GetDY() { return _func->GetReal(BOX_ARG_DY); } - - void SetDZ(double theZ) { _func->SetReal(BOX_ARG_DZ, theZ); } - - double GetDZ() { return _func->GetReal(BOX_ARG_DZ); } - - void SetRef1(Handle(GEOM_Function) theRefPoint1) { _func->SetReference(BOX_ARG_REF1, theRefPoint1); } - - Handle(GEOM_Function) GetRef1() { return _func->GetReference(BOX_ARG_REF1); } - - void SetRef2(Handle(GEOM_Function) theRefPoint2) { _func->SetReference(BOX_ARG_REF2, theRefPoint2); } - - Handle(GEOM_Function) GetRef2() { return _func->GetReference(BOX_ARG_REF2); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_IChamfer.hxx b/src/GEOMImpl/GEOMImpl_IChamfer.hxx deleted file mode 100644 index c2b0d4efd..000000000 --- a/src/GEOMImpl/GEOMImpl_IChamfer.hxx +++ /dev/null @@ -1,48 +0,0 @@ -//NOTE: This is an interface to a function for the Chamfer and creation. - - -#include "GEOM_Function.hxx" - -#define CHAM_ARG_SH 1 -#define CHAM_ARG_D1 2 -#define CHAM_ARG_D2 3 -#define CHAM_ARG_LENG 4 -#define CHAM_ARG_LAST 4 - -class GEOMImpl_IChamfer -{ - public: - - GEOMImpl_IChamfer(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetShape(Handle(GEOM_Function) theRef) { _func->SetReference(CHAM_ARG_SH, theRef); } - - Handle(GEOM_Function) GetShape() { return _func->GetReference(CHAM_ARG_SH); } - - void SetD (double theD) { _func->SetReal(CHAM_ARG_D1, theD); } - void SetD1(double theD) { _func->SetReal(CHAM_ARG_D1, theD); } - void SetD2(double theD) { _func->SetReal(CHAM_ARG_D2, theD); } - - double GetD () { return _func->GetReal(CHAM_ARG_D1); } - double GetD1() { return _func->GetReal(CHAM_ARG_D1); } - double GetD2() { return _func->GetReal(CHAM_ARG_D2); } - - void SetLength(int theLen) { _func->SetInteger(CHAM_ARG_LENG, theLen); } - - int GetLength() { return _func->GetInteger(CHAM_ARG_LENG); } - - void SetFace(int theInd, int theFace) - { _func->SetInteger(CHAM_ARG_LAST + theInd, theFace); } - void SetFace1(int theFace) - { _func->SetInteger(CHAM_ARG_LAST + 1, theFace); } - void SetFace2(int theFace) - { _func->SetInteger(CHAM_ARG_LAST + 2, theFace); } - - int GetFace(int theInd) { return _func->GetInteger(CHAM_ARG_LAST + theInd); } - int GetFace1() { return _func->GetInteger(CHAM_ARG_LAST + 1); } - int GetFace2() { return _func->GetInteger(CHAM_ARG_LAST + 2); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_ICircle.hxx b/src/GEOMImpl/GEOMImpl_ICircle.hxx deleted file mode 100644 index 3f7e0b925..000000000 --- a/src/GEOMImpl/GEOMImpl_ICircle.hxx +++ /dev/null @@ -1,41 +0,0 @@ -//NOTE: This is an intreface to a function for the Circle creation. - - -#include "GEOM_Function.hxx" - -#define CIRC_ARG_P1 1 -#define CIRC_ARG_P2 2 -#define CIRC_ARG_P3 3 - -#define CIRC_ARG_CC 4 -#define CIRC_ARG_VV 5 -#define CIRC_ARG_RR 6 - -class GEOMImpl_ICircle -{ - public: - - GEOMImpl_ICircle(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetPoint1(Handle(GEOM_Function) theP) { _func->SetReference(CIRC_ARG_P1, theP); } - void SetPoint2(Handle(GEOM_Function) theP) { _func->SetReference(CIRC_ARG_P2, theP); } - void SetPoint3(Handle(GEOM_Function) theP) { _func->SetReference(CIRC_ARG_P3, theP); } - - void SetCenter(Handle(GEOM_Function) theP) { _func->SetReference(CIRC_ARG_CC, theP); } - void SetVector(Handle(GEOM_Function) theV) { _func->SetReference(CIRC_ARG_VV, theV); } - - void SetRadius(double theR) { _func->SetReal(CIRC_ARG_RR, theR); } - - Handle(GEOM_Function) GetPoint1() { return _func->GetReference(CIRC_ARG_P1); } - Handle(GEOM_Function) GetPoint2() { return _func->GetReference(CIRC_ARG_P2); } - Handle(GEOM_Function) GetPoint3() { return _func->GetReference(CIRC_ARG_P3); } - - Handle(GEOM_Function) GetCenter() { return _func->GetReference(CIRC_ARG_CC); } - Handle(GEOM_Function) GetVector() { return _func->GetReference(CIRC_ARG_VV); } - - double GetRadius() { return _func->GetReal(CIRC_ARG_RR); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_ICone.hxx b/src/GEOMImpl/GEOMImpl_ICone.hxx deleted file mode 100644 index cd622eb47..000000000 --- a/src/GEOMImpl/GEOMImpl_ICone.hxx +++ /dev/null @@ -1,41 +0,0 @@ -//NOTE: This is an intreface to a function for the Cone creation. - - -#include "GEOM_Function.hxx" - -#define CONE_ARG_R1 1 -#define CONE_ARG_R2 2 -#define CONE_ARG_H 3 -#define CONE_ARG_PNT 4 -#define CONE_ARG_VEC 5 - -class GEOMImpl_ICone -{ - public: - - GEOMImpl_ICone(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetR1(double theR) { _func->SetReal(CONE_ARG_R1, theR); } - - double GetR1() { return _func->GetReal(CONE_ARG_R1); } - - void SetR2(double theR) { _func->SetReal(CONE_ARG_R2, theR); } - - double GetR2() { return _func->GetReal(CONE_ARG_R2); } - - void SetH(double theH) { _func->SetReal(CONE_ARG_H, theH); } - - double GetH() { return _func->GetReal(CONE_ARG_H); } - - void SetPoint(Handle(GEOM_Function) theRefPoint) { _func->SetReference(CONE_ARG_PNT, theRefPoint); } - - Handle(GEOM_Function) GetPoint() { return _func->GetReference(CONE_ARG_PNT); } - - void SetVector(Handle(GEOM_Function) theRefVector) { _func->SetReference(CONE_ARG_VEC, theRefVector); } - - Handle(GEOM_Function) GetVector() { return _func->GetReference(CONE_ARG_VEC); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_ICopy.hxx b/src/GEOMImpl/GEOMImpl_ICopy.hxx deleted file mode 100644 index fad03bbde..000000000 --- a/src/GEOMImpl/GEOMImpl_ICopy.hxx +++ /dev/null @@ -1,21 +0,0 @@ -//NOTE: This is an intreface to a function for the Copy operation. - - -#include "GEOM_Function.hxx" - -#define COPY_ARG_REF 1 - -class GEOMImpl_ICopy -{ - public: - - GEOMImpl_ICopy(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetOriginal(Handle(GEOM_Function) theOriginal) { _func->SetReference(COPY_ARG_REF, theOriginal); } - - Handle(GEOM_Function) GetOriginal() { return _func->GetReference(COPY_ARG_REF); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_ICurvesOperations.cxx b/src/GEOMImpl/GEOMImpl_ICurvesOperations.cxx deleted file mode 100644 index f1c9e80c4..000000000 --- a/src/GEOMImpl/GEOMImpl_ICurvesOperations.cxx +++ /dev/null @@ -1,581 +0,0 @@ -#include - -#include - -#include -#include - -#include - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include "utilities.h" - -#include - -#include // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC - -//============================================================================= -/*! - * constructor: - */ -//============================================================================= -GEOMImpl_ICurvesOperations::GEOMImpl_ICurvesOperations (GEOM_Engine* theEngine, int theDocID) -: GEOM_IOperations(theEngine, theDocID) -{ - MESSAGE("GEOMImpl_ICurvesOperations::GEOMImpl_ICurvesOperations"); -} - -//============================================================================= -/*! - * destructor - */ -//============================================================================= -GEOMImpl_ICurvesOperations::~GEOMImpl_ICurvesOperations() -{ - MESSAGE("GEOMImpl_ICurvesOperations::~GEOMImpl_ICurvesOperations"); -} - - -//============================================================================= -/*! - * MakePolyline - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ICurvesOperations::MakePolyline (list thePoints) -{ - SetErrorCode(KO); - - //Add a new Polyline object - Handle(GEOM_Object) aPolyline = GetEngine()->AddObject(GetDocID(), GEOM_POLYLINE); - - //Add a new Polyline function for creation a polyline relatively to points set - Handle(GEOM_Function) aFunction = - aPolyline->AddFunction(GEOMImpl_PolylineDriver::GetID(), POLYLINE_POINTS); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_PolylineDriver::GetID()) return NULL; - - GEOMImpl_IPolyline aCI (aFunction); - - int aLen = thePoints.size(); - aCI.SetLength(aLen); - - int ind = 1; - list::iterator it = thePoints.begin(); - for (; it != thePoints.end(); it++, ind++) { - Handle(GEOM_Function) aRefPnt = (*it)->GetLastFunction(); - if (aRefPnt.IsNull()) { - SetErrorCode("NULL point for Polyline"); - return NULL; - } - aCI.SetPoint(ind, aRefPnt); - } - - //Compute the Polyline value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Polyline driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump pd (aFunction); - pd << aPolyline << " = geompy.MakePolyline(["; - - it = thePoints.begin(); - pd << (*it++); - while (it != thePoints.end()) { - pd << ", " << (*it++); - } - pd << "])"; - - SetErrorCode(OK); - return aPolyline; -} - -//============================================================================= -/*! - * MakeCircleThreePnt - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ICurvesOperations::MakeCircleThreePnt (Handle(GEOM_Object) thePnt1, - Handle(GEOM_Object) thePnt2, - Handle(GEOM_Object) thePnt3) -{ - SetErrorCode(KO); - - if (thePnt1.IsNull() || thePnt2.IsNull() || thePnt3.IsNull()) return NULL; - - //Add a new Circle object - Handle(GEOM_Object) aCircle = GetEngine()->AddObject(GetDocID(), GEOM_CIRCLE); - - //Add a new Circle function for creation a circle relatively to three points - Handle(GEOM_Function) aFunction = - aCircle->AddFunction(GEOMImpl_CircleDriver::GetID(), CIRCLE_THREE_PNT); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_CircleDriver::GetID()) return NULL; - - GEOMImpl_ICircle aCI (aFunction); - - Handle(GEOM_Function) aRefPnt1 = thePnt1->GetLastFunction(); - Handle(GEOM_Function) aRefPnt2 = thePnt2->GetLastFunction(); - Handle(GEOM_Function) aRefPnt3 = thePnt3->GetLastFunction(); - - if (aRefPnt1.IsNull() || aRefPnt2.IsNull() || aRefPnt3.IsNull()) return NULL; - - aCI.SetPoint1(aRefPnt1); - aCI.SetPoint2(aRefPnt2); - aCI.SetPoint3(aRefPnt3); - - //Compute the Circle value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Circle driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aCircle << " = geompy.MakeCircleThreePnt(" - << thePnt1 << ", " << thePnt2 << ", " << thePnt3 << ")"; - - SetErrorCode(OK); - return aCircle; -} - -//============================================================================= -/*! - * MakeCirclePntVecR - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ICurvesOperations::MakeCirclePntVecR - (Handle(GEOM_Object) thePnt, Handle(GEOM_Object) theVec, double theR) -{ - SetErrorCode(KO); - - if (thePnt.IsNull() || theVec.IsNull()) return NULL; - - //Add a new Circle object - Handle(GEOM_Object) aCircle = GetEngine()->AddObject(GetDocID(), GEOM_CIRCLE); - - //Add a new Circle function for creation a circle relatively to point and vector - Handle(GEOM_Function) aFunction = - aCircle->AddFunction(GEOMImpl_CircleDriver::GetID(), CIRCLE_PNT_VEC_R); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_CircleDriver::GetID()) return NULL; - - GEOMImpl_ICircle aCI (aFunction); - - Handle(GEOM_Function) aRefPnt = thePnt->GetLastFunction(); - Handle(GEOM_Function) aRefVec = theVec->GetLastFunction(); - - if (aRefPnt.IsNull() || aRefVec.IsNull()) return NULL; - - aCI.SetCenter(aRefPnt); - aCI.SetVector(aRefVec); - aCI.SetRadius(theR); - - //Compute the Circle value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Circle driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aCircle << " = geompy.MakeCircle(" - << thePnt << ", " << theVec << ", " << theR << ")"; - - SetErrorCode(OK); - return aCircle; -} - -//============================================================================= -/*! - * MakeEllipse - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ICurvesOperations::MakeEllipse - (Handle(GEOM_Object) thePnt, Handle(GEOM_Object) theVec, - double theRMajor, double theRMinor) -{ - SetErrorCode(KO); - - if (thePnt.IsNull() || theVec.IsNull()) return NULL; - - //Add a new Ellipse object - Handle(GEOM_Object) anEll = GetEngine()->AddObject(GetDocID(), GEOM_ELLIPSE); - - //Add a new Ellipse function - Handle(GEOM_Function) aFunction = - anEll->AddFunction(GEOMImpl_EllipseDriver::GetID(), ELLIPSE_PNT_VEC_RR); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_EllipseDriver::GetID()) return NULL; - - GEOMImpl_IEllipse aCI (aFunction); - - Handle(GEOM_Function) aRefPnt = thePnt->GetLastFunction(); - Handle(GEOM_Function) aRefVec = theVec->GetLastFunction(); - - if (aRefPnt.IsNull() || aRefVec.IsNull()) return NULL; - - aCI.SetCenter(aRefPnt); - aCI.SetVector(aRefVec); - aCI.SetRMajor(theRMajor); - aCI.SetRMinor(theRMinor); - - //Compute the Ellipse value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Ellipse driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << anEll << " = geompy.MakeEllipse(" - << thePnt << ", " << theVec << ", " << theRMajor << ", " << theRMinor << ")"; - - SetErrorCode(OK); - return anEll; -} - -//============================================================================= -/*! - * MakeArc - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ICurvesOperations::MakeArc (Handle(GEOM_Object) thePnt1, - Handle(GEOM_Object) thePnt2, - Handle(GEOM_Object) thePnt3) -{ - SetErrorCode(KO); - - if (thePnt1.IsNull() || thePnt2.IsNull() || thePnt3.IsNull()) return NULL; - - //Add a new Circle Arc object - Handle(GEOM_Object) anArc = GetEngine()->AddObject(GetDocID(), GEOM_CIRC_ARC); - - //Add a new Circle Arc function - Handle(GEOM_Function) aFunction = - anArc->AddFunction(GEOMImpl_ArcDriver::GetID(), CIRC_ARC_THREE_PNT); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_ArcDriver::GetID()) return NULL; - - GEOMImpl_IArc aCI (aFunction); - - Handle(GEOM_Function) aRefPnt1 = thePnt1->GetLastFunction(); - Handle(GEOM_Function) aRefPnt2 = thePnt2->GetLastFunction(); - Handle(GEOM_Function) aRefPnt3 = thePnt3->GetLastFunction(); - - if (aRefPnt1.IsNull() || aRefPnt2.IsNull() || aRefPnt3.IsNull()) return NULL; - - aCI.SetPoint1(aRefPnt1); - aCI.SetPoint2(aRefPnt2); - aCI.SetPoint3(aRefPnt3); - - //Compute the Arc value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Arc driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << anArc << " = geompy.MakeArc(" - << thePnt1 << ", " << thePnt2 << ", " << thePnt3 << ")"; - - SetErrorCode(OK); - return anArc; -} - -//============================================================================= -/*! - * MakeSplineBezier - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ICurvesOperations::MakeSplineBezier - (list thePoints) -{ - SetErrorCode(KO); - - //Add a new Spline object - Handle(GEOM_Object) aSpline = GetEngine()->AddObject(GetDocID(), GEOM_SPLINE); - - //Add a new Spline function for creation a bezier curve relatively to points set - Handle(GEOM_Function) aFunction = - aSpline->AddFunction(GEOMImpl_SplineDriver::GetID(), SPLINE_BEZIER); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_SplineDriver::GetID()) return NULL; - - GEOMImpl_ISpline aCI (aFunction); - - int aLen = thePoints.size(); - aCI.SetLength(aLen); - - int ind = 1; - list::iterator it = thePoints.begin(); - for (; it != thePoints.end(); it++, ind++) { - Handle(GEOM_Function) aRefPnt = (*it)->GetLastFunction(); - - if (aRefPnt.IsNull()) return NULL; - - aCI.SetPoint(ind, aRefPnt); - } - - //Compute the Spline value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Spline driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump pd (aFunction); - pd << aSpline << " = geompy.MakeBezier(["; - - it = thePoints.begin(); - pd << (*it++); - while (it != thePoints.end()) { - pd << ", " << (*it++); - } - pd << "])"; - - SetErrorCode(OK); - return aSpline; -} - -//============================================================================= -/*! - * MakeSplineInterpolation - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ICurvesOperations::MakeSplineInterpolation - (list thePoints) -{ - SetErrorCode(KO); - - //Add a new Spline object - Handle(GEOM_Object) aSpline = GetEngine()->AddObject(GetDocID(), GEOM_SPLINE); - - //Add a new Spline function for creation a bezier curve relatively to points set - Handle(GEOM_Function) aFunction = - aSpline->AddFunction(GEOMImpl_SplineDriver::GetID(), SPLINE_INTERPOLATION); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_SplineDriver::GetID()) return NULL; - - GEOMImpl_ISpline aCI (aFunction); - - int aLen = thePoints.size(); - aCI.SetLength(aLen); - - int ind = 1; - list::iterator it = thePoints.begin(); - for (; it != thePoints.end(); it++, ind++) { - Handle(GEOM_Function) aRefPnt = (*it)->GetLastFunction(); - - if (aRefPnt.IsNull()) return NULL; - - aCI.SetPoint(ind, aRefPnt); - } - - //Compute the Spline value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Spline driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump pd (aFunction); - pd << aSpline << " = geompy.MakeInterpol(["; - - it = thePoints.begin(); - pd << (*it++); - while (it != thePoints.end()) { - pd << ", " << (*it++); - } - pd << "])"; - - SetErrorCode(OK); - return aSpline; -} - -//============================================================================= -/*! - * MakeSketcher - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ICurvesOperations::MakeSketcher - (const TCollection_AsciiString& theCommand, - list theWorkingPlane) -{ - SetErrorCode(KO); - - if (theCommand.IsEmpty()) return NULL; - - //Add a new Sketcher object - Handle(GEOM_Object) aSketcher = GetEngine()->AddObject(GetDocID(), GEOM_SKETCHER); - - //Add a new Sketcher function - Handle(GEOM_Function) aFunction = - aSketcher->AddFunction(GEOMImpl_SketcherDriver::GetID(), SKETCHER_NINE_DOUBLS); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_SketcherDriver::GetID()) return NULL; - - GEOMImpl_ISketcher aCI (aFunction); - - aCI.SetCommand(theCommand); - - int ind = 1; - list::iterator it = theWorkingPlane.begin(); - for (; it != theWorkingPlane.end(); it++, ind++) - aCI.SetWorkingPlane(ind, *it); - - //Compute the Sketcher value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Sketcher driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump pd (aFunction); - pd << aSketcher << " = geompy.MakeSketcher(\"" << theCommand.ToCString() << "\", ["; - - it = theWorkingPlane.begin(); - pd << (*it++); - while (it != theWorkingPlane.end()) { - pd << ", " << (*it++); - } - pd << "])"; - - SetErrorCode(OK); - return aSketcher; -} - -//============================================================================= -/*! - * MakeSketcherOnPlane - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ICurvesOperations::MakeSketcherOnPlane - (const TCollection_AsciiString& theCommand, - Handle(GEOM_Object) theWorkingPlane) -{ - SetErrorCode(KO); - - if (theCommand.IsEmpty()) return NULL; - - //Add a new Sketcher object - Handle(GEOM_Object) aSketcher = GetEngine()->AddObject(GetDocID(), GEOM_SKETCHER); - - //Add a new Sketcher function - Handle(GEOM_Function) aFunction = - aSketcher->AddFunction(GEOMImpl_SketcherDriver::GetID(), SKETCHER_PLANE); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_SketcherDriver::GetID()) return NULL; - - GEOMImpl_ISketcher aCI (aFunction); - aCI.SetCommand(theCommand); - - Handle(GEOM_Function) aRefPlane = theWorkingPlane->GetLastFunction(); - if (aRefPlane.IsNull()) return NULL; - aCI.SetWorkingPlane( aRefPlane ); - - //Compute the Sketcher value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Sketcher driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump (aFunction) << aSketcher << " = geompy.MakeSketcherOnPlane(\"" - << theCommand.ToCString() << "\", " << theWorkingPlane << " )"; - - SetErrorCode(OK); - return aSketcher; -} diff --git a/src/GEOMImpl/GEOMImpl_ICurvesOperations.hxx b/src/GEOMImpl/GEOMImpl_ICurvesOperations.hxx deleted file mode 100644 index 5ba6afb53..000000000 --- a/src/GEOMImpl/GEOMImpl_ICurvesOperations.hxx +++ /dev/null @@ -1,45 +0,0 @@ -using namespace std; - -#ifndef _GEOMImpl_ICurvesOperations_HXX_ -#define _GEOMImpl_ICurvesOperations_HXX_ - -#include "GEOM_IOperations.hxx" - -#include - -#include - -class GEOM_Engine; -class Handle(GEOM_Object); - -class GEOMImpl_ICurvesOperations : public GEOM_IOperations { - public: - Standard_EXPORT GEOMImpl_ICurvesOperations(GEOM_Engine* theEngine, int theDocID); - Standard_EXPORT ~GEOMImpl_ICurvesOperations(); - - Standard_EXPORT Handle(GEOM_Object) MakePolyline (list thePoints); - - Standard_EXPORT Handle(GEOM_Object) MakeCircleThreePnt (Handle(GEOM_Object) thePnt1, - Handle(GEOM_Object) thePnt2, - Handle(GEOM_Object) thePnt3); - Standard_EXPORT Handle(GEOM_Object) MakeCirclePntVecR (Handle(GEOM_Object) thePnt, - Handle(GEOM_Object) theVec, double theR); - - Standard_EXPORT Handle(GEOM_Object) MakeEllipse (Handle(GEOM_Object) thePnt, - Handle(GEOM_Object) theVec, - double theRMajor, double theRMinor); - - Standard_EXPORT Handle(GEOM_Object) MakeArc (Handle(GEOM_Object) thePnt1, - Handle(GEOM_Object) thePnt2, - Handle(GEOM_Object) thePnt3); - - Standard_EXPORT Handle(GEOM_Object) MakeSplineBezier (list thePoints); - Standard_EXPORT Handle(GEOM_Object) MakeSplineInterpolation (list thePoints); - - Standard_EXPORT Handle(GEOM_Object) MakeSketcher (const TCollection_AsciiString& theCommand, - list theWorkingPlane); - Standard_EXPORT Handle(GEOM_Object) MakeSketcherOnPlane (const TCollection_AsciiString& theCommand, - Handle(GEOM_Object) theWorkingPlane); -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_ICylinder.hxx b/src/GEOMImpl/GEOMImpl_ICylinder.hxx deleted file mode 100644 index 4a76fd860..000000000 --- a/src/GEOMImpl/GEOMImpl_ICylinder.hxx +++ /dev/null @@ -1,36 +0,0 @@ -//NOTE: This is an intreface to a function for the Cylinder creation. - - -#include "GEOM_Function.hxx" - -#define CYL_ARG_R 1 -#define CYL_ARG_H 2 -#define CYL_ARG_PNT 3 -#define CYL_ARG_VEC 4 - -class GEOMImpl_ICylinder -{ - public: - - GEOMImpl_ICylinder(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetR(double theR) { _func->SetReal(CYL_ARG_R, theR); } - - double GetR() { return _func->GetReal(CYL_ARG_R); } - - void SetH(double theH) { _func->SetReal(CYL_ARG_H, theH); } - - double GetH() { return _func->GetReal(CYL_ARG_H); } - - void SetPoint(Handle(GEOM_Function) theRefPoint) { _func->SetReference(CYL_ARG_PNT, theRefPoint); } - - Handle(GEOM_Function) GetPoint() { return _func->GetReference(CYL_ARG_PNT); } - - void SetVector(Handle(GEOM_Function) theRefVector) { _func->SetReference(CYL_ARG_VEC, theRefVector); } - - Handle(GEOM_Function) GetVector() { return _func->GetReference(CYL_ARG_VEC); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_IEllipse.hxx b/src/GEOMImpl/GEOMImpl_IEllipse.hxx deleted file mode 100644 index b3f06595a..000000000 --- a/src/GEOMImpl/GEOMImpl_IEllipse.hxx +++ /dev/null @@ -1,32 +0,0 @@ -//NOTE: This is an intreface to a function for the Ellipse creation. - - -#include "GEOM_Function.hxx" - -#define ELLIPS_ARG_CC 1 -#define ELLIPS_ARG_VV 2 -#define ELLIPS_ARG_RMAJ 3 -#define ELLIPS_ARG_RMIN 4 - -class GEOMImpl_IEllipse -{ - public: - - GEOMImpl_IEllipse(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetCenter(Handle(GEOM_Function) theP) { _func->SetReference(ELLIPS_ARG_CC, theP); } - void SetVector(Handle(GEOM_Function) theV) { _func->SetReference(ELLIPS_ARG_VV, theV); } - - void SetRMajor(double theR) { _func->SetReal(ELLIPS_ARG_RMAJ, theR); } - void SetRMinor(double theR) { _func->SetReal(ELLIPS_ARG_RMIN, theR); } - - Handle(GEOM_Function) GetCenter() { return _func->GetReference(ELLIPS_ARG_CC); } - Handle(GEOM_Function) GetVector() { return _func->GetReference(ELLIPS_ARG_VV); } - - double GetRMajor() { return _func->GetReal(ELLIPS_ARG_RMAJ); } - double GetRMinor() { return _func->GetReal(ELLIPS_ARG_RMIN); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_IFillet.hxx b/src/GEOMImpl/GEOMImpl_IFillet.hxx deleted file mode 100644 index 9f6d3b9bd..000000000 --- a/src/GEOMImpl/GEOMImpl_IFillet.hxx +++ /dev/null @@ -1,40 +0,0 @@ -//NOTE: This is an interface to a function for the Fillet and creation. - - -#include "GEOM_Function.hxx" - -#define FILLET_ARG_SH 1 -#define FILLET_ARG_R 2 -#define FILLET_ARG_LENG 3 -#define FILLET_ARG_LAST 3 - -class GEOMImpl_IFillet -{ - public: - - GEOMImpl_IFillet(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetShape(Handle(GEOM_Function) theRef) { _func->SetReference(FILLET_ARG_SH, theRef); } - - Handle(GEOM_Function) GetShape() { return _func->GetReference(FILLET_ARG_SH); } - - void SetR(double theR) { _func->SetReal(FILLET_ARG_R, theR); } - - double GetR() { return _func->GetReal(FILLET_ARG_R); } - - void SetLength(int theLen) { _func->SetInteger(FILLET_ARG_LENG, theLen); } - - int GetLength() { return _func->GetInteger(FILLET_ARG_LENG); } - - void SetEdge(int theInd, int theEdge) - { _func->SetInteger(FILLET_ARG_LAST + theInd, theEdge); } - void SetFace(int theInd, int theFace) - { _func->SetInteger(FILLET_ARG_LAST + theInd, theFace); } - - int GetEdge(int theInd) { return _func->GetInteger(FILLET_ARG_LAST + theInd); } - int GetFace(int theInd) { return _func->GetInteger(FILLET_ARG_LAST + theInd); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_IFilling.hxx b/src/GEOMImpl/GEOMImpl_IFilling.hxx deleted file mode 100644 index e9ab36a27..000000000 --- a/src/GEOMImpl/GEOMImpl_IFilling.hxx +++ /dev/null @@ -1,37 +0,0 @@ -//NOTE: This is an intreface to a function for the Filling operation. - - -#include "GEOM_Function.hxx" - -#define FILL_ARG_MINDEG 1 -#define FILL_ARG_MAXDEG 2 -#define FILL_ARG_TOL2D 3 -#define FILL_ARG_TOL3D 4 -#define FILL_ARG_SHAPE 5 -#define FILL_ARG_NBITER 6 - -class GEOMImpl_IFilling -{ - public: - - GEOMImpl_IFilling(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetTol2D(double theTol2D) { _func->SetReal(FILL_ARG_TOL2D, theTol2D); } - void SetTol3D(double theTol3D) { _func->SetReal(FILL_ARG_TOL3D, theTol3D); } - double GetTol2D() { return _func->GetReal(FILL_ARG_TOL2D); } - double GetTol3D() { return _func->GetReal(FILL_ARG_TOL3D); } - - void SetMinDeg(int theMinDeg) { _func->SetInteger(FILL_ARG_MINDEG, theMinDeg); } - void SetMaxDeg(int theMaxDeg) { _func->SetInteger(FILL_ARG_MAXDEG, theMaxDeg); } - int GetMinDeg() { return _func->GetInteger(FILL_ARG_MINDEG); } - int GetMaxDeg() { return _func->GetInteger(FILL_ARG_MAXDEG); } - void SetNbIter(int theNbIter) { _func->SetInteger(FILL_ARG_NBITER, theNbIter); } - int GetNbIter() { return _func->GetInteger(FILL_ARG_NBITER); } - - void SetShape(Handle(GEOM_Function) theShape) { _func->SetReference(FILL_ARG_SHAPE, theShape); } - Handle(GEOM_Function) GetShape() { return _func->GetReference(FILL_ARG_SHAPE); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_IGlue.hxx b/src/GEOMImpl/GEOMImpl_IGlue.hxx deleted file mode 100644 index 1cf51c9f5..000000000 --- a/src/GEOMImpl/GEOMImpl_IGlue.hxx +++ /dev/null @@ -1,28 +0,0 @@ -// NOTE: This is an interface to a function for the Glueing of faces - - -#include "GEOM_Function.hxx" - -#define GLUE_ARG_BASE 1 -#define GLUE_ARG_TOLER 2 - -class GEOMImpl_IGlue -{ - public: - - GEOMImpl_IGlue(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetBase(Handle(GEOM_Function) theRefBase) - { _func->SetReference(GLUE_ARG_BASE, theRefBase); } - - Handle(GEOM_Function) GetBase() { return _func->GetReference(GLUE_ARG_BASE); } - - void SetTolerance(const Standard_Real theTolerance) - { _func->SetReal(GLUE_ARG_TOLER, theTolerance); } - - Standard_Real GetTolerance() { return _func->GetReal(GLUE_ARG_TOLER); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_IGroupOperations.cxx b/src/GEOMImpl/GEOMImpl_IGroupOperations.cxx deleted file mode 100644 index 07a634d7c..000000000 --- a/src/GEOMImpl/GEOMImpl_IGroupOperations.cxx +++ /dev/null @@ -1,709 +0,0 @@ -#include - -#include - -#include - -#include -#include -#include - -#include "utilities.h" -#include -#include - -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include - -#include // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC - -//============================================================================= -/*! - * constructor: - */ -//============================================================================= -GEOMImpl_IGroupOperations::GEOMImpl_IGroupOperations (GEOM_Engine* theEngine, int theDocID) -: GEOM_IOperations(theEngine, theDocID) -{ - MESSAGE("GEOMImpl_IGroupOperations::GEOMImpl_IGroupOperations"); -} - -//============================================================================= -/*! - * destructor - */ -//============================================================================= -GEOMImpl_IGroupOperations::~GEOMImpl_IGroupOperations() -{ - MESSAGE("GEOMImpl_IGroupOperations::~GEOMImpl_IGroupOperations"); -} - - -//============================================================================= -/*! - * CreateGroup - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IGroupOperations::CreateGroup - (Handle(GEOM_Object) theMainShape, TopAbs_ShapeEnum theShapeType) -{ - SetErrorCode(KO); - - Handle(TColStd_HArray1OfInteger) anArray = new TColStd_HArray1OfInteger(1,1); - anArray->SetValue(1, -1); - - //Add a new Fillet object - Handle(GEOM_Object) aGroup = GetEngine()->AddSubShape(theMainShape, anArray); - - //Set a GROUP type - aGroup->SetType(GEOM_GROUP); - - //Set a sub shape type - TDF_Label aFreeLabel = aGroup->GetFreeLabel(); - TDataStd_Integer::Set(aFreeLabel, (Standard_Integer)theShapeType); - - //Make a Python command - Handle(GEOM_Function) aFunction = aGroup->GetFunction(1); - //TCollection_AsciiString anOldDescr = aFunction->GetDescription(); - - //GEOM::TPythonDump(aFunction) << anOldDescr.ToCString() << "\n\t" << aGroup - GEOM::TPythonDump(aFunction) << aGroup - << " = geompy.CreateGroup(" << theMainShape << ", " << (int)theShapeType << ")"; - - SetErrorCode(OK); - return aGroup; -} - -//============================================================================= -/*! - * AddObject - */ -//============================================================================= -void GEOMImpl_IGroupOperations::AddObject(Handle(GEOM_Object) theGroup, int theSubShapeID) -{ - SetErrorCode(KO); - if(theGroup.IsNull()) return; - - Handle(GEOM_Function) aFunction = theGroup->GetFunction(1); - if(aFunction.IsNull()) return; - - GEOM_ISubShape aSSI(aFunction); - Handle(TColStd_HArray1OfInteger) aSeq = aSSI.GetIndices(); - if(aSeq.IsNull()) return; - if(aSeq->Length() == 1 && aSeq->Value(1) == -1) { - aSeq->SetValue(1, theSubShapeID); - } - else { - Standard_Integer aLength = aSeq->Length(); - Handle(TColStd_HArray1OfInteger) aNewSeq = new TColStd_HArray1OfInteger(1, aLength+1); - for(Standard_Integer i = 1; i<=aLength; i++) { - aNewSeq->SetValue(i, aSeq->Value(i)); - if(aSeq->Value(i) == theSubShapeID) { - SetErrorCode(ALREADY_PRESENT); - return; // - } - } - aNewSeq->SetValue(aLength+1, theSubShapeID); - aSSI.SetIndices(aNewSeq); - } - - //Make a Python command - TCollection_AsciiString anOldDescr = aFunction->GetDescription(); - - GEOM::TPythonDump(aFunction) << anOldDescr.ToCString() << "\n\t" - << "geompy.AddObject(" << theGroup << ", " << theSubShapeID << ")"; - - SetErrorCode(OK); - return; -} - -//============================================================================= -/*! - * RemoveObject - */ -//============================================================================= -void GEOMImpl_IGroupOperations::RemoveObject (Handle(GEOM_Object) theGroup, int theSubShapeID) -{ - SetErrorCode(KO); - if(theGroup.IsNull()) return; - - Handle(GEOM_Function) aFunction = theGroup->GetFunction(1); - if(aFunction.IsNull()) return; - - GEOM_ISubShape aSSI(aFunction); - Handle(TColStd_HArray1OfInteger) aSeq = aSSI.GetIndices(); - if(aSeq.IsNull()) return; - if(aSeq->Length() == 1 && aSeq->Value(1) == -1) { - SetErrorCode(NOT_EXISTS); - return; - } - else { - Handle(TColStd_HArray1OfInteger) aNewSeq; - Standard_Integer aLength = aSeq->Length(); - if(aLength == 1) { - if(aSeq->Value(1) != theSubShapeID) { - SetErrorCode(NOT_EXISTS); - return; - } - aNewSeq = new TColStd_HArray1OfInteger(1,1); - aNewSeq->SetValue(1, -1); - } - else { - aNewSeq = new TColStd_HArray1OfInteger(1, aLength-1); - Standard_Boolean isFound = Standard_False; - for(Standard_Integer i = 1, k=1; i<=aLength; i++) { - if(i == aLength && !isFound) { - SetErrorCode(NOT_EXISTS); - return; - } - if(aSeq->Value(i) == theSubShapeID) { - isFound = Standard_True; - continue; - } - aNewSeq->SetValue(k, aSeq->Value(i)); - k++; - } - - if(!isFound) { - SetErrorCode(NOT_EXISTS); - return; - } - } - - aSSI.SetIndices(aNewSeq); - } - - //Make a Python command - TCollection_AsciiString anOldDescr = aFunction->GetDescription(); - - GEOM::TPythonDump(aFunction) << anOldDescr.ToCString() << "\n\t" - << "geompy.RemoveObject(" << theGroup << ", " << theSubShapeID << ")"; - - SetErrorCode(OK); - return; -} - -//============================================================================= -/*! - * UnionList - */ -//============================================================================= -void GEOMImpl_IGroupOperations::UnionList (Handle(GEOM_Object) theGroup, - const Handle(TColStd_HSequenceOfTransient)& theSubShapes) -{ - SetErrorCode(KO); - if (theGroup.IsNull()) return; - - Handle(GEOM_Function) aFunction = theGroup->GetFunction(1); - if (aFunction.IsNull()) return; - - GEOM_ISubShape aSSI (aFunction); - - // New contents of the group - TColStd_ListOfInteger aNewIDs; - TColStd_MapOfInteger mapIDs; - - // Add current IDs to the list - Handle(TColStd_HArray1OfInteger) aSeq = aSSI.GetIndices(); - if (aSeq.IsNull()) return; - Standard_Integer val_j, aLength = aSeq->Length(); - - for (Standard_Integer j = 1; j <= aLength; j++) { - val_j = aSeq->Value(j); - if (val_j > 0 && mapIDs.Add(val_j)) { - aNewIDs.Append(val_j); - } - } - - // Get Main Shape - Handle(GEOM_Function) aMainShapeFunc = aSSI.GetMainShape(); - if (aMainShapeFunc.IsNull()) return; - TDF_Label aLabel = aMainShapeFunc->GetOwnerEntry(); - if (aLabel.IsRoot()) return; - Handle(GEOM_Object) aMainObj = GEOM_Object::GetObject(aLabel); - if (aMainObj.IsNull()) return; - TopoDS_Shape aMainShape = aMainObj->GetValue(); - if (aMainShape.IsNull()) return; - - TopTools_IndexedMapOfShape mapIndices; - TopExp::MapShapes(aMainShape, mapIndices); - - // Get IDs of sub-shapes to add - Standard_Integer i, new_id, aLen = theSubShapes->Length(); - for (i = 1; i <= aLen; i++) { - Handle(GEOM_Object) anObj_i = Handle(GEOM_Object)::DownCast(theSubShapes->Value(i)); - - if (anObj_i->IsMainShape()) { - TopoDS_Shape aShape_i = anObj_i->GetValue(); - if (mapIndices.Contains(aShape_i)) { - new_id = mapIndices.FindIndex(aShape_i); - if (mapIDs.Add(new_id)) { - aNewIDs.Append(new_id); - } - } else { - SetErrorCode("One of given objects can not be added to the group, because it is not a sub-shape of the group's main shape"); - return; - } - } else { - // Check main shape of sub-shape to add - Handle(GEOM_Function) aFunc_i = anObj_i->GetFunction(1); - if (aFunc_i.IsNull()) return; - - GEOM_ISubShape aSSI_i (aFunc_i); - - Handle(GEOM_Function) aMainShapeFunc_i = aSSI_i.GetMainShape(); - if (aMainShapeFunc_i.IsNull()) return; - TDF_Label aLabel_i = aMainShapeFunc_i->GetOwnerEntry(); - if (aLabel_i.IsRoot()) return; - Handle(GEOM_Object) aMainObj_i = GEOM_Object::GetObject(aLabel); - if (aMainObj_i.IsNull()) return; - TopoDS_Shape aMainShape_i = aMainObj_i->GetValue(); - if (aMainShape_i.IsNull()) return; - - if (aMainShape_i.IsSame(aMainShape)) { - // add all sub-shape IDs to the list - - // Get IDs - Handle(TColStd_HArray1OfInteger) aSeq_i = aSSI_i.GetIndices(); - if (aSeq_i.IsNull()) return; - Standard_Integer aLength_i = aSeq_i->Length(); - - for (Standard_Integer i_j = 1; i_j <= aLength_i; i_j++) { - new_id = aSeq_i->Value(i_j); - if (new_id > 0) { - if (mapIDs.Add(new_id)) { - aNewIDs.Append(new_id); - } - } - } - - } else if (mapIndices.Contains(aMainShape_i)) { - // compute new IDs and add them to the list - TopTools_IndexedMapOfShape mapIndices_i; - TopExp::MapShapes(aMainShape_i, mapIndices_i); - - // Get IDs - Handle(TColStd_HArray1OfInteger) aSeq_i = aSSI_i.GetIndices(); - if (aSeq_i.IsNull()) return; - Standard_Integer aLength_i = aSeq_i->Length(); - - for (Standard_Integer i_j = 1; i_j <= aLength_i; i_j++) { - if (aSeq_i->Value(i_j) > 0) { - TopoDS_Shape aShape_i_j = mapIndices_i.FindKey(i_j); - new_id = mapIndices.FindIndex(aShape_i_j); - if (mapIDs.Add(new_id)) { - aNewIDs.Append(new_id); - } - } - } - - } else { - SetErrorCode("One of given objects can not be added to the group, because it is not a sub-shape of the group's main shape"); - return; - } - } - } - - if (aNewIDs.Extent() > 0) { - Standard_Integer k = 1; - TColStd_ListIteratorOfListOfInteger aNewIDsIter (aNewIDs); - Handle(TColStd_HArray1OfInteger) aNewSeq = new TColStd_HArray1OfInteger(1, aNewIDs.Extent()); - for (; aNewIDsIter.More(); aNewIDsIter.Next(), k++) { - aNewSeq->SetValue(k, aNewIDsIter.Value()); - } - - aSSI.SetIndices(aNewSeq); - } - - //Make a Python command - TCollection_AsciiString anOldDescr = aFunction->GetDescription(); - - GEOM::TPythonDump pd (aFunction); - pd << anOldDescr.ToCString() << "\n\t" << "geompy.UnionList(" << theGroup << ", ["; - - for (i = 1; i <= aLen; i++) { - Handle(GEOM_Object) anObj_i = Handle(GEOM_Object)::DownCast(theSubShapes->Value(i)); - pd << anObj_i << (( i < aLen ) ? ", " : "])"); - } - - SetErrorCode(OK); -} - -//============================================================================= -/*! - * DifferenceList - */ -//============================================================================= -void GEOMImpl_IGroupOperations::DifferenceList (Handle(GEOM_Object) theGroup, - const Handle(TColStd_HSequenceOfTransient)& theSubShapes) -{ - SetErrorCode(KO); - if (theGroup.IsNull()) return; - - Handle(GEOM_Function) aFunction = theGroup->GetFunction(1); - if (aFunction.IsNull()) return; - - GEOM_ISubShape aSSI (aFunction); - - // Map of IDs to be removed - TColStd_MapOfInteger mapIDsToRemove; - - // Map of current IDs - Handle(TColStd_HArray1OfInteger) aSeq = aSSI.GetIndices(); - if (aSeq.IsNull()) return; - Standard_Integer aLength = aSeq->Length(); - - if (aLength == 1 && aSeq->Value(1) == -1) // empty group - return; - - TColStd_MapOfInteger mapIDsCurrent; - Standard_Integer j = 1; - for (; j <= aLength; j++) { - mapIDsCurrent.Add(aSeq->Value(j)); - } - - // Get Main Shape - Handle(GEOM_Function) aMainShapeFunc = aSSI.GetMainShape(); - if (aMainShapeFunc.IsNull()) return; - TDF_Label aLabel = aMainShapeFunc->GetOwnerEntry(); - if (aLabel.IsRoot()) return; - Handle(GEOM_Object) aMainObj = GEOM_Object::GetObject(aLabel); - if (aMainObj.IsNull()) return; - TopoDS_Shape aMainShape = aMainObj->GetValue(); - if (aMainShape.IsNull()) return; - - TopTools_IndexedMapOfShape mapIndices; - TopExp::MapShapes(aMainShape, mapIndices); - - // Get IDs of sub-shapes to be removed - Standard_Integer i, rem_id, aLen = theSubShapes->Length(); - for (i = 1; i <= aLen; i++) { - Handle(GEOM_Object) anObj_i = Handle(GEOM_Object)::DownCast(theSubShapes->Value(i)); - - if (anObj_i->IsMainShape()) { - TopoDS_Shape aShape_i = anObj_i->GetValue(); - if (mapIndices.Contains(aShape_i)) { - rem_id = mapIndices.FindIndex(aShape_i); - if (mapIDsCurrent.Contains(rem_id)) { - mapIDsToRemove.Add(rem_id); - } - } else { - SetErrorCode("One of given objects can not be removed from the group, because it is not a sub-shape of the group's main shape"); - return; - } - } else { - // Check main shape of sub-shape to be removed - Handle(GEOM_Function) aFunc_i = anObj_i->GetFunction(1); - if (aFunc_i.IsNull()) return; - - GEOM_ISubShape aSSI_i (aFunc_i); - - Handle(GEOM_Function) aMainShapeFunc_i = aSSI_i.GetMainShape(); - if (aMainShapeFunc_i.IsNull()) return; - TDF_Label aLabel_i = aMainShapeFunc_i->GetOwnerEntry(); - if (aLabel_i.IsRoot()) return; - Handle(GEOM_Object) aMainObj_i = GEOM_Object::GetObject(aLabel); - if (aMainObj_i.IsNull()) return; - TopoDS_Shape aMainShape_i = aMainObj_i->GetValue(); - if (aMainShape_i.IsNull()) return; - - if (aMainShape_i.IsSame(aMainShape)) { - // remove all sub-shapes - - // Get IDs - Handle(TColStd_HArray1OfInteger) aSeq_i = aSSI_i.GetIndices(); - if (aSeq_i.IsNull()) return; - Standard_Integer aLength_i = aSeq_i->Length(); - - for (Standard_Integer i_j = 1; i_j <= aLength_i; i_j++) { - rem_id = aSeq_i->Value(i_j); - if (rem_id > 0) { - if (mapIDsCurrent.Contains(rem_id)) { - mapIDsToRemove.Add(rem_id); - } - } - } - - } else if (mapIndices.Contains(aMainShape_i)) { - // compute new IDs and add them to the map of ids to be removed - TopTools_IndexedMapOfShape mapIndices_i; - TopExp::MapShapes(aMainShape_i, mapIndices_i); - - // Get IDs - Handle(TColStd_HArray1OfInteger) aSeq_i = aSSI_i.GetIndices(); - if (aSeq_i.IsNull()) return; - Standard_Integer aLength_i = aSeq_i->Length(); - - for (Standard_Integer i_j = 1; i_j <= aLength_i; i_j++) { - if (aSeq_i->Value(i_j) > 0) { - TopoDS_Shape aShape_i_j = mapIndices_i.FindKey(i_j); - rem_id = mapIndices.FindIndex(aShape_i_j); - if (mapIDsCurrent.Contains(rem_id)) { - mapIDsToRemove.Add(rem_id); - } - } - } - - } else { - SetErrorCode("One of given objects can not be removed from the group, because it is not a sub-shape of the group's main shape"); - return; - } - } - } - - if (mapIDsToRemove.Extent() > 0) { - Standard_Integer k = 1, aRemLength = mapIDsToRemove.Extent(); - Handle(TColStd_HArray1OfInteger) aNewSeq = new TColStd_HArray1OfInteger(1, aLength - aRemLength); - - for (j = 1; j <= aLength; j++) { - if (!mapIDsToRemove.Contains(aSeq->Value(j))) { - aNewSeq->SetValue(k, aSeq->Value(j)); - k++; - } - } - - aSSI.SetIndices(aNewSeq); - } - - //Make a Python command - TCollection_AsciiString anOldDescr = aFunction->GetDescription(); - - GEOM::TPythonDump pd (aFunction); - pd << anOldDescr.ToCString() << "\n\t" << "geompy.DifferenceList(" << theGroup << ", ["; - - for (i = 1; i <= aLen; i++) { - Handle(GEOM_Object) anObj_i = Handle(GEOM_Object)::DownCast(theSubShapes->Value(i)); - pd << anObj_i << (( i < aLen ) ? ", " : "])"); - } - - SetErrorCode(OK); -} -//============================================================================= -/*! - * UnionIDs - */ -//============================================================================= -void GEOMImpl_IGroupOperations::UnionIDs (Handle(GEOM_Object) theGroup, - const Handle(TColStd_HSequenceOfInteger)& theSubShapes) -{ - SetErrorCode(KO); - if (theGroup.IsNull()) return; - - Handle(GEOM_Function) aFunction = theGroup->GetFunction(1); - if (aFunction.IsNull()) return; - - GEOM_ISubShape aSSI (aFunction); - - // New contents of the group - TColStd_ListOfInteger aNewIDs; - TColStd_MapOfInteger mapIDs; - - // Add current IDs to the list - Handle(TColStd_HArray1OfInteger) aSeq = aSSI.GetIndices(); - if (aSeq.IsNull()) return; - Standard_Integer val_j, aLength = aSeq->Length(); - - for (Standard_Integer j = 1; j <= aLength; j++) { - val_j = aSeq->Value(j); - if (val_j > 0 && mapIDs.Add(val_j)) { - aNewIDs.Append(val_j); - } - } - - // Get Main Shape - Handle(GEOM_Function) aMainShapeFunc = aSSI.GetMainShape(); - if (aMainShapeFunc.IsNull()) return; - TDF_Label aLabel = aMainShapeFunc->GetOwnerEntry(); - if (aLabel.IsRoot()) return; - Handle(GEOM_Object) aMainObj = GEOM_Object::GetObject(aLabel); - if (aMainObj.IsNull()) return; - TopoDS_Shape aMainShape = aMainObj->GetValue(); - if (aMainShape.IsNull()) return; - - TopTools_IndexedMapOfShape mapIndices; - TopExp::MapShapes(aMainShape, mapIndices); - - // Get IDs of sub-shapes to add - Standard_Integer i, new_id, aLen = theSubShapes->Length(); - for (i = 1; i <= aLen; i++) { - new_id = theSubShapes->Value(i); - - if (0 < new_id && new_id <= mapIndices.Extent()) { - if (mapIDs.Add(new_id)) { - aNewIDs.Append(new_id); - } - } - } - - if (aNewIDs.Extent() > 0) { - Standard_Integer k = 1; - TColStd_ListIteratorOfListOfInteger aNewIDsIter (aNewIDs); - Handle(TColStd_HArray1OfInteger) aNewSeq = new TColStd_HArray1OfInteger(1, aNewIDs.Extent()); - for (; aNewIDsIter.More(); aNewIDsIter.Next(), k++) { - aNewSeq->SetValue(k, aNewIDsIter.Value()); - } - - aSSI.SetIndices(aNewSeq); - } - - SetErrorCode(OK); -} - -//============================================================================= -/*! - * DifferenceIDs - */ -//============================================================================= -void GEOMImpl_IGroupOperations::DifferenceIDs (Handle(GEOM_Object) theGroup, - const Handle(TColStd_HSequenceOfInteger)& theSubShapes) -{ - SetErrorCode(KO); - if (theGroup.IsNull()) return; - - Handle(GEOM_Function) aFunction = theGroup->GetFunction(1); - if (aFunction.IsNull()) return; - - GEOM_ISubShape aSSI (aFunction); - - // Map of IDs to be removed - TColStd_MapOfInteger mapIDsToRemove; - - // Map of current IDs - Handle(TColStd_HArray1OfInteger) aSeq = aSSI.GetIndices(); - if (aSeq.IsNull()) return; - Standard_Integer aLength = aSeq->Length(); - - if (aLength == 1 && aSeq->Value(1) == -1) // empty group - return; - - TColStd_MapOfInteger mapIDsCurrent; - Standard_Integer j = 1; - for (; j <= aLength; j++) { - mapIDsCurrent.Add(aSeq->Value(j)); - } - - // Get Main Shape - Handle(GEOM_Function) aMainShapeFunc = aSSI.GetMainShape(); - if (aMainShapeFunc.IsNull()) return; - TDF_Label aLabel = aMainShapeFunc->GetOwnerEntry(); - if (aLabel.IsRoot()) return; - Handle(GEOM_Object) aMainObj = GEOM_Object::GetObject(aLabel); - if (aMainObj.IsNull()) return; - TopoDS_Shape aMainShape = aMainObj->GetValue(); - if (aMainShape.IsNull()) return; - - TopTools_IndexedMapOfShape mapIndices; - TopExp::MapShapes(aMainShape, mapIndices); - - // Get IDs of sub-shapes to be removed - Standard_Integer i, rem_id, aLen = theSubShapes->Length(); - for (i = 1; i <= aLen; i++) { - rem_id = theSubShapes->Value(i); - if (mapIDsCurrent.Contains(rem_id)) { - mapIDsToRemove.Add(rem_id); - } - } - - if (mapIDsToRemove.Extent() > 0) { - Standard_Integer k = 1, aRemLength = mapIDsToRemove.Extent(); - Handle(TColStd_HArray1OfInteger) aNewSeq = new TColStd_HArray1OfInteger(1, aLength - aRemLength); - - for (j = 1; j <= aLength; j++) { - if (!mapIDsToRemove.Contains(aSeq->Value(j))) { - aNewSeq->SetValue(k, aSeq->Value(j)); - k++; - } - } - - aSSI.SetIndices(aNewSeq); - } - - SetErrorCode(OK); -} - -//============================================================================= -/*! - * GetType - */ -//============================================================================= -TopAbs_ShapeEnum GEOMImpl_IGroupOperations::GetType(Handle(GEOM_Object) theGroup) -{ - SetErrorCode(KO); - - TDF_Label aFreeLabel = theGroup->GetFreeLabel(); - Handle(TDataStd_Integer) anAttrib; - if(!aFreeLabel.FindAttribute(TDataStd_Integer::GetID(), anAttrib)) return TopAbs_SHAPE; - - SetErrorCode(OK); - return (TopAbs_ShapeEnum) anAttrib->Get(); -} - -//============================================================================= -/*! - * GetMainShape - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IGroupOperations::GetMainShape (Handle(GEOM_Object) theGroup) -{ - SetErrorCode(KO); - - if(theGroup.IsNull()) return NULL; - - Handle(GEOM_Function) aGroupFunction = theGroup->GetFunction(1); - if (aGroupFunction.IsNull()) return NULL; - - GEOM_ISubShape aSSI (aGroupFunction); - Handle(GEOM_Function) aMainShapeFunction = aSSI.GetMainShape(); - if (aMainShapeFunction.IsNull()) return NULL; - - TDF_Label aLabel = aMainShapeFunction->GetOwnerEntry(); - Handle(GEOM_Object) aMainShape = GEOM_Object::GetObject(aLabel); - if (aMainShape.IsNull()) return NULL; - - //Make a Python command - TCollection_AsciiString anOldDescr = aGroupFunction->GetDescription(); - - GEOM::TPythonDump(aGroupFunction) << anOldDescr.ToCString() << "\n\t" - << aMainShape << " = geompy.GetMainShape(" << theGroup << ")"; - - SetErrorCode(OK); - return aMainShape; -} - -//============================================================================= -/*! - * GetObjects - */ -//============================================================================= -Handle(TColStd_HArray1OfInteger) GEOMImpl_IGroupOperations::GetObjects(Handle(GEOM_Object) theGroup) -{ - SetErrorCode(KO); - - if(theGroup.IsNull()) return NULL; - - Handle(GEOM_Function) aFunction = theGroup->GetFunction(1); - if(aFunction.IsNull()) return NULL; - - GEOM_ISubShape aSSI(aFunction); - Handle(TColStd_HArray1OfInteger) aSeq = aSSI.GetIndices(); - if(aSeq.IsNull()) return NULL; - - if(aSeq->Length() == 1 && aSeq->Value(1) == -1) { - SetErrorCode(OK); - return NULL; - } - - SetErrorCode(OK); - return aSeq; -} diff --git a/src/GEOMImpl/GEOMImpl_IGroupOperations.hxx b/src/GEOMImpl/GEOMImpl_IGroupOperations.hxx deleted file mode 100644 index a5566d26d..000000000 --- a/src/GEOMImpl/GEOMImpl_IGroupOperations.hxx +++ /dev/null @@ -1,45 +0,0 @@ - -#ifndef _GEOMImpl_IGroupOperations_HXX_ -#define _GEOMImpl_IGroupOperations_HXX_ - -#include "Utils_SALOME_Exception.hxx" -#include "GEOM_IOperations.hxx" -#include "GEOM_Engine.hxx" -#include "GEOM_Object.hxx" -#include -#include -#include -#include - -class GEOMImpl_IGroupOperations : public GEOM_IOperations { - public: - Standard_EXPORT GEOMImpl_IGroupOperations(GEOM_Engine* theEngine, int theDocID); - Standard_EXPORT ~GEOMImpl_IGroupOperations(); - - Standard_EXPORT Handle(GEOM_Object) CreateGroup(Handle(GEOM_Object) theMainShape, TopAbs_ShapeEnum theShapeType); - - Standard_EXPORT void AddObject(Handle(GEOM_Object) theGroup, int theSubShapeID); - - Standard_EXPORT void RemoveObject(Handle(GEOM_Object) theGroup, int theSubShapeID); - - Standard_EXPORT void UnionList (Handle(GEOM_Object) theGroup, - const Handle(TColStd_HSequenceOfTransient)& theSubShapes); - - Standard_EXPORT void DifferenceList (Handle(GEOM_Object) theGroup, - const Handle(TColStd_HSequenceOfTransient)& theSubShapes); - - Standard_EXPORT void UnionIDs (Handle(GEOM_Object) theGroup, - const Handle(TColStd_HSequenceOfInteger)& theSubShapes); - - Standard_EXPORT void DifferenceIDs (Handle(GEOM_Object) theGroup, - const Handle(TColStd_HSequenceOfInteger)& theSubShapes); - - Standard_EXPORT TopAbs_ShapeEnum GetType(Handle(GEOM_Object) theGroup); - - Standard_EXPORT Handle(GEOM_Object) GetMainShape(Handle(GEOM_Object) theGroup); - - Standard_EXPORT Handle(TColStd_HArray1OfInteger) GetObjects(Handle(GEOM_Object) theGroup); - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_IHealing.hxx b/src/GEOMImpl/GEOMImpl_IHealing.hxx deleted file mode 100755 index e6d486c14..000000000 --- a/src/GEOMImpl/GEOMImpl_IHealing.hxx +++ /dev/null @@ -1,61 +0,0 @@ -//NOTE: This is an intreface to a function for the Healing creation. - - -#include "GEOM_Function.hxx" - -#include -#include - -#define ARG_SHAPE_PROCESS_OPERATORS 1 -#define ARG_SHAPE_PROCESS_PARAMS 2 -#define ARG_SHAPE_PROCESS_VALUES 3 -#define ARG_ORIGINAL 4 -#define ARG_LIST_ARGUMENTS 5 -#define ARG_IS_COMMON_VERTEX 6 -#define ARG_TOLERANCE 7 -#define ARG_DEV_EDGE_VALUE 8 -#define ARG_IS_BY_PARAMETER 9 -#define ARG_SUBSHAPE_INDEX 10 - - -class GEOMImpl_IHealing -{ -public: - GEOMImpl_IHealing(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetOperators( const Handle(TColStd_HArray1OfExtendedString)& arr ) { if ( !arr.IsNull() ) _func->SetStringArray(ARG_SHAPE_PROCESS_OPERATORS, arr); } - Handle(TColStd_HArray1OfExtendedString) GetOperators() { return _func->GetStringArray(ARG_SHAPE_PROCESS_OPERATORS); } - - void SetParameters( const Handle(TColStd_HArray1OfExtendedString)& arr ) { if ( !arr.IsNull() ) _func->SetStringArray(ARG_SHAPE_PROCESS_PARAMS, arr); } - Handle(TColStd_HArray1OfExtendedString) GetParameters() { return _func->GetStringArray(ARG_SHAPE_PROCESS_PARAMS); } - - void SetValues( const Handle(TColStd_HArray1OfExtendedString)& arr ) { if ( !arr.IsNull() ) _func->SetStringArray(ARG_SHAPE_PROCESS_VALUES, arr); } - Handle(TColStd_HArray1OfExtendedString) GetValues() { return _func->GetStringArray(ARG_SHAPE_PROCESS_VALUES); } - - void SetOriginal( Handle(GEOM_Function)& f ) { _func->SetReference(ARG_ORIGINAL, f); } - Handle(GEOM_Function) GetOriginal() { return _func->GetReference(ARG_ORIGINAL); } - - void SetFaces( const Handle(TColStd_HArray1OfInteger)& arr ) { if ( !arr.IsNull() ) _func->SetIntegerArray(ARG_LIST_ARGUMENTS, arr); } - Handle(TColStd_HArray1OfInteger) GetFaces() { return _func->GetIntegerArray(ARG_LIST_ARGUMENTS); } - - void SetWires( const Handle(TColStd_HArray1OfInteger)& arr ) { if ( !arr.IsNull() ) _func->SetIntegerArray(ARG_LIST_ARGUMENTS, arr); } - Handle(TColStd_HArray1OfInteger) GetWires() { return _func->GetIntegerArray(ARG_LIST_ARGUMENTS); } - - void SetIsCommonVertex( Standard_Boolean val ) { _func->SetInteger(ARG_IS_COMMON_VERTEX, val ? 1 : 0 ); } - Standard_Boolean GetIsCommonVertex() { return (_func->GetInteger(ARG_IS_COMMON_VERTEX) != 0 ); } - - void SetIsByParameter( Standard_Boolean val ) { _func->SetInteger(ARG_IS_BY_PARAMETER, val ? 1 : 0 ); } - Standard_Boolean GetIsByParameter() { return (_func->GetInteger(ARG_IS_BY_PARAMETER) != 0 ); } - - void SetTolerance( Standard_Real val ) { _func->SetReal(ARG_TOLERANCE, val); } - Standard_Real GetTolerance() { return _func->GetReal(ARG_TOLERANCE); } - - void SetDevideEdgeValue( Standard_Real val ) { _func->SetReal(ARG_DEV_EDGE_VALUE, val); } - Standard_Real GetDevideEdgeValue() { return _func->GetReal(ARG_DEV_EDGE_VALUE); } - - void SetIndex( Standard_Integer val ) { _func->SetInteger(ARG_SUBSHAPE_INDEX, val); } - Standard_Integer GetIndex() { return _func->GetInteger(ARG_SUBSHAPE_INDEX); } - -private: - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_IHealingOperations.cxx b/src/GEOMImpl/GEOMImpl_IHealingOperations.cxx deleted file mode 100644 index 5e86fbacc..000000000 --- a/src/GEOMImpl/GEOMImpl_IHealingOperations.cxx +++ /dev/null @@ -1,756 +0,0 @@ -#ifdef WNT -#pragma warning( disable:4786 ) -#endif - -#include - -#include - -#include - -#include -#include -#include -#include - -#include - -#include "utilities.h" -#include -#include - -#include - -#include -#include - -#include -#include -#include - -#include - -#include // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC - - -//============================================================================= -/*! - * constructor: - */ -//============================================================================= - -GEOMImpl_IHealingOperations::GEOMImpl_IHealingOperations (GEOM_Engine* theEngine, int theDocID) -: GEOM_IOperations(theEngine, theDocID) -{ - MESSAGE("GEOMImpl_IHealingOperations::GEOMImpl_IHealingOperations"); -} - -//============================================================================= -/*! - * destructor - */ -//============================================================================= - -GEOMImpl_IHealingOperations::~GEOMImpl_IHealingOperations() -{ - MESSAGE("GEOMImpl_IHealingOperations::~GEOMImpl_IHealingOperations"); -} - - -//============================================================================= -/*! - * ShapeProcess - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IHealingOperations::ShapeProcess (Handle(GEOM_Object) theObject, - const Handle(TColStd_HArray1OfExtendedString)& theOperators, - const Handle(TColStd_HArray1OfExtendedString)& theParams, - const Handle(TColStd_HArray1OfExtendedString)& theValues) -{ - // set error code, check parameters - SetErrorCode(KO); - - if (theObject.IsNull()) - return NULL; - - if (theOperators.IsNull() || theOperators->Length() <= 0) { - SetErrorCode("No operators requested"); - return NULL; - } - - Standard_Integer nbParams = 0, nbValues = 0; - if (!theParams.IsNull()) { - nbParams = theParams->Length(); - } - if (!theValues.IsNull()) { - nbValues = theValues->Length(); - } - - if (nbParams != nbValues) { - SetErrorCode("Number of parameter values must be equal to the number of parameters"); - return NULL; - } - - Handle(GEOM_Function) aFunction, aLastFunction = theObject->GetLastFunction(); - if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be processed - - // Add a new object - Handle(GEOM_Object) aNewObject = GetEngine()->AddObject( GetDocID(), GEOM_COPY ); - - //Add the function - aFunction = aNewObject->AddFunction(GEOMImpl_HealingDriver::GetID(), SHAPE_PROCESS); - - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_HealingDriver::GetID()) return NULL; - - // prepare "data container" class IHealing - GEOMImpl_IHealing HI(aFunction); - HI.SetOriginal(aLastFunction); - HI.SetOperators( theOperators ); - if (nbParams > 0) { - HI.SetParameters( theParams ); - HI.SetValues( theValues ); - } - - //Compute the translation - try - { - if (!GetSolver()->ComputeFunction(aFunction)) - { - SetErrorCode("Shape Healing algorithm failed"); - return NULL; - } - } - catch (Standard_Failure) - { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump pd (aFunction); - pd << aNewObject << " = geompy.ProcessShape(" << theObject << ", ["; - - // list of operators - int i = theOperators->Lower(), nb = theOperators->Upper(); - for ( ; i <= nb; i++) { - pd << "\"" << TCollection_AsciiString(theOperators->Value( i )).ToCString() - << (( i < nb ) ? "\", " : "\""); - } - pd << "], ["; - // list of parameters - i = theParams->Lower(); nb = theParams->Upper(); - for ( ; i <= nb; i++) { - pd << "\"" << TCollection_AsciiString(theParams->Value( i )).ToCString() - << (( i < nb ) ? "\", " : "\""); - } - pd << "], ["; - // list of values - i = theValues->Lower(); nb = theValues->Upper(); - for ( ; i <= nb; i++) { - pd << "\"" << TCollection_AsciiString(theValues->Value( i )).ToCString() - << (( i < nb ) ? "\", " : "\""); - } - pd << "])"; - - SetErrorCode(OK); - return aNewObject; -} - -//============================================================================= -/*! - * ShapeProcess - */ -//============================================================================= -void GEOMImpl_IHealingOperations::GetShapeProcessParameters (list& theOperations, - list& theParams, - list& theValues) -{ - ShHealOper_ShapeProcess aHealer; - TColStd_SequenceOfAsciiString anOperators; - int nbOperatorErrors( 0 ); - if ( aHealer.GetOperators( anOperators ) ) - { - for ( Standard_Integer i = 1; i <= anOperators.Length(); i++ ) - { - string anOperation = anOperators.Value( i ).ToCString(); - if ( GetOperatorParameters( anOperation, theParams, theValues ) ) - theOperations.push_back( anOperation ); - else - nbOperatorErrors++; - } - } - else - { - SetErrorCode("ERROR retrieving operators (GEOMImpl_IHealingOperations)"); - } - - if ( nbOperatorErrors ) { - TCollection_AsciiString aMsg ("ERRORS retrieving ShapeProcess parameters (GEOMImpl_IHealingOperations): nbOperatorErrors = "); - aMsg += TCollection_AsciiString( nbOperatorErrors ); - MESSAGE(aMsg.ToCString()); - } -} - -//============================================================================= -/*! - * GetOperatorParameters - */ -//============================================================================= -bool GEOMImpl_IHealingOperations::GetOperatorParameters( const string theOperation, - list& theParams, - list& theValues ) -{ - ShHealOper_ShapeProcess aHealer; - int nbParamValueErrors( 0 ); - list aParams; - if ( GetParameters( theOperation, aParams ) ) { - for ( list::iterator it = aParams.begin(); it != aParams.end(); ++it ) { - TCollection_AsciiString aParam( (Standard_CString)(*it).c_str() ); - TCollection_AsciiString aValue; - if ( aHealer.GetParameter( aParam, aValue ) ) { - theParams.push_back( aParam.ToCString() ); - theValues.push_back( aValue.ToCString() ); - } - else - nbParamValueErrors++; - } - } - else - return false; - - if ( nbParamValueErrors ) { - TCollection_AsciiString aMsg ("ERRORS retrieving ShapeProcess parameter values (GEOMImpl_IHealingOperations): nbParamValueErrors = "); - aMsg += TCollection_AsciiString( nbParamValueErrors ); - MESSAGE(aMsg.ToCString()); - } - - return true; -} - -//============================================================================= -/*! - * GetParameters - */ -//============================================================================= -bool GEOMImpl_IHealingOperations::GetParameters (const string theOperation, - list& theParams) -{ - if ( theOperation == "SplitAngle" ) { - theParams.push_back( "SplitAngle.Angle" ); - theParams.push_back( "SplitAngle.MaxTolerance" ); - - } else if ( theOperation == "SplitClosedFaces" ) { - theParams.push_back( "SplitClosedFaces.NbSplitPoints" ); - - } else if ( theOperation == "FixFaceSize" ) { - theParams.push_back( "FixFaceSize.Tolerance" ); - - } else if( theOperation == "DropSmallEdges" ) { - theParams.push_back( "DropSmallEdges.Tolerance3d" ); - - } else if( theOperation == "BSplineRestriction" ) { - theParams.push_back( "BSplineRestriction.SurfaceMode" ); - theParams.push_back( "BSplineRestriction.Curve3dMode" ); - theParams.push_back( "BSplineRestriction.Curve2dMode" ); - theParams.push_back( "BSplineRestriction.Tolerance3d" ); - theParams.push_back( "BSplineRestriction.Tolerance2d" ); - theParams.push_back( "BSplineRestriction.RequiredDegree" ); - theParams.push_back( "BSplineRestriction.RequiredNbSegments" ); - theParams.push_back( "BSplineRestriction.Continuity3d" ); - theParams.push_back( "BSplineRestriction.Continuity2d" ); - - } else if( theOperation == "SplitContinuity" ) { - theParams.push_back( "SplitContinuity.Tolerance3d" ); - theParams.push_back( "SplitContinuity.SurfaceContinuity" ); - theParams.push_back( "SplitContinuity.CurveContinuity" ); - - } else if( theOperation == "ToBezier" ) { - theParams.push_back( "ToBezier.SurfaceMode" ); - theParams.push_back( "ToBezier.Curve3dMode" ); - theParams.push_back( "ToBezier.Curve2dMode" ); - theParams.push_back( "ToBezier.MaxTolerance" ); - - } else if( theOperation == "SameParameter" ) { - theParams.push_back( "SameParameter.Tolerance3d" ); - - } else if( theOperation == "FixShape" ) { - theParams.push_back( "FixShape.Tolerance3d" ); - theParams.push_back( "FixShape.MaxTolerance3d" ); - - } else { - return false; - } - - return true; -} - -//============================================================================= -/*! - * SuppressFaces - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IHealingOperations::SuppressFaces - (Handle(GEOM_Object) theObject, const Handle(TColStd_HArray1OfInteger)& theFaces) -{ - // set error code, check parameters - SetErrorCode(KO); - - if ( theObject.IsNull() ) // if theFaces.IsNull() - it's OK, it means that ALL faces must be removed.. - return NULL; - - Handle(GEOM_Function) aFunction, aLastFunction = theObject->GetLastFunction(); - if(aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be processed - - // Add a new object - Handle(GEOM_Object) aNewObject = GetEngine()->AddObject( GetDocID(), GEOM_COPY ); - - //Add the function - aFunction = aNewObject->AddFunction(GEOMImpl_HealingDriver::GetID(), SUPPRESS_FACES); - - if(aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if(aFunction->GetDriverGUID() != GEOMImpl_HealingDriver::GetID()) return NULL; - - // prepare "data container" class IHealing - GEOMImpl_IHealing HI(aFunction); - HI.SetFaces( theFaces ); - HI.SetOriginal( aLastFunction ); - - //Compute the translation - try - { - if (!GetSolver()->ComputeFunction(aFunction)) - { - SetErrorCode("Healing driver failed"); - return NULL; - } - } - catch (Standard_Failure) - { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump pd (aFunction); - pd << aNewObject << " = geompy.SuppressFaces(" << theObject << ", ["; - - // list of face ids - int i = theFaces->Lower(), nb = theFaces->Upper(); - for ( ; i <= nb; i++) - pd << theFaces->Value( i ) << (( i < nb ) ? ", " : "])"); - - SetErrorCode(OK); - return aNewObject; -} - - -//============================================================================= -/*! - * CloseContour - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IHealingOperations::CloseContour - (Handle(GEOM_Object) theObject, - const Handle(TColStd_HArray1OfInteger)& theWires, - bool isCommonVertex) -{ - // set error code, check parameters - SetErrorCode(KO); - - if (theObject.IsNull()) - { - SetErrorCode("NULL object given"); - return NULL; - } - - Handle(GEOM_Function) aFunction, aLastFunction = theObject->GetLastFunction(); - if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be processed - - // Add a new object - Handle(GEOM_Object) aNewObject = GetEngine()->AddObject( GetDocID(), GEOM_COPY ); - - //Add the function - aFunction = aNewObject->AddFunction(GEOMImpl_HealingDriver::GetID(), CLOSE_CONTOUR); - - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if(aFunction->GetDriverGUID() != GEOMImpl_HealingDriver::GetID()) return NULL; - - // prepare "data container" class IHealing - GEOMImpl_IHealing HI(aFunction); - HI.SetWires( theWires ); - HI.SetIsCommonVertex( isCommonVertex ); - HI.SetOriginal( aLastFunction ); - - //Compute the translation - try - { - if (!GetSolver()->ComputeFunction(aFunction)) - { - SetErrorCode("Healing driver failed"); - return NULL; - } - } - catch (Standard_Failure) - { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump pd (aFunction); - pd << aNewObject << " = geompy.CloseContour(" << theObject << ", ["; - - // list of wire ids - if (!theWires.IsNull()) - { - int i = theWires->Lower(), nb = theWires->Upper(); - pd << theWires->Value(i++); - while (i <= nb) - pd << ", " << theWires->Value(i++); - } - pd << "], " << (int)isCommonVertex << ")"; - - SetErrorCode(OK); - return aNewObject; -} - -//============================================================================= -/*! - * RemoveIntWires - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IHealingOperations::RemoveIntWires - (Handle(GEOM_Object) theObject, const Handle(TColStd_HArray1OfInteger)& theWires) -{ - // set error code, check parameters - SetErrorCode(KO); - - if (theObject.IsNull()) // if theWires is NULL it's OK, it means that ALL wires must be removed - return NULL; - - Handle(GEOM_Function) aFunction, aLastFunction = theObject->GetLastFunction(); - if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be processed - - // Add a new object - Handle(GEOM_Object) aNewObject = GetEngine()->AddObject( GetDocID(), GEOM_COPY ); - - //Add the function - aFunction = aNewObject->AddFunction(GEOMImpl_HealingDriver::GetID(), REMOVE_INT_WIRES); - - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_HealingDriver::GetID()) return NULL; - - // prepare "data container" class IHealing - GEOMImpl_IHealing HI(aFunction); - HI.SetWires( theWires ); - HI.SetOriginal( aLastFunction ); - - //Compute the translation - try - { - if (!GetSolver()->ComputeFunction(aFunction)) - { - SetErrorCode("Healing driver failed"); - return NULL; - } - } - catch (Standard_Failure) - { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump pd (aFunction); - pd << aNewObject << " = geompy.SuppressInternalWires(" << theObject << ", ["; - - // list of wire ids - if (!theWires.IsNull()) { - int i = theWires->Lower(), nb = theWires->Upper(); - for ( ; i <= nb; i++) - pd << theWires->Value( i ) << (( i < nb ) ? ", " : "])"); - } else { - pd << "])"; - } - - SetErrorCode(OK); - return aNewObject; -} - -//============================================================================= -/*! - * FillHoles - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IHealingOperations::FillHoles (Handle(GEOM_Object) theObject, - const Handle(TColStd_HArray1OfInteger)& theWires) -{ - // set error code, check parameters - SetErrorCode(KO); - - if (theObject.IsNull()) // if theWires is NULL it's OK, it means that ALL holes must be removed - return NULL; - - Handle(GEOM_Function) aFunction, aLastFunction = theObject->GetLastFunction(); - if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be processed - - // Add a new object - Handle(GEOM_Object) aNewObject = GetEngine()->AddObject( GetDocID(), GEOM_COPY ); - - //Add the function - aFunction = aNewObject->AddFunction(GEOMImpl_HealingDriver::GetID(), FILL_HOLES); - - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_HealingDriver::GetID()) return NULL; - - // prepare "data container" class IHealing - GEOMImpl_IHealing HI(aFunction); - HI.SetWires( theWires ); - HI.SetOriginal( aLastFunction ); - - //Compute the translation - try - { - if (!GetSolver()->ComputeFunction(aFunction)) - { - SetErrorCode("Healing driver failed"); - return NULL; - } - } - catch (Standard_Failure) - { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump pd (aFunction); - pd << aNewObject << " = geompy.SuppressHoles(" << theObject << ", ["; - - // list of wire ids - if ( theWires.IsNull() ) - pd << "])"; - else { - int i = theWires->Lower(), nb = theWires->Upper(); - for ( ; i <= nb; i++) - pd << theWires->Value( i ) << (( i < nb ) ? ", " : "])"); - } - - SetErrorCode(OK); - return aNewObject; -} - -//============================================================================= -/*! - * Sew - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IHealingOperations::Sew (Handle(GEOM_Object) theObject, - double theTolerance) -{ - // set error code, check parameters - SetErrorCode(KO); - - if (theObject.IsNull()) - return NULL; - - Handle(GEOM_Function) aFunction, aLastFunction = theObject->GetLastFunction(); - if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be processed - - // Add a new object - Handle(GEOM_Object) aNewObject = GetEngine()->AddObject( GetDocID(), GEOM_COPY ); - - //Add the function - aFunction = aNewObject->AddFunction(GEOMImpl_HealingDriver::GetID(), SEWING); - - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_HealingDriver::GetID()) return NULL; - - // prepare "data container" class IHealing - GEOMImpl_IHealing HI(aFunction); - HI.SetTolerance( theTolerance ); - HI.SetOriginal( aLastFunction ); - - //Compute the translation - try - { - if (!GetSolver()->ComputeFunction(aFunction)) - { - SetErrorCode("Healing driver failed"); - return NULL; - } - } - catch (Standard_Failure) - { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aNewObject << " = geompy.Sew(" - << theObject << ", " << theTolerance << ")"; - - SetErrorCode(OK); - return aNewObject; -} - -//============================================================================= -/*! - * DivideEdge - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IHealingOperations::DivideEdge (Handle(GEOM_Object) theObject, - int theIndex, - double theValue, - bool isByParameter) -{ - // set error code, check parameters - SetErrorCode(KO); - - if (theObject.IsNull()) - return NULL; - - Handle(GEOM_Function) aFunction, aLastFunction = theObject->GetLastFunction(); - if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be processed - - // Add a new object - Handle(GEOM_Object) aNewObject = GetEngine()->AddObject( GetDocID(), GEOM_COPY ); - - //Add the function - aFunction = aNewObject->AddFunction(GEOMImpl_HealingDriver::GetID(), DIVIDE_EDGE); - - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_HealingDriver::GetID()) return NULL; - - // prepare "data container" class IHealing - GEOMImpl_IHealing HI(aFunction); - HI.SetIndex( theIndex ); - HI.SetDevideEdgeValue( theValue ); - HI.SetIsByParameter( isByParameter ); - HI.SetOriginal( aLastFunction ); - - //Compute the translation - try - { - if (!GetSolver()->ComputeFunction(aFunction)) - { - SetErrorCode("Healing driver failed"); - return NULL; - } - } - catch (Standard_Failure) - { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aNewObject << " = geompy.DivideEdge(" << theObject - << ", " << theIndex << ", " << theValue << ", " << (int)isByParameter << ")"; - - SetErrorCode(OK); - return aNewObject; -} - -//============================================================================= -/*! - * GetFreeBoundary - */ -//============================================================================= -bool GEOMImpl_IHealingOperations::GetFreeBoundary (Handle(GEOM_Object) theObject, - Handle(TColStd_HSequenceOfTransient)& theClosed, - Handle(TColStd_HSequenceOfTransient)& theOpen ) -{ - // set error code, check parameters - SetErrorCode(KO); - - if ( theObject.IsNull() || theClosed.IsNull() || theOpen.IsNull() ) - return false; - - TopoDS_Shape aShape = theObject->GetValue(); - if ( aShape.IsNull() ) - return false; - - // get free boundary shapes - ShapeAnalysis_FreeBounds anAnalizer( aShape ); - TopoDS_Compound aClosed = anAnalizer.GetClosedWires(); - TopoDS_Compound anOpen = anAnalizer.GetOpenWires(); - - // iterate through shapes and append them to the return sequence - Handle(GEOM_Object) anObj; - Handle(GEOM_Function) aFunction; - TopExp_Explorer anExp; - for ( anExp.Init( aClosed, TopAbs_WIRE ); anExp.More(); anExp.Next() ) - { - anObj = GetEngine()->AddObject( GetDocID(), GEOM_FREE_BOUNDS ); - aFunction = anObj->AddFunction( GEOMImpl_CopyDriver::GetID(), COPY_WITHOUT_REF ); - TopoDS_Shape aValueShape = anExp.Current(); - aFunction->SetValue( aValueShape ); - theClosed->Append(anObj); - } - for ( anExp.Init( anOpen, TopAbs_WIRE ); anExp.More(); anExp.Next() ) - { - anObj = GetEngine()->AddObject( GetDocID(), GEOM_FREE_BOUNDS ); - aFunction = anObj->AddFunction( GEOMImpl_CopyDriver::GetID(), COPY_WITHOUT_REF ); - TopoDS_Shape aValueShape = anExp.Current(); - aFunction->SetValue( aValueShape ); - theOpen->Append(anObj); - } - - if(!aFunction.IsNull()) { - - //Make a Python command - GEOM::TPythonDump pd (aFunction); - - Standard_Integer i, aLen = theClosed->Length(); - if (aLen > 0) { - pd << "(isDone, ["; - for (i = 1; i <= aLen; i++) { - Handle(GEOM_Object) anObj_i = Handle(GEOM_Object)::DownCast(theClosed->Value(i)); - pd << anObj_i << ((i < aLen) ? ", " : ""); - } - pd << "], "; - } else { - pd << "(isDone, empty_list, "; - } - - aLen = theOpen->Length(); - if (aLen > 0) { - pd << "["; - for (i = 1; i <= aLen; i++) { - Handle(GEOM_Object) anObj_i = Handle(GEOM_Object)::DownCast(theOpen->Value(i)); - pd << anObj_i << ((i < aLen) ? ", " : ""); - } - pd << "]"; - } else { - pd << "empty_list"; - } - - pd << ") = geompy.GetFreeBoundary(" << theObject << ")"; - } - - SetErrorCode(OK); - return true; -} diff --git a/src/GEOMImpl/GEOMImpl_IHealingOperations.hxx b/src/GEOMImpl/GEOMImpl_IHealingOperations.hxx deleted file mode 100644 index c74403e8c..000000000 --- a/src/GEOMImpl/GEOMImpl_IHealingOperations.hxx +++ /dev/null @@ -1,67 +0,0 @@ - -#ifndef _GEOMImpl_IHealingOperations_HXX_ -#define _GEOMImpl_IHealingOperations_HXX_ - -#include "GEOM_IOperations.hxx" -#include "GEOM_Engine.hxx" -#include "GEOM_Object.hxx" - -#include -#include - -#include - -class GEOMImpl_IHealingOperations : public GEOM_IOperations { - public: - Standard_EXPORT GEOMImpl_IHealingOperations(GEOM_Engine* theEngine, int theDocID); - Standard_EXPORT ~GEOMImpl_IHealingOperations(); - - // Apply Shape Processing to the selected Object - Standard_EXPORT Handle(GEOM_Object) ShapeProcess( Handle(GEOM_Object) theObject, - const Handle(TColStd_HArray1OfExtendedString)& theOperations, - const Handle(TColStd_HArray1OfExtendedString)& theParams, - const Handle(TColStd_HArray1OfExtendedString)& theValues ); - - // Retrieve default Shape Process parameters (from resource file) - Standard_EXPORT void GetShapeProcessParameters( list& theOperations, - list& theParams, - list& theValues ); - - // Retrieve default Shape Process parameters for given operator - Standard_EXPORT bool GetOperatorParameters( const string theOperation, - list& theParams, - list& theValues ); - - // returns all parameters that are valid for the given operation (Shape Process operator) - Standard_EXPORT static bool GetParameters( const string theOperation, list& theParams ); - - Standard_EXPORT Handle(GEOM_Object) SuppressFaces( Handle(GEOM_Object) theObject, - const Handle(TColStd_HArray1OfInteger)& theFaces); - - Standard_EXPORT Handle(GEOM_Object) CloseContour( Handle(GEOM_Object) theObject, - const Handle(TColStd_HArray1OfInteger)& theWires, - bool isCommonVertex ); - - Standard_EXPORT Handle(GEOM_Object) RemoveIntWires( Handle(GEOM_Object) theObject, - const Handle(TColStd_HArray1OfInteger)& theWires); - - Standard_EXPORT Handle(GEOM_Object) FillHoles( Handle(GEOM_Object) theObject, - const Handle(TColStd_HArray1OfInteger)& theWires); - - Standard_EXPORT Handle(GEOM_Object) Sew( Handle(GEOM_Object) theObject, - double theTolerance ); - - Standard_EXPORT Handle(GEOM_Object) DivideEdge( Handle(GEOM_Object) theObject, - int theIndex, - double theValue, - bool isByParameter ); - - // this function does not use Function-Driver mechanism, it just computes the free - // boundary edges and returns them in the sequence. It is called just for information reasons - // and it's not intended for history/undo/redo/etc.. - Standard_EXPORT bool GetFreeBoundary ( Handle(GEOM_Object) theObject, - Handle(TColStd_HSequenceOfTransient)& theOutClosedWires, - Handle(TColStd_HSequenceOfTransient)& theOutOpenWires ); -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_IImportExport.hxx b/src/GEOMImpl/GEOMImpl_IImportExport.hxx deleted file mode 100644 index d70a033a9..000000000 --- a/src/GEOMImpl/GEOMImpl_IImportExport.hxx +++ /dev/null @@ -1,32 +0,0 @@ -//NOTE: This is an intreface to a function for the Import Export operation. - - -#include "GEOM_Function.hxx" - -#define EXP_ARG_REF 1 -#define EXP_ARG_FILE 2 -#define EXP_ARG_PLUG 3 - -class GEOMImpl_IImportExport -{ - public: - - GEOMImpl_IImportExport(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetOriginal(Handle(GEOM_Function) theOriginal) { _func->SetReference(EXP_ARG_REF, theOriginal); } - - Handle(GEOM_Function) GetOriginal() { return _func->GetReference(EXP_ARG_REF); } - - void SetFileName(const TCollection_AsciiString& theFileName) { _func->SetString(EXP_ARG_FILE, theFileName); } - - TCollection_AsciiString GetFileName() { return _func->GetString(EXP_ARG_FILE); } - - void SetPluginName(const TCollection_AsciiString& theFormatName) - { _func->SetString(EXP_ARG_PLUG, theFormatName); } - - TCollection_AsciiString GetPluginName() { return _func->GetString(EXP_ARG_PLUG); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_IInsertOperations.cxx b/src/GEOMImpl/GEOMImpl_IInsertOperations.cxx deleted file mode 100644 index 9affafa27..000000000 --- a/src/GEOMImpl/GEOMImpl_IInsertOperations.cxx +++ /dev/null @@ -1,386 +0,0 @@ -#include - -#include - -#include "utilities.h" -#include -#include - -#include -#include -#include -#include - -#include -#include - -#include -#include -#include - -#include -#include - -#include - -#include // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC - -//============================================================================= -/*! - * constructor: - */ -//============================================================================= - -GEOMImpl_IInsertOperations::GEOMImpl_IInsertOperations(GEOM_Engine* theEngine, int theDocID) -: GEOM_IOperations(theEngine, theDocID) -{ - MESSAGE("GEOMImpl_IInsertOperations::GEOMImpl_IInsertOperations"); -} - -//============================================================================= -/*! - * destructor - */ -//============================================================================= - -GEOMImpl_IInsertOperations::~GEOMImpl_IInsertOperations() -{ - MESSAGE("GEOMImpl_IInsertOperations::~GEOMImpl_IInsertOperations"); -} - - - -//============================================================================= -/*! - * MakeCopy - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IInsertOperations::MakeCopy(Handle(GEOM_Object) theOriginal) -{ - SetErrorCode(KO); - - if (theOriginal.IsNull()) return NULL; - - //Add a new Copy object - Handle(GEOM_Object) aCopy = GetEngine()->AddObject(GetDocID(), GEOM_COPY); - - //Add a Copy function for creation a copy object - Handle(GEOM_Function) aFunction = aCopy->AddFunction(GEOMImpl_CopyDriver::GetID(), COPY_WITH_REF); - - //Check if the function is set correctly - if(aFunction->GetDriverGUID() != GEOMImpl_CopyDriver::GetID()) return NULL; - - GEOMImpl_ICopy aCI(aFunction); - - Handle(GEOM_Function) aRefFunction = theOriginal->GetLastFunction(); - if (aRefFunction.IsNull()) return NULL; - - aCI.SetOriginal(aRefFunction); - - //Compute the Copy value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Copy driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aCopy << " = geompy.MakeCopy(" << theOriginal << ")"; - - SetErrorCode(OK); - return aCopy; -} - -//============================================================================= -/*! - * Export - */ -//============================================================================= -void GEOMImpl_IInsertOperations::Export - (const Handle(GEOM_Object) theOriginal, - const TCollection_AsciiString& theFileName, - const TCollection_AsciiString& theFormatName) -{ - SetErrorCode(KO); - - if (theOriginal.IsNull()) return; - - Handle(GEOM_Function) aRefFunction = theOriginal->GetLastFunction(); - if (aRefFunction.IsNull()) return; //There is no function which creates an object to be exported - - //Add an Export function - Handle(GEOM_Function) aFunction = theOriginal->AddFunction(GEOMImpl_ExportDriver::GetID(), EXPORT_SHAPE); - if (aFunction.IsNull()) return; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_ExportDriver::GetID()) return; - - //Set parameters - GEOMImpl_IImportExport aCI (aFunction); - aCI.SetOriginal(aRefFunction); - aCI.SetFileName(theFileName); - - Handle(TCollection_HAsciiString) aHLibName; - if (!IsSupported(Standard_False, theFormatName, aHLibName)) { - return; - } - TCollection_AsciiString aLibName = aHLibName->String(); - aCI.SetPluginName(aLibName); - - //Perform the Export - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Export driver failed"); - return; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << "geompy.Export(" << theOriginal << ", \"" - << theFileName.ToCString() << "\", \"" << theFormatName.ToCString() << "\")"; - - SetErrorCode(OK); -} - -//============================================================================= -/*! - * Import - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IInsertOperations::Import - (const TCollection_AsciiString& theFileName, - const TCollection_AsciiString& theFormatName) -{ - SetErrorCode(KO); - - if (theFileName.IsEmpty() || theFormatName.IsEmpty()) return NULL; - - //Add a new result object - Handle(GEOM_Object) result = GetEngine()->AddObject(GetDocID(), GEOM_IMPORT); - - //Add an Import function - Handle(GEOM_Function) aFunction = result->AddFunction(GEOMImpl_ImportDriver::GetID(), IMPORT_SHAPE); - if (aFunction.IsNull()) return result; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_ImportDriver::GetID()) return result; - - //Set parameters - GEOMImpl_IImportExport aCI (aFunction); - aCI.SetFileName(theFileName); - - Handle(TCollection_HAsciiString) aHLibName; - if (!IsSupported(Standard_True, theFormatName, aHLibName)) { - return result; - } - TCollection_AsciiString aLibName = aHLibName->String(); - aCI.SetPluginName(aLibName); - - //Perform the Import - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Import driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << result << " = geompy.Import(\"" - << theFileName.ToCString() << "\", \"" << theFormatName.ToCString() << "\")"; - - SetErrorCode(OK); - return result; -} - -//============================================================================= -/*! - * ImportTranslators - */ -//============================================================================= -Standard_Boolean GEOMImpl_IInsertOperations::ImportTranslators - (Handle(TColStd_HSequenceOfAsciiString)& theFormats, - Handle(TColStd_HSequenceOfAsciiString)& thePatterns) -{ - if (theFormats.IsNull()) - theFormats = new TColStd_HSequenceOfAsciiString; - else - theFormats->Clear(); - - if (thePatterns.IsNull()) - thePatterns = new TColStd_HSequenceOfAsciiString; - else - thePatterns->Clear(); - - if (!InitResMgr()) return Standard_False; - - // Read Import formats list - if (myResMgr->Find("Import")) { - TCollection_AsciiString aFormats (myResMgr->Value("Import")); - TCollection_AsciiString aToken = aFormats.Token("| \t", 1); - int i = 1; - for (; !aToken.IsEmpty(); aToken = aFormats.Token("| \t", ++i)) { - theFormats->Append(aToken); - } - } - - // Read Patterns for each supported format - int j = 1, len = theFormats->Length(); - for (; j <= len; j++) { - TCollection_AsciiString aPattern; - TCollection_AsciiString aKey (theFormats->Value(j)); - aKey += ".Pattern"; - if (myResMgr->Find(aKey.ToCString())) - aPattern = myResMgr->Value(aKey.ToCString()); - else { - aPattern = theFormats->Value(j); - aPattern += " Files ( *.* )"; - } - thePatterns->Append(aPattern); - } - - return (!theFormats->IsEmpty()); -} - -//============================================================================= -/*! - * ExportTranslators - */ -//============================================================================= -Standard_Boolean GEOMImpl_IInsertOperations::ExportTranslators - (Handle(TColStd_HSequenceOfAsciiString)& theFormats, - Handle(TColStd_HSequenceOfAsciiString)& thePatterns) -{ - if (theFormats.IsNull()) - theFormats = new TColStd_HSequenceOfAsciiString; - else - theFormats->Clear(); - - if (thePatterns.IsNull()) - thePatterns = new TColStd_HSequenceOfAsciiString; - else - thePatterns->Clear(); - - if (!InitResMgr()) return Standard_False; - - // Read Export formats list - if (myResMgr->Find("Export")) { - TCollection_AsciiString aFormats (myResMgr->Value("Export")); - TCollection_AsciiString aToken = aFormats.Token("| \t", 1); - int i = 1; - for (; !aToken.IsEmpty(); aToken = aFormats.Token("| \t", ++i)) { - theFormats->Append(aToken); - } - } - - // Read Patterns for each supported format - int j = 1, len = theFormats->Length(); - for (; j <= len; j++) { - TCollection_AsciiString aPattern; - TCollection_AsciiString aKey (theFormats->Value(j)); - aKey += ".Pattern"; - if (myResMgr->Find(aKey.ToCString())) - aPattern = myResMgr->Value(aKey.ToCString()); - else { - aPattern = theFormats->Value(j); - aPattern += " Files ( *.* )"; - } - thePatterns->Append(aPattern); - } - - return (!theFormats->IsEmpty()); -} - -//============================================================================= -/*! - * IsSupported - */ -//============================================================================= -Standard_Boolean GEOMImpl_IInsertOperations::IsSupported - (const Standard_Boolean isImport, - const TCollection_AsciiString& theFormat, - Handle(TCollection_HAsciiString)& theLibName) -{ - if (!InitResMgr()) return Standard_False; - - // Import/Export mode - TCollection_AsciiString aMode; - //Standard_CString aMode; - if (isImport) aMode = "Import"; - else aMode = "Export"; - - // Read supported formats for the certain mode - if (myResMgr->Find(aMode.ToCString())) { - TCollection_AsciiString aFormats (myResMgr->Value(aMode.ToCString())); - if (aFormats.Search(theFormat) > -1) { - // Read library name for the supported format - TCollection_AsciiString aKey (theFormat); - aKey += "."; - aKey += aMode; - if (myResMgr->Find(aKey.ToCString())) { - TCollection_AsciiString aLibName (myResMgr->Value(aKey.ToCString())); - theLibName = new TCollection_HAsciiString (aLibName); - return Standard_True; - } - } - } - - return Standard_False; -} - -//============================================================================= -/*! - * InitResMgr - */ -//============================================================================= -Standard_Boolean GEOMImpl_IInsertOperations::InitResMgr() -{ - if (myResMgr.IsNull()) { - // Initialize the Resource Manager - TCollection_AsciiString aResDir (getenv("GEOM_ROOT_DIR")); -#ifdef WNT - aResDir += "\\share\\salome\\resources"; -#else - aResDir += "/share/salome/resources"; -#endif - char * dir = getenv("GEOM_ENGINE_RESOURCES_DIR"); - TCollection_AsciiString aUserResDir; - if ( dir ) - { - aUserResDir = dir; - } - else - { - aUserResDir = getenv("HOME"); -#ifdef WNT - aUserResDir += "\\.salome\\resources"; -#else - aUserResDir += "/.salome/resources"; -#endif - } - myResMgr = new Resource_Manager ("ImportExport", aResDir, aUserResDir, Standard_False); - - if (!myResMgr->Find("Import") && !myResMgr->Find("Export")) { - // instead of complains in Resource_Manager - INFOS("No valid file \"ImportExport\" found in " << aResDir.ToCString() << - " and in " << aUserResDir.ToCString() ); - } - } - - return ( myResMgr->Find("Import") || myResMgr->Find("Export") ); -} diff --git a/src/GEOMImpl/GEOMImpl_IInsertOperations.hxx b/src/GEOMImpl/GEOMImpl_IInsertOperations.hxx deleted file mode 100644 index 543070d4c..000000000 --- a/src/GEOMImpl/GEOMImpl_IInsertOperations.hxx +++ /dev/null @@ -1,46 +0,0 @@ - -#ifndef _GEOMImpl_IInsertOperations_HXX_ -#define _GEOMImpl_IInsertOperations_HXX_ - -#include "Utils_SALOME_Exception.hxx" -#include "GEOM_IOperations.hxx" -#include "GEOM_Engine.hxx" -#include "GEOM_Object.hxx" -#include -#include -#include -#include - -class GEOMImpl_IInsertOperations : public GEOM_IOperations { - public: - Standard_EXPORT GEOMImpl_IInsertOperations(GEOM_Engine* theEngine, int theDocID); - Standard_EXPORT ~GEOMImpl_IInsertOperations(); - - - Standard_EXPORT Handle(GEOM_Object) MakeCopy (Handle(GEOM_Object) theOriginal); - - Standard_EXPORT Handle(GEOM_Object) Import (const TCollection_AsciiString& theFileName, - const TCollection_AsciiString& theFormatType); - - Standard_EXPORT void Export (const Handle(GEOM_Object) theOriginal, - const TCollection_AsciiString& theFileName, - const TCollection_AsciiString& theFormatType); - - Standard_EXPORT Standard_Boolean ImportTranslators (Handle(TColStd_HSequenceOfAsciiString)& theFormats, - Handle(TColStd_HSequenceOfAsciiString)& thePatterns); - - Standard_EXPORT Standard_Boolean ExportTranslators (Handle(TColStd_HSequenceOfAsciiString)& theFormats, - Handle(TColStd_HSequenceOfAsciiString)& thePatterns); - - Standard_EXPORT Standard_Boolean IsSupported (const Standard_Boolean isImport, - const TCollection_AsciiString& theFormat, - Handle(TCollection_HAsciiString)& theLibName); - - private: - Standard_Boolean InitResMgr (); - - private: - Handle(Resource_Manager) myResMgr; -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_ILine.hxx b/src/GEOMImpl/GEOMImpl_ILine.hxx deleted file mode 100644 index 7834a5746..000000000 --- a/src/GEOMImpl/GEOMImpl_ILine.hxx +++ /dev/null @@ -1,24 +0,0 @@ -//NOTE: This is an intreface to a function for the vector creation. - - -#include "GEOM_Function.hxx" - -#define LINE_ARG_PNT1 1 -#define LINE_ARG_PNT2 2 - -class GEOMImpl_ILine -{ - public: - - GEOMImpl_ILine(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetPoint1(Handle(GEOM_Function) theRef) { _func->SetReference(LINE_ARG_PNT1, theRef); } - void SetPoint2(Handle(GEOM_Function) theRef) { _func->SetReference(LINE_ARG_PNT2, theRef); } - - Handle(GEOM_Function) GetPoint1() { return _func->GetReference(LINE_ARG_PNT1); } - Handle(GEOM_Function) GetPoint2() { return _func->GetReference(LINE_ARG_PNT2); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_ILocalOperations.cxx b/src/GEOMImpl/GEOMImpl_ILocalOperations.cxx deleted file mode 100644 index 28438e616..000000000 --- a/src/GEOMImpl/GEOMImpl_ILocalOperations.cxx +++ /dev/null @@ -1,506 +0,0 @@ -#include - -#include - -#include -#include - -#include - -#include -#include - -#include -#include - -#include -#include - -#include "utilities.h" -#include -#include - -#include -#include -#include -#include - -#include -#include -#include - -#include // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC - -//============================================================================= -/*! - * constructor: - */ -//============================================================================= -GEOMImpl_ILocalOperations::GEOMImpl_ILocalOperations (GEOM_Engine* theEngine, int theDocID) -: GEOM_IOperations(theEngine, theDocID) -{ - MESSAGE("GEOMImpl_ILocalOperations::GEOMImpl_ILocalOperations"); -} - -//============================================================================= -/*! - * destructor - */ -//============================================================================= -GEOMImpl_ILocalOperations::~GEOMImpl_ILocalOperations() -{ - MESSAGE("GEOMImpl_ILocalOperations::~GEOMImpl_ILocalOperations"); -} - - -//============================================================================= -/*! - * MakeFilletAll - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ILocalOperations::MakeFilletAll - (Handle(GEOM_Object) theShape, double theR) -{ - SetErrorCode(KO); - - //Add a new Fillet object - Handle(GEOM_Object) aFillet = GetEngine()->AddObject(GetDocID(), GEOM_FILLET); - - //Add a new Fillet function - Handle(GEOM_Function) aFunction = - aFillet->AddFunction(GEOMImpl_FilletDriver::GetID(), FILLET_SHAPE_ALL); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_FilletDriver::GetID()) return NULL; - - GEOMImpl_IFillet aCI (aFunction); - - Handle(GEOM_Function) aRefShape = theShape->GetLastFunction(); - if (aRefShape.IsNull()) return NULL; - - aCI.SetShape(aRefShape); - aCI.SetR(theR); - - //Compute the Fillet value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Fillet driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aFillet << " = geompy.MakeFilletAll(" - << theShape << ", " << theR << ")"; - - SetErrorCode(OK); - return aFillet; -} - -//============================================================================= -/*! - * MakeFilletEdges - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ILocalOperations::MakeFilletEdges - (Handle(GEOM_Object) theShape, double theR, list theEdges) -{ - SetErrorCode(KO); - - //Add a new Fillet object - Handle(GEOM_Object) aFillet = GetEngine()->AddObject(GetDocID(), GEOM_FILLET); - - //Add a new Fillet function - Handle(GEOM_Function) aFunction = - aFillet->AddFunction(GEOMImpl_FilletDriver::GetID(), FILLET_SHAPE_EDGES); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_FilletDriver::GetID()) return NULL; - - GEOMImpl_IFillet aCI (aFunction); - - Handle(GEOM_Function) aRefShape = theShape->GetLastFunction(); - if (aRefShape.IsNull()) return NULL; - - aCI.SetShape(aRefShape); - aCI.SetR(theR); - int aLen = theEdges.size(); - aCI.SetLength(aLen); - - int ind = 1; - list::iterator it = theEdges.begin(); - for (; it != theEdges.end(); it++, ind++) { - aCI.SetEdge(ind, (*it)); - } - - //Compute the Fillet value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Fillet driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump pd (aFunction); - pd << aFillet << " = geompy.MakeFillet(" << theShape - << ", " << theR << ", geompy.ShapeType[\"EDGE\"], ["; - - it = theEdges.begin(); - pd << (*it++); - while (it != theEdges.end()) { - pd << ", " << (*it++); - } - pd << "])"; - - SetErrorCode(OK); - return aFillet; -} - -//============================================================================= -/*! - * MakeFilletFaces - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ILocalOperations::MakeFilletFaces - (Handle(GEOM_Object) theShape, double theR, list theFaces) -{ - SetErrorCode(KO); - - //Add a new Fillet object - Handle(GEOM_Object) aFillet = GetEngine()->AddObject(GetDocID(), GEOM_FILLET); - - //Add a new Fillet function - Handle(GEOM_Function) aFunction = - aFillet->AddFunction(GEOMImpl_FilletDriver::GetID(), FILLET_SHAPE_FACES); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_FilletDriver::GetID()) return NULL; - - GEOMImpl_IFillet aCI (aFunction); - - Handle(GEOM_Function) aRefShape = theShape->GetLastFunction(); - if (aRefShape.IsNull()) return NULL; - - aCI.SetShape(aRefShape); - aCI.SetR(theR); - int aLen = theFaces.size(); - aCI.SetLength(aLen); - - int ind = 1; - list::iterator it = theFaces.begin(); - for (; it != theFaces.end(); it++, ind++) { - aCI.SetFace(ind, (*it)); - } - - //Compute the Fillet value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Fillet driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump pd (aFunction); - pd << aFillet << " = geompy.MakeFillet(" << theShape - << ", " << theR << ", geompy.ShapeType[\"FACE\"], ["; - - it = theFaces.begin(); - pd << (*it++); - while (it != theFaces.end()) { - pd << ", " << (*it++); - } - pd << "])"; - - SetErrorCode(OK); - return aFillet; -} - -//============================================================================= -/*! - * MakeChamferAll - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ILocalOperations::MakeChamferAll (Handle(GEOM_Object) theShape, double theD) -{ - SetErrorCode(KO); - - //Add a new Chamfer object - Handle(GEOM_Object) aChamfer = GetEngine()->AddObject(GetDocID(), GEOM_CHAMFER); - - //Add a new Chamfer function - Handle(GEOM_Function) aFunction = - aChamfer->AddFunction(GEOMImpl_ChamferDriver::GetID(), CHAMFER_SHAPE_ALL); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_ChamferDriver::GetID()) return NULL; - - GEOMImpl_IChamfer aCI (aFunction); - - Handle(GEOM_Function) aRefShape = theShape->GetLastFunction(); - if (aRefShape.IsNull()) return NULL; - - aCI.SetShape(aRefShape); - aCI.SetD(theD); - - //Compute the Chamfer value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Chamfer driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aChamfer << " = geompy.MakeChamferAll(" - << theShape << ", " << theD << ")"; - - SetErrorCode(OK); - return aChamfer; -} - -//============================================================================= -/*! - * MakeChamferEdge - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ILocalOperations::MakeChamferEdge - (Handle(GEOM_Object) theShape, double theD1, double theD2, - int theFace1, int theFace2) -{ - SetErrorCode(KO); - - //Add a new Chamfer object - Handle(GEOM_Object) aChamfer = GetEngine()->AddObject(GetDocID(), GEOM_CHAMFER); - - //Add a new Chamfer function - Handle(GEOM_Function) aFunction = - aChamfer->AddFunction(GEOMImpl_ChamferDriver::GetID(), CHAMFER_SHAPE_EDGE); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_ChamferDriver::GetID()) return NULL; - - GEOMImpl_IChamfer aCI (aFunction); - - Handle(GEOM_Function) aRefShape = theShape->GetLastFunction(); - if (aRefShape.IsNull()) return NULL; - - aCI.SetShape(aRefShape); - aCI.SetD1(theD1); - aCI.SetD2(theD2); - aCI.SetFace1(theFace1); - aCI.SetFace2(theFace2); - - //Compute the Chamfer value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Chamfer driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aChamfer - << " = geompy.MakeChamferEdge(" << theShape << ", " << theD1 - << ", " << theD2 << ", " << theFace1 << ", " << theFace2 << ")"; - - SetErrorCode(OK); - return aChamfer; -} - -//============================================================================= -/*! - * MakeChamferFaces - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ILocalOperations::MakeChamferFaces - (Handle(GEOM_Object) theShape, double theD1, double theD2, - list theFaces) -{ - SetErrorCode(KO); - - //Add a new Chamfer object - Handle(GEOM_Object) aChamfer = GetEngine()->AddObject(GetDocID(), GEOM_CHAMFER); - - //Add a new Chamfer function - Handle(GEOM_Function) aFunction = - aChamfer->AddFunction(GEOMImpl_ChamferDriver::GetID(), CHAMFER_SHAPE_FACES); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_ChamferDriver::GetID()) return NULL; - - GEOMImpl_IChamfer aCI (aFunction); - - Handle(GEOM_Function) aRefShape = theShape->GetLastFunction(); - if (aRefShape.IsNull()) return NULL; - - aCI.SetShape(aRefShape); - aCI.SetD1(theD1); - aCI.SetD2(theD2); - int aLen = theFaces.size(); - aCI.SetLength(aLen); - - int ind = 1; - list::iterator it = theFaces.begin(); - for (; it != theFaces.end(); it++, ind++) { - aCI.SetFace(ind, (*it)); - } - - //Compute the Chamfer value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Chamfer driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump pd (aFunction); - pd << aChamfer << " = geompy.MakeChamferFaces(" << theShape - << ", " << theD1 << ", " << theD2 << ", ["; - - it = theFaces.begin(); - pd << (*it++); - while (it != theFaces.end()) { - pd << ", " << (*it++); - } - pd << "])"; - - SetErrorCode(OK); - return aChamfer; -} - -//============================================================================= -/*! - * Archimede - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ILocalOperations::MakeArchimede (Handle(GEOM_Object) theShape, - double theWeight, - double theWaterDensity, - double theMeshingDeflection) -{ - SetErrorCode(KO); - - //Add a new Archimede object - Handle(GEOM_Object) aChamfer = GetEngine()->AddObject(GetDocID(), GEOM_ARCHIMEDE); - - //Add a new Archimede function - Handle(GEOM_Function) aFunction = aChamfer->AddFunction(GEOMImpl_ArchimedeDriver::GetID(), ARCHIMEDE_TYPE); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_ArchimedeDriver::GetID()) return NULL; - - GEOMImpl_IArchimede aAI (aFunction); - - Handle(GEOM_Function) aRefShape = theShape->GetLastFunction(); - if (aRefShape.IsNull()) return NULL; - - aAI.SetBasicShape(aRefShape); - aAI.SetWeight(theWeight); - aAI.SetDensity(theWaterDensity); - aAI.SetDeflection(theMeshingDeflection); - - //Compute the Archimede value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Archimede driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aChamfer - << " = geompy.Archimede(" << theShape << ", " << theWeight << ", " - << theWaterDensity << ", " << theMeshingDeflection << ")"; - - SetErrorCode(OK); - return aChamfer; -} - -//============================================================================= -/*! - * GetSubShape - */ -//============================================================================= -bool GEOMImpl_ILocalOperations::GetSubShape (const TopoDS_Shape& theShape, const int theIndex, - TopoDS_Shape& theSubShape) -{ - if (theShape.IsNull() || theIndex < 1) - return false; - - TopTools_IndexedMapOfShape anIndices; - TopExp::MapShapes(theShape, anIndices); - if (theIndex > anIndices.Extent()) return false; - theSubShape = anIndices.FindKey(theIndex); - - return true; -} - -//============================================================================= -/*! - * GetSubShapeIndex - */ -//============================================================================= -Standard_Integer GEOMImpl_ILocalOperations::GetSubShapeIndex (Handle(GEOM_Object) theShape, - Handle(GEOM_Object) theSubShape) -{ - SetErrorCode(KO); - - TopoDS_Shape aShape = theShape->GetValue(); - TopoDS_Shape aSubShape = theSubShape->GetValue(); - - if (aShape.IsNull() || aSubShape.IsNull()) return -1; - - TopTools_IndexedMapOfShape anIndices; - TopExp::MapShapes(aShape, anIndices); - if (anIndices.Contains(aSubShape)) { - SetErrorCode(OK); - return anIndices.FindIndex(aSubShape); - } - - return -1; -} diff --git a/src/GEOMImpl/GEOMImpl_ILocalOperations.hxx b/src/GEOMImpl/GEOMImpl_ILocalOperations.hxx deleted file mode 100644 index 597e3199c..000000000 --- a/src/GEOMImpl/GEOMImpl_ILocalOperations.hxx +++ /dev/null @@ -1,44 +0,0 @@ - -#ifndef _GEOMImpl_ILocalOperations_HXX_ -#define _GEOMImpl_ILocalOperations_HXX_ - -#include "Utils_SALOME_Exception.hxx" -#include "GEOM_IOperations.hxx" -#include "GEOM_Engine.hxx" -#include "GEOM_Object.hxx" -#include - -#include - -class GEOMImpl_ILocalOperations : public GEOM_IOperations { - public: - Standard_EXPORT GEOMImpl_ILocalOperations(GEOM_Engine* theEngine, int theDocID); - Standard_EXPORT ~GEOMImpl_ILocalOperations(); - - Standard_EXPORT Handle(GEOM_Object) MakeFilletAll (Handle(GEOM_Object) theShape, double theR); - Standard_EXPORT Handle(GEOM_Object) MakeFilletEdges (Handle(GEOM_Object) theShape, double theR, - list theEdges); - Standard_EXPORT Handle(GEOM_Object) MakeFilletFaces (Handle(GEOM_Object) theShape, double theR, - list theFaces); - - Standard_EXPORT Handle(GEOM_Object) MakeChamferAll (Handle(GEOM_Object) theShape, double theD); - Standard_EXPORT Handle(GEOM_Object) MakeChamferEdge (Handle(GEOM_Object) theShape, - double theD1, double theD2, - int theFace1, int theFace2); - Standard_EXPORT Handle(GEOM_Object) MakeChamferFaces (Handle(GEOM_Object) theShape, - double theD1, double theD2, - list theFaces); - - Standard_EXPORT Handle(GEOM_Object) MakeArchimede (Handle(GEOM_Object) theShape, - double theWeight, double theWaterDensity, - double theMeshingDeflection); - - Standard_EXPORT Standard_Integer GetSubShapeIndex (Handle(GEOM_Object) theShape, - Handle(GEOM_Object) theSubShape); - - Standard_EXPORT static bool GetSubShape (const TopoDS_Shape& theShape, - const int theIndex, - TopoDS_Shape& theSubShape); -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_IMarker.hxx b/src/GEOMImpl/GEOMImpl_IMarker.hxx deleted file mode 100644 index a29e01c62..000000000 --- a/src/GEOMImpl/GEOMImpl_IMarker.hxx +++ /dev/null @@ -1,69 +0,0 @@ -//NOTE: This is an interface to a function for the local coordinate system creation. - - -#include "GEOM_Function.hxx" - -#define CS_ARG_O_X 1 -#define CS_ARG_O_Y 2 -#define CS_ARG_O_Z 3 - -#define CS_ARG_X_DX 4 -#define CS_ARG_X_DY 5 -#define CS_ARG_X_DZ 6 - -#define CS_ARG_Y_DX 7 -#define CS_ARG_Y_DY 8 -#define CS_ARG_Y_DZ 9 - -class GEOMImpl_IMarker -{ - public: - - GEOMImpl_IMarker(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetOrigin (const double theX, const double theY, const double theZ) - { - _func->SetReal(CS_ARG_O_X, theX); - _func->SetReal(CS_ARG_O_Y, theY); - _func->SetReal(CS_ARG_O_Z, theZ); - } - - void SetXDir (const double theDX, const double theDY, const double theDZ) - { - _func->SetReal(CS_ARG_X_DX, theDX); - _func->SetReal(CS_ARG_X_DY, theDY); - _func->SetReal(CS_ARG_X_DZ, theDZ); - } - - void SetYDir (const double theDX, const double theDY, const double theDZ) - { - _func->SetReal(CS_ARG_Y_DX, theDX); - _func->SetReal(CS_ARG_Y_DY, theDY); - _func->SetReal(CS_ARG_Y_DZ, theDZ); - } - - void GetOrigin (double& theX, double& theY, double& theZ) - { - theX = _func->GetReal(CS_ARG_O_X); - theY = _func->GetReal(CS_ARG_O_Y); - theZ = _func->GetReal(CS_ARG_O_Z); - } - - void GetXDir (double& theDX, double& theDY, double& theDZ) - { - theDX = _func->GetReal(CS_ARG_X_DX); - theDY = _func->GetReal(CS_ARG_X_DY); - theDZ = _func->GetReal(CS_ARG_X_DZ); - } - - void GetYDir (double& theDX, double& theDY, double& theDZ) - { - theDX = _func->GetReal(CS_ARG_Y_DX); - theDY = _func->GetReal(CS_ARG_Y_DY); - theDZ = _func->GetReal(CS_ARG_Y_DZ); - } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_IMeasure.hxx b/src/GEOMImpl/GEOMImpl_IMeasure.hxx deleted file mode 100644 index f5b07cc77..000000000 --- a/src/GEOMImpl/GEOMImpl_IMeasure.hxx +++ /dev/null @@ -1,22 +0,0 @@ -// NOTE: This is an interface to a functions for the Measurement - - -#include "GEOM_Function.hxx" - -#define MEASURE_ARG_BASE 1 - -class GEOMImpl_IMeasure -{ - public: - - GEOMImpl_IMeasure(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetBase(Handle(GEOM_Function) theRefBase) - { _func->SetReference(MEASURE_ARG_BASE, theRefBase); } - - Handle(GEOM_Function) GetBase() { return _func->GetReference(MEASURE_ARG_BASE); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_IMeasureOperations.cxx b/src/GEOMImpl/GEOMImpl_IMeasureOperations.cxx deleted file mode 100644 index bd91bc57a..000000000 --- a/src/GEOMImpl/GEOMImpl_IMeasureOperations.cxx +++ /dev/null @@ -1,907 +0,0 @@ -#include - -#include - -#include -#include -#include - -#include -#include - -#include "utilities.h" -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC - -//============================================================================= -/*! - * constructor: - */ -//============================================================================= -GEOMImpl_IMeasureOperations::GEOMImpl_IMeasureOperations (GEOM_Engine* theEngine, int theDocID) -: GEOM_IOperations(theEngine, theDocID) -{ - MESSAGE("GEOMImpl_IMeasureOperations::GEOMImpl_IMeasureOperations"); -} - -//============================================================================= -/*! - * destructor - */ -//============================================================================= -GEOMImpl_IMeasureOperations::~GEOMImpl_IMeasureOperations() -{ - MESSAGE("GEOMImpl_IMeasureOperations::~GEOMImpl_IMeasureOperations"); -} - - -//============================================================================= -/*! - * GetCentreOfMass - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IMeasureOperations::GetCentreOfMass - (Handle(GEOM_Object) theShape) -{ - SetErrorCode(KO); - - if (theShape.IsNull()) return NULL; - - //Add a new CentreOfMass object - Handle(GEOM_Object) aCDG = GetEngine()->AddObject(GetDocID(), GEOM_CDG); - - //Add a new CentreOfMass function - Handle(GEOM_Function) aFunction = - aCDG->AddFunction(GEOMImpl_MeasureDriver::GetID(), CDG_MEASURE); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_MeasureDriver::GetID()) return NULL; - - GEOMImpl_IMeasure aCI (aFunction); - - Handle(GEOM_Function) aRefShape = theShape->GetLastFunction(); - if (aRefShape.IsNull()) return NULL; - - aCI.SetBase(aRefShape); - - //Compute the CentreOfMass value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Measure driver failed to compute centre of mass"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aCDG << " = geompy.MakeCDG(" << theShape << ")"; - - SetErrorCode(OK); - return aCDG; -} - -//============================================================================= -/*! - * GetBasicProperties - */ -//============================================================================= -void GEOMImpl_IMeasureOperations::GetBasicProperties (Handle(GEOM_Object) theShape, - Standard_Real& theLength, - Standard_Real& theSurfArea, - Standard_Real& theVolume) -{ - SetErrorCode(KO); - - if (theShape.IsNull()) return; - - Handle(GEOM_Function) aRefShape = theShape->GetLastFunction(); - if (aRefShape.IsNull()) return; - - TopoDS_Shape aShape = aRefShape->GetValue(); - if (aShape.IsNull()) { - SetErrorCode("The Objects has NULL Shape"); - return; - } - - //Compute the parameters - GProp_GProps LProps, SProps; - try { - BRepGProp::LinearProperties(aShape, LProps); - theLength = LProps.Mass(); - - BRepGProp::SurfaceProperties(aShape, SProps); - theSurfArea = SProps.Mass(); - - theVolume = 0.0; - if (aShape.ShapeType() < TopAbs_SHELL) { - for (TopExp_Explorer Exp (aShape, TopAbs_SOLID); Exp.More(); Exp.Next()) { - GProp_GProps VProps; - BRepGProp::VolumeProperties(Exp.Current(), VProps); - theVolume += VProps.Mass(); - } - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return; - } - - SetErrorCode(OK); -} - -//============================================================================= -/*! - * GetInertia - */ -//============================================================================= -void GEOMImpl_IMeasureOperations::GetInertia - (Handle(GEOM_Object) theShape, - Standard_Real& I11, Standard_Real& I12, Standard_Real& I13, - Standard_Real& I21, Standard_Real& I22, Standard_Real& I23, - Standard_Real& I31, Standard_Real& I32, Standard_Real& I33, - Standard_Real& Ix , Standard_Real& Iy , Standard_Real& Iz) -{ - SetErrorCode(KO); - - if (theShape.IsNull()) return; - - Handle(GEOM_Function) aRefShape = theShape->GetLastFunction(); - if (aRefShape.IsNull()) return; - - TopoDS_Shape aShape = aRefShape->GetValue(); - if (aShape.IsNull()) { - SetErrorCode("The Objects has NULL Shape"); - return; - } - - //Compute the parameters - GProp_GProps System; - - try { - if (aShape.ShapeType() == TopAbs_VERTEX || - aShape.ShapeType() == TopAbs_EDGE || - aShape.ShapeType() == TopAbs_WIRE) { - BRepGProp::LinearProperties(aShape, System); - } else if (aShape.ShapeType() == TopAbs_FACE || - aShape.ShapeType() == TopAbs_SHELL) { - BRepGProp::SurfaceProperties(aShape, System); - } else { - BRepGProp::VolumeProperties(aShape, System); - } - gp_Mat I = System.MatrixOfInertia(); - - I11 = I(1,1); - I12 = I(1,2); - I13 = I(1,3); - - I21 = I(2,1); - I22 = I(2,2); - I23 = I(2,3); - - I31 = I(3,1); - I32 = I(3,2); - I33 = I(3,3); - - GProp_PrincipalProps Pr = System.PrincipalProperties(); - Pr.Moments(Ix,Iy,Iz); - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return; - } - - SetErrorCode(OK); -} - -//============================================================================= -/*! - * GetBoundingBox - */ -//============================================================================= -void GEOMImpl_IMeasureOperations::GetBoundingBox - (Handle(GEOM_Object) theShape, - Standard_Real& Xmin, Standard_Real& Xmax, - Standard_Real& Ymin, Standard_Real& Ymax, - Standard_Real& Zmin, Standard_Real& Zmax) -{ - SetErrorCode(KO); - - if (theShape.IsNull()) return; - - Handle(GEOM_Function) aRefShape = theShape->GetLastFunction(); - if (aRefShape.IsNull()) return; - - TopoDS_Shape aShape = aRefShape->GetValue(); - if (aShape.IsNull()) { - SetErrorCode("The Objects has NULL Shape"); - return; - } - - //Compute the parameters - Bnd_Box B; - - try { - BRepBndLib::Add(aShape, B); - B.Get(Xmin, Ymin, Zmin, Xmax, Ymax, Zmax); - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return; - } - - SetErrorCode(OK); -} - -//============================================================================= -/*! - * GetTolerance - */ -//============================================================================= -void GEOMImpl_IMeasureOperations::GetTolerance - (Handle(GEOM_Object) theShape, - Standard_Real& FaceMin, Standard_Real& FaceMax, - Standard_Real& EdgeMin, Standard_Real& EdgeMax, - Standard_Real& VertMin, Standard_Real& VertMax) -{ - SetErrorCode(KO); - - if (theShape.IsNull()) return; - - Handle(GEOM_Function) aRefShape = theShape->GetLastFunction(); - if (aRefShape.IsNull()) return; - - TopoDS_Shape aShape = aRefShape->GetValue(); - if (aShape.IsNull()) { - SetErrorCode("The Objects has NULL Shape"); - return; - } - - //Compute the parameters - Standard_Real T; - FaceMin = EdgeMin = VertMin = RealLast(); - FaceMax = EdgeMax = VertMax = -RealLast(); - - try { - for (TopExp_Explorer ExF (aShape, TopAbs_FACE); ExF.More(); ExF.Next()) { - TopoDS_Face Face = TopoDS::Face(ExF.Current()); - T = BRep_Tool::Tolerance(Face); - if (T > FaceMax) - FaceMax = T; - if (T < FaceMin) - FaceMin = T; - } - for (TopExp_Explorer ExE (aShape, TopAbs_EDGE); ExE.More(); ExE.Next()) { - TopoDS_Edge Edge = TopoDS::Edge(ExE.Current()); - T = BRep_Tool::Tolerance(Edge); - if (T > EdgeMax) - EdgeMax = T; - if (T < EdgeMin) - EdgeMin = T; - } - for (TopExp_Explorer ExV (aShape, TopAbs_VERTEX); ExV.More(); ExV.Next()) { - TopoDS_Vertex Vertex = TopoDS::Vertex(ExV.Current()); - T = BRep_Tool::Tolerance(Vertex); - if (T > VertMax) - VertMax = T; - if (T < VertMin) - VertMin = T; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return; - } - - SetErrorCode(OK); -} - -//============================================================================= -/*! - * CheckShape - */ -//============================================================================= -bool GEOMImpl_IMeasureOperations::CheckShape (Handle(GEOM_Object) theShape, - TCollection_AsciiString& theDump) -{ - SetErrorCode(KO); - - if (theShape.IsNull()) return false; - - Handle(GEOM_Function) aRefShape = theShape->GetLastFunction(); - if (aRefShape.IsNull()) return false; - - TopoDS_Shape aShape = aRefShape->GetValue(); - if (aShape.IsNull()) { - SetErrorCode("The Objects has NULL Shape"); - return false; - } - - //Compute the parameters - bool isValid = false; - try { - BRepCheck_Analyzer ana (aShape, false); - if (ana.IsValid()) { - theDump.Clear(); - isValid = true; - } else { - StructuralDump(ana, aShape, theDump); - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return false; - } - - SetErrorCode(OK); - return isValid; -} - -//============================================================================= -/*! - * WhatIs - */ -//============================================================================= -TCollection_AsciiString GEOMImpl_IMeasureOperations::WhatIs (Handle(GEOM_Object) theShape) -{ - SetErrorCode(KO); - - TCollection_AsciiString Astr; - - if (theShape.IsNull()) return Astr; - - Handle(GEOM_Function) aRefShape = theShape->GetLastFunction(); - if (aRefShape.IsNull()) return Astr; - - TopoDS_Shape aShape = aRefShape->GetValue(); - if (aShape.IsNull()) { - SetErrorCode("The Objects has NULL Shape"); - return Astr; - } - - //Compute the parameters - if (aShape.ShapeType() == TopAbs_EDGE) { - if (BRep_Tool::Degenerated(TopoDS::Edge(aShape))) { - Astr = Astr + " It is a degenerated edge \n"; - } - } - - Astr = Astr + " Number of sub-shapes : \n"; - - try { - int iType, nbTypes [TopAbs_SHAPE]; - for (iType = 0; iType < TopAbs_SHAPE; ++iType) - nbTypes[iType] = 0; - nbTypes[aShape.ShapeType()]++; - - TopTools_MapOfShape aMapOfShape; - aMapOfShape.Add(aShape); - TopTools_ListOfShape aListOfShape; - aListOfShape.Append(aShape); - - TopTools_ListIteratorOfListOfShape itL (aListOfShape); - for (; itL.More(); itL.Next()) { - TopoDS_Iterator it (itL.Value()); - for (; it.More(); it.Next()) { - TopoDS_Shape s = it.Value(); - if (aMapOfShape.Add(s)) { - aListOfShape.Append(s); - nbTypes[s.ShapeType()]++; - } - } - } - - Astr = Astr + " VERTEX : " + TCollection_AsciiString(nbTypes[TopAbs_VERTEX]) + "\n"; - Astr = Astr + " EDGE : " + TCollection_AsciiString(nbTypes[TopAbs_EDGE]) + "\n"; - Astr = Astr + " WIRE : " + TCollection_AsciiString(nbTypes[TopAbs_WIRE]) + "\n"; - Astr = Astr + " FACE : " + TCollection_AsciiString(nbTypes[TopAbs_FACE]) + "\n"; - Astr = Astr + " SHELL : " + TCollection_AsciiString(nbTypes[TopAbs_SHELL]) + "\n"; - Astr = Astr + " SOLID : " + TCollection_AsciiString(nbTypes[TopAbs_SOLID]) + "\n"; - Astr = Astr + " COMPSOLID : " + TCollection_AsciiString(nbTypes[TopAbs_COMPSOLID]) + "\n"; - Astr = Astr + " COMPOUND : " + TCollection_AsciiString(nbTypes[TopAbs_COMPOUND]) + "\n"; - Astr = Astr + " SHAPE : " + TCollection_AsciiString(aMapOfShape.Extent()); - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return Astr; - } - - SetErrorCode(OK); - return Astr; -} - -//============================================================================= -/*! - * GetMinDistance - */ -//============================================================================= -Standard_Real GEOMImpl_IMeasureOperations::GetMinDistance - (Handle(GEOM_Object) theShape1, Handle(GEOM_Object) theShape2, - Standard_Real& X1, Standard_Real& Y1, Standard_Real& Z1, - Standard_Real& X2, Standard_Real& Y2, Standard_Real& Z2) -{ - SetErrorCode(KO); - Standard_Real MinDist = 1.e9; - - if (theShape1.IsNull() || theShape2.IsNull()) return MinDist; - - Handle(GEOM_Function) aRefShape1 = theShape1->GetLastFunction(); - Handle(GEOM_Function) aRefShape2 = theShape2->GetLastFunction(); - if (aRefShape1.IsNull() || aRefShape2.IsNull()) return MinDist; - - TopoDS_Shape aShape1 = aRefShape1->GetValue(); - TopoDS_Shape aShape2 = aRefShape2->GetValue(); - if (aShape1.IsNull() || aShape2.IsNull()) { - SetErrorCode("One of Objects has NULL Shape"); - return MinDist; - } - - //Compute the parameters - try { - BRepExtrema_DistShapeShape dst (aShape1, aShape2); - if (dst.IsDone()) { - gp_Pnt PMin1, PMin2, P1, P2; - - for (int i = 1; i <= dst.NbSolution(); i++) { - P1 = dst.PointOnShape1(i); - P2 = dst.PointOnShape2(i); - - Standard_Real Dist = P1.Distance(P2); - if (MinDist > Dist) { - MinDist = Dist; - PMin1 = P1; - PMin2 = P2; - } - } - - PMin1.Coord(X1, Y1, Z1); - PMin2.Coord(X2, Y2, Z2); - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return MinDist; - } - - SetErrorCode(OK); - return MinDist; -} - -//======================================================================= -//function : PointCoordinates -//purpose : Get coordinates of point -//======================================================================= -void GEOMImpl_IMeasureOperations::PointCoordinates( Handle(GEOM_Object) theShape, - Standard_Real& theX, Standard_Real& theY, Standard_Real& theZ ) -{ - SetErrorCode( KO ); - - if ( theShape.IsNull() ) - return; - - Handle(GEOM_Function) aRefShape = theShape->GetLastFunction(); - if ( aRefShape.IsNull() ) - return; - - TopoDS_Shape aShape = aRefShape->GetValue(); - if ( aShape.IsNull() || aShape.ShapeType() != TopAbs_VERTEX ) - { - SetErrorCode( "Shape must be a vertex" ); - return; - } - - try - { - gp_Pnt aPnt = BRep_Tool::Pnt( TopoDS::Vertex( aShape ) ); - theX = aPnt.X(); - theY = aPnt.Y(); - theZ = aPnt.Z(); - SetErrorCode( OK ); - } - catch ( Standard_Failure ) - { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode( aFail->GetMessageString() ); - } -} - -//======================================================================= -//function : StructuralDump -//purpose : Structural (data exchange) style of output. -//======================================================================= -void GEOMImpl_IMeasureOperations::StructuralDump (const BRepCheck_Analyzer& theAna, - const TopoDS_Shape& theShape, - TCollection_AsciiString& theDump) -{ - Standard_Integer i; - theDump.Clear(); - theDump += " -- The Shape has problems :\n"; - theDump += " Check Count\n"; - theDump += " ------------------------------------------------\n"; - - Standard_Integer last_stat = (Standard_Integer)BRepCheck_CheckFail; - Handle(TColStd_HArray1OfInteger) NbProblems = - new TColStd_HArray1OfInteger(1, last_stat); - for (i = 1; i <= last_stat; i++) - NbProblems->SetValue(i,0); - - Handle(TopTools_HSequenceOfShape) sl; - sl = new TopTools_HSequenceOfShape(); - TopTools_DataMapOfShapeListOfShape theMap; - theMap.Clear(); - GetProblemShapes(theAna, theShape, sl, NbProblems, theMap); - theMap.Clear(); - - Standard_Integer count = 0; - count = NbProblems->Value((Standard_Integer)BRepCheck_InvalidPointOnCurve); - if (count > 0) { - theDump += " Invalid Point on Curve ................... "; - theDump += TCollection_AsciiString(count) + "\n"; - } - count = NbProblems->Value((Standard_Integer)BRepCheck_InvalidPointOnCurveOnSurface); - if (count > 0) { - theDump += " Invalid Point on CurveOnSurface .......... "; - theDump += TCollection_AsciiString(count) + "\n"; - } - count = NbProblems->Value((Standard_Integer)BRepCheck_InvalidPointOnSurface); - if (count > 0) { - theDump += " Invalid Point on Surface ................. "; - theDump += TCollection_AsciiString(count) + "\n"; - } - count = NbProblems->Value((Standard_Integer)BRepCheck_No3DCurve); - if (count > 0) { - theDump += " No 3D Curve .............................. "; - theDump += TCollection_AsciiString(count) + "\n"; - } - count = NbProblems->Value((Standard_Integer)BRepCheck_Multiple3DCurve); - if (count > 0) { - theDump += " Multiple 3D Curve ........................ "; - theDump += TCollection_AsciiString(count) + "\n"; - } - count = NbProblems->Value((Standard_Integer)BRepCheck_Invalid3DCurve); - if (count > 0) { - theDump += " Invalid 3D Curve ......................... "; - theDump += TCollection_AsciiString(count) + "\n"; - } - count = NbProblems->Value((Standard_Integer)BRepCheck_NoCurveOnSurface); - if (count > 0) { - theDump += " No Curve on Surface ...................... "; - theDump += TCollection_AsciiString(count) + "\n"; - } - count = NbProblems->Value((Standard_Integer)BRepCheck_InvalidCurveOnSurface); - if (count > 0) { - theDump += " Invalid Curve on Surface ................. "; - theDump += TCollection_AsciiString(count) + "\n"; - } - count = NbProblems->Value((Standard_Integer)BRepCheck_InvalidCurveOnClosedSurface); - if (count > 0) { - theDump += " Invalid Curve on closed Surface .......... "; - theDump += TCollection_AsciiString(count) + "\n"; - } - count = NbProblems->Value((Standard_Integer)BRepCheck_InvalidSameRangeFlag); - if (count > 0) { - theDump += " Invalid SameRange Flag ................... "; - theDump += TCollection_AsciiString(count) + "\n"; - } - count = NbProblems->Value((Standard_Integer)BRepCheck_InvalidSameParameterFlag); - if (count > 0) { - theDump += " Invalid SameParameter Flag ............... "; - theDump += TCollection_AsciiString(count) + "\n"; - } - count = NbProblems->Value((Standard_Integer)BRepCheck_InvalidDegeneratedFlag); - if (count > 0) { - theDump += " Invalid Degenerated Flag ................. "; - theDump += TCollection_AsciiString(count) + "\n"; - } - count = NbProblems->Value((Standard_Integer)BRepCheck_FreeEdge); - if (count > 0) { - theDump += " Free Edge ................................ "; - theDump += TCollection_AsciiString(count) + "\n"; - } - count = NbProblems->Value((Standard_Integer)BRepCheck_InvalidMultiConnexity); - if (count > 0) { - theDump += " Invalid MultiConnexity ................... "; - theDump += TCollection_AsciiString(count) + "\n"; - } - count = NbProblems->Value((Standard_Integer)BRepCheck_InvalidRange); - if (count > 0) { - theDump += " Invalid Range ............................ "; - theDump += TCollection_AsciiString(count) + "\n"; - } - count = NbProblems->Value((Standard_Integer)BRepCheck_EmptyWire); - if (count > 0) { - theDump += " Empty Wire ............................... "; - theDump += TCollection_AsciiString(count) + "\n"; - } - count = NbProblems->Value((Standard_Integer)BRepCheck_RedundantEdge); - if (count > 0) { - theDump += " Redundant Edge ........................... "; - theDump += TCollection_AsciiString(count) + "\n"; - } - count = NbProblems->Value((Standard_Integer)BRepCheck_SelfIntersectingWire); - if (count > 0) { - theDump += " Self Intersecting Wire ................... "; - theDump += TCollection_AsciiString(count) + "\n"; - } - count = NbProblems->Value((Standard_Integer)BRepCheck_NoSurface); - if (count > 0) { - theDump += " No Surface ............................... "; - theDump += TCollection_AsciiString(count) + "\n"; - } - count = NbProblems->Value((Standard_Integer)BRepCheck_InvalidWire); - if (count > 0) { - theDump += " Invalid Wire ............................. "; - theDump += TCollection_AsciiString(count) + "\n"; - } - count = NbProblems->Value((Standard_Integer)BRepCheck_RedundantWire); - if (count > 0) { - theDump += " Redundant Wire ........................... "; - theDump += TCollection_AsciiString(count) + "\n"; - } - count = NbProblems->Value((Standard_Integer)BRepCheck_IntersectingWires); - if (count > 0) { - theDump += " Intersecting Wires ....................... "; - theDump += TCollection_AsciiString(count) + "\n"; - } - count = NbProblems->Value((Standard_Integer)BRepCheck_InvalidImbricationOfWires); - if (count > 0) { - theDump += " Invalid Imbrication of Wires ............. "; - theDump += TCollection_AsciiString(count) + "\n"; - } - count = NbProblems->Value((Standard_Integer)BRepCheck_EmptyShell); - if (count > 0) { - theDump += " Empty Shell .............................. "; - theDump += TCollection_AsciiString(count) + "\n"; - } - count = NbProblems->Value((Standard_Integer)BRepCheck_RedundantFace); - if (count > 0) { - theDump += " Redundant Face ........................... "; - theDump += TCollection_AsciiString(count) + "\n"; - } - count = NbProblems->Value((Standard_Integer)BRepCheck_UnorientableShape); - if (count > 0) { - theDump += " Unorientable Shape ....................... "; - theDump += TCollection_AsciiString(count) + "\n"; - } - count = NbProblems->Value((Standard_Integer)BRepCheck_NotClosed); - if (count > 0) { - theDump += " Not Closed ............................... "; - theDump += TCollection_AsciiString(count) + "\n"; - } - count = NbProblems->Value((Standard_Integer)BRepCheck_NotConnected); - if (count > 0) { - theDump += " Not Connected ............................ "; - theDump += TCollection_AsciiString(count) + "\n"; - } - count = NbProblems->Value((Standard_Integer)BRepCheck_SubshapeNotInShape); - if (count > 0) { - theDump += " Subshape not in Shape .................... "; - theDump += TCollection_AsciiString(count) + "\n"; - } - count = NbProblems->Value((Standard_Integer)BRepCheck_BadOrientation); - if (count > 0) { - theDump += " Bad Orientation .......................... "; - theDump += TCollection_AsciiString(count) + "\n"; - } - count = NbProblems->Value((Standard_Integer)BRepCheck_BadOrientationOfSubshape); - if (count > 0) { - theDump += " Bad Orientation of Subshape .............. "; - theDump += TCollection_AsciiString(count) + "\n"; - } - count = NbProblems->Value((Standard_Integer)BRepCheck_CheckFail); - if (count > 0) { - theDump += " checkshape failure ....................... "; - theDump += TCollection_AsciiString(count) + "\n"; - } - - theDump += " ------------------------------------------------\n"; - theDump += "*** Shapes with problems : "; - theDump += TCollection_AsciiString(sl->Length()) + "\n"; - - Standard_Integer nbv, nbe, nbw, nbf, nbs, nbo; - nbv = nbe = nbw = nbf = nbs = nbo = 0; - - for (i = 1; i <= sl->Length(); i++) { - TopoDS_Shape shi = sl->Value(i); - TopAbs_ShapeEnum sti = shi.ShapeType(); - switch (sti) { - case TopAbs_VERTEX : nbv++; break; - case TopAbs_EDGE : nbe++; break; - case TopAbs_WIRE : nbw++; break; - case TopAbs_FACE : nbf++; break; - case TopAbs_SHELL : nbs++; break; - case TopAbs_SOLID : nbo++; break; - default : break; - } - } - - if (nbv > 0) { - theDump += "VERTEX : "; - if (nbv < 10) theDump += " "; - theDump += TCollection_AsciiString(nbv) + "\n"; - } - if (nbe > 0) { - theDump += "EDGE : "; - if (nbe < 10) theDump += " "; - theDump += TCollection_AsciiString(nbe) + "\n"; - } - if (nbw > 0) { - theDump += "WIRE : "; - if (nbw < 10) theDump += " "; - theDump += TCollection_AsciiString(nbw) + "\n"; - } - if (nbf > 0) { - theDump += "FACE : "; - if (nbf < 10) theDump += " "; - theDump += TCollection_AsciiString(nbf) + "\n"; - } - if (nbs > 0) { - theDump += "SHELL : "; - if (nbs < 10) theDump += " "; - theDump += TCollection_AsciiString(nbs) + "\n"; - } - if (nbo > 0) { - theDump += "SOLID : "; - if (nbo < 10) theDump += " "; - theDump += TCollection_AsciiString(nbo) + "\n"; - } -} - -//======================================================================= -//function : GetProblemShapes -// purpose : for StructuralDump -//======================================================================= -void GEOMImpl_IMeasureOperations::GetProblemShapes (const BRepCheck_Analyzer& theAna, - const TopoDS_Shape& theShape, - Handle(TopTools_HSequenceOfShape)& sl, - Handle(TColStd_HArray1OfInteger)& NbProblems, - TopTools_DataMapOfShapeListOfShape& theMap) -{ - for (TopoDS_Iterator iter(theShape); iter.More(); iter.Next()) { - GetProblemShapes(theAna, iter.Value(), sl, NbProblems, theMap); - } - TopAbs_ShapeEnum styp = theShape.ShapeType(); - BRepCheck_ListIteratorOfListOfStatus itl; - TopTools_ListOfShape empty; - if (!theMap.IsBound(theShape)) { - theMap.Bind(theShape,empty); - - if (!theAna.Result(theShape).IsNull()) { - itl.Initialize(theAna.Result(theShape)->Status()); - // !!! May be, we have to print all the problems, not only the first one ? - if (itl.Value() != BRepCheck_NoError) { - sl->Append(theShape); - BRepCheck_Status stat = itl.Value(); - NbProblems->SetValue((Standard_Integer)stat, - NbProblems->Value((Standard_Integer)stat) + 1); - } - } - } - - switch (styp) { - case TopAbs_EDGE: - GetProblemSub(theAna, theShape, sl, NbProblems, TopAbs_VERTEX, theMap); - break; - case TopAbs_FACE: - GetProblemSub(theAna, theShape, sl, NbProblems, TopAbs_WIRE, theMap); - GetProblemSub(theAna, theShape, sl, NbProblems, TopAbs_EDGE, theMap); - GetProblemSub(theAna, theShape, sl, NbProblems, TopAbs_VERTEX, theMap); - break; - case TopAbs_SHELL: - break; - case TopAbs_SOLID: - GetProblemSub(theAna, theShape, sl, NbProblems, TopAbs_SHELL, theMap); - break; - default: - break; - } -} - -//======================================================================= -//function : Contains -//======================================================================= -static Standard_Boolean Contains (const TopTools_ListOfShape& L, - const TopoDS_Shape& S) -{ - TopTools_ListIteratorOfListOfShape it; - for (it.Initialize(L); it.More(); it.Next()) { - if (it.Value().IsSame(S)) { - return Standard_True; - } - } - return Standard_False; -} - -//======================================================================= -//function : GetProblemSub -// purpose : for StructuralDump -//======================================================================= -void GEOMImpl_IMeasureOperations::GetProblemSub (const BRepCheck_Analyzer& theAna, - const TopoDS_Shape& theShape, - Handle(TopTools_HSequenceOfShape)& sl, - Handle(TColStd_HArray1OfInteger)& NbProblems, - const TopAbs_ShapeEnum Subtype, - TopTools_DataMapOfShapeListOfShape& theMap) -{ - BRepCheck_ListIteratorOfListOfStatus itl; - TopExp_Explorer exp; - for (exp.Init(theShape, Subtype); exp.More(); exp.Next()) { - const TopoDS_Shape& sub = exp.Current(); - - const Handle(BRepCheck_Result)& res = theAna.Result(sub); - for (res->InitContextIterator(); - res->MoreShapeInContext(); - res->NextShapeInContext()) { - if (res->ContextualShape().IsSame(theShape) && !Contains(theMap(sub), theShape)) { - theMap(sub).Append(theShape); - itl.Initialize(res->StatusOnShape()); - - if (itl.Value() != BRepCheck_NoError) { - Standard_Integer ii = 0; - - for (ii = 1; ii <= sl->Length(); ii++) - if (sl->Value(ii).IsSame(sub)) break; - - if (ii > sl->Length()) { - sl->Append(sub); - BRepCheck_Status stat = itl.Value(); - NbProblems->SetValue((Standard_Integer)stat, - NbProblems->Value((Standard_Integer)stat) + 1); - } - for (ii = 1; ii <= sl->Length(); ii++) - if (sl->Value(ii).IsSame(theShape)) break; - if (ii > sl->Length()) { - sl->Append(theShape); - BRepCheck_Status stat = itl.Value(); - NbProblems->SetValue((Standard_Integer)stat, - NbProblems->Value((Standard_Integer)stat) + 1); - } - } - break; - } - } - } -} diff --git a/src/GEOMImpl/GEOMImpl_IMeasureOperations.hxx b/src/GEOMImpl/GEOMImpl_IMeasureOperations.hxx deleted file mode 100644 index 675590da5..000000000 --- a/src/GEOMImpl/GEOMImpl_IMeasureOperations.hxx +++ /dev/null @@ -1,74 +0,0 @@ - -#ifndef _GEOMImpl_IMeasureOperations_HXX_ -#define _GEOMImpl_IMeasureOperations_HXX_ - -#include "GEOM_IOperations.hxx" - -#include -#include -#include -#include - -class GEOM_Engine; -class Handle(GEOM_Object); - -class GEOMImpl_IMeasureOperations : public GEOM_IOperations { - public: - Standard_EXPORT GEOMImpl_IMeasureOperations(GEOM_Engine* theEngine, int theDocID); - Standard_EXPORT ~GEOMImpl_IMeasureOperations(); - - Standard_EXPORT Handle(GEOM_Object) GetCentreOfMass (Handle(GEOM_Object) theShape); - - Standard_EXPORT void GetBasicProperties (Handle(GEOM_Object) theShape, - Standard_Real& theLength, - Standard_Real& theSurfArea, - Standard_Real& theVolume); - - Standard_EXPORT void GetInertia (Handle(GEOM_Object) theShape, - Standard_Real& I11, Standard_Real& I12, Standard_Real& I13, - Standard_Real& I21, Standard_Real& I22, Standard_Real& I23, - Standard_Real& I31, Standard_Real& I32, Standard_Real& I33, - Standard_Real& Ix , Standard_Real& Iy , Standard_Real& Iz); - - Standard_EXPORT void GetBoundingBox (Handle(GEOM_Object) theShape, - Standard_Real& Xmin, Standard_Real& Xmax, - Standard_Real& Ymin, Standard_Real& Ymax, - Standard_Real& Zmin, Standard_Real& Zmax); - - Standard_EXPORT void GetTolerance (Handle(GEOM_Object) theShape, - Standard_Real& FaceMin, Standard_Real& FaceMax, - Standard_Real& EdgeMin, Standard_Real& EdgeMax, - Standard_Real& VertMin, Standard_Real& VertMax); - - Standard_EXPORT bool CheckShape (Handle(GEOM_Object) theShape, - TCollection_AsciiString& theDump); - - Standard_EXPORT TCollection_AsciiString WhatIs (Handle(GEOM_Object) theShape); - - Standard_EXPORT Standard_Real GetMinDistance (Handle(GEOM_Object) theShape1, Handle(GEOM_Object) theShape2, - Standard_Real& X1, Standard_Real& Y1, Standard_Real& Z1, - Standard_Real& X2, Standard_Real& Y2, Standard_Real& Z2); - - Standard_EXPORT void PointCoordinates( Handle(GEOM_Object) theShape, - Standard_Real& theX, Standard_Real& theY, Standard_Real& theZ ); - - private: - void StructuralDump (const BRepCheck_Analyzer& theAna, - const TopoDS_Shape& theShape, - TCollection_AsciiString& theDump); - - void GetProblemShapes (const BRepCheck_Analyzer& theAna, - const TopoDS_Shape& theShape, - Handle(TopTools_HSequenceOfShape)& sl, - Handle(TColStd_HArray1OfInteger)& NbProblems, - TopTools_DataMapOfShapeListOfShape& theMap); - - void GetProblemSub (const BRepCheck_Analyzer& theAna, - const TopoDS_Shape& theShape, - Handle(TopTools_HSequenceOfShape)& sl, - Handle(TColStd_HArray1OfInteger)& NbProblems, - const TopAbs_ShapeEnum Subtype, - TopTools_DataMapOfShapeListOfShape& theMap); -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_IMirror.hxx b/src/GEOMImpl/GEOMImpl_IMirror.hxx deleted file mode 100644 index dcaff0d19..000000000 --- a/src/GEOMImpl/GEOMImpl_IMirror.hxx +++ /dev/null @@ -1,30 +0,0 @@ -//NOTE: This is an intreface to a function for the Mirror creation. - - -#include "GEOM_Function.hxx" - -#define MIRROR_ARG_ORIGINAL 1 -#define MIRROR_ARG_PLANE 2 -#define MIRROR_ARG_AXIS 3 -#define MIRROR_ARG_POINT 4 - -class GEOMImpl_IMirror -{ - public: - - GEOMImpl_IMirror(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetOriginal(Handle(GEOM_Function) theShape) { _func->SetReference(MIRROR_ARG_ORIGINAL, theShape); } - void SetPlane (Handle(GEOM_Function) thePlane) { _func->SetReference(MIRROR_ARG_PLANE, thePlane); } - void SetAxis (Handle(GEOM_Function) theAxis ) { _func->SetReference(MIRROR_ARG_AXIS , theAxis ); } - void SetPoint (Handle(GEOM_Function) thePoint) { _func->SetReference(MIRROR_ARG_POINT, thePoint); } - - Handle(GEOM_Function) GetOriginal() { return _func->GetReference(MIRROR_ARG_ORIGINAL); } - Handle(GEOM_Function) GetPlane() { return _func->GetReference(MIRROR_ARG_PLANE); } - Handle(GEOM_Function) GetAxis () { return _func->GetReference(MIRROR_ARG_AXIS ); } - Handle(GEOM_Function) GetPoint() { return _func->GetReference(MIRROR_ARG_POINT); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_IOffset.hxx b/src/GEOMImpl/GEOMImpl_IOffset.hxx deleted file mode 100644 index 91434247c..000000000 --- a/src/GEOMImpl/GEOMImpl_IOffset.hxx +++ /dev/null @@ -1,26 +0,0 @@ -//NOTE: This is an intreface to a function for the Offset creation. - - -#include "GEOM_Function.hxx" - -#define OFF_ARG_SHAPE 1 -#define OFF_ARG_VALUE 2 - -class GEOMImpl_IOffset -{ - public: - - GEOMImpl_IOffset(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetShape(Handle(GEOM_Function) theShape) { _func->SetReference(OFF_ARG_SHAPE, theShape); } - - Handle(GEOM_Function) GetShape() { return _func->GetReference(OFF_ARG_SHAPE); } - - void SetValue(double theValue) { _func->SetReal(OFF_ARG_VALUE, theValue); } - - double GetValue() { return _func->GetReal(OFF_ARG_VALUE); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_IPartition.hxx b/src/GEOMImpl/GEOMImpl_IPartition.hxx deleted file mode 100644 index d89e7796f..000000000 --- a/src/GEOMImpl/GEOMImpl_IPartition.hxx +++ /dev/null @@ -1,63 +0,0 @@ -//NOTE: This is an intreface to a function for the Partition creation. - - -#include "GEOM_Function.hxx" - -#include "TColStd_HSequenceOfTransient.hxx" -#include "TColStd_HArray1OfInteger.hxx" - -#define PART_ARG_LIMIT 1 -#define PART_ARG_SHAPES 2 -#define PART_ARG_TOOLS 3 -#define PART_ARG_KEEP_IN 4 -#define PART_ARG_REM_IN 5 - -#define PART_ARG_MATERIALS 6 - -#define PART_ARG_SHAPE 7 -#define PART_ARG_PLANE 8 - -class GEOMImpl_IPartition -{ - public: - - GEOMImpl_IPartition(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetLimit(int theLimit) { _func->SetInteger(PART_ARG_LIMIT, theLimit); } - - void SetShapes(const Handle(TColStd_HSequenceOfTransient)& theShapes) - { _func->SetReferenceList(PART_ARG_SHAPES, theShapes); } - - void SetTools(const Handle(TColStd_HSequenceOfTransient)& theShapes) - { _func->SetReferenceList(PART_ARG_TOOLS, theShapes); } - - void SetKeepIns(const Handle(TColStd_HSequenceOfTransient)& theShapes) - { _func->SetReferenceList(PART_ARG_KEEP_IN, theShapes); } - - void SetRemoveIns(const Handle(TColStd_HSequenceOfTransient)& theShapes) - { _func->SetReferenceList(PART_ARG_REM_IN, theShapes); } - - void SetMaterials(const Handle(TColStd_HArray1OfInteger)& theMaterials) - { _func->SetIntegerArray(PART_ARG_MATERIALS, theMaterials); } - - - int GetLimit() { return _func->GetInteger(PART_ARG_LIMIT); } - - Handle(TColStd_HSequenceOfTransient) GetShapes() { return _func->GetReferenceList(PART_ARG_SHAPES); } - Handle(TColStd_HSequenceOfTransient) GetTools() { return _func->GetReferenceList(PART_ARG_TOOLS); } - Handle(TColStd_HSequenceOfTransient) GetKeepIns() { return _func->GetReferenceList(PART_ARG_KEEP_IN); } - Handle(TColStd_HSequenceOfTransient) GetRemoveIns() { return _func->GetReferenceList(PART_ARG_REM_IN); } - - Handle(TColStd_HArray1OfInteger) GetMaterials() { return _func->GetIntegerArray(PART_ARG_MATERIALS); } - - - void SetShape(Handle(GEOM_Function) theShape) { _func->SetReference(PART_ARG_SHAPE, theShape); } - void SetPlane(Handle(GEOM_Function) thePlane) { _func->SetReference(PART_ARG_PLANE, thePlane); } - - Handle(GEOM_Function) GetShape() { return _func->GetReference(PART_ARG_SHAPE); } - Handle(GEOM_Function) GetPlane() { return _func->GetReference(PART_ARG_PLANE); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_IPipe.hxx b/src/GEOMImpl/GEOMImpl_IPipe.hxx deleted file mode 100644 index 4c104c5d4..000000000 --- a/src/GEOMImpl/GEOMImpl_IPipe.hxx +++ /dev/null @@ -1,24 +0,0 @@ -//NOTE: This is an intreface to a function for the Pipe creation. - - -#include "GEOM_Function.hxx" - -#define PIPE_ARG_BASE 1 -#define PIPE_ARG_PATH 2 - -class GEOMImpl_IPipe -{ - public: - - GEOMImpl_IPipe(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetBase (Handle(GEOM_Function) theBase) { _func->SetReference(PIPE_ARG_BASE, theBase); } - void SetPath (Handle(GEOM_Function) thePath) { _func->SetReference(PIPE_ARG_PATH, thePath); } - - Handle(GEOM_Function) GetBase() { return _func->GetReference(PIPE_ARG_BASE); } - Handle(GEOM_Function) GetPath() { return _func->GetReference(PIPE_ARG_PATH); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_IPlane.hxx b/src/GEOMImpl/GEOMImpl_IPlane.hxx deleted file mode 100644 index 2353decb1..000000000 --- a/src/GEOMImpl/GEOMImpl_IPlane.hxx +++ /dev/null @@ -1,47 +0,0 @@ -//NOTE: This is an intreface to a function for the vector creation. - - -#include "GEOM_Function.hxx" - -#define PLN_ARG_SIZE 1 - -#define PLN_ARG_PNT1 2 -#define PLN_ARG_PNT2 3 -#define PLN_ARG_PNT3 4 - -#define PLN_ARG_VEC 5 - -#define PLN_ARG_REF 6 - -class GEOMImpl_IPlane -{ - public: - - GEOMImpl_IPlane(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetSize(double theSize) { _func->SetReal(PLN_ARG_SIZE, theSize); } - - double GetSize() { return _func->GetReal(PLN_ARG_SIZE); } - - void SetPoint (Handle(GEOM_Function) theRef) { _func->SetReference(PLN_ARG_PNT1, theRef); } - void SetVector(Handle(GEOM_Function) theRef) { _func->SetReference(PLN_ARG_VEC , theRef); } - - void SetFace (Handle(GEOM_Function) theRef) { _func->SetReference(PLN_ARG_REF , theRef); } - - void SetPoint1(Handle(GEOM_Function) theRef) { _func->SetReference(PLN_ARG_PNT1, theRef); } - void SetPoint2(Handle(GEOM_Function) theRef) { _func->SetReference(PLN_ARG_PNT2, theRef); } - void SetPoint3(Handle(GEOM_Function) theRef) { _func->SetReference(PLN_ARG_PNT3, theRef); } - - Handle(GEOM_Function) GetPoint () { return _func->GetReference(PLN_ARG_PNT1); } - Handle(GEOM_Function) GetVector() { return _func->GetReference(PLN_ARG_VEC ); } - - Handle(GEOM_Function) GetFace () { return _func->GetReference(PLN_ARG_REF ); } - - Handle(GEOM_Function) GetPoint1() { return _func->GetReference(PLN_ARG_PNT1); } - Handle(GEOM_Function) GetPoint2() { return _func->GetReference(PLN_ARG_PNT2); } - Handle(GEOM_Function) GetPoint3() { return _func->GetReference(PLN_ARG_PNT3); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_IPoint.hxx b/src/GEOMImpl/GEOMImpl_IPoint.hxx deleted file mode 100755 index 61c424e0e..000000000 --- a/src/GEOMImpl/GEOMImpl_IPoint.hxx +++ /dev/null @@ -1,44 +0,0 @@ -//NOTE: This is an intreface to a function for the point creation. - - -#include "GEOM_Function.hxx" - -#define ARG_X 1 -#define ARG_Y 2 -#define ARG_Z 3 - -#define ARG_REF 4 - -#define ARG_PARAM 5 -#define ARG_CURVE 6 - -class GEOMImpl_IPoint -{ - public: - - GEOMImpl_IPoint(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetX(double theX) { _func->SetReal(ARG_X, theX); } - void SetY(double theY) { _func->SetReal(ARG_Y, theY); } - void SetZ(double theZ) { _func->SetReal(ARG_Z, theZ); } - - double GetX() { return _func->GetReal(ARG_X); } - double GetY() { return _func->GetReal(ARG_Y); } - double GetZ() { return _func->GetReal(ARG_Z); } - - void SetRef(Handle(GEOM_Function) theRefPoint) { _func->SetReference(ARG_REF, theRefPoint); } - - Handle(GEOM_Function) GetRef() { return _func->GetReference(ARG_REF); } - - void SetCurve(Handle(GEOM_Function) theRef) { _func->SetReference(ARG_CURVE, theRef); } - - Handle(GEOM_Function) GetCurve() { return _func->GetReference(ARG_CURVE); } - - void SetParameter(double theParam) { _func->SetReal(ARG_PARAM, theParam); } - - double GetParameter() { return _func->GetReal(ARG_PARAM); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_IPolyline.hxx b/src/GEOMImpl/GEOMImpl_IPolyline.hxx deleted file mode 100644 index 89f424823..000000000 --- a/src/GEOMImpl/GEOMImpl_IPolyline.hxx +++ /dev/null @@ -1,26 +0,0 @@ -//NOTE: This is an intreface to a function for the Polyline creation. - - -#include "GEOM_Function.hxx" - -#define POLY_ARG_LENG 1 -#define POLY_ARG_LAST 1 - -class GEOMImpl_IPolyline -{ - public: - - GEOMImpl_IPolyline(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetLength(int theLen) { _func->SetInteger(POLY_ARG_LENG, theLen); } - - void SetPoint(int theId, Handle(GEOM_Function) theP) { _func->SetReference(POLY_ARG_LAST + theId, theP); } - - int GetLength() { return _func->GetInteger(POLY_ARG_LENG); } - - Handle(GEOM_Function) GetPoint(int theId) { return _func->GetReference(POLY_ARG_LAST + theId); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_IPosition.hxx b/src/GEOMImpl/GEOMImpl_IPosition.hxx deleted file mode 100644 index 1e745a7c2..000000000 --- a/src/GEOMImpl/GEOMImpl_IPosition.hxx +++ /dev/null @@ -1,33 +0,0 @@ -//NOTE: This is an intreface to a function for the Setting In Position. - - -#include "GEOM_Function.hxx" - -#define POSITION_ARG_SHAPE 1 -#define POSITION_ARG_START_LCS 2 -#define POSITION_ARG_END_LCS 3 - -class GEOMImpl_IPosition -{ - public: - - GEOMImpl_IPosition(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetShape(Handle(GEOM_Function) theShape) { _func->SetReference(POSITION_ARG_SHAPE, theShape); } - - Handle(GEOM_Function) GetShape() { return _func->GetReference(POSITION_ARG_SHAPE); } - - void SetStartLCS(Handle(GEOM_Function) theStartLCS) - { _func->SetReference(POSITION_ARG_START_LCS, theStartLCS); } - - Handle(GEOM_Function) GetStartLCS() { return _func->GetReference(POSITION_ARG_START_LCS); } - - void SetEndLCS(Handle(GEOM_Function) theEndLCS) - { _func->SetReference(POSITION_ARG_END_LCS, theEndLCS); } - - Handle(GEOM_Function) GetEndLCS() { return _func->GetReference(POSITION_ARG_END_LCS); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_IPrism.hxx b/src/GEOMImpl/GEOMImpl_IPrism.hxx deleted file mode 100644 index a3da6d399..000000000 --- a/src/GEOMImpl/GEOMImpl_IPrism.hxx +++ /dev/null @@ -1,35 +0,0 @@ -//NOTE: This is an intreface to a function for the Prism creation. - - -#include "GEOM_Function.hxx" - -#define PRISM_ARG_H 1 -#define PRISM_ARG_VEC 2 -#define PRISM_ARG_BASE 3 -#define PRISM_ARG_PNT_F 4 -#define PRISM_ARG_PNT_L 5 - -class GEOMImpl_IPrism -{ - public: - - GEOMImpl_IPrism(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetBase (Handle(GEOM_Function) theRefBase ) { _func->SetReference(PRISM_ARG_BASE, theRefBase); } - void SetVector(Handle(GEOM_Function) theRefVector) { _func->SetReference(PRISM_ARG_VEC , theRefVector); } - void SetFirstPoint(Handle(GEOM_Function) thePoint) { _func->SetReference(PRISM_ARG_PNT_F, thePoint); } - void SetLastPoint (Handle(GEOM_Function) thePoint) { _func->SetReference(PRISM_ARG_PNT_L, thePoint); } - - Handle(GEOM_Function) GetBase () { return _func->GetReference(PRISM_ARG_BASE); } - Handle(GEOM_Function) GetVector() { return _func->GetReference(PRISM_ARG_VEC ); } - Handle(GEOM_Function) GetFirstPoint() { return _func->GetReference(PRISM_ARG_PNT_F ); } - Handle(GEOM_Function) GetLastPoint () { return _func->GetReference(PRISM_ARG_PNT_L ); } - - void SetH(double theH) { _func->SetReal(PRISM_ARG_H, theH); } - - double GetH() { return _func->GetReal(PRISM_ARG_H); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_IRevolution.hxx b/src/GEOMImpl/GEOMImpl_IRevolution.hxx deleted file mode 100644 index e630a6282..000000000 --- a/src/GEOMImpl/GEOMImpl_IRevolution.hxx +++ /dev/null @@ -1,31 +0,0 @@ -//NOTE: This is an intreface to a function for the Revolution creation. - - -#include "GEOM_Function.hxx" - -#define REVOL_ARG_ANGLE 1 -#define REVOL_ARG_AXIS 2 -#define REVOL_ARG_BASE 3 - -class GEOMImpl_IRevolution -{ - public: - - GEOMImpl_IRevolution(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetAngle(double theAngle) { _func->SetReal(REVOL_ARG_ANGLE, theAngle); } - - double GetAngle() { return _func->GetReal(REVOL_ARG_ANGLE); } - - void SetAxis(Handle(GEOM_Function) theRefAxis) { _func->SetReference(REVOL_ARG_AXIS, theRefAxis); } - - Handle(GEOM_Function) GetAxis() { return _func->GetReference(REVOL_ARG_AXIS); } - - void SetBase(Handle(GEOM_Function) theRefBase) { _func->SetReference(REVOL_ARG_BASE, theRefBase); } - - Handle(GEOM_Function) GetBase() { return _func->GetReference(REVOL_ARG_BASE); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_IRotate.hxx b/src/GEOMImpl/GEOMImpl_IRotate.hxx deleted file mode 100644 index 8b38e4dd8..000000000 --- a/src/GEOMImpl/GEOMImpl_IRotate.hxx +++ /dev/null @@ -1,47 +0,0 @@ -//NOTE: This is an intreface to a function for the Rotate operation. - - -#include "GEOM_Function.hxx" - -#define ROTATE_ANGLE 1 -#define ROTATE_AXIS 2 -#define ROTATE_ORGN 3 -#define ROTATE_STEP1 4 -#define ROTATE_NBITER1 5 -#define ROTATE_NBITER2 6 - -class GEOMImpl_IRotate -{ - public: - - GEOMImpl_IRotate(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetAngle(Standard_Real theAngle) { _func->SetReal(ROTATE_ANGLE, theAngle); } - - Standard_Real GetAngle() { return _func->GetReal(ROTATE_ANGLE); } - - void SetAxis(Handle(GEOM_Function) theVector) { _func->SetReference(ROTATE_AXIS, theVector); } - - Handle(GEOM_Function) GetAxis() { return _func->GetReference(ROTATE_AXIS); } - - void SetOriginal(Handle(GEOM_Function) theOriginal) { _func->SetReference(ROTATE_ORGN, theOriginal); } - - Handle(GEOM_Function) GetOriginal() { return _func->GetReference(ROTATE_ORGN); } - - void SetStep(double theStep) { return _func->SetReal(ROTATE_STEP1, theStep); } - - double GetStep() { return _func->GetReal(ROTATE_STEP1); } - - void SetNbIter1(int theNbIter) { _func->SetInteger(ROTATE_NBITER1, theNbIter); } - - int GetNbIter1() { return _func->GetInteger(ROTATE_NBITER1); } - - void SetNbIter2(int theNbIter) { _func->SetInteger(ROTATE_NBITER2, theNbIter); } - - int GetNbIter2() { return _func->GetInteger(ROTATE_NBITER2); } - - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_IScale.hxx b/src/GEOMImpl/GEOMImpl_IScale.hxx deleted file mode 100644 index 15905e7d1..000000000 --- a/src/GEOMImpl/GEOMImpl_IScale.hxx +++ /dev/null @@ -1,31 +0,0 @@ -//NOTE: This is an intreface to a function for the Scale creation. - - -#include "GEOM_Function.hxx" - -#define SCALE_ARG_SHAPE 1 -#define SCALE_ARG_VALUE 2 -#define SCALE_ARG_POINT 3 - -class GEOMImpl_IScale -{ - public: - - GEOMImpl_IScale(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetShape(Handle(GEOM_Function) theShape) { _func->SetReference(SCALE_ARG_SHAPE, theShape); } - - Handle(GEOM_Function) GetShape() { return _func->GetReference(SCALE_ARG_SHAPE); } - - void SetFactor(double theValue) { _func->SetReal(SCALE_ARG_VALUE, theValue); } - - double GetFactor() { return _func->GetReal(SCALE_ARG_VALUE); } - - void SetPoint(Handle(GEOM_Function) thePoint) { _func->SetReference(SCALE_ARG_POINT, thePoint); } - - Handle(GEOM_Function) GetPoint() { return _func->GetReference(SCALE_ARG_POINT); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_IShapes.hxx b/src/GEOMImpl/GEOMImpl_IShapes.hxx deleted file mode 100644 index 64845e7d8..000000000 --- a/src/GEOMImpl/GEOMImpl_IShapes.hxx +++ /dev/null @@ -1,55 +0,0 @@ -// NOTE: This is an intreface to a function for the Shapes -// (Wire, Face, Shell, Solid and Compound) creation. - - -#include "GEOM_Function.hxx" - -#include "TColStd_HSequenceOfTransient.hxx" -#include "TColStd_HArray1OfInteger.hxx" - -#define SHAPE_ARG_SHAPES 1 // for Wire, Shell, Solid and Compound - -#define SHAPE_ARG_BASE 2 // for Face, Solid and Sub-shape - -#define SHAPE_ARG_PLANAR 3 // for Face - -#define SHAPE_ARG_SUBTYPE 4 // for Sub-shape -#define SHAPE_ARG_INDICES 5 // for Sub-shape - -class GEOMImpl_IShapes -{ - public: - - GEOMImpl_IShapes(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetShapes(const Handle(TColStd_HSequenceOfTransient)& theShapes) - { _func->SetReferenceList(SHAPE_ARG_SHAPES, theShapes); } - - Handle(TColStd_HSequenceOfTransient) GetShapes() - { return _func->GetReferenceList(SHAPE_ARG_SHAPES); } - - void SetBase(Handle(GEOM_Function) theRefBase) - { _func->SetReference(SHAPE_ARG_BASE, theRefBase); } - - Handle(GEOM_Function) GetBase() { return _func->GetReference(SHAPE_ARG_BASE); } - - void SetIsPlanar(const Standard_Boolean isPlanarWanted) - { _func->SetInteger(SHAPE_ARG_PLANAR, isPlanarWanted ? 1 : 0); } - - Standard_Boolean GetIsPlanar() { return (_func->GetInteger(SHAPE_ARG_PLANAR) == 1); } - - void SetSubShapeType(const Standard_Integer theType) - { _func->SetInteger(SHAPE_ARG_SUBTYPE, theType); } - - Standard_Integer GetSubShapeType() { return _func->GetInteger(SHAPE_ARG_SUBTYPE); } - - void SetIndices(const Handle(TColStd_HArray1OfInteger)& theIndices) - { _func->SetIntegerArray(SHAPE_ARG_INDICES, theIndices); } - - Handle(TColStd_HArray1OfInteger) GetIndices() - { return _func->GetIntegerArray(SHAPE_ARG_INDICES); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_IShapesOperations.cxx b/src/GEOMImpl/GEOMImpl_IShapesOperations.cxx deleted file mode 100644 index 84e8bf302..000000000 --- a/src/GEOMImpl/GEOMImpl_IShapesOperations.cxx +++ /dev/null @@ -1,1957 +0,0 @@ -#include - -#include - -#include - -#include -#include -#include -#include - -#include -#include -#include - -#include - -#include -#include - -#include - -#include "utilities.h" -#include -#include - -#include -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -//#include - -#include // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC - -//============================================================================= -/*! - * constructor: - */ -//============================================================================= -GEOMImpl_IShapesOperations::GEOMImpl_IShapesOperations (GEOM_Engine* theEngine, int theDocID) -: GEOM_IOperations(theEngine, theDocID) -{ - MESSAGE("GEOMImpl_IShapesOperations::GEOMImpl_IShapesOperations"); -} - -//============================================================================= -/*! - * destructor - */ -//============================================================================= -GEOMImpl_IShapesOperations::~GEOMImpl_IShapesOperations() -{ - MESSAGE("GEOMImpl_IShapesOperations::~GEOMImpl_IShapesOperations"); -} - - -//============================================================================= -/*! - * MakeEdge - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IShapesOperations::MakeEdge - (Handle(GEOM_Object) thePnt1, Handle(GEOM_Object) thePnt2) -{ - SetErrorCode(KO); - - if (thePnt1.IsNull() || thePnt2.IsNull()) return NULL; - - //Add a new Edge object - Handle(GEOM_Object) anEdge = GetEngine()->AddObject(GetDocID(), GEOM_EDGE); - - //Add a new Vector function - Handle(GEOM_Function) aFunction = - anEdge->AddFunction(GEOMImpl_VectorDriver::GetID(), VECTOR_TWO_PNT); - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_VectorDriver::GetID()) return NULL; - - GEOMImpl_IVector aPI (aFunction); - - Handle(GEOM_Function) aRef1 = thePnt1->GetLastFunction(); - Handle(GEOM_Function) aRef2 = thePnt2->GetLastFunction(); - if (aRef1.IsNull() || aRef2.IsNull()) return NULL; - - aPI.SetPoint1(aRef1); - aPI.SetPoint2(aRef2); - - //Compute the Edge value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Vector driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << anEdge << " = geompy.MakeEdge(" - << thePnt1 << ", " << thePnt2 << ")"; - - SetErrorCode(OK); - return anEdge; -} - -//============================================================================= -/*! - * MakeWire - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IShapesOperations::MakeWire - (list theShapes) -{ - return MakeShape(theShapes, GEOM_WIRE, WIRE_EDGES, "MakeWire"); -} - -//============================================================================= -/*! - * MakeFace - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IShapesOperations::MakeFace (Handle(GEOM_Object) theWire, - const bool isPlanarWanted) -{ - SetErrorCode(KO); - - if (theWire.IsNull()) return NULL; - - //Add a new Face object - Handle(GEOM_Object) aFace = GetEngine()->AddObject(GetDocID(), GEOM_FACE); - - //Add a new Shape function for creation of a face from a wire - Handle(GEOM_Function) aFunction = - aFace->AddFunction(GEOMImpl_ShapeDriver::GetID(), FACE_WIRE); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_ShapeDriver::GetID()) return NULL; - - GEOMImpl_IShapes aCI (aFunction); - - Handle(GEOM_Function) aRefWire = theWire->GetLastFunction(); - - if (aRefWire.IsNull()) return NULL; - - aCI.SetBase(aRefWire); - aCI.SetIsPlanar(isPlanarWanted); - - //Compute the Face value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Shape driver failed to compute a face"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aFace << " = geompy.MakeFace(" - << theWire << ", " << (int)isPlanarWanted << ")"; - - SetErrorCode(OK); - return aFace; -} - -//============================================================================= -/*! - * MakeFaceWires - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IShapesOperations::MakeFaceWires - (list theShapes, - const bool isPlanarWanted) -{ - SetErrorCode(KO); - - //Add a new object - Handle(GEOM_Object) aShape = GetEngine()->AddObject(GetDocID(), GEOM_FACE); - - //Add a new function - Handle(GEOM_Function) aFunction = - aShape->AddFunction(GEOMImpl_ShapeDriver::GetID(), FACE_WIRES); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_ShapeDriver::GetID()) return NULL; - - GEOMImpl_IShapes aCI (aFunction); - - Handle(TColStd_HSequenceOfTransient) aShapesSeq = new TColStd_HSequenceOfTransient; - - // Shapes - list::iterator it = theShapes.begin(); - for (; it != theShapes.end(); it++) { - Handle(GEOM_Function) aRefSh = (*it)->GetLastFunction(); - if (aRefSh.IsNull()) { - SetErrorCode("NULL argument shape for the face construction"); - return NULL; - } - aShapesSeq->Append(aRefSh); - } - aCI.SetShapes(aShapesSeq); - - aCI.SetIsPlanar(isPlanarWanted); - - //Compute the shape - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Shape driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump pd (aFunction); - pd << aShape << " = geompy.MakeFaceWires(["; - - // Shapes - it = theShapes.begin(); - if (it != theShapes.end()) { - pd << (*it++); - while (it != theShapes.end()) { - pd << ", " << (*it++); - } - } - pd << "], " << (int)isPlanarWanted << ")"; - - SetErrorCode(OK); - return aShape; -} - -//============================================================================= -/*! - * MakeShell - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IShapesOperations::MakeShell - (list theShapes) -{ - return MakeShape(theShapes, GEOM_SHELL, SHELL_FACES, "MakeShell"); -} - -//============================================================================= -/*! - * MakeSolidShells - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IShapesOperations::MakeSolidShells - (list theShapes) -{ - return MakeShape(theShapes, GEOM_SOLID, SOLID_SHELLS, "MakeSolidShells"); -} - -//============================================================================= -/*! - * MakeSolidShell - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IShapesOperations::MakeSolidShell (Handle(GEOM_Object) theShell) -{ - SetErrorCode(KO); - - if (theShell.IsNull()) return NULL; - - //Add a new Solid object - Handle(GEOM_Object) aSolid = GetEngine()->AddObject(GetDocID(), GEOM_SOLID); - - //Add a new Solid function for creation of a solid from a shell - Handle(GEOM_Function) aFunction = - aSolid->AddFunction(GEOMImpl_ShapeDriver::GetID(), SOLID_SHELL); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_ShapeDriver::GetID()) return NULL; - - GEOMImpl_IShapes aCI (aFunction); - - Handle(GEOM_Function) aRefShell = theShell->GetLastFunction(); - - if (aRefShell.IsNull()) return NULL; - - aCI.SetBase(aRefShell); - - //Compute the Solid value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Solid driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aSolid - << " = geompy.MakeSolid(" << theShell << ")"; - - SetErrorCode(OK); - return aSolid; -} - -//============================================================================= -/*! - * MakeCompound - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IShapesOperations::MakeCompound - (list theShapes) -{ - return MakeShape(theShapes, GEOM_COMPOUND, COMPOUND_SHAPES, "MakeCompound"); -} - -//============================================================================= -/*! - * MakeShape - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IShapesOperations::MakeShape - (list theShapes, - const Standard_Integer theObjectType, - const Standard_Integer theFunctionType, - const TCollection_AsciiString& theMethodName) -{ - SetErrorCode(KO); - - //Add a new object - Handle(GEOM_Object) aShape = GetEngine()->AddObject(GetDocID(), theObjectType); - - //Add a new function - Handle(GEOM_Function) aFunction = - aShape->AddFunction(GEOMImpl_ShapeDriver::GetID(), theFunctionType); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_ShapeDriver::GetID()) return NULL; - - GEOMImpl_IShapes aCI (aFunction); - - Handle(TColStd_HSequenceOfTransient) aShapesSeq = new TColStd_HSequenceOfTransient; - - // Shapes - list::iterator it = theShapes.begin(); - for (; it != theShapes.end(); it++) { - Handle(GEOM_Function) aRefSh = (*it)->GetLastFunction(); - if (aRefSh.IsNull()) { - SetErrorCode("NULL argument shape for the shape construction"); - return NULL; - } - aShapesSeq->Append(aRefSh); - } - aCI.SetShapes(aShapesSeq); - - //Compute the shape - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Shape driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump pd (aFunction); - pd << aShape << " = geompy." << theMethodName.ToCString() << "(["; - - // Shapes - it = theShapes.begin(); - if (it != theShapes.end()) { - pd << (*it++); - while (it != theShapes.end()) { - pd << ", " << (*it++); - } - } - pd << "])"; - - SetErrorCode(OK); - return aShape; -} - -//============================================================================= -/*! - * MakeGlueFaces - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IShapesOperations::MakeGlueFaces - (Handle(GEOM_Object) theShape, - const Standard_Real theTolerance) -{ - SetErrorCode(KO); - - if (theShape.IsNull()) return NULL; - - //Add a new Glued object - Handle(GEOM_Object) aGlued = GetEngine()->AddObject(GetDocID(), GEOM_GLUED); - - //Add a new Glue function - Handle(GEOM_Function) aFunction; - aFunction = aGlued->AddFunction(GEOMImpl_GlueDriver::GetID(), GLUE_FACES); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_GlueDriver::GetID()) return NULL; - - GEOMImpl_IGlue aCI (aFunction); - - Handle(GEOM_Function) aRefShape = theShape->GetLastFunction(); - if (aRefShape.IsNull()) return NULL; - - aCI.SetBase(aRefShape); - aCI.SetTolerance(theTolerance); - - //Compute the sub-shape value - Standard_Boolean isWarning = Standard_False; - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Shape driver failed to glue faces"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - // to provide warning - if (!aFunction->GetValue().IsNull()) { - isWarning = Standard_True; - } else { - return NULL; - } - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aGlued << " = geompy.MakeGlueFaces(" - << theShape << ", " << theTolerance << ")"; - - // to provide warning - if (!isWarning) SetErrorCode(OK); - return aGlued; -} - -//============================================================================= -/*! - * MakeExplode - */ -//============================================================================= -Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::MakeExplode - (Handle(GEOM_Object) theShape, - const Standard_Integer theShapeType, - const Standard_Boolean isSorted) -{ -// OSD_Timer timer1, timer2, timer3, timer4; -// timer1.Start(); - - SetErrorCode(KO); - - if (theShape.IsNull()) return NULL; - TopoDS_Shape aShape = theShape->GetValue(); - if (aShape.IsNull()) return NULL; - - Handle(TColStd_HSequenceOfTransient) aSeq = new TColStd_HSequenceOfTransient; - Handle(GEOM_Object) anObj; - Handle(GEOM_Function) aFunction; - TopTools_MapOfShape mapShape; - TopTools_ListOfShape listShape; - - if (aShape.ShapeType() == TopAbs_COMPOUND && - (TopAbs_ShapeEnum(theShapeType) == TopAbs_SHAPE || - TopAbs_ShapeEnum(theShapeType) == TopAbs_COMPSOLID || - TopAbs_ShapeEnum(theShapeType) == TopAbs_COMPOUND)) { - TopoDS_Iterator It (aShape, Standard_True, Standard_True); - for (; It.More(); It.Next()) { - if (mapShape.Add(It.Value())) { - if (TopAbs_ShapeEnum(theShapeType) == TopAbs_SHAPE || - TopAbs_ShapeEnum(theShapeType) == It.Value().ShapeType()) { - listShape.Append(It.Value()); - } - } - } - } else { - TopExp_Explorer exp (aShape, TopAbs_ShapeEnum(theShapeType)); - for (; exp.More(); exp.Next()) - if (mapShape.Add(exp.Current())) - listShape.Append(exp.Current()); - } - - if (listShape.IsEmpty()) { - SetErrorCode("The given shape has no sub-shapes of the requested type"); - return aSeq; - } - -// timer1.Stop(); -// timer2.Start(); - - if (isSorted) - SortShapes(listShape); - -// timer2.Stop(); -// timer3.Start(); - - TopTools_IndexedMapOfShape anIndices; - TopExp::MapShapes(aShape, anIndices); - Handle(TColStd_HArray1OfInteger) anArray; - - TopTools_ListIteratorOfListOfShape itSub (listShape); - TCollection_AsciiString anAsciiList, anEntry; - for (int index = 1; itSub.More(); itSub.Next(), ++index) { - TopoDS_Shape aValue = itSub.Value(); - anArray = new TColStd_HArray1OfInteger(1,1); - anArray->SetValue(1, anIndices.FindIndex(aValue)); - anObj = GetEngine()->AddSubShape(theShape, anArray); - aSeq->Append(anObj); - - // for python command - TDF_Tool::Entry(anObj->GetEntry(), anEntry); - anAsciiList += anEntry; - anAsciiList += ","; - } - - //Make a Python command - anAsciiList.Trunc(anAsciiList.Length() - 1); - - aFunction = theShape->GetLastFunction(); - TCollection_AsciiString anOldDescr = aFunction->GetDescription(); - - GEOM::TPythonDump pd (aFunction); - pd << anOldDescr.ToCString() << "\n\t[" << anAsciiList.ToCString(); - pd << "] = geompy.SubShapeAll" << (isSorted ? "Sorted(" : "("); - pd << theShape << ", " << theShapeType << ")"; - - SetErrorCode(OK); - -// timer4.Stop(); - -// cout << "Explosure takes:" << endl; -// timer1.Show(); -// cout << "Sorting takes:" << endl; -// timer2.Show(); -// cout << "Sub-shapes addition takes:" << endl; -// timer3.Show(); -// cout << "Update Description takes:" << endl; -// timer4.Show(); - - return aSeq; -} - -//============================================================================= -/*! - * GetSubShapeAllIDs - */ -//============================================================================= -Handle(TColStd_HSequenceOfInteger) GEOMImpl_IShapesOperations::SubShapeAllIDs - (Handle(GEOM_Object) theShape, - const Standard_Integer theShapeType, - const Standard_Boolean isSorted) -{ - SetErrorCode(KO); - - if (theShape.IsNull()) return NULL; - TopoDS_Shape aShape = theShape->GetValue(); - if (aShape.IsNull()) return NULL; - - Handle(TColStd_HSequenceOfInteger) aSeq = new TColStd_HSequenceOfInteger; - TopTools_MapOfShape mapShape; - TopTools_ListOfShape listShape; - - if (aShape.ShapeType() == TopAbs_COMPOUND && - (TopAbs_ShapeEnum(theShapeType) == TopAbs_SHAPE || - TopAbs_ShapeEnum(theShapeType) == TopAbs_COMPSOLID || - TopAbs_ShapeEnum(theShapeType) == TopAbs_COMPOUND)) { - TopoDS_Iterator It (aShape, Standard_True, Standard_True); - for (; It.More(); It.Next()) { - if (mapShape.Add(It.Value())) { - if (TopAbs_ShapeEnum(theShapeType) == TopAbs_SHAPE || - TopAbs_ShapeEnum(theShapeType) == It.Value().ShapeType()) { - listShape.Append(It.Value()); - } - } - } - } else { - TopExp_Explorer exp (aShape, TopAbs_ShapeEnum(theShapeType)); - for (; exp.More(); exp.Next()) - if (mapShape.Add(exp.Current())) - listShape.Append(exp.Current()); - } - - if (listShape.IsEmpty()) { - SetErrorCode("The given shape has no sub-shapes of the requested type"); - return aSeq; - } - - if (isSorted) - SortShapes(listShape); - - TopTools_IndexedMapOfShape anIndices; - TopExp::MapShapes(aShape, anIndices); - Handle(TColStd_HArray1OfInteger) anArray; - - TopTools_ListIteratorOfListOfShape itSub (listShape); - for (int index = 1; itSub.More(); itSub.Next(), ++index) { - TopoDS_Shape aValue = itSub.Value(); - aSeq->Append(anIndices.FindIndex(aValue)); - } - - Handle(GEOM_Function) aFunction = theShape->GetLastFunction(); - TCollection_AsciiString anOldDescr = aFunction->GetDescription(); - - //Make a Python command - GEOM::TPythonDump pd (aFunction); - pd << anOldDescr.ToCString() << "\n\tlistSubShapeIDs = geompy.SubShapeAll"; - pd << (isSorted ? "SortedIDs(" : "IDs("); - pd << theShape << ", " << theShapeType << ")"; - - SetErrorCode(OK); - return aSeq; -} - -//============================================================================= -/*! - * GetSubShape - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IShapesOperations::GetSubShape - (Handle(GEOM_Object) theMainShape, - const Standard_Integer theID) -{ - SetErrorCode(KO); - - if (theMainShape.IsNull()) return NULL; - - Handle(TColStd_HArray1OfInteger) anArray = new TColStd_HArray1OfInteger(1,1); - anArray->SetValue(1, theID); - Handle(GEOM_Object) anObj = GetEngine()->AddSubShape(theMainShape, anArray,true); - if (anObj.IsNull()) { - SetErrorCode("Can not get a sub-shape with the given ID"); - return NULL; - } - - Handle(GEOM_Function) aFunction = anObj->GetLastFunction(); - - //Make a Python command - GEOM::TPythonDump(aFunction) << anObj << " = geompy.GetSubShape(" - << theMainShape << ", [" << theID << "])"; - - SetErrorCode(OK); - return anObj; -} - - -//============================================================================= -/*! - * NumberOfFaces - */ -//============================================================================= -Standard_Integer GEOMImpl_IShapesOperations::NumberOfFaces (Handle(GEOM_Object) theShape) -{ - SetErrorCode(KO); - - Standard_Integer nb = 0; - - if (theShape.IsNull()) return -1; - TopoDS_Shape aShape = theShape->GetValue(); - if (aShape.IsNull()) return -1; - - TopTools_MapOfShape mapShape; - - TopExp_Explorer exp (aShape, TopAbs_FACE); - for (; exp.More(); exp.Next()) - if (mapShape.Add(exp.Current())) - nb++; - - SetErrorCode(OK); - return nb; -} - -//============================================================================= -/*! - * NumberOfEdges - */ -//============================================================================= -Standard_Integer GEOMImpl_IShapesOperations::NumberOfEdges (Handle(GEOM_Object) theShape) -{ - SetErrorCode(KO); - - Standard_Integer nb = 0; - - if (theShape.IsNull()) return -1; - TopoDS_Shape aShape = theShape->GetValue(); - if (aShape.IsNull()) return -1; - - TopTools_MapOfShape mapShape; - - TopExp_Explorer exp (aShape, TopAbs_EDGE); - for (; exp.More(); exp.Next()) - if (mapShape.Add(exp.Current())) - nb++; - - SetErrorCode(OK); - return nb; -} - -//============================================================================= -/*! - * ReverseShape - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IShapesOperations::ReverseShape(Handle(GEOM_Object) theShape) -{ - SetErrorCode(KO); - - if (theShape.IsNull()) return NULL; - - //Add a new reversed object - Handle(GEOM_Object) aReversed = GetEngine()->AddObject(GetDocID(), theShape->GetType()); - - //Add a new Revese function - Handle(GEOM_Function) aFunction; - aFunction = aReversed->AddFunction(GEOMImpl_ShapeDriver::GetID(), REVERSE_ORIENTATION); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_ShapeDriver::GetID()) return NULL; - - GEOMImpl_IShapes aSI (aFunction); - - Handle(GEOM_Function) aRefShape = theShape->GetLastFunction(); - if (aRefShape.IsNull()) return NULL; - - aSI.SetBase(aRefShape); - - //Compute the sub-shape value - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Shape driver failed to reverse shape"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aReversed - << " = geompy.ChangeOrientation(" << theShape << ")"; - - SetErrorCode(OK); - return aReversed; -} - -//============================================================================= -/*! - * GetFreeFacesIDs - */ -//============================================================================= -Handle(TColStd_HSequenceOfInteger) GEOMImpl_IShapesOperations::GetFreeFacesIDs - (Handle(GEOM_Object) theShape) -{ - SetErrorCode(KO); - - if (theShape.IsNull()) return NULL; - TopoDS_Shape aShape = theShape->GetValue(); - if (aShape.IsNull()) return NULL; - - Handle(TColStd_HSequenceOfInteger) aSeq = new TColStd_HSequenceOfInteger; - - TopTools_IndexedDataMapOfShapeListOfShape mapFaceBlocks; - GEOMImpl_Block6Explorer::MapShapesAndAncestors - (aShape, TopAbs_FACE, TopAbs_SOLID, mapFaceBlocks); - - Standard_Integer ind = 1, nbFaces = mapFaceBlocks.Extent(); - - if (nbFaces == 0) { - SetErrorCode("The given shape has no faces"); - return aSeq; - } - - TopTools_IndexedMapOfShape anIndices; - TopExp::MapShapes(aShape, anIndices); - - Standard_Integer id; - for (; ind <= nbFaces; ind++) { - if (mapFaceBlocks.FindFromIndex(ind).Extent() != 2) { - id = anIndices.FindIndex(mapFaceBlocks.FindKey(ind)); - aSeq->Append(id); - } - } - - //The explode doesn't change object so no new function is required. - Handle(GEOM_Function) aFunction = theShape->GetLastFunction(); - TCollection_AsciiString anOldDescr = aFunction->GetDescription(); - - //Make a Python command - GEOM::TPythonDump(aFunction) << anOldDescr.ToCString() - << "\n\tlistFreeFacesIDs = geompy.GetFreeFacesIDs(" << theShape << ")"; - - SetErrorCode(OK); - return aSeq; -} - -//============================================================================= -/*! - * GetSharedShapes - */ -//============================================================================= -Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::GetSharedShapes - (Handle(GEOM_Object) theShape1, - Handle(GEOM_Object) theShape2, - const Standard_Integer theShapeType) -{ - SetErrorCode(KO); - - if (theShape1.IsNull() || theShape2.IsNull()) return NULL; - - TopoDS_Shape aShape1 = theShape1->GetValue(); - TopoDS_Shape aShape2 = theShape2->GetValue(); - - if (aShape1.IsNull() || aShape2.IsNull()) return NULL; - - TopTools_IndexedMapOfShape anIndices; - TopExp::MapShapes(aShape1, anIndices); - Handle(TColStd_HArray1OfInteger) anArray; - - TopTools_IndexedMapOfShape mapShape1; - TopExp::MapShapes(aShape1, TopAbs_ShapeEnum(theShapeType), mapShape1); - - Handle(GEOM_Object) anObj; - Handle(TColStd_HSequenceOfTransient) aSeq = new TColStd_HSequenceOfTransient; - TCollection_AsciiString anAsciiList, anEntry; - - TopTools_MapOfShape mapShape2; - TopExp_Explorer exp (aShape2, TopAbs_ShapeEnum(theShapeType)); - for (; exp.More(); exp.Next()) { - TopoDS_Shape aSS = exp.Current(); - if (mapShape2.Add(aSS) && mapShape1.Contains(aSS)) { - anArray = new TColStd_HArray1OfInteger(1,1); - anArray->SetValue(1, anIndices.FindIndex(aSS)); - anObj = GetEngine()->AddSubShape(theShape1, anArray); - aSeq->Append(anObj); - - // for python command - TDF_Tool::Entry(anObj->GetEntry(), anEntry); - anAsciiList += anEntry; - anAsciiList += ","; - } - } - - if (aSeq->IsEmpty()) { - SetErrorCode("The given shapes have no shared sub-shapes of the requested type"); - return aSeq; - } - - //Make a Python command - anAsciiList.Trunc(anAsciiList.Length() - 1); - - Handle(GEOM_Function) aFunction = anObj->GetLastFunction(); - - GEOM::TPythonDump(aFunction) << "[" << anAsciiList.ToCString() - << "] = geompy.GetSharedShapes(" << theShape1 << ", " - << theShape2 << ", " << theShapeType << ")"; - - SetErrorCode(OK); - return aSeq; -} - -//============================================================================= -/*! - * - */ -//============================================================================= -static GEOM::TPythonDump& operator<< (GEOM::TPythonDump& theDump, - const GEOMAlgo_State theState) -{ - switch (theState) { - case GEOMAlgo_ST_IN: - theDump << "geompy.GEOM.ST_IN"; - break; - case GEOMAlgo_ST_OUT: - theDump << "geompy.GEOM.ST_OUT"; - break; - case GEOMAlgo_ST_ON: - theDump << "geompy.GEOM.ST_ON"; - break; - case GEOMAlgo_ST_ONIN: - theDump << "geompy.GEOM.ST_ONIN"; - break; - case GEOMAlgo_ST_ONOUT: - theDump << "geompy.GEOM.ST_ONOUT"; - break; - default: - theDump << "geompy.GEOM.ST_UNKNOWN"; - break; - } - return theDump; -} - -//============================================================================= -/*! - * GetShapesOnPlane - */ -//============================================================================= -Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::GetShapesOnPlane - (const Handle(GEOM_Object)& theShape, - const Standard_Integer theShapeType, - const Handle(GEOM_Object)& theAx1, - const GEOMAlgo_State theState) -{ - SetErrorCode(KO); - -// MESSAGE("--------------------------- GetShapesOnPlane phase 1 takes:"); -// OSD_Timer timer1; -// timer1.Start(); - - if (theShape.IsNull() || theAx1.IsNull()) return NULL; - - TopoDS_Shape aShape = theShape->GetValue(); - TopoDS_Shape anAx1 = theAx1->GetValue(); - - if (aShape.IsNull() || anAx1.IsNull()) return NULL; - - TopAbs_ShapeEnum aShapeType = TopAbs_ShapeEnum(theShapeType); - if (aShapeType != TopAbs_VERTEX && - aShapeType != TopAbs_EDGE && - aShapeType != TopAbs_FACE && - aShapeType != TopAbs_SOLID) { - SetErrorCode("Only solids, vertices, edges or faces can be found by this method"); - return NULL; - } - - // Create plane - if (anAx1.ShapeType() != TopAbs_EDGE) return NULL; - TopoDS_Edge anEdge = TopoDS::Edge(anAx1); - TopoDS_Vertex V1, V2; - TopExp::Vertices(anEdge, V1, V2, Standard_True); - if (V1.IsNull() || V2.IsNull()) { - SetErrorCode("Bad edge given for the plane normal vector"); - return NULL; - } - gp_Pnt aLoc = BRep_Tool::Pnt(V1); - gp_Vec aVec (aLoc, BRep_Tool::Pnt(V2)); - if (aVec.Magnitude() < Precision::Confusion()) { - SetErrorCode("Vector with null magnitude given"); - return NULL; - } - - Handle(Geom_Plane) aPlane = new Geom_Plane(aLoc, aVec); - - // Check presence of triangulation, build if need - if (!CheckTriangulation(aShape)) - return NULL; - - // Call algo - GEOMAlgo_FinderShapeOn1 aFinder; - Standard_Real aTol = 0.0001; // default value - - aFinder.SetShape(aShape); - aFinder.SetTolerance(aTol); - aFinder.SetSurface(aPlane); - aFinder.SetShapeType(aShapeType); - aFinder.SetState(theState); - - // Sets the minimal number of inner points for the faces that do not have own - // inner points at all (for e.g. rectangular planar faces have just 2 triangles). - // Default value=3 - aFinder.SetNbPntsMin(3); - // Sets the maximal number of inner points for edges or faces. - // It is usefull for the cases when this number is very big (e.g =2000) to improve - // the performance. If this value =0, all inner points will be taken into account. - // Default value=0 - aFinder.SetNbPntsMax(100); - -// timer1.Stop(); -// timer1.Show(); - -// MESSAGE("--------------------------- Perform on Plane takes:"); -// timer1.Reset(); -// timer1.Start(); - aFinder.Perform(); -// timer1.Stop(); -// timer1.Show(); - -// MESSAGE("--------------------------- GetShapesOnPlane phase 3 takes:"); -// timer1.Reset(); -// timer1.Start(); - - // Interprete results - Standard_Integer iErr = aFinder.ErrorStatus(); - // the detailed description of error codes is in GEOMAlgo_FinderShapeOn1.cxx - if (iErr) { - MESSAGE(" iErr : " << iErr); - TCollection_AsciiString aMsg (" iErr : "); - aMsg += TCollection_AsciiString(iErr); - SetErrorCode(aMsg); - return NULL; - } - Standard_Integer iWrn = aFinder.WarningStatus(); - // the detailed description of warning codes is in GEOMAlgo_FinderShapeOn1.cxx - if (iWrn) { - MESSAGE(" *** iWrn : " << iWrn); - } - - const TopTools_ListOfShape& listSS = aFinder.Shapes(); // the result - - if (listSS.Extent() < 1) { - SetErrorCode("Not a single sub-shape of the requested type found on the given plane"); - return NULL; - } - -// timer1.Stop(); -// timer1.Show(); - -// MESSAGE("--------------------------- GetShapesOnPlane phase 4 takes:"); -// timer1.Reset(); -// timer1.Start(); - - // Fill sequence of objects - TopTools_IndexedMapOfShape anIndices; - TopExp::MapShapes(aShape, anIndices); - - Handle(GEOM_Object) anObj; - Handle(TColStd_HArray1OfInteger) anArray; - Handle(TColStd_HSequenceOfTransient) aSeq = new TColStd_HSequenceOfTransient; - TCollection_AsciiString anAsciiList, anEntry; - - TopTools_ListIteratorOfListOfShape itSub (listSS); - for (int index = 1; itSub.More(); itSub.Next(), ++index) { - int id = anIndices.FindIndex(itSub.Value()); - anArray = new TColStd_HArray1OfInteger(1,1); - anArray->SetValue(1, id); - anObj = GetEngine()->AddSubShape(theShape, anArray); - aSeq->Append(anObj); - - // for python command - TDF_Tool::Entry(anObj->GetEntry(), anEntry); - anAsciiList += anEntry; - anAsciiList += ","; - } - -// timer1.Stop(); -// timer1.Show(); - -// MESSAGE("--------------------------- GetShapesOnPlane phase 5 takes:"); -// timer1.Reset(); -// timer1.Start(); - - // Make a Python command - anAsciiList.Trunc(anAsciiList.Length() - 1); - - Handle(GEOM_Function) aFunction = anObj->GetLastFunction(); - - GEOM::TPythonDump(aFunction) << "[" << anAsciiList.ToCString() - << "] = geompy.GetShapesOnPlane(" << theShape << ", " - << theShapeType << ", " << theAx1 << ", " << theState << ")"; - - SetErrorCode(OK); - return aSeq; -} - -//============================================================================= -/*! - * GetShapesOnCylinder - */ -//============================================================================= -Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::GetShapesOnCylinder - (const Handle(GEOM_Object)& theShape, - const Standard_Integer theShapeType, - const Handle(GEOM_Object)& theAxis, - const Standard_Real theRadius, - const GEOMAlgo_State theState) -{ - SetErrorCode(KO); - - if (theShape.IsNull() || theAxis.IsNull()) return NULL; - - TopoDS_Shape aShape = theShape->GetValue(); - TopoDS_Shape anAxis = theAxis->GetValue(); - - if (aShape.IsNull() || anAxis.IsNull()) return NULL; - - TopAbs_ShapeEnum aShapeType = TopAbs_ShapeEnum(theShapeType); - if (aShapeType != TopAbs_VERTEX && - aShapeType != TopAbs_EDGE && - aShapeType != TopAbs_FACE && - aShapeType != TopAbs_SOLID) { - SetErrorCode("Only solids, vertices, edges or faces can be found by this method"); - return NULL; - } - - //Axis of the cylinder - if (anAxis.ShapeType() != TopAbs_EDGE) { - SetErrorCode("Not an edge given for the axis"); - return NULL; - } - TopoDS_Edge anEdge = TopoDS::Edge(anAxis); - TopoDS_Vertex V1, V2; - TopExp::Vertices(anEdge, V1, V2, Standard_True); - if (V1.IsNull() || V2.IsNull()) { - SetErrorCode("Bad edge given for the axis"); - return NULL; - } - gp_Pnt aLoc = BRep_Tool::Pnt(V1); - gp_Vec aVec (aLoc, BRep_Tool::Pnt(V2)); - if (aVec.Magnitude() < Precision::Confusion()) { - SetErrorCode("Vector with null magnitude given"); - return NULL; - } - - gp_Ax3 anAx3 (aLoc, aVec); - Handle(Geom_CylindricalSurface) aCylinder = - new Geom_CylindricalSurface(anAx3, theRadius); - - // Check presence of triangulation, build if need - if (!CheckTriangulation(aShape)) - return NULL; - - // Call algo - GEOMAlgo_FinderShapeOn1 aFinder; - Standard_Real aTol = 0.0001; // default value - - aFinder.SetShape(aShape); - aFinder.SetTolerance(aTol); - aFinder.SetSurface(aCylinder); - aFinder.SetShapeType(aShapeType); - aFinder.SetState(theState); - - aFinder.SetNbPntsMin(3); - aFinder.SetNbPntsMax(100); - - aFinder.Perform(); - - // Interprete results - Standard_Integer iErr = aFinder.ErrorStatus(); - // the detailed description of error codes is in GEOMAlgo_FinderShapeOn1.cxx - if (iErr) { - MESSAGE(" iErr : " << iErr); - TCollection_AsciiString aMsg (" iErr : "); - aMsg += TCollection_AsciiString(iErr); - SetErrorCode(aMsg); - return NULL; - } - Standard_Integer iWrn = aFinder.WarningStatus(); - // the detailed description of warning codes is in GEOMAlgo_FinderShapeOn1.cxx - if (iWrn) { - MESSAGE(" *** iWrn : " << iWrn); - } - - const TopTools_ListOfShape& listSS = aFinder.Shapes(); // the result - - if (listSS.Extent() < 1) { - SetErrorCode("Not a single sub-shape of the requested type found on the given cylinder"); - return NULL; - } - - // Fill sequence of objects - TopTools_IndexedMapOfShape anIndices; - TopExp::MapShapes(aShape, anIndices); - - Handle(GEOM_Object) anObj; - Handle(TColStd_HArray1OfInteger) anArray; - Handle(TColStd_HSequenceOfTransient) aSeq = new TColStd_HSequenceOfTransient; - TCollection_AsciiString anAsciiList, anEntry; - - TopTools_ListIteratorOfListOfShape itSub (listSS); - for (int index = 1; itSub.More(); itSub.Next(), ++index) { - int id = anIndices.FindIndex(itSub.Value()); - anArray = new TColStd_HArray1OfInteger(1,1); - anArray->SetValue(1, id); - anObj = GetEngine()->AddSubShape(theShape, anArray); - aSeq->Append(anObj); - - // for python command - TDF_Tool::Entry(anObj->GetEntry(), anEntry); - anAsciiList += anEntry; - anAsciiList += ","; - } - - // Make a Python command - anAsciiList.Trunc(anAsciiList.Length() - 1); - - Handle(GEOM_Function) aFunction = anObj->GetLastFunction(); - - GEOM::TPythonDump(aFunction) << "[" << anAsciiList.ToCString() - << "] = geompy.GetShapesOnCylinder(" << theShape << ", " << theShapeType - << ", " << theAxis << ", " << theRadius << ", " << theState << ")"; - - SetErrorCode(OK); - return aSeq; -} - -//============================================================================= -/*! - * GetShapesOnSphere - */ -//============================================================================= -Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::GetShapesOnSphere - (const Handle(GEOM_Object)& theShape, - const Standard_Integer theShapeType, - const Handle(GEOM_Object)& theCenter, - const Standard_Real theRadius, - const GEOMAlgo_State theState) -{ - SetErrorCode(KO); - - if (theShape.IsNull() || theCenter.IsNull()) return NULL; - - TopoDS_Shape aShape = theShape->GetValue(); - TopoDS_Shape aCenter = theCenter->GetValue(); - - if (aShape.IsNull() || aCenter.IsNull()) return NULL; - - TopAbs_ShapeEnum aShapeType = TopAbs_ShapeEnum(theShapeType); - if (aShapeType != TopAbs_VERTEX && - aShapeType != TopAbs_EDGE && - aShapeType != TopAbs_FACE && - aShapeType != TopAbs_SOLID) { - SetErrorCode("Only solids, vertices, edges or faces can be found by this method"); - return NULL; - } - - // Center of the sphere - if (aCenter.ShapeType() != TopAbs_VERTEX) return NULL; - gp_Pnt aLoc = BRep_Tool::Pnt(TopoDS::Vertex(aCenter)); - - gp_Ax3 anAx3 (aLoc, gp::DZ()); - Handle(Geom_SphericalSurface) aSphere = - new Geom_SphericalSurface(anAx3, theRadius); - - // Check presence of triangulation, build if need - if (!CheckTriangulation(aShape)) - return NULL; - - // Call algo - GEOMAlgo_FinderShapeOn1 aFinder; - Standard_Real aTol = 0.0001; // default value - - aFinder.SetShape(aShape); - aFinder.SetTolerance(aTol); - aFinder.SetSurface(aSphere); - aFinder.SetShapeType(aShapeType); - aFinder.SetState(theState); - - aFinder.SetNbPntsMin(3); - aFinder.SetNbPntsMax(100); - - aFinder.Perform(); - - // Interprete results - Standard_Integer iErr = aFinder.ErrorStatus(); - // the detailed description of error codes is in GEOMAlgo_FinderShapeOn1.cxx - if (iErr) { - MESSAGE(" iErr : " << iErr); - TCollection_AsciiString aMsg (" iErr : "); - aMsg += TCollection_AsciiString(iErr); - SetErrorCode(aMsg); - return NULL; - } - Standard_Integer iWrn = aFinder.WarningStatus(); - // the detailed description of warning codes is in GEOMAlgo_FinderShapeOn1.cxx - if (iWrn) { - MESSAGE(" *** iWrn : " << iWrn); - } - - const TopTools_ListOfShape& listSS = aFinder.Shapes(); // the result - - if (listSS.Extent() < 1) { - SetErrorCode("Not a single sub-shape of the requested type found on the given sphere"); - return NULL; - } - - // Fill sequence of objects - TopTools_IndexedMapOfShape anIndices; - TopExp::MapShapes(aShape, anIndices); - - Handle(GEOM_Object) anObj; - Handle(TColStd_HArray1OfInteger) anArray; - Handle(TColStd_HSequenceOfTransient) aSeq = new TColStd_HSequenceOfTransient; - TCollection_AsciiString anAsciiList, anEntry; - - TopTools_ListIteratorOfListOfShape itSub (listSS); - for (int index = 1; itSub.More(); itSub.Next(), ++index) { - int id = anIndices.FindIndex(itSub.Value()); - anArray = new TColStd_HArray1OfInteger(1,1); - anArray->SetValue(1, id); - anObj = GetEngine()->AddSubShape(theShape, anArray); - aSeq->Append(anObj); - - // for python command - TDF_Tool::Entry(anObj->GetEntry(), anEntry); - anAsciiList += anEntry; - anAsciiList += ","; - } - - // Make a Python command - anAsciiList.Trunc(anAsciiList.Length() - 1); - - Handle(GEOM_Function) aFunction = anObj->GetLastFunction(); - - GEOM::TPythonDump(aFunction) << "[" << anAsciiList.ToCString() - << "] = geompy.GetShapesOnSphere(" << theShape << ", " << theShapeType - << ", " << theCenter << ", " << theRadius << ", " << theState << ")"; - - SetErrorCode(OK); - return aSeq; -} -//============================================================================= -/*! - * GetShapesOnPlaneIDs - */ -//============================================================================= -Handle(TColStd_HSequenceOfInteger) GEOMImpl_IShapesOperations::GetShapesOnPlaneIDs - (const Handle(GEOM_Object)& theShape, - const Standard_Integer theShapeType, - const Handle(GEOM_Object)& theAx1, - const GEOMAlgo_State theState) -{ - SetErrorCode(KO); - - if (theShape.IsNull() || theAx1.IsNull()) return NULL; - - TopoDS_Shape aShape = theShape->GetValue(); - TopoDS_Shape anAx1 = theAx1->GetValue(); - - if (aShape.IsNull() || anAx1.IsNull()) return NULL; - - TopAbs_ShapeEnum aShapeType = TopAbs_ShapeEnum(theShapeType); - if (aShapeType != TopAbs_VERTEX && - aShapeType != TopAbs_EDGE && - aShapeType != TopAbs_FACE && - aShapeType != TopAbs_SOLID) { - SetErrorCode("Only solids, vertices, edges or faces can be found by this method"); - return NULL; - } - - // Create plane - if (anAx1.ShapeType() != TopAbs_EDGE) return NULL; - TopoDS_Edge anEdge = TopoDS::Edge(anAx1); - TopoDS_Vertex V1, V2; - TopExp::Vertices(anEdge, V1, V2, Standard_True); - if (V1.IsNull() || V2.IsNull()) { - SetErrorCode("Bad edge given for the plane normal vector"); - return NULL; - } - gp_Pnt aLoc = BRep_Tool::Pnt(V1); - gp_Vec aVec (aLoc, BRep_Tool::Pnt(V2)); - if (aVec.Magnitude() < Precision::Confusion()) { - SetErrorCode("Vector with null magnitude given"); - return NULL; - } - - Handle(Geom_Plane) aPlane = new Geom_Plane(aLoc, aVec); - - // Check presence of triangulation, build if need - if (!CheckTriangulation(aShape)) - return NULL; - - // Call algo - GEOMAlgo_FinderShapeOn1 aFinder; - Standard_Real aTol = 0.0001; // default value - - aFinder.SetShape(aShape); - aFinder.SetTolerance(aTol); - aFinder.SetSurface(aPlane); - aFinder.SetShapeType(aShapeType); - aFinder.SetState(theState); - - aFinder.SetNbPntsMin(3); - aFinder.SetNbPntsMax(100); - - aFinder.Perform(); - - // Interprete results - Standard_Integer iErr = aFinder.ErrorStatus(); - // the detailed description of error codes is in GEOMAlgo_FinderShapeOn1.cxx - if (iErr) { - MESSAGE(" iErr : " << iErr); - TCollection_AsciiString aMsg (" iErr : "); - aMsg += TCollection_AsciiString(iErr); - SetErrorCode(aMsg); - return NULL; - } - Standard_Integer iWrn = aFinder.WarningStatus(); - // the detailed description of warning codes is in GEOMAlgo_FinderShapeOn1.cxx - if (iWrn) { - MESSAGE(" *** iWrn : " << iWrn); - } - - const TopTools_ListOfShape& listSS = aFinder.Shapes(); // the result - - if (listSS.Extent() < 1) { - SetErrorCode("Not a single sub-shape of the requested type found on the given plane"); - return NULL; - } - - // Fill sequence of objects - TopTools_IndexedMapOfShape anIndices; - TopExp::MapShapes(aShape, anIndices); - - Handle(TColStd_HSequenceOfInteger) aSeq = new TColStd_HSequenceOfInteger; - - TopTools_ListIteratorOfListOfShape itSub (listSS); - for (int index = 1; itSub.More(); itSub.Next(), ++index) { - int id = anIndices.FindIndex(itSub.Value()); - aSeq->Append(id); - } - - // The GetShapesOnPlane() doesn't change object so no new function is required. - Handle(GEOM_Function) aFunction = theShape->GetLastFunction(); - - // Make a Python command - TCollection_AsciiString anEntry, aDescr - ("\nlistShapesOnPlane = IShapesOperations.GetShapesOnPlaneIDs("); - TDF_Tool::Entry(theShape->GetEntry(), anEntry); - aDescr += anEntry + TCollection_AsciiString(theShapeType) + ","; - TDF_Tool::Entry(theAx1->GetEntry(), anEntry); - aDescr += anEntry + ","; - aDescr += TCollection_AsciiString(theState) + ")"; - - TCollection_AsciiString anOldDescr = aFunction->GetDescription(); - anOldDescr += aDescr; - aFunction->SetDescription(anOldDescr); - - SetErrorCode(OK); - return aSeq; -} - -//============================================================================= -/*! - * GetShapesOnCylinderIDs - */ -//============================================================================= -Handle(TColStd_HSequenceOfInteger) GEOMImpl_IShapesOperations::GetShapesOnCylinderIDs - (const Handle(GEOM_Object)& theShape, - const Standard_Integer theShapeType, - const Handle(GEOM_Object)& theAxis, - const Standard_Real theRadius, - const GEOMAlgo_State theState) -{ - SetErrorCode(KO); - - if (theShape.IsNull() || theAxis.IsNull()) return NULL; - - TopoDS_Shape aShape = theShape->GetValue(); - TopoDS_Shape anAxis = theAxis->GetValue(); - - if (aShape.IsNull() || anAxis.IsNull()) return NULL; - - TopAbs_ShapeEnum aShapeType = TopAbs_ShapeEnum(theShapeType); - if (aShapeType != TopAbs_VERTEX && - aShapeType != TopAbs_EDGE && - aShapeType != TopAbs_FACE && - aShapeType != TopAbs_SOLID) { - SetErrorCode("Only solids, vertices, edges or faces can be found by this method"); - return NULL; - } - - //Axis of the cylinder - if (anAxis.ShapeType() != TopAbs_EDGE) { - SetErrorCode("Not an edge given for the axis"); - return NULL; - } - TopoDS_Edge anEdge = TopoDS::Edge(anAxis); - TopoDS_Vertex V1, V2; - TopExp::Vertices(anEdge, V1, V2, Standard_True); - if (V1.IsNull() || V2.IsNull()) { - SetErrorCode("Bad edge given for the axis"); - return NULL; - } - gp_Pnt aLoc = BRep_Tool::Pnt(V1); - gp_Vec aVec (aLoc, BRep_Tool::Pnt(V2)); - if (aVec.Magnitude() < Precision::Confusion()) { - SetErrorCode("Vector with null magnitude given"); - return NULL; - } - - gp_Ax3 anAx3 (aLoc, aVec); - Handle(Geom_CylindricalSurface) aCylinder = - new Geom_CylindricalSurface(anAx3, theRadius); - - // Check presence of triangulation, build if need - if (!CheckTriangulation(aShape)) - return NULL; - - // Call algo - GEOMAlgo_FinderShapeOn1 aFinder; - Standard_Real aTol = 0.0001; // default value - - aFinder.SetShape(aShape); - aFinder.SetTolerance(aTol); - aFinder.SetSurface(aCylinder); - aFinder.SetShapeType(aShapeType); - aFinder.SetState(theState); - - aFinder.SetNbPntsMin(3); - aFinder.SetNbPntsMax(100); - - aFinder.Perform(); - - // Interprete results - Standard_Integer iErr = aFinder.ErrorStatus(); - // the detailed description of error codes is in GEOMAlgo_FinderShapeOn1.cxx - if (iErr) { - MESSAGE(" iErr : " << iErr); - TCollection_AsciiString aMsg (" iErr : "); - aMsg += TCollection_AsciiString(iErr); - SetErrorCode(aMsg); - return NULL; - } - Standard_Integer iWrn = aFinder.WarningStatus(); - // the detailed description of warning codes is in GEOMAlgo_FinderShapeOn1.cxx - if (iWrn) { - MESSAGE(" *** iWrn : " << iWrn); - } - - const TopTools_ListOfShape& listSS = aFinder.Shapes(); // the result - - if (listSS.Extent() < 1) { - SetErrorCode("Not a single sub-shape of the requested type found on the given cylinder"); - return NULL; - } - - // Fill sequence of objects - TopTools_IndexedMapOfShape anIndices; - TopExp::MapShapes(aShape, anIndices); - - Handle(TColStd_HSequenceOfInteger) aSeq = new TColStd_HSequenceOfInteger; - - TopTools_ListIteratorOfListOfShape itSub (listSS); - for (int index = 1; itSub.More(); itSub.Next(), ++index) { - int id = anIndices.FindIndex(itSub.Value()); - aSeq->Append(id); - } - - // The GetShapesOnCylinder() doesn't change object so no new function is required. - Handle(GEOM_Function) aFunction = theShape->GetLastFunction(); - - // Make a Python command - TCollection_AsciiString anEntry, aDescr - ("\nlistShapesOnCylinder = IShapesOperations.GetShapesOnCylinderIDs("); - TDF_Tool::Entry(theShape->GetEntry(), anEntry); - aDescr += anEntry + TCollection_AsciiString(theShapeType) + ","; - TDF_Tool::Entry(theAxis->GetEntry(), anEntry); - aDescr += anEntry + ","; - aDescr += TCollection_AsciiString(theRadius) + ","; - aDescr += TCollection_AsciiString(theState) + ")"; - - TCollection_AsciiString anOldDescr = aFunction->GetDescription(); - anOldDescr += aDescr; - aFunction->SetDescription(anOldDescr); - - SetErrorCode(OK); - return aSeq; -} - -//============================================================================= -/*! - * GetShapesOnSphereIDs - */ -//============================================================================= -Handle(TColStd_HSequenceOfInteger) GEOMImpl_IShapesOperations::GetShapesOnSphereIDs - (const Handle(GEOM_Object)& theShape, - const Standard_Integer theShapeType, - const Handle(GEOM_Object)& theCenter, - const Standard_Real theRadius, - const GEOMAlgo_State theState) -{ - SetErrorCode(KO); - - if (theShape.IsNull() || theCenter.IsNull()) return NULL; - - TopoDS_Shape aShape = theShape->GetValue(); - TopoDS_Shape aCenter = theCenter->GetValue(); - - if (aShape.IsNull() || aCenter.IsNull()) return NULL; - - TopAbs_ShapeEnum aShapeType = TopAbs_ShapeEnum(theShapeType); - if (aShapeType != TopAbs_VERTEX && - aShapeType != TopAbs_EDGE && - aShapeType != TopAbs_FACE && - aShapeType != TopAbs_SOLID) { - SetErrorCode("Only solids, vertices, edges or faces can be found by this method"); - return NULL; - } - - // Center of the sphere - if (aCenter.ShapeType() != TopAbs_VERTEX) return NULL; - gp_Pnt aLoc = BRep_Tool::Pnt(TopoDS::Vertex(aCenter)); - - gp_Ax3 anAx3 (aLoc, gp::DZ()); - Handle(Geom_SphericalSurface) aSphere = - new Geom_SphericalSurface(anAx3, theRadius); - - // Check presence of triangulation, build if need - if (!CheckTriangulation(aShape)) - return NULL; - - // Call algo - GEOMAlgo_FinderShapeOn1 aFinder; - Standard_Real aTol = 0.0001; // default value - - aFinder.SetShape(aShape); - aFinder.SetTolerance(aTol); - aFinder.SetSurface(aSphere); - aFinder.SetShapeType(aShapeType); - aFinder.SetState(theState); - - aFinder.SetNbPntsMin(3); - aFinder.SetNbPntsMax(100); - - aFinder.Perform(); - - // Interprete results - Standard_Integer iErr = aFinder.ErrorStatus(); - // the detailed description of error codes is in GEOMAlgo_FinderShapeOn1.cxx - if (iErr) { - MESSAGE(" iErr : " << iErr); - TCollection_AsciiString aMsg (" iErr : "); - aMsg += TCollection_AsciiString(iErr); - SetErrorCode(aMsg); - return NULL; - } - Standard_Integer iWrn = aFinder.WarningStatus(); - // the detailed description of warning codes is in GEOMAlgo_FinderShapeOn1.cxx - if (iWrn) { - MESSAGE(" *** iWrn : " << iWrn); - } - - const TopTools_ListOfShape& listSS = aFinder.Shapes(); // the result - - if (listSS.Extent() < 1) { - SetErrorCode("Not a single sub-shape of the requested type found on the given sphere"); - return NULL; - } - - // Fill sequence of objects - TopTools_IndexedMapOfShape anIndices; - TopExp::MapShapes(aShape, anIndices); - - Handle(TColStd_HSequenceOfInteger) aSeq = new TColStd_HSequenceOfInteger; - - TopTools_ListIteratorOfListOfShape itSub (listSS); - for (int index = 1; itSub.More(); itSub.Next(), ++index) { - int id = anIndices.FindIndex(itSub.Value()); - aSeq->Append(id); - } - - // The GetShapesOnSphere() doesn't change object so no new function is required. - Handle(GEOM_Function) aFunction = theShape->GetLastFunction(); - - // Make a Python command - TCollection_AsciiString anEntry, aDescr - ("\nlistShapesOnSphere = IShapesOperations.GetShapesOnSphereIDs("); - TDF_Tool::Entry(theShape->GetEntry(), anEntry); - aDescr += anEntry + TCollection_AsciiString(theShapeType) + ","; - TDF_Tool::Entry(theCenter->GetEntry(), anEntry); - aDescr += anEntry + ","; - aDescr += TCollection_AsciiString(theRadius) + ","; - aDescr += TCollection_AsciiString(theState) + ")"; - - TCollection_AsciiString anOldDescr = aFunction->GetDescription(); - anOldDescr += aDescr; - aFunction->SetDescription(anOldDescr); - - SetErrorCode(OK); - return aSeq; -} - -//============================================================================= -/*! - * GetInPlace - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_IShapesOperations::GetInPlace - (Handle(GEOM_Object) theShapeWhere, - Handle(GEOM_Object) theShapeWhat) -{ - SetErrorCode(KO); - - if (theShapeWhere.IsNull() || theShapeWhat.IsNull()) return NULL; - - TopoDS_Shape aWhere = theShapeWhere->GetValue(); - TopoDS_Shape aWhat = theShapeWhat->GetValue(); - - if (aWhere.IsNull() || aWhat.IsNull()) return NULL; - - //Fill array of indices - Handle(TColStd_HArray1OfInteger) aModifiedArray; - - Handle(GEOM_Function) aWhereFunction = theShapeWhere->GetLastFunction(); - - TopTools_IndexedMapOfShape aWhereIndices; - TopExp::MapShapes(aWhere, aWhereIndices); - - if (aWhereIndices.Contains(aWhat)) { - - // entity was not changed by the operation - Standard_Integer aWhatIndex = aWhereIndices.FindIndex(aWhat); - aModifiedArray = new TColStd_HArray1OfInteger(1,1); - aModifiedArray->SetValue(1, aWhatIndex); - - } else { - - TDF_Label aHistoryLabel = aWhereFunction->GetHistoryEntry(Standard_False); - if (aHistoryLabel.IsNull()) { - SetErrorCode("Modifications history does not exist for the shape under consideration."); - return NULL; - } - - // search in history for all argument shapes - Standard_Boolean isFound = Standard_False; - - TDF_LabelSequence aLabelSeq; - aWhereFunction->GetDependency(aLabelSeq); - Standard_Integer nbArg = aLabelSeq.Length(); - - for (Standard_Integer iarg = 1; iarg <= nbArg && !isFound; iarg++) { - - TDF_Label anArgumentRefLabel = aLabelSeq.Value(iarg); - - Handle(GEOM_Object) anArgumentObject = GEOM_Object::GetReferencedObject(anArgumentRefLabel); - TopoDS_Shape anArgumentShape = anArgumentObject->GetValue(); - - TopTools_IndexedMapOfShape anArgumentIndices; - TopExp::MapShapes(anArgumentShape, anArgumentIndices); - - if (anArgumentIndices.Contains(aWhat)) { - isFound = Standard_True; - Standard_Integer aWhatIndex = anArgumentIndices.FindIndex(aWhat); - - // Find corresponding label in history - TDF_Label anArgumentHistoryLabel = - aWhereFunction->GetArgumentHistoryEntry(anArgumentRefLabel, Standard_False); - if (anArgumentHistoryLabel.IsNull()) { - // Lost History of operation argument. Possibly, all its entities was removed. - SetErrorCode(OK); - return NULL; - } - - TDF_Label aWhatHistoryLabel = anArgumentHistoryLabel.FindChild(aWhatIndex, Standard_False); - if (aWhatHistoryLabel.IsNull()) { - // Removed entity - SetErrorCode(OK); - return NULL; - } - - Handle(TDataStd_IntegerArray) anIntegerArray; - if (!aWhatHistoryLabel.FindAttribute(TDataStd_IntegerArray::GetID(), anIntegerArray)) { - SetErrorCode("Error: Empty modifications history for the sought shape."); - return NULL; - } - - aModifiedArray = anIntegerArray->Array(); - if (aModifiedArray->Length() == 0) { - SetErrorCode("Error: Empty modifications history for the sought shape."); - return NULL; - } - } - } - - if (!isFound) { - SetErrorCode("The sought shape does not belong to any operation argument."); - return NULL; - } - } - - //Add a new object - Handle(GEOM_Object) aResult = GetEngine()->AddSubShape(theShapeWhere, aModifiedArray); - - if (aModifiedArray->Length() > 1) { - //Set a GROUP type - aResult->SetType(GEOM_GROUP); - - //Set a sub shape type - TDF_Label aFreeLabel = aResult->GetFreeLabel(); - TopAbs_ShapeEnum aShapeType = aWhat.ShapeType(); - TDataStd_Integer::Set(aFreeLabel, (Standard_Integer)aShapeType); - } - - //Make a Python command - Handle(GEOM_Function) aFunction = aResult->GetFunction(1); - - GEOM::TPythonDump(aFunction) << aResult << " = geompy.GetInPlace(" - << theShapeWhere << ", " << theShapeWhat << ")"; - - SetErrorCode(OK); - return aResult; -} - -//======================================================================= -//function : SortShapes -//purpose : -//======================================================================= -void GEOMImpl_IShapesOperations::SortShapes(TopTools_ListOfShape& SL) -{ - Standard_Integer MaxShapes = SL.Extent(); - TopTools_Array1OfShape aShapes (1,MaxShapes); - TColStd_Array1OfInteger OrderInd(1,MaxShapes); - TColStd_Array1OfReal MidXYZ (1,MaxShapes); //X,Y,Z; - TColStd_Array1OfReal Length (1,MaxShapes); //X,Y,Z; - - // Computing of CentreOfMass - Standard_Integer Index; - GProp_GProps GPr; - gp_Pnt GPoint; - TopTools_ListIteratorOfListOfShape it(SL); - for (Index=1; it.More(); Index++) - { - TopoDS_Shape S = it.Value(); - SL.Remove( it ); // == it.Next() - aShapes(Index) = S; - OrderInd.SetValue (Index, Index); - if (S.ShapeType() == TopAbs_VERTEX) - { - GPoint = BRep_Tool::Pnt( TopoDS::Vertex( S )); - Length.SetValue( Index, (Standard_Real) S.Orientation()); - } - else - { - BRepGProp::LinearProperties (S, GPr); - GPoint = GPr.CentreOfMass(); - Length.SetValue( Index, GPr.Mass() ); - } - MidXYZ.SetValue(Index, - GPoint.X()*999 + GPoint.Y()*99 + GPoint.Z()*0.9); - } - // Sorting - Standard_Integer aTemp; - Standard_Boolean exchange, Sort = Standard_True; - while (Sort) - { - Sort = Standard_False; - for (Index=1; Index < MaxShapes; Index++) - { - if (MidXYZ(OrderInd(Index)) > MidXYZ(OrderInd(Index+1))) - exchange = Standard_True; - else if (MidXYZ(OrderInd(Index)) == MidXYZ(OrderInd(Index+1)) && - Length(OrderInd(Index)) > Length(OrderInd(Index+1)) ) - exchange = Standard_True; - else - exchange = Standard_False; - if (exchange) - { - aTemp = OrderInd(Index); - OrderInd(Index) = OrderInd(Index+1); - OrderInd(Index+1) = aTemp; - Sort = Standard_True; - } - } - } - for (Index=1; Index <= MaxShapes; Index++) - SL.Append( aShapes( OrderInd(Index) )); -} - -//======================================================================= -//function : CheckTriangulation -//purpose : -//======================================================================= -bool GEOMImpl_IShapesOperations::CheckTriangulation (const TopoDS_Shape& aShape) -{ -// MESSAGE("CheckTriangulation"); -// -// OSD_Timer timer1; -// timer1.Start(); - - TopExp_Explorer exp (aShape, TopAbs_FACE); - if (!exp.More()) { - SetErrorCode("Shape without faces given"); - return false; - } - - TopLoc_Location aTopLoc; - Handle(Poly_Triangulation) aTRF; - aTRF = BRep_Tool::Triangulation(TopoDS::Face(exp.Current()), aTopLoc); - if (aTRF.IsNull()) { - // calculate deflection - Standard_Real aDeviationCoefficient = 0.001; - - Bnd_Box B; - BRepBndLib::Add(aShape, B); - Standard_Real aXmin, aYmin, aZmin, aXmax, aYmax, aZmax; - B.Get(aXmin, aYmin, aZmin, aXmax, aYmax, aZmax); - - Standard_Real dx = aXmax - aXmin, dy = aYmax - aYmin, dz = aZmax - aZmin; - Standard_Real aDeflection = Max(Max(dx, dy), dz) * aDeviationCoefficient * 4; - -// MESSAGE("Deflection = " << aDeflection); - - Standard_Real aHLRAngle = 0.349066; - - BRepMesh_IncrementalMesh Inc (aShape, aDeflection, Standard_False, aHLRAngle); - } -// timer1.Stop(); -// timer1.Show(); - - return true; -} diff --git a/src/GEOMImpl/GEOMImpl_IShapesOperations.hxx b/src/GEOMImpl/GEOMImpl_IShapesOperations.hxx deleted file mode 100644 index 46c0f8536..000000000 --- a/src/GEOMImpl/GEOMImpl_IShapesOperations.hxx +++ /dev/null @@ -1,125 +0,0 @@ - -#ifndef _GEOMImpl_IShapesOperations_HXX_ -#define _GEOMImpl_IShapesOperations_HXX_ - -#include "GEOM_IOperations.hxx" - -#include "GEOMAlgo_State.hxx" - -#include -#include -#include - -#include - -class GEOM_Engine; -class Handle(GEOM_Object); -class Handle(TColStd_HArray1OfInteger); - -class GEOMImpl_IShapesOperations : public GEOM_IOperations { - public: - Standard_EXPORT GEOMImpl_IShapesOperations(GEOM_Engine* theEngine, int theDocID); - Standard_EXPORT ~GEOMImpl_IShapesOperations(); - - Standard_EXPORT Handle(GEOM_Object) MakeEdge (Handle(GEOM_Object) thePoint1, - Handle(GEOM_Object) thePoint2); - - Standard_EXPORT Handle(GEOM_Object) MakeWire (list theEdgesAndWires); - - Standard_EXPORT Handle(GEOM_Object) MakeFace (Handle(GEOM_Object) theWire, const bool isPlanarWanted); - - Standard_EXPORT Handle(GEOM_Object) MakeFaceWires (list theWires, - const bool isPlanarWanted); - - Standard_EXPORT Handle(GEOM_Object) MakeShell (list theShapes); - - Standard_EXPORT Handle(GEOM_Object) MakeSolidShell (Handle(GEOM_Object) theShell); - - Standard_EXPORT Handle(GEOM_Object) MakeSolidShells (list theShells); - - Standard_EXPORT Handle(GEOM_Object) MakeCompound (list theShapes); - - Standard_EXPORT Handle(GEOM_Object) MakeGlueFaces (Handle(GEOM_Object) theShape, - const Standard_Real theTolerance); - - Standard_EXPORT Handle(TColStd_HSequenceOfTransient) MakeExplode (Handle(GEOM_Object) theShape, - const Standard_Integer theShapeType, - const Standard_Boolean isSorted); - - Standard_EXPORT Handle(TColStd_HSequenceOfInteger) SubShapeAllIDs (Handle(GEOM_Object) theShape, - const Standard_Integer theShapeType, - const Standard_Boolean isSorted); - - Standard_EXPORT Handle(GEOM_Object) GetSubShape (Handle(GEOM_Object) theMainShape, - const Standard_Integer theID); - - Standard_EXPORT Standard_Integer NumberOfFaces (Handle(GEOM_Object) theShape); - Standard_EXPORT Standard_Integer NumberOfEdges (Handle(GEOM_Object) theShape); - - Standard_EXPORT Handle(GEOM_Object) ReverseShape(Handle(GEOM_Object) theShapes); - - Standard_EXPORT Handle(TColStd_HSequenceOfInteger) GetFreeFacesIDs (Handle(GEOM_Object) theShape); - - Standard_EXPORT Handle(TColStd_HSequenceOfTransient) GetSharedShapes (Handle(GEOM_Object) theShape1, - Handle(GEOM_Object) theShape2, - const Standard_Integer theShapeType); - - Standard_EXPORT Handle(TColStd_HSequenceOfTransient) GetShapesOnPlane (const Handle(GEOM_Object)& theShape, - const Standard_Integer theShapeType, - const Handle(GEOM_Object)& theAx1, - const GEOMAlgo_State theState); - - Standard_EXPORT Handle(TColStd_HSequenceOfTransient) GetShapesOnCylinder (const Handle(GEOM_Object)& theShape, - const Standard_Integer theShapeType, - const Handle(GEOM_Object)& theAxis, - const Standard_Real theRadius, - const GEOMAlgo_State theState); - - Standard_EXPORT Handle(TColStd_HSequenceOfTransient) GetShapesOnSphere (const Handle(GEOM_Object)& theShape, - const Standard_Integer theShapeType, - const Handle(GEOM_Object)& theCenter, - const Standard_Real theRadius, - const GEOMAlgo_State theState); - - Standard_EXPORT Handle(TColStd_HSequenceOfInteger) GetShapesOnPlaneIDs (const Handle(GEOM_Object)& theShape, - const Standard_Integer theShapeType, - const Handle(GEOM_Object)& theAx1, - const GEOMAlgo_State theState); - - Standard_EXPORT Handle(TColStd_HSequenceOfInteger) GetShapesOnCylinderIDs (const Handle(GEOM_Object)& theShape, - const Standard_Integer theShapeType, - const Handle(GEOM_Object)& theAxis, - const Standard_Real theRadius, - const GEOMAlgo_State theState); - - Standard_EXPORT Handle(TColStd_HSequenceOfInteger) GetShapesOnSphereIDs (const Handle(GEOM_Object)& theShape, - const Standard_Integer theShapeType, - const Handle(GEOM_Object)& theCenter, - const Standard_Real theRadius, - const GEOMAlgo_State theState); - - Standard_EXPORT Handle(GEOM_Object) GetShapesOnCylinderOld (Handle(GEOM_Object) theShape, - const Standard_Integer theShapeType, - Handle(GEOM_Object) theAxis, - const Standard_Real theRadius); - - Standard_EXPORT Handle(GEOM_Object) GetShapesOnSphereOld (Handle(GEOM_Object) theShape, - const Standard_Integer theShapeType, - Handle(GEOM_Object) theCenter, - const Standard_Real theRadius); - - Standard_EXPORT Handle(GEOM_Object) GetInPlace (Handle(GEOM_Object) theShapeWhere, - Handle(GEOM_Object) theShapeWhat); - - Standard_EXPORT static void SortShapes (TopTools_ListOfShape& SL); - - private: - Handle(GEOM_Object) MakeShape (list theShapes, - const Standard_Integer theObjectType, - const Standard_Integer theFunctionType, - const TCollection_AsciiString& theMethodName); - - bool CheckTriangulation (const TopoDS_Shape& aShape); -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_ISketcher.hxx b/src/GEOMImpl/GEOMImpl_ISketcher.hxx deleted file mode 100644 index b32dab4d6..000000000 --- a/src/GEOMImpl/GEOMImpl_ISketcher.hxx +++ /dev/null @@ -1,34 +0,0 @@ -//NOTE: This is an interface to a function for the Sketcher creation. - - -#include "GEOM_Function.hxx" - -#define SKETCH_ARG_CMD 1 -#define SKETCH_ARG_DOUBLE 2 -#define SKETCH_ARG_WPLANE 12 - -class GEOMImpl_ISketcher -{ - public: - - GEOMImpl_ISketcher(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetCommand(const TCollection_AsciiString& theCommand) - { _func->SetString(SKETCH_ARG_CMD, theCommand); } - - TCollection_AsciiString GetCommand() { return _func->GetString(SKETCH_ARG_CMD); } - - void SetWorkingPlane(int theInd, double theValue) - { _func->SetReal(SKETCH_ARG_DOUBLE + theInd, theValue); } - - double GetWorkingPlane(int theInd) { return _func->GetReal(SKETCH_ARG_DOUBLE + theInd); } - - void SetWorkingPlane(Handle(GEOM_Function) thePlane) - { _func->SetReference(SKETCH_ARG_WPLANE, thePlane); } - - Handle(GEOM_Function) GetWorkingPlane() { return _func->GetReference(SKETCH_ARG_WPLANE); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_ISphere.hxx b/src/GEOMImpl/GEOMImpl_ISphere.hxx deleted file mode 100644 index 048e56cea..000000000 --- a/src/GEOMImpl/GEOMImpl_ISphere.hxx +++ /dev/null @@ -1,26 +0,0 @@ -//NOTE: This is an intreface to a function for the Sphere creation. - - -#include "GEOM_Function.hxx" - -#define SPH_ARG_R 1 -#define SPH_ARG_PNT 4 - -class GEOMImpl_ISphere -{ - public: - - GEOMImpl_ISphere(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetR(double theR) { _func->SetReal(SPH_ARG_R, theR); } - - double GetR() { return _func->GetReal(SPH_ARG_R); } - - void SetPoint(Handle(GEOM_Function) theRefPoint) { _func->SetReference(SPH_ARG_PNT, theRefPoint); } - - Handle(GEOM_Function) GetPoint() { return _func->GetReference(SPH_ARG_PNT); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_ISpline.hxx b/src/GEOMImpl/GEOMImpl_ISpline.hxx deleted file mode 100644 index 19880be21..000000000 --- a/src/GEOMImpl/GEOMImpl_ISpline.hxx +++ /dev/null @@ -1,26 +0,0 @@ -//NOTE: This is an intreface to a function for the Spline creation. - - -#include "GEOM_Function.hxx" - -#define SPL_ARG_LENG 1 -#define SPL_ARG_LAST 1 - -class GEOMImpl_ISpline -{ - public: - - GEOMImpl_ISpline(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetLength(int theLen) { _func->SetInteger(SPL_ARG_LENG, theLen); } - - void SetPoint(int theId, Handle(GEOM_Function) theP) { _func->SetReference(SPL_ARG_LAST + theId, theP); } - - int GetLength() { return _func->GetInteger(SPL_ARG_LENG); } - - Handle(GEOM_Function) GetPoint(int theId) { return _func->GetReference(SPL_ARG_LAST + theId); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_ITorus.hxx b/src/GEOMImpl/GEOMImpl_ITorus.hxx deleted file mode 100644 index 8bbca42d9..000000000 --- a/src/GEOMImpl/GEOMImpl_ITorus.hxx +++ /dev/null @@ -1,32 +0,0 @@ -//NOTE: This is an intreface to a function for the Torus creation. - - -#include "GEOM_Function.hxx" - -#define TORUS_ARG_CC 1 -#define TORUS_ARG_VV 2 -#define TORUS_ARG_RMAJ 3 -#define TORUS_ARG_RMIN 4 - -class GEOMImpl_ITorus -{ - public: - - GEOMImpl_ITorus(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetCenter(Handle(GEOM_Function) theP) { _func->SetReference(TORUS_ARG_CC, theP); } - void SetVector(Handle(GEOM_Function) theV) { _func->SetReference(TORUS_ARG_VV, theV); } - - void SetRMajor(double theR) { _func->SetReal(TORUS_ARG_RMAJ, theR); } - void SetRMinor(double theR) { _func->SetReal(TORUS_ARG_RMIN, theR); } - - Handle(GEOM_Function) GetCenter() { return _func->GetReference(TORUS_ARG_CC); } - Handle(GEOM_Function) GetVector() { return _func->GetReference(TORUS_ARG_VV); } - - double GetRMajor() { return _func->GetReal(TORUS_ARG_RMAJ); } - double GetRMinor() { return _func->GetReal(TORUS_ARG_RMIN); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_ITransformOperations.cxx b/src/GEOMImpl/GEOMImpl_ITransformOperations.cxx deleted file mode 100644 index 7d6c5c792..000000000 --- a/src/GEOMImpl/GEOMImpl_ITransformOperations.cxx +++ /dev/null @@ -1,1310 +0,0 @@ -#include - -#include - -#include "utilities.h" -#include -#include - -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include - -#include // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC - -//============================================================================= -/*! - * constructor: - */ -//============================================================================= - -GEOMImpl_ITransformOperations::GEOMImpl_ITransformOperations (GEOM_Engine* theEngine, int theDocID) -: GEOM_IOperations(theEngine, theDocID) -{ - MESSAGE("GEOMImpl_ITransformOperations::GEOMImpl_ITransformOperations"); -} - -//============================================================================= -/*! - * destructor - */ -//============================================================================= - -GEOMImpl_ITransformOperations::~GEOMImpl_ITransformOperations() -{ - MESSAGE("GEOMImpl_ITransformOperations::~GEOMImpl_ITransformOperations"); -} - - -//============================================================================= -/*! - * TranslateTwoPoints - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ITransformOperations::TranslateTwoPoints - (Handle(GEOM_Object) theObject, Handle(GEOM_Object) thePoint1, Handle(GEOM_Object) thePoint2) -{ - SetErrorCode(KO); - - if (theObject.IsNull() || thePoint1.IsNull() || thePoint2.IsNull()) return NULL; - - Handle(GEOM_Function) aFunction, aLastFunction = theObject->GetLastFunction(); - if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be moved - - // Get last functions of the arguments - Handle(GEOM_Function) aP1F = thePoint1->GetLastFunction(); - Handle(GEOM_Function) aP2F = thePoint2->GetLastFunction(); - - //Add a translate function - aFunction = theObject->AddFunction(GEOMImpl_TranslateDriver::GetID(), TRANSLATE_TWO_POINTS); - - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_TranslateDriver::GetID()) return NULL; - - GEOMImpl_ITranslate aTI (aFunction); - aTI.SetPoint1(aP1F); - aTI.SetPoint2(aP2F); - aTI.SetOriginal(aLastFunction); - - //Compute the translation - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Translation driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << "geompy.TrsfOp.TranslateTwoPoints(" - << theObject << ", " << thePoint1 << ", " << thePoint2 << ")"; - - SetErrorCode(OK); - return theObject; -} - -//============================================================================= -/*! - * TranslateDXDYDZ - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ITransformOperations::TranslateDXDYDZ - (Handle(GEOM_Object) theObject, double theX, double theY, double theZ) -{ - SetErrorCode(KO); - - if (theObject.IsNull()) return NULL; - - Handle(GEOM_Function) aFunction, aLastFunction = theObject->GetLastFunction(); - if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be moved - - //Add a translate function - aFunction = theObject->AddFunction(GEOMImpl_TranslateDriver::GetID(), TRANSLATE_XYZ); - - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_TranslateDriver::GetID()) return NULL; - - GEOMImpl_ITranslate aTI(aFunction); - aTI.SetDX(theX); - aTI.SetDY(theY); - aTI.SetDZ(theZ); - aTI.SetOriginal(aLastFunction); - - //Compute the translation - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Translation driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << "geompy.TrsfOp.TranslateDXDYDZ(" - << theObject << ", " << theX << ", " << theY << ", " << theZ << ")"; - - SetErrorCode(OK); - return theObject; -} - - -//============================================================================= -/*! - * TranslateTwoPointsCopy - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ITransformOperations::TranslateTwoPointsCopy - (Handle(GEOM_Object) theObject, Handle(GEOM_Object) thePoint1, Handle(GEOM_Object) thePoint2) -{ - SetErrorCode(KO); - - if (theObject.IsNull() || thePoint1.IsNull() || thePoint2.IsNull()) return NULL; - - Handle(GEOM_Function) aLastFunction = theObject->GetLastFunction(); - if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be moved - - //Add a new Copy object - Handle(GEOM_Object) aCopy = GetEngine()->AddObject(GetDocID(), theObject->GetType()); - - //Add a translate function - Handle(GEOM_Function) aFunction = - aCopy->AddFunction(GEOMImpl_TranslateDriver::GetID(), TRANSLATE_TWO_POINTS_COPY); - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_TranslateDriver::GetID()) return NULL; - - GEOMImpl_ITranslate aTI(aFunction); - aTI.SetPoint1(thePoint1->GetLastFunction()); - aTI.SetPoint2(thePoint2->GetLastFunction()); - //aTI.SetShape(theObject->GetValue()); - aTI.SetOriginal(aLastFunction); - - //Compute the translation - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Translation driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aCopy << " = geompy.MakeTranslationTwoPoints(" - << theObject << ", " << thePoint1 << ", " << thePoint2 << ")"; - - SetErrorCode(OK); - return aCopy; -} - -//============================================================================= -/*! - * TranslateDXDYDZCopy - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ITransformOperations::TranslateDXDYDZCopy - (Handle(GEOM_Object) theObject, double theX, double theY, double theZ) -{ - SetErrorCode(KO); - - if (theObject.IsNull()) return NULL; - - Handle(GEOM_Function) aLastFunction = theObject->GetLastFunction(); - if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be moved - - //Add a new Copy object - Handle(GEOM_Object) aCopy = GetEngine()->AddObject(GetDocID(), theObject->GetType()); - - //Add a translate function - Handle(GEOM_Function) aFunction = - aCopy->AddFunction(GEOMImpl_TranslateDriver::GetID(), TRANSLATE_XYZ_COPY); - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_TranslateDriver::GetID()) return NULL; - - GEOMImpl_ITranslate aTI(aFunction); - aTI.SetDX(theX); - aTI.SetDY(theY); - aTI.SetDZ(theZ); - aTI.SetOriginal(aLastFunction); - - //Compute the translation - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Translation driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aCopy << " = geompy.MakeTranslation(" - << theObject << ", " << theX << ", " << theY << ", " << theZ << ")"; - - SetErrorCode(OK); - return aCopy; -} - - -//============================================================================= -/*! - * TranslateVector - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ITransformOperations::TranslateVector - (Handle(GEOM_Object) theObject, Handle(GEOM_Object) theVector) -{ - SetErrorCode(KO); - - if (theObject.IsNull() || theVector.IsNull()) return NULL; - - Handle(GEOM_Function) aFunction, aLastFunction = theObject->GetLastFunction(); - if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be moved - - // Get last functions of the arguments - Handle(GEOM_Function) aVF = theVector->GetLastFunction(); - - //Add a translate function - aFunction = theObject->AddFunction(GEOMImpl_TranslateDriver::GetID(), TRANSLATE_VECTOR); - - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_TranslateDriver::GetID()) return NULL; - - GEOMImpl_ITranslate aTI (aFunction); - aTI.SetVector(aVF); - aTI.SetOriginal(aLastFunction); - - //Compute the translation - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Translation driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << "geompy.TrsfOp.TranslateVector(" - << theObject << ", " << theVector << ")"; - - SetErrorCode(OK); - return theObject; -} - -//============================================================================= -/*! - * TranslateVectorCopy - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ITransformOperations::TranslateVectorCopy - (Handle(GEOM_Object) theObject, Handle(GEOM_Object) theVector) -{ - SetErrorCode(KO); - - if (theObject.IsNull() || theVector.IsNull()) return NULL; - - Handle(GEOM_Function) aLastFunction = theObject->GetLastFunction(); - if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be moved - - //Add a new Copy object - Handle(GEOM_Object) aCopy = GetEngine()->AddObject(GetDocID(), theObject->GetType()); - - //Add a translate function - Handle(GEOM_Function) aFunction = - aCopy->AddFunction(GEOMImpl_TranslateDriver::GetID(), TRANSLATE_VECTOR_COPY); - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_TranslateDriver::GetID()) return NULL; - - GEOMImpl_ITranslate aTI(aFunction); - aTI.SetVector(theVector->GetLastFunction()); -// aTI.SetShape(theObject->GetValue()); - aTI.SetOriginal(aLastFunction); - - //Compute the translation - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Translation driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aCopy << " = geompy.MakeTranslationVector(" - << theObject << ", " << theVector << ")"; - - SetErrorCode(OK); - return aCopy; -} - -//============================================================================= -/*! - * Translate1D - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ITransformOperations::Translate1D - (Handle(GEOM_Object) theObject, Handle(GEOM_Object) theVector, - double theStep, Standard_Integer theNbTimes) -{ - SetErrorCode(KO); - - if (theObject.IsNull() || theVector.IsNull()) return NULL; - - Handle(GEOM_Function) aLastFunction = theObject->GetLastFunction(); - if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be moved - - //Add a new Copy object - Handle(GEOM_Object) aCopy = GetEngine()->AddObject(GetDocID(), theObject->GetType()); - - //Add a translate function - Handle(GEOM_Function) aFunction = - aCopy->AddFunction(GEOMImpl_TranslateDriver::GetID(), TRANSLATE_1D); - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_TranslateDriver::GetID()) return NULL; - - GEOMImpl_ITranslate aTI(aFunction); - aTI.SetVector(theVector->GetLastFunction()); - aTI.SetOriginal(aLastFunction); - aTI.SetStep1(theStep); - aTI.SetNbIter1(theNbTimes); - - //Compute the translation - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Translation driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aCopy << " = geompy.MakeMultiTranslation1D(" - << theObject << ", " << theVector << ", " << theStep << ", " << theNbTimes << ")"; - - SetErrorCode(OK); - return aCopy; -} - -//============================================================================= -/*! - * Translate2D - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ITransformOperations::Translate2D (Handle(GEOM_Object) theObject, - Handle(GEOM_Object) theVector, - double theStep1, - Standard_Integer theNbTimes1, - Handle(GEOM_Object) theVector2, - double theStep2, - Standard_Integer theNbTimes2) -{ - SetErrorCode(KO); - - if (theObject.IsNull() || theVector.IsNull() || theVector2.IsNull()) return NULL; - - Handle(GEOM_Function) aLastFunction = theObject->GetLastFunction(); - if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be moved - - //Add a new Copy object - Handle(GEOM_Object) aCopy = GetEngine()->AddObject(GetDocID(), theObject->GetType()); - - //Add a translate function - Handle(GEOM_Function) aFunction = - aCopy->AddFunction(GEOMImpl_TranslateDriver::GetID(), TRANSLATE_2D); - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_TranslateDriver::GetID()) return NULL; - - GEOMImpl_ITranslate aTI(aFunction); - aTI.SetVector(theVector->GetLastFunction()); - aTI.SetVector2(theVector2->GetLastFunction()); - aTI.SetOriginal(aLastFunction); - aTI.SetStep1(theStep1); - aTI.SetNbIter1(theNbTimes1); - aTI.SetStep2(theStep2); - aTI.SetNbIter2(theNbTimes2); - - //Compute the translation - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Translation driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aCopy << " = geompy.MakeMultiTranslation2D(" - << theObject << ", " << theVector << ", " << theStep1 << ", " << theNbTimes1 - << ", " << theVector2 << ", " << theStep2 << ", " << theNbTimes2 << ")"; - - SetErrorCode(OK); - return aCopy; -} - - -//============================================================================= -/*! - * MirrorPlane - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ITransformOperations::MirrorPlane - (Handle(GEOM_Object) theObject, Handle(GEOM_Object) thePlane) -{ - SetErrorCode(KO); - - if (theObject.IsNull() || thePlane.IsNull()) return NULL; - - Handle(GEOM_Function) aLastFunction = theObject->GetLastFunction(); - if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be mirrored - - // Get last functions of the arguments - Handle(GEOM_Function) aPF = thePlane->GetLastFunction(); - - //Add a mirror function - Handle(GEOM_Function) aFunction = - theObject->AddFunction(GEOMImpl_MirrorDriver::GetID(), MIRROR_PLANE); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_MirrorDriver::GetID()) return NULL; - - GEOMImpl_IMirror aTI (aFunction); - aTI.SetPlane(aPF); - aTI.SetOriginal(aLastFunction); - - //Compute the mirror - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Mirror driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << "geompy.TrsfOp.MirrorPlane(" - << theObject << ", " << thePlane << ")"; - - SetErrorCode(OK); - return theObject; -} - -//============================================================================= -/*! - * MirrorPlaneCopy - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ITransformOperations::MirrorPlaneCopy - (Handle(GEOM_Object) theObject, Handle(GEOM_Object) thePlane) -{ - SetErrorCode(KO); - - if (theObject.IsNull() || thePlane.IsNull()) return NULL; - - Handle(GEOM_Function) aLastFunction = theObject->GetLastFunction(); - if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be mirrored - - //Add a new Copy object - Handle(GEOM_Object) aCopy = GetEngine()->AddObject(GetDocID(), theObject->GetType()); - - //Add a mirror function - Handle(GEOM_Function) aFunction = - aCopy->AddFunction(GEOMImpl_MirrorDriver::GetID(), MIRROR_PLANE_COPY); - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_MirrorDriver::GetID()) return NULL; - - GEOMImpl_IMirror aTI (aFunction); - aTI.SetPlane(thePlane->GetLastFunction()); - aTI.SetOriginal(aLastFunction); - - //Compute the mirror - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Mirror driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aCopy << " = geompy.MakeMirrorByPlane(" - << theObject << ", " << thePlane << ")"; - - SetErrorCode(OK); - return aCopy; -} - -//============================================================================= -/*! - * MirrorPoint - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ITransformOperations::MirrorPoint - (Handle(GEOM_Object) theObject, Handle(GEOM_Object) thePoint) -{ - SetErrorCode(KO); - - if (theObject.IsNull() || thePoint.IsNull()) return NULL; - - Handle(GEOM_Function) aLastFunction = theObject->GetLastFunction(); - if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be mirrored - - // Get last functions of the arguments - Handle(GEOM_Function) aPF = thePoint->GetLastFunction(); - - //Add a mirror function - Handle(GEOM_Function) aFunction = - theObject->AddFunction(GEOMImpl_MirrorDriver::GetID(), MIRROR_POINT); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_MirrorDriver::GetID()) return NULL; - - GEOMImpl_IMirror aTI (aFunction); - aTI.SetPoint(aPF); - aTI.SetOriginal(aLastFunction); - - //Compute the mirror - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Mirror driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << "geompy.TrsfOp.MirrorPoint(" - << theObject << ", " << thePoint << ")"; - - SetErrorCode(OK); - return NULL; -} - -//============================================================================= -/*! - * MirrorPointCopy - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ITransformOperations::MirrorPointCopy - (Handle(GEOM_Object) theObject, Handle(GEOM_Object) thePoint) -{ - SetErrorCode(KO); - - if (theObject.IsNull() || thePoint.IsNull()) return NULL; - - Handle(GEOM_Function) aLastFunction = theObject->GetLastFunction(); - if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be mirrored - - //Add a new Copy object - Handle(GEOM_Object) aCopy = GetEngine()->AddObject(GetDocID(), theObject->GetType()); - - //Add a mirror function - Handle(GEOM_Function) aFunction = - aCopy->AddFunction(GEOMImpl_MirrorDriver::GetID(), MIRROR_POINT_COPY); - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_MirrorDriver::GetID()) return NULL; - - GEOMImpl_IMirror aTI (aFunction); - aTI.SetPoint(thePoint->GetLastFunction()); - aTI.SetOriginal(aLastFunction); - - //Compute the mirror - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Mirror driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aCopy << " = geompy.MakeMirrorByPoint(" - << theObject << ", " << thePoint << ")"; - - SetErrorCode(OK); - return aCopy; -} - -//============================================================================= -/*! - * MirrorAxis - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ITransformOperations::MirrorAxis - (Handle(GEOM_Object) theObject, Handle(GEOM_Object) theAxis) -{ - SetErrorCode(KO); - - if (theObject.IsNull() || theAxis.IsNull()) return NULL; - - Handle(GEOM_Function) aLastFunction = theObject->GetLastFunction(); - if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be mirrored - - // Get last functions of the arguments - Handle(GEOM_Function) anAF = theAxis->GetLastFunction(); - - //Add a mirror function - Handle(GEOM_Function) aFunction = - theObject->AddFunction(GEOMImpl_MirrorDriver::GetID(), MIRROR_AXIS); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_MirrorDriver::GetID()) return NULL; - - GEOMImpl_IMirror aTI (aFunction); - aTI.SetAxis(anAF); - aTI.SetOriginal(aLastFunction); - - //Compute the mirror - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Mirror driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << "geompy.TrsfOp.MirrorAxis(" - << theObject << ", " << theAxis << ")"; - - SetErrorCode(OK); - return NULL; -} - -//============================================================================= -/*! - * MirrorAxisCopy - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ITransformOperations::MirrorAxisCopy - (Handle(GEOM_Object) theObject, Handle(GEOM_Object) theAxis) -{ - SetErrorCode(KO); - - if (theObject.IsNull() || theAxis.IsNull()) return NULL; - - Handle(GEOM_Function) aLastFunction = theObject->GetLastFunction(); - if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be mirrored - - //Add a new Copy object - Handle(GEOM_Object) aCopy = GetEngine()->AddObject(GetDocID(), theObject->GetType()); - - //Add a mirror function - Handle(GEOM_Function) aFunction = - aCopy->AddFunction(GEOMImpl_MirrorDriver::GetID(), MIRROR_AXIS_COPY); - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_MirrorDriver::GetID()) return NULL; - - GEOMImpl_IMirror aTI (aFunction); - aTI.SetAxis(theAxis->GetLastFunction()); - aTI.SetOriginal(aLastFunction); - - //Compute the mirror - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Mirror driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aCopy << " = geompy.MakeMirrorByAxis(" - << theObject << ", " << theAxis << ")"; - - SetErrorCode(OK); - return aCopy; -} - - -//============================================================================= -/*! - * OffsetShape - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ITransformOperations::OffsetShape - (Handle(GEOM_Object) theObject, double theOffset) -{ - SetErrorCode(KO); - - if (theObject.IsNull()) return NULL; - - Handle(GEOM_Function) anOriginal = theObject->GetLastFunction(); - if (anOriginal.IsNull()) return NULL; //There is no function which creates an object to be offset - - //Add a new Offset function - Handle(GEOM_Function) aFunction = - theObject->AddFunction(GEOMImpl_OffsetDriver::GetID(), OFFSET_SHAPE); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_OffsetDriver::GetID()) return NULL; - - GEOMImpl_IOffset aTI (aFunction); - aTI.SetShape(anOriginal); - aTI.SetValue(theOffset); - - //Compute the offset - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Offset driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << "geompy.TrsfOp.OffsetShape(" - << theObject << ", " << theOffset << ")"; - - SetErrorCode(OK); - return theObject; -} - -//============================================================================= -/*! - * OffsetShapeCopy - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ITransformOperations::OffsetShapeCopy - (Handle(GEOM_Object) theObject, double theOffset) -{ - SetErrorCode(KO); - - if (theObject.IsNull()) return NULL; - - Handle(GEOM_Function) anOriginal = theObject->GetLastFunction(); - if (anOriginal.IsNull()) return NULL; //There is no function which creates an object to be offset - - //Add a new Copy object - Handle(GEOM_Object) aCopy = GetEngine()->AddObject(GetDocID(), theObject->GetType()); - - //Add a new Offset function - Handle(GEOM_Function) aFunction = - aCopy->AddFunction(GEOMImpl_OffsetDriver::GetID(), OFFSET_SHAPE_COPY); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_OffsetDriver::GetID()) return NULL; - - GEOMImpl_IOffset aTI (aFunction); - aTI.SetShape(anOriginal); - aTI.SetValue(theOffset); - - //Compute the offset - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Offset driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aCopy << " = geompy.MakeOffset(" - << theObject << ", " << theOffset << ")"; - - SetErrorCode(OK); - return aCopy; -} - - -//============================================================================= -/*! - * ScaleShape - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ITransformOperations::ScaleShape - (Handle(GEOM_Object) theObject, Handle(GEOM_Object) thePoint, double theFactor) -{ - SetErrorCode(KO); - - if (theObject.IsNull() || thePoint.IsNull()) return NULL; - - Handle(GEOM_Function) anOriginal = theObject->GetLastFunction(); - if (anOriginal.IsNull()) return NULL; //There is no function which creates an object to be scaled - - // Get last functions of the arguments - Handle(GEOM_Function) aPF = thePoint->GetLastFunction(); - - //Add a scale function - Handle(GEOM_Function) aFunction = - theObject->AddFunction(GEOMImpl_ScaleDriver::GetID(), SCALE_SHAPE); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_ScaleDriver::GetID()) return NULL; - - GEOMImpl_IScale aTI (aFunction); - aTI.SetShape(anOriginal); - aTI.SetPoint(aPF); - aTI.SetFactor(theFactor); - - //Compute the scale - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Scale driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << "geompy.TrsfOp.ScaleShape(" - << theObject << ", " << thePoint << ", " << theFactor << ")"; - - SetErrorCode(OK); - return theObject; -} - -//============================================================================= -/*! - * ScaleShapeCopy - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ITransformOperations::ScaleShapeCopy - (Handle(GEOM_Object) theObject, Handle(GEOM_Object) thePoint, double theFactor) -{ - SetErrorCode(KO); - - if (theObject.IsNull() || thePoint.IsNull()) return NULL; - - Handle(GEOM_Function) anOriginal = theObject->GetLastFunction(); - if (anOriginal.IsNull()) return NULL; //There is no function which creates an object to be scaled - - //Add a new Copy object - Handle(GEOM_Object) aCopy = GetEngine()->AddObject(GetDocID(), theObject->GetType()); - - //Add a scale function - Handle(GEOM_Function) aFunction = - aCopy->AddFunction(GEOMImpl_ScaleDriver::GetID(), SCALE_SHAPE_COPY); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_ScaleDriver::GetID()) return NULL; - - GEOMImpl_IScale aTI (aFunction); - aTI.SetShape(anOriginal); - aTI.SetPoint(thePoint->GetLastFunction()); - aTI.SetFactor(theFactor); - - //Compute the scale - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Scale driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aCopy << " = geompy.MakeScaleTransform(" - << theObject << ", " << thePoint << ", " << theFactor << ")"; - - SetErrorCode(OK); - return aCopy; -} - -//============================================================================= -/*! - * PositionShape - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ITransformOperations::PositionShape - (Handle(GEOM_Object) theObject, Handle(GEOM_Object) theStartLCS, Handle(GEOM_Object) theEndLCS) -{ - SetErrorCode(KO); - - if (theObject.IsNull() || theStartLCS.IsNull() || theEndLCS.IsNull()) return NULL; - - Handle(GEOM_Function) anOriginal = theObject->GetLastFunction(); - if (anOriginal.IsNull()) return NULL; //There is no function which creates an object to be set in position - - // Get last functions of the arguments - Handle(GEOM_Function) aStartLCS = theStartLCS->GetLastFunction(); - Handle(GEOM_Function) aEndLCS = theEndLCS->GetLastFunction(); - - //Add a Position function - Handle(GEOM_Function) aFunction = - theObject->AddFunction(GEOMImpl_PositionDriver::GetID(), POSITION_SHAPE); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_PositionDriver::GetID()) return NULL; - - GEOMImpl_IPosition aTI (aFunction); - aTI.SetShape(anOriginal); - aTI.SetStartLCS(aStartLCS); - aTI.SetEndLCS(aEndLCS); - - //Compute the Position - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Position driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << "geompy.TrsfOp.PositionShape(" - << theObject << ", " << theStartLCS << ", " << theEndLCS << ")"; - - SetErrorCode(OK); - return theObject; -} - -//============================================================================= -/*! - * PositionShapeCopy - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ITransformOperations::PositionShapeCopy - (Handle(GEOM_Object) theObject, Handle(GEOM_Object) theStartLCS, Handle(GEOM_Object) theEndLCS) -{ - SetErrorCode(KO); - - if (theObject.IsNull() || theStartLCS.IsNull() || theEndLCS.IsNull()) return NULL; - - Handle(GEOM_Function) anOriginal = theObject->GetLastFunction(); - if (anOriginal.IsNull()) return NULL; //There is no function which creates an object to be set in position - - //Add a new Copy object - Handle(GEOM_Object) aCopy = GetEngine()->AddObject(GetDocID(), theObject->GetType()); - - //Add a position function - Handle(GEOM_Function) aFunction = - aCopy->AddFunction(GEOMImpl_PositionDriver::GetID(), POSITION_SHAPE_COPY); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_PositionDriver::GetID()) return NULL; - - GEOMImpl_IPosition aTI (aFunction); - aTI.SetShape(anOriginal); - aTI.SetStartLCS(theStartLCS->GetLastFunction()); - aTI.SetEndLCS(theEndLCS->GetLastFunction()); - - //Compute the position - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Position driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aCopy << " = geompy.MakePosition(" - << theObject << ", " << theStartLCS << ", " << theEndLCS << ")"; - - SetErrorCode(OK); - return aCopy; -} - -//============================================================================= -/*! - * Rotate - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ITransformOperations::Rotate (Handle(GEOM_Object) theObject, - Handle(GEOM_Object) theAxis, - double theAngle) -{ - SetErrorCode(KO); - - if (theObject.IsNull() || theAxis.IsNull()) return NULL; - - Handle(GEOM_Function) aFunction, aLastFunction = theObject->GetLastFunction(); - if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be rotated - - // Get last functions of the arguments - Handle(GEOM_Function) anAF = theAxis->GetLastFunction(); - - //Add a rotate function - aFunction = theObject->AddFunction(GEOMImpl_RotateDriver::GetID(), ROTATE); - - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_RotateDriver::GetID()) return NULL; - - GEOMImpl_IRotate aRI(aFunction); - aRI.SetAxis(anAF); - aRI.SetOriginal(aLastFunction); - aRI.SetAngle(theAngle); - - //Compute the translation - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Rotate driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << "geompy.TrsfOp.Rotate(" << theObject - << ", " << theAxis << ", " << theAngle * 180.0 / PI << "*math.pi/180.0)"; - - SetErrorCode(OK); - return theObject; -} - -//============================================================================= -/*! - * Rotate - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ITransformOperations::RotateCopy (Handle(GEOM_Object) theObject, Handle(GEOM_Object) theAxis, double theAngle) -{ - SetErrorCode(KO); - - if (theObject.IsNull() || theAxis.IsNull()) return NULL; - - Handle(GEOM_Function) aFunction, aLastFunction = theObject->GetLastFunction(); - if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be rotated - - //Add a new Copy object - Handle(GEOM_Object) aCopy = GetEngine()->AddObject(GetDocID(), theObject->GetType()); - - //Add a rotate function - aFunction = aCopy->AddFunction(GEOMImpl_RotateDriver::GetID(), ROTATE_COPY); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_RotateDriver::GetID()) return NULL; - - GEOMImpl_IRotate aRI(aFunction); - aRI.SetAxis(theAxis->GetLastFunction()); - aRI.SetOriginal(aLastFunction); - aRI.SetAngle(theAngle); - - //Compute the translation - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Rotate driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aCopy << " = geompy.MakeRotation(" << theObject - << ", " << theAxis << ", " << theAngle * 180.0 / PI << "*math.pi/180.0)"; - - SetErrorCode(OK); - return aCopy; -} - -//============================================================================= -/*! - * Rotate1D - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ITransformOperations::Rotate1D (Handle(GEOM_Object) theObject, - Handle(GEOM_Object) theAxis, - Standard_Integer theNbTimes) -{ - SetErrorCode(KO); - - if (theObject.IsNull() || theAxis.IsNull()) return NULL; - - Handle(GEOM_Function) aFunction, aLastFunction = theObject->GetLastFunction(); - if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be rotated - - //Add a new Copy object - Handle(GEOM_Object) aCopy = GetEngine()->AddObject(GetDocID(), theObject->GetType()); - - //Add a rotate function - aFunction = aCopy->AddFunction(GEOMImpl_RotateDriver::GetID(), ROTATE_1D); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_RotateDriver::GetID()) return NULL; - - GEOMImpl_IRotate aRI(aFunction); - aRI.SetOriginal(aLastFunction); - aRI.SetAxis(theAxis->GetLastFunction()); - aRI.SetNbIter1(theNbTimes); - - //Compute the translation - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Rotate driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aCopy << " = geompy.MultiRotate1D(" - << theObject << ", " << theAxis << ", " << theNbTimes << ")"; - - SetErrorCode(OK); - return aCopy; -} - -//============================================================================= -/*! - * Rotate2D - */ -//============================================================================= -Handle(GEOM_Object) GEOMImpl_ITransformOperations::Rotate2D (Handle(GEOM_Object) theObject, - Handle(GEOM_Object) theAxis, - double theAngle, - Standard_Integer theNbTimes1, - double theStep, - Standard_Integer theNbTimes2) -{ - SetErrorCode(KO); - - if (theObject.IsNull() || theAxis.IsNull()) return NULL; - - Handle(GEOM_Function) aFunction, aLastFunction = theObject->GetLastFunction(); - if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be rotated - - //Add a new Copy object - Handle(GEOM_Object) aCopy = GetEngine()->AddObject(GetDocID(), theObject->GetType()); - - //Add a rotate function - aFunction = aCopy->AddFunction(GEOMImpl_RotateDriver::GetID(), ROTATE_2D); - if (aFunction.IsNull()) return NULL; - - //Check if the function is set correctly - if (aFunction->GetDriverGUID() != GEOMImpl_RotateDriver::GetID()) return NULL; - - GEOMImpl_IRotate aRI(aFunction); - aRI.SetAxis(theAxis->GetLastFunction()); - aRI.SetOriginal(aLastFunction); - aRI.SetNbIter1(theNbTimes1); - aRI.SetNbIter2(theNbTimes2); - aRI.SetAngle(theAngle); - aRI.SetStep(theStep); - - //Compute the translation - try { - if (!GetSolver()->ComputeFunction(aFunction)) { - SetErrorCode("Rotate driver failed"); - return NULL; - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - SetErrorCode(aFail->GetMessageString()); - return NULL; - } - - //Make a Python command - GEOM::TPythonDump(aFunction) << aCopy << " = geompy.MultiRotate2D(" - << theObject << ", " << theAxis << ", " << theAngle << ", " - << theNbTimes1 << ", " << theStep << ", " << theNbTimes2 << ")"; - - SetErrorCode(OK); - return aCopy; -} diff --git a/src/GEOMImpl/GEOMImpl_ITransformOperations.hxx b/src/GEOMImpl/GEOMImpl_ITransformOperations.hxx deleted file mode 100644 index fe40e5917..000000000 --- a/src/GEOMImpl/GEOMImpl_ITransformOperations.hxx +++ /dev/null @@ -1,93 +0,0 @@ - -#ifndef _GEOMImpl_ITransformOperations_HXX_ -#define _GEOMImpl_ITransformOperations_HXX_ - -#include "Utils_SALOME_Exception.hxx" -#include "GEOM_IOperations.hxx" -#include "GEOM_Engine.hxx" -#include "GEOM_Object.hxx" -#include - -class GEOMImpl_ITransformOperations : public GEOM_IOperations { - public: - Standard_EXPORT GEOMImpl_ITransformOperations(GEOM_Engine* theEngine, int theDocID); - Standard_EXPORT ~GEOMImpl_ITransformOperations(); - - Standard_EXPORT Handle(GEOM_Object) TranslateTwoPoints (Handle(GEOM_Object) theObject, - Handle(GEOM_Object) thePoint1, - Handle(GEOM_Object) thePoint2); - - Standard_EXPORT Handle(GEOM_Object) TranslateTwoPointsCopy (Handle(GEOM_Object) theObject, - Handle(GEOM_Object) thePoint1, - Handle(GEOM_Object) thePoint2); - - Standard_EXPORT Handle(GEOM_Object) TranslateDXDYDZ (Handle(GEOM_Object) theObject, double theX, double theY, double theZ); - - Standard_EXPORT Handle(GEOM_Object) TranslateDXDYDZCopy (Handle(GEOM_Object) theObject, double theX, double theY, double theZ); - - Standard_EXPORT Handle(GEOM_Object) TranslateVector (Handle(GEOM_Object) theObject, - Handle(GEOM_Object) theVector); - - Standard_EXPORT Handle(GEOM_Object) TranslateVectorCopy (Handle(GEOM_Object) theObject, - Handle(GEOM_Object) theVector); - - Standard_EXPORT Handle(GEOM_Object) Translate1D (Handle(GEOM_Object) theObject, Handle(GEOM_Object) theVector, double theStep, Standard_Integer theNbTimes); - - Standard_EXPORT Handle(GEOM_Object) Translate2D (Handle(GEOM_Object) theObject, Handle(GEOM_Object) theVector, double theStep1, Standard_Integer theNbTimes1, - Handle(GEOM_Object) theVector2, double theStep2, Standard_Integer theNbTimes2); - - Standard_EXPORT Handle(GEOM_Object) MirrorPlane (Handle(GEOM_Object) theObject, - Handle(GEOM_Object) thePlane); - - Standard_EXPORT Handle(GEOM_Object) MirrorPlaneCopy (Handle(GEOM_Object) theObject, - Handle(GEOM_Object) thePlane); - - Standard_EXPORT Handle(GEOM_Object) MirrorAxis (Handle(GEOM_Object) theObject, - Handle(GEOM_Object) theAxis); - - Standard_EXPORT Handle(GEOM_Object) MirrorAxisCopy (Handle(GEOM_Object) theObject, - Handle(GEOM_Object) theAxis); - - Standard_EXPORT Handle(GEOM_Object) MirrorPoint (Handle(GEOM_Object) theObject, - Handle(GEOM_Object) thePoint); - - Standard_EXPORT Handle(GEOM_Object) MirrorPointCopy (Handle(GEOM_Object) theObject, - Handle(GEOM_Object) thePoint); - - Standard_EXPORT Handle(GEOM_Object) OffsetShape (Handle(GEOM_Object) theObject, - double theOffset); - - Standard_EXPORT Handle(GEOM_Object) OffsetShapeCopy (Handle(GEOM_Object) theObject, - double theOffset); - - Standard_EXPORT Handle(GEOM_Object) ScaleShape (Handle(GEOM_Object) theObject, - Handle(GEOM_Object) thePoint, - double theFactor); - - Standard_EXPORT Handle(GEOM_Object) ScaleShapeCopy (Handle(GEOM_Object) theObject, - Handle(GEOM_Object) thePoint, - double theFactor); - - Standard_EXPORT Handle(GEOM_Object) PositionShape (Handle(GEOM_Object) theObject, - Handle(GEOM_Object) theStartLCS, - Handle(GEOM_Object) theEndLCS); - - Standard_EXPORT Handle(GEOM_Object) PositionShapeCopy (Handle(GEOM_Object) theObject, - Handle(GEOM_Object) theStartLCS, - Handle(GEOM_Object) theEndLCS); - - Standard_EXPORT Handle(GEOM_Object) Rotate (Handle(GEOM_Object) theObject, Handle(GEOM_Object) theAxis, double theAngle); - - Standard_EXPORT Handle(GEOM_Object) RotateCopy (Handle(GEOM_Object) theObject, Handle(GEOM_Object) theAxis, double theAngle); - - Standard_EXPORT Handle(GEOM_Object) Rotate1D (Handle(GEOM_Object) theObject, Handle(GEOM_Object) theAxis, Standard_Integer theNbTimes); - - Standard_EXPORT Handle(GEOM_Object) Rotate2D (Handle(GEOM_Object) theObject, - Handle(GEOM_Object) theAxis, - double theAngle, - Standard_Integer theNbTimes1, - double theStep, - Standard_Integer theNbTimes2); -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_ITranslate.hxx b/src/GEOMImpl/GEOMImpl_ITranslate.hxx deleted file mode 100755 index 83566e04d..000000000 --- a/src/GEOMImpl/GEOMImpl_ITranslate.hxx +++ /dev/null @@ -1,76 +0,0 @@ -//NOTE: This is an intreface to a function for the Translate creation. - - -#include "GEOM_Function.hxx" - -#define TRANSLATE_ARG_POINT1 1 -#define TRANSLATE_ARG_POINT2 2 -#define TRANSLATE_ARG_VECTOR 3 -#define TRANSLATE_ARG_ORIGINAL 6 -#define TRANSLATE_ARG_STEP1 7 -#define TRANSLATE_ARG_NBITER1 8 -#define TRANSLATE_ARG_STEP2 9 -#define TRANSLATE_ARG_NBITER2 10 -#define TRANSLATE_ARG_VECTOR2 11 -#define TRANSLATE_ARG_DX 12 -#define TRANSLATE_ARG_DY 13 -#define TRANSLATE_ARG_DZ 14 - -class GEOMImpl_ITranslate -{ - public: - - GEOMImpl_ITranslate(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetPoint1(Handle(GEOM_Function) thePoint1) { _func->SetReference(TRANSLATE_ARG_POINT1, thePoint1); } - - Handle(GEOM_Function) GetPoint1() { return _func->GetReference(TRANSLATE_ARG_POINT1); } - - void SetPoint2(Handle(GEOM_Function) thePoint2) { _func->SetReference(TRANSLATE_ARG_POINT2, thePoint2); } - - Handle(GEOM_Function) GetPoint2() { return _func->GetReference(TRANSLATE_ARG_POINT2); } - - void SetVector(Handle(GEOM_Function) theVector) { _func->SetReference(TRANSLATE_ARG_VECTOR, theVector); } - - Handle(GEOM_Function) GetVector() { return _func->GetReference(TRANSLATE_ARG_VECTOR); } - - void SetOriginal(Handle(GEOM_Function) theOriginal) { _func->SetReference(TRANSLATE_ARG_ORIGINAL, theOriginal); } - - Handle(GEOM_Function) GetOriginal() { return _func->GetReference(TRANSLATE_ARG_ORIGINAL); } - - void SetStep1(double theStep) { return _func->SetReal(TRANSLATE_ARG_STEP1, theStep); } - - double GetStep1() { return _func->GetReal(TRANSLATE_ARG_STEP1); } - - void SetNbIter1(int theNbIter) { _func->SetInteger(TRANSLATE_ARG_NBITER1, theNbIter); } - - int GetNbIter1() { return _func->GetInteger(TRANSLATE_ARG_NBITER1); } - - void SetStep2(double theStep) { return _func->SetReal(TRANSLATE_ARG_STEP2, theStep); } - - double GetStep2() { return _func->GetReal(TRANSLATE_ARG_STEP2); } - - void SetNbIter2(int theNbIter) { _func->SetInteger(TRANSLATE_ARG_NBITER2, theNbIter); } - - int GetNbIter2() { return _func->GetInteger(TRANSLATE_ARG_NBITER2); } - - void SetVector2(Handle(GEOM_Function) theVector) { _func->SetReference(TRANSLATE_ARG_VECTOR2, theVector); } - - Handle(GEOM_Function) GetVector2() { return _func->GetReference(TRANSLATE_ARG_VECTOR2); } - - void SetDX(double theDX) { return _func->SetReal(TRANSLATE_ARG_DX, theDX); } - - double GetDX() { return _func->GetReal(TRANSLATE_ARG_DX); } - - void SetDY(double theDY) { return _func->SetReal(TRANSLATE_ARG_DY, theDY); } - - double GetDY() { return _func->GetReal(TRANSLATE_ARG_DY); } - - void SetDZ(double theDZ) { return _func->SetReal(TRANSLATE_ARG_DZ, theDZ); } - - double GetDZ() { return _func->GetReal(TRANSLATE_ARG_DZ); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_IVector.hxx b/src/GEOMImpl/GEOMImpl_IVector.hxx deleted file mode 100644 index e1a344b8d..000000000 --- a/src/GEOMImpl/GEOMImpl_IVector.hxx +++ /dev/null @@ -1,36 +0,0 @@ -//NOTE: This is an intreface to a function for the vector creation. - - -#include "GEOM_Function.hxx" - -#define VEC_ARG_DX 1 -#define VEC_ARG_DY 2 -#define VEC_ARG_DZ 3 - -#define VEC_ARG_PNT1 4 -#define VEC_ARG_PNT2 5 - -class GEOMImpl_IVector -{ - public: - - GEOMImpl_IVector(Handle(GEOM_Function) theFunction): _func(theFunction) {} - - void SetDX(double theDX) { _func->SetReal(VEC_ARG_DX, theDX); } - void SetDY(double theDY) { _func->SetReal(VEC_ARG_DY, theDY); } - void SetDZ(double theDZ) { _func->SetReal(VEC_ARG_DZ, theDZ); } - - double GetDX() { return _func->GetReal(VEC_ARG_DX); } - double GetDY() { return _func->GetReal(VEC_ARG_DY); } - double GetDZ() { return _func->GetReal(VEC_ARG_DZ); } - - void SetPoint1(Handle(GEOM_Function) theRef) { _func->SetReference(VEC_ARG_PNT1, theRef); } - void SetPoint2(Handle(GEOM_Function) theRef) { _func->SetReference(VEC_ARG_PNT2, theRef); } - - Handle(GEOM_Function) GetPoint1() { return _func->GetReference(VEC_ARG_PNT1); } - Handle(GEOM_Function) GetPoint2() { return _func->GetReference(VEC_ARG_PNT2); } - - private: - - Handle(GEOM_Function) _func; -}; diff --git a/src/GEOMImpl/GEOMImpl_ImportDriver.cxx b/src/GEOMImpl/GEOMImpl_ImportDriver.cxx deleted file mode 100644 index fb4d4e0f3..000000000 --- a/src/GEOMImpl/GEOMImpl_ImportDriver.cxx +++ /dev/null @@ -1,143 +0,0 @@ - -#include - -#include -#include -#include -#include - -#include "utilities.h" - -#include - -#include -#include - -#ifdef WNT -#include -#else -#include -#endif - -#ifdef WNT -#define LibHandle HMODULE -#define LoadLib( name ) LoadLibrary( name ) -#define GetProc GetProcAddress -#define UnLoadLib( handle ) FreeLibrary( handle ); -#else -#define LibHandle void* -#define LoadLib( name ) dlopen( name, RTLD_LAZY ) -#define GetProc dlsym -#define UnLoadLib( handle ) dlclose( handle ); -#endif - -typedef TopoDS_Shape (*funcPoint)(const TCollection_AsciiString&, TCollection_AsciiString&); - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_ImportDriver::GetID() -{ - static Standard_GUID aImportDriver("FF1BBB60-5D14-4df2-980B-3A668264EA16"); - return aImportDriver; -} - - -//======================================================================= -//function : GEOMImpl_ImportDriver -//purpose : -//======================================================================= -GEOMImpl_ImportDriver::GEOMImpl_ImportDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_ImportDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - GEOMImpl_IImportExport aCI (aFunction); - //Standard_Integer aType = aFunction->GetType(); - - // retrieve the file and plugin library names - TCollection_AsciiString aFileName = aCI.GetFileName(); - TCollection_AsciiString aLibName = aCI.GetPluginName(); - if (aFileName.IsEmpty() || aLibName.IsEmpty()) - return 0; - - // load plugin library - LibHandle anImportLib = LoadLib( aLibName.ToCString() ); - funcPoint fp = 0; - if ( anImportLib ) - fp = (funcPoint)GetProc( anImportLib, "Import" ); - - if ( !fp ) - return 0; - - // perform the import - TCollection_AsciiString anError; - TopoDS_Shape aShape = fp( aFileName, anError ); - - // unload plugin library - UnLoadLib( anImportLib ); - - if ( aShape.IsNull() ) { - StdFail_NotDone::Raise(anError.ToCString()); - return 0; - } - - // set the function result - aFunction->SetValue(aShape); - - log.SetTouched(Label()); - - return 1; -} - - -//======================================================================= -//function : GEOMImpl_ImportDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_ImportDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_ImportDriver", - sizeof(GEOMImpl_ImportDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= -const Handle(GEOMImpl_ImportDriver) Handle(GEOMImpl_ImportDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_ImportDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_ImportDriver))) { - _anOtherObject = Handle(GEOMImpl_ImportDriver)((Handle(GEOMImpl_ImportDriver)&)AnObject); - } - } - - return _anOtherObject ; -} diff --git a/src/GEOMImpl/GEOMImpl_ImportDriver.hxx b/src/GEOMImpl/GEOMImpl_ImportDriver.hxx deleted file mode 100644 index 8fcb48451..000000000 --- a/src/GEOMImpl/GEOMImpl_ImportDriver.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// File : GEOMImpl_ImportDriver.ixx -// Module : GEOMImpl - -#ifndef _GEOMImpl_ImportDriver_HeaderFile -#define _GEOMImpl_ImportDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_ImportDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_ImportDriver); - -class Handle(GEOMImpl_ImportDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_ImportDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_ImportDriver)(const Handle(GEOMImpl_ImportDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_ImportDriver)(const GEOMImpl_ImportDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_ImportDriver)& operator=(const Handle(GEOMImpl_ImportDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_ImportDriver)& operator=(const GEOMImpl_ImportDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_ImportDriver* operator->() - { - return (GEOMImpl_ImportDriver *)ControlAccess(); - } - - GEOMImpl_ImportDriver* operator->() const - { - return (GEOMImpl_ImportDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_ImportDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_ImportDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_ImportDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_ImportDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_ImportDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_ImportDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_ImportDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_ImportDriver) == AType || TFunction_Driver::IsKind(AType)); } - - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_LineDriver.cxx b/src/GEOMImpl/GEOMImpl_LineDriver.cxx deleted file mode 100644 index b76dd1e5e..000000000 --- a/src/GEOMImpl/GEOMImpl_LineDriver.cxx +++ /dev/null @@ -1,155 +0,0 @@ - -#include - -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_LineDriver::GetID() -{ - static Standard_GUID aLineDriver("FF1BBB06-5D14-4df2-980B-3A668264EA16"); - return aLineDriver; -} - - -//======================================================================= -//function : GEOMImpl_LineDriver -//purpose : -//======================================================================= -GEOMImpl_LineDriver::GEOMImpl_LineDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_LineDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - GEOMImpl_ILine aPI (aFunction); - Standard_Integer aType = aFunction->GetType(); - - TopoDS_Shape aShape; - - if (aType == LINE_TWO_PNT) { - Handle(GEOM_Function) aRefPnt1 = aPI.GetPoint1(); - Handle(GEOM_Function) aRefPnt2 = aPI.GetPoint2(); - TopoDS_Shape aShape1 = aRefPnt1->GetValue(); - TopoDS_Shape aShape2 = aRefPnt2->GetValue(); - if (aShape1.ShapeType() != TopAbs_VERTEX || - aShape2.ShapeType() != TopAbs_VERTEX) return 0; - if (aShape1.IsSame(aShape2)) { - Standard_ConstructionError::Raise("The end points must be different"); - } - gp_Pnt P1 = BRep_Tool::Pnt(TopoDS::Vertex(aShape1)); - gp_Pnt P2 = BRep_Tool::Pnt(TopoDS::Vertex(aShape2)); - if (P1.Distance(P2) < Precision::Confusion()) { - Standard_ConstructionError::Raise("The end points are too close"); - } - aShape = BRepBuilderAPI_MakeEdge(P1, P2).Shape(); - - } else if (aType == LINE_PNT_DIR) { - Handle(GEOM_Function) aRefPnt = aPI.GetPoint1(); - Handle(GEOM_Function) aRefDir = aPI.GetPoint2(); - TopoDS_Shape aShape1 = aRefPnt->GetValue(); - TopoDS_Shape aShape2 = aRefDir->GetValue(); - if (aShape1.ShapeType() != TopAbs_VERTEX || - aShape2.ShapeType() != TopAbs_EDGE) return 0; - if (aShape1.IsSame(aShape2)) { - Standard_ConstructionError::Raise("The end points must be different"); - } - gp_Pnt P1 = BRep_Tool::Pnt(TopoDS::Vertex(aShape1)); - - TopoDS_Edge anE = TopoDS::Edge(aShape2); - TopoDS_Vertex V1, V2; - TopExp::Vertices(anE, V1, V2, Standard_True); - if (V1.IsNull() || V2.IsNull()) { - Standard_NullObject::Raise("Line creation aborted: vector is not defined"); - } - gp_Pnt PV1 = BRep_Tool::Pnt(V1); - gp_Pnt PV2 = BRep_Tool::Pnt(V2); - if (PV1.Distance(PV2) < Precision::Confusion()) { - Standard_ConstructionError::Raise("Vector with null magnitude"); - } - - gp_Pnt P2 (P1.XYZ() + PV2.XYZ() - PV1.XYZ()); - aShape = BRepBuilderAPI_MakeEdge(P1, P2).Shape(); - } else { - } - - if (aShape.IsNull()) return 0; - aShape.Infinite(true); - - aFunction->SetValue(aShape); - - log.SetTouched(Label()); - - return 1; -} - - -//======================================================================= -//function : GEOMImpl_LineDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_LineDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_LineDriver", - sizeof(GEOMImpl_LineDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= -const Handle(GEOMImpl_LineDriver) Handle(GEOMImpl_LineDriver)::DownCast - (const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_LineDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_LineDriver))) { - _anOtherObject = Handle(GEOMImpl_LineDriver)((Handle(GEOMImpl_LineDriver)&)AnObject); - } - } - - return _anOtherObject ; -} diff --git a/src/GEOMImpl/GEOMImpl_LineDriver.hxx b/src/GEOMImpl/GEOMImpl_LineDriver.hxx deleted file mode 100644 index d134835ef..000000000 --- a/src/GEOMImpl/GEOMImpl_LineDriver.hxx +++ /dev/null @@ -1,138 +0,0 @@ -// File : GEOMImpl_LineDriver.hxx -// Module : GEOMImpl - -#ifndef _GEOMImpl_LineDriver_HeaderFile -#define _GEOMImpl_LineDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_LineDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_LineDriver); - -class Handle(GEOMImpl_LineDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_LineDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_LineDriver)(const Handle(GEOMImpl_LineDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_LineDriver)(const GEOMImpl_LineDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_LineDriver)& operator=(const Handle(GEOMImpl_LineDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_LineDriver)& operator=(const GEOMImpl_LineDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_LineDriver* operator->() - { - return (GEOMImpl_LineDriver *)ControlAccess(); - } - - GEOMImpl_LineDriver* operator->() const - { - return (GEOMImpl_LineDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_LineDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_LineDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_LineDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_LineDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_LineDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_LineDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_LineDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_LineDriver) == AType || TFunction_Driver::IsKind(AType)); } - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_MarkerDriver.cxx b/src/GEOMImpl/GEOMImpl_MarkerDriver.cxx deleted file mode 100644 index 1f1f653da..000000000 --- a/src/GEOMImpl/GEOMImpl_MarkerDriver.cxx +++ /dev/null @@ -1,141 +0,0 @@ - -#include - -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include - -#include - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_MarkerDriver::GetID() -{ - static Standard_GUID aMarkerDriver("FF1BBB07-5D14-4df2-980B-3A668264EA16"); - return aMarkerDriver; -} - - -//======================================================================= -//function : GEOMImpl_MarkerDriver -//purpose : -//======================================================================= -GEOMImpl_MarkerDriver::GEOMImpl_MarkerDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_MarkerDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - GEOMImpl_IMarker aPI (aFunction); - Standard_Integer aType = aFunction->GetType(); - - TopoDS_Shape aShape; - - if (aType == MARKER_CS) { - double OX, OY, OZ; - double XDX, XDY, XDZ; - double YDX, YDY, YDZ; - aPI.GetOrigin(OX, OY, OZ); - aPI.GetXDir(XDX, XDY, XDZ); - aPI.GetYDir(YDX, YDY, YDZ); - - gp_Pnt aPO (OX, OY, OZ); - gp_Vec aVX (XDX, XDY, XDZ); - gp_Vec aVY (YDX, YDY, YDZ); - Standard_Real aTol = Precision::Confusion(); - if (aVX.Magnitude() < aTol || - aVY.Magnitude() < aTol || - aVX.IsParallel(aVY, Precision::Angular())) { - Standard_ConstructionError::Raise("Degenerated or parallel directions given"); - } - - gp_Vec aN = aVX ^ aVY; - gp_Ax3 anA (aPO, aN, aVX); - gp_Pln aPln (anA); - - double aTrimSize = 100.0; - aShape = BRepBuilderAPI_MakeFace(aPln, -aTrimSize, +aTrimSize, -aTrimSize, +aTrimSize).Shape(); - } else { - } - - if (aShape.IsNull()) return 0; - - aFunction->SetValue(aShape); - - log.SetTouched(Label()); - - return 1; -} - - -//======================================================================= -//function : GEOMImpl_MarkerDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_MarkerDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_MarkerDriver", - sizeof(GEOMImpl_MarkerDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= -const Handle(GEOMImpl_MarkerDriver) Handle(GEOMImpl_MarkerDriver)::DownCast - (const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_MarkerDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_MarkerDriver))) { - _anOtherObject = Handle(GEOMImpl_MarkerDriver)((Handle(GEOMImpl_MarkerDriver)&)AnObject); - } - } - - return _anOtherObject ; -} diff --git a/src/GEOMImpl/GEOMImpl_MarkerDriver.hxx b/src/GEOMImpl/GEOMImpl_MarkerDriver.hxx deleted file mode 100644 index cf1a069f4..000000000 --- a/src/GEOMImpl/GEOMImpl_MarkerDriver.hxx +++ /dev/null @@ -1,138 +0,0 @@ -// File : GEOMImpl_MarkerDriver.hxx -// Module : GEOMImpl - -#ifndef _GEOMImpl_MarkerDriver_HeaderFile -#define _GEOMImpl_MarkerDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_MarkerDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_MarkerDriver); - -class Handle(GEOMImpl_MarkerDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_MarkerDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_MarkerDriver)(const Handle(GEOMImpl_MarkerDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_MarkerDriver)(const GEOMImpl_MarkerDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_MarkerDriver)& operator=(const Handle(GEOMImpl_MarkerDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_MarkerDriver)& operator=(const GEOMImpl_MarkerDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_MarkerDriver* operator->() - { - return (GEOMImpl_MarkerDriver *)ControlAccess(); - } - - GEOMImpl_MarkerDriver* operator->() const - { - return (GEOMImpl_MarkerDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_MarkerDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_MarkerDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_MarkerDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_MarkerDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_MarkerDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_MarkerDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_MarkerDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_MarkerDriver) == AType || TFunction_Driver::IsKind(AType)); } - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_MeasureDriver.cxx b/src/GEOMImpl/GEOMImpl_MeasureDriver.cxx deleted file mode 100644 index 79f5fccdc..000000000 --- a/src/GEOMImpl/GEOMImpl_MeasureDriver.cxx +++ /dev/null @@ -1,135 +0,0 @@ - -#include - -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include - -#include - -#include -#include -#include - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_MeasureDriver::GetID() -{ - static Standard_GUID aMeasureDriver("FF1BBB65-5D14-4df2-980B-3A668264EA16"); - return aMeasureDriver; -} - - -//======================================================================= -//function : GEOMImpl_MeasureDriver -//purpose : -//======================================================================= -GEOMImpl_MeasureDriver::GEOMImpl_MeasureDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_MeasureDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - GEOMImpl_IMeasure aCI (aFunction); - Standard_Integer aType = aFunction->GetType(); - - TopoDS_Shape aShape; - - if (aType == CDG_MEASURE) { - Handle(GEOM_Function) aRefBase = aCI.GetBase(); - TopoDS_Shape aShapeBase = aRefBase->GetValue(); - if (aShapeBase.IsNull()) { - Standard_NullObject::Raise("Shape for centre of mass calculation is null"); - } - - GProp_GProps aSystem; - gp_Pnt aCenterMass; - - if (aShapeBase.ShapeType() == TopAbs_VERTEX) { - aCenterMass = BRep_Tool::Pnt(TopoDS::Vertex(aShapeBase)); - } else if (aShapeBase.ShapeType() == TopAbs_EDGE || aShapeBase.ShapeType() == TopAbs_WIRE) { - BRepGProp::LinearProperties(aShapeBase, aSystem); - aCenterMass = aSystem.CentreOfMass(); - } else if (aShapeBase.ShapeType() == TopAbs_FACE || aShapeBase.ShapeType() == TopAbs_SHELL) { - BRepGProp::SurfaceProperties(aShapeBase, aSystem); - aCenterMass = aSystem.CentreOfMass(); - } else { - BRepGProp::VolumeProperties(aShapeBase, aSystem); - aCenterMass = aSystem.CentreOfMass(); - } - - aShape = BRepBuilderAPI_MakeVertex(aCenterMass).Shape(); - - } else { - } - - if (aShape.IsNull()) return 0; - - aFunction->SetValue(aShape); - - log.SetTouched(Label()); - - return 1; -} - - -//======================================================================= -//function : GEOMImpl_MeasureDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_MeasureDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_MeasureDriver", - sizeof(GEOMImpl_MeasureDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= -const Handle(GEOMImpl_MeasureDriver) Handle(GEOMImpl_MeasureDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_MeasureDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_MeasureDriver))) { - _anOtherObject = Handle(GEOMImpl_MeasureDriver)((Handle(GEOMImpl_MeasureDriver)&)AnObject); - } - } - - return _anOtherObject ; -} diff --git a/src/GEOMImpl/GEOMImpl_MeasureDriver.hxx b/src/GEOMImpl/GEOMImpl_MeasureDriver.hxx deleted file mode 100644 index 3286f06c6..000000000 --- a/src/GEOMImpl/GEOMImpl_MeasureDriver.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// File : GEOMImpl_MeasureDriver.ixx -// Module : GEOMImpl - -#ifndef _GEOMImpl_MeasureDriver_HeaderFile -#define _GEOMImpl_MeasureDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_MeasureDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_MeasureDriver); - -class Handle(GEOMImpl_MeasureDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_MeasureDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_MeasureDriver)(const Handle(GEOMImpl_MeasureDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_MeasureDriver)(const GEOMImpl_MeasureDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_MeasureDriver)& operator=(const Handle(GEOMImpl_MeasureDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_MeasureDriver)& operator=(const GEOMImpl_MeasureDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_MeasureDriver* operator->() - { - return (GEOMImpl_MeasureDriver *)ControlAccess(); - } - - GEOMImpl_MeasureDriver* operator->() const - { - return (GEOMImpl_MeasureDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_MeasureDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_MeasureDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_MeasureDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_MeasureDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_MeasureDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_MeasureDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_MeasureDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_MeasureDriver) == AType || TFunction_Driver::IsKind(AType)); } - - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_MirrorDriver.cxx b/src/GEOMImpl/GEOMImpl_MirrorDriver.cxx deleted file mode 100644 index 20303383f..000000000 --- a/src/GEOMImpl/GEOMImpl_MirrorDriver.cxx +++ /dev/null @@ -1,167 +0,0 @@ - -#include - -#include - -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include -#include - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_MirrorDriver::GetID() -{ - static Standard_GUID aMirrorDriver("FF1BBB57-5D14-4df2-980B-3A668264EA16"); - return aMirrorDriver; -} - - -//======================================================================= -//function : GEOMImpl_MirrorDriver -//purpose : -//======================================================================= - -GEOMImpl_MirrorDriver::GEOMImpl_MirrorDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_MirrorDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - if (aFunction.IsNull()) return 0; - - TopoDS_Shape aShape; - gp_Trsf aTrsf; - - GEOMImpl_IMirror TI (aFunction); - Standard_Integer aType = aFunction->GetType(); - - Handle(GEOM_Function) anOriginalFunction = TI.GetOriginal(); - if (anOriginalFunction.IsNull()) return 0; - - TopoDS_Shape anOriginal = anOriginalFunction->GetValue(); - if (anOriginal.IsNull()) return 0; - - if (aType == MIRROR_PLANE || aType == MIRROR_PLANE_COPY) { - Handle(GEOM_Function) aPlane = TI.GetPlane(); - if (aPlane.IsNull()) return 0; - TopoDS_Shape aFaceShape = aPlane->GetValue(); - if (aFaceShape.IsNull() || aFaceShape.ShapeType() != TopAbs_FACE) return 0; - TopoDS_Face aFace = TopoDS::Face(aFaceShape); - - Handle(Geom_Surface) surf = BRep_Tool::Surface(aFace); - Handle(Geom_Plane) myPlane = Handle(Geom_Plane)::DownCast(surf); - const gp_Ax3 pos = myPlane->Position(); - const gp_Pnt loc = pos.Location(); /* location of the plane */ - const gp_Dir dir = pos.Direction(); /* Main direction of the plane (Z axis) */ - gp_Ax2 aPln (loc, dir); - aTrsf.SetMirror(aPln); - - } else if (aType == MIRROR_AXIS || aType == MIRROR_AXIS_COPY) { - Handle(GEOM_Function) anAxis = TI.GetAxis(); - if (anAxis.IsNull()) return 0; - TopoDS_Shape anAxisShape = anAxis->GetValue(); - if (anAxisShape.IsNull() || anAxisShape.ShapeType() != TopAbs_EDGE) return 0; - TopoDS_Edge anEdge = TopoDS::Edge(anAxisShape); - - gp_Pnt aP1 = BRep_Tool::Pnt(TopExp::FirstVertex(anEdge)); - gp_Pnt aP2 = BRep_Tool::Pnt(TopExp::LastVertex (anEdge)); - gp_Vec aV (aP1, aP2); - gp_Ax1 anAx1 (aP1, aV); - aTrsf.SetMirror(anAx1); - - } else if (aType == MIRROR_POINT || aType == MIRROR_POINT_COPY) { - Handle(GEOM_Function) aPoint = TI.GetPoint(); - if (aPoint.IsNull()) return 0; - TopoDS_Shape aVertexShape = aPoint->GetValue(); - if (aVertexShape.IsNull() || aVertexShape.ShapeType() != TopAbs_VERTEX) return 0; - TopoDS_Vertex aVertex = TopoDS::Vertex(aVertexShape); - - gp_Pnt aP = BRep_Tool::Pnt(aVertex); - aTrsf.SetMirror(aP); - } else { - return 0; - } - - BRepBuilderAPI_Transform aTransformation (anOriginal, aTrsf, Standard_False); - aShape = aTransformation.Shape(); - - if (aShape.IsNull()) return 0; - - aFunction->SetValue(aShape); - - log.SetTouched(Label()); - - return 1; -} - - -//======================================================================= -//function : GEOMImpl_MirrorDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_MirrorDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_MirrorDriver", - sizeof(GEOMImpl_MirrorDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= - -const Handle(GEOMImpl_MirrorDriver) Handle(GEOMImpl_MirrorDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_MirrorDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_MirrorDriver))) { - _anOtherObject = Handle(GEOMImpl_MirrorDriver)((Handle(GEOMImpl_MirrorDriver)&)AnObject); - } - } - - return _anOtherObject ; -} - - diff --git a/src/GEOMImpl/GEOMImpl_MirrorDriver.hxx b/src/GEOMImpl/GEOMImpl_MirrorDriver.hxx deleted file mode 100644 index b9ad4a31b..000000000 --- a/src/GEOMImpl/GEOMImpl_MirrorDriver.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// File : GEOMImpl_MirrorDriver.hxx -// Module : GEOMImpl - -#ifndef _GEOMImpl_MirrorDriver_HeaderFile -#define _GEOMImpl_MirrorDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_MirrorDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_MirrorDriver); - -class Handle(GEOMImpl_MirrorDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_MirrorDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_MirrorDriver)(const Handle(GEOMImpl_MirrorDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_MirrorDriver)(const GEOMImpl_MirrorDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_MirrorDriver)& operator=(const Handle(GEOMImpl_MirrorDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_MirrorDriver)& operator=(const GEOMImpl_MirrorDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_MirrorDriver* operator->() - { - return (GEOMImpl_MirrorDriver *)ControlAccess(); - } - - GEOMImpl_MirrorDriver* operator->() const - { - return (GEOMImpl_MirrorDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_MirrorDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_MirrorDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_MirrorDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_MirrorDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_MirrorDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_MirrorDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_MirrorDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_MirrorDriver) == AType || TFunction_Driver::IsKind(AType)); } - - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_OffsetDriver.cxx b/src/GEOMImpl/GEOMImpl_OffsetDriver.cxx deleted file mode 100644 index 5716e5aad..000000000 --- a/src/GEOMImpl/GEOMImpl_OffsetDriver.cxx +++ /dev/null @@ -1,129 +0,0 @@ - -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_OffsetDriver::GetID() -{ - static Standard_GUID aOffsetDriver("FF1BBB51-5D14-4df2-980B-3A668264EA16"); - return aOffsetDriver; -} - - -//======================================================================= -//function : GEOMImpl_OffsetDriver -//purpose : -//======================================================================= -GEOMImpl_OffsetDriver::GEOMImpl_OffsetDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_OffsetDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - GEOMImpl_IOffset aCI (aFunction); - Standard_Integer aType = aFunction->GetType(); - - TopoDS_Shape aShape; - - if (aType == OFFSET_SHAPE || aType == OFFSET_SHAPE_COPY) { - Handle(GEOM_Function) aRefShape = aCI.GetShape(); - TopoDS_Shape aShapeBase = aRefShape->GetValue(); - Standard_Real anOffset = aCI.GetValue(); - Standard_Real aTol = Precision::Confusion(); - - if (Abs(anOffset) < aTol) { - TCollection_AsciiString aMsg ("Absolute value of offset can not be less than the tolerance value ("); - aMsg += TCollection_AsciiString(aTol); - aMsg += ")"; - StdFail_NotDone::Raise(aMsg.ToCString()); - } - - BRepOffsetAPI_MakeOffsetShape MO (aShapeBase, - aCI.GetValue(), - aTol); - if (MO.IsDone()) { - aShape = MO.Shape(); - } else { - StdFail_NotDone::Raise("Offset construction failed"); - } - } else { - } - - if (aShape.IsNull()) return 0; - - aFunction->SetValue(aShape); - - log.SetTouched(Label()); - - return 1; -} - - -//======================================================================= -//function : GEOMImpl_OffsetDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_OffsetDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_OffsetDriver", - sizeof(GEOMImpl_OffsetDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= -const Handle(GEOMImpl_OffsetDriver) Handle(GEOMImpl_OffsetDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_OffsetDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_OffsetDriver))) { - _anOtherObject = Handle(GEOMImpl_OffsetDriver)((Handle(GEOMImpl_OffsetDriver)&)AnObject); - } - } - - return _anOtherObject ; -} diff --git a/src/GEOMImpl/GEOMImpl_OffsetDriver.hxx b/src/GEOMImpl/GEOMImpl_OffsetDriver.hxx deleted file mode 100644 index a9d34d745..000000000 --- a/src/GEOMImpl/GEOMImpl_OffsetDriver.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// File : GEOMImpl_OffsetDriver.ixx -// Module : GEOMImpl - -#ifndef _GEOMImpl_OffsetDriver_HeaderFile -#define _GEOMImpl_OffsetDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_OffsetDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_OffsetDriver); - -class Handle(GEOMImpl_OffsetDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_OffsetDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_OffsetDriver)(const Handle(GEOMImpl_OffsetDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_OffsetDriver)(const GEOMImpl_OffsetDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_OffsetDriver)& operator=(const Handle(GEOMImpl_OffsetDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_OffsetDriver)& operator=(const GEOMImpl_OffsetDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_OffsetDriver* operator->() - { - return (GEOMImpl_OffsetDriver *)ControlAccess(); - } - - GEOMImpl_OffsetDriver* operator->() const - { - return (GEOMImpl_OffsetDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_OffsetDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_OffsetDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_OffsetDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_OffsetDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_OffsetDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_OffsetDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_OffsetDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_OffsetDriver) == AType || TFunction_Driver::IsKind(AType)); } - - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_PartitionDriver.cxx b/src/GEOMImpl/GEOMImpl_PartitionDriver.cxx deleted file mode 100644 index 1f44ec42b..000000000 --- a/src/GEOMImpl/GEOMImpl_PartitionDriver.cxx +++ /dev/null @@ -1,269 +0,0 @@ - -#include - -#include -#include -#include - -#include -#include - -#include - -#include - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_PartitionDriver::GetID() -{ - static Standard_GUID aPartitionDriver("FF1BBB22-5D14-4df2-980B-3A668264EA16"); - return aPartitionDriver; -} - - -//======================================================================= -//function : GEOMImpl_PartitionDriver -//purpose : -//======================================================================= -GEOMImpl_PartitionDriver::GEOMImpl_PartitionDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_PartitionDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - GEOMImpl_IPartition aCI (aFunction); - Standard_Integer aType = aFunction->GetType(); - - TopoDS_Shape aShape; - NMTAlgo_Splitter1 PS; - - if (aType == PARTITION_PARTITION) { - Handle(TColStd_HSequenceOfTransient) aShapes = aCI.GetShapes(); - Handle(TColStd_HSequenceOfTransient) aTools = aCI.GetTools(); - Handle(TColStd_HSequenceOfTransient) aKeepIns = aCI.GetKeepIns(); - Handle(TColStd_HSequenceOfTransient) aRemIns = aCI.GetRemoveIns(); - Handle(TColStd_HArray1OfInteger) aMaterials = aCI.GetMaterials(); - Standard_Boolean DoRemoveWebs = !aMaterials.IsNull(); - - unsigned int ind, nbshapes = 0; - nbshapes += aShapes->Length() + aTools->Length(); - nbshapes += aKeepIns->Length() + aRemIns->Length(); - - TopTools_MapOfShape ShapesMap(nbshapes), ToolsMap(nbshapes); - - // add object shapes that are in ListShapes; - for (ind = 1; ind <= aShapes->Length(); ind++) { - Handle(GEOM_Function) aRefShape = Handle(GEOM_Function)::DownCast(aShapes->Value(ind)); - TopoDS_Shape aShape_i = aRefShape->GetValue(); - if (aShape_i.IsNull()) { - Standard_NullObject::Raise("In Partition a shape is null"); - } - if (ShapesMap.Add(aShape_i)) { - PS.AddShape(aShape_i); - if (DoRemoveWebs) { - if (aMaterials->Length() >= ind) - PS.SetMaterial(aShape_i, aMaterials->Value(ind)); - } - } - } - - // add tool shapes that are in ListTools and not in ListShapes; - for (ind = 1; ind <= aTools->Length(); ind++) { - Handle(GEOM_Function) aRefShape = Handle(GEOM_Function)::DownCast(aTools->Value(ind)); - TopoDS_Shape aShape_i = aRefShape->GetValue(); - if (aShape_i.IsNull()) { - Standard_NullObject::Raise("In Partition a tool shape is null"); - } - if (!ShapesMap.Contains(aShape_i) && ToolsMap.Add(aShape_i)) - PS.AddTool(aShape_i); - } - - // add shapes that are in ListKeepInside, as object shapes; - for (ind = 1; ind <= aKeepIns->Length(); ind++) { - Handle(GEOM_Function) aRefShape = Handle(GEOM_Function)::DownCast(aKeepIns->Value(ind)); - TopoDS_Shape aShape_i = aRefShape->GetValue(); - if (aShape_i.IsNull()) { - Standard_NullObject::Raise("In Partition a Keep Inside shape is null"); - } - if (!ToolsMap.Contains(aShape_i) && ShapesMap.Add(aShape_i)) - PS.AddShape(aShape_i); - } - - // add shapes that are in ListRemoveInside, as object shapes; - for (ind = 1; ind <= aRemIns->Length(); ind++) { - Handle(GEOM_Function) aRefShape = Handle(GEOM_Function)::DownCast(aRemIns->Value(ind)); - TopoDS_Shape aShape_i = aRefShape->GetValue(); - if (aShape_i.IsNull()) { - Standard_NullObject::Raise("In Partition a Remove Inside shape is null"); - } - if (!ToolsMap.Contains(aShape_i) && ShapesMap.Add(aShape_i)) - PS.AddShape(aShape_i); - } - - PS.Compute(); - PS.SetRemoveWebs(DoRemoveWebs); - PS.Build((TopAbs_ShapeEnum) aCI.GetLimit()); - - // suppress result outside of shapes in KInsideMap - for (ind = 1; ind <= aKeepIns->Length(); ind++) { - Handle(GEOM_Function) aRefShape = Handle(GEOM_Function)::DownCast(aKeepIns->Value(ind)); - TopoDS_Shape aShape_i = aRefShape->GetValue(); - PS.KeepShapesInside(aShape_i); - } - - // suppress result inside of shapes in RInsideMap - for (ind = 1; ind <= aRemIns->Length(); ind++) { - Handle(GEOM_Function) aRefShape = Handle(GEOM_Function)::DownCast(aRemIns->Value(ind)); - TopoDS_Shape aShape_i = aRefShape->GetValue(); - PS.RemoveShapesInside(aShape_i); - } - - } else if (aType == PARTITION_HALF) { - Handle(GEOM_Function) aRefShape = aCI.GetShape(); - Handle(GEOM_Function) aRefPlane = aCI.GetPlane(); - TopoDS_Shape aShapeArg = aRefShape->GetValue(); - TopoDS_Shape aPlaneArg = aRefPlane->GetValue(); - - if (aShapeArg.IsNull() || aPlaneArg.IsNull()) { - Standard_NullObject::Raise("In Half Partition a shape or a plane is null"); - } - - // add object shapes that are in ListShapes; - PS.AddShape(aShapeArg); - - // add tool shapes that are in ListTools and not in ListShapes; - PS.AddTool(aPlaneArg); - - PS.Compute(); - PS.SetRemoveWebs(Standard_False); - PS.Build(aShapeArg.ShapeType()); - - } else { - } - - aShape = PS.Shape(); - if (aShape.IsNull()) return 0; - - if (!BRepAlgo::IsValid(aShape)) { - Standard_ConstructionError::Raise("Partition aborted : non valid shape result"); - } - - aFunction->SetValue(aShape); - - // Fill history to be used by GetInPlace functionality - TopTools_IndexedMapOfShape aResIndices; - TopExp::MapShapes(aShape, aResIndices); - - // history for all argument shapes - TDF_LabelSequence aLabelSeq; - aFunction->GetDependency(aLabelSeq); - Standard_Integer nbArg = aLabelSeq.Length(); - - for (Standard_Integer iarg = 1; iarg <= nbArg; iarg++) { - - TDF_Label anArgumentRefLabel = aLabelSeq.Value(iarg); - - Handle(GEOM_Object) anArgumentObject = GEOM_Object::GetReferencedObject(anArgumentRefLabel); - TopoDS_Shape anArgumentShape = anArgumentObject->GetValue(); - - TopTools_IndexedMapOfShape anArgumentIndices; - TopExp::MapShapes(anArgumentShape, anArgumentIndices); - Standard_Integer nbArgumentEntities = anArgumentIndices.Extent(); - - // Find corresponding label in history - TDF_Label anArgumentHistoryLabel = - aFunction->GetArgumentHistoryEntry(anArgumentRefLabel, Standard_True); - - for (Standard_Integer ie = 1; ie <= nbArgumentEntities; ie++) { - TopoDS_Shape anEntity = anArgumentIndices.FindKey(ie); - const TopTools_ListOfShape& aModified = PS.Modified(anEntity); - Standard_Integer nbModified = aModified.Extent(); - - if (nbModified > 0) { - TDF_Label aWhatHistoryLabel = anArgumentHistoryLabel.FindChild(ie, Standard_True); - Handle(TDataStd_IntegerArray) anAttr = - TDataStd_IntegerArray::Set(aWhatHistoryLabel, 1, nbModified); - - TopTools_ListIteratorOfListOfShape itM (aModified); - for (int im = 1; itM.More(); itM.Next(), ++im) { - int id = aResIndices.FindIndex(itM.Value()); - anAttr->SetValue(im, id); - } - } - } - } - - log.SetTouched(Label()); - - return 1; -} - - -//======================================================================= -//function : GEOMImpl_PartitionDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_PartitionDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_PartitionDriver", - sizeof(GEOMImpl_PartitionDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= -const Handle(GEOMImpl_PartitionDriver) Handle(GEOMImpl_PartitionDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_PartitionDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_PartitionDriver))) { - _anOtherObject = Handle(GEOMImpl_PartitionDriver)((Handle(GEOMImpl_PartitionDriver)&)AnObject); - } - } - - return _anOtherObject ; -} diff --git a/src/GEOMImpl/GEOMImpl_PartitionDriver.hxx b/src/GEOMImpl/GEOMImpl_PartitionDriver.hxx deleted file mode 100644 index f71c6a2ec..000000000 --- a/src/GEOMImpl/GEOMImpl_PartitionDriver.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// File : GEOMImpl_PartitionDriver.ixx -// Module : GEOMImpl - -#ifndef _GEOMImpl_PartitionDriver_HeaderFile -#define _GEOMImpl_PartitionDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_PartitionDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_PartitionDriver); - -class Handle(GEOMImpl_PartitionDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_PartitionDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_PartitionDriver)(const Handle(GEOMImpl_PartitionDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_PartitionDriver)(const GEOMImpl_PartitionDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_PartitionDriver)& operator=(const Handle(GEOMImpl_PartitionDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_PartitionDriver)& operator=(const GEOMImpl_PartitionDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_PartitionDriver* operator->() - { - return (GEOMImpl_PartitionDriver *)ControlAccess(); - } - - GEOMImpl_PartitionDriver* operator->() const - { - return (GEOMImpl_PartitionDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_PartitionDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_PartitionDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_PartitionDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_PartitionDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_PartitionDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_PartitionDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_PartitionDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_PartitionDriver) == AType || TFunction_Driver::IsKind(AType)); } - - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_PipeDriver.cxx b/src/GEOMImpl/GEOMImpl_PipeDriver.cxx deleted file mode 100644 index 21c0195d9..000000000 --- a/src/GEOMImpl/GEOMImpl_PipeDriver.cxx +++ /dev/null @@ -1,140 +0,0 @@ - -#include - -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include -#include -#include - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_PipeDriver::GetID() -{ - static Standard_GUID aPipeDriver("FF1BBB19-5D14-4df2-980B-3A668264EA16"); - return aPipeDriver; -} - - -//======================================================================= -//function : GEOMImpl_PipeDriver -//purpose : -//======================================================================= -GEOMImpl_PipeDriver::GEOMImpl_PipeDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_PipeDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - GEOMImpl_IPipe aCI (aFunction); - Standard_Integer aType = aFunction->GetType(); - - TopoDS_Shape aShape; - - if (aType == PIPE_BASE_PATH) { - Handle(GEOM_Function) aRefBase = aCI.GetBase(); - Handle(GEOM_Function) aRefPath = aCI.GetPath(); - TopoDS_Shape aShapeBase = aRefBase->GetValue(); - TopoDS_Shape aShapePath = aRefPath->GetValue(); - if (aShapeBase.IsNull() || aShapePath.IsNull()) { - Standard_NullObject::Raise("MakePipe aborted : null shape argument"); - } - - // Get path contour - TopoDS_Wire aWire; - if (aShapePath.ShapeType() == TopAbs_WIRE) { - aWire = TopoDS::Wire(aShapePath); - } else { - if (aShapePath.ShapeType() == TopAbs_EDGE) { - TopoDS_Edge anEdge = TopoDS::Edge(aShapePath); - aWire = BRepBuilderAPI_MakeWire(anEdge); - } else { - Standard_TypeMismatch::Raise("MakePipe aborted : path shape is neither a wire nor an edge"); - } - } - - // Make pipe - aShape = BRepOffsetAPI_MakePipe(aWire, aShapeBase); - } - else { - } - - if (aShape.IsNull()) return 0; - - BRepCheck_Analyzer ana (aShape, Standard_False); - if (!ana.IsValid()) { - Standard_ConstructionError::Raise("Algorithm have produced an invalid shape result"); - } - - aFunction->SetValue(aShape); - - log.SetTouched(Label()); - - return 1; -} - - -//======================================================================= -//function : GEOMImpl_PipeDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_PipeDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_PipeDriver", - sizeof(GEOMImpl_PipeDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= -const Handle(GEOMImpl_PipeDriver) Handle(GEOMImpl_PipeDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_PipeDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_PipeDriver))) { - _anOtherObject = Handle(GEOMImpl_PipeDriver)((Handle(GEOMImpl_PipeDriver)&)AnObject); - } - } - - return _anOtherObject ; -} diff --git a/src/GEOMImpl/GEOMImpl_PipeDriver.hxx b/src/GEOMImpl/GEOMImpl_PipeDriver.hxx deleted file mode 100644 index 819b5b143..000000000 --- a/src/GEOMImpl/GEOMImpl_PipeDriver.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// File : GEOMImpl_PipeDriver.ixx -// Module : GEOMImpl - -#ifndef _GEOMImpl_PipeDriver_HeaderFile -#define _GEOMImpl_PipeDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_PipeDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_PipeDriver); - -class Handle(GEOMImpl_PipeDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_PipeDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_PipeDriver)(const Handle(GEOMImpl_PipeDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_PipeDriver)(const GEOMImpl_PipeDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_PipeDriver)& operator=(const Handle(GEOMImpl_PipeDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_PipeDriver)& operator=(const GEOMImpl_PipeDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_PipeDriver* operator->() - { - return (GEOMImpl_PipeDriver *)ControlAccess(); - } - - GEOMImpl_PipeDriver* operator->() const - { - return (GEOMImpl_PipeDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_PipeDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_PipeDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_PipeDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_PipeDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_PipeDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_PipeDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_PipeDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_PipeDriver) == AType || TFunction_Driver::IsKind(AType)); } - - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_PlaneDriver.cxx b/src/GEOMImpl/GEOMImpl_PlaneDriver.cxx deleted file mode 100644 index 0fcf0c36b..000000000 --- a/src/GEOMImpl/GEOMImpl_PlaneDriver.cxx +++ /dev/null @@ -1,164 +0,0 @@ - -#include - -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include - -#include -#include - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_PlaneDriver::GetID() -{ - static Standard_GUID aPlaneDriver("FF1BBB05-5D14-4df2-980B-3A668264EA16"); - return aPlaneDriver; -} - - -//======================================================================= -//function : GEOMImpl_PlaneDriver -//purpose : -//======================================================================= -GEOMImpl_PlaneDriver::GEOMImpl_PlaneDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_PlaneDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - GEOMImpl_IPlane aPI (aFunction); - Standard_Integer aType = aFunction->GetType(); - - TopoDS_Shape aShape; - - double aSize = aPI.GetSize() / 2.0; - if (aType == PLANE_PNT_VEC) { - Handle(GEOM_Function) aRefPnt = aPI.GetPoint(); - Handle(GEOM_Function) aRefVec = aPI.GetVector(); - TopoDS_Shape aShape1 = aRefPnt->GetValue(); - TopoDS_Shape aShape2 = aRefVec->GetValue(); - if (aShape1.ShapeType() != TopAbs_VERTEX || - aShape2.ShapeType() != TopAbs_EDGE) return 0; - gp_Pnt aP = BRep_Tool::Pnt(TopoDS::Vertex(aShape1)); - TopoDS_Edge anE = TopoDS::Edge(aShape2); - TopoDS_Vertex V1, V2; - TopExp::Vertices(anE, V1, V2, Standard_True); - if (!V1.IsNull() && !V2.IsNull()) { - gp_Vec aV (BRep_Tool::Pnt(V1), BRep_Tool::Pnt(V2)); - gp_Pln aPln (aP, aV); - aShape = BRepBuilderAPI_MakeFace(aPln, -aSize, +aSize, -aSize, +aSize).Shape(); - } - } else if (aType == PLANE_THREE_PNT) { - Handle(GEOM_Function) aRefPnt1 = aPI.GetPoint1(); - Handle(GEOM_Function) aRefPnt2 = aPI.GetPoint2(); - Handle(GEOM_Function) aRefPnt3 = aPI.GetPoint3(); - TopoDS_Shape aShape1 = aRefPnt1->GetValue(); - TopoDS_Shape aShape2 = aRefPnt2->GetValue(); - TopoDS_Shape aShape3 = aRefPnt3->GetValue(); - if (aShape1.ShapeType() != TopAbs_VERTEX || - aShape2.ShapeType() != TopAbs_VERTEX || - aShape3.ShapeType() != TopAbs_VERTEX) return 0; - gp_Pnt aP1 = BRep_Tool::Pnt(TopoDS::Vertex(aShape1)); - gp_Pnt aP2 = BRep_Tool::Pnt(TopoDS::Vertex(aShape2)); - gp_Pnt aP3 = BRep_Tool::Pnt(TopoDS::Vertex(aShape3)); - if (aP1.Distance(aP2) < gp::Resolution() || - aP1.Distance(aP3) < gp::Resolution() || - aP2.Distance(aP3) < gp::Resolution()) - Standard_ConstructionError::Raise("Plane creation aborted: coincident points given"); - if (gp_Vec(aP1, aP2).IsParallel(gp_Vec(aP1, aP3), Precision::Angular())) - Standard_ConstructionError::Raise("Plane creation aborted: points lay on one line"); - GC_MakePlane aMakePlane (aP1, aP2, aP3); - aShape = BRepBuilderAPI_MakeFace(aMakePlane, -aSize, +aSize, -aSize, +aSize).Shape(); - } else if (aType == PLANE_FACE) { - Handle(GEOM_Function) aRef = aPI.GetFace(); - TopoDS_Shape aRefShape = aRef->GetValue(); - if (aRefShape.ShapeType() != TopAbs_FACE) return 0; - Handle(Geom_Surface) aGS = BRep_Tool::Surface(TopoDS::Face(aRefShape)); - if (!aGS->IsKind(STANDARD_TYPE(Geom_Plane))) { - Standard_TypeMismatch::Raise("Plane creation aborted: non-planar face given as argument"); - } - aShape = BRepBuilderAPI_MakeFace(aGS, -aSize, +aSize, -aSize, +aSize).Shape(); - } else { - } - - if (aShape.IsNull()) return 0; - - aFunction->SetValue(aShape); - - log.SetTouched(Label()); - - return 1; -} - - -//======================================================================= -//function : GEOMImpl_PlaneDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_PlaneDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_PlaneDriver", - sizeof(GEOMImpl_PlaneDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= -const Handle(GEOMImpl_PlaneDriver) Handle(GEOMImpl_PlaneDriver)::DownCast - (const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_PlaneDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_PlaneDriver))) { - _anOtherObject = Handle(GEOMImpl_PlaneDriver)((Handle(GEOMImpl_PlaneDriver)&)AnObject); - } - } - - return _anOtherObject ; -} diff --git a/src/GEOMImpl/GEOMImpl_PlaneDriver.hxx b/src/GEOMImpl/GEOMImpl_PlaneDriver.hxx deleted file mode 100644 index 8245b280a..000000000 --- a/src/GEOMImpl/GEOMImpl_PlaneDriver.hxx +++ /dev/null @@ -1,138 +0,0 @@ -// File : GEOMImpl_PlaneDriver.hxx -// Module : GEOMImpl - -#ifndef _GEOMImpl_PlaneDriver_HeaderFile -#define _GEOMImpl_PlaneDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_PlaneDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_PlaneDriver); - -class Handle(GEOMImpl_PlaneDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_PlaneDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_PlaneDriver)(const Handle(GEOMImpl_PlaneDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_PlaneDriver)(const GEOMImpl_PlaneDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_PlaneDriver)& operator=(const Handle(GEOMImpl_PlaneDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_PlaneDriver)& operator=(const GEOMImpl_PlaneDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_PlaneDriver* operator->() - { - return (GEOMImpl_PlaneDriver *)ControlAccess(); - } - - GEOMImpl_PlaneDriver* operator->() const - { - return (GEOMImpl_PlaneDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_PlaneDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_PlaneDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_PlaneDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_PlaneDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_PlaneDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_PlaneDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_PlaneDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_PlaneDriver) == AType || TFunction_Driver::IsKind(AType)); } - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_PointDriver.cxx b/src/GEOMImpl/GEOMImpl_PointDriver.cxx deleted file mode 100644 index e7e529bde..000000000 --- a/src/GEOMImpl/GEOMImpl_PointDriver.cxx +++ /dev/null @@ -1,139 +0,0 @@ - -#include - -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include - -#include -#include - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_PointDriver::GetID() -{ - static Standard_GUID aPointDriver("FF1BBB02-5D14-4df2-980B-3A668264EA16"); - return aPointDriver; -} - - -//======================================================================= -//function : GEOMImpl_PointDriver -//purpose : -//======================================================================= -GEOMImpl_PointDriver::GEOMImpl_PointDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_PointDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - GEOMImpl_IPoint aPI (aFunction); - Standard_Integer aType = aFunction->GetType(); - - gp_Pnt aPnt; - - if (aType == POINT_XYZ) { - aPnt = gp_Pnt(aPI.GetX(), aPI.GetY(), aPI.GetZ()); - - } else if (aType == POINT_XYZ_REF) { - - Handle(GEOM_Function) aRefPoint = aPI.GetRef(); - TopoDS_Shape aRefShape = aRefPoint->GetValue(); - if (aRefShape.ShapeType() != TopAbs_VERTEX) { - Standard_TypeMismatch::Raise - ("Point creation aborted : referenced shape is not a vertex"); - } - gp_Pnt P = BRep_Tool::Pnt(TopoDS::Vertex(aRefShape)); - aPnt = gp_Pnt(P.X() + aPI.GetX(), P.Y() + aPI.GetY(), P.Z() + aPI.GetZ()); - - } else if (aType == POINT_CURVE_PAR) { - - Handle(GEOM_Function) aRefCurve = aPI.GetCurve(); - TopoDS_Shape aRefShape = aRefCurve->GetValue(); - if (aRefShape.ShapeType() != TopAbs_EDGE) { - Standard_TypeMismatch::Raise - ("Point On Curve creation aborted : curve shape is not an edge"); - } - Standard_Real aFP, aLP, aP; - Handle(Geom_Curve) aCurve = BRep_Tool::Curve(TopoDS::Edge(aRefShape), aFP, aLP); - aP = aFP + (aLP - aFP) * aPI.GetParameter(); - aPnt = aCurve->Value(aP); - - } else { - return 0; - } - - BRepBuilderAPI_MakeVertex mkVertex (aPnt); - TopoDS_Shape aShape = mkVertex.Shape(); - aShape.Infinite(Standard_True); - aFunction->SetValue(aShape); - - log.SetTouched(Label()); - - return 1; -} - - -//======================================================================= -//function : GEOMImpl_PointDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_PointDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_PointDriver", - sizeof(GEOMImpl_PointDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= - -const Handle(GEOMImpl_PointDriver) Handle(GEOMImpl_PointDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_PointDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_PointDriver))) { - _anOtherObject = Handle(GEOMImpl_PointDriver)((Handle(GEOMImpl_PointDriver)&)AnObject); - } - } - - return _anOtherObject ; -} - - diff --git a/src/GEOMImpl/GEOMImpl_PointDriver.hxx b/src/GEOMImpl/GEOMImpl_PointDriver.hxx deleted file mode 100644 index 13bcb999f..000000000 --- a/src/GEOMImpl/GEOMImpl_PointDriver.hxx +++ /dev/null @@ -1,138 +0,0 @@ -// File : GEOMImpl_PointDriver.hxx -// Module : GEOMImpl - -#ifndef _GEOMImpl_PointDriver_HeaderFile -#define _GEOMImpl_PointDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_PointDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_PointDriver); - -class Handle(GEOMImpl_PointDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_PointDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_PointDriver)(const Handle(GEOMImpl_PointDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_PointDriver)(const GEOMImpl_PointDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_PointDriver)& operator=(const Handle(GEOMImpl_PointDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_PointDriver)& operator=(const GEOMImpl_PointDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_PointDriver* operator->() - { - return (GEOMImpl_PointDriver *)ControlAccess(); - } - - GEOMImpl_PointDriver* operator->() const - { - return (GEOMImpl_PointDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_PointDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_PointDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_PointDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_PointDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_PointDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_PointDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_PointDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_PointDriver) == AType || TFunction_Driver::IsKind(AType)); } - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_PolylineDriver.cxx b/src/GEOMImpl/GEOMImpl_PolylineDriver.cxx deleted file mode 100644 index 64619ee30..000000000 --- a/src/GEOMImpl/GEOMImpl_PolylineDriver.cxx +++ /dev/null @@ -1,125 +0,0 @@ - -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_PolylineDriver::GetID() -{ - static Standard_GUID aPolylineDriver("FF1BBB31-5D14-4df2-980B-3A668264EA16"); - return aPolylineDriver; -} - - -//======================================================================= -//function : GEOMImpl_PolylineDriver -//purpose : -//======================================================================= -GEOMImpl_PolylineDriver::GEOMImpl_PolylineDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_PolylineDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - GEOMImpl_IPolyline aCI (aFunction); - Standard_Integer aType = aFunction->GetType(); - - TopoDS_Shape aShape; - - if (aType == POLYLINE_POINTS) { - int aLen = aCI.GetLength(); - int ind = 1; - BRepBuilderAPI_MakePolygon aMakePoly; - for (; ind <= aLen; ind++) - { - Handle(GEOM_Function) aRefPoint = aCI.GetPoint(ind); - TopoDS_Shape aShapePnt = aRefPoint->GetValue(); - if (aShapePnt.ShapeType() == TopAbs_VERTEX) { - aMakePoly.Add(TopoDS::Vertex(aShapePnt)); -// if (!aMakePoly.Added()) return 0; - } - } - if (false) aMakePoly.Close(); - if (aMakePoly.IsDone()) { - aShape = aMakePoly.Wire(); - } - } - else { - } - - if (aShape.IsNull()) return 0; - - aFunction->SetValue(aShape); - - log.SetTouched(Label()); - - return 1; -} - - -//======================================================================= -//function : GEOMImpl_PolylineDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_PolylineDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_PolylineDriver", - sizeof(GEOMImpl_PolylineDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= -const Handle(GEOMImpl_PolylineDriver) Handle(GEOMImpl_PolylineDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_PolylineDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_PolylineDriver))) { - _anOtherObject = Handle(GEOMImpl_PolylineDriver)((Handle(GEOMImpl_PolylineDriver)&)AnObject); - } - } - - return _anOtherObject ; -} diff --git a/src/GEOMImpl/GEOMImpl_PolylineDriver.hxx b/src/GEOMImpl/GEOMImpl_PolylineDriver.hxx deleted file mode 100644 index 3a6a2bd77..000000000 --- a/src/GEOMImpl/GEOMImpl_PolylineDriver.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// File : GEOMImpl_PolylineDriver.ixx -// Module : GEOMImpl - -#ifndef _GEOMImpl_PolylineDriver_HeaderFile -#define _GEOMImpl_PolylineDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_PolylineDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_PolylineDriver); - -class Handle(GEOMImpl_PolylineDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_PolylineDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_PolylineDriver)(const Handle(GEOMImpl_PolylineDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_PolylineDriver)(const GEOMImpl_PolylineDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_PolylineDriver)& operator=(const Handle(GEOMImpl_PolylineDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_PolylineDriver)& operator=(const GEOMImpl_PolylineDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_PolylineDriver* operator->() - { - return (GEOMImpl_PolylineDriver *)ControlAccess(); - } - - GEOMImpl_PolylineDriver* operator->() const - { - return (GEOMImpl_PolylineDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_PolylineDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_PolylineDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_PolylineDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_PolylineDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_PolylineDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_PolylineDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_PolylineDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_PolylineDriver) == AType || TFunction_Driver::IsKind(AType)); } - - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_PositionDriver.cxx b/src/GEOMImpl/GEOMImpl_PositionDriver.cxx deleted file mode 100644 index c28ec1a99..000000000 --- a/src/GEOMImpl/GEOMImpl_PositionDriver.cxx +++ /dev/null @@ -1,174 +0,0 @@ - -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_PositionDriver::GetID() -{ - static Standard_GUID aPositionDriver("FF1BBB69-5D14-4df2-980B-3A668264EA16"); - return aPositionDriver; -} - - -//======================================================================= -//function : GEOMImpl_PositionDriver -//purpose : -//======================================================================= -GEOMImpl_PositionDriver::GEOMImpl_PositionDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_PositionDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - GEOMImpl_IPosition aCI (aFunction); - Standard_Integer aType = aFunction->GetType(); - - TopoDS_Shape aShape; - - if (aType == POSITION_SHAPE || aType == POSITION_SHAPE_COPY) { - Handle(GEOM_Function) aRefShape = aCI.GetShape(); - Handle(GEOM_Function) aRefStartLCS = aCI.GetStartLCS(); - Handle(GEOM_Function) aRefEndLCS = aCI.GetEndLCS(); - - TopoDS_Shape aShapeBase = aRefShape->GetValue(); - TopoDS_Shape aShapeStartLCS = aRefStartLCS->GetValue(); - TopoDS_Shape aShapeEndLCS = aRefEndLCS->GetValue(); - - if (aShapeBase.IsNull() || aShapeStartLCS.IsNull() || - aShapeEndLCS.IsNull() || aShapeEndLCS.ShapeType() != TopAbs_FACE) - return 0; - - gp_Trsf aTrsf; - gp_Ax3 aStartAx3, aDestAx3; - aStartAx3.Transform(aShapeStartLCS.Location().Transformation()); - aDestAx3.Transform(aShapeEndLCS.Location().Transformation()); - - Handle(Geom_Surface) aGS2 = BRep_Tool::Surface( TopoDS::Face( aShapeEndLCS ) ); - if (!aGS2.IsNull() && aGS2->IsKind( STANDARD_TYPE( Geom_Plane ) ) ) { - Handle(Geom_Plane) aGPlane2 = Handle(Geom_Plane)::DownCast( aGS2 ); - gp_Pln aPln2 = aGPlane2->Pln(); - aDestAx3 = aPln2.Position(); - } - - if(aShapeStartLCS.ShapeType() == TopAbs_FACE) { - Handle(Geom_Surface) aGS = BRep_Tool::Surface( TopoDS::Face( aShapeStartLCS ) ); - if (!aGS.IsNull() && aGS->IsKind( STANDARD_TYPE( Geom_Plane ) ) ) { - Handle(Geom_Plane) aGPlane = Handle(Geom_Plane)::DownCast( aGS ); - gp_Pln aPln = aGPlane->Pln(); - aStartAx3 = aPln.Position(); - } - aTrsf.SetDisplacement(aStartAx3, aDestAx3); - } - else { - gp_Trsf aTrsf1, aTrsf2; - aTrsf1.SetDisplacement(aStartAx3, aDestAx3); - BRepBuilderAPI_Transform aBT (aShapeBase, aTrsf1, Standard_False); - TopoDS_Shape aNewShape = aBT.Shape(); - - gp_Pnt aPnt; - if (aNewShape.ShapeType() == TopAbs_VERTEX) { - aPnt = BRep_Tool::Pnt(TopoDS::Vertex(aNewShape)); - } - else { - GProp_GProps aSystem; - if (aNewShape.ShapeType() == TopAbs_EDGE || aNewShape.ShapeType() == TopAbs_WIRE) - BRepGProp::LinearProperties(aNewShape, aSystem); - else if (aNewShape.ShapeType() == TopAbs_FACE || aNewShape.ShapeType() == TopAbs_SHELL) - BRepGProp::SurfaceProperties(aNewShape, aSystem); - else - BRepGProp::VolumeProperties(aNewShape, aSystem); - - aPnt = aSystem.CentreOfMass(); - } - - gp_Vec aVec(aPnt, aDestAx3.Location()); - aTrsf2.SetTranslation(aVec); - aTrsf = aTrsf2 * aTrsf1; - } - - BRepBuilderAPI_Transform aBRepTrsf (aShapeBase, aTrsf, Standard_False); - aShape = aBRepTrsf.Shape(); - } - else - return 0; - - if (aShape.IsNull()) return 0; - - aFunction->SetValue(aShape); - - log.SetTouched(Label()); - - return 1; -} - - -//======================================================================= -//function : GEOMImpl_PositionDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_PositionDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_PositionDriver", - sizeof(GEOMImpl_PositionDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= -const Handle(GEOMImpl_PositionDriver) Handle(GEOMImpl_PositionDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_PositionDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_PositionDriver))) { - _anOtherObject = Handle(GEOMImpl_PositionDriver)((Handle(GEOMImpl_PositionDriver)&)AnObject); - } - } - - return _anOtherObject ; -} diff --git a/src/GEOMImpl/GEOMImpl_PositionDriver.hxx b/src/GEOMImpl/GEOMImpl_PositionDriver.hxx deleted file mode 100644 index 785fed132..000000000 --- a/src/GEOMImpl/GEOMImpl_PositionDriver.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// File : GEOMImpl_PositionDriver.ixx -// Module : GEOMImpl - -#ifndef _GEOMImpl_PositionDriver_HeaderFile -#define _GEOMImpl_PositionDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_PositionDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_PositionDriver); - -class Handle(GEOMImpl_PositionDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_PositionDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_PositionDriver)(const Handle(GEOMImpl_PositionDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_PositionDriver)(const GEOMImpl_PositionDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_PositionDriver)& operator=(const Handle(GEOMImpl_PositionDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_PositionDriver)& operator=(const GEOMImpl_PositionDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_PositionDriver* operator->() - { - return (GEOMImpl_PositionDriver *)ControlAccess(); - } - - GEOMImpl_PositionDriver* operator->() const - { - return (GEOMImpl_PositionDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_PositionDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_PositionDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_PositionDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_PositionDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_PositionDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_PositionDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_PositionDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_PositionDriver) == AType || TFunction_Driver::IsKind(AType)); } - - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_PrismDriver.cxx b/src/GEOMImpl/GEOMImpl_PrismDriver.cxx deleted file mode 100644 index 5da11dc6a..000000000 --- a/src/GEOMImpl/GEOMImpl_PrismDriver.cxx +++ /dev/null @@ -1,146 +0,0 @@ - -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_PrismDriver::GetID() -{ - static Standard_GUID aPrismDriver("FF1BBB17-5D14-4df2-980B-3A668264EA16"); - return aPrismDriver; -} - - -//======================================================================= -//function : GEOMImpl_PrismDriver -//purpose : -//======================================================================= -GEOMImpl_PrismDriver::GEOMImpl_PrismDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_PrismDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - GEOMImpl_IPrism aCI (aFunction); - Standard_Integer aType = aFunction->GetType(); - - TopoDS_Shape aShape; - - if (aType == PRISM_BASE_VEC_H) { - Handle(GEOM_Function) aRefBase = aCI.GetBase(); - Handle(GEOM_Function) aRefVector = aCI.GetVector(); - TopoDS_Shape aShapeBase = aRefBase->GetValue(); - TopoDS_Shape aShapeVec = aRefVector->GetValue(); - if (aShapeVec.ShapeType() == TopAbs_EDGE) { - TopoDS_Edge anE = TopoDS::Edge(aShapeVec); - TopoDS_Vertex V1, V2; - TopExp::Vertices(anE, V1, V2, Standard_True); - if (!V1.IsNull() && !V2.IsNull()) { - gp_Vec aV (BRep_Tool::Pnt(V1), BRep_Tool::Pnt(V2)); - if (Abs(aCI.GetH()) < Precision::Confusion()) { - Standard_ConstructionError::Raise("Absolute value of prism height is too small"); - } - if (aV.Magnitude() > Precision::Confusion()) { - aV.Normalize(); - aShape = BRepPrimAPI_MakePrism(aShapeBase, aV * aCI.GetH(), Standard_False).Shape(); - } - } - } - } else if (aType == PRISM_BASE_TWO_PNT) { - Handle(GEOM_Function) aRefBase = aCI.GetBase(); - Handle(GEOM_Function) aRefPnt1 = aCI.GetFirstPoint(); - Handle(GEOM_Function) aRefPnt2 = aCI.GetLastPoint(); - TopoDS_Shape aShapeBase = aRefBase->GetValue(); - TopoDS_Shape aShapePnt1 = aRefPnt1->GetValue(); - TopoDS_Shape aShapePnt2 = aRefPnt2->GetValue(); - if (aShapePnt1.ShapeType() == TopAbs_VERTEX && - aShapePnt2.ShapeType() == TopAbs_VERTEX) { - TopoDS_Vertex V1 = TopoDS::Vertex(aShapePnt1); - TopoDS_Vertex V2 = TopoDS::Vertex(aShapePnt2); - if (!V1.IsNull() && !V2.IsNull()) { - gp_Vec aV (BRep_Tool::Pnt(V1), BRep_Tool::Pnt(V2)); - if (aV.Magnitude() > gp::Resolution()) { - aShape = BRepPrimAPI_MakePrism(aShapeBase, aV, Standard_False).Shape(); - } - } - } - } else { - } - - if (aShape.IsNull()) return 0; - - aFunction->SetValue(aShape); - - log.SetTouched(Label()); - - return 1; -} - - -//======================================================================= -//function : GEOMImpl_PrismDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_PrismDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_PrismDriver", - sizeof(GEOMImpl_PrismDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= -const Handle(GEOMImpl_PrismDriver) Handle(GEOMImpl_PrismDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_PrismDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_PrismDriver))) { - _anOtherObject = Handle(GEOMImpl_PrismDriver)((Handle(GEOMImpl_PrismDriver)&)AnObject); - } - } - - return _anOtherObject ; -} diff --git a/src/GEOMImpl/GEOMImpl_PrismDriver.hxx b/src/GEOMImpl/GEOMImpl_PrismDriver.hxx deleted file mode 100644 index 7dcb76403..000000000 --- a/src/GEOMImpl/GEOMImpl_PrismDriver.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// File : GEOMImpl_PrismDriver.ixx -// Module : GEOMImpl - -#ifndef _GEOMImpl_PrismDriver_HeaderFile -#define _GEOMImpl_PrismDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_PrismDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_PrismDriver); - -class Handle(GEOMImpl_PrismDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_PrismDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_PrismDriver)(const Handle(GEOMImpl_PrismDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_PrismDriver)(const GEOMImpl_PrismDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_PrismDriver)& operator=(const Handle(GEOMImpl_PrismDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_PrismDriver)& operator=(const GEOMImpl_PrismDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_PrismDriver* operator->() - { - return (GEOMImpl_PrismDriver *)ControlAccess(); - } - - GEOMImpl_PrismDriver* operator->() const - { - return (GEOMImpl_PrismDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_PrismDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_PrismDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_PrismDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_PrismDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_PrismDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_PrismDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_PrismDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_PrismDriver) == AType || TFunction_Driver::IsKind(AType)); } - - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_RevolutionDriver.cxx b/src/GEOMImpl/GEOMImpl_RevolutionDriver.cxx deleted file mode 100644 index 1eb85b835..000000000 --- a/src/GEOMImpl/GEOMImpl_RevolutionDriver.cxx +++ /dev/null @@ -1,146 +0,0 @@ - -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_RevolutionDriver::GetID() -{ - static Standard_GUID aRevolutionDriver("FF1BBB18-5D14-4df2-980B-3A668264EA16"); - return aRevolutionDriver; -} - - -//======================================================================= -//function : GEOMImpl_RevolutionDriver -//purpose : -//======================================================================= -GEOMImpl_RevolutionDriver::GEOMImpl_RevolutionDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_RevolutionDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - GEOMImpl_IRevolution aCI (aFunction); - Standard_Integer aType = aFunction->GetType(); - - TopoDS_Shape aShape; - - if (aType == REVOLUTION_BASE_AXIS_ANGLE) { - Handle(GEOM_Function) aRefBase = aCI.GetBase(); - Handle(GEOM_Function) aRefAxis = aCI.GetAxis(); - TopoDS_Shape aShapeBase = aRefBase->GetValue(); - TopoDS_Shape aShapeAxis = aRefAxis->GetValue(); - if (aShapeAxis.ShapeType() != TopAbs_EDGE) { - Standard_TypeMismatch::Raise("Revolution Axis must be an edge"); - } - - TopoDS_Edge anE = TopoDS::Edge(aShapeAxis); - TopoDS_Vertex V1, V2; - TopExp::Vertices(anE, V1, V2, Standard_True); - if (V1.IsNull() || V2.IsNull()) { - Standard_ConstructionError::Raise("Bad edge for the Revolution Axis given"); - } - - gp_Vec aV (BRep_Tool::Pnt(V1), BRep_Tool::Pnt(V2)); - if (aV.Magnitude() < Precision::Confusion()) { - Standard_ConstructionError::Raise - ("End vertices of edge, defining the Revolution Axis, are too close"); - } - - if (aShapeBase.ShapeType() == TopAbs_VERTEX) { - gp_Lin aL(BRep_Tool::Pnt(V1), gp_Dir(aV)); - Standard_Real d = aL.Distance(BRep_Tool::Pnt(TopoDS::Vertex(aShapeBase))); - if (d < Precision::Confusion()) { - Standard_ConstructionError::Raise("Vertex to be rotated is too close to Revolution Axis"); - } - } - - gp_Ax1 anAxis (BRep_Tool::Pnt(V1), aV); - BRepPrimAPI_MakeRevol MR (aShapeBase, anAxis, aCI.GetAngle(), Standard_False); - if (!MR.IsDone()) MR.Build(); - if (!MR.IsDone()) StdFail_NotDone::Raise("Revolution algorithm has failed"); - aShape = MR.Shape(); - } else { - } - - if (aShape.IsNull()) return 0; - aFunction->SetValue(aShape); - - log.SetTouched(Label()); - - return 1; -} - - -//======================================================================= -//function : GEOMImpl_RevolutionDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_RevolutionDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_RevolutionDriver", - sizeof(GEOMImpl_RevolutionDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= -const Handle(GEOMImpl_RevolutionDriver) Handle(GEOMImpl_RevolutionDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_RevolutionDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_RevolutionDriver))) { - _anOtherObject = Handle(GEOMImpl_RevolutionDriver)((Handle(GEOMImpl_RevolutionDriver)&)AnObject); - } - } - - return _anOtherObject ; -} diff --git a/src/GEOMImpl/GEOMImpl_RevolutionDriver.hxx b/src/GEOMImpl/GEOMImpl_RevolutionDriver.hxx deleted file mode 100644 index e994b9381..000000000 --- a/src/GEOMImpl/GEOMImpl_RevolutionDriver.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// File : GEOMImpl_RevolutionDriver.ixx -// Module : GEOMImpl - -#ifndef _GEOMImpl_RevolutionDriver_HeaderFile -#define _GEOMImpl_RevolutionDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_RevolutionDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_RevolutionDriver); - -class Handle(GEOMImpl_RevolutionDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_RevolutionDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_RevolutionDriver)(const Handle(GEOMImpl_RevolutionDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_RevolutionDriver)(const GEOMImpl_RevolutionDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_RevolutionDriver)& operator=(const Handle(GEOMImpl_RevolutionDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_RevolutionDriver)& operator=(const GEOMImpl_RevolutionDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_RevolutionDriver* operator->() - { - return (GEOMImpl_RevolutionDriver *)ControlAccess(); - } - - GEOMImpl_RevolutionDriver* operator->() const - { - return (GEOMImpl_RevolutionDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_RevolutionDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_RevolutionDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_RevolutionDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_RevolutionDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_RevolutionDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_RevolutionDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_RevolutionDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_RevolutionDriver) == AType || TFunction_Driver::IsKind(AType)); } - - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_RotateDriver.cxx b/src/GEOMImpl/GEOMImpl_RotateDriver.cxx deleted file mode 100644 index c3ae0aecb..000000000 --- a/src/GEOMImpl/GEOMImpl_RotateDriver.cxx +++ /dev/null @@ -1,245 +0,0 @@ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_RotateDriver::GetID() -{ - static Standard_GUID aRotateDriver("FF1BBB56-5D14-4df2-980B-3A668264EA16"); - return aRotateDriver; -} - - -//======================================================================= -//function : GEOMImpl_RotateDriver -//purpose : -//======================================================================= - -GEOMImpl_RotateDriver::GEOMImpl_RotateDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_RotateDriver::Execute(TFunction_Logbook& log) const -{ - if(Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - if(aFunction.IsNull()) return 0; - - GEOMImpl_IRotate RI(aFunction); - gp_Trsf aTrsf; - Standard_Integer aType = aFunction->GetType(); - Handle(GEOM_Function) anOriginalFunction = RI.GetOriginal(); - if(anOriginalFunction.IsNull()) return 0; - TopoDS_Shape aShape, anOriginal = anOriginalFunction->GetValue(); - if(anOriginal.IsNull()) return 0; - - if(aType == ROTATE || aType == ROTATE_COPY) { - Handle(GEOM_Function) anAxis = RI.GetAxis(); - if(anAxis.IsNull()) return 0; - TopoDS_Shape A = anAxis->GetValue(); - if(A.IsNull() || A.ShapeType() != TopAbs_EDGE) return 0; - TopoDS_Edge anEdge = TopoDS::Edge(A); - - gp_Pnt aP1 = BRep_Tool::Pnt(TopExp::FirstVertex(anEdge)); - gp_Pnt aP2 = BRep_Tool::Pnt(TopExp::LastVertex(anEdge)); - gp_Dir aDir(gp_Vec(aP1, aP2)); - gp_Ax1 anAx1(aP1, aDir); - Standard_Real anAngle = RI.GetAngle(); - aTrsf.SetRotation(anAx1, anAngle); - - BRepBuilderAPI_Transform aTransformation(anOriginal, aTrsf, Standard_False); - aShape = aTransformation.Shape(); - } - else if(aType == ROTATE_1D) { - //Get direction - Handle(GEOM_Function) anAxis = RI.GetAxis(); - if(anAxis.IsNull()) return 0; - TopoDS_Shape A = anAxis->GetValue(); - if(A.IsNull() || A.ShapeType() != TopAbs_EDGE) return 0; - TopoDS_Edge anEdge = TopoDS::Edge(A); - - gp_Pnt aP1 = BRep_Tool::Pnt(TopExp::FirstVertex(anEdge)); - gp_Pnt aP2 = BRep_Tool::Pnt(TopExp::LastVertex(anEdge)); - gp_Dir D(gp_Vec(aP1, aP2)) ; - - gp_Ax1 AX1(aP1, D) ; - - Standard_Integer nbtimes = RI.GetNbIter1(); - Standard_Real angle = 360.0/nbtimes ; - - TopoDS_Compound aCompound; - BRep_Builder B; - B.MakeCompound( aCompound ); - - for (int i = 0; i < nbtimes; i++ ) { - aTrsf.SetRotation(AX1, i*angle*PI180) ; - BRepBuilderAPI_Transform myBRepTransformation(anOriginal, aTrsf, Standard_False) ; - B.Add( aCompound, myBRepTransformation.Shape() ); - } - - aShape = aCompound ; - } - else if(aType == ROTATE_2D) { - Standard_Real DX, DY, DZ ; - - //Get direction - Handle(GEOM_Function) anAxis = RI.GetAxis(); - if(anAxis.IsNull()) return 0; - TopoDS_Shape A = anAxis->GetValue(); - if(A.IsNull() || A.ShapeType() != TopAbs_EDGE) return 0; - TopoDS_Edge anEdge = TopoDS::Edge(A); - gp_Pnt aP1 = BRep_Tool::Pnt(TopExp::FirstVertex(anEdge)); - gp_Pnt aP2 = BRep_Tool::Pnt(TopExp::LastVertex(anEdge)); - gp_Dir D(gp_Vec(aP1, aP2)) ; - - gp_Ax1 AX1(aP1, D) ; - - - gp_Trsf theTransformation1 ; - gp_Trsf theTransformation2 ; - gp_Pnt P1 ; - GProp_GProps System ; - - if ( anOriginal.ShapeType() == TopAbs_VERTEX) { - P1 = BRep_Tool::Pnt(TopoDS::Vertex( anOriginal )); - } - else if ( anOriginal.ShapeType() == TopAbs_EDGE || anOriginal.ShapeType() == TopAbs_WIRE ) { - BRepGProp::LinearProperties(anOriginal, System); - P1 = System.CentreOfMass() ; - } - else if ( anOriginal.ShapeType() == TopAbs_FACE || anOriginal.ShapeType() == TopAbs_SHELL ) { - BRepGProp::SurfaceProperties(anOriginal, System); - P1 = System.CentreOfMass() ; - } - else { - BRepGProp::VolumeProperties(anOriginal, System); - P1 = System.CentreOfMass() ; - } - - Handle(Geom_Line) Line = new Geom_Line(AX1); - GeomAPI_ProjectPointOnCurve aPrjTool( P1, Line ) ; - gp_Pnt P2 = aPrjTool.NearestPoint(); - - if ( P1.IsEqual(P2, Precision::Confusion() ) ) return 0; - - gp_Vec Vec(P1.X()-P2.X(), P1.Y()-P2.Y(), P1.Z()-P2.Z()) ; - Vec.Normalize(); - - Standard_Integer nbtimes2 = RI.GetNbIter2(); - Standard_Integer nbtimes1 = RI.GetNbIter1(); - Standard_Real step = RI.GetStep(); - Standard_Real ang = RI.GetAngle(); - - gp_Vec myVec ; - TopoDS_Compound aCompound; - BRep_Builder B; - B.MakeCompound( aCompound ); - for (int i = 0; i < nbtimes2; i++ ) { - for (int j = 0; j < nbtimes1; j++ ) { - DX = i * step * Vec.X() ; - DY = i * step * Vec.Y() ; - DZ = i * step * Vec.Z() ; - myVec.SetCoord( DX, DY, DZ ) ; - theTransformation1.SetTranslation(myVec) ; - theTransformation2.SetRotation(AX1, j*ang*PI180) ; - BRepBuilderAPI_Transform myBRepTransformation1(anOriginal, theTransformation1, Standard_False) ; - BRepBuilderAPI_Transform myBRepTransformation2(myBRepTransformation1.Shape(), theTransformation2, Standard_False) ; - B.Add( aCompound, myBRepTransformation2.Shape() ); - } - } - - aShape = aCompound; - - } - else return 0; - - - - - if (aShape.IsNull()) return 0; - - aFunction->SetValue(aShape); - - log.SetTouched(Label()); - - return 1; -} - - -//======================================================================= -//function : GEOMImpl_RotateDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_RotateDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_RotateDriver", - sizeof(GEOMImpl_RotateDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= - -const Handle(GEOMImpl_RotateDriver) Handle(GEOMImpl_RotateDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_RotateDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_RotateDriver))) { - _anOtherObject = Handle(GEOMImpl_RotateDriver)((Handle(GEOMImpl_RotateDriver)&)AnObject); - } - } - - return _anOtherObject ; -} - - diff --git a/src/GEOMImpl/GEOMImpl_RotateDriver.hxx b/src/GEOMImpl/GEOMImpl_RotateDriver.hxx deleted file mode 100644 index 7db4c00dd..000000000 --- a/src/GEOMImpl/GEOMImpl_RotateDriver.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// File : GEOMImpl_RotateDriver.hxx -// Module : GEOMImpl - -#ifndef _GEOMImpl_RotateDriver_HeaderFile -#define _GEOMImpl_RotateDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_RotateDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_RotateDriver); - -class Handle(GEOMImpl_RotateDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_RotateDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_RotateDriver)(const Handle(GEOMImpl_RotateDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_RotateDriver)(const GEOMImpl_RotateDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_RotateDriver)& operator=(const Handle(GEOMImpl_RotateDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_RotateDriver)& operator=(const GEOMImpl_RotateDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_RotateDriver* operator->() - { - return (GEOMImpl_RotateDriver *)ControlAccess(); - } - - GEOMImpl_RotateDriver* operator->() const - { - return (GEOMImpl_RotateDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_RotateDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_RotateDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_RotateDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_RotateDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_RotateDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_RotateDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_RotateDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_RotateDriver) == AType || TFunction_Driver::IsKind(AType)); } - - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_ScaleDriver.cxx b/src/GEOMImpl/GEOMImpl_ScaleDriver.cxx deleted file mode 100644 index 01106835f..000000000 --- a/src/GEOMImpl/GEOMImpl_ScaleDriver.cxx +++ /dev/null @@ -1,119 +0,0 @@ - -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_ScaleDriver::GetID() -{ - static Standard_GUID aScaleDriver("FF1BBB52-5D14-4df2-980B-3A668264EA16"); - return aScaleDriver; -} - - -//======================================================================= -//function : GEOMImpl_ScaleDriver -//purpose : -//======================================================================= -GEOMImpl_ScaleDriver::GEOMImpl_ScaleDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_ScaleDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - GEOMImpl_IScale aCI (aFunction); - Standard_Integer aType = aFunction->GetType(); - - TopoDS_Shape aShape; - - if (aType == SCALE_SHAPE || aType == SCALE_SHAPE_COPY) { - Handle(GEOM_Function) aRefShape = aCI.GetShape(); - Handle(GEOM_Function) aRefPoint = aCI.GetPoint(); - TopoDS_Shape aShapeBase = aRefShape->GetValue(); - TopoDS_Shape aShapePnt = aRefPoint->GetValue(); - if (aShapeBase.IsNull() || aShapePnt.IsNull()) return 0; - if (aShapePnt.ShapeType() != TopAbs_VERTEX) return 0; - - gp_Pnt aP = BRep_Tool::Pnt(TopoDS::Vertex(aShapePnt)); - gp_Trsf aTrsf; - aTrsf.SetScale(aP, aCI.GetFactor()); - BRepBuilderAPI_Transform aBRepTrsf (aShapeBase, aTrsf, Standard_False); - aShape = aBRepTrsf.Shape(); - } else { - } - - if (aShape.IsNull()) return 0; - - aFunction->SetValue(aShape); - - log.SetTouched(Label()); - - return 1; -} - - -//======================================================================= -//function : GEOMImpl_ScaleDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_ScaleDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_ScaleDriver", - sizeof(GEOMImpl_ScaleDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= -const Handle(GEOMImpl_ScaleDriver) Handle(GEOMImpl_ScaleDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_ScaleDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_ScaleDriver))) { - _anOtherObject = Handle(GEOMImpl_ScaleDriver)((Handle(GEOMImpl_ScaleDriver)&)AnObject); - } - } - - return _anOtherObject ; -} diff --git a/src/GEOMImpl/GEOMImpl_ScaleDriver.hxx b/src/GEOMImpl/GEOMImpl_ScaleDriver.hxx deleted file mode 100644 index a2fc5907b..000000000 --- a/src/GEOMImpl/GEOMImpl_ScaleDriver.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// File : GEOMImpl_ScaleDriver.ixx -// Module : GEOMImpl - -#ifndef _GEOMImpl_ScaleDriver_HeaderFile -#define _GEOMImpl_ScaleDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_ScaleDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_ScaleDriver); - -class Handle(GEOMImpl_ScaleDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_ScaleDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_ScaleDriver)(const Handle(GEOMImpl_ScaleDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_ScaleDriver)(const GEOMImpl_ScaleDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_ScaleDriver)& operator=(const Handle(GEOMImpl_ScaleDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_ScaleDriver)& operator=(const GEOMImpl_ScaleDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_ScaleDriver* operator->() - { - return (GEOMImpl_ScaleDriver *)ControlAccess(); - } - - GEOMImpl_ScaleDriver* operator->() const - { - return (GEOMImpl_ScaleDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_ScaleDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_ScaleDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_ScaleDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_ScaleDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_ScaleDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_ScaleDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_ScaleDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_ScaleDriver) == AType || TFunction_Driver::IsKind(AType)); } - - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_ShapeDriver.cxx b/src/GEOMImpl/GEOMImpl_ShapeDriver.cxx deleted file mode 100644 index b2c57e879..000000000 --- a/src/GEOMImpl/GEOMImpl_ShapeDriver.cxx +++ /dev/null @@ -1,353 +0,0 @@ - -#include - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_ShapeDriver::GetID() -{ - static Standard_GUID aShapeDriver("FF1BBB54-5D14-4df2-980B-3A668264EA16"); - return aShapeDriver; -} - - -//======================================================================= -//function : GEOMImpl_ShapeDriver -//purpose : -//======================================================================= -GEOMImpl_ShapeDriver::GEOMImpl_ShapeDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_ShapeDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - GEOMImpl_IShapes aCI (aFunction); - Standard_Integer aType = aFunction->GetType(); - - TopoDS_Shape aShape; - BRep_Builder B; - - if (aType == WIRE_EDGES) { - Handle(TColStd_HSequenceOfTransient) aShapes = aCI.GetShapes(); - unsigned int ind, nbshapes = aShapes->Length(); - - // add edges - BRepBuilderAPI_MakeWire MW; - for (ind = 1; ind <= nbshapes; ind++) { - Handle(GEOM_Function) aRefShape = Handle(GEOM_Function)::DownCast(aShapes->Value(ind)); - TopoDS_Shape aShape_i = aRefShape->GetValue(); - if (aShape_i.IsNull()) { - Standard_NullObject::Raise("Shape for wire construction is null"); - } - if (aShape_i.ShapeType() == TopAbs_EDGE) - MW.Add(TopoDS::Edge(aShape_i)); - else if (aShape_i.ShapeType() == TopAbs_WIRE) - MW.Add(TopoDS::Wire(aShape_i)); - else - Standard_TypeMismatch::Raise - ("Shape for wire construction is neither an edge nor a wire"); - } - - if (!MW.IsDone()) { - Standard_ConstructionError::Raise("Wire construction failed"); - } - aShape = MW; - - } else if (aType == FACE_WIRE) { - Handle(GEOM_Function) aRefBase = aCI.GetBase(); - TopoDS_Shape aShapeBase = aRefBase->GetValue(); - if (aShapeBase.IsNull() || aShapeBase.ShapeType() != TopAbs_WIRE) { - Standard_NullObject::Raise - ("Shape for face construction is null or not a wire"); - } - TopoDS_Wire W = TopoDS::Wire(aShapeBase); - BRepBuilderAPI_MakeFace MF (W, aCI.GetIsPlanar()); - if (!MF.IsDone()) { - Standard_ConstructionError::Raise("Face construction failed"); - } - aShape = MF.Shape(); - - } else if (aType == FACE_WIRES) { - Handle(TColStd_HSequenceOfTransient) aShapes = aCI.GetShapes(); - - // first wire - Handle(GEOM_Function) aRefWire = Handle(GEOM_Function)::DownCast(aShapes->Value(1)); - TopoDS_Shape aWire = aRefWire->GetValue(); - if (aWire.IsNull() || aWire.ShapeType() != TopAbs_WIRE) { - Standard_NullObject::Raise("Shape for face construction is null or not a wire"); - } - TopoDS_Wire W = TopoDS::Wire(aWire); - - // basic face - BRepBuilderAPI_MakeFace MF (W, aCI.GetIsPlanar()); - if (!MF.IsDone()) { - Standard_ConstructionError::Raise("Face construction failed"); - } - TopoDS_Shape FFace = MF.Shape(); - if (!FFace.IsNull()) { - unsigned int ind, nbshapes = aShapes->Length(); - if (nbshapes == 1) { - aShape = FFace; - - } else if (nbshapes >= 2) { - TopoDS_Compound C; - BRep_Builder aBuilder; - aBuilder.MakeCompound(C); - BRepAlgo_FaceRestrictor FR; - - TopAbs_Orientation OriF = FFace.Orientation(); - TopoDS_Shape aLocalS = FFace.Oriented(TopAbs_FORWARD); - FR.Init(TopoDS::Face(aLocalS), Standard_False, Standard_True); - - for (ind = 1; ind <= nbshapes; ind++) { - Handle(GEOM_Function) aRefWire_i = - Handle(GEOM_Function)::DownCast(aShapes->Value(ind)); - TopoDS_Shape aWire_i = aRefWire_i->GetValue(); - if (aWire_i.IsNull() || aWire_i.ShapeType() != TopAbs_WIRE) { - Standard_NullObject::Raise("Shape for face construction is null or not a wire"); - } - - FR.Add(TopoDS::Wire(aWire_i)); - } - - FR.Perform(); - - if (FR.IsDone()) { - int k = 0; - TopoDS_Shape aFace; - for (; FR.More(); FR.Next()) { - aFace = FR.Current().Oriented(OriF); - aBuilder.Add(C, aFace); - k++; - } - if (k == 1) { - aShape = aFace; - } else { - aShape = C; - } - } - } - } - } else if (aType == SHELL_FACES) { - Handle(TColStd_HSequenceOfTransient) aShapes = aCI.GetShapes(); - unsigned int ind, nbshapes = aShapes->Length(); - - // add faces - BRepBuilderAPI_Sewing aSewing(Precision::Confusion()*10.0); - for (ind = 1; ind <= nbshapes; ind++) { - Handle(GEOM_Function) aRefShape = Handle(GEOM_Function)::DownCast(aShapes->Value(ind)); - TopoDS_Shape aShape_i = aRefShape->GetValue(); - if (aShape_i.IsNull()) { - Standard_NullObject::Raise("Face for shell construction is null"); - } - aSewing.Add(aShape_i); - } - - aSewing.Perform(); - - TopExp_Explorer exp (aSewing.SewedShape(), TopAbs_SHELL); - Standard_Integer ish = 0; - for (; exp.More(); exp.Next()) { - aShape = exp.Current(); - ish++; - } - - if (ish != 1) - aShape = aSewing.SewedShape(); - - } else if (aType == SOLID_SHELL) { - Handle(GEOM_Function) aRefShell = aCI.GetBase(); - TopoDS_Shape aShapeShell = aRefShell->GetValue(); - if (aShapeShell.IsNull() || aShapeShell.ShapeType() != TopAbs_SHELL) { - Standard_NullObject::Raise("Shape for solid construction is null or not a shell"); - } - - BRepCheck_Shell chkShell(TopoDS::Shell(aShapeShell)); - if(chkShell.Closed() == BRepCheck_NotClosed) return 0; - - TopoDS_Solid Sol; - B.MakeSolid(Sol); - B.Add(Sol, aShapeShell); - BRepClass3d_SolidClassifier SC (Sol); - SC.PerformInfinitePoint(Precision::Confusion()); - if (SC.State() == TopAbs_IN) { - B.MakeSolid(Sol); - B.Add(Sol, aShapeShell.Reversed()); - } - - aShape = Sol; - - } else if (aType == SOLID_SHELLS) { - Handle(TColStd_HSequenceOfTransient) aShapes = aCI.GetShapes(); - unsigned int ind, nbshapes = aShapes->Length(); - Standard_Integer ish = 0; - TopoDS_Solid Sol; - B.MakeSolid(Sol); - - // add shapes - for (ind = 1; ind <= nbshapes; ind++) { - Handle(GEOM_Function) aRefShape = Handle(GEOM_Function)::DownCast(aShapes->Value(ind)); - TopoDS_Shape aShapeShell = aRefShape->GetValue(); - if (aShapeShell.IsNull()) { - Standard_NullObject::Raise("Shell for solid construction is null"); - } - if (aShapeShell.ShapeType() == TopAbs_SHELL) { - B.Add(Sol, aShapeShell); - ish++; - } - } - if ( ish == 0 ) return 0; - BRepClass3d_SolidClassifier SC (Sol); - SC.PerformInfinitePoint(Precision::Confusion()); - switch (SC.State()) { - case TopAbs_IN: - aShape = Sol.Reversed(); break; - case TopAbs_OUT: - aShape = Sol; break; - default: // not closed shell? - return 0; - } - - } else if (aType == COMPOUND_SHAPES) { - Handle(TColStd_HSequenceOfTransient) aShapes = aCI.GetShapes(); - unsigned int ind, nbshapes = aShapes->Length(); - - // add shapes - TopoDS_Compound C; - B.MakeCompound(C); - for (ind = 1; ind <= nbshapes; ind++) { - Handle(GEOM_Function) aRefShape = Handle(GEOM_Function)::DownCast(aShapes->Value(ind)); - TopoDS_Shape aShape_i = aRefShape->GetValue(); - if (aShape_i.IsNull()) { - Standard_NullObject::Raise("Shape for compound construction is null"); - } - B.Add(C, aShape_i); - } - - aShape = C; - - } else if (aType == REVERSE_ORIENTATION) { - Handle(GEOM_Function) aRefShape = aCI.GetBase(); - TopoDS_Shape aShape_i = aRefShape->GetValue(); - if (aShape_i.IsNull()) { - Standard_NullObject::Raise("Shape for reverse is null"); - } - - BRepBuilderAPI_Copy Copy(aShape_i); - if( Copy.IsDone() ) { - TopoDS_Shape tds = Copy.Shape(); - if( tds.IsNull() ) { - Standard_ConstructionError::Raise("Orientation aborted : Can not reverse the shape"); - } - - if( tds.Orientation() == TopAbs_FORWARD) - tds.Orientation(TopAbs_REVERSED) ; - else - tds.Orientation(TopAbs_FORWARD) ; - - aShape = tds; - } - } - - if (aShape.IsNull()) return 0; - - // Check shape validity - BRepCheck_Analyzer ana (aShape, false); - if (!ana.IsValid()) { - Standard_ConstructionError::Raise("Algorithm have produced an invalid shape result"); - } - - aFunction->SetValue(aShape); - - log.SetTouched(Label()); - - return 1; -} - - -//======================================================================= -//function : GEOMImpl_ShapeDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_ShapeDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_ShapeDriver", - sizeof(GEOMImpl_ShapeDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= -const Handle(GEOMImpl_ShapeDriver) Handle(GEOMImpl_ShapeDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_ShapeDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_ShapeDriver))) { - _anOtherObject = Handle(GEOMImpl_ShapeDriver)((Handle(GEOMImpl_ShapeDriver)&)AnObject); - } - } - - return _anOtherObject ; -} diff --git a/src/GEOMImpl/GEOMImpl_ShapeDriver.hxx b/src/GEOMImpl/GEOMImpl_ShapeDriver.hxx deleted file mode 100644 index 191a176bc..000000000 --- a/src/GEOMImpl/GEOMImpl_ShapeDriver.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// File : GEOMImpl_ShapeDriver.ixx -// Module : GEOMImpl - -#ifndef _GEOMImpl_ShapeDriver_HeaderFile -#define _GEOMImpl_ShapeDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_ShapeDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_ShapeDriver); - -class Handle(GEOMImpl_ShapeDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_ShapeDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_ShapeDriver)(const Handle(GEOMImpl_ShapeDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_ShapeDriver)(const GEOMImpl_ShapeDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_ShapeDriver)& operator=(const Handle(GEOMImpl_ShapeDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_ShapeDriver)& operator=(const GEOMImpl_ShapeDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_ShapeDriver* operator->() - { - return (GEOMImpl_ShapeDriver *)ControlAccess(); - } - - GEOMImpl_ShapeDriver* operator->() const - { - return (GEOMImpl_ShapeDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_ShapeDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_ShapeDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_ShapeDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_ShapeDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_ShapeDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_ShapeDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_ShapeDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_ShapeDriver) == AType || TFunction_Driver::IsKind(AType)); } - - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_SketcherDriver.cxx b/src/GEOMImpl/GEOMImpl_SketcherDriver.cxx deleted file mode 100644 index eb34dcb0d..000000000 --- a/src/GEOMImpl/GEOMImpl_SketcherDriver.cxx +++ /dev/null @@ -1,150 +0,0 @@ - -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include - -#include - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_SketcherDriver::GetID() -{ - static Standard_GUID aSketcherDriver("FF1BBB64-5D14-4df2-980B-3A668264EA16"); - return aSketcherDriver; -} - - -//======================================================================= -//function : GEOMImpl_SketcherDriver -//purpose : -//======================================================================= -GEOMImpl_SketcherDriver::GEOMImpl_SketcherDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_SketcherDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - GEOMImpl_ISketcher aCI (aFunction); - //Standard_Integer aType = aFunction->GetType(); - - // retrieve the command - TCollection_AsciiString aCommand = aCI.GetCommand(); - if (aCommand.IsEmpty()) - return 0; - - TopoDS_Shape aShape; - - // create sketcher - Sketcher_Profile aProfile (aCommand.ToCString()); - - if (!aProfile.IsDone()) { - Standard_ConstructionError::Raise("Sketcher creation failed"); - } - - aShape = aProfile.GetShape(); - if (aShape.IsNull()) - return 0; - - gp_Ax3 aWPlane; - if ( aFunction->GetType() == SKETCHER_NINE_DOUBLS ) - { - gp_Pnt aOrigin = - gp_Pnt(aCI.GetWorkingPlane(1), aCI.GetWorkingPlane(2), aCI.GetWorkingPlane(3)); - gp_Dir aDirZ = - gp_Dir(aCI.GetWorkingPlane(4), aCI.GetWorkingPlane(5), aCI.GetWorkingPlane(6)); - gp_Dir aDirX = - gp_Dir(aCI.GetWorkingPlane(7), aCI.GetWorkingPlane(8), aCI.GetWorkingPlane(9)); - aWPlane = gp_Ax3(aOrigin, aDirZ, aDirX); - } - else - { - Handle(GEOM_Function) aRefFace = aCI.GetWorkingPlane(); - TopoDS_Shape aShape = aRefFace->GetValue(); - if ( aShape.IsNull() || aShape.ShapeType() != TopAbs_FACE ) - return 0; - Handle(Geom_Surface) aGS = BRep_Tool::Surface( TopoDS::Face( aShape )); - if ( aGS.IsNull() || !aGS->IsKind( STANDARD_TYPE( Geom_Plane ))) - return 0; - Handle(Geom_Plane) aGPlane = Handle(Geom_Plane)::DownCast( aGS ); - aWPlane = aGPlane->Pln().Position(); - } - gp_Trsf aTrans; - aTrans.SetTransformation(aWPlane); - aTrans.Invert(); - BRepBuilderAPI_Transform aTransformation (aShape, aTrans, Standard_False); - aShape = aTransformation.Shape(); - - if (aShape.IsNull()) - return 0; - - // set the function result - aFunction->SetValue(aShape); - - log.SetTouched(Label()); - - return 1; -} - - -//======================================================================= -//function : GEOMImpl_SketcherDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_SketcherDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_SketcherDriver", - sizeof(GEOMImpl_SketcherDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= -const Handle(GEOMImpl_SketcherDriver) Handle(GEOMImpl_SketcherDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_SketcherDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_SketcherDriver))) { - _anOtherObject = Handle(GEOMImpl_SketcherDriver)((Handle(GEOMImpl_SketcherDriver)&)AnObject); - } - } - - return _anOtherObject ; -} diff --git a/src/GEOMImpl/GEOMImpl_SketcherDriver.hxx b/src/GEOMImpl/GEOMImpl_SketcherDriver.hxx deleted file mode 100644 index de9cfd9e9..000000000 --- a/src/GEOMImpl/GEOMImpl_SketcherDriver.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// File : GEOMImpl_SketcherDriver.ixx -// Module : GEOMImpl - -#ifndef _GEOMImpl_SketcherDriver_HeaderFile -#define _GEOMImpl_SketcherDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_SketcherDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_SketcherDriver); - -class Handle(GEOMImpl_SketcherDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_SketcherDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_SketcherDriver)(const Handle(GEOMImpl_SketcherDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_SketcherDriver)(const GEOMImpl_SketcherDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_SketcherDriver)& operator=(const Handle(GEOMImpl_SketcherDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_SketcherDriver)& operator=(const GEOMImpl_SketcherDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_SketcherDriver* operator->() - { - return (GEOMImpl_SketcherDriver *)ControlAccess(); - } - - GEOMImpl_SketcherDriver* operator->() const - { - return (GEOMImpl_SketcherDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_SketcherDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_SketcherDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_SketcherDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_SketcherDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_SketcherDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_SketcherDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_SketcherDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_SketcherDriver) == AType || TFunction_Driver::IsKind(AType)); } - - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_SphereDriver.cxx b/src/GEOMImpl/GEOMImpl_SphereDriver.cxx deleted file mode 100644 index c5fbb6c7c..000000000 --- a/src/GEOMImpl/GEOMImpl_SphereDriver.cxx +++ /dev/null @@ -1,114 +0,0 @@ - -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_SphereDriver::GetID() -{ - static Standard_GUID aSphereDriver("FF1BBB16-5D14-4df2-980B-3A668264EA16"); - return aSphereDriver; -} - - -//======================================================================= -//function : GEOMImpl_SphereDriver -//purpose : -//======================================================================= -GEOMImpl_SphereDriver::GEOMImpl_SphereDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_SphereDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - GEOMImpl_ISphere aCI (aFunction); - Standard_Integer aType = aFunction->GetType(); - - TopoDS_Shape aShape; - - if (aType == SPHERE_R) { - aShape = BRepPrimAPI_MakeSphere(aCI.GetR()).Shape(); - } - else if (aType == SPHERE_PNT_R) { - Handle(GEOM_Function) aRefPoint = aCI.GetPoint(); - TopoDS_Shape aShapePnt = aRefPoint->GetValue(); - if (aShapePnt.ShapeType() == TopAbs_VERTEX) { - gp_Pnt aP = BRep_Tool::Pnt(TopoDS::Vertex(aShapePnt)); - aShape = BRepPrimAPI_MakeSphere(aP, aCI.GetR()).Shape(); - } - } - else { - } - - if (aShape.IsNull()) return 0; - - aFunction->SetValue(aShape); - - log.SetTouched(Label()); - - return 1; -} - - -//======================================================================= -//function : GEOMImpl_SphereDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_SphereDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_SphereDriver", - sizeof(GEOMImpl_SphereDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= -const Handle(GEOMImpl_SphereDriver) Handle(GEOMImpl_SphereDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_SphereDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_SphereDriver))) { - _anOtherObject = Handle(GEOMImpl_SphereDriver)((Handle(GEOMImpl_SphereDriver)&)AnObject); - } - } - - return _anOtherObject ; -} diff --git a/src/GEOMImpl/GEOMImpl_SphereDriver.hxx b/src/GEOMImpl/GEOMImpl_SphereDriver.hxx deleted file mode 100644 index ea5a4b09a..000000000 --- a/src/GEOMImpl/GEOMImpl_SphereDriver.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// File : GEOMImpl_SphereDriver.ixx -// Module : GEOMImpl - -#ifndef _GEOMImpl_SphereDriver_HeaderFile -#define _GEOMImpl_SphereDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_SphereDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_SphereDriver); - -class Handle(GEOMImpl_SphereDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_SphereDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_SphereDriver)(const Handle(GEOMImpl_SphereDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_SphereDriver)(const GEOMImpl_SphereDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_SphereDriver)& operator=(const Handle(GEOMImpl_SphereDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_SphereDriver)& operator=(const GEOMImpl_SphereDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_SphereDriver* operator->() - { - return (GEOMImpl_SphereDriver *)ControlAccess(); - } - - GEOMImpl_SphereDriver* operator->() const - { - return (GEOMImpl_SphereDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_SphereDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_SphereDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_SphereDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_SphereDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_SphereDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_SphereDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_SphereDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_SphereDriver) == AType || TFunction_Driver::IsKind(AType)); } - - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_SplineDriver.cxx b/src/GEOMImpl/GEOMImpl_SplineDriver.cxx deleted file mode 100644 index 2bd1c0d60..000000000 --- a/src/GEOMImpl/GEOMImpl_SplineDriver.cxx +++ /dev/null @@ -1,157 +0,0 @@ - -#include - -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include - -#include -//#include -#include - -#include -#include -#include -#include -#include -#include - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_SplineDriver::GetID() -{ - static Standard_GUID aSplineDriver("FF1BBB33-5D14-4df2-980B-3A668264EA16"); - return aSplineDriver; -} - - -//======================================================================= -//function : GEOMImpl_SplineDriver -//purpose : -//======================================================================= -GEOMImpl_SplineDriver::GEOMImpl_SplineDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_SplineDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - GEOMImpl_ISpline aCI (aFunction); - Standard_Integer aType = aFunction->GetType(); - - TopoDS_Shape aShape; - - if (aType == SPLINE_BEZIER || aType == SPLINE_INTERPOLATION) { - int ind, aLen = aCI.GetLength(); - if (aLen < 2) return 0; - Standard_Boolean isSeveral = Standard_False; - gp_Pnt aPrevP; - TColgp_Array1OfPnt CurvePoints (1, aLen); - for (ind = 1; ind <= aLen; ind++) { - Handle(GEOM_Function) aRefPoint = aCI.GetPoint(ind); - TopoDS_Shape aShapePnt = aRefPoint->GetValue(); - if (aShapePnt.ShapeType() == TopAbs_VERTEX) { - gp_Pnt aP = BRep_Tool::Pnt(TopoDS::Vertex(aShapePnt)); - if (!isSeveral && ind > 1) { - if (aP.Distance(aPrevP) > Precision::Confusion()) { - isSeveral = Standard_True; - } - } - CurvePoints.SetValue(ind, aP); - aPrevP = aP; - } - } - if (aType == SPLINE_BEZIER) { - if (!isSeveral) { - Standard_ConstructionError::Raise("Points for Bezier Curve are too close"); - } - Handle(Geom_BezierCurve) GBC = new Geom_BezierCurve(CurvePoints); - aShape = BRepBuilderAPI_MakeEdge(GBC).Edge(); - } else { -// GeomAPI_PointsToBSpline GBC (CurvePoints); -// aShape = BRepBuilderAPI_MakeEdge(GBC).Edge(); - Handle(TColgp_HArray1OfPnt) aHCurvePoints = new TColgp_HArray1OfPnt(1, aLen); - for (ind = 1; ind <= aLen; ind++) { - aHCurvePoints->SetValue(ind, CurvePoints.Value(ind)); - } - GeomAPI_Interpolate GBC (aHCurvePoints, Standard_False, gp::Resolution()); - GBC.Perform(); - if (GBC.IsDone()) - aShape = BRepBuilderAPI_MakeEdge(GBC.Curve()).Edge(); - else - return 0; - } - } - else { - } - - if (aShape.IsNull()) return 0; - - aFunction->SetValue(aShape); - - log.SetTouched(Label()); - - return 1; -} - - -//======================================================================= -//function : GEOMImpl_SplineDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_SplineDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_SplineDriver", - sizeof(GEOMImpl_SplineDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= -const Handle(GEOMImpl_SplineDriver) Handle(GEOMImpl_SplineDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_SplineDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_SplineDriver))) { - _anOtherObject = Handle(GEOMImpl_SplineDriver)((Handle(GEOMImpl_SplineDriver)&)AnObject); - } - } - - return _anOtherObject ; -} diff --git a/src/GEOMImpl/GEOMImpl_SplineDriver.hxx b/src/GEOMImpl/GEOMImpl_SplineDriver.hxx deleted file mode 100644 index c3c7d2db6..000000000 --- a/src/GEOMImpl/GEOMImpl_SplineDriver.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// File : GEOMImpl_SplineDriver.ixx -// Module : GEOMImpl - -#ifndef _GEOMImpl_SplineDriver_HeaderFile -#define _GEOMImpl_SplineDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_SplineDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_SplineDriver); - -class Handle(GEOMImpl_SplineDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_SplineDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_SplineDriver)(const Handle(GEOMImpl_SplineDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_SplineDriver)(const GEOMImpl_SplineDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_SplineDriver)& operator=(const Handle(GEOMImpl_SplineDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_SplineDriver)& operator=(const GEOMImpl_SplineDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_SplineDriver* operator->() - { - return (GEOMImpl_SplineDriver *)ControlAccess(); - } - - GEOMImpl_SplineDriver* operator->() const - { - return (GEOMImpl_SplineDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_SplineDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_SplineDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_SplineDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_SplineDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_SplineDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_SplineDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_SplineDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_SplineDriver) == AType || TFunction_Driver::IsKind(AType)); } - - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_Template.cxx b/src/GEOMImpl/GEOMImpl_Template.cxx deleted file mode 100644 index 4bdb57128..000000000 --- a/src/GEOMImpl/GEOMImpl_Template.cxx +++ /dev/null @@ -1,88 +0,0 @@ - -#include - -#include -#include -#include - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_Template::GetID() -{ - static Standard_GUID aTemplate("Insert the correct GUID here"); - return aTemplate; -} - - -//======================================================================= -//function : GEOMImpl_Template -//purpose : -//======================================================================= - -GEOMImpl_Template::GEOMImpl_Template() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_Template::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - if(aFunction.IsNull()) return 0; - - //Add implemetation here - - log.SetTouched(Label()); - return 1; -} - - -//======================================================================= -//function : GEOMImpl_Template_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_Template_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_Template", - sizeof(GEOMImpl_Template), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= - -const Handle(GEOMImpl_Template) Handle(GEOMImpl_Template)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_Template) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_Template))) { - _anOtherObject = Handle(GEOMImpl_Template)((Handle(GEOMImpl_Template)&)AnObject); - } - } - - return _anOtherObject ; -} - - diff --git a/src/GEOMImpl/GEOMImpl_Template.hxx b/src/GEOMImpl/GEOMImpl_Template.hxx deleted file mode 100644 index d44f28c24..000000000 --- a/src/GEOMImpl/GEOMImpl_Template.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// File : GEOMImpl_Template.hxx -// Module : GEOMImpl - -#ifndef _GEOMImpl_Template_HeaderFile -#define _GEOMImpl_Template_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_Template; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_Template); - -class Handle(GEOMImpl_Template) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_Template)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_Template)(const Handle(GEOMImpl_Template)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_Template)(const GEOMImpl_Template* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_Template)& operator=(const Handle(GEOMImpl_Template)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_Template)& operator=(const GEOMImpl_Template* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_Template* operator->() - { - return (GEOMImpl_Template *)ControlAccess(); - } - - GEOMImpl_Template* operator->() const - { - return (GEOMImpl_Template *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_Template)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_Template) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_Template : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_Template(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_Template() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_Template_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_Template) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_Template) == AType || TFunction_Driver::IsKind(AType)); } - - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_TorusDriver.cxx b/src/GEOMImpl/GEOMImpl_TorusDriver.cxx deleted file mode 100644 index 9bcfc0219..000000000 --- a/src/GEOMImpl/GEOMImpl_TorusDriver.cxx +++ /dev/null @@ -1,143 +0,0 @@ - -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_TorusDriver::GetID() -{ - static Standard_GUID aTorusDriver("FF1BBB12-5D14-4df2-980B-3A668264EA16"); - return aTorusDriver; -} - - -//======================================================================= -//function : GEOMImpl_TorusDriver -//purpose : -//======================================================================= -GEOMImpl_TorusDriver::GEOMImpl_TorusDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_TorusDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - GEOMImpl_ITorus aCI (aFunction); - Standard_Integer aType = aFunction->GetType(); - - TopoDS_Shape aShape; - - if (aType == TORUS_RR) { - aShape = BRepPrimAPI_MakeTorus(aCI.GetRMajor(), aCI.GetRMinor()).Shape(); - - } else if (aType == TORUS_PNT_VEC_RR) { - Handle(GEOM_Function) aRefPoint = aCI.GetCenter(); - Handle(GEOM_Function) aRefVector = aCI.GetVector(); - TopoDS_Shape aShapePnt = aRefPoint->GetValue(); - TopoDS_Shape aShapeVec = aRefVector->GetValue(); - if (aShapePnt.ShapeType() != TopAbs_VERTEX) { - Standard_TypeMismatch::Raise("Torus Center must be a vertex"); - } - if (aShapeVec.ShapeType() != TopAbs_EDGE) { - Standard_TypeMismatch::Raise("Torus Axis must be an edge"); - } - - gp_Pnt aP = BRep_Tool::Pnt(TopoDS::Vertex(aShapePnt)); - TopoDS_Edge anE = TopoDS::Edge(aShapeVec); - TopoDS_Vertex V1, V2; - TopExp::Vertices(anE, V1, V2, Standard_True); - if (V1.IsNull() || V2.IsNull()) { - Standard_ConstructionError::Raise("Bad edge for the Torus Axis given"); - } - - gp_Vec aV (BRep_Tool::Pnt(V1), BRep_Tool::Pnt(V2)); - if (aV.Magnitude() < Precision::Confusion()) { - Standard_ConstructionError::Raise - ("End vertices of edge, defining the Torus Axis, are too close"); - } - - gp_Ax2 anAxes (aP, aV); - BRepPrimAPI_MakeTorus MT (anAxes, aCI.GetRMajor(), aCI.GetRMinor()); - if (!MT.IsDone()) MT.Build(); - if (!MT.IsDone()) StdFail_NotDone::Raise("Torus construction algorithm has failed"); - aShape = MT.Shape(); - } else { - } - - if (aShape.IsNull()) return 0; - aFunction->SetValue(aShape); - - log.SetTouched(Label()); - - return 1; -} - - -//======================================================================= -//function : GEOMImpl_TorusDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_TorusDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_TorusDriver", - sizeof(GEOMImpl_TorusDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= -const Handle(GEOMImpl_TorusDriver) Handle(GEOMImpl_TorusDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_TorusDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_TorusDriver))) { - _anOtherObject = Handle(GEOMImpl_TorusDriver)((Handle(GEOMImpl_TorusDriver)&)AnObject); - } - } - - return _anOtherObject ; -} diff --git a/src/GEOMImpl/GEOMImpl_TorusDriver.hxx b/src/GEOMImpl/GEOMImpl_TorusDriver.hxx deleted file mode 100644 index d31eadb40..000000000 --- a/src/GEOMImpl/GEOMImpl_TorusDriver.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// File : GEOMImpl_TorusDriver.ixx -// Module : GEOMImpl - -#ifndef _GEOMImpl_TorusDriver_HeaderFile -#define _GEOMImpl_TorusDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_TorusDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_TorusDriver); - -class Handle(GEOMImpl_TorusDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_TorusDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_TorusDriver)(const Handle(GEOMImpl_TorusDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_TorusDriver)(const GEOMImpl_TorusDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_TorusDriver)& operator=(const Handle(GEOMImpl_TorusDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_TorusDriver)& operator=(const GEOMImpl_TorusDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_TorusDriver* operator->() - { - return (GEOMImpl_TorusDriver *)ControlAccess(); - } - - GEOMImpl_TorusDriver* operator->() const - { - return (GEOMImpl_TorusDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_TorusDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_TorusDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_TorusDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_TorusDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_TorusDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_TorusDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_TorusDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_TorusDriver) == AType || TFunction_Driver::IsKind(AType)); } - - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_TranslateDriver.cxx b/src/GEOMImpl/GEOMImpl_TranslateDriver.cxx deleted file mode 100644 index 7fc447bb3..000000000 --- a/src/GEOMImpl/GEOMImpl_TranslateDriver.cxx +++ /dev/null @@ -1,224 +0,0 @@ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_TranslateDriver::GetID() -{ - static Standard_GUID aTranslateDriver("FF1BBB03-5D14-4df2-980B-3A668264EA16"); - return aTranslateDriver; -} - - -//======================================================================= -//function : GEOMImpl_TranslateDriver -//purpose : -//======================================================================= - -GEOMImpl_TranslateDriver::GEOMImpl_TranslateDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_TranslateDriver::Execute(TFunction_Logbook& log) const -{ - if(Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - if(aFunction.IsNull()) return 0; - - GEOMImpl_ITranslate TI(aFunction); - gp_Trsf aTrsf; - gp_Pnt aP1, aP2; - Standard_Integer aType = aFunction->GetType(); - - Handle(GEOM_Function) anOriginalFunction = TI.GetOriginal(); - if(anOriginalFunction.IsNull()) return 0; - TopoDS_Shape aShape, anOriginal = anOriginalFunction->GetValue(); - if(anOriginal.IsNull()) return 0; - - if(aType == TRANSLATE_TWO_POINTS || aType == TRANSLATE_TWO_POINTS_COPY) { - Handle(GEOM_Function) aPoint1 = TI.GetPoint1(); - Handle(GEOM_Function) aPoint2 = TI.GetPoint2(); - if(aPoint1.IsNull() || aPoint2.IsNull()) return 0; - TopoDS_Shape aV1 = aPoint1->GetValue(); - TopoDS_Shape aV2 = aPoint2->GetValue(); - if(aV1.IsNull() || aV1.ShapeType() != TopAbs_VERTEX) return 0; - if(aV2.IsNull() || aV2.ShapeType() != TopAbs_VERTEX) return 0; - - aP1 = BRep_Tool::Pnt(TopoDS::Vertex(aV1)); - aP2 = BRep_Tool::Pnt(TopoDS::Vertex(aV2)); - - aTrsf.SetTranslation(aP1, aP2); - BRepBuilderAPI_Transform aTransformation(anOriginal, aTrsf, Standard_False); - aShape = aTransformation.Shape(); - - } else if(aType == TRANSLATE_VECTOR || aType == TRANSLATE_VECTOR_COPY) { - Handle(GEOM_Function) aVector = TI.GetVector(); - if(aVector.IsNull()) return 0; - TopoDS_Shape aV = aVector->GetValue(); - if(aV.IsNull() || aV.ShapeType() != TopAbs_EDGE) return 0; - TopoDS_Edge anEdge = TopoDS::Edge(aV); - - aP1 = BRep_Tool::Pnt(TopExp::FirstVertex(anEdge)); - aP2 = BRep_Tool::Pnt(TopExp::LastVertex(anEdge)); - - aTrsf.SetTranslation(aP1, aP2); - BRepBuilderAPI_Transform aTransformation(anOriginal, aTrsf, Standard_False); - aShape = aTransformation.Shape(); - } - else if(aType == TRANSLATE_XYZ || aType == TRANSLATE_XYZ_COPY) { - gp_Vec aVec(TI.GetDX(), TI.GetDY(), TI.GetDZ()); - aTrsf.SetTranslation(aVec); - BRepBuilderAPI_Transform aTransformation(anOriginal, aTrsf, Standard_False); - aShape = aTransformation.Shape(); - } - else if(aType == TRANSLATE_1D) { - Standard_Real DX, DY, DZ, step = TI.GetStep1(); - Standard_Integer nbtimes = TI.GetNbIter1(); - gp_Vec myVec ; - TopoDS_Compound aCompound; - BRep_Builder B; - B.MakeCompound( aCompound ); - - Handle(GEOM_Function) aVector = TI.GetVector(); - if(aVector.IsNull()) return 0; - TopoDS_Shape aV = aVector->GetValue(); - if(aV.IsNull() || aV.ShapeType() != TopAbs_EDGE) return 0; - TopoDS_Edge anEdge = TopoDS::Edge(aV); - - gp_Vec Vec(BRep_Tool::Pnt(TopExp::FirstVertex(anEdge)), BRep_Tool::Pnt(TopExp::LastVertex(anEdge))); - Vec.Normalize(); - - for (int i = 0; i < nbtimes; i++ ) { - DX = i * step * Vec.X() ; - DY = i * step * Vec.Y() ; - DZ = i * step * Vec.Z() ; - myVec.SetCoord( DX, DY, DZ ) ; - aTrsf.SetTranslation(myVec) ; - BRepBuilderAPI_Transform aTransformation(anOriginal, aTrsf, Standard_False) ; - B.Add(aCompound , aTransformation.Shape() ); - } - aShape = aCompound; - } - else if(aType == TRANSLATE_2D) { - Standard_Integer nbtimes1 = TI.GetNbIter1(), nbtimes2 = TI.GetNbIter2(); - Standard_Real DX, DY, DZ, step1 = TI.GetStep1(), step2 = TI.GetStep2(); - gp_Vec myVec ; - Handle(GEOM_Function) aVector = TI.GetVector(); - if(aVector.IsNull()) return 0; - TopoDS_Shape aV = aVector->GetValue(); - if(aV.IsNull() || aV.ShapeType() != TopAbs_EDGE) return 0; - TopoDS_Edge anEdge = TopoDS::Edge(aV); - - gp_Vec Vec1(BRep_Tool::Pnt(TopExp::FirstVertex(anEdge)), BRep_Tool::Pnt(TopExp::LastVertex(anEdge))); - Vec1.Normalize(); - - Handle(GEOM_Function) aVector2 = TI.GetVector2(); - if(aVector2.IsNull()) return 0; - aV = aVector2->GetValue(); - if(aV.IsNull() || aV.ShapeType() != TopAbs_EDGE) return 0; - anEdge = TopoDS::Edge(aV); - - gp_Vec Vec2(BRep_Tool::Pnt(TopExp::FirstVertex(anEdge)), BRep_Tool::Pnt(TopExp::LastVertex(anEdge))); - Vec2.Normalize(); - - TopoDS_Compound aCompound; - BRep_Builder B; - B.MakeCompound( aCompound ); - - for (int i = 0; i < nbtimes1; i++ ) { - for (int j = 0; j < nbtimes2; j++ ) { - DX = i * step1 * Vec1.X() + j * step2 * Vec2.X() ; - DY = i * step1 * Vec1.Y() + j * step2 * Vec2.Y() ; - DZ = i * step1 * Vec1.Z() + j * step2 * Vec2.Z() ; - myVec.SetCoord( DX, DY, DZ ) ; - aTrsf.SetTranslation(myVec) ; - BRepBuilderAPI_Transform myBRepTransformation(anOriginal, aTrsf, Standard_False) ; - B.Add(aCompound , myBRepTransformation.Shape() ); - } - } - aShape = aCompound; - } - else return 0; - - - - if (aShape.IsNull()) return 0; - - aFunction->SetValue(aShape); - - log.SetTouched(Label()); - - return 1; -} - - -//======================================================================= -//function : GEOMImpl_TranslateDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_TranslateDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_TranslateDriver", - sizeof(GEOMImpl_TranslateDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= - -const Handle(GEOMImpl_TranslateDriver) Handle(GEOMImpl_TranslateDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_TranslateDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_TranslateDriver))) { - _anOtherObject = Handle(GEOMImpl_TranslateDriver)((Handle(GEOMImpl_TranslateDriver)&)AnObject); - } - } - - return _anOtherObject ; -} - - diff --git a/src/GEOMImpl/GEOMImpl_TranslateDriver.hxx b/src/GEOMImpl/GEOMImpl_TranslateDriver.hxx deleted file mode 100644 index baceff741..000000000 --- a/src/GEOMImpl/GEOMImpl_TranslateDriver.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// File : GEOMImpl_TranslateDriver.hxx -// Module : GEOMImpl - -#ifndef _GEOMImpl_TranslateDriver_HeaderFile -#define _GEOMImpl_TranslateDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_TranslateDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_TranslateDriver); - -class Handle(GEOMImpl_TranslateDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_TranslateDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_TranslateDriver)(const Handle(GEOMImpl_TranslateDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_TranslateDriver)(const GEOMImpl_TranslateDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_TranslateDriver)& operator=(const Handle(GEOMImpl_TranslateDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_TranslateDriver)& operator=(const GEOMImpl_TranslateDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_TranslateDriver* operator->() - { - return (GEOMImpl_TranslateDriver *)ControlAccess(); - } - - GEOMImpl_TranslateDriver* operator->() const - { - return (GEOMImpl_TranslateDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_TranslateDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_TranslateDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_TranslateDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_TranslateDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_TranslateDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_TranslateDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_TranslateDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_TranslateDriver) == AType || TFunction_Driver::IsKind(AType)); } - - -}; - -#endif diff --git a/src/GEOMImpl/GEOMImpl_Types.hxx b/src/GEOMImpl/GEOMImpl_Types.hxx deleted file mode 100755 index d3ede4bd5..000000000 --- a/src/GEOMImpl/GEOMImpl_Types.hxx +++ /dev/null @@ -1,211 +0,0 @@ -//GEOM_Object types - -#define GEOM_COPY 0 -#define GEOM_IMPORT 1 - -#define GEOM_POINT 2 -#define GEOM_VECTOR 3 -#define GEOM_PLANE 4 -#define GEOM_LINE 5 - -#define GEOM_TORUS 6 -#define GEOM_BOX 7 -#define GEOM_CYLINDER 8 -#define GEOM_CONE 9 -#define GEOM_SPHERE 10 - -#define GEOM_PRISM 11 -#define GEOM_REVOLUTION 12 - -#define GEOM_BOOLEAN 13 -#define GEOM_PARTITION 14 - -#define GEOM_POLYLINE 15 -#define GEOM_CIRCLE 16 -#define GEOM_SPLINE 17 -#define GEOM_ELLIPSE 18 -#define GEOM_CIRC_ARC 19 - -#define GEOM_FILLET 20 -#define GEOM_CHAMFER 21 - -#define GEOM_EDGE 22 -#define GEOM_WIRE 23 -#define GEOM_FACE 24 -#define GEOM_SHELL 25 -#define GEOM_SOLID 26 -#define GEOM_COMPOUND 27 - -#define GEOM_SUBSHAPE 28 - -#define GEOM_PIPE 29 - -#define GEOM_ARCHIMEDE 30 - -#define GEOM_FILLING 31 - -#define GEOM_EXPLODE 32 - -#define GEOM_GLUED 33 - -#define GEOM_SKETCHER 34 - -#define GEOM_CDG 35 - -#define GEOM_FREE_BOUNDS 36 - -#define GEOM_GROUP 37 - -#define GEOM_BLOCK 38 - -#define GEOM_MARKER 39 - -//GEOM_Function types - -#define COPY_WITH_REF 1 -#define COPY_WITHOUT_REF 2 - -#define EXPORT_SHAPE 1 -#define IMPORT_SHAPE 1 - -#define POINT_XYZ 1 -#define POINT_XYZ_REF 2 -#define POINT_CURVE_PAR 3 - -#define VECTOR_TWO_PNT 1 -#define VECTOR_DX_DY_DZ 2 - -#define PLANE_PNT_VEC 1 -#define PLANE_FACE 2 -#define PLANE_THREE_PNT 3 - -#define LINE_TWO_PNT 1 -#define LINE_PNT_DIR 2 - -#define TRANSLATE_TWO_POINTS 1 -#define TRANSLATE_VECTOR 2 -#define TRANSLATE_TWO_POINTS_COPY 3 -#define TRANSLATE_VECTOR_COPY 4 -#define TRANSLATE_1D 5 -#define TRANSLATE_2D 6 -#define TRANSLATE_XYZ 7 -#define TRANSLATE_XYZ_COPY 8 - -#define ROTATE 1 -#define ROTATE_COPY 2 -#define ROTATE_1D 3 -#define ROTATE_2D 4 - -#define MIRROR_PLANE 1 -#define MIRROR_PLANE_COPY 2 -#define MIRROR_AXIS 3 -#define MIRROR_AXIS_COPY 4 -#define MIRROR_POINT 5 -#define MIRROR_POINT_COPY 6 - -#define OFFSET_SHAPE 1 -#define OFFSET_SHAPE_COPY 2 - -#define SCALE_SHAPE 1 -#define SCALE_SHAPE_COPY 2 - -#define POSITION_SHAPE 1 -#define POSITION_SHAPE_COPY 2 - -#define TORUS_RR 1 -#define TORUS_PNT_VEC_RR 2 - -#define BOX_DX_DY_DZ 1 -#define BOX_TWO_PNT 2 - -#define CYLINDER_R_H 1 -#define CYLINDER_PNT_VEC_R_H 2 - -#define CONE_R1_R2_H 1 -#define CONE_PNT_VEC_R1_R2_H 2 - -#define SPHERE_R 1 -#define SPHERE_PNT_R 2 - -#define PRISM_BASE_VEC_H 1 -#define PRISM_BASE_TWO_PNT 2 - -#define REVOLUTION_BASE_AXIS_ANGLE 1 - -#define PIPE_BASE_PATH 1 - -#define BOOLEAN_COMMON 1 -#define BOOLEAN_CUT 2 -#define BOOLEAN_FUSE 3 -#define BOOLEAN_SECTION 4 - -#define PARTITION_PARTITION 1 -#define PARTITION_HALF 2 - -#define POLYLINE_POINTS 1 - -#define CIRCLE_THREE_PNT 1 -#define CIRCLE_PNT_VEC_R 2 - -#define SPLINE_BEZIER 1 -#define SPLINE_INTERPOLATION 2 - -#define ELLIPSE_PNT_VEC_RR 1 - -#define CIRC_ARC_THREE_PNT 1 - -#define FILLET_SHAPE_ALL 1 -#define FILLET_SHAPE_EDGES 2 -#define FILLET_SHAPE_FACES 3 - -#define CHAMFER_SHAPE_ALL 1 -#define CHAMFER_SHAPE_EDGE 2 -#define CHAMFER_SHAPE_FACES 3 - -#define WIRE_EDGES 1 -#define FACE_WIRE 2 -#define SHELL_FACES 3 -#define SOLID_SHELL 4 -#define SOLID_SHELLS 5 -#define COMPOUND_SHAPES 6 -#define SUBSHAPE_SORTED 7 -#define SUBSHAPE_NOT_SORTED 8 -#define FACE_WIRES 9 -#define REVERSE_ORIENTATION 10 - -#define ARCHIMEDE_TYPE 1 - -// Shape Healing operators -#define SHAPE_PROCESS 1 -#define SUPPRESS_FACES 2 -#define CLOSE_CONTOUR 3 -#define REMOVE_INT_WIRES 4 -#define FILL_HOLES 5 -#define SEWING 6 -#define DIVIDE_EDGE 7 - -#define BASIC_FILLING 1 - -#define GLUE_FACES 1 - -#define SKETCHER_NINE_DOUBLS 1 -#define SKETCHER_PLANE 2 - -#define CDG_MEASURE 1 - -#define GROUP_FUNCTION 1 - -// Blocks -#define BLOCK_FACE_FOUR_PNT 1 -#define BLOCK_FACE_FOUR_EDGES 2 -#define BLOCK_FACE_TWO_EDGES 3 -#define BLOCK_SIX_FACES 4 -#define BLOCK_TWO_FACES 5 -#define BLOCK_MULTI_TRANSFORM_1D 6 -#define BLOCK_MULTI_TRANSFORM_2D 7 -#define BLOCK_COMPOUND_GLUE 8 -#define BLOCK_REMOVE_EXTRA 9 -#define BLOCK_COMPOUND_IMPROVE 10 - -// Marker -#define MARKER_CS 1 diff --git a/src/GEOMImpl/GEOMImpl_VectorDriver.cxx b/src/GEOMImpl/GEOMImpl_VectorDriver.cxx deleted file mode 100644 index 1c9602cc9..000000000 --- a/src/GEOMImpl/GEOMImpl_VectorDriver.cxx +++ /dev/null @@ -1,136 +0,0 @@ -#include - -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include - -//======================================================================= -//function : GetID -//purpose : -//======================================================================= -const Standard_GUID& GEOMImpl_VectorDriver::GetID() -{ - static Standard_GUID aVectorDriver("FF1BBB04-5D14-4df2-980B-3A668264EA16"); - return aVectorDriver; -} - - -//======================================================================= -//function : GEOMImpl_VectorDriver -//purpose : -//======================================================================= -GEOMImpl_VectorDriver::GEOMImpl_VectorDriver() -{ -} - -//======================================================================= -//function : Execute -//purpose : -//======================================================================= -Standard_Integer GEOMImpl_VectorDriver::Execute(TFunction_Logbook& log) const -{ - if (Label().IsNull()) return 0; - Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); - - GEOMImpl_IVector aPI (aFunction); - Standard_Integer aType = aFunction->GetType(); - if (aType != VECTOR_DX_DY_DZ && aType != VECTOR_TWO_PNT) return 0; - - TopoDS_Shape aShape; - - if (aType == VECTOR_DX_DY_DZ) { - gp_Pnt P1 = gp::Origin(); - gp_Pnt P2 (aPI.GetDX(), aPI.GetDY(), aPI.GetDZ()); - if (P1.Distance(P2) < Precision::Confusion()) { - TCollection_AsciiString aMsg ("Can not build vector with length, less than "); - aMsg += TCollection_AsciiString(Precision::Confusion()); - Standard_ConstructionError::Raise(aMsg.ToCString()); - } - aShape = BRepBuilderAPI_MakeEdge(P1, P2).Shape(); - } else if (aType == VECTOR_TWO_PNT) { - Handle(GEOM_Function) aRefPnt1 = aPI.GetPoint1(); - Handle(GEOM_Function) aRefPnt2 = aPI.GetPoint2(); - TopoDS_Shape aShape1 = aRefPnt1->GetValue(); - TopoDS_Shape aShape2 = aRefPnt2->GetValue(); - if (aShape1.ShapeType() != TopAbs_VERTEX || - aShape2.ShapeType() != TopAbs_VERTEX) return 0; - if (aShape1.IsSame(aShape2)) { - Standard_ConstructionError::Raise("The end points must be different"); - } - TopoDS_Vertex V1 = TopoDS::Vertex(aShape1); - TopoDS_Vertex V2 = TopoDS::Vertex(aShape2); - gp_Pnt P1 = BRep_Tool::Pnt(V1); - gp_Pnt P2 = BRep_Tool::Pnt(V2); - if (P1.Distance(P2) < Precision::Confusion()) { - Standard_ConstructionError::Raise("The end points are too close"); - } - aShape = BRepBuilderAPI_MakeEdge(V1, V2).Shape(); - } else { - } - - if (aShape.IsNull()) return 0; - - aFunction->SetValue(aShape); - - log.SetTouched(Label()); - - return 1; -} - - -//======================================================================= -//function : GEOMImpl_VectorDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_VectorDriver_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_VectorDriver", - sizeof(GEOMImpl_VectorDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= -const Handle(GEOMImpl_VectorDriver) Handle(GEOMImpl_VectorDriver)::DownCast - (const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_VectorDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_VectorDriver))) { - _anOtherObject = Handle(GEOMImpl_VectorDriver)((Handle(GEOMImpl_VectorDriver)&)AnObject); - } - } - - return _anOtherObject ; -} diff --git a/src/GEOMImpl/GEOMImpl_VectorDriver.hxx b/src/GEOMImpl/GEOMImpl_VectorDriver.hxx deleted file mode 100644 index 7802c123c..000000000 --- a/src/GEOMImpl/GEOMImpl_VectorDriver.hxx +++ /dev/null @@ -1,138 +0,0 @@ -// File : GEOMImpl_VectorDriver.hxx -// Module : GEOMImpl - -#ifndef _GEOMImpl_VectorDriver_HeaderFile -#define _GEOMImpl_VectorDriver_HeaderFile - -#ifndef _TColStd_SequenceOfExtendedString_HeaderFile -#include -#endif -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile -#include -#endif - -#ifndef _Handle_TFunction_Driver_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TFunction_Driver); -class GEOMImpl_VectorDriver; - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_VectorDriver); - -class Handle(GEOMImpl_VectorDriver) : public Handle(TFunction_Driver) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOMImpl_VectorDriver)():Handle(TFunction_Driver)() {} - Handle(GEOMImpl_VectorDriver)(const Handle(GEOMImpl_VectorDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) - { - } - - Handle(GEOMImpl_VectorDriver)(const GEOMImpl_VectorDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) - { - } - - Handle(GEOMImpl_VectorDriver)& operator=(const Handle(GEOMImpl_VectorDriver)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOMImpl_VectorDriver)& operator=(const GEOMImpl_VectorDriver* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOMImpl_VectorDriver* operator->() - { - return (GEOMImpl_VectorDriver *)ControlAccess(); - } - - GEOMImpl_VectorDriver* operator->() const - { - return (GEOMImpl_VectorDriver *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOMImpl_VectorDriver)() {}; - - Standard_EXPORT static const Handle(GEOMImpl_VectorDriver) DownCast(const Handle(Standard_Transient)& AnObject); -}; - -#ifndef _TFunction_Driver_HeaderFile -#include -#endif -#ifndef _TFunction_Logbook_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif - -class TColStd_SequenceOfExtendedString; - - -class GEOMImpl_VectorDriver : public TFunction_Driver { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Methods PUBLIC - // -Standard_EXPORT GEOMImpl_VectorDriver(); -Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const; -Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {} -Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; } -Standard_EXPORT static const Standard_GUID& GetID(); -Standard_EXPORT ~GEOMImpl_VectorDriver() {}; - - - // Type management - // -Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_VectorDriver_Type_(); -Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_VectorDriver) ; } -Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_VectorDriver) == AType || TFunction_Driver::IsKind(AType)); } - -}; - -#endif diff --git a/src/GEOMImpl/GUID.txt b/src/GEOMImpl/GUID.txt deleted file mode 100755 index 285d047d6..000000000 --- a/src/GEOMImpl/GUID.txt +++ /dev/null @@ -1,69 +0,0 @@ -FF1BBB02-5D14-4df2-980B-3A668264EA16 // Point - -FF1BBB03-5D14-4df2-980B-3A668264EA16 // Translation - -FF1BBB04-5D14-4df2-980B-3A668264EA16 // Vector -FF1BBB05-5D14-4df2-980B-3A668264EA16 // Plane -FF1BBB06-5D14-4df2-980B-3A668264EA16 // Line -FF1BBB07-5D14-4df2-980B-3A668264EA16 // Marker - -FF1BBB00-5D14-4df2-980B-3A668264EA16 // GUID for Functions tree -FF1BBB10-5D14-4df2-980B-3A668264EA16 // GUID for References tree - -FF1BBB12-5D14-4df2-980B-3A668264EA16 // Torus -FF1BBB13-5D14-4df2-980B-3A668264EA16 // Box -FF1BBB14-5D14-4df2-980B-3A668264EA16 // Cylinder -FF1BBB15-5D14-4df2-980B-3A668264EA16 // Cone -FF1BBB16-5D14-4df2-980B-3A668264EA16 // Sphere -FF1BBB17-5D14-4df2-980B-3A668264EA16 // Prism (Extrusion) -FF1BBB18-5D14-4df2-980B-3A668264EA16 // Revolution -FF1BBB19-5D14-4df2-980B-3A668264EA16 // Pipe - -FF1BBB21-5D14-4df2-980B-3A668264EA16 // Boolean -FF1BBB22-5D14-4df2-980B-3A668264EA16 // Partition - -FF1BBB31-5D14-4df2-980B-3A668264EA16 // Polyline -FF1BBB32-5D14-4df2-980B-3A668264EA16 // Circle -FF1BBB33-5D14-4df2-980B-3A668264EA16 // Spline -FF1BBB34-5D14-4df2-980B-3A668264EA16 // Ellipse -FF1BBB35-5D14-4df2-980B-3A668264EA16 // Arc of circle - -FF1BBB41-5D14-4df2-980B-3A668264EA16 // Fillet -FF1BBB42-5D14-4df2-980B-3A668264EA16 // Chamfer - -FF1BBB51-5D14-4df2-980B-3A668264EA16 // Offset -FF1BBB52-5D14-4df2-980B-3A668264EA16 // Scale - -FF1BBB53-5D14-4df2-980B-3A668264EA16 // Copy - -FF1BBB54-5D14-4df2-980B-3A668264EA16 // Shape (Wire, Face, Shell, Solid, Compound) - -FF1BBB55-5D14-4df2-980B-3A668264EA16 // Subshape - -FF1BBB56-5D14-4df2-980B-3A668264EA16 // Rotate - -FF1BBB57-5D14-4df2-980B-3A668264EA16 // Mirror - -FF1BBB58-5D14-4df2-980B-3A668264EA16 // Export - -FF1BBB59-5D14-4df2-980B-3A668264EA16 // Archimede - -FF1BBB60-5D14-4df2-980B-3A668264EA16 // Import - -FF1BBB61-5D14-4df2-980B-3A668264EA16 // Shape Healing - -FF1BBB62-5D14-4df2-980B-3A668264EA16 // Filling - -FF1BBB63-5D14-4df2-980B-3A668264EA16 // Glue Faces - -FF1BBB64-5D14-4df2-980B-3A668264EA16 // Sketcher - -FF1BBB65-5D14-4df2-980B-3A668264EA16 // Measurements - -FF1BBB66-5D14-4df2-980B-3A668264EA16 // Group - -FF1BBB67-5D14-4df2-980B-3A668264EA16 // Blocks - -FF1BBB68-5D14-4df2-980B-3A668264EA16 // Sub shape GUID - -FF1BBB69-5D14-4df2-980B-3A668264EA16 // Modify the Location diff --git a/src/GEOMImpl/Makefile.in b/src/GEOMImpl/Makefile.in deleted file mode 100644 index d715111aa..000000000 --- a/src/GEOMImpl/Makefile.in +++ /dev/null @@ -1,105 +0,0 @@ - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -# Libraries targets - -LIB = libGEOMimpl.la -LIB_SRC = GEOMImpl_IBasicOperations.cxx \ - GEOMImpl_ITransformOperations.cxx \ - GEOMImpl_IHealingOperations.cxx \ - GEOMImpl_I3DPrimOperations.cxx \ - GEOMImpl_IShapesOperations.cxx \ - GEOMImpl_IBlocksOperations.cxx \ - GEOMImpl_IBooleanOperations.cxx \ - GEOMImpl_ICurvesOperations.cxx \ - GEOMImpl_ILocalOperations.cxx \ - GEOMImpl_IInsertOperations.cxx \ - GEOMImpl_IMeasureOperations.cxx \ - GEOMImpl_IGroupOperations.cxx \ - GEOMImpl_Gen.cxx \ - GEOMImpl_PointDriver.cxx \ - GEOMImpl_VectorDriver.cxx \ - GEOMImpl_LineDriver.cxx \ - GEOMImpl_PlaneDriver.cxx \ - GEOMImpl_MarkerDriver.cxx \ - GEOMImpl_TranslateDriver.cxx \ - GEOMImpl_MirrorDriver.cxx \ - GEOMImpl_OffsetDriver.cxx \ - GEOMImpl_ScaleDriver.cxx \ - GEOMImpl_PositionDriver.cxx \ - GEOMImpl_BoxDriver.cxx \ - GEOMImpl_ConeDriver.cxx \ - GEOMImpl_CylinderDriver.cxx \ - GEOMImpl_SphereDriver.cxx \ - GEOMImpl_TorusDriver.cxx \ - GEOMImpl_PrismDriver.cxx \ - GEOMImpl_PipeDriver.cxx \ - GEOMImpl_RevolutionDriver.cxx \ - GEOMImpl_ShapeDriver.cxx \ - GEOMImpl_BlockDriver.cxx \ - GEOMImpl_Block6Explorer.cxx \ - GEOMImpl_MeasureDriver.cxx \ - GEOMImpl_PolylineDriver.cxx \ - GEOMImpl_CircleDriver.cxx \ - GEOMImpl_EllipseDriver.cxx \ - GEOMImpl_ArcDriver.cxx \ - GEOMImpl_SplineDriver.cxx \ - GEOMImpl_SketcherDriver.cxx \ - GEOMImpl_FilletDriver.cxx \ - GEOMImpl_ChamferDriver.cxx \ - GEOMImpl_BooleanDriver.cxx \ - GEOMImpl_PartitionDriver.cxx \ - GEOMImpl_CopyDriver.cxx \ - GEOMImpl_ExportDriver.cxx \ - GEOMImpl_ImportDriver.cxx \ - GEOMImpl_RotateDriver.cxx \ - GEOMImpl_ArchimedeDriver.cxx \ - GEOMImpl_HealingDriver.cxx \ - GEOMImpl_FillingDriver.cxx \ - GEOMImpl_GlueDriver.cxx - -LIB_CLIENT_IDL = -LIB_SERVER_IDL = - -# Executables targets -BIN = -BIN_SRC = -BIN_CLIENT_IDL = -BIN_SERVER_IDL = - -# header files -EXPORT_HEADERS= GEOMImpl_Gen.hxx \ - GEOMImpl_IBasicOperations.hxx \ - GEOMImpl_ITransformOperations.hxx \ - GEOMImpl_IHealingOperations.hxx \ - GEOMImpl_I3DPrimOperations.hxx \ - GEOMImpl_IShapesOperations.hxx \ - GEOMImpl_IBlocksOperations.hxx \ - GEOMImpl_IBooleanOperations.hxx \ - GEOMImpl_ICurvesOperations.hxx \ - GEOMImpl_ILocalOperations.hxx \ - GEOMImpl_IInsertOperations.hxx \ - GEOMImpl_IMeasureOperations.hxx \ - GEOMImpl_IGroupOperations.hxx \ - GEOMImpl_CopyDriver.hxx \ - GEOMImpl_Types.hxx - -# additionnal information to compil and link file -CPPFLAGS += $(OCC_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome $(BOOST_CPPFLAGS) -CXXFLAGS += $(OCC_CXXFLAGS) -I${KERNEL_ROOT_DIR}/include/salome -LDFLAGS += -L${KERNEL_ROOT_DIR}/lib/salome $(CAS_LDPATH) -lTKCAF -lTKFillet -lTKOffset -lCASCatch -lGEOMbasic -lNMTAlgo -lGEOMAlgo -lShHealOper - - -# additional file to be cleaned -MOSTLYCLEAN = -CLEAN = -DISTCLEAN = - -@CONCLUDE@ - diff --git a/src/GEOMToolsGUI/GEOMToolsGUI.cxx b/src/GEOMToolsGUI/GEOMToolsGUI.cxx deleted file mode 100644 index aced45d1a..000000000 --- a/src/GEOMToolsGUI/GEOMToolsGUI.cxx +++ /dev/null @@ -1,649 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOMBase_Tools.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header$ - -#include "GEOMToolsGUI.h" - -#include "GeometryGUI.h" -#include "GEOM_Actor.h" -#include "GEOMBase.h" -#include "GEOM_Operation.h" -#include "GEOM_Displayer.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - -#include "utilities.h" - -// QT Includes -#include -#include - -// OCCT Includes -#include - -using namespace std; - -typedef QMap FilterMap; - -//======================================================================= -// function : getFileName -// purpose : Selection of a file name for Import/Export. Returns also -// the selected file type code through argument. -//======================================================================= -static QString getFileName( QWidget* parent, - const QString& initial, - const FilterMap& filterMap, - const QString& caption, - bool open, - QString& format ) -{ - static QString lastUsedFilter; - QStringList filters; - for ( FilterMap::const_iterator it = filterMap.begin(); it != filterMap.end(); ++it ) - filters.push_back( it.key() ); - - SUIT_FileDlg* fd = new SUIT_FileDlg( parent, open, true, true ); - if ( !caption.isEmpty() ) - fd->setCaption( caption ); - - if ( !initial.isEmpty() ) - fd->setSelection( initial ); - - if ( !lastUsedFilter.isEmpty() && filterMap.contains( lastUsedFilter ) ) - fd->setSelectedFilter( lastUsedFilter ); - - fd->setFilters( filters ); - - fd->exec(); - QString filename = fd->selectedFile(); - format = filterMap[fd->selectedFilter()]; - lastUsedFilter = fd->selectedFilter(); - delete fd; - qApp->processEvents(); - return filename; -} - -//======================================================================= -// function : GEOMToolsGUI() -// purpose : Constructor -//======================================================================= -GEOMToolsGUI::GEOMToolsGUI( GeometryGUI* parent ) -: GEOMGUI( parent ) -{ -} - - -//======================================================================= -// function : ~GEOMToolsGUI() -// purpose : Destructor -//======================================================================= -GEOMToolsGUI::~GEOMToolsGUI() -{ -} - - -//======================================================================= -// function : OnGUIEvent() -// purpose : -//======================================================================= -bool GEOMToolsGUI::OnGUIEvent(int theCommandID, SUIT_Desktop* parent) -{ - getGeometryGUI()->EmitSignalDeactivateDialog(); - - switch (theCommandID) - { - case 31: // COPY - { - OnEditCopy(); - break; - } - case 33: // DELETE - { - OnEditDelete(); - break; - } - case 111: // IMPORT BREP - case 112: // IMPORT IGES - case 113: // IMPORT STEP - { - Import(); - break; - } - case 121: // EXPORT BREP - case 122: // EXPORT IGES - case 123: // EXPORT STEP - { - Export(); - break; - } - case 411: // SETTINGS - ADD IN STUDY - { - // SAN -- TO BE REMOVED !!! - break; - } - case 412: // SETTINGS - SHADING COLOR - { - OnSettingsColor(); - break; - } - case 413: // SETTINGS - ISOS - { - OnSettingsIsos(); - break; - } - case 414: // SETTINGS : STEP VALUE FOR SPIN BOXES - { - OnSettingsStep(); - break; - } - case 804: // ADD IN STUDY - POPUP VIEWER - { - // SAN -- TO BE REMOVED !!!! - break; - } - case 901: // RENAME - { - OnRename(); - break; - } - case 5103: // CHECK GEOMETRY - { - OnCheckGeometry(); - break; - } - case 8032: // COLOR - POPUP VIEWER - { - OnColor(); - break; - } - case 8033: // TRANSPARENCY - POPUP VIEWER - { - OnTransparency(); - break; - } - case 8034: // ISOS - POPUP VIEWER - { - OnNbIsos(); - break; - } - case 9024 : // OPEN - OBJBROSER POPUP - { - OnOpen(); - break; - } - default: - { - SUIT_Session::session()->activeApplication()->putInfo(tr("GEOM_PRP_COMMAND").arg(theCommandID)); - break; - } - } - return true; -} - - - -//=============================================================================== -// function : OnEditDelete() -// purpose : -//=============================================================================== -void GEOMToolsGUI::OnEditDelete() -{ - SALOME_ListIO selected; - SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() ); - if ( app ) { - SalomeApp_SelectionMgr* aSelMgr = app->selectionMgr(); - SalomeApp_Study* appStudy = dynamic_cast( app->activeStudy() ); - if ( aSelMgr && appStudy ) { - aSelMgr->selectedObjects( selected ); - if ( !selected.IsEmpty() ) { - _PTR(Study) aStudy = appStudy->studyDS(); - - bool aLocked = (_PTR(AttributeStudyProperties)(aStudy->GetProperties()))->IsLocked(); - if ( aLocked ) { - SUIT_MessageBox::warn1 ( app->desktop(), - QObject::tr("WRN_WARNING"), - QObject::tr("WRN_STUDY_LOCKED"), - QObject::tr("BUT_OK") ); - return; - } - - // VSR 17/11/04: check if all objects selected belong to GEOM component --> start - // modifications of ASV 01.06.05 - QString parentComp = getParentComponent( aStudy, selected ); - const char* geomIOR = app->orb()->object_to_string( GeometryGUI::GetGeomGen() ); - QString geomComp = getParentComponent( aStudy->FindObjectIOR( geomIOR ) ); - - if ( parentComp != geomComp ) { - SUIT_MessageBox::warn1 ( app->desktop(), - QObject::tr("ERR_ERROR"), - QObject::tr("NON_GEOM_OBJECTS_SELECTED").arg( getGeometryGUI()->moduleName() ), - QObject::tr("BUT_OK") ); - return; - } - // VSR 17/11/04: check if all objects selected belong to GEOM component <-- finish - - if ( SUIT_MessageBox::warn2( app->desktop(), - QObject::tr( "GEOM_WRN_WARNING" ), - QObject::tr( "GEOM_REALLY_DELETE" ), - QObject::tr( "GEOM_BUT_YES" ), - QObject::tr( "GEOM_BUT_NO" ), 1, 0, 0 ) != 1 ) - return; - - // QAD_Operation* op = new SALOMEGUI_ImportOperation(.....); - // op->start(); - - // prepare list of SALOME_Views - QPtrList views; - SALOME_View* view; - // fill the list - ViewManagerList vmans = app->viewManagers(); - SUIT_ViewManager* vman; - for ( vman = vmans.first(); vman; vman = vmans.next() ) { - SUIT_ViewModel* vmod = vman->getViewModel(); - view = dynamic_cast ( vmod ); // must work for OCC and VTK views - if ( view ) - views.append( view ); - } - - _PTR(StudyBuilder) aStudyBuilder (aStudy->NewBuilder()); - _PTR(GenericAttribute) anAttr; - GEOM_Displayer* disp = new GEOM_Displayer( appStudy ); - - // MAIN LOOP OF SELECTED OBJECTS - for ( SALOME_ListIteratorOfListIO It( selected ); It.More(); It.Next() ) { - - Handle(SALOME_InteractiveObject) io = It.Value(); - if ( !io->hasEntry() ) - continue; - - _PTR(SObject) obj ( aStudy->FindObjectID( io->getEntry() ) ); - - // disable removal of "Geometry" component object - if ( !strcmp( obj->GetIOR().c_str(), geomIOR ) ) - continue; - - // iterate through all children of obj, find IOR attributes on children - // and remove shapes that correspond to these IORs - for (_PTR(ChildIterator) it (aStudy->NewChildIterator(obj)); it->More(); it->Next()) { - _PTR(SObject) child (it->Value()); - if (child->FindAttribute(anAttr, "AttributeIOR")) { - _PTR(AttributeIOR) anIOR (anAttr); - - // Delete child( s ) shape in Client : - const TCollection_AsciiString ASCior ((char*)anIOR->Value().c_str()); - getGeometryGUI()->GetShapeReader().RemoveShapeFromBuffer(ASCior); - - CORBA::Object_var corbaObj = GeometryGUI::ClientSObjectToObject(child); - GEOM::GEOM_Object_var geomObj = GEOM::GEOM_Object::_narrow(corbaObj); - if (!CORBA::is_nil(geomObj)) { - for (view = views.first(); view; view = views.next()) { - disp->Erase(geomObj, true, view); - } - } - } - } // for ( children of obj ) - - // Erase main graphical object - for ( view = views.first(); view; view = views.next() ) - disp->Erase( io, true, view ); - - // Delete main shape in Client : - if ( obj->FindAttribute( anAttr, "AttributeIOR" ) ) { - _PTR(AttributeIOR) anIOR( anAttr ); - const TCollection_AsciiString ASCIor( (char*)anIOR->Value().c_str() ); - getGeometryGUI()->GetShapeReader().RemoveShapeFromBuffer( ASCIor ); - } - - CORBA::Object_var corbaObj = GeometryGUI::ClientSObjectToObject(obj); - GEOM::GEOM_Object_var geomObj = GEOM::GEOM_Object::_narrow( corbaObj ); - if ( !CORBA::is_nil( geomObj ) ) - GeometryGUI::GetGeomGen()->RemoveObject( geomObj ); - - // Remove objects from Study - aStudyBuilder->RemoveObject( obj ); - - //deleted = true; - } // MAIN LOOP of selected - - selected.Clear(); - aSelMgr->setSelectedObjects( selected ); - getGeometryGUI()->updateObjBrowser(); - } // if ( selected not empty ) - } // if ( selMgr && appStudy ) - - app->updateActions(); //SRN: To update a Save button in the toolbar - - } // if ( app ) - - - // if ( deleted ) - // op->finish(); - // else - // op->abort(); -} - - -//============================================================================== -// function : OnEditCopy() -// purpose : -//============================================================================== -void GEOMToolsGUI::OnEditCopy() -{ -/* - SALOME_Selection* Sel = SALOME_Selection::Selection(QAD_Application::getDesktop()->getActiveStudy()->getSelection() ); - GEOM::string_array_var listIOR = new GEOM::string_array; - - const SALOME_ListIO& List = Sel->StoredIObjects(); - - myGeomBase->ConvertListOfIOInListOfIOR(List, listIOR); - - Sel->ClearIObjects(); - - SALOMEDS::Study_var aStudy = QAD_Application::getDesktop()->getActiveStudy()->getStudyDocument(); - int aStudyID = aStudy->StudyId(); - - for (unsigned int ind = 0; ind < listIOR->length();ind++) { - GEOM::GEOM_Object_var aShapeInit = myGeom->GetIORFromString(listIOR[ind]); - try { - GEOM::GEOM_IInsertOperations_var IOp = myGeom->GetIInsertOperations(aStudyID); - GEOM::GEOM_Object_var result = IOp->MakeCopy(aShapeInit); - myGeomBase->Display(result); - } - catch (const SALOME::SALOME_Exception& S_ex) { - QtCatchCorbaException(S_ex); - } - } - - QAD_Application::getDesktop()->putInfo(tr("GEOM_PRP_READY")); -*/ -} - - -//===================================================================================== -// function : Import -// purpose : BRep, Iges, Step -//===================================================================================== -bool GEOMToolsGUI::Import() -{ - SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( getGeometryGUI()->getApp() ); - //SUIT_Application* app = getGeometryGUI()->getApp(); - if (! app) return false; - - SalomeApp_Study* stud = dynamic_cast ( app->activeStudy() ); - if ( !stud ) { - cout << "FAILED to cast active study to SalomeApp_Study" << endl; - return false; - } - _PTR(Study) aStudy = stud->studyDS(); - - bool aLocked = (_PTR(AttributeStudyProperties)(aStudy->GetProperties()))->IsLocked(); - if ( aLocked ) { - SUIT_MessageBox::warn1 ( app->desktop(), - QObject::tr("WRN_WARNING"), - QObject::tr("WRN_STUDY_LOCKED"), - QObject::tr("BUT_OK") ); - return false; - } - - GEOM::GEOM_Gen_var eng = GeometryGUI::GetGeomGen(); - if ( CORBA::is_nil( eng ) ) { - SUIT_MessageBox::error1( app->desktop(), - QObject::tr("WRN_WARNING"), - QObject::tr( "GEOM Engine is not started" ), - QObject::tr("BUT_OK") ); - return false; - } - - GEOM::GEOM_IInsertOperations_var aInsOp = eng->GetIInsertOperations( aStudy->StudyId() ); - if ( aInsOp->_is_nil() ) - return false; - - GEOM::GEOM_Object_var anObj; - - // Obtain a list of available import formats - FilterMap aMap; - GEOM::string_array_var aFormats, aPatterns; - aInsOp->ImportTranslators( aFormats, aPatterns ); - - for ( int i = 0, n = aFormats->length(); i < n; i++ ) - aMap.insert( (char*)aPatterns[i], (char*)aFormats[i] ); - - QString fileType; - - QString file = getFileName(app->desktop(), "", aMap, tr("GEOM_MEN_IMPORT"), true, fileType ); - if( file.isEmpty() || fileType.isEmpty() ) - return false; - - GEOM_Operation* anOp = new GEOM_Operation( app, aInsOp.in() ); - try { - SUIT_OverrideCursor wc; - - app->putInfo( tr("GEOM_PRP_LOADING").arg(SUIT_Tools::file( file, /*withExten=*/true )) ); - - anOp->start(); - - anObj = aInsOp->Import( file.latin1(), fileType.latin1() ); - - if ( !anObj->_is_nil() && aInsOp->IsDone() ) { - anObj->SetName( GEOMBase::GetDefaultName( QObject::tr( "GEOM_IMPORT" ) ).latin1() ); - QString aPublishObjName = GEOMBase::GetDefaultName( SUIT_Tools::file( file, /*withExten=*/true )); - - SALOMEDS::Study_var aDSStudy = GeometryGUI::ClientStudyToStudy(aStudy); - GeometryGUI::GetGeomGen()->PublishInStudy(aDSStudy, - SALOMEDS::SObject::_nil(), - anObj, - aPublishObjName); - - GEOM_Displayer( stud ).Display( anObj.in() ); - - // update data model and object browser - getGeometryGUI()->updateObjBrowser( true ); - - anOp->commit(); - } - else { - anOp->abort(); - wc.suspend(); - SUIT_MessageBox::error1( app->desktop(), - QObject::tr( "GEOM_ERROR" ), - QObject::tr("GEOM_PRP_ABORT") + "\n" + QString( aInsOp->GetErrorCode() ), - QObject::tr("BUT_OK") ); - } - } - catch( const SALOME::SALOME_Exception& S_ex ) { - //QtCatchCorbaException(S_ex); - anOp->abort(); - return false; - } - - app->updateActions(); //SRN: To update a Save button in the toolbar - - return true; -} - - -//===================================================================================== -// function : Export -// purpose : BRep, Iges, Step -//===================================================================================== -bool GEOMToolsGUI::Export() -{ - SalomeApp_Application* app = getGeometryGUI()->getApp(); - if (!app) return false; - - SalomeApp_Study* stud = dynamic_cast ( app->activeStudy() ); - if ( !stud ) { - cout << "FAILED to cast active study to SalomeApp_Study" << endl; - return false; - } - _PTR(Study) aStudy = stud->studyDS(); - - GEOM::GEOM_Gen_var eng = GeometryGUI::GetGeomGen(); - if ( CORBA::is_nil( eng ) ) { - SUIT_MessageBox::error1( app->desktop(), - QObject::tr("WRN_WARNING"), - QObject::tr( "GEOM Engine is not started" ), - QObject::tr("BUT_OK") ); - return false; - } - - GEOM::GEOM_IInsertOperations_var aInsOp = eng->GetIInsertOperations( aStudy->StudyId() ); - if ( aInsOp->_is_nil() ) - return false; - - // Obtain a list of available export formats - FilterMap aMap; - GEOM::string_array_var aFormats, aPatterns; - aInsOp->ExportTranslators( aFormats, aPatterns ); - for ( int i = 0, n = aFormats->length(); i < n; i++ ) - aMap.insert( (char*)aPatterns[i], (char*)aFormats[i] ); - - // Get selected objects - SalomeApp_SelectionMgr* sm = app->selectionMgr(); - if ( !sm ) - return false; - - SALOME_ListIO selectedObjects; - sm->selectedObjects( selectedObjects ); - - SALOME_ListIteratorOfListIO It( selectedObjects ); - for(;It.More();It.Next()) { - Handle(SALOME_InteractiveObject) IObject = It.Value(); - Standard_Boolean found; - GEOM::GEOM_Object_var anObj = GEOMBase::ConvertIOinGEOMObject(IObject, found); - - if ( !found || anObj->_is_nil() ) - continue; - - QString fileType; - QString file = getFileName(app->desktop(), QString( IObject->getName() ), aMap, - tr("GEOM_MEN_EXPORT"), false, fileType); - - // User has pressed "Cancel" --> stop the operation - if ( file.isEmpty() || fileType.isEmpty() ) - return false; - - GEOM_Operation* anOp = new GEOM_Operation( app, aInsOp.in() ); - try { - SUIT_OverrideCursor wc; - - app->putInfo( tr("GEOM_PRP_EXPORT").arg(SUIT_Tools::file( file, /*withExten=*/true )) ); - - anOp->start(); - - - aInsOp->Export( anObj, file, fileType.latin1() ); - - if ( aInsOp->IsDone() ) - anOp->commit(); - else - { - anOp->abort(); - wc.suspend(); - SUIT_MessageBox::error1( app->desktop(), - QObject::tr( "GEOM_ERROR" ), - QObject::tr("GEOM_PRP_ABORT") + "\n" + QString( aInsOp->GetErrorCode() ), - QObject::tr("BUT_OK") ); - return false; - } - } - catch (const SALOME::SALOME_Exception& S_ex) { - //QtCatchCorbaException(S_ex); - anOp->abort(); - return false; - } - } - - return true; -} - - -QString GEOMToolsGUI::getParentComponent( _PTR( Study ) study, const SALOME_ListIO& iobjs ) -{ - QString parentComp; - - for ( SALOME_ListIteratorOfListIO it( iobjs ); it.More(); it.Next() ) { - - Handle(SALOME_InteractiveObject) io = it.Value(); - if ( !io->hasEntry() ) - continue; - - QString compName = getParentComponent( study->FindObjectID( io->getEntry() ) ); - - if ( parentComp.isNull() ) - parentComp = compName; - else if ( parentComp.compare( compName) != 0 ) { // objects belonging to different components are selected - parentComp = QString::null; - break; - } - } - - return parentComp; -} - -QString GEOMToolsGUI::getParentComponent( _PTR( SObject ) obj ) -{ - if ( obj ) { - _PTR(SComponent) comp = obj->GetFatherComponent(); - if ( comp ) { - _PTR(GenericAttribute) anAttr; - if ( comp->FindAttribute( anAttr, "AttributeName") ) { - _PTR(AttributeName) aName( anAttr ); - return QString( aName->Value().c_str() ); - } - } - } - return QString(); -} - -//===================================================================================== -// EXPORTED METHODS -//===================================================================================== -extern "C" -{ -#ifdef WNT - __declspec( dllexport ) -#endif - GEOMGUI* GetLibGUI( GeometryGUI* parent ) - { - return new GEOMToolsGUI( parent ); - } -} diff --git a/src/GEOMToolsGUI/GEOMToolsGUI.h b/src/GEOMToolsGUI/GEOMToolsGUI.h deleted file mode 100644 index 0ac29240b..000000000 --- a/src/GEOMToolsGUI/GEOMToolsGUI.h +++ /dev/null @@ -1,81 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOMToolsGUI.h -// Author : Damien COQUERET -// Module : GEOM -// $Header$ - -#ifndef GEOMTOOLSGUI_H -#define GEOMTOOLSGUI_H - -#include "GEOMGUI.h" - -#include -#include - -#include -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define GEOMTOOLSGUI_WNT_EXPORT __declspec( dllexport ) -#else -#define GEOMTOOLSGUI_WNT_EXPORT -#endif -//================================================================================= -// class : GEOMToolsGUI -// purpose : -//================================================================================= -class GEOMTOOLSGUI_WNT_EXPORT GEOMToolsGUI : public GEOMGUI -{ -public : - GEOMToolsGUI( GeometryGUI* ); // hide constructor to avoid direct creation - ~GEOMToolsGUI(); - - bool OnGUIEvent( int theCommandID, SUIT_Desktop* parent ); - -private: - // Import and export topology methods - bool Import(); - bool Export(); - - void OnEditCopy(); - void OnEditDelete(); - - void OnSettingsColor(); - void OnSettingsIsos(); - void OnSettingsStep(); - void OnRename(); - void OnCheckGeometry(); - - // Popup commands - void OnColor(); - void OnTransparency(); - void OnNbIsos(); - void OnOpen(); - - // returns name of Module (Component) of given objects (usually selected objects) - // if objects belong to different Components, a NULL string is returned. - QString getParentComponent( _PTR( Study ), const SALOME_ListIO& ); - QString getParentComponent( _PTR(SObject) ); -}; - -#endif diff --git a/src/GEOMToolsGUI/GEOMToolsGUI_NameDlg.cxx b/src/GEOMToolsGUI/GEOMToolsGUI_NameDlg.cxx deleted file mode 100644 index b4876de4c..000000000 --- a/src/GEOMToolsGUI/GEOMToolsGUI_NameDlg.cxx +++ /dev/null @@ -1,135 +0,0 @@ -// SALOME GEOMToolsGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : GEOMToolsGUI_NameDlg.cxx -// Author : Vadim SANDLER -// Module : SALOME -// $Header$ - - -#include "GEOMToolsGUI_NameDlg.h" -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -//using namespace std; -/*! - Constructor -*/ -GEOMToolsGUI_NameDlg::GEOMToolsGUI_NameDlg( QWidget* parent ) - : QDialog( parent ? parent : SUIT_Session::session()->activeApplication()->desktop(), - "GEOMToolsGUI_NameDlg", - true, - WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ) -{ - setCaption( tr("TLT_RENAME") ); - setSizeGripEnabled( TRUE ); - - QVBoxLayout* topLayout = new QVBoxLayout( this ); - topLayout->setMargin( 11 ); topLayout->setSpacing( 6 ); - - /***************************************************************/ - QGroupBox* GroupC1 = new QGroupBox( this, "GroupC1" ); - GroupC1->setColumnLayout(0, Qt::Vertical ); - GroupC1->layout()->setMargin( 0 ); GroupC1->layout()->setSpacing( 0 ); - QHBoxLayout* GroupC1Layout = new QHBoxLayout( GroupC1->layout() ); - GroupC1Layout->setAlignment( Qt::AlignTop ); - GroupC1Layout->setMargin( 11 ); GroupC1Layout->setSpacing( 6 ); - - QLabel* TextLabel = new QLabel( GroupC1, "TextLabel1" ); - TextLabel->setText( tr( "NAME_LBL" ) ); - GroupC1Layout->addWidget( TextLabel ); - - myLineEdit = new QLineEdit( GroupC1, "LineEdit1" ); - myLineEdit->setMinimumSize( 250, 0 ); - GroupC1Layout->addWidget( myLineEdit ); - - /***************************************************************/ - QGroupBox* GroupButtons = new QGroupBox( this, "GroupButtons" ); - GroupButtons->setColumnLayout(0, Qt::Vertical ); - GroupButtons->layout()->setMargin( 0 ); GroupButtons->layout()->setSpacing( 0 ); - QHBoxLayout* GroupButtonsLayout = new QHBoxLayout( GroupButtons->layout() ); - GroupButtonsLayout->setAlignment( Qt::AlignTop ); - GroupButtonsLayout->setMargin( 11 ); GroupButtonsLayout->setSpacing( 6 ); - - myButtonOk = new QPushButton( GroupButtons, "buttonOk" ); - myButtonOk->setText( tr( "GEOM_BUT_OK" ) ); - myButtonOk->setAutoDefault( TRUE ); - myButtonOk->setDefault( TRUE ); - GroupButtonsLayout->addWidget( myButtonOk ); - - GroupButtonsLayout->addStretch(); - - myButtonCancel = new QPushButton( GroupButtons, "buttonCancel" ); - myButtonCancel->setText( tr( "GEOM_BUT_CANCEL" ) ); - myButtonCancel->setAutoDefault( TRUE ); - GroupButtonsLayout->addWidget( myButtonCancel ); - /***************************************************************/ - - topLayout->addWidget( GroupC1 ); - topLayout->addWidget( GroupButtons ); - - // signals and slots connections - connect( myButtonOk, SIGNAL( clicked() ), this, SLOT( accept() ) ); - connect( myButtonCancel, SIGNAL( clicked() ), this, SLOT( reject() ) ); - - /* Move widget on the botton right corner of main widget */ - SUIT_Tools::centerWidget( this, parent ); -} - -/*! - Destructor -*/ -GEOMToolsGUI_NameDlg::~GEOMToolsGUI_NameDlg() -{ -} - -/*! - Sets name -*/ -void GEOMToolsGUI_NameDlg::setName( const QString& name ) -{ - myLineEdit->setText( name ); - myLineEdit->end(false); - myLineEdit->home(true); -} - -/*! - Returns name entered by user -*/ -QString GEOMToolsGUI_NameDlg::name() -{ - return myLineEdit->text(); -} - -void GEOMToolsGUI_NameDlg::accept() -{ - if ( name().stripWhiteSpace().isEmpty() ) - return; - QDialog::accept(); -} - -/*! - Creates modal dialog and returns name entered [ static ] -*/ -QString GEOMToolsGUI_NameDlg::getName( QWidget* parent, const QString& oldName ) -{ - QString n; - GEOMToolsGUI_NameDlg* dlg = new GEOMToolsGUI_NameDlg( parent ); - if ( !oldName.isNull() ) - dlg->setName( oldName ); - if ( dlg->exec() == QDialog::Accepted ) - n = dlg->name(); - delete dlg; - return n; -} diff --git a/src/GEOMToolsGUI/GEOMToolsGUI_NameDlg.h b/src/GEOMToolsGUI/GEOMToolsGUI_NameDlg.h deleted file mode 100644 index e9071d6f4..000000000 --- a/src/GEOMToolsGUI/GEOMToolsGUI_NameDlg.h +++ /dev/null @@ -1,46 +0,0 @@ -// SALOME GEOMToolsGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : GEOMToolsGUI_NameDlg.h -// Author : Vadim SANDLER -// Module : SALOME -// $Header$ - -#ifndef GEOMToolsGUI_NAMEDLG_H -#define GEOMToolsGUI_NAMEDLG_H - -#include - -class QLineEdit; -class QPushButton; - -//================================================================================= -// class : GEOMToolsGUI_NameDlg -// purpose : Common dialog box class -//================================================================================= -class GEOMToolsGUI_NameDlg : public QDialog -{ - Q_OBJECT - -public: - GEOMToolsGUI_NameDlg( QWidget* parent = 0 ); - ~GEOMToolsGUI_NameDlg(); - - void setName( const QString& name ); - QString name(); - - static QString getName( QWidget* parent = 0, const QString& oldName = QString::null ); - -protected slots: - void accept(); - -private: - QPushButton* myButtonOk; - QPushButton* myButtonCancel; - QLineEdit* myLineEdit; -}; - -#endif // GEOMToolsGUI_NAMEDLG_H diff --git a/src/GEOMToolsGUI/GEOMToolsGUI_NbIsosDlg.cxx b/src/GEOMToolsGUI/GEOMToolsGUI_NbIsosDlg.cxx deleted file mode 100644 index 0a6614894..000000000 --- a/src/GEOMToolsGUI/GEOMToolsGUI_NbIsosDlg.cxx +++ /dev/null @@ -1,151 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOMBase_NbIsosDlg.cxx -// Author : -// Module : GEOM -// $Header: - - -#include "GEOMToolsGUI_NbIsosDlg.h" -#include - -#include -#include -#include -#include -#include -//using namespace std; - -//================================================================================= -// class : GEOMToolsGUI_NbIsosDlg() -// purpose : Constructs a GEOMToolsGUI_NbIsosDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -GEOMToolsGUI_NbIsosDlg::GEOMToolsGUI_NbIsosDlg(QWidget* parent ) - :QDialog( parent, "GEOMToolsGUI_NbIsosDlg", true, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) -{ - setCaption( tr( "GEOM_MEN_ISOS" ) ); - setSizeGripEnabled(TRUE); - QGridLayout* MyDialogLayout = new QGridLayout(this); - MyDialogLayout->setSpacing(6); - MyDialogLayout->setMargin(11); - - /***************************************************************/ - QGroupBox* GroupC1 = new QGroupBox( this, "GroupC1" ); - GroupC1->setColumnLayout(0, Qt::Vertical ); - GroupC1->layout()->setSpacing( 0 ); - GroupC1->layout()->setMargin( 0 ); - QGridLayout* GroupC1Layout = new QGridLayout( GroupC1->layout() ); - GroupC1Layout->setAlignment( Qt::AlignTop ); - GroupC1Layout->setSpacing( 6 ); - GroupC1Layout->setMargin( 11 ); - - QLabel* TextLabel1 = new QLabel( GroupC1, "TextLabel1" ); - TextLabel1->setText( tr( "GEOM_MEN_ISOU") ); - GroupC1Layout->addWidget( TextLabel1, 0, 0 ); - - SpinBoxU = new QSpinBox( GroupC1, "SpinBoxU" ); - SpinBoxU->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - SpinBoxU->setMinValue( 0 ); - SpinBoxU->setValue( 1 ); - GroupC1Layout->addWidget( SpinBoxU, 0, 1 ); - - QLabel* TextLabel2 = new QLabel( GroupC1, "TextLabel2" ); - TextLabel2->setText( tr( "GEOM_MEN_ISOV") ) ; - GroupC1Layout->addWidget( TextLabel2, 0, 2 ); - - SpinBoxV = new QSpinBox( GroupC1, "SpinBoxV"); - SpinBoxV->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - SpinBoxV->setValue( 1 ); - SpinBoxV->setMinValue( 0 ); - GroupC1Layout->addWidget( SpinBoxV, 0, 3 ); - - /***************************************************************/ - QGroupBox* GroupButtons = new QGroupBox( this, "GroupButtons" ); - GroupButtons->setColumnLayout(0, Qt::Vertical ); - GroupButtons->layout()->setSpacing( 0 ); - GroupButtons->layout()->setMargin( 0 ); - QGridLayout* GroupButtonsLayout = new QGridLayout( GroupButtons->layout() ); - GroupButtonsLayout->setAlignment( Qt::AlignTop ); - GroupButtonsLayout->setSpacing( 6 ); - GroupButtonsLayout->setMargin( 11 ); - - QPushButton* buttonOk = new QPushButton( GroupButtons, "buttonOk" ); - buttonOk->setText( tr( "GEOM_BUT_OK" ) ) ; - buttonOk->setAutoDefault( TRUE ); - buttonOk->setDefault( TRUE ); - GroupButtonsLayout->addWidget( buttonOk, 0, 0 ); - - GroupButtonsLayout->addItem( new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ), 0, 1 ); - - QPushButton* buttonCancel = new QPushButton( GroupButtons, "buttonCancel" ); - buttonCancel->setText( tr( "GEOM_BUT_CANCEL" ) ) ; - buttonCancel->setAutoDefault( TRUE ); - GroupButtonsLayout->addWidget( buttonCancel, 0, 2 ); - /***************************************************************/ - - MyDialogLayout->addWidget(GroupC1, 0, 0); - MyDialogLayout->addWidget(GroupButtons, 1, 0); - - - // signals and slots connections - connect(buttonOk, SIGNAL(clicked()), this, SLOT(accept())); - connect(buttonCancel, SIGNAL(clicked()), this, SLOT(reject())); - - /* Move widget on the botton right corner of main widget */ - SUIT_Tools::centerWidget(this, parent); -} - - -//================================================================================= -// function : ~GEOMToolsGUI_NbIsosDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -GEOMToolsGUI_NbIsosDlg::~GEOMToolsGUI_NbIsosDlg() -{ - // no need to delete child widgets, Qt does it all for us -} - -int GEOMToolsGUI_NbIsosDlg::getU() const -{ - return SpinBoxU->text().toInt(); -} - -int GEOMToolsGUI_NbIsosDlg::getV() const -{ - return SpinBoxV->text().toInt(); -} - -void GEOMToolsGUI_NbIsosDlg::setU( const int v ) -{ - SpinBoxU->setValue( v ); -} - -void GEOMToolsGUI_NbIsosDlg::setV( const int v ) -{ - SpinBoxV->setValue( v ); -} - diff --git a/src/GEOMToolsGUI/GEOMToolsGUI_NbIsosDlg.h b/src/GEOMToolsGUI/GEOMToolsGUI_NbIsosDlg.h deleted file mode 100644 index 943dbdcde..000000000 --- a/src/GEOMToolsGUI/GEOMToolsGUI_NbIsosDlg.h +++ /dev/null @@ -1,60 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOMToolsGUI_NbIsosDlg.h -// Author : -// Module : GEOM -// $Header: - -#ifndef GEOMTOOLSGUI_NBISOSDLG_H -#define GEOMTOOLSGUI_NBISOSDLG_H - -#include - -class QSpinBox; - -//================================================================================= -// class : GEOMToolsGUI_NbIsosDlg -// purpose : -//================================================================================= -class GEOMToolsGUI_NbIsosDlg : public QDialog -{ - Q_OBJECT - -public: - GEOMToolsGUI_NbIsosDlg( QWidget* parent ); - ~GEOMToolsGUI_NbIsosDlg(); - - int getU() const; - int getV() const; - - void setU( const int ); - void setV( const int ); - -private: - QSpinBox* SpinBoxU; - QSpinBox* SpinBoxV; - -}; - -#endif // GEOMTOOLSGUI_NBISOSDLG_H diff --git a/src/GEOMToolsGUI/GEOMToolsGUI_TransparencyDlg.h b/src/GEOMToolsGUI/GEOMToolsGUI_TransparencyDlg.h deleted file mode 100644 index a63b514b6..000000000 --- a/src/GEOMToolsGUI/GEOMToolsGUI_TransparencyDlg.h +++ /dev/null @@ -1,65 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOMBase_TransparencyDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_TRANSPARENCYDLG_H -#define DIALOGBOX_TRANSPARENCYDLG_H - -#include -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define GEOMTOOLSGUI_WNT_EXPORT __declspec( dllexport ) -#else -#define GEOMTOOLSGUI_WNT_EXPORT -#endif -class QSlider; - -//================================================================================= -// class : GEOMBase_TransparencyDlg -// purpose : -// : WARNING : that is a MODAL dialog. -//================================================================================= -class GEOMTOOLSGUI_WNT_EXPORT GEOMToolsGUI_TransparencyDlg : public QDialog -{ - Q_OBJECT - -public: - GEOMToolsGUI_TransparencyDlg( QWidget* parent ); - ~GEOMToolsGUI_TransparencyDlg(); - -private : - bool myFirstInit ; /* Inform for the first init */ - QSlider* mySlider; - -private slots: - void ClickOnOk(); - void ClickOnClose(); - void ValueHasChanged( int ) ; - -}; - -#endif // DIALOGBOX_TRANSPARENCYDLG_H - diff --git a/src/GEOMToolsGUI/Makefile.in b/src/GEOMToolsGUI/Makefile.in deleted file mode 100644 index 1dac4b1ab..000000000 --- a/src/GEOMToolsGUI/Makefile.in +++ /dev/null @@ -1,67 +0,0 @@ -# GEOM GEOMTOOLSGUI : -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Author : Damien COQUERET (OCC) -# Module : GEOM -# $Header: - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -# Libraries targets -LIB = libGEOMToolsGUI.la - -# header files -EXPORT_HEADERS= - -LIB_SRC = GEOMToolsGUI.cxx \ - GEOMToolsGUI_1.cxx \ - GEOMToolsGUI_TransparencyDlg.cxx \ - GEOMToolsGUI_NbIsosDlg.cxx \ - GEOMToolsGUI_NameDlg.cxx - -LIB_MOC = GEOMToolsGUI_TransparencyDlg.h \ - GEOMToolsGUI_NbIsosDlg.h \ - GEOMToolsGUI_NameDlg.h - -LIB_CLIENT_IDL = SALOMEDS_Attributes.idl \ - SALOME_GenericObj.idl \ - SALOME_Exception.idl \ - SALOME_Component.idl - -LIB_SERVER_IDL = - -# additionnal information to compil and link file - -CPPFLAGS += $(QT_INCLUDES) $(VTK_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES) $(BOOST_CPPFLAGS) -I$(KERNEL_ROOT_DIR)/include/salome -I$(GUI_ROOT_DIR)/include/salome -CXXFLAGS += $(BOOST_CPPFLAGS) -I$(KERNEL_ROOT_DIR)/include/salome -I$(GUI_ROOT_DIR)/include/salome - -LDFLAGS += -L$(KERNEL_ROOT_DIR)/lib/salome -L$(GUI_ROOT_DIR)/lib/salome -lGEOMBase -lVTKViewer -lOCCViewer -lsuit -lSalomeApp - -@CONCLUDE@ diff --git a/src/GEOM_I/GEOM_DumpPython.cc b/src/GEOM_I/GEOM_DumpPython.cc deleted file mode 100644 index 6b71e1551..000000000 --- a/src/GEOM_I/GEOM_DumpPython.cc +++ /dev/null @@ -1,94 +0,0 @@ -#ifdef WNT -#pragma warning( disable:4786 ) -#endif - -#include - -#include "GEOM_Gen_i.hh" -#include -#include -#include -#include - -//======================================================================= -//function : DumpPython -//purpose : -//======================================================================= - -Engines::TMPFile* GEOM_Gen_i::DumpPython(CORBA::Object_ptr theStudy, - CORBA::Boolean isPublished, - CORBA::Boolean& isValidScript) -{ - SALOMEDS::Study_var aStudy = SALOMEDS::Study::_narrow(theStudy); - if(CORBA::is_nil(aStudy)) - return new Engines::TMPFile(0); - - SALOMEDS::SObject_var aSO = aStudy->FindComponent(ComponentDataType()); - if(CORBA::is_nil(aSO)) - return new Engines::TMPFile(0); - - Resource_DataMapOfAsciiStringAsciiString aMap; - - SALOMEDS::ChildIterator_var Itr = aStudy->NewChildIterator(aSO); - for(Itr->InitEx(true); Itr->More(); Itr->Next()) { - SALOMEDS::SObject_var aValue = Itr->Value(); - CORBA::String_var IOR = aValue->GetIOR(); - if(strlen(IOR.in()) > 0) { - CORBA::Object_var obj = _orb->string_to_object(IOR); - GEOM::GEOM_Object_var GO = GEOM::GEOM_Object::_narrow(obj); - if(!CORBA::is_nil(GO)) { - CORBA::String_var aName = aValue->GetName(); - CORBA::String_var anEntry = GO->GetEntry(); - aMap.Bind( (char*)anEntry.in(), (char*)aName.in() ); - } - } - } - - TCollection_AsciiString aScript = - "### This file is generated by SALOME automatically by dump python funcitonality\n" - "### of GEOM component\n\n"; - aScript += _impl->DumpPython(aStudy->StudyId(), aMap, isPublished, isValidScript); - - int aLen = aScript.Length(); - unsigned char* aBuffer = new unsigned char[aLen+1]; - strcpy((char*)aBuffer, aScript.ToCString()); - - CORBA::Octet* anOctetBuf = (CORBA::Octet*)aBuffer; - Engines::TMPFile_var aStreamFile = new Engines::TMPFile(aLen+1, aLen+1, anOctetBuf, 1); - - return aStreamFile._retn(); -} - -//======================================================================= -//function : GetDumpName -//purpose : -//======================================================================= - -char* GEOM_Gen_i::GetDumpName (const char* theStudyEntry) -{ - const char* name = _impl->GetDumpName( theStudyEntry ); - if ( name && strlen( name ) > 0 ) - return strdup( name ); - - return NULL; -} - -//======================================================================= -//function : GetAllDumpNames -//purpose : -//======================================================================= - -GEOM::string_array* GEOM_Gen_i::GetAllDumpNames() -{ - Handle(TColStd_HSequenceOfAsciiString) aHSeq = _impl->GetAllDumpNames(); - int i = 0, aLen = aHSeq->Length(); - - GEOM::string_array_var seq = new GEOM::string_array(); - seq->length(aLen); - - for (; i < aLen; i++) { - seq[i] = CORBA::string_dup(aHSeq->Value(i + 1).ToCString()); - } - - return seq._retn(); -} diff --git a/src/GEOM_I/GEOM_Gen_i.cc b/src/GEOM_I/GEOM_Gen_i.cc deleted file mode 100644 index 0a2e9dc83..000000000 --- a/src/GEOM_I/GEOM_Gen_i.cc +++ /dev/null @@ -1,868 +0,0 @@ -#ifdef WNT -#pragma warning( disable:4786 ) -#endif - -#include - -#include "GEOM_Gen_i.hh" -#include "GEOM_Object_i.hh" - -#include - -#include "Utils_CorbaException.hxx" -#include "OpUtil.hxx" -#include "Utils_ExceptHandlers.hxx" -#include "utilities.h" - -#include "GEOM_Object_i.hh" -#include "GEOM_Object.hxx" -#include "GEOM_Function.hxx" -#include "GEOMImpl_Types.hxx" -#include "GEOMImpl_CopyDriver.hxx" - -// Cascade headers -#include -#include -#include -#include -#include -#include -#include - -#include "SALOMEDS_Tool.hxx" - -//============================================================================ -// function : GEOM_Gen_i() -// purpose : constructor to be called for servant creation. -//============================================================================ -GEOM_Gen_i::GEOM_Gen_i(CORBA::ORB_ptr orb, - PortableServer::POA_ptr poa, - PortableServer::ObjectId * contId, - const char *instanceName, - const char *interfaceName) : - Engines_Component_i(orb, poa, contId, instanceName, interfaceName) -{ - _thisObj = this; - _id = _poa->activate_object(_thisObj); - name_service = new SALOME_NamingService(_orb); - - _impl = new ::GEOMImpl_Gen; - -} - - - -//============================================================================ -// function : ~GEOM_Gen_i() -// purpose : destructor -//============================================================================ -GEOM_Gen_i::~GEOM_Gen_i() { - delete name_service; - delete _impl; -} - - -//============================================================================ -// function : IORToLocalPersistentID() -// purpose : -//============================================================================ -char* GEOM_Gen_i::IORToLocalPersistentID(SALOMEDS::SObject_ptr theSObject, - const char* IORString, - CORBA::Boolean isMultiFile, - CORBA::Boolean isASCII) -{ - GEOM::GEOM_Object_var anObject = GEOM::GEOM_Object::_narrow(_orb->string_to_object(IORString)); - if (!CORBA::is_nil(anObject)) { - return strdup(anObject->GetEntry()); - } - return 0; -} - - -//============================================================================ -// function : LocalPersistentIDToIOR() -// purpose : Create/Load CORBA object from a persistent ref (an entry) -// : Used when a study is loaded -// : The IOR (IORName) of object created is returned -//============================================================================ -char* GEOM_Gen_i::LocalPersistentIDToIOR(SALOMEDS::SObject_ptr theSObject, - const char* aLocalPersistentID, - CORBA::Boolean isMultiFile, - CORBA::Boolean isASCII) -{ - SALOMEDS::Study_var aStudy = theSObject->GetStudy(); - - Handle(GEOM_Object) anObject = _impl->GetObject(aStudy->StudyId(), const_cast(aLocalPersistentID)); - TCollection_AsciiString anEntry; - TDF_Tool::Entry(anObject->GetEntry(), anEntry); - GEOM::GEOM_Object_var obj = GetObject(anObject->GetDocID(), anEntry.ToCString()); - - CORBA::String_var aPersRefString = _orb->object_to_string(obj); - return strdup(aPersRefString); -} - -//============================================================================ -// function : CanPublishInStudy -// purpose : -//============================================================================ -bool GEOM_Gen_i::CanPublishInStudy(CORBA::Object_ptr theIOR) -{ - GEOM::GEOM_Object_var anObject = GEOM::GEOM_Object::_narrow(theIOR); - return !(anObject->_is_nil()); -} - - -//============================================================================ -// function : PublishInStudy -// purpose : -//============================================================================ -SALOMEDS::SObject_ptr GEOM_Gen_i::PublishInStudy(SALOMEDS::Study_ptr theStudy, - SALOMEDS::SObject_ptr theSObject, - CORBA::Object_ptr theObject, - const char* theName) throw (SALOME::SALOME_Exception) -{ - Unexpect aCatch(SALOME_SalomeException); - SALOMEDS::SObject_var aResultSO; - if(CORBA::is_nil(theObject) || theStudy->_is_nil()) return aResultSO; - - GEOM::GEOM_Object_var aShape = GEOM::GEOM_Object::_narrow(theObject); - if(aShape->_is_nil()) return aResultSO; - - SALOMEDS::GenericAttribute_var anAttr; - SALOMEDS::StudyBuilder_var aStudyBuilder = theStudy->NewBuilder(); - - SALOMEDS::SComponent_var aFather = theStudy->FindComponent("GEOM"); - if (aFather->_is_nil()) { - aFather = aStudyBuilder->NewComponent("GEOM"); - anAttr = aStudyBuilder->FindOrCreateAttribute(aFather, "AttributeName"); - SALOMEDS::AttributeName_var aName = SALOMEDS::AttributeName::_narrow(anAttr); - aName->SetValue("Geometry"); - anAttr = aStudyBuilder->FindOrCreateAttribute(aFather, "AttributePixMap"); - SALOMEDS::AttributePixMap::_narrow(anAttr)->SetPixMap("ICON_OBJBROWSER_Geometry"); - aStudyBuilder->DefineComponentInstance(aFather, GEOM_Gen::_this()); - } - if (aFather->_is_nil()) return aResultSO; - - if (CORBA::is_nil(theSObject)) { - aResultSO = aStudyBuilder->NewObject(aFather); - } else { - if (!theSObject->ReferencedObject(aResultSO)) - aResultSO = SALOMEDS::SObject::_duplicate(theSObject); //SRN: Added Aug 24,2004 : for the method AddInStudy with theFather argumenet != NULL - //THROW_SALOME_CORBA_EXCEPTION("Publish in study supervision graph error",SALOME::BAD_PARAM); - } - anAttr = aStudyBuilder->FindOrCreateAttribute(aResultSO, "AttributeIOR"); - SALOMEDS::AttributeIOR_var anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr); - char *aGeomObjIOR = _orb->object_to_string(theObject); - anIOR->SetValue(strdup(aGeomObjIOR)); - - anAttr = aStudyBuilder->FindOrCreateAttribute(aResultSO, "AttributePixMap"); - SALOMEDS::AttributePixMap_var aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr); - TCollection_AsciiString aShapeName("Shape_"); - - if ( aShape->GetType() == GEOM_GROUP ) { - GEOM::GEOM_IGroupOperations_var anOp = GetIGroupOperations( theStudy->StudyId() ); - switch ( (TopAbs_ShapeEnum)anOp->GetType( aShape ) ) { - case TopAbs_VERTEX: - aPixmap->SetPixMap( "ICON_OBJBROWSER_GROUP_PNT" ); - aShapeName = "Group_Of_Vertices_"; - break; - case TopAbs_EDGE: - aPixmap->SetPixMap( "ICON_OBJBROWSER_GROUP_EDGE" ); - aShapeName = "Group_Of_Edges_"; - break; - case TopAbs_FACE: - aPixmap->SetPixMap( "ICON_OBJBROWSER_GROUP_FACE" ); - aShapeName = "Group_Of_Faces_"; - break; - case TopAbs_SOLID: - aPixmap->SetPixMap( "ICON_OBJBROWSER_GROUP_SOLID" ); - aShapeName = "Group_Of_Solids_"; - break; - } - } else if ( aShape->GetType() == GEOM_MARKER ) { - aPixmap->SetPixMap( "ICON_OBJBROWSER_LCS" ); - aShapeName = "LocalCS_"; - } else if ( aShape->GetShapeType() == GEOM::COMPOUND ) { - aPixmap->SetPixMap( "ICON_OBJBROWSER_COMPOUND" ); - aShapeName = "Compound_"; - } else if ( aShape->GetShapeType() == GEOM::COMPSOLID ) { - aPixmap->SetPixMap( "ICON_OBJBROWSER_COMPSOLID" ); - aShapeName = "Compsolid_"; - } else if ( aShape->GetShapeType() == GEOM::SOLID ) { - aPixmap->SetPixMap( "ICON_OBJBROWSER_SOLID" ); - aShapeName = "Solid_"; - } else if ( aShape->GetShapeType() == GEOM::SHELL ) { - aPixmap->SetPixMap( "ICON_OBJBROWSER_SHELL" ); - aShapeName = "Shell_"; - } else if ( aShape->GetShapeType() == GEOM::FACE ) { - aPixmap->SetPixMap( "ICON_OBJBROWSER_FACE" ); - aShapeName = "Face_"; - } else if ( aShape->GetShapeType() == GEOM::WIRE ) { - aPixmap->SetPixMap( "ICON_OBJBROWSER_WIRE" ); - aShapeName = "Wire_"; - } else if ( aShape->GetShapeType() == GEOM::EDGE ) { - aPixmap->SetPixMap( "ICON_OBJBROWSER_EDGE" ); - aShapeName = "Edge_"; - } else if ( aShape->GetShapeType() == GEOM::VERTEX ) { - aPixmap->SetPixMap( "ICON_OBJBROWSER_VERTEX" ); - aShapeName = "Vertex_"; - } - //if (strlen(theName) == 0) aShapeName += TCollection_AsciiString(aResultSO->Tag()); - //else aShapeName = TCollection_AsciiString(strdup(theName)); - - // asv : 11.11.04 Introducing a more sofisticated method of name creation, just as - // it is done in GUI in GEOMBase::GetDefaultName() - not just add a Tag() == number - // of objects in the study, but compute a number of objects with the same prefix - // and build a new name as Prefix_N+1 - if ( strlen( theName ) == 0 ) { // MOST PROBABLY CALLED FROM BATCHMODE OR SUPERVISOR - int i = 0; // (WITH EMPTY NEW NAME) - SALOMEDS::SObject_var obj; - TCollection_AsciiString aNewShapeName; - do { - aNewShapeName = aShapeName + TCollection_AsciiString(++i); - obj = theStudy->FindObject( aNewShapeName.ToCString() ); - } - while ( !obj->_is_nil() ); - aShapeName = aNewShapeName; - } - else // MOST PROBABLY CALLED FROM GEOM GUI (ALREADY WITH VALID NAME) - aShapeName = TCollection_AsciiString(strdup(theName)); - - //Set the study entry as a name of the published GEOM_Object - aShape->SetStudyEntry(aResultSO->GetID()); - - //Set a name of the added shape - anAttr = aStudyBuilder->FindOrCreateAttribute(aResultSO, "AttributeName"); - SALOMEDS::AttributeName_var aNameAttrib = SALOMEDS::AttributeName::_narrow(anAttr); - aNameAttrib->SetValue(aShapeName.ToCString()); - - return aResultSO._retn(); -} - - -//============================================================================ -// function : Save() -// purpose : save OCAF/Geom document -//============================================================================ -SALOMEDS::TMPFile* GEOM_Gen_i::Save(SALOMEDS::SComponent_ptr theComponent, - const char* theURL, - bool isMultiFile) { - SALOMEDS::TMPFile_var aStreamFile; - // Get a temporary directory to store a file - std::string aTmpDir = (isMultiFile)?theURL:SALOMEDS_Tool::GetTmpDir(); - // Create a list to store names of created files - SALOMEDS::ListOfFileNames_var aSeq = new SALOMEDS::ListOfFileNames; - aSeq->length(1); - // Prepare a file name to open - TCollection_AsciiString aNameWithExt(""); - if (isMultiFile) - aNameWithExt = TCollection_AsciiString((char*)(SALOMEDS_Tool::GetNameFromPath(theComponent->GetStudy()->URL())).c_str()); - aNameWithExt += TCollection_AsciiString("_GEOM.sgd"); - aSeq[0] = CORBA::string_dup(aNameWithExt.ToCString()); - // Build a full file name of temporary file - TCollection_AsciiString aFullName = TCollection_AsciiString((char*)aTmpDir.c_str()) + aNameWithExt; - // Save GEOM component in this file - _impl->Save(theComponent->GetStudy()->StudyId(), aFullName.ToCString()); - // Conver a file to the byte stream - aStreamFile = SALOMEDS_Tool::PutFilesToStream(aTmpDir.c_str(), aSeq.in(), isMultiFile); - // Remove the created file and tmp directory - if (!isMultiFile) SALOMEDS_Tool::RemoveTemporaryFiles(aTmpDir.c_str(), aSeq.in(), true); - - // Return the created byte stream - return aStreamFile._retn(); -} - - -//============================================================================ -// function : SaveASCII() -// purpose : -//============================================================================ -SALOMEDS::TMPFile* GEOM_Gen_i::SaveASCII(SALOMEDS::SComponent_ptr theComponent, - const char* theURL, - bool isMultiFile) { - SALOMEDS::TMPFile_var aStreamFile = Save(theComponent, theURL, isMultiFile); - return aStreamFile._retn(); -} - - -//============================================================================ -// function : Load() -// purpose : -//============================================================================ -CORBA::Boolean GEOM_Gen_i::Load(SALOMEDS::SComponent_ptr theComponent, - const SALOMEDS::TMPFile& theStream, - const char* theURL, - bool isMultiFile) { - - if (theStream.length() <= 9) { - MESSAGE("The TMPFile is too short : " << theStream.length() << " bytes "); - return false; - } - - // Get a temporary directory for a file - std::string aTmpDir = isMultiFile?theURL:SALOMEDS_Tool::GetTmpDir(); - // Conver the byte stream theStream to a file and place it in tmp directory - SALOMEDS::ListOfFileNames_var aSeq = SALOMEDS_Tool::PutStreamToFiles(theStream, aTmpDir.c_str(), isMultiFile); - - // Prepare a file name to open - TCollection_AsciiString aNameWithExt(""); - if (isMultiFile) - aNameWithExt = TCollection_AsciiString((char*)(SALOMEDS_Tool::GetNameFromPath(theComponent->GetStudy()->URL())).c_str()); - aNameWithExt += TCollection_AsciiString("_GEOM.sgd"); - TCollection_AsciiString aFullName = (TCollection_AsciiString((char*)aTmpDir.c_str()) + aNameWithExt); - - // Open document - if (!_impl->Load(theComponent->GetStudy()->StudyId(), aFullName.ToCString())) return false; - - // Remove the created file and tmp directory - if (!isMultiFile) SALOMEDS_Tool::RemoveTemporaryFiles(aTmpDir.c_str(), aSeq.in(), true); - - SALOMEDS::Study_var Study = theComponent->GetStudy(); - TCollection_AsciiString name( strdup(Study->Name()) ); - - return true; -} - - -//============================================================================ -// function : LoadASCII() -// purpose : -//============================================================================ -CORBA::Boolean GEOM_Gen_i::LoadASCII(SALOMEDS::SComponent_ptr theComponent, - const SALOMEDS::TMPFile& theStream, - const char* theURL, - bool isMultiFile) { - return Load(theComponent, theStream, theURL, isMultiFile); -} - - -//============================================================================ -// function : Close() -// purpose : -//============================================================================ -void GEOM_Gen_i::Close(SALOMEDS::SComponent_ptr theComponent) -{ - _impl->Close(theComponent->GetStudy()->StudyId()); -} - -//============================================================================ -// function : CanCopy() -// purpose : -//============================================================================ -CORBA::Boolean GEOM_Gen_i::CanCopy(SALOMEDS::SObject_ptr theObject) { - // Try to retrieve known by Geometry component GEOM_Object by given IOR - SALOMEDS::GenericAttribute_var anAttr; - if (!theObject->FindAttribute(anAttr, "AttributeIOR")) return false; - - SALOMEDS::AttributeIOR_var anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr); - - GEOM::GEOM_Object_var anObject = GEOM::GEOM_Object::_narrow(_orb->string_to_object(anIOR->Value())); - // If the object is null one it can't be copied: return false - if (anObject->_is_nil()) return false; - return true; -} - -//============================================================================ -// function : CopyFrom() -// purpose : -//============================================================================ -SALOMEDS::TMPFile* GEOM_Gen_i::CopyFrom(SALOMEDS::SObject_ptr theObject, CORBA::Long& theObjectID) { - // Declare a sequence of the byte to store the copied object - SALOMEDS::TMPFile_var aStreamFile = new SALOMEDS::TMPFile; - - // Try to get GEOM_Object object by given SObject - SALOMEDS::GenericAttribute_var anAttr; - if (!theObject->FindAttribute(anAttr, "AttributeIOR")) return aStreamFile._retn(); - GEOM::GEOM_Object_var anObject = GEOM::GEOM_Object::_narrow(_orb->string_to_object(SALOMEDS::AttributeIOR::_narrow(anAttr)->Value())); - if (anObject->_is_nil()) return aStreamFile._retn(); - - aStreamFile = anObject->GetShapeStream(); - - // Assign an ID the type of GEOM_Object - theObjectID = anObject->GetType(); - - // Return created TMPFile - return aStreamFile._retn(); -} - -//============================================================================ -// function : CanPaste() -// purpose : -//============================================================================ -CORBA::Boolean GEOM_Gen_i::CanPaste(const char* theComponentName, CORBA::Long theObjectID) { - // The Geometry component can paste only objects copied by Geometry component - // and with the object type = 1 - if (strcmp(theComponentName, ComponentDataType()) != 0) return false; - return true; -} - -//============================================================================ -// function : PasteInto() -// purpose : -//============================================================================ -SALOMEDS::SObject_ptr GEOM_Gen_i::PasteInto(const SALOMEDS::TMPFile& theStream, - CORBA::Long theObjectID, - SALOMEDS::SObject_ptr theObject) { - // Find the current Study and StudyBuilder - SALOMEDS::Study_var aStudy = theObject->GetStudy(); - SALOMEDS::StudyBuilder_var aStudyBuilder = aStudy->NewBuilder(); - - // Retrieve a TopoDS_Shape from byte stream - TopoDS_Shape aTopology; - istrstream aStreamedBrep((char*) &theStream[0], theStream.length()); - BRep_Builder aBuilder; - try { - BRepTools::Read(aTopology, aStreamedBrep, aBuilder); - } catch (Standard_Failure) { - return false; - } - - // SObject of the created shape is theObject or new Child of Component if theObject == geom component - SALOMEDS::SObject_var aNewSO; - if (strcmp(theObject->GetFatherComponent()->GetID(),theObject->GetID()) == 0) { - aNewSO = aStudyBuilder->NewObject(theObject); - } else aNewSO = SALOMEDS::SObject::_duplicate(theObject); - - - //Create a new GEOM_Object - Handle(GEOM_Object) anObj = _impl->AddObject(aNewSO->GetStudy()->StudyId(), theObjectID); - Handle(GEOM_Function) aFunction = anObj->AddFunction(GEOMImpl_CopyDriver::GetID(), COPY_WITHOUT_REF); - aFunction->SetValue(aTopology); - - TCollection_AsciiString anEntry; - TDF_Tool::Entry(anObj->GetEntry(), anEntry); - GEOM::GEOM_Object_var obj = GetObject(anObj->GetDocID(), anEntry.ToCString()); - - // Add IORAttribute to the Study and set IOR of the created GEOM_Object to it - SALOMEDS::GenericAttribute_var anAttr = aStudyBuilder->FindOrCreateAttribute(aNewSO, "AttributeIOR"); - SALOMEDS::AttributeIOR_var anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr); - anIOR->SetValue(_orb->object_to_string(obj)); - - // Return the created in the Study SObject - return aNewSO._retn(); -} - -//============================================================================ -// function : ComponentDataType() -// purpose : -//============================================================================ -char* GEOM_Gen_i::ComponentDataType() -{ - return strdup("GEOM"); -} - -//============================================================================ -// function : AddInStudy -// purpose : -//============================================================================ -SALOMEDS::SObject_ptr GEOM_Gen_i::AddInStudy(SALOMEDS::Study_ptr theStudy, GEOM::GEOM_Object_ptr theObject, const char* theName, GEOM::GEOM_Object_ptr theFather) -{ - SALOMEDS::SObject_var aResultSO; - if(theObject->_is_nil() || theStudy->_is_nil()) return aResultSO; - - SALOMEDS::StudyBuilder_var aStudyBuilder = theStudy->NewBuilder(); - char* IOR; - - if(!theFather->_is_nil()) { - IOR = _orb->object_to_string(theFather); - SALOMEDS::SObject_var aFatherSO = theStudy->FindObjectIOR(IOR); - if(aFatherSO->_is_nil()) return aResultSO._retn(); - aResultSO = aStudyBuilder->NewObject(aFatherSO); - //aStudyBuilder->Addreference(aResultSO, aResultSO); - } - - aResultSO = PublishInStudy(theStudy, aResultSO, theObject, theName); - if(aResultSO->_is_nil()) return aResultSO._retn(); - - GEOM::ListOfGO_var aList = theObject->GetDependency(); - Standard_Integer aLength = aList->length(); - if(aLength < 1) return aResultSO._retn(); - - //Publish the arguments - for(Standard_Integer i = 0; i< aLength; i++) { - GEOM::GEOM_Object_var anObject = aList[i]; - if(anObject->_is_nil()) continue; - IOR = _orb->object_to_string(anObject); - SALOMEDS::SObject_var aSO = theStudy->FindObjectIOR(IOR); - if(aSO->_is_nil()) continue; - SALOMEDS::SObject_var aSubSO = aStudyBuilder->NewObject(aResultSO); - aStudyBuilder->Addreference(aSubSO, aSO); - } - - return aResultSO._retn(); -} - -//============================================================================ -// function : register() -// purpose : register 'name' in 'name_service' -//============================================================================ -void GEOM_Gen_i::register_name(char * name) -{ - GEOM::GEOM_Gen_ptr g = GEOM::GEOM_Gen::_narrow(_this()); - name_service->Register(g, strdup(name)); -} - -//============================================================================ -// function : Undo -// purpose : -//============================================================================ -void GEOM_Gen_i::Undo(CORBA::Long theStudyID) -{ - _impl->Undo(theStudyID); -} - -//============================================================================ -// function : Redo -// purpose : -//============================================================================ -void GEOM_Gen_i::Redo(CORBA::Long theStudyID) -{ - _impl->Redo(theStudyID); -} - -//============================================================================ -// function : GetIBasicOperations -// purpose : -//============================================================================ -GEOM::GEOM_IBasicOperations_ptr GEOM_Gen_i::GetIBasicOperations(CORBA::Long theStudyID) - throw ( SALOME::SALOME_Exception ) -{ - Unexpect aCatch(SALOME_SalomeException); - MESSAGE( "GEOM_Gen_i::GetIBasicOperations" ); - - GEOM::GEOM_Gen_ptr engine = _this(); - - GEOM_IBasicOperations_i* aServant = - new GEOM_IBasicOperations_i(_poa, engine, _impl->GetIBasicOperations(theStudyID)); - - // activate the CORBA servant - GEOM::GEOM_IBasicOperations_var operations = aServant->_this(); - return operations._retn(); -} - -//============================================================================ -// function : GetITransformOperations -// purpose : -//============================================================================ -GEOM::GEOM_ITransformOperations_ptr GEOM_Gen_i::GetITransformOperations(CORBA::Long theStudyID) - throw ( SALOME::SALOME_Exception ) -{ - Unexpect aCatch(SALOME_SalomeException); - MESSAGE( "GEOM_Gen_i::GetITransformOperations" ); - - GEOM::GEOM_Gen_ptr engine = _this(); - - GEOM_ITransformOperations_i* aServant = - new GEOM_ITransformOperations_i(_poa, engine, _impl->GetITransformOperations(theStudyID)); - - // activate the CORBA servant - GEOM::GEOM_ITransformOperations_var operations = aServant->_this(); - return operations._retn(); -} - -//============================================================================ -// function : GetI3DPrimOperations -// purpose : -//============================================================================ -GEOM::GEOM_I3DPrimOperations_ptr GEOM_Gen_i::GetI3DPrimOperations(CORBA::Long theStudyID) - throw ( SALOME::SALOME_Exception ) -{ - Unexpect aCatch(SALOME_SalomeException); - MESSAGE( "GEOM_Gen_i::GetI3DPrimOperations" ); - - GEOM::GEOM_Gen_ptr engine = _this(); - - GEOM_I3DPrimOperations_i* aServant = - new GEOM_I3DPrimOperations_i(_poa, engine, _impl->GetI3DPrimOperations(theStudyID)); - - // activate the CORBA servant - GEOM::GEOM_I3DPrimOperations_var operations = aServant->_this(); - return operations._retn(); -} - -//============================================================================ -// function : GetIShapesOperations -// purpose : -//============================================================================ -GEOM::GEOM_IShapesOperations_ptr GEOM_Gen_i::GetIShapesOperations(CORBA::Long theStudyID) - throw ( SALOME::SALOME_Exception ) -{ - Unexpect aCatch(SALOME_SalomeException); - MESSAGE( "GEOM_Gen_i::GetIShapesOperations" ); - - GEOM::GEOM_Gen_ptr engine = _this(); - - GEOM_IShapesOperations_i* aServant = - new GEOM_IShapesOperations_i(_poa, engine, _impl->GetIShapesOperations(theStudyID)); - - // activate the CORBA servant - GEOM::GEOM_IShapesOperations_var operations = aServant->_this(); - return operations._retn(); -} - -//============================================================================ -// function : GetIBlocksOperations -// purpose : -//============================================================================ -GEOM::GEOM_IBlocksOperations_ptr GEOM_Gen_i::GetIBlocksOperations(CORBA::Long theStudyID) - throw ( SALOME::SALOME_Exception ) -{ - Unexpect aCatch(SALOME_SalomeException); - MESSAGE( "GEOM_Gen_i::GetIBlocksOperations" ); - - GEOM::GEOM_Gen_ptr engine = _this(); - - GEOM_IBlocksOperations_i* aServant = - new GEOM_IBlocksOperations_i(_poa, engine, _impl->GetIBlocksOperations(theStudyID)); - - // activate the CORBA servant - GEOM::GEOM_IBlocksOperations_var operations = aServant->_this(); - return operations._retn(); -} - -//============================================================================ -// function : GetIBooleanOperations -// purpose : -//============================================================================ -GEOM::GEOM_IBooleanOperations_ptr GEOM_Gen_i::GetIBooleanOperations(CORBA::Long theStudyID) - throw ( SALOME::SALOME_Exception ) -{ - Unexpect aCatch(SALOME_SalomeException); - MESSAGE( "GEOM_Gen_i::GetIBooleanOperations" ); - - GEOM::GEOM_Gen_ptr engine = _this(); - - GEOM_IBooleanOperations_i* aServant = - new GEOM_IBooleanOperations_i(_poa, engine, _impl->GetIBooleanOperations(theStudyID)); - - // activate the CORBA servant - GEOM::GEOM_IBooleanOperations_var operations = aServant->_this(); - return operations._retn(); -} - -//============================================================================ -// function : GetICurvesOperations -// purpose : -//============================================================================ -GEOM::GEOM_ICurvesOperations_ptr GEOM_Gen_i::GetICurvesOperations(CORBA::Long theStudyID) - throw ( SALOME::SALOME_Exception ) -{ - Unexpect aCatch(SALOME_SalomeException); - MESSAGE( "GEOM_Gen_i::GetICurvesOperations" ); - - GEOM::GEOM_Gen_ptr engine = _this(); - - GEOM_ICurvesOperations_i* aServant = - new GEOM_ICurvesOperations_i(_poa, engine, _impl->GetICurvesOperations(theStudyID)); - - // activate the CORBA servant - GEOM::GEOM_ICurvesOperations_var operations = aServant->_this(); - return operations._retn(); -} - -//============================================================================ -// function : GetILocalOperations -// purpose : -//============================================================================ -GEOM::GEOM_ILocalOperations_ptr GEOM_Gen_i::GetILocalOperations(CORBA::Long theStudyID) - throw ( SALOME::SALOME_Exception ) -{ - Unexpect aCatch(SALOME_SalomeException); - MESSAGE( "GEOM_Gen_i::GetILocalOperations" ); - - GEOM::GEOM_Gen_ptr engine = _this(); - - GEOM_ILocalOperations_i* aServant = - new GEOM_ILocalOperations_i(_poa, engine, _impl->GetILocalOperations(theStudyID)); - - // activate the CORBA servant - GEOM::GEOM_ILocalOperations_var operations = aServant->_this(); - return operations._retn(); -} - -//============================================================================ -// function : GetIHealingOperations -// purpose : -//============================================================================ -GEOM::GEOM_IHealingOperations_ptr GEOM_Gen_i::GetIHealingOperations(CORBA::Long theStudyID) - throw ( SALOME::SALOME_Exception ) -{ - Unexpect aCatch(SALOME_SalomeException); - MESSAGE( "GEOM_Gen_i::IHealingOperations" ); - - GEOM::GEOM_Gen_ptr engine = _this(); - - GEOM_IHealingOperations_i* aServant = - new GEOM_IHealingOperations_i(_poa, engine, _impl->GetIHealingOperations(theStudyID)); - - // activate the CORBA servant - GEOM::GEOM_IHealingOperations_var operations = aServant->_this(); - return operations._retn(); -} - -//============================================================================ -// function : GetIInsertOperations -// purpose : -//============================================================================ -GEOM::GEOM_IInsertOperations_ptr GEOM_Gen_i::GetIInsertOperations(CORBA::Long theStudyID) - throw ( SALOME::SALOME_Exception ) -{ - Unexpect aCatch(SALOME_SalomeException); - MESSAGE( "GEOM_Gen_i::GetIInsertOperations" ); - - GEOM::GEOM_Gen_ptr engine = _this(); - - GEOM_IInsertOperations_i* aServant = - new GEOM_IInsertOperations_i(_poa, engine, _impl->GetIInsertOperations(theStudyID)); - - // activate the CORBA servant - GEOM::GEOM_IInsertOperations_var operations = aServant->_this(); - return operations._retn(); -} - -//============================================================================ -// function : GetIMeasureOperations -// purpose : -//============================================================================ -GEOM::GEOM_IMeasureOperations_ptr GEOM_Gen_i::GetIMeasureOperations(CORBA::Long theStudyID) - throw ( SALOME::SALOME_Exception ) -{ - Unexpect aCatch(SALOME_SalomeException); - MESSAGE( "GEOM_Gen_i::GetIMeasureOperations" ); - - GEOM::GEOM_Gen_ptr engine = _this(); - - GEOM_IMeasureOperations_i* aServant = - new GEOM_IMeasureOperations_i(_poa, engine, _impl->GetIMeasureOperations(theStudyID)); - - // activate the CORBA servant - GEOM::GEOM_IMeasureOperations_var operations = aServant->_this(); - return operations._retn(); -} - -//============================================================================ -// function : GetIGroupOperations -// purpose : -//============================================================================ -GEOM::GEOM_IGroupOperations_ptr GEOM_Gen_i::GetIGroupOperations(CORBA::Long theStudyID) - throw ( SALOME::SALOME_Exception ) -{ - Unexpect aCatch(SALOME_SalomeException); - MESSAGE( "GEOM_Gen_i::GetIGroupOperations" ); - - GEOM::GEOM_Gen_ptr engine = _this(); - - GEOM_IGroupOperations_i* aServant = - new GEOM_IGroupOperations_i(_poa, engine, _impl->GetIGroupOperations(theStudyID)); - - // activate the CORBA servant - GEOM::GEOM_IGroupOperations_var operations = aServant->_this(); - return operations._retn(); -} - -//============================================================================= -/*! - * AddSubShape - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Gen_i::AddSubShape (GEOM::GEOM_Object_ptr theMainShape, - const GEOM::ListOfLong& theIndices) -{ - if(theMainShape == NULL || theIndices.length() < 1) return GEOM::GEOM_Object::_nil(); - Handle(GEOM_Object) aMainsShape = _impl->GetObject(theMainShape->GetStudyID(), theMainShape->GetEntry()); - if (aMainsShape.IsNull()) return GEOM::GEOM_Object::_nil(); - - Handle(TColStd_HArray1OfInteger) anArray = new TColStd_HArray1OfInteger(1, theIndices.length()); - for(Standard_Integer i = 0; iSetValue(i+1, theIndices[i]); - - Handle(GEOM_Object) anObject = _impl->AddSubShape(aMainsShape, anArray, true); - if(anObject.IsNull()) return GEOM::GEOM_Object::_nil(); - - TCollection_AsciiString anEntry; - TDF_Tool::Entry(anObject->GetEntry(), anEntry); - return GetObject(anObject->GetDocID(), anEntry.ToCString()); -} - -//============================================================================= -/*! - * RemoveObject - */ -//============================================================================= -void GEOM_Gen_i::RemoveObject(GEOM::GEOM_Object_ptr theObject) -{ - Handle(GEOM_Object) anObject = _impl->GetObject(theObject->GetStudyID(), theObject->GetEntry()); - if (anObject.IsNull()) return; - _impl->RemoveObject(anObject); - return; -} - - -//================================================================================= -// function : GetStringFromIOR() -// purpose : returns a string that represents a 'GEOM::GEOM_Object_var' -//================================================================================= -char* GEOM_Gen_i::GetStringFromIOR(GEOM::GEOM_Object_ptr theObject) { - return _orb->object_to_string(theObject); -} - - -//================================================================================= -// function : GetIORFromString() -// purpose : returns a 'GEOM::GEOM_Object_var' from a string representing it -//================================================================================= -GEOM::GEOM_Object_ptr GEOM_Gen_i::GetIORFromString(const char* stringIOR) { - GEOM::GEOM_Object_var aGeomObject; - if(strcmp(stringIOR,"") != 0){ - CORBA::Object_var anObject = _orb->string_to_object(stringIOR); - if(!CORBA::is_nil(anObject)) - aGeomObject = GEOM::GEOM_Object::_narrow(anObject.in()); - } - return aGeomObject._retn(); -} - -//================================================================================= -// function : GetObject() -// purpose : -//================================================================================= -GEOM::GEOM_Object_ptr GEOM_Gen_i::GetObject (CORBA::Long theStudyID, const char* theEntry) -{ - GEOM::GEOM_Object_var obj; - Handle(GEOM_Object) handle_object = _impl->GetObject(theStudyID, (char*)theEntry); - if (handle_object.IsNull()) return NULL; - - TCollection_AsciiString stringIOR = handle_object->GetIOR(); - if (stringIOR.Length() > 1) { - CORBA::Object_var corba_object = _orb->string_to_object(stringIOR.ToCString()); - if (!CORBA::is_nil(corba_object)) obj = GEOM::GEOM_Object::_narrow(corba_object); - return obj._retn(); - } - - GEOM::GEOM_Gen_ptr engine = _this(); - GEOM_Object_i* servant = new GEOM_Object_i (_poa, engine, handle_object); - - obj = servant->_this(); - stringIOR = _orb->object_to_string(obj); - handle_object->SetIOR(stringIOR); - return obj._retn(); -} - - -//===================================================================================== -// EXPORTED METHODS -//===================================================================================== -extern "C" -{ -#ifdef WNT - __declspec( dllexport ) -#endif - PortableServer::ObjectId * GEOMEngine_factory(CORBA::ORB_ptr orb, - PortableServer::POA_ptr poa, - PortableServer::ObjectId * contId, - const char *instanceName, - const char * interfaceName) - { - GEOM_Gen_i * myGEOM_Gen_i = new GEOM_Gen_i(orb, poa, contId, instanceName, interfaceName); - myGEOM_Gen_i->register_name("/myGEOM_Gen"); // NRI : 11/07/2002 : Add for Supervision example - return myGEOM_Gen_i->getId(); - } -} diff --git a/src/GEOM_I/GEOM_Gen_i.hh b/src/GEOM_I/GEOM_Gen_i.hh deleted file mode 100644 index 1111c11ba..000000000 --- a/src/GEOM_I/GEOM_Gen_i.hh +++ /dev/null @@ -1,208 +0,0 @@ -#ifndef __GEOM_GEN_I_H__ -#define __GEOM_GEN_I_H__ - -#include "GEOMImpl_Gen.hxx" - -// IDL headers -#include -#include CORBA_SERVER_HEADER(GEOM_Gen) - -#include CORBA_CLIENT_HEADER(SALOMEDS) -#include CORBA_CLIENT_HEADER(SALOMEDS_Attributes) - - -#include "SALOME_Component_i.hxx" -#include "SALOME_NamingService.hxx" - -#include "GEOM_IBasicOperations_i.hh" -#include "GEOM_ITransformOperations_i.hh" -#include "GEOM_I3DPrimOperations_i.hh" -#include "GEOM_IShapesOperations_i.hh" -#include "GEOM_IBlocksOperations_i.hh" -#include "GEOM_IBooleanOperations_i.hh" -#include "GEOM_ICurvesOperations_i.hh" -#include "GEOM_ILocalOperations_i.hh" -#include "GEOM_IHealingOperations_i.hh" -#include "GEOM_IInsertOperations_i.hh" -#include "GEOM_IMeasureOperations_i.hh" -#include "GEOM_IGroupOperations_i.hh" - -//#include // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC - - -//===================================================================== -// GEOM_Gen_i : class definition -//===================================================================== -class GEOM_Gen_i: virtual public POA_GEOM::GEOM_Gen, virtual public Engines_Component_i -{ - public: - - //-----------------------------------------------------------------------// - // Constructor / Destructor // - //-----------------------------------------------------------------------// - - // constructor to be called for servant creation. - GEOM_Gen_i(); - GEOM_Gen_i(CORBA::ORB_ptr orb, - PortableServer::POA_ptr poa, - PortableServer::ObjectId * contId, - const char *instanceName, - const char *interfaceName); - - // destructor, doing nothing (for now) - virtual ~GEOM_Gen_i(); - - // generic method to be put in a super class - void register_name(char * name); - - - //-----------------------------------------------------------------------// - // Inherited methods from SALOMEDS::Driver // - //-----------------------------------------------------------------------// - - SALOMEDS::TMPFile* Save(SALOMEDS::SComponent_ptr theComponent, - const char* theURL, - bool isMultiFile); - - SALOMEDS::TMPFile* SaveASCII(SALOMEDS::SComponent_ptr theComponent, - const char* theURL, - bool isMultiFile); - - CORBA::Boolean Load(SALOMEDS::SComponent_ptr theComponent, - const SALOMEDS::TMPFile& theStream, - const char* theURL, - bool isMultiFile); - - CORBA::Boolean LoadASCII(SALOMEDS::SComponent_ptr theComponent, - const SALOMEDS::TMPFile& theStream, - const char* theURL, - bool isMultiFile); - - void Close(SALOMEDS::SComponent_ptr theComponent); - char* ComponentDataType(); - - - char* IORToLocalPersistentID(SALOMEDS::SObject_ptr theSObject, - const char* IORString, - CORBA::Boolean isMultiFile, - CORBA::Boolean isASCII); - char* LocalPersistentIDToIOR(SALOMEDS::SObject_ptr theSObject, - const char* aLocalPersistentID, - CORBA::Boolean isMultiFile, - CORBA::Boolean isASCII); - - bool CanPublishInStudy(CORBA::Object_ptr theIOR); - SALOMEDS::SObject_ptr PublishInStudy(SALOMEDS::Study_ptr theStudy, - SALOMEDS::SObject_ptr theSObject, - CORBA::Object_ptr theObject, - const char* theName) throw (SALOME::SALOME_Exception) ; - - CORBA::Boolean CanCopy(SALOMEDS::SObject_ptr theObject); - SALOMEDS::TMPFile* CopyFrom(SALOMEDS::SObject_ptr theObject, CORBA::Long& theObjectID); - CORBA::Boolean CanPaste(const char* theComponentName, CORBA::Long theObjectID); - SALOMEDS::SObject_ptr PasteInto(const SALOMEDS::TMPFile& theStream, - CORBA::Long theObjectID, - SALOMEDS::SObject_ptr theObject); - - /*! \brief Adds theObject in the study with a name = theName, if - * theFather is not null the object is placed under theFather - */ - SALOMEDS::SObject_ptr AddInStudy (SALOMEDS::Study_ptr theStudy, - GEOM::GEOM_Object_ptr theObject, - const char* theName, - GEOM::GEOM_Object_ptr theFather); - - //-----------------------------------------------------------------------// - // Transaction methods // - //-----------------------------------------------------------------------// - - //Undos one transaction in the document associated with theStudyID - virtual void Undo(CORBA::Long theStudyID); - - //Redos one transaction in the document associated with theStudyID - virtual void Redo(CORBA::Long theStudyID); - - //-----------------------------------------------------------------------// - // Operations methods // - //-----------------------------------------------------------------------// - - //Returns a pointer to BasicOperations interface - virtual GEOM::GEOM_IBasicOperations_ptr GetIBasicOperations (CORBA::Long theStudyID) - throw (SALOME::SALOME_Exception); - - //Returns a pointer to TransformOperations interface - virtual GEOM::GEOM_ITransformOperations_ptr GetITransformOperations (CORBA::Long theStudyID) - throw (SALOME::SALOME_Exception); - - //Returns a pointer to 3DPrimOperations interface - virtual GEOM::GEOM_I3DPrimOperations_ptr GetI3DPrimOperations (CORBA::Long theStudyID) - throw (SALOME::SALOME_Exception); - - //Returns a pointer to ShapesOperations interface - virtual GEOM::GEOM_IShapesOperations_ptr GetIShapesOperations (CORBA::Long theStudyID) - throw (SALOME::SALOME_Exception); - - //Returns a pointer to BlocksOperations interface - virtual GEOM::GEOM_IBlocksOperations_ptr GetIBlocksOperations (CORBA::Long theStudyID) - throw (SALOME::SALOME_Exception); - - //Returns a pointer to BooleanOperations interface - virtual GEOM::GEOM_IBooleanOperations_ptr GetIBooleanOperations (CORBA::Long theStudyID) - throw (SALOME::SALOME_Exception); - - //Returns a pointer to CurvesOperations interface - virtual GEOM::GEOM_ICurvesOperations_ptr GetICurvesOperations (CORBA::Long theStudyID) - throw (SALOME::SALOME_Exception); - - //Returns a pointer to LocalOperations interface - virtual GEOM::GEOM_ILocalOperations_ptr GetILocalOperations (CORBA::Long theStudyID) - throw (SALOME::SALOME_Exception); - - //Returns a pointer to HealingOperations interface - virtual GEOM::GEOM_IHealingOperations_ptr GetIHealingOperations (CORBA::Long theStudyID) - throw (SALOME::SALOME_Exception); - - //Returns a pointer to InsertOperations interface - virtual GEOM::GEOM_IInsertOperations_ptr GetIInsertOperations (CORBA::Long theStudyID) - throw (SALOME::SALOME_Exception); - - //Returns a pointer to MeasureOperations interface - virtual GEOM::GEOM_IMeasureOperations_ptr GetIMeasureOperations (CORBA::Long theStudyID) - throw (SALOME::SALOME_Exception); - - //Returns a pointer to GroupOperations interface - virtual GEOM::GEOM_IGroupOperations_ptr GetIGroupOperations (CORBA::Long theStudyID) - throw (SALOME::SALOME_Exception); - - //Adds a new sub shape - virtual GEOM::GEOM_Object_ptr AddSubShape (GEOM::GEOM_Object_ptr theMainShape, - const GEOM::ListOfLong& theIndices); - - virtual void RemoveObject(GEOM::GEOM_Object_ptr theObject); - - virtual char* GetStringFromIOR(GEOM::GEOM_Object_ptr theObject); - - virtual GEOM::GEOM_Object_ptr GetIORFromString(const char* stringIOR); - - virtual Engines::TMPFile* DumpPython(CORBA::Object_ptr theStudy, - CORBA::Boolean isPublished, - CORBA::Boolean& isValidScript); - - char* GetDumpName (const char* theStudyEntry); - - GEOM::string_array* GetAllDumpNames(); - - //-----------------------------------------------------------------------// - // Internal methods // - //-----------------------------------------------------------------------// - - virtual GEOM::GEOM_Object_ptr GetObject(CORBA::Long theStudyID, const char* theEntry); - - private: - - ::GEOMImpl_Gen* _impl; - SALOME_NamingService * name_service; - char * _name; -}; - -#endif diff --git a/src/GEOM_I/GEOM_I3DPrimOperations_i.cc b/src/GEOM_I/GEOM_I3DPrimOperations_i.cc deleted file mode 100644 index 430982489..000000000 --- a/src/GEOM_I/GEOM_I3DPrimOperations_i.cc +++ /dev/null @@ -1,467 +0,0 @@ -#include - -#include "GEOM_I3DPrimOperations_i.hh" - -#include "utilities.h" -#include "OpUtil.hxx" -#include "Utils_ExceptHandlers.hxx" - -#include "GEOM_Engine.hxx" -#include "GEOM_Object.hxx" - -//============================================================================= -/*! - * constructor: - */ -//============================================================================= -GEOM_I3DPrimOperations_i::GEOM_I3DPrimOperations_i(PortableServer::POA_ptr thePOA, GEOM::GEOM_Gen_ptr theEngine, ::GEOMImpl_I3DPrimOperations* theImpl) -:GEOM_IOperations_i(thePOA, theEngine, theImpl) -{ - MESSAGE("GEOM_I3DPrimOperations_i::GEOM_I3DPrimOperations_i"); -} - -//============================================================================= -/*! - * destructor - */ -//============================================================================= -GEOM_I3DPrimOperations_i::~GEOM_I3DPrimOperations_i() -{ - MESSAGE("GEOM_I3DPrimOperations_i::~GEOM_I3DPrimOperations_i"); -} - - -//============================================================================= -/*! - * MakeBoxDXDYDZ - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeBoxDXDYDZ (CORBA::Double theDX, - CORBA::Double theDY, - CORBA::Double theDZ) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - //Create the Box - Handle(GEOM_Object) anObject = GetOperations()->MakeBoxDXDYDZ(theDX, theDY, theDZ); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeBoxTwoPnt - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeBoxTwoPnt - (GEOM::GEOM_Object_ptr thePnt1, GEOM::GEOM_Object_ptr thePnt2) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (thePnt1 == NULL || thePnt2 == NULL) return aGEOMObject._retn(); - - //Get the reference points - Handle(GEOM_Object) aPnt1 = GetOperations()->GetEngine()->GetObject - (thePnt1->GetStudyID(), thePnt1->GetEntry()); - Handle(GEOM_Object) aPnt2 = GetOperations()->GetEngine()->GetObject - (thePnt2->GetStudyID(), thePnt2->GetEntry()); - - if (aPnt1.IsNull() || aPnt2.IsNull()) return aGEOMObject._retn(); - - //Create the Box - Handle(GEOM_Object) anObject = GetOperations()->MakeBoxTwoPnt(aPnt1, aPnt2); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeCylinderRH - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeCylinderRH (CORBA::Double theR, - CORBA::Double theH) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - //Create the Cylinder - Handle(GEOM_Object) anObject = GetOperations()->MakeCylinderRH(theR, theH); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeCylinderPntVecRH - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeCylinderPntVecRH - (GEOM::GEOM_Object_ptr thePnt, GEOM::GEOM_Object_ptr theVec, - CORBA::Double theR, CORBA::Double theH) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (thePnt == NULL || theVec == NULL) return aGEOMObject._retn(); - - //Get the reference points - Handle(GEOM_Object) aPnt = GetOperations()->GetEngine()->GetObject - (thePnt->GetStudyID(), thePnt->GetEntry()); - Handle(GEOM_Object) aVec = GetOperations()->GetEngine()->GetObject - (theVec->GetStudyID(), theVec->GetEntry()); - - if (aPnt.IsNull() || aVec.IsNull()) return aGEOMObject._retn(); - - //Create the Cylinder - Handle(GEOM_Object) anObject = GetOperations()->MakeCylinderPntVecRH(aPnt, aVec, theR, theH); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeConeR1R2H - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeConeR1R2H (CORBA::Double theR1, - CORBA::Double theR2, - CORBA::Double theH) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - //Create the Cone - Handle(GEOM_Object) anObject = GetOperations()->MakeConeR1R2H(theR1, theR2, theH); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeConePntVecR1R2H - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeConePntVecR1R2H - (GEOM::GEOM_Object_ptr thePnt, GEOM::GEOM_Object_ptr theVec, - CORBA::Double theR1, CORBA::Double theR2, CORBA::Double theH) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (thePnt == NULL || theVec == NULL) return aGEOMObject._retn(); - - //Get the reference points - Handle(GEOM_Object) aPnt = GetOperations()->GetEngine()->GetObject - (thePnt->GetStudyID(), thePnt->GetEntry()); - Handle(GEOM_Object) aVec = GetOperations()->GetEngine()->GetObject - (theVec->GetStudyID(), theVec->GetEntry()); - - if (aPnt.IsNull() || aVec.IsNull()) return aGEOMObject._retn(); - - //Create the Cone - Handle(GEOM_Object) anObject = - GetOperations()->MakeConePntVecR1R2H(aPnt, aVec, theR1, theR2, theH); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeSphereR - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeSphereR (CORBA::Double theR) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - //Create the Cone - Handle(GEOM_Object) anObject = GetOperations()->MakeSphereR(theR); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeSpherePntR - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeSpherePntR - (GEOM::GEOM_Object_ptr thePnt, CORBA::Double theR) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (thePnt == NULL) return aGEOMObject._retn(); - - //Get the reference point - Handle(GEOM_Object) aPnt = GetOperations()->GetEngine()->GetObject - (thePnt->GetStudyID(), thePnt->GetEntry()); - - if (aPnt.IsNull()) return aGEOMObject._retn(); - - //Create the Sphere - Handle(GEOM_Object) anObject = - GetOperations()->MakeSpherePntR(aPnt, theR); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeTorusRR - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeTorusRR - (CORBA::Double theRMajor, CORBA::Double theRMinor) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - // Make Torus - Handle(GEOM_Object) anObject = - GetOperations()->MakeTorusRR(theRMajor, theRMinor); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeTorusPntVecRR - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeTorusPntVecRR - (GEOM::GEOM_Object_ptr thePnt, GEOM::GEOM_Object_ptr theVec, - CORBA::Double theRMajor, CORBA::Double theRMinor) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (thePnt == NULL || theVec == NULL) return aGEOMObject._retn(); - - //Get the reference points - Handle(GEOM_Object) aPnt = GetOperations()->GetEngine()->GetObject - (thePnt->GetStudyID(), thePnt->GetEntry()); - Handle(GEOM_Object) aVec = GetOperations()->GetEngine()->GetObject - (theVec->GetStudyID(), theVec->GetEntry()); - - if (aPnt.IsNull() || aVec.IsNull()) return aGEOMObject._retn(); - - // Make Torus - Handle(GEOM_Object) anObject = - GetOperations()->MakeTorusPntVecRR(aPnt, aVec, theRMajor, theRMinor); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakePrismVecH - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakePrismVecH - (GEOM::GEOM_Object_ptr theBase, GEOM::GEOM_Object_ptr theVec, - CORBA::Double theH) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theBase == NULL || theVec == NULL) return aGEOMObject._retn(); - - //Get the reference objects - Handle(GEOM_Object) aBase = GetOperations()->GetEngine()->GetObject - (theBase->GetStudyID(), theBase->GetEntry()); - Handle(GEOM_Object) aVec = GetOperations()->GetEngine()->GetObject - (theVec->GetStudyID(), theVec->GetEntry()); - - if (aBase.IsNull() || aVec.IsNull()) return aGEOMObject._retn(); - - //Create the Prism - Handle(GEOM_Object) anObject = - GetOperations()->MakePrismVecH(aBase, aVec, theH); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakePrismTwoPnt - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakePrismTwoPnt - (GEOM::GEOM_Object_ptr theBase, - GEOM::GEOM_Object_ptr thePoint1, - GEOM::GEOM_Object_ptr thePoint2) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theBase == NULL || thePoint1 == NULL || thePoint2 == NULL) - return aGEOMObject._retn(); - - //Get the reference objects - Handle(GEOM_Object) aBase = GetOperations()->GetEngine()->GetObject - (theBase->GetStudyID(), theBase->GetEntry()); - Handle(GEOM_Object) aPoint1 = GetOperations()->GetEngine()->GetObject - (thePoint1->GetStudyID(), thePoint1->GetEntry()); - Handle(GEOM_Object) aPoint2 = GetOperations()->GetEngine()->GetObject - (thePoint2->GetStudyID(), thePoint2->GetEntry()); - - if (aBase.IsNull() || aPoint1.IsNull() || aPoint2.IsNull()) - return aGEOMObject._retn(); - - //Create the Prism - Handle(GEOM_Object) anObject = - GetOperations()->MakePrismTwoPnt(aBase, aPoint1, aPoint2); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakePipe - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakePipe - (GEOM::GEOM_Object_ptr theBase, GEOM::GEOM_Object_ptr thePath) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theBase == NULL || thePath == NULL) return aGEOMObject._retn(); - - //Get the reference objects - Handle(GEOM_Object) aBase = GetOperations()->GetEngine()->GetObject - (theBase->GetStudyID(), theBase->GetEntry()); - Handle(GEOM_Object) aPath = GetOperations()->GetEngine()->GetObject - (thePath->GetStudyID(), thePath->GetEntry()); - - if (aBase.IsNull() || aPath.IsNull()) return aGEOMObject._retn(); - - //Create the Pipe - Handle(GEOM_Object) anObject = - GetOperations()->MakePipe(aBase, aPath); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeRevolutionAxisAngle - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeRevolutionAxisAngle - (GEOM::GEOM_Object_ptr theBase, GEOM::GEOM_Object_ptr theAxis, - CORBA::Double theAngle) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theBase == NULL || theAxis == NULL) return aGEOMObject._retn(); - - //Get the reference objects - Handle(GEOM_Object) aBase = GetOperations()->GetEngine()->GetObject - (theBase->GetStudyID(), theBase->GetEntry()); - Handle(GEOM_Object) anAxis = GetOperations()->GetEngine()->GetObject - (theAxis->GetStudyID(), theAxis->GetEntry()); - - if (aBase.IsNull() || anAxis.IsNull()) return aGEOMObject._retn(); - - //Create the Revolution - Handle(GEOM_Object) anObject = - GetOperations()->MakeRevolutionAxisAngle(aBase, anAxis, theAngle); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeFilling - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeFilling(GEOM::GEOM_Object_ptr theShape, - CORBA::Long theMinDeg, - CORBA::Long theMaxDeg, - CORBA::Double theTol2D, - CORBA::Double theTol3D, - CORBA::Long theNbIter) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theShape == NULL) return aGEOMObject._retn(); - - //Get the reference objects - Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - - if (aShape.IsNull()) return aGEOMObject._retn(); - - //Create the Solid - Handle(GEOM_Object) anObject = GetOperations()->MakeFilling(aShape, theMinDeg, theMaxDeg, theTol2D, theTol3D, theNbIter); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} diff --git a/src/GEOM_I/GEOM_I3DPrimOperations_i.hh b/src/GEOM_I/GEOM_I3DPrimOperations_i.hh deleted file mode 100644 index bcd42446a..000000000 --- a/src/GEOM_I/GEOM_I3DPrimOperations_i.hh +++ /dev/null @@ -1,82 +0,0 @@ - -#ifndef _GEOM_I3DPrimOperations_i_HeaderFile -#define _GEOM_I3DPrimOperations_i_HeaderFile - - -#include - -#include CORBA_SERVER_HEADER(GEOM_Gen) -#include "GEOM_IOperations_i.hh" -#include "GEOM_Object_i.hh" - -#include "GEOMImpl_I3DPrimOperations.hxx" - -class GEOM_I3DPrimOperations_i : - public virtual POA_GEOM::GEOM_I3DPrimOperations, - public virtual GEOM_IOperations_i -{ - public: - GEOM_I3DPrimOperations_i (PortableServer::POA_ptr thePOA, GEOM::GEOM_Gen_ptr theEngine, - ::GEOMImpl_I3DPrimOperations* theImpl); - ~GEOM_I3DPrimOperations_i(); - - GEOM::GEOM_Object_ptr MakeBoxDXDYDZ (CORBA::Double theDX, - CORBA::Double theDY, - CORBA::Double theDZ); - - GEOM::GEOM_Object_ptr MakeBoxTwoPnt (GEOM::GEOM_Object_ptr thePnt1, - GEOM::GEOM_Object_ptr thePnt2); - - GEOM::GEOM_Object_ptr MakeCylinderRH (CORBA::Double theR, - CORBA::Double theH); - - GEOM::GEOM_Object_ptr MakeCylinderPntVecRH (GEOM::GEOM_Object_ptr thePnt, - GEOM::GEOM_Object_ptr theVec, - CORBA::Double theR, - CORBA::Double theH); - - GEOM::GEOM_Object_ptr MakeConeR1R2H (CORBA::Double theR1, - CORBA::Double theR2, - CORBA::Double theH); - - GEOM::GEOM_Object_ptr MakeConePntVecR1R2H (GEOM::GEOM_Object_ptr thePnt, - GEOM::GEOM_Object_ptr theVec, - CORBA::Double theR1, - CORBA::Double theR2, - CORBA::Double theH); - - GEOM::GEOM_Object_ptr MakeSphereR (CORBA::Double theR); - - GEOM::GEOM_Object_ptr MakeSpherePntR (GEOM::GEOM_Object_ptr thePnt, - CORBA::Double theR); - - GEOM::GEOM_Object_ptr MakeTorusRR (CORBA::Double theRMajor, - CORBA::Double theRMinor); - - GEOM::GEOM_Object_ptr MakeTorusPntVecRR (GEOM::GEOM_Object_ptr theCenter, - GEOM::GEOM_Object_ptr theVector, - CORBA::Double theRMajor, - CORBA::Double theRMinor); - - GEOM::GEOM_Object_ptr MakePrismVecH (GEOM::GEOM_Object_ptr theBase, - GEOM::GEOM_Object_ptr theVec, - CORBA::Double theH); - - GEOM::GEOM_Object_ptr MakePrismTwoPnt (GEOM::GEOM_Object_ptr theBase, - GEOM::GEOM_Object_ptr thePoint1, - GEOM::GEOM_Object_ptr thePoint2); - - GEOM::GEOM_Object_ptr MakePipe (GEOM::GEOM_Object_ptr theBase, - GEOM::GEOM_Object_ptr thePath); - - GEOM::GEOM_Object_ptr MakeRevolutionAxisAngle (GEOM::GEOM_Object_ptr theBase, - GEOM::GEOM_Object_ptr theAxis, - CORBA::Double theAngle); - - GEOM::GEOM_Object_ptr MakeFilling(GEOM::GEOM_Object_ptr theShape, CORBA::Long theMinDeg, CORBA::Long theMaxDeg, CORBA::Double theTol2D, CORBA::Double theTol3D, CORBA::Long theNbIter); - - ::GEOMImpl_I3DPrimOperations* GetOperations() - { return (::GEOMImpl_I3DPrimOperations*)GetImpl(); } -}; - -#endif diff --git a/src/GEOM_I/GEOM_IBasicOperations_i.cc b/src/GEOM_I/GEOM_IBasicOperations_i.cc deleted file mode 100644 index 7ad068544..000000000 --- a/src/GEOM_I/GEOM_IBasicOperations_i.cc +++ /dev/null @@ -1,371 +0,0 @@ -#include - -#include "GEOM_IBasicOperations_i.hh" - -#include "utilities.h" -#include "OpUtil.hxx" -#include "Utils_ExceptHandlers.hxx" - -#include "GEOM_Engine.hxx" -#include "GEOM_Object.hxx" - -//============================================================================= -/*! - * constructor: - */ -//============================================================================= -GEOM_IBasicOperations_i::GEOM_IBasicOperations_i (PortableServer::POA_ptr thePOA, - GEOM::GEOM_Gen_ptr theEngine, - ::GEOMImpl_IBasicOperations* theImpl) - :GEOM_IOperations_i(thePOA, theEngine, theImpl) -{ - MESSAGE("GEOM_IBasicOperations_i::GEOM_IBasicOperations_i"); -} - -//============================================================================= -/*! - * destructor - */ -//============================================================================= -GEOM_IBasicOperations_i::~GEOM_IBasicOperations_i() -{ - MESSAGE("GEOM_IBasicOperations_i::~GEOM_IBasicOperations_i"); -} - - -//============================================================================= -/*! - * MakePointXYZ - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointXYZ - (CORBA::Double theX, CORBA::Double theY, CORBA::Double theZ) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - //Create the point - - Handle(GEOM_Object) anObject = GetOperations()->MakePointXYZ(theX, theY, theZ); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakePointWithReference - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointWithReference - (GEOM::GEOM_Object_ptr theReference, CORBA::Double theX, CORBA::Double theY, CORBA::Double theZ) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if(theReference == NULL) return aGEOMObject._retn(); - - //Get the reference point - - Handle(GEOM_Object) aRefernce = GetOperations()->GetEngine()->GetObject - (theReference->GetStudyID(), theReference->GetEntry()); - if (aRefernce.IsNull()) return aGEOMObject._retn(); - - //Create the point - - Handle(GEOM_Object) anObject = - GetOperations()->MakePointWithReference(aRefernce, theX, theY, theZ); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakePointOnCurve - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointOnCurve - (GEOM::GEOM_Object_ptr theCurve, CORBA::Double theParameter) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theCurve == NULL) return aGEOMObject._retn(); - - //Get the reference curve - - Handle(GEOM_Object) aRefernce = GetOperations()->GetEngine()->GetObject - (theCurve->GetStudyID(), theCurve->GetEntry()); - if (aRefernce.IsNull()) return aGEOMObject._retn(); - - //Create the point - - Handle(GEOM_Object) anObject = - GetOperations()->MakePointOnCurve(aRefernce, theParameter); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - - -//============================================================================= -/*! - * MakeVectorDXDYDZ - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeVectorDXDYDZ - (CORBA::Double theDX, CORBA::Double theDY, CORBA::Double theDZ) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - //Create the Vector - - Handle(GEOM_Object) anObject = GetOperations()->MakeVectorDXDYDZ(theDX, theDY, theDZ); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeVectorTwoPnt - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeVectorTwoPnt - (GEOM::GEOM_Object_ptr thePnt1, GEOM::GEOM_Object_ptr thePnt2) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (thePnt1 == NULL || thePnt2 == NULL) return aGEOMObject._retn(); - - //Get the reference points - - Handle(GEOM_Object) aRef1 = GetOperations()->GetEngine()->GetObject - (thePnt1->GetStudyID(), thePnt1->GetEntry()); - Handle(GEOM_Object) aRef2 = GetOperations()->GetEngine()->GetObject - (thePnt2->GetStudyID(), thePnt2->GetEntry()); - if (aRef1.IsNull() || aRef2.IsNull()) return aGEOMObject._retn(); - - //Create the vector - - Handle(GEOM_Object) anObject = - GetOperations()->MakeVectorTwoPnt(aRef1, aRef2); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - - -//============================================================================= -/*! - * MakeLine - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeLine - (GEOM::GEOM_Object_ptr thePnt, GEOM::GEOM_Object_ptr theDir) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (thePnt == NULL || theDir == NULL) return aGEOMObject._retn(); - - //Get the reference objects - - Handle(GEOM_Object) aRef1 = GetOperations()->GetEngine()->GetObject - (thePnt->GetStudyID(), thePnt->GetEntry()); - Handle(GEOM_Object) aRef2 = GetOperations()->GetEngine()->GetObject - (theDir->GetStudyID(), theDir->GetEntry()); - if (aRef1.IsNull() || aRef2.IsNull()) return aGEOMObject._retn(); - - //Create the Line - - Handle(GEOM_Object) anObject = - GetOperations()->MakeLine(aRef1, aRef2); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeLineTwoPnt - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeLineTwoPnt - (GEOM::GEOM_Object_ptr thePnt1, GEOM::GEOM_Object_ptr thePnt2) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (thePnt1 == NULL || thePnt2 == NULL) return aGEOMObject._retn(); - - //Get the reference points - - Handle(GEOM_Object) aRef1 = GetOperations()->GetEngine()->GetObject - (thePnt1->GetStudyID(), thePnt1->GetEntry()); - Handle(GEOM_Object) aRef2 = GetOperations()->GetEngine()->GetObject - (thePnt2->GetStudyID(), thePnt2->GetEntry()); - if (aRef1.IsNull() || aRef2.IsNull()) return aGEOMObject._retn(); - - //Create the Line - - Handle(GEOM_Object) anObject = - GetOperations()->MakeLineTwoPnt(aRef1, aRef2); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - - -//============================================================================= -/*! - * MakePlanePntVec - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePlanePntVec - (GEOM::GEOM_Object_ptr thePnt, GEOM::GEOM_Object_ptr theVec, - CORBA::Double theTrimSize) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (thePnt == NULL || theVec == NULL) return aGEOMObject._retn(); - - //Get the references - - Handle(GEOM_Object) aRef1 = GetOperations()->GetEngine()->GetObject - (thePnt->GetStudyID(), thePnt->GetEntry()); - Handle(GEOM_Object) aRef2 = GetOperations()->GetEngine()->GetObject - (theVec->GetStudyID(), theVec->GetEntry()); - if (aRef1.IsNull() || aRef2.IsNull()) return aGEOMObject._retn(); - - //Create the plane - - Handle(GEOM_Object) anObject = - GetOperations()->MakePlanePntVec(aRef1, aRef2, theTrimSize); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakePlaneThreePnt - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePlaneThreePnt - (GEOM::GEOM_Object_ptr thePnt1, GEOM::GEOM_Object_ptr thePnt2, - GEOM::GEOM_Object_ptr thePnt3, CORBA::Double theTrimSize) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (thePnt1 == NULL || thePnt2 == NULL || thePnt3 == NULL) - return aGEOMObject._retn(); - - //Get the reference points - - Handle(GEOM_Object) aRef1 = GetOperations()->GetEngine()->GetObject - (thePnt1->GetStudyID(), thePnt1->GetEntry()); - Handle(GEOM_Object) aRef2 = GetOperations()->GetEngine()->GetObject - (thePnt2->GetStudyID(), thePnt2->GetEntry()); - Handle(GEOM_Object) aRef3 = GetOperations()->GetEngine()->GetObject - (thePnt3->GetStudyID(), thePnt3->GetEntry()); - if (aRef1.IsNull() || aRef2.IsNull() || aRef3.IsNull()) - return aGEOMObject._retn(); - - //Create the plane - - Handle(GEOM_Object) anObject = - GetOperations()->MakePlaneThreePnt(aRef1, aRef2, aRef3, theTrimSize); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakePlaneFace - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePlaneFace - (GEOM::GEOM_Object_ptr theFace, CORBA::Double theTrimSize) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theFace == NULL) return aGEOMObject._retn(); - - //Get the reference face - - Handle(GEOM_Object) aRef = GetOperations()->GetEngine()->GetObject - (theFace->GetStudyID(), theFace->GetEntry()); - if (aRef.IsNull()) return aGEOMObject._retn(); - - //Create the plane - - Handle(GEOM_Object) anObject = - GetOperations()->MakePlaneFace(aRef, theTrimSize); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - - -//============================================================================= -/*! - * MakeMarker - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeMarker - (CORBA::Double theOX , CORBA::Double theOY , CORBA::Double theOZ, - CORBA::Double theXDX, CORBA::Double theXDY, CORBA::Double theXDZ, - CORBA::Double theYDX, CORBA::Double theYDY, CORBA::Double theYDZ) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - //Create the point - Handle(GEOM_Object) anObject = GetOperations()->MakeMarker(theOX , theOY , theOZ, - theXDX, theXDY, theXDZ, - theYDX, theYDY, theYDZ); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} diff --git a/src/GEOM_I/GEOM_IBasicOperations_i.hh b/src/GEOM_I/GEOM_IBasicOperations_i.hh deleted file mode 100644 index 5bedb15a9..000000000 --- a/src/GEOM_I/GEOM_IBasicOperations_i.hh +++ /dev/null @@ -1,68 +0,0 @@ - -#ifndef _GEOM_IBasicOperations_i_HeaderFile -#define _GEOM_IBasicOperations_i_HeaderFile - - -#include - -#include CORBA_SERVER_HEADER(GEOM_Gen) -#include "GEOM_IOperations_i.hh" -#include "GEOM_Object_i.hh" - -#include "GEOMImpl_IBasicOperations.hxx" - -class GEOM_IBasicOperations_i : - public virtual POA_GEOM::GEOM_IBasicOperations, - public virtual GEOM_IOperations_i -{ - public: - GEOM_IBasicOperations_i (PortableServer::POA_ptr thePOA, - GEOM::GEOM_Gen_ptr theEngine, - ::GEOMImpl_IBasicOperations* theImpl); - ~GEOM_IBasicOperations_i(); - - GEOM::GEOM_Object_ptr MakePointXYZ (CORBA::Double theX, - CORBA::Double theY, - CORBA::Double theZ); - - GEOM::GEOM_Object_ptr MakePointWithReference (GEOM::GEOM_Object_ptr theReference, - CORBA::Double theX, - CORBA::Double theY, - CORBA::Double theZ); - - GEOM::GEOM_Object_ptr MakePointOnCurve (GEOM::GEOM_Object_ptr theCurve, - CORBA::Double theParameter); - - GEOM::GEOM_Object_ptr MakeVectorDXDYDZ (CORBA::Double theDX, - CORBA::Double theDY, - CORBA::Double theDZ); - - GEOM::GEOM_Object_ptr MakeVectorTwoPnt (GEOM::GEOM_Object_ptr thePnt1, - GEOM::GEOM_Object_ptr thePnt2); - - GEOM::GEOM_Object_ptr MakeLine (GEOM::GEOM_Object_ptr thePnt, - GEOM::GEOM_Object_ptr theDir); - - GEOM::GEOM_Object_ptr MakeLineTwoPnt (GEOM::GEOM_Object_ptr thePnt1, - GEOM::GEOM_Object_ptr thePnt2); - - GEOM::GEOM_Object_ptr MakePlaneThreePnt (GEOM::GEOM_Object_ptr thePnt1, - GEOM::GEOM_Object_ptr thePnt2, - GEOM::GEOM_Object_ptr thePnt3, - CORBA::Double theTrimSize); - - GEOM::GEOM_Object_ptr MakePlanePntVec (GEOM::GEOM_Object_ptr thePnt, - GEOM::GEOM_Object_ptr theVec, - CORBA::Double theTrimSize); - - GEOM::GEOM_Object_ptr MakePlaneFace (GEOM::GEOM_Object_ptr theFace, - CORBA::Double theTrimSize); - - GEOM::GEOM_Object_ptr MakeMarker (CORBA::Double theOX , CORBA::Double theOY , CORBA::Double theOZ, - CORBA::Double theXDX, CORBA::Double theXDY, CORBA::Double theXDZ, - CORBA::Double theYDX, CORBA::Double theYDY, CORBA::Double theYDZ); - - ::GEOMImpl_IBasicOperations* GetOperations() { return (::GEOMImpl_IBasicOperations*)GetImpl(); } -}; - -#endif diff --git a/src/GEOM_I/GEOM_IBlocksOperations_i.cc b/src/GEOM_I/GEOM_IBlocksOperations_i.cc deleted file mode 100644 index a6965e83b..000000000 --- a/src/GEOM_I/GEOM_IBlocksOperations_i.cc +++ /dev/null @@ -1,1037 +0,0 @@ -#include - -#include "GEOM_IBlocksOperations_i.hh" - -#include "utilities.h" -#include "OpUtil.hxx" -#include "Utils_ExceptHandlers.hxx" - -#include "GEOM_Engine.hxx" -#include "GEOM_Object.hxx" - -#include -#include - -//============================================================================= -/*! - * constructor: - */ -//============================================================================= -GEOM_IBlocksOperations_i::GEOM_IBlocksOperations_i (PortableServer::POA_ptr thePOA, - GEOM::GEOM_Gen_ptr theEngine, - ::GEOMImpl_IBlocksOperations* theImpl) -:GEOM_IOperations_i(thePOA, theEngine, theImpl) -{ - MESSAGE("GEOM_IBlocksOperations_i::GEOM_IBlocksOperations_i"); -} - -//============================================================================= -/*! - * destructor - */ -//============================================================================= -GEOM_IBlocksOperations_i::~GEOM_IBlocksOperations_i() -{ - MESSAGE("GEOM_IBlocksOperations_i::~GEOM_IBlocksOperations_i"); -} - - -//============================================================================= -/*! - * MakeQuad - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::MakeQuad - (GEOM::GEOM_Object_ptr theEdge1, GEOM::GEOM_Object_ptr theEdge2, - GEOM::GEOM_Object_ptr theEdge3, GEOM::GEOM_Object_ptr theEdge4) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theEdge1 == NULL || theEdge2 == NULL || - theEdge3 == NULL || theEdge4 == NULL) return aGEOMObject._retn(); - - //Get the reference edges - Handle(GEOM_Object) anEdge1 = GetOperations()->GetEngine()->GetObject - (theEdge1->GetStudyID(), theEdge1->GetEntry()); - Handle(GEOM_Object) anEdge2 = GetOperations()->GetEngine()->GetObject - (theEdge2->GetStudyID(), theEdge2->GetEntry()); - Handle(GEOM_Object) anEdge3 = GetOperations()->GetEngine()->GetObject - (theEdge3->GetStudyID(), theEdge3->GetEntry()); - Handle(GEOM_Object) anEdge4 = GetOperations()->GetEngine()->GetObject - (theEdge4->GetStudyID(), theEdge4->GetEntry()); - - if (anEdge1.IsNull() || anEdge2.IsNull() || - anEdge3.IsNull() || anEdge4.IsNull()) return aGEOMObject._retn(); - - //Create the Face - Handle(GEOM_Object) anObject = - GetOperations()->MakeQuad(anEdge1, anEdge2, anEdge3, anEdge4); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeQuad2Edges - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::MakeQuad2Edges - (GEOM::GEOM_Object_ptr theEdge1, GEOM::GEOM_Object_ptr theEdge2) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theEdge1 == NULL || theEdge2 == NULL) return aGEOMObject._retn(); - - //Get the reference edges - Handle(GEOM_Object) anEdge1 = GetOperations()->GetEngine()->GetObject - (theEdge1->GetStudyID(), theEdge1->GetEntry()); - Handle(GEOM_Object) anEdge2 = GetOperations()->GetEngine()->GetObject - (theEdge2->GetStudyID(), theEdge2->GetEntry()); - - if (anEdge1.IsNull() || anEdge2.IsNull()) return aGEOMObject._retn(); - - //Create the Face - Handle(GEOM_Object) anObject = - GetOperations()->MakeQuad2Edges(anEdge1, anEdge2); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeQuad4Vertices - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::MakeQuad4Vertices - (GEOM::GEOM_Object_ptr thePnt1, GEOM::GEOM_Object_ptr thePnt2, - GEOM::GEOM_Object_ptr thePnt3, GEOM::GEOM_Object_ptr thePnt4) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (thePnt1 == NULL || thePnt2 == NULL || - thePnt3 == NULL || thePnt4 == NULL) return aGEOMObject._retn(); - - //Get the reference points - Handle(GEOM_Object) aPnt1 = GetOperations()->GetEngine()->GetObject - (thePnt1->GetStudyID(), thePnt1->GetEntry()); - Handle(GEOM_Object) aPnt2 = GetOperations()->GetEngine()->GetObject - (thePnt2->GetStudyID(), thePnt2->GetEntry()); - Handle(GEOM_Object) aPnt3 = GetOperations()->GetEngine()->GetObject - (thePnt3->GetStudyID(), thePnt3->GetEntry()); - Handle(GEOM_Object) aPnt4 = GetOperations()->GetEngine()->GetObject - (thePnt4->GetStudyID(), thePnt4->GetEntry()); - - if (aPnt1.IsNull() || aPnt2.IsNull() || - aPnt3.IsNull() || aPnt4.IsNull()) return aGEOMObject._retn(); - - //Create the Face - Handle(GEOM_Object) anObject = - GetOperations()->MakeQuad4Vertices(aPnt1, aPnt2, aPnt3, aPnt4); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeHexa - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::MakeHexa - (GEOM::GEOM_Object_ptr theFace1, GEOM::GEOM_Object_ptr theFace2, - GEOM::GEOM_Object_ptr theFace3, GEOM::GEOM_Object_ptr theFace4, - GEOM::GEOM_Object_ptr theFace5, GEOM::GEOM_Object_ptr theFace6) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theFace1 == NULL || theFace2 == NULL || - theFace3 == NULL || theFace4 == NULL || - theFace5 == NULL || theFace6 == NULL) return aGEOMObject._retn(); - - //Get the reference Faces - Handle(GEOM_Object) anFace1 = GetOperations()->GetEngine()->GetObject - (theFace1->GetStudyID(), theFace1->GetEntry()); - Handle(GEOM_Object) anFace2 = GetOperations()->GetEngine()->GetObject - (theFace2->GetStudyID(), theFace2->GetEntry()); - Handle(GEOM_Object) anFace3 = GetOperations()->GetEngine()->GetObject - (theFace3->GetStudyID(), theFace3->GetEntry()); - Handle(GEOM_Object) anFace4 = GetOperations()->GetEngine()->GetObject - (theFace4->GetStudyID(), theFace4->GetEntry()); - Handle(GEOM_Object) anFace5 = GetOperations()->GetEngine()->GetObject - (theFace5->GetStudyID(), theFace5->GetEntry()); - Handle(GEOM_Object) anFace6 = GetOperations()->GetEngine()->GetObject - (theFace6->GetStudyID(), theFace6->GetEntry()); - - if (anFace1.IsNull() || anFace2.IsNull() || - anFace3.IsNull() || anFace4.IsNull() || - anFace5.IsNull() || anFace6.IsNull()) return aGEOMObject._retn(); - - //Create the Face - Handle(GEOM_Object) anObject = GetOperations()->MakeHexa - (anFace1, anFace2, anFace3, anFace4, anFace5, anFace6); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeHexa2Faces - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::MakeHexa2Faces - (GEOM::GEOM_Object_ptr theFace1, GEOM::GEOM_Object_ptr theFace2) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theFace1 == NULL || theFace2 == NULL) return aGEOMObject._retn(); - - //Get the reference Faces - Handle(GEOM_Object) anFace1 = GetOperations()->GetEngine()->GetObject - (theFace1->GetStudyID(), theFace1->GetEntry()); - Handle(GEOM_Object) anFace2 = GetOperations()->GetEngine()->GetObject - (theFace2->GetStudyID(), theFace2->GetEntry()); - - if (anFace1.IsNull() || anFace2.IsNull()) return aGEOMObject._retn(); - - //Create the Face - Handle(GEOM_Object) anObject = - GetOperations()->MakeHexa2Faces(anFace1, anFace2); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeBlockCompound - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::MakeBlockCompound - (GEOM::GEOM_Object_ptr theCompound) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theCompound == NULL) return aGEOMObject._retn(); - - //Get the reference Compound - Handle(GEOM_Object) aCompound = GetOperations()->GetEngine()->GetObject - (theCompound->GetStudyID(), theCompound->GetEntry()); - - if (aCompound.IsNull()) return aGEOMObject._retn(); - - //Create the Blocks Compound - Handle(GEOM_Object) anObject = - GetOperations()->MakeBlockCompound(aCompound); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * GetPoint - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::GetPoint (GEOM::GEOM_Object_ptr theShape, - const CORBA::Double theX, - const CORBA::Double theY, - const CORBA::Double theZ, - const CORBA::Double theEpsilon) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theShape == NULL) return aGEOMObject._retn(); - - //Get the reference Objects - Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - - if (aShape.IsNull()) return aGEOMObject._retn(); - - //Create the Point - Handle(GEOM_Object) anObject = - GetOperations()->GetPoint(aShape, theX, theY, theZ, theEpsilon); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * GetEdge - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::GetEdge (GEOM::GEOM_Object_ptr theShape, - GEOM::GEOM_Object_ptr thePoint1, - GEOM::GEOM_Object_ptr thePoint2) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theShape == NULL || - thePoint1 == NULL || thePoint2 == NULL) return aGEOMObject._retn(); - - //Get the reference Objects - Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - Handle(GEOM_Object) aPoint1 = GetOperations()->GetEngine()->GetObject - (thePoint1->GetStudyID(), thePoint1->GetEntry()); - Handle(GEOM_Object) aPoint2 = GetOperations()->GetEngine()->GetObject - (thePoint2->GetStudyID(), thePoint2->GetEntry()); - - if (aShape.IsNull() || - aPoint1.IsNull() || aPoint2.IsNull()) return aGEOMObject._retn(); - - //Create the Point - Handle(GEOM_Object) anObject = - GetOperations()->GetEdge(aShape, aPoint1, aPoint2); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * GetEdgeNearPoint - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::GetEdgeNearPoint (GEOM::GEOM_Object_ptr theShape, - GEOM::GEOM_Object_ptr thePoint) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theShape == NULL || thePoint == NULL) return aGEOMObject._retn(); - - //Get the reference Objects - Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - Handle(GEOM_Object) aPoint = GetOperations()->GetEngine()->GetObject - (thePoint->GetStudyID(), thePoint->GetEntry()); - - if (aShape.IsNull() || aPoint.IsNull()) return aGEOMObject._retn(); - - //Create the Edge - Handle(GEOM_Object) anObject = - GetOperations()->GetEdgeNearPoint(aShape, aPoint); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * GetFaceByPoints - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::GetFaceByPoints - (GEOM::GEOM_Object_ptr theShape, - GEOM::GEOM_Object_ptr thePoint1, - GEOM::GEOM_Object_ptr thePoint2, - GEOM::GEOM_Object_ptr thePoint3, - GEOM::GEOM_Object_ptr thePoint4) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theShape == NULL || - thePoint1 == NULL || thePoint2 == NULL || - thePoint3 == NULL || thePoint4 == NULL) return aGEOMObject._retn(); - - //Get the reference Objects - Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - Handle(GEOM_Object) aPoint1 = GetOperations()->GetEngine()->GetObject - (thePoint1->GetStudyID(), thePoint1->GetEntry()); - Handle(GEOM_Object) aPoint2 = GetOperations()->GetEngine()->GetObject - (thePoint2->GetStudyID(), thePoint2->GetEntry()); - Handle(GEOM_Object) aPoint3 = GetOperations()->GetEngine()->GetObject - (thePoint3->GetStudyID(), thePoint3->GetEntry()); - Handle(GEOM_Object) aPoint4 = GetOperations()->GetEngine()->GetObject - (thePoint4->GetStudyID(), thePoint4->GetEntry()); - - if (aShape.IsNull() || - aPoint1.IsNull() || aPoint2.IsNull() || - aPoint3.IsNull() || aPoint4.IsNull()) return aGEOMObject._retn(); - - //Create the Face - Handle(GEOM_Object) anObject = - GetOperations()->GetFaceByPoints(aShape, aPoint1, aPoint2, aPoint3, aPoint4); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * GetFaceByEdges - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::GetFaceByEdges - (GEOM::GEOM_Object_ptr theShape, - GEOM::GEOM_Object_ptr theEdge1, - GEOM::GEOM_Object_ptr theEdge2) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theShape == NULL || - theEdge1 == NULL || theEdge2 == NULL) return aGEOMObject._retn(); - - //Get the reference Objects - Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - Handle(GEOM_Object) anEdge1 = GetOperations()->GetEngine()->GetObject - (theEdge1->GetStudyID(), theEdge1->GetEntry()); - Handle(GEOM_Object) anEdge2 = GetOperations()->GetEngine()->GetObject - (theEdge2->GetStudyID(), theEdge2->GetEntry()); - - if (aShape.IsNull() || - anEdge1.IsNull() || anEdge2.IsNull()) return aGEOMObject._retn(); - - //Create the Face - Handle(GEOM_Object) anObject = - GetOperations()->GetFaceByEdges(aShape, anEdge1, anEdge2); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * GetOppositeFace - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::GetOppositeFace (GEOM::GEOM_Object_ptr theShape, - GEOM::GEOM_Object_ptr theFace) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theShape == NULL || theFace == NULL) return aGEOMObject._retn(); - - //Get the reference Objects - Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - Handle(GEOM_Object) aFace = GetOperations()->GetEngine()->GetObject - (theFace->GetStudyID(), theFace->GetEntry()); - - if (aShape.IsNull() || aFace.IsNull()) return aGEOMObject._retn(); - - //Create the Face - Handle(GEOM_Object) anObject = - GetOperations()->GetOppositeFace(aShape, aFace); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * GetFaceNearPoint - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::GetFaceNearPoint (GEOM::GEOM_Object_ptr theShape, - GEOM::GEOM_Object_ptr thePoint) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theShape == NULL || thePoint == NULL) return aGEOMObject._retn(); - - //Get the reference Objects - Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - Handle(GEOM_Object) aPoint = GetOperations()->GetEngine()->GetObject - (thePoint->GetStudyID(), thePoint->GetEntry()); - - if (aShape.IsNull() || aPoint.IsNull()) return aGEOMObject._retn(); - - //Create the Face - Handle(GEOM_Object) anObject = - GetOperations()->GetFaceNearPoint(aShape, aPoint); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * GetFaceByNormale - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::GetFaceByNormale (GEOM::GEOM_Object_ptr theShape, - GEOM::GEOM_Object_ptr theVector) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theShape == NULL || theVector == NULL) return aGEOMObject._retn(); - - //Get the reference Objects - Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - Handle(GEOM_Object) aVector = GetOperations()->GetEngine()->GetObject - (theVector->GetStudyID(), theVector->GetEntry()); - - if (aShape.IsNull() || aVector.IsNull()) return aGEOMObject._retn(); - - //Create the Face - Handle(GEOM_Object) anObject = - GetOperations()->GetFaceByNormale(aShape, aVector); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * ExplodeCompoundOfBlocks - */ -//============================================================================= -GEOM::ListOfGO* GEOM_IBlocksOperations_i::ExplodeCompoundOfBlocks - (GEOM::GEOM_Object_ptr theCompound, - const CORBA::Long theMinNbFaces, - const CORBA::Long theMaxNbFaces) -{ - GEOM::ListOfGO_var aSeq = new GEOM::ListOfGO; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theCompound == NULL) return aSeq._retn(); - - //Get the reference Compound - Handle(GEOM_Object) aCompound = GetOperations()->GetEngine()->GetObject - (theCompound->GetStudyID(), theCompound->GetEntry()); - - if (aCompound.IsNull()) return aSeq._retn(); - - //Explode - Handle(TColStd_HSequenceOfTransient) aHSeq = - GetOperations()->ExplodeCompoundOfBlocks(aCompound, theMinNbFaces, theMaxNbFaces); - if (!GetOperations()->IsDone() || aHSeq.IsNull()) - return aSeq._retn(); - - Standard_Integer aLength = aHSeq->Length(); - aSeq->length(aLength); - for (Standard_Integer i = 1; i <= aLength; i++) - aSeq[i-1] = GetObject(Handle(GEOM_Object)::DownCast(aHSeq->Value(i))); - - return aSeq._retn(); -} - -//============================================================================= -/*! - * IsCompoundOfBlocks - */ -//============================================================================= -CORBA::Boolean GEOM_IBlocksOperations_i::IsCompoundOfBlocks - (GEOM::GEOM_Object_ptr theCompound, - const CORBA::Long theMinNbFaces, - const CORBA::Long theMaxNbFaces, - CORBA::Long& theNbBlocks) -{ - theNbBlocks = 0; - CORBA::Boolean isComp = false; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theCompound == NULL) return isComp; - - //Get the reference Compound - Handle(GEOM_Object) aCompound = GetOperations()->GetEngine()->GetObject - (theCompound->GetStudyID(), theCompound->GetEntry()); - - if (aCompound.IsNull()) return isComp; - - //Check - Standard_Integer nbBlocks = 0; - isComp = GetOperations()->IsCompoundOfBlocks(aCompound, - theMinNbFaces, - theMaxNbFaces, - nbBlocks); - if (!GetOperations()->IsDone()) - return isComp; - - theNbBlocks = nbBlocks; - return isComp; -} - -//============================================================================= -/*! - * CheckCompoundOfBlocks - */ -//============================================================================= -CORBA::Boolean GEOM_IBlocksOperations_i::CheckCompoundOfBlocks - (GEOM::GEOM_Object_ptr theCompound, - GEOM::GEOM_IBlocksOperations::BCErrors_out theErrors) -{ - CORBA::Boolean isComp = false; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theCompound == NULL) return isComp; - - //Get the reference Compound - Handle(GEOM_Object) aCompound = GetOperations()->GetEngine()->GetObject - (theCompound->GetStudyID(), theCompound->GetEntry()); - - if (aCompound.IsNull()) return isComp; - - //Check - list errList; - isComp = GetOperations()->CheckCompoundOfBlocks(aCompound, errList); - if (!GetOperations()->IsDone()) - return isComp; - - const int nbErr = errList.size(); - GEOM::GEOM_IBlocksOperations::BCErrors_var anErrArray = - new GEOM::GEOM_IBlocksOperations::BCErrors(); - anErrArray->length(nbErr); - - // fill the local CORBA array with values from lists - list::iterator errIt = errList.begin(); - int i = 0; - for (; errIt != errList.end(); i++, errIt++) { - GEOM::GEOM_IBlocksOperations::BCError_var anError = - new GEOM::GEOM_IBlocksOperations::BCError(); - - GEOMImpl_IBlocksOperations::BCError errStruct = *errIt; - - switch (errStruct.error) { - case GEOMImpl_IBlocksOperations::NOT_BLOCK: - anError->error = GEOM::GEOM_IBlocksOperations::NOT_BLOCK; - break; - case GEOMImpl_IBlocksOperations::EXTRA_EDGE: - anError->error = GEOM::GEOM_IBlocksOperations::EXTRA_EDGE; - break; - case GEOMImpl_IBlocksOperations::INVALID_CONNECTION: - anError->error = GEOM::GEOM_IBlocksOperations::INVALID_CONNECTION; - break; - case GEOMImpl_IBlocksOperations::NOT_CONNECTED: - anError->error = GEOM::GEOM_IBlocksOperations::NOT_CONNECTED; - break; - case GEOMImpl_IBlocksOperations::NOT_GLUED: - anError->error = GEOM::GEOM_IBlocksOperations::NOT_GLUED; - break; - default: - break; - } - - list sshList = errStruct.incriminated; - GEOM::ListOfLong_var anIncrims = new GEOM::ListOfLong(); - anIncrims->length(sshList.size()); - - list::iterator sshIt = sshList.begin(); - int jj = 0; - for (; sshIt != sshList.end(); jj++, sshIt++) { - anIncrims[jj] = *sshIt; - } - - anError->incriminated = anIncrims; - - anErrArray[i] = anError; - } - - // initialize out-parameter with local array - theErrors = anErrArray._retn(); - - return isComp; -} - -//============================================================================= -/*! - * PrintBCErrors - */ -//============================================================================= -char* GEOM_IBlocksOperations_i::PrintBCErrors - (GEOM::GEOM_Object_ptr theCompound, - const GEOM::GEOM_IBlocksOperations::BCErrors& theErrors) -{ - //Get the reference Compound - if (theCompound == NULL) return NULL; - Handle(GEOM_Object) aCompound = GetOperations()->GetEngine()->GetObject - (theCompound->GetStudyID(), theCompound->GetEntry()); - if (aCompound.IsNull()) return NULL; - - // Convert the errors sequence - list anErrors; - int nbErr = theErrors.length(); - int ie = 0; - for (; ie < nbErr; ie++) { - const GEOM::GEOM_IBlocksOperations::BCError err = theErrors[ie]; - const GEOM::GEOM_IBlocksOperations::BCErrorType typ = err.error; - const GEOM::ListOfLong incrims = err.incriminated; - - GEOMImpl_IBlocksOperations::BCError errStruct; - switch (typ) { - case GEOM::GEOM_IBlocksOperations::NOT_BLOCK: - errStruct.error = GEOMImpl_IBlocksOperations::NOT_BLOCK; - break; - case GEOM::GEOM_IBlocksOperations::EXTRA_EDGE: - errStruct.error = GEOMImpl_IBlocksOperations::EXTRA_EDGE; - break; - case GEOM::GEOM_IBlocksOperations::INVALID_CONNECTION: - errStruct.error = GEOMImpl_IBlocksOperations::INVALID_CONNECTION; - break; - case GEOM::GEOM_IBlocksOperations::NOT_CONNECTED: - errStruct.error = GEOMImpl_IBlocksOperations::NOT_CONNECTED; - break; - case GEOM::GEOM_IBlocksOperations::NOT_GLUED: - errStruct.error = GEOMImpl_IBlocksOperations::NOT_GLUED; - break; - default: - break; - } - - int ii = 0; - int aLen = incrims.length(); - for (; ii < aLen; ii++) { - errStruct.incriminated.push_back(incrims[ii]); - } - - anErrors.push_back(errStruct); - } - - TCollection_AsciiString aDescr = GetOperations()->PrintBCErrors(aCompound, anErrors); - return CORBA::string_dup(aDescr.ToCString()); -} - -//============================================================================= -/*! - * RemoveExtraEdges - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::RemoveExtraEdges (GEOM::GEOM_Object_ptr theShape) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theShape == NULL) return aGEOMObject._retn(); - - //Get the reference Objects - Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - - if (aShape.IsNull()) return aGEOMObject._retn(); - - //Get the result - Handle(GEOM_Object) anObject = - GetOperations()->RemoveExtraEdges(aShape); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * CheckAndImprove - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::CheckAndImprove (GEOM::GEOM_Object_ptr theCompound) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theCompound == NULL) return aGEOMObject._retn(); - - //Get the reference Objects - Handle(GEOM_Object) aCompound = GetOperations()->GetEngine()->GetObject - (theCompound->GetStudyID(), theCompound->GetEntry()); - - if (aCompound.IsNull()) return aGEOMObject._retn(); - - //Get the result - Handle(GEOM_Object) anObject = - GetOperations()->CheckAndImprove(aCompound); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * GetBlockNearPoint - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::GetBlockNearPoint (GEOM::GEOM_Object_ptr theCompound, - GEOM::GEOM_Object_ptr thePoint) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theCompound == NULL || thePoint == NULL) return aGEOMObject._retn(); - - //Get the reference Objects - Handle(GEOM_Object) aCompound = GetOperations()->GetEngine()->GetObject - (theCompound->GetStudyID(), theCompound->GetEntry()); - Handle(GEOM_Object) aPoint = GetOperations()->GetEngine()->GetObject - (thePoint->GetStudyID(), thePoint->GetEntry()); - - if (aCompound.IsNull() || aPoint.IsNull()) return aGEOMObject._retn(); - - //Get the block - Handle(GEOM_Object) anObject = - GetOperations()->GetBlockNearPoint(aCompound, aPoint); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * GetBlockByParts - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::GetBlockByParts (GEOM::GEOM_Object_ptr theCompound, - const GEOM::ListOfGO& theParts) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theCompound == NULL) return aGEOMObject._retn(); - - //Get the reference Compound - Handle(GEOM_Object) aCompound = GetOperations()->GetEngine()->GetObject - (theCompound->GetStudyID(), theCompound->GetEntry()); - - if (aCompound.IsNull()) return aGEOMObject._retn(); - - //Get the parts - int ind, aLen; - Handle(TColStd_HSequenceOfTransient) aParts = new TColStd_HSequenceOfTransient; - - aLen = theParts.length(); - for (ind = 0; ind < aLen; ind++) { - if (theParts[ind] == NULL) return aGEOMObject._retn(); - Handle(GEOM_Object) aSh = GetOperations()->GetEngine()->GetObject - (theParts[ind]->GetStudyID(), theParts[ind]->GetEntry()); - if (aSh.IsNull()) return aGEOMObject._retn(); - aParts->Append(aSh); - } - - //Get the Block - Handle(GEOM_Object) anObject = - GetOperations()->GetBlockByParts(aCompound, aParts); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * GetBlocksByParts - */ -//============================================================================= -GEOM::ListOfGO* GEOM_IBlocksOperations_i::GetBlocksByParts (GEOM::GEOM_Object_ptr theCompound, - const GEOM::ListOfGO& theParts) -{ - GEOM::ListOfGO_var aSeq = new GEOM::ListOfGO; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theCompound == NULL) return aSeq._retn(); - - //Get the reference Compound - Handle(GEOM_Object) aCompound = GetOperations()->GetEngine()->GetObject - (theCompound->GetStudyID(), theCompound->GetEntry()); - - if (aCompound.IsNull()) return aSeq._retn(); - - //Get the parts - int ind, aLen; - Handle(TColStd_HSequenceOfTransient) aParts = new TColStd_HSequenceOfTransient; - - aLen = theParts.length(); - for (ind = 0; ind < aLen; ind++) { - if (theParts[ind] == NULL) return aSeq._retn(); - Handle(GEOM_Object) aSh = GetOperations()->GetEngine()->GetObject - (theParts[ind]->GetStudyID(), theParts[ind]->GetEntry()); - if (aSh.IsNull()) return aSeq._retn(); - aParts->Append(aSh); - } - - //Get the Block - Handle(TColStd_HSequenceOfTransient) aHSeq = - GetOperations()->GetBlocksByParts(aCompound, aParts); - if (!GetOperations()->IsDone() || aHSeq.IsNull()) - return aSeq._retn(); - - Standard_Integer aLength = aHSeq->Length(); - aSeq->length(aLength); - for (Standard_Integer i = 1; i <= aLength; i++) - aSeq[i-1] = GetObject(Handle(GEOM_Object)::DownCast(aHSeq->Value(i))); - - return aSeq._retn(); -} - -//============================================================================= -/*! - * MakeMultiTransformation1D - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::MakeMultiTransformation1D - (GEOM::GEOM_Object_ptr theBlock, - const CORBA::Long theDirFace1, - const CORBA::Long theDirFace2, - const CORBA::Long theNbTimes) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theBlock == NULL) return aGEOMObject._retn(); - - //Get the object itself and the vector of translation - Handle(GEOM_Object) aBasicObject = GetOperations()->GetEngine()->GetObject - (theBlock->GetStudyID(), theBlock->GetEntry()); - - if (aBasicObject.IsNull()) return aGEOMObject._retn(); - - //Perform the transformation - Handle(GEOM_Object) anObject = GetOperations()->MakeMultiTransformation1D - (aBasicObject, theDirFace1, theDirFace2, theNbTimes); - if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeMultiTransformation2D - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::MakeMultiTransformation2D - (GEOM::GEOM_Object_ptr theBlock, - const CORBA::Long theDirFace1U, - const CORBA::Long theDirFace2U, - const CORBA::Long theNbTimesU, - const CORBA::Long theDirFace1V, - const CORBA::Long theDirFace2V, - const CORBA::Long theNbTimesV) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theBlock == NULL) return aGEOMObject._retn(); - - //Get the object itself - Handle(GEOM_Object) aBasicObject = GetOperations()->GetEngine()->GetObject - (theBlock->GetStudyID(), theBlock->GetEntry()); - - if (aBasicObject.IsNull()) return aGEOMObject._retn(); - - //Perform the transformation - Handle(GEOM_Object) anObject = GetOperations()->MakeMultiTransformation2D - (aBasicObject, - theDirFace1U, theDirFace2U, theNbTimesU, - theDirFace1V, theDirFace2V, theNbTimesV); - if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * Propagate - */ -//============================================================================= -GEOM::ListOfGO* GEOM_IBlocksOperations_i::Propagate (GEOM::GEOM_Object_ptr theShape) -{ - GEOM::ListOfGO_var aSeq = new GEOM::ListOfGO; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theShape == NULL) return aSeq._retn(); - - //Get the reference Shape - Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - - if (aShape.IsNull()) return aSeq._retn(); - - //Get the Propagation chains - Handle(TColStd_HSequenceOfTransient) aHSeq = - GetOperations()->Propagate(aShape); - if (!GetOperations()->IsDone() || aHSeq.IsNull()) - return aSeq._retn(); - - Standard_Integer aLength = aHSeq->Length(); - aSeq->length(aLength); - for (Standard_Integer i = 1; i <= aLength; i++) - aSeq[i-1] = GetObject(Handle(GEOM_Object)::DownCast(aHSeq->Value(i))); - - return aSeq._retn(); -} diff --git a/src/GEOM_I/GEOM_IBlocksOperations_i.hh b/src/GEOM_I/GEOM_IBlocksOperations_i.hh deleted file mode 100644 index 6f7542235..000000000 --- a/src/GEOM_I/GEOM_IBlocksOperations_i.hh +++ /dev/null @@ -1,133 +0,0 @@ - -#ifndef _GEOM_IBlocksOperations_i_HeaderFile -#define _GEOM_IBlocksOperations_i_HeaderFile - - -#include - -#include CORBA_SERVER_HEADER(GEOM_Gen) -#include "GEOM_IOperations_i.hh" -#include "GEOM_Object_i.hh" - -#include "GEOMImpl_IBlocksOperations.hxx" - -class GEOM_IBlocksOperations_i : - public virtual POA_GEOM::GEOM_IBlocksOperations, - public virtual GEOM_IOperations_i -{ - public: - GEOM_IBlocksOperations_i (PortableServer::POA_ptr thePOA, GEOM::GEOM_Gen_ptr theEngine, - ::GEOMImpl_IBlocksOperations* theImpl); - ~GEOM_IBlocksOperations_i(); - - // Creation of blocks and block faces - GEOM::GEOM_Object_ptr MakeQuad (GEOM::GEOM_Object_ptr theEdge1, - GEOM::GEOM_Object_ptr theEdge2, - GEOM::GEOM_Object_ptr theEdge3, - GEOM::GEOM_Object_ptr theEdge4); - - GEOM::GEOM_Object_ptr MakeQuad2Edges (GEOM::GEOM_Object_ptr theEdge1, - GEOM::GEOM_Object_ptr theEdge2); - - GEOM::GEOM_Object_ptr MakeQuad4Vertices (GEOM::GEOM_Object_ptr thePnt1, - GEOM::GEOM_Object_ptr thePnt2, - GEOM::GEOM_Object_ptr thePnt3, - GEOM::GEOM_Object_ptr thePnt4); - - GEOM::GEOM_Object_ptr MakeHexa (GEOM::GEOM_Object_ptr theFace1, - GEOM::GEOM_Object_ptr theFace2, - GEOM::GEOM_Object_ptr theFace3, - GEOM::GEOM_Object_ptr theFace4, - GEOM::GEOM_Object_ptr theFace5, - GEOM::GEOM_Object_ptr theFace6); - - GEOM::GEOM_Object_ptr MakeHexa2Faces (GEOM::GEOM_Object_ptr theFace1, - GEOM::GEOM_Object_ptr theFace2); - - GEOM::GEOM_Object_ptr MakeBlockCompound (GEOM::GEOM_Object_ptr theCompound); - - // Extract elements of blocks and blocks compounds - GEOM::GEOM_Object_ptr GetPoint (GEOM::GEOM_Object_ptr theShape, - CORBA::Double theX, - CORBA::Double theY, - CORBA::Double theZ, - CORBA::Double theEpsilon); - - GEOM::GEOM_Object_ptr GetEdge (GEOM::GEOM_Object_ptr theShape, - GEOM::GEOM_Object_ptr thePoint1, - GEOM::GEOM_Object_ptr thePoint2); - - GEOM::GEOM_Object_ptr GetEdgeNearPoint (GEOM::GEOM_Object_ptr theShape, - GEOM::GEOM_Object_ptr thePoint); - - GEOM::GEOM_Object_ptr GetFaceByPoints (GEOM::GEOM_Object_ptr theShape, - GEOM::GEOM_Object_ptr thePoint1, - GEOM::GEOM_Object_ptr thePoint2, - GEOM::GEOM_Object_ptr thePoint3, - GEOM::GEOM_Object_ptr thePoint4); - - GEOM::GEOM_Object_ptr GetFaceByEdges (GEOM::GEOM_Object_ptr theShape, - GEOM::GEOM_Object_ptr theEdge1, - GEOM::GEOM_Object_ptr theEdge2); - - GEOM::GEOM_Object_ptr GetOppositeFace (GEOM::GEOM_Object_ptr theBlock, - GEOM::GEOM_Object_ptr theFace); - - GEOM::GEOM_Object_ptr GetFaceNearPoint (GEOM::GEOM_Object_ptr theShape, - GEOM::GEOM_Object_ptr thePoint); - - GEOM::GEOM_Object_ptr GetFaceByNormale (GEOM::GEOM_Object_ptr theBlock, - GEOM::GEOM_Object_ptr theVector); - - // Check blocks compound - CORBA::Boolean IsCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound, - CORBA::Long theMinNbFaces, - CORBA::Long theMaxNbFaces, - CORBA::Long& theNbBlocks); - - CORBA::Boolean CheckCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound, - GEOM::GEOM_IBlocksOperations::BCErrors_out theErrors); - - char* PrintBCErrors (GEOM::GEOM_Object_ptr theCompound, - const GEOM::GEOM_IBlocksOperations::BCErrors& theErrors); - - GEOM::GEOM_Object_ptr RemoveExtraEdges (GEOM::GEOM_Object_ptr theShape); - - GEOM::GEOM_Object_ptr CheckAndImprove (GEOM::GEOM_Object_ptr theCompound); - - // Extract blocks from blocks compounds - GEOM::ListOfGO* ExplodeCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound, - CORBA::Long theMinNbFaces, - CORBA::Long theMaxNbFaces); - - GEOM::GEOM_Object_ptr GetBlockNearPoint (GEOM::GEOM_Object_ptr theCompound, - GEOM::GEOM_Object_ptr thePoint); - - GEOM::GEOM_Object_ptr GetBlockByParts (GEOM::GEOM_Object_ptr theCompound, - const GEOM::ListOfGO& theParts); - - GEOM::ListOfGO* GetBlocksByParts (GEOM::GEOM_Object_ptr theCompound, - const GEOM::ListOfGO& theParts); - - // Operations on blocks with gluing of result - GEOM::GEOM_Object_ptr MakeMultiTransformation1D (GEOM::GEOM_Object_ptr theBlock, - CORBA::Long theDirFace1, - CORBA::Long theDirFace2, - CORBA::Long theNbTimes); - - GEOM::GEOM_Object_ptr MakeMultiTransformation2D (GEOM::GEOM_Object_ptr theBlock, - CORBA::Long theDirFace1U, - CORBA::Long theDirFace2U, - CORBA::Long theNbTimesU, - CORBA::Long theDirFace1V, - CORBA::Long theDirFace2V, - CORBA::Long theNbTimesV); - - // Build groups for Propagation of 1D hypotheses - GEOM::ListOfGO* Propagate (GEOM::GEOM_Object_ptr theShape); - - ::GEOMImpl_IBlocksOperations* GetOperations() - { return (::GEOMImpl_IBlocksOperations*)GetImpl(); } -}; - -#endif diff --git a/src/GEOM_I/GEOM_IBooleanOperations_i.cc b/src/GEOM_I/GEOM_IBooleanOperations_i.cc deleted file mode 100644 index 504a506c5..000000000 --- a/src/GEOM_I/GEOM_IBooleanOperations_i.cc +++ /dev/null @@ -1,183 +0,0 @@ -#include - -#include "GEOM_IBooleanOperations_i.hh" - -#include "utilities.h" -#include "OpUtil.hxx" - -#include "GEOM_Engine.hxx" -#include "GEOM_Object.hxx" - -#include - -//============================================================================= -/*! - * constructor: - */ -//============================================================================= -GEOM_IBooleanOperations_i::GEOM_IBooleanOperations_i (PortableServer::POA_ptr thePOA, - GEOM::GEOM_Gen_ptr theEngine, - ::GEOMImpl_IBooleanOperations* theImpl) -:GEOM_IOperations_i(thePOA, theEngine, theImpl) -{ - MESSAGE("GEOM_IBooleanOperations_i::GEOM_IBooleanOperations_i"); -} - -//============================================================================= -/*! - * destructor - */ -//============================================================================= -GEOM_IBooleanOperations_i::~GEOM_IBooleanOperations_i() -{ - MESSAGE("GEOM_IBooleanOperations_i::~GEOM_IBooleanOperations_i"); -} - - -//============================================================================= -/*! - * MakeBoolean - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IBooleanOperations_i::MakeBoolean - (GEOM::GEOM_Object_ptr theShape1, - GEOM::GEOM_Object_ptr theShape2, - CORBA::Long theOp) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theShape1 == NULL || theShape2 == NULL) return aGEOMObject._retn(); - - //Get the reference shapes - Handle(GEOM_Object) aSh1 = GetOperations()->GetEngine()->GetObject - (theShape1->GetStudyID(), theShape1->GetEntry()); - Handle(GEOM_Object) aSh2 = GetOperations()->GetEngine()->GetObject - (theShape2->GetStudyID(), theShape2->GetEntry()); - - if (aSh1.IsNull() || aSh2.IsNull()) return aGEOMObject._retn(); - - // Make Boolean - Handle(GEOM_Object) anObject = GetOperations()->MakeBoolean(aSh1, aSh2, theOp); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakePartition - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IBooleanOperations_i::MakePartition - (const GEOM::ListOfGO& theShapes, - const GEOM::ListOfGO& theTools, - const GEOM::ListOfGO& theKeepIns, - const GEOM::ListOfGO& theRemoveIns, - const CORBA::Short theLimit, - const CORBA::Boolean theRemoveWebs, - const GEOM::ListOfLong& theMaterials) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - int ind, aLen; - Handle(TColStd_HSequenceOfTransient) aShapes = new TColStd_HSequenceOfTransient; - Handle(TColStd_HSequenceOfTransient) aTools = new TColStd_HSequenceOfTransient; - Handle(TColStd_HSequenceOfTransient) aKeepIns = new TColStd_HSequenceOfTransient; - Handle(TColStd_HSequenceOfTransient) aRemIns = new TColStd_HSequenceOfTransient; - Handle(TColStd_HArray1OfInteger) aMaterials; - - //Get the shapes - aLen = theShapes.length(); - for (ind = 0; ind < aLen; ind++) { - if (theShapes[ind] == NULL) return aGEOMObject._retn(); - Handle(GEOM_Object) aSh = GetOperations()->GetEngine()->GetObject - (theShapes[ind]->GetStudyID(), theShapes[ind]->GetEntry()); - if (aSh.IsNull()) return aGEOMObject._retn(); - aShapes->Append(aSh); - } - - //Get the tools - aLen = theTools.length(); - for (ind = 0; ind < aLen; ind++) { - if (theTools[ind] == NULL) return aGEOMObject._retn(); - Handle(GEOM_Object) aSh = GetOperations()->GetEngine()->GetObject - (theTools[ind]->GetStudyID(), theTools[ind]->GetEntry()); - if (aSh.IsNull()) return aGEOMObject._retn(); - aTools->Append(aSh); - } - - //Get the keep inside shapes - aLen = theKeepIns.length(); - for (ind = 0; ind < aLen; ind++) { - if (theKeepIns[ind] == NULL) return aGEOMObject._retn(); - Handle(GEOM_Object) aSh = GetOperations()->GetEngine()->GetObject - (theKeepIns[ind]->GetStudyID(), theKeepIns[ind]->GetEntry()); - if (aSh.IsNull()) return aGEOMObject._retn(); - aKeepIns->Append(aSh); - } - - //Get the remove inside shapes - aLen = theRemoveIns.length(); - for (ind = 0; ind < aLen; ind++) { - if (theRemoveIns[ind] == NULL) return aGEOMObject._retn(); - Handle(GEOM_Object) aSh = GetOperations()->GetEngine()->GetObject - (theRemoveIns[ind]->GetStudyID(), theRemoveIns[ind]->GetEntry()); - if (aSh.IsNull()) return aGEOMObject._retn(); - aRemIns->Append(aSh); - } - - //Get the materials - aLen = theMaterials.length(); - aMaterials = new TColStd_HArray1OfInteger (1, aLen); - for (ind = 0; ind < aLen; ind++) { - aMaterials->SetValue(ind+1, theMaterials[ind]); - } - - // Make Partition - Handle(GEOM_Object) anObject = - GetOperations()->MakePartition(aShapes, aTools, aKeepIns, aRemIns, - theLimit, theRemoveWebs, aMaterials); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeHalfPartition - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IBooleanOperations_i::MakeHalfPartition - (GEOM::GEOM_Object_ptr theShape, - GEOM::GEOM_Object_ptr thePlane) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theShape == NULL || thePlane == NULL) return aGEOMObject._retn(); - - //Get the reference shapes - Handle(GEOM_Object) aSh = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - Handle(GEOM_Object) aPl = GetOperations()->GetEngine()->GetObject - (thePlane->GetStudyID(), thePlane->GetEntry()); - - if (aSh.IsNull() || aPl.IsNull()) return aGEOMObject._retn(); - - // Make Half Partition - Handle(GEOM_Object) anObject = GetOperations()->MakeHalfPartition(aSh, aPl); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} diff --git a/src/GEOM_I/GEOM_IBooleanOperations_i.hh b/src/GEOM_I/GEOM_IBooleanOperations_i.hh deleted file mode 100644 index 1a233c2d7..000000000 --- a/src/GEOM_I/GEOM_IBooleanOperations_i.hh +++ /dev/null @@ -1,43 +0,0 @@ - -#ifndef _GEOM_IBooleanOperations_i_HeaderFile -#define _GEOM_IBooleanOperations_i_HeaderFile - - -#include - -#include CORBA_SERVER_HEADER(GEOM_Gen) -#include "GEOM_IOperations_i.hh" -#include "GEOM_Object_i.hh" - -#include "GEOMImpl_IBooleanOperations.hxx" - -class GEOM_IBooleanOperations_i : - public virtual POA_GEOM::GEOM_IBooleanOperations, - public virtual GEOM_IOperations_i -{ - public: - GEOM_IBooleanOperations_i (PortableServer::POA_ptr thePOA, GEOM::GEOM_Gen_ptr theEngine, - ::GEOMImpl_IBooleanOperations* theImpl); - ~GEOM_IBooleanOperations_i(); - - GEOM::GEOM_Object_ptr MakeBoolean (GEOM::GEOM_Object_ptr theShape1, - GEOM::GEOM_Object_ptr theShape2, - CORBA::Long theOp); - - GEOM::GEOM_Object_ptr MakePartition (const GEOM::ListOfGO& theShapes, - const GEOM::ListOfGO& theTools, - const GEOM::ListOfGO& theKeepInside, - const GEOM::ListOfGO& theRemoveInside, - CORBA::Short theLimit, - CORBA::Boolean theRemoveWebs, - const GEOM::ListOfLong& theMaterials); - - - GEOM::GEOM_Object_ptr MakeHalfPartition (GEOM::GEOM_Object_ptr theShape, - GEOM::GEOM_Object_ptr thePlane); - - ::GEOMImpl_IBooleanOperations* GetOperations() - { return (::GEOMImpl_IBooleanOperations*)GetImpl(); } -}; - -#endif diff --git a/src/GEOM_I/GEOM_ICurvesOperations_i.cc b/src/GEOM_I/GEOM_ICurvesOperations_i.cc deleted file mode 100644 index 89b9de361..000000000 --- a/src/GEOM_I/GEOM_ICurvesOperations_i.cc +++ /dev/null @@ -1,328 +0,0 @@ -#include - -#include "GEOM_ICurvesOperations_i.hh" - -#include "utilities.h" -#include "OpUtil.hxx" - -#include "GEOM_Engine.hxx" -#include "GEOM_Object.hxx" - -//============================================================================= -/*! - * constructor: - */ -//============================================================================= -GEOM_ICurvesOperations_i::GEOM_ICurvesOperations_i (PortableServer::POA_ptr thePOA, - GEOM::GEOM_Gen_ptr theEngine, - ::GEOMImpl_ICurvesOperations* theImpl) -:GEOM_IOperations_i(thePOA, theEngine, theImpl) -{ - MESSAGE("GEOM_ICurvesOperations_i::GEOM_ICurvesOperations_i"); -} - -//============================================================================= -/*! - * destructor - */ -//============================================================================= -GEOM_ICurvesOperations_i::~GEOM_ICurvesOperations_i() -{ - MESSAGE("GEOM_ICurvesOperations_i::~GEOM_ICurvesOperations_i"); -} - - -//============================================================================= -/*! - * MakeCirclePntVecR - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeCirclePntVecR - (GEOM::GEOM_Object_ptr thePnt, GEOM::GEOM_Object_ptr theVec, - CORBA::Double theR) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (thePnt == NULL || theVec == NULL) return aGEOMObject._retn(); - - //Get the reference points - Handle(GEOM_Object) aPnt = GetOperations()->GetEngine()->GetObject - (thePnt->GetStudyID(), thePnt->GetEntry()); - Handle(GEOM_Object) aVec = GetOperations()->GetEngine()->GetObject - (theVec->GetStudyID(), theVec->GetEntry()); - - if (aPnt.IsNull() || aVec.IsNull()) return aGEOMObject._retn(); - - // Make Circle - Handle(GEOM_Object) anObject = - GetOperations()->MakeCirclePntVecR(aPnt, aVec, theR); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeCircleThreePnt - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeCircleThreePnt - (GEOM::GEOM_Object_ptr thePnt1, GEOM::GEOM_Object_ptr thePnt2, - GEOM::GEOM_Object_ptr thePnt3) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (thePnt1 == NULL || thePnt2 == NULL || thePnt3 == NULL) return aGEOMObject._retn(); - - //Get the reference points - Handle(GEOM_Object) aPnt1 = GetOperations()->GetEngine()->GetObject - (thePnt1->GetStudyID(), thePnt1->GetEntry()); - Handle(GEOM_Object) aPnt2 = GetOperations()->GetEngine()->GetObject - (thePnt2->GetStudyID(), thePnt2->GetEntry()); - Handle(GEOM_Object) aPnt3 = GetOperations()->GetEngine()->GetObject - (thePnt3->GetStudyID(), thePnt3->GetEntry()); - - if (aPnt1.IsNull() || aPnt2.IsNull() || aPnt3.IsNull()) return aGEOMObject._retn(); - - // Make Circle - Handle(GEOM_Object) anObject = - GetOperations()->MakeCircleThreePnt(aPnt1, aPnt2, aPnt3); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeEllipse - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeEllipse - (GEOM::GEOM_Object_ptr thePnt, GEOM::GEOM_Object_ptr theVec, - CORBA::Double theRMajor, double theRMinor) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (thePnt == NULL || theVec == NULL) return aGEOMObject._retn(); - - //Get the reference points - Handle(GEOM_Object) aPnt = GetOperations()->GetEngine()->GetObject - (thePnt->GetStudyID(), thePnt->GetEntry()); - Handle(GEOM_Object) aVec = GetOperations()->GetEngine()->GetObject - (theVec->GetStudyID(), theVec->GetEntry()); - - if (aPnt.IsNull() || aVec.IsNull()) return aGEOMObject._retn(); - - // Make Ellipse - Handle(GEOM_Object) anObject = - GetOperations()->MakeEllipse(aPnt, aVec, theRMajor, theRMinor); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeArc - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeArc - (GEOM::GEOM_Object_ptr thePnt1, - GEOM::GEOM_Object_ptr thePnt2, - GEOM::GEOM_Object_ptr thePnt3) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (thePnt1 == NULL || thePnt2 == NULL || thePnt3 == NULL) return aGEOMObject._retn(); - - //Get the reference points - Handle(GEOM_Object) aPnt1 = GetOperations()->GetEngine()->GetObject - (thePnt1->GetStudyID(), thePnt1->GetEntry()); - Handle(GEOM_Object) aPnt2 = GetOperations()->GetEngine()->GetObject - (thePnt2->GetStudyID(), thePnt2->GetEntry()); - Handle(GEOM_Object) aPnt3 = GetOperations()->GetEngine()->GetObject - (thePnt3->GetStudyID(), thePnt3->GetEntry()); - - if (aPnt1.IsNull() || aPnt2.IsNull() || aPnt3.IsNull()) return aGEOMObject._retn(); - - // Make Arc - Handle(GEOM_Object) anObject = - GetOperations()->MakeArc(aPnt1, aPnt2, aPnt3); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakePolyline - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakePolyline - (const GEOM::ListOfGO& thePoints) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - //Get the reference point - int ind = 0; - int aLen = thePoints.length(); - list aPoints; - for (; ind < aLen; ind++) { - if (thePoints[ind] == NULL) return aGEOMObject._retn(); - - Handle(GEOM_Object) aPnt = GetOperations()->GetEngine()->GetObject - (thePoints[ind]->GetStudyID(), thePoints[ind]->GetEntry()); - - if (aPnt.IsNull()) return aGEOMObject._retn(); - aPoints.push_back(aPnt); - } - - // Make Polyline - Handle(GEOM_Object) anObject = - GetOperations()->MakePolyline(aPoints); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeSplineBezier - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeSplineBezier - (const GEOM::ListOfGO& thePoints) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - //Get the reference point - int ind = 0; - int aLen = thePoints.length(); - list aPoints; - for (; ind < aLen; ind++) { - if (thePoints[ind] == NULL) return aGEOMObject._retn(); - - Handle(GEOM_Object) aPnt = GetOperations()->GetEngine()->GetObject - (thePoints[ind]->GetStudyID(), thePoints[ind]->GetEntry()); - - if (aPnt.IsNull()) return aGEOMObject._retn(); - aPoints.push_back(aPnt); - } - - // Make Bezier curve - Handle(GEOM_Object) anObject = - GetOperations()->MakeSplineBezier(aPoints); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeSplineInterpolation - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeSplineInterpolation - (const GEOM::ListOfGO& thePoints) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - //Get the reference point - int ind = 0; - int aLen = thePoints.length(); - list aPoints; - for (; ind < aLen; ind++) { - if (thePoints[ind] == NULL) return aGEOMObject._retn(); - - Handle(GEOM_Object) aPnt = GetOperations()->GetEngine()->GetObject - (thePoints[ind]->GetStudyID(), thePoints[ind]->GetEntry()); - - if (aPnt.IsNull()) return aGEOMObject._retn(); - aPoints.push_back(aPnt); - } - - // Make Polyline - Handle(GEOM_Object) anObject = - GetOperations()->MakeSplineInterpolation(aPoints); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeSketcher - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeSketcher - (const char* theCommand, const GEOM::ListOfDouble& theWorkingPlane) -{ - //Set a not done flag - GetOperations()->SetNotDone(); - - int ind = 0; - int aLen = theWorkingPlane.length(); - list aWorkingPlane; - for (; ind < aLen; ind++) - aWorkingPlane.push_back(theWorkingPlane[ind]); - - // Make Sketcher - Handle(GEOM_Object) anObject = - GetOperations()->MakeSketcher((char*)theCommand, aWorkingPlane); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return GEOM::GEOM_Object::_nil(); - - return GetObject(anObject); -} - - -//============================================================================= -/*! - * MakeSketcherOnPlane - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeSketcherOnPlane - (const char* theCommand, GEOM::GEOM_Object_ptr theWorkingPlane) -{ - //Set a not done flag - GetOperations()->SetNotDone(); - - Handle(GEOM_Object) aWorkingPlane = GetOperations()->GetEngine()->GetObject - (theWorkingPlane->GetStudyID(), theWorkingPlane->GetEntry()); - - // Make Sketcher - Handle(GEOM_Object) anObject = - GetOperations()->MakeSketcherOnPlane((char*)theCommand, aWorkingPlane); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return GEOM::GEOM_Object::_nil(); - - return GetObject(anObject); -} diff --git a/src/GEOM_I/GEOM_ICurvesOperations_i.hh b/src/GEOM_I/GEOM_ICurvesOperations_i.hh deleted file mode 100644 index 28f028d19..000000000 --- a/src/GEOM_I/GEOM_ICurvesOperations_i.hh +++ /dev/null @@ -1,53 +0,0 @@ - -#ifndef _GEOM_ICurvesOperations_i_HeaderFile -#define _GEOM_ICurvesOperations_i_HeaderFile - - -#include - -#include CORBA_SERVER_HEADER(GEOM_Gen) -#include "GEOM_IOperations_i.hh" -#include "GEOM_Object_i.hh" - -#include "GEOMImpl_ICurvesOperations.hxx" - -class GEOM_ICurvesOperations_i : - public virtual POA_GEOM::GEOM_ICurvesOperations, - public virtual GEOM_IOperations_i -{ - public: - GEOM_ICurvesOperations_i (PortableServer::POA_ptr thePOA, GEOM::GEOM_Gen_ptr theEngine, - ::GEOMImpl_ICurvesOperations* theImpl); - ~GEOM_ICurvesOperations_i(); - - GEOM::GEOM_Object_ptr MakeCirclePntVecR (GEOM::GEOM_Object_ptr theCenter, - GEOM::GEOM_Object_ptr theVector, - double theR); - - GEOM::GEOM_Object_ptr MakeCircleThreePnt (GEOM::GEOM_Object_ptr thePnt1, - GEOM::GEOM_Object_ptr thePnt2, - GEOM::GEOM_Object_ptr thePnt3); - - GEOM::GEOM_Object_ptr MakeEllipse (GEOM::GEOM_Object_ptr theCenter, - GEOM::GEOM_Object_ptr theVector, - double theRMajor, double theRMinor); - - GEOM::GEOM_Object_ptr MakeArc (GEOM::GEOM_Object_ptr thePnt1, - GEOM::GEOM_Object_ptr thePnt2, - GEOM::GEOM_Object_ptr thePnt3); - - GEOM::GEOM_Object_ptr MakePolyline (const GEOM::ListOfGO& thePoints); - - GEOM::GEOM_Object_ptr MakeSplineBezier (const GEOM::ListOfGO& thePoints); - - GEOM::GEOM_Object_ptr MakeSplineInterpolation (const GEOM::ListOfGO& thePoints); - - GEOM::GEOM_Object_ptr MakeSketcher (const char* theCommand, const GEOM::ListOfDouble& theWorkingPlane); - - GEOM::GEOM_Object_ptr MakeSketcherOnPlane (const char* theCommand, GEOM::GEOM_Object_ptr theWorkingPlane); - - ::GEOMImpl_ICurvesOperations* GetOperations() - { return (::GEOMImpl_ICurvesOperations*)GetImpl(); } -}; - -#endif diff --git a/src/GEOM_I/GEOM_IGroupOperations_i.cc b/src/GEOM_I/GEOM_IGroupOperations_i.cc deleted file mode 100644 index 25ca4a661..000000000 --- a/src/GEOM_I/GEOM_IGroupOperations_i.cc +++ /dev/null @@ -1,311 +0,0 @@ -#include - -#include "GEOM_IGroupOperations_i.hh" - -#include "utilities.h" -#include "OpUtil.hxx" -#include "Utils_ExceptHandlers.hxx" - -#include "GEOM_Engine.hxx" -#include "GEOM_Object.hxx" - -#include -#include - -//============================================================================= -/*! - * constructor: - */ -//============================================================================= -GEOM_IGroupOperations_i::GEOM_IGroupOperations_i (PortableServer::POA_ptr thePOA, - GEOM::GEOM_Gen_ptr theEngine, - ::GEOMImpl_IGroupOperations* theImpl) - :GEOM_IOperations_i(thePOA, theEngine, theImpl) -{ - MESSAGE("GEOM_IGroupOperations_i::GEOM_IGroupOperations_i"); -} - -//============================================================================= -/*! - * destructor - */ -//============================================================================= -GEOM_IGroupOperations_i::~GEOM_IGroupOperations_i() -{ - MESSAGE("GEOM_IGroupOperations_i::~GEOM_IGroupOperations_i"); -} - - -//============================================================================= -/*! - * CreateGroup - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IGroupOperations_i::CreateGroup(GEOM::GEOM_Object_ptr theMainShape, CORBA::Long theShapeType) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theMainShape == NULL || theShapeType < 0) return aGEOMObject._retn(); - - //Get the reference shape - Handle(GEOM_Object) aShapeRef = GetOperations()->GetEngine()->GetObject(theMainShape->GetStudyID(), theMainShape->GetEntry()); - - if (aShapeRef.IsNull()) return aGEOMObject._retn(); - - //Create the Fillet - Handle(GEOM_Object) anObject = GetOperations()->CreateGroup(aShapeRef, (TopAbs_ShapeEnum)theShapeType); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * AddObject - */ -//============================================================================= -void GEOM_IGroupOperations_i::AddObject(GEOM::GEOM_Object_ptr theGroup, CORBA::Long theSubShapeId) -{ - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theGroup == NULL) return; - - //Get the reference group - Handle(GEOM_Object) aGroupRef = GetOperations()->GetEngine()->GetObject(theGroup->GetStudyID(), theGroup->GetEntry()); - if (aGroupRef.IsNull()) return; - - GetOperations()->AddObject(aGroupRef, theSubShapeId); - return; -} - -//============================================================================= -/*! - * RemoveObject - */ -//============================================================================= -void GEOM_IGroupOperations_i::RemoveObject(GEOM::GEOM_Object_ptr theGroup, CORBA::Long theSubShapeId) -{ - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theGroup == NULL) return; - - //Get the reference group - Handle(GEOM_Object) aGroupRef = GetOperations()->GetEngine()->GetObject(theGroup->GetStudyID(), theGroup->GetEntry()); - if (aGroupRef.IsNull()) return; - - GetOperations()->RemoveObject(aGroupRef, theSubShapeId); - - return; -} - -//============================================================================= -/*! - * UnionList - */ -//============================================================================= -void GEOM_IGroupOperations_i::UnionList (GEOM::GEOM_Object_ptr theGroup, - const GEOM::ListOfGO& theSubShapes) -{ - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theGroup == NULL) return; - - //Get the reference group - Handle(GEOM_Object) aGroupRef = GetOperations()->GetEngine()->GetObject - (theGroup->GetStudyID(), theGroup->GetEntry()); - if (aGroupRef.IsNull()) return; - - //Get sub-shape to add - Handle(TColStd_HSequenceOfTransient) aSubShapes = new TColStd_HSequenceOfTransient; - - int ind, aLen = theSubShapes.length(); - for (ind = 0; ind < aLen; ind++) { - if (theSubShapes[ind] == NULL) return; - Handle(GEOM_Object) aSh = GetOperations()->GetEngine()->GetObject - (theSubShapes[ind]->GetStudyID(), theSubShapes[ind]->GetEntry()); - if (aSh.IsNull()) return; - aSubShapes->Append(aSh); - } - - //Perform the operation - GetOperations()->UnionList(aGroupRef, aSubShapes); - return; -} - -//============================================================================= -/*! - * DifferenceList - */ -//============================================================================= -void GEOM_IGroupOperations_i::DifferenceList (GEOM::GEOM_Object_ptr theGroup, - const GEOM::ListOfGO& theSubShapes) -{ - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theGroup == NULL) return; - - //Get the reference group - Handle(GEOM_Object) aGroupRef = GetOperations()->GetEngine()->GetObject - (theGroup->GetStudyID(), theGroup->GetEntry()); - if (aGroupRef.IsNull()) return; - - //Get sub-shape to remove - Handle(TColStd_HSequenceOfTransient) aSubShapes = new TColStd_HSequenceOfTransient; - - int ind, aLen = theSubShapes.length(); - for (ind = 0; ind < aLen; ind++) { - if (theSubShapes[ind] == NULL) return; - Handle(GEOM_Object) aSh = GetOperations()->GetEngine()->GetObject - (theSubShapes[ind]->GetStudyID(), theSubShapes[ind]->GetEntry()); - if (aSh.IsNull()) return; - aSubShapes->Append(aSh); - } - - //Perform the operation - GetOperations()->DifferenceList(aGroupRef, aSubShapes); - return; -} - -//============================================================================= -/*! - * UnionIDs - */ -//============================================================================= -void GEOM_IGroupOperations_i::UnionIDs (GEOM::GEOM_Object_ptr theGroup, - const GEOM::ListOfLong& theSubShapes) -{ - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theGroup == NULL) return; - - //Get the reference group - Handle(GEOM_Object) aGroupRef = GetOperations()->GetEngine()->GetObject - (theGroup->GetStudyID(), theGroup->GetEntry()); - if (aGroupRef.IsNull()) return; - - //Get sub-shape to add - Handle(TColStd_HSequenceOfInteger) aSubShapes = new TColStd_HSequenceOfInteger; - - int ind, aLen = theSubShapes.length(); - for (ind = 0; ind < aLen; ind++) { - aSubShapes->Append(theSubShapes[ind]); - } - - //Perform the operation - GetOperations()->UnionIDs(aGroupRef, aSubShapes); - return; -} - -//============================================================================= -/*! - * DifferenceIDs - */ -//============================================================================= -void GEOM_IGroupOperations_i::DifferenceIDs (GEOM::GEOM_Object_ptr theGroup, - const GEOM::ListOfLong& theSubShapes) -{ - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theGroup == NULL) return; - - //Get the reference group - Handle(GEOM_Object) aGroupRef = GetOperations()->GetEngine()->GetObject - (theGroup->GetStudyID(), theGroup->GetEntry()); - if (aGroupRef.IsNull()) return; - - //Get sub-shape to remove - Handle(TColStd_HSequenceOfInteger) aSubShapes = new TColStd_HSequenceOfInteger; - - int ind, aLen = theSubShapes.length(); - for (ind = 0; ind < aLen; ind++) { - aSubShapes->Append(theSubShapes[ind]); - } - - //Perform the operation - GetOperations()->DifferenceIDs(aGroupRef, aSubShapes); - return; -} - -//============================================================================= -/*! - * GetType - */ -//============================================================================= -CORBA::Long GEOM_IGroupOperations_i::GetType(GEOM::GEOM_Object_ptr theGroup) -{ - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theGroup == NULL) return -1; - - //Get the reference group - Handle(GEOM_Object) aGroupRef = GetOperations()->GetEngine()->GetObject(theGroup->GetStudyID(), theGroup->GetEntry()); - - if (aGroupRef.IsNull()) return -1; - - return GetOperations()->GetType(aGroupRef); -} - -//============================================================================= -/*! - * GetMainShape - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IGroupOperations_i::GetMainShape(GEOM::GEOM_Object_ptr theGroup) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theGroup == NULL) return aGEOMObject._retn(); - - //Get the reference group - Handle(GEOM_Object) aGroupRef = GetOperations()->GetEngine()->GetObject(theGroup->GetStudyID(), theGroup->GetEntry()); - if (aGroupRef.IsNull()) return aGEOMObject._retn(); - - Handle(GEOM_Object) anObject = GetOperations()->GetMainShape(aGroupRef); - if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * GetObjects - */ -//============================================================================= -GEOM::ListOfLong* GEOM_IGroupOperations_i::GetObjects(GEOM::GEOM_Object_ptr theGroup) -{ - GEOM::ListOfLong_var aList; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theGroup == NULL) return aList._retn(); - - //Get the reference group - Handle(GEOM_Object) aGroupRef = GetOperations()->GetEngine()->GetObject(theGroup->GetStudyID(), theGroup->GetEntry()); - if (aGroupRef.IsNull()) return aList._retn(); - - aList = new GEOM::ListOfLong; - - Handle(TColStd_HArray1OfInteger) aSeq = GetOperations()->GetObjects(aGroupRef); - if (!GetOperations()->IsDone() || aSeq.IsNull()) return aList._retn(); - - aList->length(aSeq->Length()); - for(int i = 1; i<=aSeq->Length(); i++) aList[i-1] = aSeq->Value(i); - - return aList._retn(); -} - diff --git a/src/GEOM_I/GEOM_IGroupOperations_i.hh b/src/GEOM_I/GEOM_IGroupOperations_i.hh deleted file mode 100644 index e730101d4..000000000 --- a/src/GEOM_I/GEOM_IGroupOperations_i.hh +++ /dev/null @@ -1,47 +0,0 @@ - -#ifndef _GEOM_IGroupOperations_i_HeaderFile -#define _GEOM_IGroupOperations_i_HeaderFile - - -#include - -#include CORBA_SERVER_HEADER(GEOM_Gen) -#include "GEOM_IOperations_i.hh" -#include "GEOM_Object_i.hh" - -#include "GEOMImpl_IGroupOperations.hxx" - -class GEOM_IGroupOperations_i : - public virtual POA_GEOM::GEOM_IGroupOperations, - public virtual GEOM_IOperations_i -{ - public: - GEOM_IGroupOperations_i (PortableServer::POA_ptr thePOA, GEOM::GEOM_Gen_ptr theEngine, - ::GEOMImpl_IGroupOperations* theImpl); - ~GEOM_IGroupOperations_i(); - - GEOM::GEOM_Object_ptr CreateGroup (GEOM::GEOM_Object_ptr theMainShape, CORBA::Long theShapeType); - - void AddObject (GEOM::GEOM_Object_ptr theGroup, CORBA::Long theSubShapeId); - - void RemoveObject (GEOM::GEOM_Object_ptr theGroup, CORBA::Long theSubShapeId); - - void UnionList (GEOM::GEOM_Object_ptr theGroup, const GEOM::ListOfGO& theSubShapes); - - void DifferenceList (GEOM::GEOM_Object_ptr theGroup, const GEOM::ListOfGO& theSubShapes); - - void UnionIDs (GEOM::GEOM_Object_ptr theGroup, const GEOM::ListOfLong& theSubShapes); - - void DifferenceIDs (GEOM::GEOM_Object_ptr theGroup, const GEOM::ListOfLong& theSubShapes); - - CORBA::Long GetType (GEOM::GEOM_Object_ptr theGroup); - - GEOM::GEOM_Object_ptr GetMainShape (GEOM::GEOM_Object_ptr theGroup); - - GEOM::ListOfLong* GetObjects (GEOM::GEOM_Object_ptr theGroup); - - ::GEOMImpl_IGroupOperations* GetOperations() - { return (::GEOMImpl_IGroupOperations*)GetImpl(); } -}; - -#endif diff --git a/src/GEOM_I/GEOM_IHealingOperations_i.cc b/src/GEOM_I/GEOM_IHealingOperations_i.cc deleted file mode 100644 index 7060b2afd..000000000 --- a/src/GEOM_I/GEOM_IHealingOperations_i.cc +++ /dev/null @@ -1,437 +0,0 @@ -#include - -#include - -#include "GEOM_IHealingOperations_i.hh" -#include "GEOM_Engine.hxx" -#include "GEOM_Object.hxx" - -#include "utilities.h" -#include "OpUtil.hxx" -#include "Utils_ExceptHandlers.hxx" - -#include - -//============================================================================= -/*! - * constructor: - */ -//============================================================================= - -GEOM_IHealingOperations_i::GEOM_IHealingOperations_i (PortableServer::POA_ptr thePOA, - GEOM::GEOM_Gen_ptr theEngine, - ::GEOMImpl_IHealingOperations* theImpl) -:GEOM_IOperations_i(thePOA, theEngine, theImpl) -{ - MESSAGE("GEOM_IHealingOperations_i::GEOM_IHealingOperations_i"); -} - -//============================================================================= -/*! - * destructor - */ -//============================================================================= - -GEOM_IHealingOperations_i::~GEOM_IHealingOperations_i() -{ - MESSAGE("GEOM_IHealingOperations_i::~GEOM_IHealingOperations_i"); -} - -//============================================================================= -/*! - * Convert - */ -//============================================================================= -Handle(TColStd_HArray1OfInteger) GEOM_IHealingOperations_i::Convert - (const GEOM::short_array& theInArray) -{ - Handle(TColStd_HArray1OfInteger) anOutArray; - int n = theInArray.length(); - if ( n <= 0 ) - return anOutArray; - anOutArray = new TColStd_HArray1OfInteger( 1, n ); - for (int i = 0; i < n; i++) - anOutArray->SetValue( i+1, theInArray[i] ); - return anOutArray; -} - -//============================================================================= -/*! - * Convert - */ -//============================================================================= -Handle(TColStd_HArray1OfExtendedString) GEOM_IHealingOperations_i::Convert - (const GEOM::string_array& theInArray) -{ - Handle(TColStd_HArray1OfExtendedString) anOutArray; - int n = theInArray.length(); - if ( n <= 0 ) - return anOutArray; - anOutArray = new TColStd_HArray1OfExtendedString( 1, n ); - char* str; - for ( int i = 0; i < n; i++ ) - { - str = CORBA::string_dup( theInArray[i] ); - anOutArray->SetValue( i+1, TCollection_ExtendedString( str ) ); - } - return anOutArray; -} - -//============================================================================= -/*! - * ProcessShape - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IHealingOperations_i::ProcessShape (GEOM::GEOM_Object_ptr theObject, - const GEOM::string_array& theOperations, - const GEOM::string_array& theParams, - const GEOM::string_array& theValues) -{ - GEOM::GEOM_Object_var aGEOMObject; - - // Set a not done flag - GetOperations()->SetNotDone(); - - // Check parameters - if ( CORBA::is_nil(theObject) ) - return aGEOMObject._retn(); - - // Check if theOperations has more than 0 elements and theParams and theValues have the same length -// if ( theOperations.length() <= 0 || theParams.length() != theValues.length() ) -// return aGEOMObject._retn(); - - // Get the object itself - Handle(GEOM_Object) anObject = - GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry()); - if ( anObject.IsNull() ) - return aGEOMObject._retn(); - - // Perform - Handle(GEOM_Object) aNewObject = GetOperations()->ShapeProcess( anObject, - Convert( theOperations ), Convert( theParams ), Convert( theValues ) ); - if ( !GetOperations()->IsDone() || aNewObject.IsNull() ) - return aGEOMObject._retn(); - - return GetObject( aNewObject ); -} - -//============================================================================= -/*! - * GetShapeProcessParameters - */ -//============================================================================= -void GEOM_IHealingOperations_i::GetShapeProcessParameters(GEOM::string_array_out theOperations, - GEOM::string_array_out theParams, - GEOM::string_array_out theValues) -{ - GEOM::string_array_var anOpArray = new GEOM::string_array(); - GEOM::string_array_var aParArray = new GEOM::string_array(); - GEOM::string_array_var aValArray = new GEOM::string_array(); - - // retrieve the values as stl-lists - list operationsList, paramsList, valuesList; - GetOperations()->GetShapeProcessParameters( operationsList, paramsList, valuesList ); - const int opSize = operationsList.size(), - parSize = paramsList.size(), - valSize = valuesList.size(); - - if ( opSize >= 0 && parSize >= 0 && parSize == valSize ) { - // allocate the CORBA arrays, sizes == returned lists' sizes - anOpArray->length(opSize); - aParArray->length(parSize); - aValArray->length(valSize); - - // fill the local CORBA arrays with values from lists - list::iterator opIt, parIt, valIt; - int i = 0; - for ( opIt = operationsList.begin(); opIt != operationsList.end(); i++,++opIt ) - anOpArray[i] = CORBA::string_dup( (*opIt).c_str() ); - - for ( i = 0, parIt = paramsList.begin(), valIt = valuesList.begin(); - parIt != paramsList.end(); i++, ++parIt,++valIt ) { - aParArray[i] = CORBA::string_dup( (*parIt).c_str() ); - aValArray[i] = CORBA::string_dup( (*valIt).c_str() ); - } - } - - // initialize out-parameters with local arrays - theOperations = anOpArray._retn(); - theParams = aParArray._retn(); - theValues = aValArray._retn(); -} - -//============================================================================= -/*! - * GetOperatorParameters - */ -//============================================================================= -void GEOM_IHealingOperations_i::GetOperatorParameters (const char* theOperator, - GEOM::string_array_out theParams, - GEOM::string_array_out theValues) -{ - GEOM::string_array_var aParArray = new GEOM::string_array(); - GEOM::string_array_var aValArray = new GEOM::string_array(); - - // retrieve the values as stl-lists - list paramsList, valuesList; - if ( GetOperations()->GetOperatorParameters( theOperator, paramsList, valuesList ) ) { - const int parSize = paramsList.size(), valSize = valuesList.size(); - - if ( parSize == valSize ) { - aParArray->length(parSize); - aValArray->length(valSize); - - // fill the local CORBA arrays with values from lists - list::iterator parIt, valIt; - int i; - for ( i = 0, parIt = paramsList.begin(), valIt = valuesList.begin(); - parIt != paramsList.end(); i++, ++parIt,++valIt ) { - aParArray[i] = CORBA::string_dup( (*parIt).c_str() ); - aValArray[i] = CORBA::string_dup( (*valIt).c_str() ); - } - } - } - - // initialize out-parameters with local arrays - theParams = aParArray._retn(); - theValues = aValArray._retn(); -} - -//============================================================================= -/*! - * SuppressFaces - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IHealingOperations_i::SuppressFaces (GEOM::GEOM_Object_ptr theObject, - const GEOM::short_array& theFaces) -{ - GEOM::GEOM_Object_var aGEOMObject; - - // Set a not done flag - GetOperations()->SetNotDone(); - - // Check parameters - if ( CORBA::is_nil(theObject) ) // if theFaces is empty - it's OK, it means that ALL faces must be removed - return aGEOMObject._retn(); - - // Get the object itself - Handle(GEOM_Object) anObject = - GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry()); - if (anObject.IsNull()) - return aGEOMObject._retn(); - - // Perform - Handle(GEOM_Object) aNewObject = - GetOperations()->SuppressFaces( anObject, Convert( theFaces ) ); - if (!GetOperations()->IsDone() || aNewObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject( aNewObject ); -} - -//============================================================================= -/*! - * CloseContour - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IHealingOperations_i::CloseContour (GEOM::GEOM_Object_ptr theObject, - const GEOM::short_array& theWires, - CORBA::Boolean isCommonVertex) -{ - GEOM::GEOM_Object_var aGEOMObject; - - // Set a not done flag - GetOperations()->SetNotDone(); - - // Check parameters - if ( CORBA::is_nil(theObject) ) - return aGEOMObject._retn(); - - // Get the object itself - Handle(GEOM_Object) anObject = - GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry()); - if (anObject.IsNull()) - return aGEOMObject._retn(); - - // Perform - Handle(GEOM_Object) aNewObject = - GetOperations()->CloseContour( anObject, Convert( theWires ), isCommonVertex ); - if (!GetOperations()->IsDone() || aNewObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(aNewObject); -} - -//============================================================================= -/*! - * RemoveIntWires - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IHealingOperations_i::RemoveIntWires (GEOM::GEOM_Object_ptr theObject, - const GEOM::short_array& theWires) -{ - GEOM::GEOM_Object_var aGEOMObject; - - // Set a not done flag - GetOperations()->SetNotDone(); - - // Check parameters - if ( CORBA::is_nil(theObject) ) // if theWires is empty - it's OK, it means that ALL wires should be removed - return aGEOMObject._retn(); - - // Get the object itself - Handle(GEOM_Object) anObject = - GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry()); - if (anObject.IsNull()) - return aGEOMObject._retn(); - - // Perform - Handle(GEOM_Object) aNewObject = - GetOperations()->RemoveIntWires( anObject, Convert( theWires ) ); - if (!GetOperations()->IsDone() || aNewObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(aNewObject); -} - -//============================================================================= -/*! - * FillHoles - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IHealingOperations_i::FillHoles (GEOM::GEOM_Object_ptr theObject, - const GEOM::short_array& theWires) -{ - GEOM::GEOM_Object_var aGEOMObject; - - // Set a not done flag - GetOperations()->SetNotDone(); - - // Check parameters - if ( CORBA::is_nil(theObject) ) // if theWires is empty - it's OK, it means that ALL wires should be removed - return aGEOMObject._retn(); - - // Get the object itself - Handle(GEOM_Object) anObject = - GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry()); - if (anObject.IsNull()) - return aGEOMObject._retn(); - - // Perform - Handle(GEOM_Object) aNewObject = - GetOperations()->FillHoles( anObject, Convert( theWires ) ); - if (!GetOperations()->IsDone() || aNewObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(aNewObject); -} - -//============================================================================= -/*! - * Sew - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IHealingOperations_i::Sew (GEOM::GEOM_Object_ptr theObject, - CORBA::Double theTolerance) -{ - GEOM::GEOM_Object_var aGEOMObject; - - // Set a not done flag - GetOperations()->SetNotDone(); - - // Check parameters - if ( CORBA::is_nil(theObject) || theTolerance < 0 ) - return aGEOMObject._retn(); - - // Get the object itself - Handle(GEOM_Object) anObject = - GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry()); - if (anObject.IsNull()) - return aGEOMObject._retn(); - - // Perform - Handle(GEOM_Object) aNewObject = - GetOperations()->Sew( anObject, theTolerance ); - if (!GetOperations()->IsDone() || aNewObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(aNewObject); -} - -//============================================================================= -/*! - * DivideEdge - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IHealingOperations_i::DivideEdge (GEOM::GEOM_Object_ptr theObject, - CORBA::Short theIndex, - CORBA::Double theValue, - CORBA::Boolean isByParameter) -{ - GEOM::GEOM_Object_var aGEOMObject; - - // Set a not done flag - GetOperations()->SetNotDone(); - - // Check parameters - if ( CORBA::is_nil(theObject) || theValue < 0 || theValue > 1 ) - return aGEOMObject._retn(); - - // Get the object itself - Handle(GEOM_Object) anObject = - GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry()); - if (anObject.IsNull()) - return aGEOMObject._retn(); - - // Perform - Handle(GEOM_Object) aNewObject = - GetOperations()->DivideEdge( anObject, theIndex, theValue, isByParameter ); - if (!GetOperations()->IsDone() || aNewObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(aNewObject); -} - -//============================================================================= -/*! - * GetFreeBoundary - */ -//============================================================================= -CORBA::Boolean GEOM_IHealingOperations_i::GetFreeBoundary ( GEOM::GEOM_Object_ptr theObject, - GEOM::ListOfGO_out theClosedWires, - GEOM::ListOfGO_out theOpenWires ) -{ - theClosedWires = new GEOM::ListOfGO; - theOpenWires = new GEOM::ListOfGO; - - // Set a not done flag - GetOperations()->SetNotDone(); - - if ( CORBA::is_nil(theObject) ) - return false; - - // Get the object itself - Handle(GEOM_Object) anObject = - GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry()); - if (anObject.IsNull()) - return false; - - Handle(TColStd_HSequenceOfTransient) aClosed = new TColStd_HSequenceOfTransient(); - Handle(TColStd_HSequenceOfTransient) anOpen = new TColStd_HSequenceOfTransient(); - bool res = GetOperations()->GetFreeBoundary( anObject, aClosed, anOpen ); - - if ( !GetOperations()->IsDone() || !res ) - return false; - - int i, n = aClosed->Length(); - theClosedWires->length( n ); - for ( i = 1; i <= n; i++ ) - (*theClosedWires)[i-1] = GetObject(Handle(GEOM_Object)::DownCast(aClosed->Value(i))); - - n = anOpen->Length(); - theOpenWires->length( n ); - for ( i = 1, n = anOpen->Length(); i <= n; i++ ) - (*theOpenWires)[i-1] = GetObject(Handle(GEOM_Object)::DownCast(anOpen->Value(i))); - - return true; -} diff --git a/src/GEOM_I/GEOM_IHealingOperations_i.hh b/src/GEOM_I/GEOM_IHealingOperations_i.hh deleted file mode 100644 index bf5d8eb98..000000000 --- a/src/GEOM_I/GEOM_IHealingOperations_i.hh +++ /dev/null @@ -1,53 +0,0 @@ - -#ifndef _GEOM_IHealingOperations_i_HeaderFile -#define _GEOM_IHealingOperations_i_HeaderFile - - -#include - -#include CORBA_SERVER_HEADER(GEOM_Gen) -#include "GEOM_IOperations_i.hh" -#include "GEOM_Object_i.hh" - -#include "GEOMImpl_IHealingOperations.hxx" - -#include -#include - -class GEOM_IHealingOperations_i : - public virtual POA_GEOM::GEOM_IHealingOperations, - public virtual GEOM_IOperations_i -{ - public: - GEOM_IHealingOperations_i(PortableServer::POA_ptr thePOA, GEOM::GEOM_Gen_ptr theEngine, ::GEOMImpl_IHealingOperations* theImpl); - ~GEOM_IHealingOperations_i(); - - GEOM::GEOM_Object_ptr ProcessShape(GEOM::GEOM_Object_ptr theObject, const GEOM::string_array& theOperations, const GEOM::string_array& theParams, const GEOM::string_array& theValues); - - void GetShapeProcessParameters(GEOM::string_array_out theOperations, GEOM::string_array_out theParams, GEOM::string_array_out theValues); - - void GetOperatorParameters (const char* theOperator, GEOM::string_array_out theParams, GEOM::string_array_out theValues); - - GEOM::GEOM_Object_ptr SuppressFaces(GEOM::GEOM_Object_ptr theObject, const GEOM::short_array& theFaces); - - GEOM::GEOM_Object_ptr CloseContour (GEOM::GEOM_Object_ptr theObject, const GEOM::short_array& theWires, CORBA::Boolean isCommonVertex); - - GEOM::GEOM_Object_ptr RemoveIntWires (GEOM::GEOM_Object_ptr theObject, const GEOM::short_array& theWires); - - GEOM::GEOM_Object_ptr FillHoles (GEOM::GEOM_Object_ptr theObject, const GEOM::short_array& theWires); - - GEOM::GEOM_Object_ptr Sew (GEOM::GEOM_Object_ptr theObject, CORBA::Double theTolerance); - - GEOM::GEOM_Object_ptr DivideEdge (GEOM::GEOM_Object_ptr theObject, CORBA::Short theIndex, CORBA::Double theValue, CORBA::Boolean isByParameter); - - CORBA::Boolean GetFreeBoundary(GEOM::GEOM_Object_ptr theObject, GEOM::ListOfGO_out theClosedWires, GEOM::ListOfGO_out theOpenWires ); - - ::GEOMImpl_IHealingOperations* GetOperations() { return (::GEOMImpl_IHealingOperations*)GetImpl(); } - -private: - Handle(TColStd_HArray1OfExtendedString) Convert( const GEOM::string_array& ); - Handle(TColStd_HArray1OfInteger) Convert( const GEOM::short_array& ); - -}; - -#endif diff --git a/src/GEOM_I/GEOM_IInsertOperations_i.cc b/src/GEOM_I/GEOM_IInsertOperations_i.cc deleted file mode 100644 index 1a525dc29..000000000 --- a/src/GEOM_I/GEOM_IInsertOperations_i.cc +++ /dev/null @@ -1,201 +0,0 @@ -#ifdef WNT -#pragma warning( disable:4786 ) -#endif - -#include - -#include "GEOM_IInsertOperations_i.hh" - -#include "utilities.h" -#include "OpUtil.hxx" -#include "Utils_ExceptHandlers.hxx" - -#include "GEOM_Engine.hxx" -#include "GEOM_Object.hxx" - -#include - -//============================================================================= -/*! - * constructor: - */ -//============================================================================= -GEOM_IInsertOperations_i::GEOM_IInsertOperations_i (PortableServer::POA_ptr thePOA, - GEOM::GEOM_Gen_ptr theEngine, - ::GEOMImpl_IInsertOperations* theImpl) - :GEOM_IOperations_i(thePOA, theEngine, theImpl) -{ - MESSAGE("GEOM_IInsertOperations_i::GEOM_IInsertOperations_i"); -} - -//============================================================================= -/*! - * destructor - */ -//============================================================================= -GEOM_IInsertOperations_i::~GEOM_IInsertOperations_i() -{ - MESSAGE("GEOM_IInsertOperations_i::~GEOM_IInsertOperations_i"); -} - - -//============================================================================= -/*! - * MakeCopy - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IInsertOperations_i::MakeCopy(GEOM::GEOM_Object_ptr theOriginal) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theOriginal == NULL) return aGEOMObject._retn(); - - //Get the reference shape - Handle(GEOM_Object) anOriginal = - GetOperations()->GetEngine()->GetObject(theOriginal->GetStudyID(), - theOriginal->GetEntry()); - - if (anOriginal.IsNull()) return aGEOMObject._retn(); - - //Create the copy - Handle(GEOM_Object) anObject = GetOperations()->MakeCopy(anOriginal); - - if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * Export - */ -//============================================================================= -void GEOM_IInsertOperations_i::Export - (GEOM::GEOM_Object_ptr theOriginal, - const char* theFileName, - const char* theFormatName) -{ - GEOM::GEOM_Object_var aGEOMObject = GEOM::GEOM_Object::_duplicate(theOriginal); - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theOriginal == NULL) return; - - //Get the reference shape - Handle(GEOM_Object) anOriginal = - GetOperations()->GetEngine()->GetObject(theOriginal->GetStudyID(), - theOriginal->GetEntry()); - - if (anOriginal.IsNull()) return; - - //Export the shape to the file - char* aFileName = strdup(theFileName); - char* aFormatName = strdup(theFormatName); - GetOperations()->Export(anOriginal, aFileName, aFormatName); - free(aFileName); - free(aFormatName); - - return; -} - -//============================================================================= -/*! - * Import - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IInsertOperations_i::Import - (const char* theFileName, - const char* theFormatName) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - //Import the shape from the file - char* aFileName = strdup(theFileName); - char* aFormatName = strdup(theFormatName); - Handle(GEOM_Object) anObject = GetOperations()->Import(aFileName, aFormatName); - free(aFileName); - free(aFormatName); - - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * ImportTranslators - */ -//============================================================================= -void GEOM_IInsertOperations_i::ImportTranslators - (GEOM::string_array_out theFormats, GEOM::string_array_out thePatterns) -{ - // Get sequences of available formats - Handle(TColStd_HSequenceOfAsciiString) aFormats = new TColStd_HSequenceOfAsciiString; - Handle(TColStd_HSequenceOfAsciiString) aPatterns = new TColStd_HSequenceOfAsciiString; - if (!GetOperations()->ImportTranslators(aFormats, aPatterns) || - aFormats->Length() != aPatterns->Length()) - { - aFormats->Clear(); aPatterns->Clear(); - } - - const int formSize = aFormats->Length(), pattSize = aPatterns->Length(); - - // allocate the CORBA arrays - GEOM::string_array_var aFormatsArray = new GEOM::string_array(); - GEOM::string_array_var aPatternsArray = new GEOM::string_array(); - aFormatsArray->length(formSize); - aPatternsArray->length(formSize); - - // fill the local CORBA arrays with values from sequences - CORBA::Long i = 1; - for (; i <= formSize; i++) { - aFormatsArray[i-1] = CORBA::string_dup(aFormats->Value(i).ToCString()); - aPatternsArray[i-1] = CORBA::string_dup(aPatterns->Value(i).ToCString()); - } - - // initialize out-parameters with local arrays - theFormats = aFormatsArray._retn(); - thePatterns = aPatternsArray._retn(); -} - -//============================================================================= -/*! - * ExportTranslators - */ -//============================================================================= -void GEOM_IInsertOperations_i::ExportTranslators - (GEOM::string_array_out theFormats, GEOM::string_array_out thePatterns) -{ - // Get sequences of available formats - Handle(TColStd_HSequenceOfAsciiString) aFormats = new TColStd_HSequenceOfAsciiString; - Handle(TColStd_HSequenceOfAsciiString) aPatterns = new TColStd_HSequenceOfAsciiString; - if (!GetOperations()->ExportTranslators(aFormats, aPatterns)) return; - - const int formSize = aFormats->Length(), pattSize = aPatterns->Length(); - if (formSize != pattSize) return; - - // allocate the CORBA arrays - GEOM::string_array_var aFormatsArray = new GEOM::string_array(); - GEOM::string_array_var aPatternsArray = new GEOM::string_array(); - aFormatsArray->length(formSize); - aPatternsArray->length(formSize); - - // fill the local CORBA arrays with values from sequences - CORBA::Long i = 1; - for (; i <= formSize; i++) { - aFormatsArray[i-1] = CORBA::string_dup(aFormats->Value(i).ToCString()); - aPatternsArray[i-1] = CORBA::string_dup(aPatterns->Value(i).ToCString()); - } - - // initialize out-parameters with local arrays - theFormats = aFormatsArray._retn(); - thePatterns = aPatternsArray._retn(); -} diff --git a/src/GEOM_I/GEOM_IInsertOperations_i.hh b/src/GEOM_I/GEOM_IInsertOperations_i.hh deleted file mode 100644 index d4822ce98..000000000 --- a/src/GEOM_I/GEOM_IInsertOperations_i.hh +++ /dev/null @@ -1,42 +0,0 @@ - -#ifndef _GEOM_IInsertOperations_i_HeaderFile -#define _GEOM_IInsertOperations_i_HeaderFile - - -#include - -#include CORBA_SERVER_HEADER(GEOM_Gen) -#include "GEOM_IOperations_i.hh" -#include "GEOM_Object_i.hh" - -#include "GEOMImpl_IInsertOperations.hxx" - -class GEOM_IInsertOperations_i : - public virtual POA_GEOM::GEOM_IInsertOperations, - public virtual GEOM_IOperations_i -{ - public: - GEOM_IInsertOperations_i (PortableServer::POA_ptr thePOA, GEOM::GEOM_Gen_ptr theEngine, - ::GEOMImpl_IInsertOperations* theImpl); - ~GEOM_IInsertOperations_i(); - - GEOM::GEOM_Object_ptr MakeCopy (GEOM::GEOM_Object_ptr theOriginal); - - void Export (GEOM::GEOM_Object_ptr theOriginal, - const char* theFileName, - const char* theFormatName); - - GEOM::GEOM_Object_ptr Import (const char* theFileName, - const char* theFormatName); - - void ImportTranslators (GEOM::string_array_out theFormats, - GEOM::string_array_out thePatterns); - - void ExportTranslators (GEOM::string_array_out theFormats, - GEOM::string_array_out thePatterns); - - ::GEOMImpl_IInsertOperations* GetOperations() - { return (::GEOMImpl_IInsertOperations*)GetImpl(); } -}; - -#endif diff --git a/src/GEOM_I/GEOM_ILocalOperations_i.cc b/src/GEOM_I/GEOM_ILocalOperations_i.cc deleted file mode 100644 index 64737cbf3..000000000 --- a/src/GEOM_I/GEOM_ILocalOperations_i.cc +++ /dev/null @@ -1,275 +0,0 @@ -#include - -#include "GEOM_ILocalOperations_i.hh" - -#include "utilities.h" -#include "OpUtil.hxx" -#include "Utils_ExceptHandlers.hxx" - -#include "GEOM_Engine.hxx" -#include "GEOM_Object.hxx" - -//============================================================================= -/*! - * constructor: - */ -//============================================================================= -GEOM_ILocalOperations_i::GEOM_ILocalOperations_i (PortableServer::POA_ptr thePOA, - GEOM::GEOM_Gen_ptr theEngine, - ::GEOMImpl_ILocalOperations* theImpl) - :GEOM_IOperations_i(thePOA, theEngine, theImpl) -{ - MESSAGE("GEOM_ILocalOperations_i::GEOM_ILocalOperations_i"); -} - -//============================================================================= -/*! - * destructor - */ -//============================================================================= -GEOM_ILocalOperations_i::~GEOM_ILocalOperations_i() -{ - MESSAGE("GEOM_ILocalOperations_i::~GEOM_ILocalOperations_i"); -} - - -//============================================================================= -/*! - * MakeFilletAll - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeFilletAll - (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR) -{ - GEOM::GEOM_Object_var aGEOMObject; - - if (theShape == NULL) return aGEOMObject._retn(); - - //Get the reference shape - Handle(GEOM_Object) aShapeRef = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - - if (aShapeRef.IsNull()) return aGEOMObject._retn(); - - //Create the Fillet - Handle(GEOM_Object) anObject = - GetOperations()->MakeFilletAll(aShapeRef, theR); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeFilletEdges - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeFilletEdges - (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR, - const GEOM::ListOfLong& theEdges) -{ - GEOM::GEOM_Object_var aGEOMObject; - - if (theShape == NULL) return aGEOMObject._retn(); - - //Get the reference shape - Handle(GEOM_Object) aShapeRef = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - if (aShapeRef.IsNull()) return aGEOMObject._retn(); - - //Get the reference edges - int ind = 0; - int aLen = theEdges.length(); - list anEdges; - for (; ind < aLen; ind++) { - anEdges.push_back(theEdges[ind]); - } - - //Create the Fillet - Handle(GEOM_Object) anObject = - GetOperations()->MakeFilletEdges(aShapeRef, theR, anEdges); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeFilletFaces - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeFilletFaces - (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR, - const GEOM::ListOfLong& theFaces) -{ - GEOM::GEOM_Object_var aGEOMObject; - - if (theShape == NULL) return aGEOMObject._retn(); - - //Get the reference shape - Handle(GEOM_Object) aShapeRef = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - if (aShapeRef.IsNull()) return aGEOMObject._retn(); - - //Get the reference faces - int ind = 0; - int aLen = theFaces.length(); - list aFaces; - for (; ind < aLen; ind++) { - aFaces.push_back(theFaces[ind]); - } - - //Create the Fillet - Handle(GEOM_Object) anObject = - GetOperations()->MakeFilletFaces(aShapeRef, theR, aFaces); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeChamferAll - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeChamferAll - (GEOM::GEOM_Object_ptr theShape, CORBA::Double theD) -{ - GEOM::GEOM_Object_var aGEOMObject; - - if (theShape == NULL) return aGEOMObject._retn(); - - //Get the reference shape - Handle(GEOM_Object) aShapeRef = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - - if (aShapeRef.IsNull()) return aGEOMObject._retn(); - - //Create the Chamfer - Handle(GEOM_Object) anObject = - GetOperations()->MakeChamferAll(aShapeRef, theD); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeChamferEdge - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeChamferEdge - (GEOM::GEOM_Object_ptr theShape, - CORBA::Double theD1, CORBA::Double theD2, - CORBA::Long theFace1, CORBA::Long theFace2) -{ - GEOM::GEOM_Object_var aGEOMObject; - - if (theShape == NULL) return aGEOMObject._retn(); - - //Get the reference shape - Handle(GEOM_Object) aShapeRef = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - if (aShapeRef.IsNull()) return aGEOMObject._retn(); - - //Create the Chamfer - Handle(GEOM_Object) anObject = - GetOperations()->MakeChamferEdge(aShapeRef, theD1, theD2, theFace1, theFace2); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeChamferFaces - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeChamferFaces - (GEOM::GEOM_Object_ptr theShape, - CORBA::Double theD1, CORBA::Double theD2, - const GEOM::ListOfLong& theFaces) -{ - GEOM::GEOM_Object_var aGEOMObject; - - if (theShape == NULL) return aGEOMObject._retn(); - - //Get the reference shape - Handle(GEOM_Object) aShapeRef = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - if (aShapeRef.IsNull()) return aGEOMObject._retn(); - - //Get the reference faces - int ind = 0; - int aLen = theFaces.length(); - list aFaces; - for (; ind < aLen; ind++) { - aFaces.push_back(theFaces[ind]); - } - - //Create the Chamfer - Handle(GEOM_Object) anObject = - GetOperations()->MakeChamferFaces(aShapeRef, theD1, theD2, aFaces); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeArchimede - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeArchimede (GEOM::GEOM_Object_ptr theShape, - CORBA::Double theWeight, - CORBA::Double theWaterDensity, - CORBA::Double theMeshingDeflection) -{ - GEOM::GEOM_Object_var aGEOMObject; - - if (theShape == NULL) return aGEOMObject._retn(); - - //Get the reference shape - Handle(GEOM_Object) aShapeRef = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - if (aShapeRef.IsNull()) return aGEOMObject._retn(); - - //Create the Archimede - Handle(GEOM_Object) anObject = GetOperations()->MakeArchimede - (aShapeRef, theWeight, theWaterDensity, theMeshingDeflection); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * GetSubShapeIndex - */ -//============================================================================= -CORBA::Long GEOM_ILocalOperations_i::GetSubShapeIndex - (GEOM::GEOM_Object_ptr theShape, GEOM::GEOM_Object_ptr theSubShape) -{ - if (theShape == NULL || theSubShape == NULL) return -1; - - //Get the reference shapes - Handle(GEOM_Object) aShapeRef = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - Handle(GEOM_Object) aSubShapeRef = GetOperations()->GetEngine()->GetObject - (theSubShape->GetStudyID(), theSubShape->GetEntry()); - if (aShapeRef.IsNull() || aSubShapeRef.IsNull()) return -1; - - //Get the unique ID of inside - CORBA::Long anID = GetOperations()->GetSubShapeIndex(aShapeRef, aSubShapeRef); - if (!GetOperations()->IsDone()) - return -1; - - return anID; -} diff --git a/src/GEOM_I/GEOM_ILocalOperations_i.hh b/src/GEOM_I/GEOM_ILocalOperations_i.hh deleted file mode 100644 index 50e37fde8..000000000 --- a/src/GEOM_I/GEOM_ILocalOperations_i.hh +++ /dev/null @@ -1,50 +0,0 @@ - -#ifndef _GEOM_ILocalOperations_i_HeaderFile -#define _GEOM_ILocalOperations_i_HeaderFile - - -#include - -#include CORBA_SERVER_HEADER(GEOM_Gen) -#include "GEOM_IOperations_i.hh" -#include "GEOM_Object_i.hh" - -#include "GEOMImpl_ILocalOperations.hxx" - -class GEOM_ILocalOperations_i : - public virtual POA_GEOM::GEOM_ILocalOperations, - public virtual GEOM_IOperations_i -{ - public: - GEOM_ILocalOperations_i (PortableServer::POA_ptr thePOA, GEOM::GEOM_Gen_ptr theEngine, - ::GEOMImpl_ILocalOperations* theImpl); - ~GEOM_ILocalOperations_i(); - - GEOM::GEOM_Object_ptr MakeFilletAll (GEOM::GEOM_Object_ptr theShape, - CORBA::Double theR); - GEOM::GEOM_Object_ptr MakeFilletEdges (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR, - const GEOM::ListOfLong& theEdges); - GEOM::GEOM_Object_ptr MakeFilletFaces (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR, - const GEOM::ListOfLong& theFaces); - - GEOM::GEOM_Object_ptr MakeChamferAll (GEOM::GEOM_Object_ptr theShape, CORBA::Double theD); - GEOM::GEOM_Object_ptr MakeChamferEdge (GEOM::GEOM_Object_ptr theShape, - CORBA::Double theD1, CORBA::Double theD2, - CORBA::Long theFace1, CORBA::Long theFace2); - GEOM::GEOM_Object_ptr MakeChamferFaces (GEOM::GEOM_Object_ptr theShape, - CORBA::Double theD1, CORBA::Double theD2, - const GEOM::ListOfLong& theFaces); - - GEOM::GEOM_Object_ptr MakeArchimede (GEOM::GEOM_Object_ptr theShape, - CORBA::Double theWeight, - CORBA::Double theWaterDensity, - CORBA::Double theMeshingDeflection); - - CORBA::Long GetSubShapeIndex (GEOM::GEOM_Object_ptr theShape, - GEOM::GEOM_Object_ptr theSubShape); - - ::GEOMImpl_ILocalOperations* GetOperations() - { return (::GEOMImpl_ILocalOperations*)GetImpl(); } -}; - -#endif diff --git a/src/GEOM_I/GEOM_IMeasureOperations_i.cc b/src/GEOM_I/GEOM_IMeasureOperations_i.cc deleted file mode 100644 index a76cf177e..000000000 --- a/src/GEOM_I/GEOM_IMeasureOperations_i.cc +++ /dev/null @@ -1,286 +0,0 @@ -#include - -#include "GEOM_IMeasureOperations_i.hh" - -#include "utilities.h" -#include "OpUtil.hxx" - -#include "GEOM_Engine.hxx" -#include "GEOM_Object.hxx" - -//============================================================================= -/*! - * constructor: - */ -//============================================================================= -GEOM_IMeasureOperations_i::GEOM_IMeasureOperations_i (PortableServer::POA_ptr thePOA, - GEOM::GEOM_Gen_ptr theEngine, - ::GEOMImpl_IMeasureOperations* theImpl) -:GEOM_IOperations_i(thePOA, theEngine, theImpl) -{ - MESSAGE("GEOM_IMeasureOperations_i::GEOM_IMeasureOperations_i"); -} - -//============================================================================= -/*! - * destructor - */ -//============================================================================= -GEOM_IMeasureOperations_i::~GEOM_IMeasureOperations_i() -{ - MESSAGE("GEOM_IMeasureOperations_i::~GEOM_IMeasureOperations_i"); -} - - -//============================================================================= -/*! - * GetCentreOfMass - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IMeasureOperations_i::GetCentreOfMass - (GEOM::GEOM_Object_ptr theShape) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theShape == NULL) return aGEOMObject._retn(); - - //Get the reference shape - Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - - if (aShape.IsNull()) return aGEOMObject._retn(); - - // Make Point - centre of mass of theShape - Handle(GEOM_Object) anObject = GetOperations()->GetCentreOfMass(aShape); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * GetBasicProperties - */ -//============================================================================= -void GEOM_IMeasureOperations_i::GetBasicProperties (GEOM::GEOM_Object_ptr theShape, - CORBA::Double& theLength, - CORBA::Double& theSurfArea, - CORBA::Double& theVolume) -{ - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theShape == NULL) return; - - //Get the reference shape - Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - - if (aShape.IsNull()) return; - - // Get shape parameters - GetOperations()->GetBasicProperties(aShape, theLength, theSurfArea, theVolume); -} - -//============================================================================= -/*! - * GetInertia - */ -//============================================================================= -void GEOM_IMeasureOperations_i::GetInertia - (GEOM::GEOM_Object_ptr theShape, - CORBA::Double& I11, CORBA::Double& I12, CORBA::Double& I13, - CORBA::Double& I21, CORBA::Double& I22, CORBA::Double& I23, - CORBA::Double& I31, CORBA::Double& I32, CORBA::Double& I33, - CORBA::Double& Ix , CORBA::Double& Iy , CORBA::Double& Iz) -{ - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theShape == NULL) return; - - //Get the reference shape - Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - - if (aShape.IsNull()) return; - - // Get shape parameters - GetOperations()->GetInertia(aShape, - I11, I12, I13, - I21, I22, I23, - I31, I32, I33, - Ix , Iy , Iz); -} - -//============================================================================= -/*! - * GetBoundingBox - */ -//============================================================================= -void GEOM_IMeasureOperations_i::GetBoundingBox (GEOM::GEOM_Object_ptr theShape, - CORBA::Double& Xmin, CORBA::Double& Xmax, - CORBA::Double& Ymin, CORBA::Double& Ymax, - CORBA::Double& Zmin, CORBA::Double& Zmax) -{ - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theShape == NULL) return; - - //Get the reference shape - Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - - if (aShape.IsNull()) return; - - // Get shape parameters - GetOperations()->GetBoundingBox(aShape, Xmin, Xmax, Ymin, Ymax, Zmin, Zmax); -} - -//============================================================================= -/*! - * GetTolerance - */ -//============================================================================= -void GEOM_IMeasureOperations_i::GetTolerance - (GEOM::GEOM_Object_ptr theShape, - CORBA::Double& FaceMin, CORBA::Double& FaceMax, - CORBA::Double& EdgeMin, CORBA::Double& EdgeMax, - CORBA::Double& VertMin, CORBA::Double& VertMax) -{ - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theShape == NULL) return; - - //Get the reference shape - Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - - if (aShape.IsNull()) return; - - // Get shape parameters - GetOperations()->GetTolerance(aShape, - FaceMin, FaceMax, - EdgeMin, EdgeMax, - VertMin, VertMax); -} - -//============================================================================= -/*! - * CheckShape - */ -//============================================================================= -CORBA::Boolean GEOM_IMeasureOperations_i::CheckShape (GEOM::GEOM_Object_ptr theShape, - CORBA::String_out theDescription) -{ - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theShape == NULL) - { - theDescription = CORBA::string_dup("null"); - return 0; - } - - //Get the reference shape - Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - - if (aShape.IsNull()) - { - theDescription = CORBA::string_dup("null2"); - return 0; - } - - // Get shape parameters - TCollection_AsciiString aDump; - if (GetOperations()->CheckShape(aShape, aDump)) - { - theDescription = CORBA::string_dup("OK"); - return 1; - } - theDescription = CORBA::string_dup(aDump.ToCString()); - return 0; -} - -//============================================================================= -/*! - * WhatIs - */ -//============================================================================= -char* GEOM_IMeasureOperations_i::WhatIs (GEOM::GEOM_Object_ptr theShape) -{ - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theShape == NULL) return NULL; - - //Get the reference shape - Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - - if (aShape.IsNull()) return NULL; - - // Get shape parameters - TCollection_AsciiString aDescription = GetOperations()->WhatIs(aShape); - return strdup(aDescription.ToCString()); -} - -//============================================================================= -/*! - * GetMinDistance - */ -//============================================================================= -CORBA::Double GEOM_IMeasureOperations_i::GetMinDistance - (GEOM::GEOM_Object_ptr theShape1, GEOM::GEOM_Object_ptr theShape2, - CORBA::Double& X1, CORBA::Double& Y1, CORBA::Double& Z1, - CORBA::Double& X2, CORBA::Double& Y2, CORBA::Double& Z2) -{ - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theShape1 == NULL || theShape2 == NULL) return -1.0; - - //Get the reference shape - Handle(GEOM_Object) aShape1 = GetOperations()->GetEngine()->GetObject - (theShape1->GetStudyID(), theShape1->GetEntry()); - Handle(GEOM_Object) aShape2 = GetOperations()->GetEngine()->GetObject - (theShape2->GetStudyID(), theShape2->GetEntry()); - - if (aShape1.IsNull() || aShape2.IsNull()) return -1.0; - - // Get shape parameters - return GetOperations()->GetMinDistance(aShape1, aShape2, X1, Y1, Z1, X2, Y2, Z2); -} - -//============================================================================= -/*! - * PointCoordinates - */ -//============================================================================= -void GEOM_IMeasureOperations_i::PointCoordinates( - GEOM::GEOM_Object_ptr theShape, CORBA::Double& X, CORBA::Double& Y, CORBA::Double& Z ) - -{ - //Set a not done flag - GetOperations()->SetNotDone(); - - if ( theShape->_is_nil() ) - return; - - //Get the reference shape - Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject( - theShape->GetStudyID(), theShape->GetEntry() ); - - if ( aShape.IsNull() ) - return; - - // Get shape parameters - GetOperations()->PointCoordinates( aShape, X, Y, Z ); -} diff --git a/src/GEOM_I/GEOM_IMeasureOperations_i.hh b/src/GEOM_I/GEOM_IMeasureOperations_i.hh deleted file mode 100644 index 6e26f873e..000000000 --- a/src/GEOM_I/GEOM_IMeasureOperations_i.hh +++ /dev/null @@ -1,64 +0,0 @@ - -#ifndef _GEOM_IMeasureOperations_i_HeaderFile -#define _GEOM_IMeasureOperations_i_HeaderFile - - -#include - -#include CORBA_SERVER_HEADER(GEOM_Gen) -#include "GEOM_IOperations_i.hh" -#include "GEOM_Object_i.hh" - -#include "GEOMImpl_IMeasureOperations.hxx" - -class GEOM_IMeasureOperations_i : - public virtual POA_GEOM::GEOM_IMeasureOperations, - public virtual GEOM_IOperations_i -{ - public: - GEOM_IMeasureOperations_i (PortableServer::POA_ptr thePOA, GEOM::GEOM_Gen_ptr theEngine, - ::GEOMImpl_IMeasureOperations* theImpl); - ~GEOM_IMeasureOperations_i(); - - void GetBasicProperties (GEOM::GEOM_Object_ptr theShape, - CORBA::Double& theLength, - CORBA::Double& theSurfArea, - CORBA::Double& theVolume); - - GEOM::GEOM_Object_ptr GetCentreOfMass (GEOM::GEOM_Object_ptr theShape); - - void GetInertia (GEOM::GEOM_Object_ptr theShape, - CORBA::Double& I11, CORBA::Double& I12, CORBA::Double& I13, - CORBA::Double& I21, CORBA::Double& I22, CORBA::Double& I23, - CORBA::Double& I31, CORBA::Double& I32, CORBA::Double& I33, - CORBA::Double& Ix , CORBA::Double& Iy , CORBA::Double& Iz); - - void GetBoundingBox (GEOM::GEOM_Object_ptr theShape, - CORBA::Double& Xmin, CORBA::Double& Xmax, - CORBA::Double& Ymin, CORBA::Double& Ymax, - CORBA::Double& Zmin, CORBA::Double& Zmax); - - void GetTolerance (GEOM::GEOM_Object_ptr theShape, - CORBA::Double& FaceMin, CORBA::Double& FaceMax, - CORBA::Double& EdgeMin, CORBA::Double& EdgeMax, - CORBA::Double& VertMin, CORBA::Double& VertMax); - - CORBA::Boolean CheckShape (GEOM::GEOM_Object_ptr theShape, - CORBA::String_out theDescription); - - char* WhatIs (GEOM::GEOM_Object_ptr theShape); - - CORBA::Double GetMinDistance (GEOM::GEOM_Object_ptr theShape1, - GEOM::GEOM_Object_ptr theShape2, - CORBA::Double& X1, CORBA::Double& Y1, CORBA::Double& Z1, - CORBA::Double& X2, CORBA::Double& Y2, CORBA::Double& Z2); - - - void PointCoordinates( GEOM::GEOM_Object_ptr theShape, - CORBA::Double& X, CORBA::Double& Y, CORBA::Double& Z ); - - ::GEOMImpl_IMeasureOperations* GetOperations() - { return (::GEOMImpl_IMeasureOperations*)GetImpl(); } -}; - -#endif diff --git a/src/GEOM_I/GEOM_IOperations_i.cc b/src/GEOM_I/GEOM_IOperations_i.cc deleted file mode 100644 index 1c2b53ba3..000000000 --- a/src/GEOM_I/GEOM_IOperations_i.cc +++ /dev/null @@ -1,125 +0,0 @@ -#include - -#include "GEOM_IOperations_i.hh" - -#include "utilities.h" -#include "OpUtil.hxx" -#include "Utils_ExceptHandlers.hxx" - -#include "GEOM_Engine.hxx" - -//#include "GEOM_Gen_i.hh" - -#include -#include - -//============================================================================= -/*! - * default constructor: - */ -//============================================================================= - -GEOM_IOperations_i::GEOM_IOperations_i(PortableServer::POA_ptr thePOA, GEOM::GEOM_Gen_ptr theEngine, ::GEOM_IOperations* theImpl) -#ifndef WNT -:SALOME::GenericObj_i( thePOA ), _impl(theImpl), _engine(theEngine) -#endif -{ - thePOA->activate_object(this); -} - -//============================================================================= -/*! - * destructor - */ -//============================================================================= - -GEOM_IOperations_i::~GEOM_IOperations_i() -{} - - -//============================================================================= -/*! - * IsDone - */ -//============================================================================= -CORBA::Boolean GEOM_IOperations_i::IsDone() -{ - return _impl->IsDone(); -} - - -//============================================================================= -/*! - * SetErrorCode - */ -//============================================================================= -void GEOM_IOperations_i::SetErrorCode(const char* theErrorCode) -{ - _impl->SetErrorCode((char*)theErrorCode); -} - -//============================================================================= -/*! - * GetErrorCode - */ -//============================================================================= -char* GEOM_IOperations_i::GetErrorCode() -{ - return _impl->GetErrorCode(); -} - -//============================================================================= -/*! - * GetStudyID - */ -//============================================================================= -CORBA::Long GEOM_IOperations_i::GetStudyID() -{ - return _impl->GetDocID(); -} - -//============================================================================= -/*! - * StartOperation - */ -//============================================================================= -void GEOM_IOperations_i::StartOperation() -{ - _impl->StartOperation(); -} - -//============================================================================= -/*! - * FinishOperation - */ -//============================================================================= -void GEOM_IOperations_i::FinishOperation() -{ - _impl->FinishOperation(); -} - - -//============================================================================= -/*! - * AboutOperation - */ -//============================================================================= -void GEOM_IOperations_i::AbortOperation() -{ - _impl->AbortOperation(); -} - -//============================================================================= -/*! - * GetObject - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IOperations_i::GetObject(Handle(GEOM_Object) theObject) -{ - if(theObject.IsNull()) return NULL; - TCollection_AsciiString anEntry; - TDF_Tool::Entry(theObject->GetEntry(), anEntry); - GEOM::GEOM_Object_var GO = GEOM::GEOM_Object::_duplicate(_engine->GetObject(theObject->GetDocID(), anEntry.ToCString())); - return GO._retn(); -} - diff --git a/src/GEOM_I/GEOM_IOperations_i.hh b/src/GEOM_I/GEOM_IOperations_i.hh deleted file mode 100644 index b881fcbe4..000000000 --- a/src/GEOM_I/GEOM_IOperations_i.hh +++ /dev/null @@ -1,45 +0,0 @@ - -#ifndef _GEOM_IOperations_i_HeaderFile -#define _GEOM_IOperations_i_HeaderFile - - -#include - -#include CORBA_SERVER_HEADER(GEOM_Gen) -#include "SALOME_GenericObj_i.hh" -#include "GEOM_IOperations.hxx" -#include "GEOM_Object_i.hh" -#include "GEOM_Object.hxx" - -class GEOM_IOperations_i : public virtual POA_GEOM::GEOM_IOperations, public virtual SALOME::GenericObj_i -{ - public: - GEOM_IOperations_i(PortableServer::POA_ptr thePOA, GEOM::GEOM_Gen_ptr theEngine, ::GEOM_IOperations* theImpl); - ~GEOM_IOperations_i(); - - virtual CORBA::Boolean IsDone(); - - virtual void SetErrorCode(const char* theErrorCode); - - virtual char* GetErrorCode(); - - virtual CORBA::Long GetStudyID(); - - virtual GEOM::GEOM_Object_ptr GetObject(Handle(GEOM_Object) theObject); - - virtual void StartOperation(); - - virtual void FinishOperation(); - - virtual void AbortOperation(); - - - ::GEOM_IOperations* GetImpl() { return _impl; } - - private: - - ::GEOM_IOperations* _impl; - GEOM::GEOM_Gen_ptr _engine; -}; - -#endif diff --git a/src/GEOM_I/GEOM_IShapesOperations_i.cc b/src/GEOM_I/GEOM_IShapesOperations_i.cc deleted file mode 100644 index db4495956..000000000 --- a/src/GEOM_I/GEOM_IShapesOperations_i.cc +++ /dev/null @@ -1,857 +0,0 @@ -#include - -#include "GEOM_IShapesOperations_i.hh" - -#include "utilities.h" -#include "OpUtil.hxx" -#include "Utils_ExceptHandlers.hxx" - -#include "GEOM_Engine.hxx" -#include "GEOM_Object.hxx" - -#include -#include - -//============================================================================= -/*! - * constructor: - */ -//============================================================================= -GEOM_IShapesOperations_i::GEOM_IShapesOperations_i (PortableServer::POA_ptr thePOA, - GEOM::GEOM_Gen_ptr theEngine, - ::GEOMImpl_IShapesOperations* theImpl) -:GEOM_IOperations_i(thePOA, theEngine, theImpl) -{ - MESSAGE("GEOM_IShapesOperations_i::GEOM_IShapesOperations_i"); -} - -//============================================================================= -/*! - * destructor - */ -//============================================================================= -GEOM_IShapesOperations_i::~GEOM_IShapesOperations_i() -{ - MESSAGE("GEOM_IShapesOperations_i::~GEOM_IShapesOperations_i"); -} - - -//============================================================================= -/*! - * MakeEdge - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeEdge - (GEOM::GEOM_Object_ptr thePnt1, GEOM::GEOM_Object_ptr thePnt2) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (thePnt1 == NULL || thePnt2 == NULL) return aGEOMObject._retn(); - - //Get the reference points - Handle(GEOM_Object) aPnt1 = GetOperations()->GetEngine()->GetObject - (thePnt1->GetStudyID(), thePnt1->GetEntry()); - Handle(GEOM_Object) aPnt2 = GetOperations()->GetEngine()->GetObject - (thePnt2->GetStudyID(), thePnt2->GetEntry()); - - if (aPnt1.IsNull() || aPnt2.IsNull()) return aGEOMObject._retn(); - - //Create the Edge - Handle(GEOM_Object) anObject = GetOperations()->MakeEdge(aPnt1, aPnt2); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeWire - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeWire - (const GEOM::ListOfGO& theEdgesAndWires) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - int ind, aLen; - list aShapes; - - //Get the shapes - aLen = theEdgesAndWires.length(); - for (ind = 0; ind < aLen; ind++) { - if (theEdgesAndWires[ind] == NULL) return aGEOMObject._retn(); - Handle(GEOM_Object) aSh = GetOperations()->GetEngine()->GetObject - (theEdgesAndWires[ind]->GetStudyID(), theEdgesAndWires[ind]->GetEntry()); - if (aSh.IsNull()) return aGEOMObject._retn(); - aShapes.push_back(aSh); - } - - // Make Solid - Handle(GEOM_Object) anObject = - GetOperations()->MakeWire(aShapes); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeFace - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeFace - (GEOM::GEOM_Object_ptr theWire, - const CORBA::Boolean isPlanarWanted) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theWire == NULL) return aGEOMObject._retn(); - - //Get the reference wire - Handle(GEOM_Object) aWire = GetOperations()->GetEngine()->GetObject - (theWire->GetStudyID(), theWire->GetEntry()); - - if (aWire.IsNull()) return aGEOMObject._retn(); - - //Create the Face - Handle(GEOM_Object) anObject = GetOperations()->MakeFace(aWire, isPlanarWanted); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeFaceWires - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeFaceWires - (const GEOM::ListOfGO& theWires, - const CORBA::Boolean isPlanarWanted) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - int ind, aLen; - list aShapes; - - //Get the shapes - aLen = theWires.length(); - for (ind = 0; ind < aLen; ind++) { - if (theWires[ind] == NULL) return aGEOMObject._retn(); - Handle(GEOM_Object) aSh = GetOperations()->GetEngine()->GetObject - (theWires[ind]->GetStudyID(), theWires[ind]->GetEntry()); - if (aSh.IsNull()) return aGEOMObject._retn(); - aShapes.push_back(aSh); - } - - // Make Face - Handle(GEOM_Object) anObject = - GetOperations()->MakeFaceWires(aShapes, isPlanarWanted); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeShell - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeShell - (const GEOM::ListOfGO& theFacesAndShells) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - int ind, aLen; - list aShapes; - - //Get the shapes - aLen = theFacesAndShells.length(); - for (ind = 0; ind < aLen; ind++) { - if (theFacesAndShells[ind] == NULL) return aGEOMObject._retn(); - Handle(GEOM_Object) aSh = GetOperations()->GetEngine()->GetObject - (theFacesAndShells[ind]->GetStudyID(), theFacesAndShells[ind]->GetEntry()); - if (aSh.IsNull()) return aGEOMObject._retn(); - aShapes.push_back(aSh); - } - - // Make Solid - Handle(GEOM_Object) anObject = - GetOperations()->MakeShell(aShapes); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeSolidShell - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeSolidShell - (GEOM::GEOM_Object_ptr theShell) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theShell == NULL) return aGEOMObject._retn(); - - //Get the reference objects - Handle(GEOM_Object) aShell = GetOperations()->GetEngine()->GetObject - (theShell->GetStudyID(), theShell->GetEntry()); - - if (aShell.IsNull()) return aGEOMObject._retn(); - - //Create the Solid - Handle(GEOM_Object) anObject = GetOperations()->MakeSolidShell(aShell); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeSolidShells - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeSolidShells - (const GEOM::ListOfGO& theShells) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - int ind, aLen; - list aShapes; - - //Get the shapes - aLen = theShells.length(); - for (ind = 0; ind < aLen; ind++) { - if (theShells[ind] == NULL) return aGEOMObject._retn(); - Handle(GEOM_Object) aSh = GetOperations()->GetEngine()->GetObject - (theShells[ind]->GetStudyID(), theShells[ind]->GetEntry()); - if (aSh.IsNull()) return aGEOMObject._retn(); - aShapes.push_back(aSh); - } - - // Make Solid - Handle(GEOM_Object) anObject = - GetOperations()->MakeSolidShells(aShapes); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeCompound - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeCompound - (const GEOM::ListOfGO& theShapes) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - int ind, aLen; - list aShapes; - - //Get the shapes - aLen = theShapes.length(); - for (ind = 0; ind < aLen; ind++) { - if (theShapes[ind] == NULL) return aGEOMObject._retn(); - Handle(GEOM_Object) aSh = GetOperations()->GetEngine()->GetObject - (theShapes[ind]->GetStudyID(), theShapes[ind]->GetEntry()); - if (aSh.IsNull()) return aGEOMObject._retn(); - aShapes.push_back(aSh); - } - - // Make Solid - Handle(GEOM_Object) anObject = - GetOperations()->MakeCompound(aShapes); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeGlueFaces - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeGlueFaces - (GEOM::GEOM_Object_ptr theShape, - const CORBA::Double theTolerance) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theShape == NULL) return aGEOMObject._retn(); - - //Get the reference objects - Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - - if (aShape.IsNull()) return aGEOMObject._retn(); - - //Perform the gluing - Handle(GEOM_Object) anObject = - GetOperations()->MakeGlueFaces(aShape, theTolerance); - //if (!GetOperations()->IsDone() || anObject.IsNull()) - // to allow warning - if (anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MakeExplode - */ -//============================================================================= -GEOM::ListOfGO* GEOM_IShapesOperations_i::MakeExplode (GEOM::GEOM_Object_ptr theShape, - const CORBA::Long theShapeType, - const CORBA::Boolean isSorted) -{ - GEOM::ListOfGO_var aSeq = new GEOM::ListOfGO; - if (theShape == NULL) return aSeq._retn(); - - Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - - Handle(TColStd_HSequenceOfTransient) aHSeq = - GetOperations()->MakeExplode(aShape, theShapeType, isSorted); - if (!GetOperations()->IsDone() || aHSeq.IsNull()) - return aSeq._retn(); - - Standard_Integer aLength = aHSeq->Length(); - aSeq->length(aLength); - for (Standard_Integer i = 1; i <= aLength; i++) - aSeq[i-1] = GetObject(Handle(GEOM_Object)::DownCast(aHSeq->Value(i))); - - return aSeq._retn(); -} - -//============================================================================= -/*! - * SubShapeAllIDs - */ -//============================================================================= -GEOM::ListOfLong* GEOM_IShapesOperations_i::SubShapeAllIDs (GEOM::GEOM_Object_ptr theShape, - const CORBA::Long theShapeType, - const CORBA::Boolean isSorted) -{ - GEOM::ListOfLong_var aSeq = new GEOM::ListOfLong; - if (theShape == NULL) return aSeq._retn(); - - Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - - Handle(TColStd_HSequenceOfInteger) aHSeq = - GetOperations()->SubShapeAllIDs(aShape, theShapeType, isSorted); - if (!GetOperations()->IsDone() || aHSeq.IsNull()) return aSeq._retn(); - - Standard_Integer aLength = aHSeq->Length(); - aSeq->length(aLength); - for (Standard_Integer i = 1; i <= aLength; i++) - aSeq[i-1] = aHSeq->Value(i); - - return aSeq._retn(); -} - -//============================================================================= -/*! - * GetSubShape - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::GetSubShape - (GEOM::GEOM_Object_ptr theMainShape, - const CORBA::Long theID) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theMainShape == NULL) return aGEOMObject._retn(); - - //Get the reference objects - Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject - (theMainShape->GetStudyID(), theMainShape->GetEntry()); - - if (aShape.IsNull()) return aGEOMObject._retn(); - - Handle(GEOM_Object) anObject = GetOperations()->GetSubShape(aShape, theID); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * NumberOfFaces - */ -//============================================================================= -CORBA::Long GEOM_IShapesOperations_i::NumberOfFaces (GEOM::GEOM_Object_ptr theShape) -{ - if (theShape == NULL) return -1; - - Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - - CORBA::Long aNb = GetOperations()->NumberOfFaces(aShape); - if (!GetOperations()->IsDone()) return -1; - - return aNb; -} - -//============================================================================= -/*! - * NumberOfEdges - */ -//============================================================================= -CORBA::Long GEOM_IShapesOperations_i::NumberOfEdges (GEOM::GEOM_Object_ptr theShape) -{ - if (theShape == NULL) return -1; - - Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - - CORBA::Long aNb = GetOperations()->NumberOfEdges(aShape); - if (!GetOperations()->IsDone()) return -1; - - return aNb; -} - -//============================================================================= -/*! - * ChangeOrientation - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::ChangeOrientation - (GEOM::GEOM_Object_ptr theShape) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theShape == NULL) return aGEOMObject._retn(); - - //Get the reference objects - Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - - if (aShape.IsNull()) return aGEOMObject._retn(); - - //Create the Solid - Handle(GEOM_Object) anObject = GetOperations()->ReverseShape(aShape); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * GetFreeFacesIDs - */ -//============================================================================= -GEOM::ListOfLong* GEOM_IShapesOperations_i::GetFreeFacesIDs (GEOM::GEOM_Object_ptr theShape) -{ - //Set a not done flag - GetOperations()->SetNotDone(); - - GEOM::ListOfLong_var aSeq = new GEOM::ListOfLong; - if (theShape == NULL) return aSeq._retn(); - - Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - - Handle(TColStd_HSequenceOfInteger) aHSeq = - GetOperations()->GetFreeFacesIDs(aShape); - if (!GetOperations()->IsDone() || aHSeq.IsNull()) return aSeq._retn(); - - Standard_Integer aLength = aHSeq->Length(); - aSeq->length(aLength); - for (Standard_Integer i = 1; i <= aLength; i++) - aSeq[i-1] = aHSeq->Value(i); - - return aSeq._retn(); -} - -//============================================================================= -/*! - * GetSharedShapes - */ -//============================================================================= -GEOM::ListOfGO* GEOM_IShapesOperations_i::GetSharedShapes - (GEOM::GEOM_Object_ptr theShape1, - GEOM::GEOM_Object_ptr theShape2, - const CORBA::Long theShapeType) -{ - //Set a not done flag - GetOperations()->SetNotDone(); - - GEOM::ListOfGO_var aSeq = new GEOM::ListOfGO; - if (theShape1 == NULL || - theShape2 == NULL) return aSeq._retn(); - - Handle(GEOM_Object) aShape1 = GetOperations()->GetEngine()->GetObject - (theShape1->GetStudyID(), theShape1->GetEntry()); - Handle(GEOM_Object) aShape2 = GetOperations()->GetEngine()->GetObject - (theShape2->GetStudyID(), theShape2->GetEntry()); - - if (aShape1.IsNull() || - aShape2.IsNull()) return aSeq._retn(); - - Handle(TColStd_HSequenceOfTransient) aHSeq = - GetOperations()->GetSharedShapes(aShape1, aShape2, theShapeType); - if (!GetOperations()->IsDone() || aHSeq.IsNull()) - return aSeq._retn(); - - Standard_Integer aLength = aHSeq->Length(); - aSeq->length(aLength); - for (Standard_Integer i = 1; i <= aLength; i++) - aSeq[i-1] = GetObject(Handle(GEOM_Object)::DownCast(aHSeq->Value(i))); - - return aSeq._retn(); -} - -static GEOMAlgo_State ShapeState (const GEOM::shape_state theState) -{ - GEOMAlgo_State aState = GEOMAlgo_ST_UNKNOWN; - - switch (theState) { - case GEOM::ST_ON: - aState = GEOMAlgo_ST_ON; - break; - case GEOM::ST_OUT: - aState = GEOMAlgo_ST_OUT; - break; - case GEOM::ST_ONOUT: - aState = GEOMAlgo_ST_ONOUT; - break; - case GEOM::ST_IN: - aState = GEOMAlgo_ST_IN; - break; - case GEOM::ST_ONIN: - aState = GEOMAlgo_ST_ONIN; - break; - default: - break; - } - - return aState; -} - -//============================================================================= -/*! - * GetShapesOnPlane - */ -//============================================================================= -GEOM::ListOfGO* GEOM_IShapesOperations_i::GetShapesOnPlane - (GEOM::GEOM_Object_ptr theShape, - const CORBA::Long theShapeType, - GEOM::GEOM_Object_ptr theAx1, - const GEOM::shape_state theState) -{ - GEOM::ListOfGO_var aSeq = new GEOM::ListOfGO; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theShape == NULL || theAx1 == NULL) return aSeq._retn(); - - //Get the reference objects - Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - Handle(GEOM_Object) anAx1 = GetOperations()->GetEngine()->GetObject - (theAx1->GetStudyID(), theAx1->GetEntry()); - - if (aShape.IsNull() || anAx1.IsNull()) return aSeq._retn(); - - //Get Shapes On Plane - Handle(TColStd_HSequenceOfTransient) aHSeq = - GetOperations()->GetShapesOnPlane(aShape, theShapeType, anAx1, ShapeState(theState)); - if (!GetOperations()->IsDone() || aHSeq.IsNull()) - return aSeq._retn(); - - Standard_Integer aLength = aHSeq->Length(); - aSeq->length(aLength); - for (Standard_Integer i = 1; i <= aLength; i++) - aSeq[i-1] = GetObject(Handle(GEOM_Object)::DownCast(aHSeq->Value(i))); - - return aSeq._retn(); -} - -//============================================================================= -/*! - * GetShapesOnCylinder - */ -//============================================================================= -GEOM::ListOfGO* GEOM_IShapesOperations_i::GetShapesOnCylinder - (GEOM::GEOM_Object_ptr theShape, - const CORBA::Long theShapeType, - GEOM::GEOM_Object_ptr theAxis, - const CORBA::Double theRadius, - const GEOM::shape_state theState) -{ - GEOM::ListOfGO_var aSeq = new GEOM::ListOfGO; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theShape == NULL || theAxis == NULL) return aSeq._retn(); - - //Get the reference objects - Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - Handle(GEOM_Object) anAxis = GetOperations()->GetEngine()->GetObject - (theAxis->GetStudyID(), theAxis->GetEntry()); - - if (aShape.IsNull() || anAxis.IsNull()) return aSeq._retn(); - - //Get Shapes On Cylinder - Handle(TColStd_HSequenceOfTransient) aHSeq = GetOperations()->GetShapesOnCylinder - (aShape, theShapeType, anAxis, theRadius, ShapeState(theState)); - if (!GetOperations()->IsDone() || aHSeq.IsNull()) - return aSeq._retn(); - - Standard_Integer aLength = aHSeq->Length(); - aSeq->length(aLength); - for (Standard_Integer i = 1; i <= aLength; i++) - aSeq[i-1] = GetObject(Handle(GEOM_Object)::DownCast(aHSeq->Value(i))); - - return aSeq._retn(); -} - -//============================================================================= -/*! - * GetShapesOnSphere - */ -//============================================================================= -GEOM::ListOfGO* GEOM_IShapesOperations_i::GetShapesOnSphere - (GEOM::GEOM_Object_ptr theShape, - const CORBA::Long theShapeType, - GEOM::GEOM_Object_ptr theCenter, - const CORBA::Double theRadius, - const GEOM::shape_state theState) -{ - GEOM::ListOfGO_var aSeq = new GEOM::ListOfGO; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theShape == NULL || theCenter == NULL) return aSeq._retn(); - - //Get the reference objects - Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - Handle(GEOM_Object) aCenter = GetOperations()->GetEngine()->GetObject - (theCenter->GetStudyID(), theCenter->GetEntry()); - - if (aShape.IsNull() || aCenter.IsNull()) return aSeq._retn(); - - //Get Shapes On Sphere - Handle(TColStd_HSequenceOfTransient) aHSeq = GetOperations()->GetShapesOnSphere - (aShape, theShapeType, aCenter, theRadius, ShapeState(theState)); - if (!GetOperations()->IsDone() || aHSeq.IsNull()) - return aSeq._retn(); - - Standard_Integer aLength = aHSeq->Length(); - aSeq->length(aLength); - for (Standard_Integer i = 1; i <= aLength; i++) - aSeq[i-1] = GetObject(Handle(GEOM_Object)::DownCast(aHSeq->Value(i))); - - return aSeq._retn(); -} - -//============================================================================= -/*! - * GetShapesOnPlaneIDs - */ -//============================================================================= -GEOM::ListOfLong* GEOM_IShapesOperations_i::GetShapesOnPlaneIDs - (GEOM::GEOM_Object_ptr theShape, - const CORBA::Long theShapeType, - GEOM::GEOM_Object_ptr theAx1, - const GEOM::shape_state theState) -{ - GEOM::ListOfLong_var aSeq = new GEOM::ListOfLong; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theShape == NULL || theAx1 == NULL) return aSeq._retn(); - - //Get the reference objects - Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - Handle(GEOM_Object) anAx1 = GetOperations()->GetEngine()->GetObject - (theAx1->GetStudyID(), theAx1->GetEntry()); - - if (aShape.IsNull() || anAx1.IsNull()) return aSeq._retn(); - - //Get Shapes On Plane - Handle(TColStd_HSequenceOfInteger) aHSeq = - GetOperations()->GetShapesOnPlaneIDs(aShape, theShapeType, anAx1, ShapeState(theState)); - if (!GetOperations()->IsDone() || aHSeq.IsNull()) - return aSeq._retn(); - - Standard_Integer aLength = aHSeq->Length(); - aSeq->length(aLength); - for (Standard_Integer i = 1; i <= aLength; i++) - aSeq[i-1] = aHSeq->Value(i); - - return aSeq._retn(); -} - -//============================================================================= -/*! - * GetShapesOnCylinderIDs - */ -//============================================================================= -GEOM::ListOfLong* GEOM_IShapesOperations_i::GetShapesOnCylinderIDs - (GEOM::GEOM_Object_ptr theShape, - const CORBA::Long theShapeType, - GEOM::GEOM_Object_ptr theAxis, - const CORBA::Double theRadius, - const GEOM::shape_state theState) -{ - GEOM::ListOfLong_var aSeq = new GEOM::ListOfLong; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theShape == NULL || theAxis == NULL) return aSeq._retn(); - - //Get the reference objects - Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - Handle(GEOM_Object) anAxis = GetOperations()->GetEngine()->GetObject - (theAxis->GetStudyID(), theAxis->GetEntry()); - - if (aShape.IsNull() || anAxis.IsNull()) return aSeq._retn(); - - //Get Shapes On Cylinder - Handle(TColStd_HSequenceOfInteger) aHSeq = GetOperations()->GetShapesOnCylinderIDs - (aShape, theShapeType, anAxis, theRadius, ShapeState(theState)); - if (!GetOperations()->IsDone() || aHSeq.IsNull()) - return aSeq._retn(); - - Standard_Integer aLength = aHSeq->Length(); - aSeq->length(aLength); - for (Standard_Integer i = 1; i <= aLength; i++) - aSeq[i-1] = aHSeq->Value(i); - - return aSeq._retn(); -} - -//============================================================================= -/*! - * GetShapesOnSphereIDs - */ -//============================================================================= -GEOM::ListOfLong* GEOM_IShapesOperations_i::GetShapesOnSphereIDs - (GEOM::GEOM_Object_ptr theShape, - const CORBA::Long theShapeType, - GEOM::GEOM_Object_ptr theCenter, - const CORBA::Double theRadius, - const GEOM::shape_state theState) -{ - GEOM::ListOfLong_var aSeq = new GEOM::ListOfLong; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theShape == NULL || theCenter == NULL) return aSeq._retn(); - - //Get the reference objects - Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject - (theShape->GetStudyID(), theShape->GetEntry()); - Handle(GEOM_Object) aCenter = GetOperations()->GetEngine()->GetObject - (theCenter->GetStudyID(), theCenter->GetEntry()); - - if (aShape.IsNull() || aCenter.IsNull()) return aSeq._retn(); - - //Get Shapes On Sphere - Handle(TColStd_HSequenceOfInteger) aHSeq = GetOperations()->GetShapesOnSphereIDs - (aShape, theShapeType, aCenter, theRadius, ShapeState(theState)); - if (!GetOperations()->IsDone() || aHSeq.IsNull()) - return aSeq._retn(); - - Standard_Integer aLength = aHSeq->Length(); - aSeq->length(aLength); - for (Standard_Integer i = 1; i <= aLength; i++) - aSeq[i-1] = aHSeq->Value(i); - - return aSeq._retn(); -} - -//============================================================================= -/*! - * GetInPlace - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::GetInPlace - (GEOM::GEOM_Object_ptr theShapeWhere, - GEOM::GEOM_Object_ptr theShapeWhat) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theShapeWhere == NULL || - theShapeWhat == NULL) return aGEOMObject._retn(); - - //Get the reference objects - Handle(GEOM_Object) aShapeWhere = GetOperations()->GetEngine()->GetObject - (theShapeWhere->GetStudyID(), theShapeWhere->GetEntry()); - Handle(GEOM_Object) aShapeWhat = GetOperations()->GetEngine()->GetObject - (theShapeWhat->GetStudyID(), theShapeWhat->GetEntry()); - - if (aShapeWhere.IsNull() || - aShapeWhat.IsNull()) return aGEOMObject._retn(); - - //Get Shapes in place of aShapeWhat - Handle(GEOM_Object) anObject = - GetOperations()->GetInPlace(aShapeWhere, aShapeWhat); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} diff --git a/src/GEOM_I/GEOM_IShapesOperations_i.hh b/src/GEOM_I/GEOM_IShapesOperations_i.hh deleted file mode 100644 index 295e9d462..000000000 --- a/src/GEOM_I/GEOM_IShapesOperations_i.hh +++ /dev/null @@ -1,109 +0,0 @@ - -#ifndef _GEOM_IShapesOperations_i_HeaderFile -#define _GEOM_IShapesOperations_i_HeaderFile - - -#include - -#include CORBA_SERVER_HEADER(GEOM_Gen) -#include "GEOM_IOperations_i.hh" -#include "GEOM_Object_i.hh" - -#include "GEOMImpl_IShapesOperations.hxx" - -class GEOM_IShapesOperations_i : - public virtual POA_GEOM::GEOM_IShapesOperations, - public virtual GEOM_IOperations_i -{ - public: - GEOM_IShapesOperations_i (PortableServer::POA_ptr thePOA, - GEOM::GEOM_Gen_ptr theEngine, - ::GEOMImpl_IShapesOperations* theImpl); - ~GEOM_IShapesOperations_i(); - - GEOM::GEOM_Object_ptr MakeEdge (GEOM::GEOM_Object_ptr thePnt1, - GEOM::GEOM_Object_ptr thePnt2); - - GEOM::GEOM_Object_ptr MakeWire (const GEOM::ListOfGO& theEdgesAndWires); - - GEOM::GEOM_Object_ptr MakeFace (GEOM::GEOM_Object_ptr theWire, - CORBA::Boolean isPlanarWanted); - - GEOM::GEOM_Object_ptr MakeFaceWires (const GEOM::ListOfGO& theWires, - CORBA::Boolean isPlanarWanted); - - GEOM::GEOM_Object_ptr MakeShell (const GEOM::ListOfGO& theFacesAndShells); - - GEOM::GEOM_Object_ptr MakeSolidShell (GEOM::GEOM_Object_ptr theShell); - - GEOM::GEOM_Object_ptr MakeSolidShells (const GEOM::ListOfGO& theShells); - - GEOM::GEOM_Object_ptr MakeCompound (const GEOM::ListOfGO& theShapes); - - GEOM::GEOM_Object_ptr MakeGlueFaces (GEOM::GEOM_Object_ptr theShape, - CORBA::Double theTolerance); - - GEOM::ListOfGO* MakeExplode (GEOM::GEOM_Object_ptr theShape, - CORBA::Long theShapeType, - CORBA::Boolean isSorted); - - GEOM::ListOfLong* SubShapeAllIDs (GEOM::GEOM_Object_ptr theShape, - CORBA::Long theShapeType, - CORBA::Boolean isSorted); - - GEOM::GEOM_Object_ptr GetSubShape (GEOM::GEOM_Object_ptr theMainShape, - CORBA::Long theID); - - CORBA::Long NumberOfFaces (GEOM::GEOM_Object_ptr theShape); - CORBA::Long NumberOfEdges (GEOM::GEOM_Object_ptr theShape); - - GEOM::GEOM_Object_ptr ChangeOrientation (GEOM::GEOM_Object_ptr theShape); - - GEOM::ListOfLong* GetFreeFacesIDs (GEOM::GEOM_Object_ptr theShape); - - GEOM::ListOfGO* GetSharedShapes (GEOM::GEOM_Object_ptr theShape1, - GEOM::GEOM_Object_ptr theShape2, - CORBA::Long theShapeType); - - GEOM::ListOfGO* GetShapesOnPlane (GEOM::GEOM_Object_ptr theShape, - CORBA::Long theShapeType, - GEOM::GEOM_Object_ptr theAx1, - GEOM::shape_state theState); - - GEOM::ListOfGO* GetShapesOnCylinder (GEOM::GEOM_Object_ptr theShape, - CORBA::Long theShapeType, - GEOM::GEOM_Object_ptr theAxis, - CORBA::Double theRadius, - GEOM::shape_state theState); - - GEOM::ListOfGO* GetShapesOnSphere (GEOM::GEOM_Object_ptr theShape, - CORBA::Long theShapeType, - GEOM::GEOM_Object_ptr theCenter, - CORBA::Double theRadius, - GEOM::shape_state theState); - - GEOM::ListOfLong* GetShapesOnPlaneIDs (GEOM::GEOM_Object_ptr theShape, - CORBA::Long theShapeType, - GEOM::GEOM_Object_ptr theAx1, - GEOM::shape_state theState); - - GEOM::ListOfLong* GetShapesOnCylinderIDs (GEOM::GEOM_Object_ptr theShape, - CORBA::Long theShapeType, - GEOM::GEOM_Object_ptr theAxis, - CORBA::Double theRadius, - GEOM::shape_state theState); - - GEOM::ListOfLong* GetShapesOnSphereIDs (GEOM::GEOM_Object_ptr theShape, - CORBA::Long theShapeType, - GEOM::GEOM_Object_ptr theCenter, - CORBA::Double theRadius, - GEOM::shape_state theState); - - GEOM::GEOM_Object_ptr GetInPlace (GEOM::GEOM_Object_ptr theShapeWhere, - GEOM::GEOM_Object_ptr theShapeWhat); - - ::GEOMImpl_IShapesOperations* GetOperations() - { return (::GEOMImpl_IShapesOperations*)GetImpl(); } -}; - -#endif diff --git a/src/GEOM_I/GEOM_ITransformOperations_i.cc b/src/GEOM_I/GEOM_ITransformOperations_i.cc deleted file mode 100644 index a01edea09..000000000 --- a/src/GEOM_I/GEOM_ITransformOperations_i.cc +++ /dev/null @@ -1,931 +0,0 @@ -#include - -#include "GEOM_ITransformOperations_i.hh" - -#include "utilities.h" -#include "OpUtil.hxx" -#include "Utils_ExceptHandlers.hxx" - -#include -#include -#include -#include "GEOM_Engine.hxx" -#include "GEOM_Object.hxx" - -#define SUBSHAPE_ERROR "Sub shape cannot be transformed" - -//============================================================================= -/*! - * constructor: - */ -//============================================================================= - -GEOM_ITransformOperations_i::GEOM_ITransformOperations_i (PortableServer::POA_ptr thePOA, - GEOM::GEOM_Gen_ptr theEngine, - ::GEOMImpl_ITransformOperations* theImpl) - :GEOM_IOperations_i(thePOA, theEngine, theImpl) -{ - MESSAGE("GEOM_ITransformOperations_i::GEOM_ITransformOperations_i"); -} - -//============================================================================= -/*! - * destructor - */ -//============================================================================= - -GEOM_ITransformOperations_i::~GEOM_ITransformOperations_i() -{ - MESSAGE("GEOM_ITransformOperations_i::~GEOM_ITransformOperations_i"); -} - - -//============================================================================= -/*! - * TranslateTwoPoints - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateTwoPoints - (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr thePoint1, - GEOM::GEOM_Object_ptr thePoint2) -{ - //Set a not done flag - GetOperations()->SetNotDone(); - GEOM::GEOM_Object_var aGEOMObject; - - if (thePoint1 == NULL || thePoint2 == NULL || theObject == NULL) return aGEOMObject._retn(); - - //check if the object is a subshape - if(!theObject->IsMainShape()) { - GetOperations()->SetErrorCode(SUBSHAPE_ERROR); - return aGEOMObject._retn(); - } - - aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject); - - //Get the object itself - Handle(GEOM_Object) anObject = - GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry()); - if (anObject.IsNull()) return aGEOMObject._retn(); - - //Get the first point of translation - Handle(GEOM_Object) aPoint1 = - GetOperations()->GetEngine()->GetObject(thePoint1->GetStudyID(), thePoint1->GetEntry()); - if (aPoint1.IsNull()) return aGEOMObject._retn(); - - //Get the second point of translation - Handle(GEOM_Object) aPoint2 = - GetOperations()->GetEngine()->GetObject(thePoint2->GetStudyID(), thePoint2->GetEntry()); - if (aPoint2.IsNull()) return aGEOMObject._retn(); - - //Perform the translation - GetOperations()->TranslateTwoPoints(anObject, aPoint1, aPoint2); - - return aGEOMObject._retn(); -} - -//============================================================================= -/*! - * TranslateTwoPointsCopy - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateTwoPointsCopy - (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr thePoint1, - GEOM::GEOM_Object_ptr thePoint2) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (thePoint1 == NULL || thePoint2 == NULL || theObject == NULL) return aGEOMObject._retn(); - - //Get the object itself - Handle(GEOM_Object) aBasicObject = - GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry()); - if (aBasicObject.IsNull()) return aGEOMObject._retn(); - - //Get the first point of translation - Handle(GEOM_Object) aPoint1 = - GetOperations()->GetEngine()->GetObject(thePoint1->GetStudyID(), thePoint1->GetEntry()); - if (aPoint1.IsNull()) return aGEOMObject._retn(); - - //Get the second point of translation - Handle(GEOM_Object) aPoint2 = - GetOperations()->GetEngine()->GetObject(thePoint2->GetStudyID(), thePoint2->GetEntry()); - if (aPoint2.IsNull()) return aGEOMObject._retn(); - - //Create the translated shape - Handle(GEOM_Object) anObject = - GetOperations()->TranslateTwoPointsCopy(aBasicObject, aPoint1, aPoint2); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * TranslateDXDYDZ - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateDXDYDZ (GEOM::GEOM_Object_ptr theObject, - CORBA::Double theDX, CORBA::Double theDY, CORBA::Double theDZ) -{ - //Set a not done flag - GetOperations()->SetNotDone(); - GEOM::GEOM_Object_var aGEOMObject ; - - if (theObject == NULL) return aGEOMObject._retn(); - - //check if the object is a subshape - if(!theObject->IsMainShape()) { - GetOperations()->SetErrorCode(SUBSHAPE_ERROR); - return aGEOMObject._retn(); - } - - aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject); - - //Get the object itself - Handle(GEOM_Object) anObject = - GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry()); - if (anObject.IsNull()) return aGEOMObject._retn(); - - //Perform the translation - GetOperations()->TranslateDXDYDZ(anObject, theDX, theDY, theDZ); - - return aGEOMObject._retn(); -} - - -//============================================================================= -/*! - * TranslateDXDYDZCopy - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateDXDYDZCopy - (GEOM::GEOM_Object_ptr theObject, CORBA::Double theDX, CORBA::Double theDY, CORBA::Double theDZ) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theObject == NULL) return aGEOMObject._retn(); - - //Get the object itself - Handle(GEOM_Object) aBasicObject = - GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry()); - if (aBasicObject.IsNull()) return aGEOMObject._retn(); - - - - //Create the translated shape - Handle(GEOM_Object) anObject = - GetOperations()->TranslateDXDYDZCopy(aBasicObject, theDX, theDY, theDZ); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - - -//============================================================================= -/*! - * TranslateVector - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateVector - (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theVector) -{ - //Set a not done flag - GetOperations()->SetNotDone(); - GEOM::GEOM_Object_var aGEOMObject; - - if (theObject == NULL || theVector == NULL) return aGEOMObject._retn(); - - //check if the object is a subshape - if(!theObject->IsMainShape()) { - GetOperations()->SetErrorCode(SUBSHAPE_ERROR); - return aGEOMObject._retn(); - } - - aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject); - - //Get the object itself - Handle(GEOM_Object) anObject = - GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry()); - if (anObject.IsNull()) return aGEOMObject._retn(); - - //Get the vector of translation - Handle(GEOM_Object) aVector = - GetOperations()->GetEngine()->GetObject(theVector->GetStudyID(), theVector->GetEntry()); - if (aVector.IsNull()) return aGEOMObject._retn(); - - //Perform the translation - GetOperations()->TranslateVector(anObject, aVector); - - return aGEOMObject._retn(); -} - -//============================================================================= -/*! - * TranslateVectorCopy - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateVectorCopy - (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theVector) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theObject == NULL || theVector == NULL) return aGEOMObject._retn(); - - //Get the object itself - Handle(GEOM_Object) aBasicObject = - GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry()); - if (aBasicObject.IsNull()) return aGEOMObject._retn(); - - //Get the vector of translation - Handle(GEOM_Object) aVector = - GetOperations()->GetEngine()->GetObject(theVector->GetStudyID(), theVector->GetEntry()); - if (aVector.IsNull()) return aGEOMObject._retn(); - - //Perform the translation - Handle(GEOM_Object) anObject = GetOperations()->TranslateVectorCopy(aBasicObject, aVector); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - - -//============================================================================= -/*! - * Rotate - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::Rotate (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theAxis, - CORBA::Double theAngle) -{ - //Set a not done flag - GetOperations()->SetNotDone(); - GEOM::GEOM_Object_var aGEOMObject; - - if (theObject == NULL || theAxis == NULL) return aGEOMObject._retn(); - - //check if the object is a subshape - if(!theObject->IsMainShape()) { - GetOperations()->SetErrorCode(SUBSHAPE_ERROR); - return aGEOMObject._retn(); - } - - aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject); - - //Get the object itself - Handle(GEOM_Object) anObject = GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry()); - if (anObject.IsNull()) return aGEOMObject._retn(); - - //Get the axis of revolution - Handle(GEOM_Object) anAxis = - GetOperations()->GetEngine()->GetObject(theAxis->GetStudyID(), theAxis->GetEntry()); - if (anAxis.IsNull()) return aGEOMObject._retn(); - - //Perform the rotation - GetOperations()->Rotate(anObject, anAxis, theAngle); - - return aGEOMObject._retn(); -} - -//============================================================================= -/*! - * RotateCopy - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::RotateCopy (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theAxis, - CORBA::Double theAngle) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theObject == NULL || theAxis == NULL) return aGEOMObject._retn(); - - //Get the object itself - Handle(GEOM_Object) aBasicObject = - GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry()); - if (aBasicObject.IsNull()) return aGEOMObject._retn(); - - //Get the axis of rotation - Handle(GEOM_Object) anAxis = - GetOperations()->GetEngine()->GetObject(theAxis->GetStudyID(), theAxis->GetEntry()); - if (anAxis.IsNull()) return aGEOMObject._retn(); - - //Perform the rotation - Handle(GEOM_Object) anObject = GetOperations()->RotateCopy(aBasicObject, anAxis, theAngle); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - - -//============================================================================= -/*! - * MirrorPlane - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorPlane - (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr thePlane) -{ - GEOM::GEOM_Object_var aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject); - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theObject == NULL || thePlane == NULL) return aGEOMObject._retn(); - - //check if the object is a subshape - if(!theObject->IsMainShape()) { - GetOperations()->SetErrorCode(SUBSHAPE_ERROR); - return aGEOMObject._retn(); - } - - //Get the object itself - Handle(GEOM_Object) anObject = - GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry()); - if (anObject.IsNull()) return aGEOMObject._retn(); - - //Get the plane - Handle(GEOM_Object) aPlane = - GetOperations()->GetEngine()->GetObject(thePlane->GetStudyID(), thePlane->GetEntry()); - if (aPlane.IsNull()) return aGEOMObject._retn(); - - //Perform the mirror - GetOperations()->MirrorPlane(anObject, aPlane); - - return aGEOMObject._retn(); -} - -//============================================================================= -/*! - * MirrorPlaneCopy - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorPlaneCopy - (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr thePlane) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theObject == NULL || thePlane == NULL) return aGEOMObject._retn(); - - //Get the object itself - Handle(GEOM_Object) aBasicObject = - GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry()); - if (aBasicObject.IsNull()) return aGEOMObject._retn(); - - //Get the vector of translation - Handle(GEOM_Object) aPlane = - GetOperations()->GetEngine()->GetObject(thePlane->GetStudyID(), thePlane->GetEntry()); - if (aPlane.IsNull()) return aGEOMObject._retn(); - - //Perform the mirror - Handle(GEOM_Object) anObject = GetOperations()->MirrorPlaneCopy(aBasicObject, aPlane); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MirrorAxis - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorAxis - (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theAxis) -{ - GEOM::GEOM_Object_var aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject); - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theObject == NULL || theAxis == NULL) return aGEOMObject._retn(); - - //check if the object is a subshape - if(!theObject->IsMainShape()) { - GetOperations()->SetErrorCode(SUBSHAPE_ERROR); - return aGEOMObject._retn(); - } - - //Get the object itself - Handle(GEOM_Object) anObject = - GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry()); - if (anObject.IsNull()) return aGEOMObject._retn(); - - //Get the axis - Handle(GEOM_Object) aAxis = - GetOperations()->GetEngine()->GetObject(theAxis->GetStudyID(), theAxis->GetEntry()); - if (aAxis.IsNull()) return aGEOMObject._retn(); - - //Perform the mirror - GetOperations()->MirrorAxis(anObject, aAxis); - - return aGEOMObject._retn(); -} - -//============================================================================= -/*! - * MirrorAxisCopy - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorAxisCopy - (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theAxis) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theObject == NULL || theAxis == NULL) return aGEOMObject._retn(); - - //Get the object itself - Handle(GEOM_Object) aBasicObject = - GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry()); - if (aBasicObject.IsNull()) return aGEOMObject._retn(); - - //Get the vector of translation - Handle(GEOM_Object) aAxis = - GetOperations()->GetEngine()->GetObject(theAxis->GetStudyID(), theAxis->GetEntry()); - if (aAxis.IsNull()) return aGEOMObject._retn(); - - //Perform the mirror - Handle(GEOM_Object) anObject = GetOperations()->MirrorAxisCopy(aBasicObject, aAxis); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MirrorPoint - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorPoint - (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr thePoint) -{ - GEOM::GEOM_Object_var aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject); - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theObject == NULL || thePoint == NULL) return aGEOMObject._retn(); - - //check if the object is a subshape - if(!theObject->IsMainShape()) { - GetOperations()->SetErrorCode(SUBSHAPE_ERROR); - return aGEOMObject._retn(); - } - - //Get the object itself - Handle(GEOM_Object) anObject = - GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry()); - if (anObject.IsNull()) return aGEOMObject._retn(); - - //Get the point - Handle(GEOM_Object) aPoint = - GetOperations()->GetEngine()->GetObject(thePoint->GetStudyID(), thePoint->GetEntry()); - if (aPoint.IsNull()) return aGEOMObject._retn(); - - //Perform the mirror - GetOperations()->MirrorPoint(anObject, aPoint); - - return aGEOMObject._retn(); -} - -//============================================================================= -/*! - * MirrorPointCopy - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorPointCopy - (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr thePoint) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theObject == NULL || thePoint == NULL) return aGEOMObject._retn(); - - //Get the object itself - Handle(GEOM_Object) aBasicObject = - GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry()); - if (aBasicObject.IsNull()) return aGEOMObject._retn(); - - //Get the vector of translation - Handle(GEOM_Object) aPoint = - GetOperations()->GetEngine()->GetObject(thePoint->GetStudyID(), thePoint->GetEntry()); - if (aPoint.IsNull()) return aGEOMObject._retn(); - - //Perform the mirror - Handle(GEOM_Object) anObject = GetOperations()->MirrorPointCopy(aBasicObject, aPoint); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - - -//============================================================================= -/*! - * OffsetShape - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::OffsetShape - (GEOM::GEOM_Object_ptr theObject, - CORBA::Double theOffset) -{ - GEOM::GEOM_Object_var aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject); - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theObject == NULL) return aGEOMObject._retn(); - - //check if the object is a subshape - if(!theObject->IsMainShape()) { - GetOperations()->SetErrorCode(SUBSHAPE_ERROR); - return aGEOMObject._retn(); - } - - - //Get the basic object - Handle(GEOM_Object) aBasicObject = - GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry()); - if (aBasicObject.IsNull()) return aGEOMObject._retn(); - - //Create the offset shape - GetOperations()->OffsetShape(aBasicObject, theOffset); - - return aGEOMObject._retn(); -} - -//============================================================================= -/*! - * OffsetShapeCopy - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::OffsetShapeCopy - (GEOM::GEOM_Object_ptr theObject, - CORBA::Double theOffset) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theObject == NULL) return aGEOMObject._retn(); - - //Get the basic object - Handle(GEOM_Object) aBasicObject = - GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry()); - if (aBasicObject.IsNull()) return aGEOMObject._retn(); - - //Create the offset shape - Handle(GEOM_Object) anObject = GetOperations()->OffsetShapeCopy(aBasicObject, theOffset); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - - -//============================================================================= -/*! - * ScaleShape - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::ScaleShape - (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr thePoint, - CORBA::Double theFactor) -{ - GEOM::GEOM_Object_var aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject); - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (thePoint == NULL || theObject == NULL) return aGEOMObject._retn(); - - //check if the object is a subshape - if(!theObject->IsMainShape()) { - GetOperations()->SetErrorCode(SUBSHAPE_ERROR); - return aGEOMObject._retn(); - } - - //Get the object itself - Handle(GEOM_Object) anObject = - GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry()); - if (anObject.IsNull()) return aGEOMObject._retn(); - - //Get the point - Handle(GEOM_Object) aPoint = - GetOperations()->GetEngine()->GetObject(thePoint->GetStudyID(), thePoint->GetEntry()); - if (aPoint.IsNull()) return aGEOMObject._retn(); - - //Perform the scale - GetOperations()->ScaleShape(anObject, aPoint, theFactor); - - return aGEOMObject._retn(); -} - -//============================================================================= -/*! - * ScaleShapeCopy - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::ScaleShapeCopy - (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr thePoint, - CORBA::Double theFactor) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (thePoint == NULL || theObject == NULL) return aGEOMObject._retn(); - - //Get the basic object - Handle(GEOM_Object) aBasicObject = - GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry()); - if (aBasicObject.IsNull()) return aGEOMObject._retn(); - - //Get the point - Handle(GEOM_Object) aPoint = - GetOperations()->GetEngine()->GetObject(thePoint->GetStudyID(), thePoint->GetEntry()); - if (aPoint.IsNull()) return aGEOMObject._retn(); - - //Perform the scale - Handle(GEOM_Object) anObject = - GetOperations()->ScaleShapeCopy(aBasicObject, aPoint, theFactor); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * PositionShape - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::PositionShape - (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theStartLCS, - GEOM::GEOM_Object_ptr theEndLCS) -{ - GEOM::GEOM_Object_var aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject); - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theObject == NULL || theStartLCS == NULL || theEndLCS == NULL) - return aGEOMObject._retn(); - - //check if the object is a subshape - if(!theObject->IsMainShape()) { - GetOperations()->SetErrorCode(SUBSHAPE_ERROR); - return aGEOMObject._retn(); - } - - //Get the basic object - Handle(GEOM_Object) anObject = - GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry()); - if (anObject.IsNull()) return aGEOMObject._retn(); - - //Get the Start LCS - Handle(GEOM_Object) aStartLCS = - GetOperations()->GetEngine()->GetObject(theStartLCS->GetStudyID(), theStartLCS->GetEntry()); - if (aStartLCS.IsNull()) return aGEOMObject._retn(); - - //Get the End LCS - Handle(GEOM_Object) aEndLCS = - GetOperations()->GetEngine()->GetObject(theEndLCS->GetStudyID(), theEndLCS->GetEntry()); - if (aEndLCS.IsNull()) return aGEOMObject._retn(); - - //Perform the Position - GetOperations()->PositionShape(anObject, aStartLCS, aEndLCS); - - return aGEOMObject._retn(); -} - -//============================================================================= -/*! - * PositionShapeCopy - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::PositionShapeCopy - (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theStartLCS, - GEOM::GEOM_Object_ptr theEndLCS) -{ - GEOM::GEOM_Object_var aGEOMObject; - - //Set a not done flag - GetOperations()->SetNotDone(); - - if (theObject == NULL || theStartLCS == NULL || theEndLCS == NULL) - return aGEOMObject._retn(); - - //Get the basic object - Handle(GEOM_Object) aBasicObject = - GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry()); - if (aBasicObject.IsNull()) return aGEOMObject._retn(); - - //Get the Start LCS - Handle(GEOM_Object) aStartLCS = - GetOperations()->GetEngine()->GetObject(theStartLCS->GetStudyID(), theStartLCS->GetEntry()); - if (aStartLCS.IsNull()) return aGEOMObject._retn(); - - //Get the End LCS - Handle(GEOM_Object) aEndLCS = - GetOperations()->GetEngine()->GetObject(theEndLCS->GetStudyID(), theEndLCS->GetEntry()); - if (aEndLCS.IsNull()) return aGEOMObject._retn(); - - //Perform the position - Handle(GEOM_Object) anObject = - GetOperations()->PositionShapeCopy(aBasicObject, aStartLCS, aEndLCS); - if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MultiTranslate1D - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MultiTranslate1D - (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theVector, - CORBA::Double theStep, CORBA::Long theNbTimes) -{ - //Set a not done flag - GetOperations()->SetNotDone(); - - GEOM::GEOM_Object_var aGEOMObject; - - if (theObject == NULL || theVector == NULL) return aGEOMObject._retn(); - - //Get the object itself - Handle(GEOM_Object) aBasicObject = GetOperations()->GetEngine()->GetObject - (theObject->GetStudyID(), theObject->GetEntry()); - if (aBasicObject.IsNull()) return aGEOMObject._retn(); - - //Get the vector of translation - Handle(GEOM_Object) aVector = GetOperations()->GetEngine()->GetObject - (theVector->GetStudyID(), theVector->GetEntry()); - if (aVector.IsNull()) return aGEOMObject._retn(); - - //Perform the translation - Handle(GEOM_Object) anObject = - GetOperations()->Translate1D(aBasicObject, aVector, theStep, theNbTimes); - if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MultiTranslate2D - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MultiTranslate2D (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theVector1, - CORBA::Double theStep1, - CORBA::Long theNbTimes1, - GEOM::GEOM_Object_ptr theVector2, - CORBA::Double theStep2, - CORBA::Long theNbTimes2) -{ - //Set a not done flag - GetOperations()->SetNotDone(); - - GEOM::GEOM_Object_var aGEOMObject; - - if (theObject == NULL || theVector1 == NULL || theVector2 == NULL) return aGEOMObject._retn(); - - //Get the object itself - Handle(GEOM_Object) aBasicObject = GetOperations()->GetEngine()->GetObject - (theObject->GetStudyID(), theObject->GetEntry()); - if (aBasicObject.IsNull()) return aGEOMObject._retn(); - - //Get the vector1 of translation - Handle(GEOM_Object) aVector1 = GetOperations()->GetEngine()->GetObject - (theVector1->GetStudyID(), theVector1->GetEntry()); - if (aVector1.IsNull()) return aGEOMObject._retn(); - - //Get the vector2 of translation - Handle(GEOM_Object) aVector2 = GetOperations()->GetEngine()->GetObject - (theVector2->GetStudyID(), theVector2->GetEntry()); - if (aVector2.IsNull()) return aGEOMObject._retn(); - - //Perform the translation - Handle(GEOM_Object) anObject = GetOperations()->Translate2D - (aBasicObject, aVector1, theStep1, theNbTimes1, aVector2, theStep2, theNbTimes2); - if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MultiRotate1D - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MultiRotate1D (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theVector, - CORBA::Long theNbTimes) -{ - //Set a not done flag - GetOperations()->SetNotDone(); - - GEOM::GEOM_Object_var aGEOMObject; - - if (theObject == NULL || theVector == NULL) return aGEOMObject._retn(); - - //Get the object itself - Handle(GEOM_Object) aBasicObject = GetOperations()->GetEngine()->GetObject - (theObject->GetStudyID(), theObject->GetEntry()); - if (aBasicObject.IsNull()) return aGEOMObject._retn(); - - //Get the a directon of rotation - Handle(GEOM_Object) aVector = GetOperations()->GetEngine()->GetObject - (theVector->GetStudyID(), theVector->GetEntry()); - if (aVector.IsNull()) return aGEOMObject._retn(); - - //Perform the rotation - Handle(GEOM_Object) anObject = GetOperations()->Rotate1D(aBasicObject, aVector, theNbTimes); - if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn(); - - return GetObject(anObject); -} - -//============================================================================= -/*! - * MultiRotate2D - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MultiRotate2D (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theVector, - CORBA::Double theAngle, - CORBA::Long theNbTimes1, - CORBA::Double theStep, - CORBA::Long theNbTimes2) -{ - //Set a not done flag - GetOperations()->SetNotDone(); - - GEOM::GEOM_Object_var aGEOMObject; - - if (theObject == NULL || theVector == NULL) return aGEOMObject._retn(); - - //Get the object itself - Handle(GEOM_Object) aBasicObject = GetOperations()->GetEngine()->GetObject - (theObject->GetStudyID(), theObject->GetEntry()); - if (aBasicObject.IsNull()) return aGEOMObject._retn(); - - //Get the a directon of rotation - Handle(GEOM_Object) aVector = GetOperations()->GetEngine()->GetObject - (theVector->GetStudyID(), theVector->GetEntry()); - if (aVector.IsNull()) return aGEOMObject._retn(); - - //Perform the rotation - Handle(GEOM_Object) anObject = GetOperations()->Rotate2D - (aBasicObject, aVector, theAngle, theNbTimes1, theStep, theNbTimes2); - if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn(); - - return GetObject(anObject); -} diff --git a/src/GEOM_I/GEOM_ITransformOperations_i.hh b/src/GEOM_I/GEOM_ITransformOperations_i.hh deleted file mode 100644 index 4b721ef5f..000000000 --- a/src/GEOM_I/GEOM_ITransformOperations_i.hh +++ /dev/null @@ -1,111 +0,0 @@ - -#ifndef _GEOM_ITransformOperations_i_HeaderFile -#define _GEOM_ITransformOperations_i_HeaderFile - - -#include - -#include CORBA_SERVER_HEADER(GEOM_Gen) -#include "GEOM_IOperations_i.hh" -#include "GEOM_Object_i.hh" - -#include "GEOMImpl_ITransformOperations.hxx" - -class GEOM_ITransformOperations_i : - public virtual POA_GEOM::GEOM_ITransformOperations, - public virtual GEOM_IOperations_i -{ - public: - GEOM_ITransformOperations_i (PortableServer::POA_ptr thePOA, - GEOM::GEOM_Gen_ptr theEngine, - ::GEOMImpl_ITransformOperations* theImpl); - ~GEOM_ITransformOperations_i(); - - GEOM::GEOM_Object_ptr TranslateTwoPoints (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr thePoint1, - GEOM::GEOM_Object_ptr thePoint2); - - GEOM::GEOM_Object_ptr TranslateTwoPointsCopy (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr thePoint1, - GEOM::GEOM_Object_ptr thePoint2); - - GEOM::GEOM_Object_ptr TranslateDXDYDZ (GEOM::GEOM_Object_ptr theObject, CORBA::Double theDX, CORBA::Double theDY, CORBA::Double theDZ); - - - GEOM::GEOM_Object_ptr TranslateDXDYDZCopy (GEOM::GEOM_Object_ptr theObject, CORBA::Double theDX, CORBA::Double theDY, CORBA::Double theDZ); - - GEOM::GEOM_Object_ptr TranslateVector (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theVector); - - GEOM::GEOM_Object_ptr TranslateVectorCopy (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theVector); - - GEOM::GEOM_Object_ptr MultiTranslate1D (GEOM::GEOM_Object_ptr theObject, GEOM::GEOM_Object_ptr theVector, CORBA::Double theStep, CORBA::Long theNbTimes); - - GEOM::GEOM_Object_ptr MultiTranslate2D (GEOM::GEOM_Object_ptr theObject, GEOM::GEOM_Object_ptr theVector1, CORBA::Double theStep1, CORBA::Long theNbTimes1, - GEOM::GEOM_Object_ptr theVector2, CORBA::Double theStep2, CORBA::Long theNbTimes2); - - GEOM::GEOM_Object_ptr Rotate (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theAxis, - CORBA::Double theAngle); - - GEOM::GEOM_Object_ptr MultiRotate1D (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theVector, - CORBA::Long theNbTimes); - - - GEOM::GEOM_Object_ptr MultiRotate2D (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theVector, - CORBA::Double theAngle, - CORBA::Long theNbTimes1, - CORBA::Double theStep, - CORBA::Long theNbTimes2); - - GEOM::GEOM_Object_ptr RotateCopy (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theAxis, - CORBA::Double theAngle); - - GEOM::GEOM_Object_ptr MirrorPlane (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr thePlane); - - GEOM::GEOM_Object_ptr MirrorPlaneCopy (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr thePlane); - - GEOM::GEOM_Object_ptr MirrorAxis (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theAxis); - - GEOM::GEOM_Object_ptr MirrorAxisCopy (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theAxis); - - GEOM::GEOM_Object_ptr MirrorPoint (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr thePoint); - - GEOM::GEOM_Object_ptr MirrorPointCopy (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr thePoint); - - GEOM::GEOM_Object_ptr OffsetShape (GEOM::GEOM_Object_ptr theObject, - CORBA::Double theOffset); - - GEOM::GEOM_Object_ptr OffsetShapeCopy (GEOM::GEOM_Object_ptr theObject, - CORBA::Double theOffset); - - GEOM::GEOM_Object_ptr ScaleShape (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr thePoint, - CORBA::Double theFactor); - - GEOM::GEOM_Object_ptr ScaleShapeCopy (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr thePoint, - CORBA::Double theFactor); - - GEOM::GEOM_Object_ptr PositionShape (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theStartLCS, - GEOM::GEOM_Object_ptr theEndLCS); - - GEOM::GEOM_Object_ptr PositionShapeCopy (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theStartLCS, - GEOM::GEOM_Object_ptr theEndLCS); - - ::GEOMImpl_ITransformOperations* GetOperations() { return (::GEOMImpl_ITransformOperations*)GetImpl(); } -}; - -#endif diff --git a/src/GEOM_I/GEOM_Object_i.cc b/src/GEOM_I/GEOM_Object_i.cc deleted file mode 100644 index c67e139c2..000000000 --- a/src/GEOM_I/GEOM_Object_i.cc +++ /dev/null @@ -1,298 +0,0 @@ -#include - -#include -//#include -#include -#include - -#include "utilities.h" -#include -#include - -#include -#include -#include -#include -#include - -#include -#include -#include - -#ifdef WNT -#pragma warning( disable:4786 ) -#endif - -//============================================================================= -/*! - * constructor: - */ -//============================================================================= - -GEOM_Object_i::GEOM_Object_i (PortableServer::POA_ptr thePOA, GEOM::GEOM_Gen_ptr theEngine, - Handle(GEOM_Object) theImpl) -#ifndef WNT -: SALOME::GenericObj_i( thePOA ), _engine(theEngine), _impl(theImpl) -#endif -{ - thePOA->activate_object(this); -} - -//============================================================================= -/*! - * destructor - */ -//============================================================================= - -GEOM_Object_i::~GEOM_Object_i() -{} - - -//============================================================================= -/*! - * GetEntry - */ -//============================================================================= -char* GEOM_Object_i::GetEntry() -{ - const TDF_Label& aLabel = _impl->GetEntry(); - TCollection_AsciiString anEntry; - TDF_Tool::Entry(aLabel, anEntry); - return CORBA::string_dup(anEntry.ToCString()); -} - -//============================================================================= -/*! - * GetStudyID - */ -//============================================================================= -CORBA::Long GEOM_Object_i::GetStudyID() -{ - return _impl->GetDocID(); -} - - -//============================================================================= -/*! - * GetType - */ -//============================================================================= -CORBA::Long GEOM_Object_i::GetType() -{ - return _impl->GetType(); -} - -//============================================================================= -/*! - * GetShapeType - */ -//============================================================================= -GEOM::shape_type GEOM_Object_i::GetShapeType() -{ - TopoDS_Shape _geom = _impl->GetValue(); - if(_geom.IsNull()) return GEOM::SHAPE; - return (GEOM::shape_type)_geom.ShapeType(); -} - -//============================================================================= -/*! - * SetName - */ -//============================================================================= -void GEOM_Object_i::SetName(const char* theName) -{ - _impl->SetName(theName); -} - - -//============================================================================= -/*! - * GetName - */ -//============================================================================= -char* GEOM_Object_i::GetName() -{ - char* aName = _impl->GetName(); - if(aName) return strdup(aName); - return strdup(""); -} - -//============================================================================= -/*! - * SetStudyEntry - */ -//============================================================================= -void GEOM_Object_i::SetStudyEntry(const char* theEntry) -{ - _impl->SetAuxData(theEntry); -} - - -//============================================================================= -/*! - * GetStudyEntry - */ -//============================================================================= -char* GEOM_Object_i::GetStudyEntry() -{ - TCollection_AsciiString anEntry = _impl->GetAuxData(); - if(!anEntry.IsEmpty()) return strdup(anEntry.ToCString()); - return strdup(""); -} - - -//============================================================================= -/*! - * GetDependency - */ -//============================================================================= -GEOM::ListOfGO* GEOM_Object_i::GetDependency() -{ - GEOM::ListOfGO_var aList = new GEOM::ListOfGO(); - aList->length(0); - - Handle(TColStd_HSequenceOfTransient) aSeq = _impl->GetAllDependency(); - if (aSeq.IsNull()) return aList._retn(); - int aLength = aSeq->Length(); - if (aLength == 0) return aList._retn(); - - aList->length(aLength); - - TCollection_AsciiString anEntry; - - for (int i = 1; i<=aLength; i++) { - Handle(GEOM_Object) anObj = Handle(GEOM_Object)::DownCast(aSeq->Value(i)); - if (anObj.IsNull()) continue; - TDF_Tool::Entry(anObj->GetEntry(), anEntry); - GEOM::GEOM_Object_var obj = GEOM::GEOM_Object::_duplicate(_engine->GetObject(anObj->GetDocID(), anEntry.ToCString())); - aList[i-1] = obj; - } - - return aList._retn(); -} - -//============================================================================= -/*! - * GetLastDependency - */ -//============================================================================= -GEOM::ListOfGO* GEOM_Object_i::GetLastDependency() -{ - GEOM::ListOfGO_var aList = new GEOM::ListOfGO(); - aList->length(0); - - Handle(TColStd_HSequenceOfTransient) aSeq = _impl->GetLastDependency(); - if (aSeq.IsNull()) return aList._retn(); - int aLength = aSeq->Length(); - if (aLength == 0) return aList._retn(); - - aList->length(aLength); - - TCollection_AsciiString anEntry; - - for (int i = 1; i<=aLength; i++) { - Handle(GEOM_Object) anObj = Handle(GEOM_Object)::DownCast(aSeq->Value(i)); - if (anObj.IsNull()) continue; - TDF_Tool::Entry(anObj->GetEntry(), anEntry); - GEOM::GEOM_Object_var obj = GEOM::GEOM_Object::_duplicate(_engine->GetObject(anObj->GetDocID(), anEntry.ToCString())); - aList[i-1] = obj; - } - - return aList._retn(); -} - -//================================================================================= -// function : GetShapeStream -// Transfer resulting shape to client as sequence of bytes -//client can extract shape from stream using BrepTools::Read function -//================================================================================= -SALOMEDS::TMPFile* GEOM_Object_i::GetShapeStream() -{ - TopoDS_Shape aShape = _impl->GetValue(); - - if(aShape.IsNull()) return NULL; - - ostrstream streamShape; - //Write TopoDS_Shape in ASCII format to the stream - BRepTools::Write(aShape, streamShape); - //Returns the number of bytes that have been stored in the stream's buffer. - int size = streamShape.pcount(); - char* buf = new char [size]; - //Get pointer on internal character array in ostrstream - char* valueOfStream = streamShape.str(); - //Create copy of ostrstream content - memcpy(buf, valueOfStream, size); - //Allow automatic deletion of ostrstream content - streamShape.rdbuf()->freeze(0); - - CORBA::Octet* OctetBuf = (CORBA::Octet*)buf; - SALOMEDS::TMPFile_var SeqFile = new SALOMEDS::TMPFile(size,size,OctetBuf,1); - return SeqFile._retn(); - -} - - -//======================================================================= -//function : getShape -//purpose : return the TopoDS_Shape when client and servant are colocated, be careful -//======================================================================= -long GEOM_Object_i::getShape() { - _geom = _impl->GetValue(); - return((long)(&_geom)); -} - -//============================================================================= -/*! - * GetSubShapeIndices - */ -//============================================================================= -GEOM::ListOfLong* GEOM_Object_i::GetSubShapeIndices() -{ - GEOM::ListOfLong_var anIndices = new GEOM::ListOfLong; - - if(!_impl->IsMainShape()) { - Handle(GEOM_Function) aFunction = _impl->GetFunction(1); //Get SubShape function (always the first (and last) one) - if(aFunction.IsNull()) return anIndices._retn(); - GEOM_ISubShape ISS(aFunction); - Handle(TColStd_HArray1OfInteger) anArray = ISS.GetIndices(); - if(anArray.IsNull() || anArray->Length() < 1) return anIndices._retn(); - anIndices->length(anArray->Length()); - for(int i=1; i<=anArray->Length(); i++) anIndices[i-1] = anArray->Value(i); - } - else { - anIndices->length(0); - } - - return anIndices._retn(); -} - - -//============================================================================= -/*! - * GetMainShape - */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Object_i::GetMainShape() -{ - GEOM::GEOM_Object_var obj; - if(!_impl->IsMainShape()) { - Handle(GEOM_Function) aFunction = _impl->GetFunction(1); //Get SubShape function (always the first (and last) one) - if(aFunction.IsNull()) return obj._retn(); - GEOM_ISubShape ISS(aFunction); - - aFunction = ISS.GetMainShape(); - if(aFunction.IsNull()) return obj._retn(); - TDF_Label aLabel = aFunction->GetOwnerEntry(); - if(aLabel.IsNull()) return obj._retn(); - TCollection_AsciiString anEntry; - TDF_Tool::Entry(aLabel, anEntry); - return GEOM::GEOM_Object::_duplicate(_engine->GetObject(_impl->GetDocID(), anEntry.ToCString())); - } - - return obj._retn(); -} - -bool GEOM_Object_i::IsShape() -{ - return !_impl->GetValue().IsNull() && _impl->GetType() != GEOM_MARKER; -} diff --git a/src/GEOM_I/GEOM_Object_i.hh b/src/GEOM_I/GEOM_Object_i.hh deleted file mode 100644 index 3191df9ad..000000000 --- a/src/GEOM_I/GEOM_Object_i.hh +++ /dev/null @@ -1,63 +0,0 @@ - -#ifndef _GEOM_Object_i_HeaderFile -#define _GEOM_Object_i_HeaderFile - - -#include -#include CORBA_CLIENT_HEADER(SALOMEDS) -#include CORBA_SERVER_HEADER(GEOM_Gen) - -#include "SALOME_GenericObj_i.hh" - -#include "GEOM_Object.hxx" - -#include - -class GEOM_Object_i : public virtual POA_GEOM::GEOM_Object, public virtual SALOME::GenericObj_i -{ - public: - GEOM_Object_i(PortableServer::POA_ptr thePOA, GEOM::GEOM_Gen_ptr theEngine, Handle(GEOM_Object) theImpl); - ~GEOM_Object_i(); - - virtual char* GetEntry(); - - virtual CORBA::Long GetStudyID(); - - virtual CORBA::Long GetType(); - - virtual GEOM::shape_type GetShapeType(); - - virtual void SetName(const char* theName); - - virtual char* GetName(); - - virtual void SetStudyEntry(const char* theEntry); - - virtual char* GetStudyEntry(); - - virtual GEOM::ListOfGO* GetDependency(); - - virtual GEOM::ListOfGO* GetLastDependency(); - - virtual SALOMEDS::TMPFile* GetShapeStream(); - - long getShape(); - - virtual bool IsMainShape() { return _impl->IsMainShape(); } - - virtual GEOM::ListOfLong* GetSubShapeIndices(); - - virtual GEOM::GEOM_Object_ptr GetMainShape(); - - virtual bool IsShape(); - - Handle(GEOM_Object) GetImpl() { return _impl; } - - private: - - GEOM::GEOM_Gen_ptr _engine; - Handle(GEOM_Object) _impl; - TopoDS_Shape _geom; -}; - -#endif diff --git a/src/GEOM_I/Makefile.in b/src/GEOM_I/Makefile.in deleted file mode 100644 index 0a017bfc2..000000000 --- a/src/GEOM_I/Makefile.in +++ /dev/null @@ -1,98 +0,0 @@ -# GEOM GEOM : implementaion of GEOM_Gen.idl -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Author : Patrick GOLDBRONN (CEA) -# Module : GEOM -# $Header$ - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - -@COMMENCE@ - -# Libraries targets - -LIB = libGEOMEngine.la -LIB_SRC = \ - GEOM_Object_i.cc \ - GEOM_IOperations_i.cc \ - GEOM_IBasicOperations_i.cc \ - GEOM_IHealingOperations_i.cc \ - GEOM_I3DPrimOperations_i.cc \ - GEOM_IShapesOperations_i.cc \ - GEOM_IBlocksOperations_i.cc \ - GEOM_IBooleanOperations_i.cc \ - GEOM_ICurvesOperations_i.cc \ - GEOM_ILocalOperations_i.cc \ - GEOM_IInsertOperations_i.cc \ - GEOM_ITransformOperations_i.cc \ - GEOM_IMeasureOperations_i.cc \ - GEOM_IGroupOperations_i.cc \ - GEOM_Gen_i.cc \ - GEOM_DumpPython.cc - -# SALOME_Component.idl -LIB_CLIENT_IDL = SALOMEDS.idl SALOMEDS_Attributes.idl SALOME_Component.idl SALOME_Exception.idl - #SALOME_Exception.idl SALOME_GenericObj.idl - -LIB_SERVER_IDL = GEOM_Gen.idl - -# Executables targets -BIN = -BIN_SRC = -BIN_CLIENT_IDL = -BIN_SERVER_IDL = - -#This export required to compile GEOM_Superv_i.lo library -EXPORT_HEADERS = GEOM_Object_i.hh \ - GEOM_IOperations_i.hh \ - GEOM_IBasicOperations_i.hh \ - GEOM_IHealingOperations_i.hh \ - GEOM_I3DPrimOperations_i.hh \ - GEOM_IShapesOperations_i.hh \ - GEOM_IBlocksOperations_i.hh \ - GEOM_IBooleanOperations_i.hh \ - GEOM_ICurvesOperations_i.hh \ - GEOM_ILocalOperations_i.hh \ - GEOM_IInsertOperations_i.hh \ - GEOM_ITransformOperations_i.hh \ - GEOM_IMeasureOperations_i.hh \ - GEOM_IGroupOperations_i.hh \ - GEOM_Gen_i.hh - -# additionnal information to compil and link file -CPPFLAGS += $(OCC_INCLUDES) $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome -CXXFLAGS += $(OCC_INCLUDES) $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome -LDFLAGS += -lGEOMArchimede -lGEOMbasic -lGEOMimpl -lGEOMSketcher \ - $(CAS_LDPATH) -lTKIGES -lTKSTEP -lTKFillet -lTKOffset \ - -L${KERNEL_ROOT_DIR}/lib/salome -lSalomeNS -lSalomeContainer -lSalomeGenericObj -lTOOLSDS - -# additional file to be cleaned -MOSTLYCLEAN = -CLEAN = -DISTCLEAN = - -@CONCLUDE@ diff --git a/src/GEOM_I_Superv/GEOM_List_i.hh b/src/GEOM_I_Superv/GEOM_List_i.hh deleted file mode 100644 index 293881e9a..000000000 --- a/src/GEOM_I_Superv/GEOM_List_i.hh +++ /dev/null @@ -1,85 +0,0 @@ -#ifndef __GEOM_LIST_I_H__ -#define __GEOM_LIST_I_H__ - -// IDL headers -#include -#include CORBA_SERVER_HEADER(GEOM_Superv) - -#include "GEOM_Gen_i.hh" -#include "utilities.h" - -template -class GEOM_List_i : - public virtual POA_GEOM::GEOM_List, - public virtual PortableServer::RefCountServantBase -{ -public: - GEOM_List_i(); - GEOM_List_i(const Type& theListToCopy); - ~GEOM_List_i(); - - const Type& GetList(); - - template - void AddObject(ElemType theObject); - -private: - Type myGOList; -}; - -//============================================================================= -// constructor: -//============================================================================= -template -GEOM_List_i::GEOM_List_i() -{ - MESSAGE("GEOM_List_i::GEOM_List_i"); - //create an empty list - myGOList.length(0); -} - -//============================================================================= -// constructor: -//============================================================================= -template -GEOM_List_i::GEOM_List_i(const Type& theListToCopy) -{ - int aLength = theListToCopy.length(); - myGOList.length(aLength); - for (int i = 0; i < aLength; i++) - myGOList[i] = theListToCopy[i]; -} - -//============================================================================= -// destructor: -//============================================================================= -template -GEOM_List_i::~GEOM_List_i() -{ - MESSAGE("GEOM_List_i::~GEOM_List_i"); -} - -//============================================================================= -// GetList: -//============================================================================= -template -const Type& GEOM_List_i::GetList() -{ - MESSAGE("GEOM_List_i::GetList()"); - return myGOList; -} - -//============================================================================= -// AddObject: -//============================================================================= -template -template -void GEOM_List_i::AddObject(ElemType theObject) -{ - MESSAGE("GEOM_List_i::AddObject(...)"); - int aLength = myGOList.length(); - myGOList.length(aLength+1); - myGOList[aLength] = theObject; -} - -#endif diff --git a/src/GEOM_I_Superv/GEOM_Superv_i.cc b/src/GEOM_I_Superv/GEOM_Superv_i.cc deleted file mode 100644 index c295e0c89..000000000 --- a/src/GEOM_I_Superv/GEOM_Superv_i.cc +++ /dev/null @@ -1,1918 +0,0 @@ - -#include "GEOM_Superv_i.hh" -#include "SALOME_LifeCycleCORBA.hxx" -using namespace std; -//============================================================================= -// constructor: -//============================================================================= -GEOM_Superv_i::GEOM_Superv_i(CORBA::ORB_ptr orb, - PortableServer::POA_ptr poa, - PortableServer::ObjectId * contId, - const char *instanceName, - const char *interfaceName) : - Engines_Component_i(orb, poa, contId, instanceName, interfaceName) -{ - MESSAGE("GEOM_Superv_i::GEOM_Superv_i"); - - _thisObj = this ; - _id = _poa->activate_object(_thisObj); - name_service = new SALOME_NamingService(_orb); - //get RootPOA (the default) - //myPOA = PortableServer::RefCountServantBase::_default_POA(); - CORBA::Object_var anObj = _orb->resolve_initial_references("RootPOA"); - myPOA = PortableServer::POA::_narrow(anObj); - - setGeomEngine(); - - myStudyID = -1; - - myBasicOp = GEOM::GEOM_IBasicOperations::_nil(); - my3DPrimOp = GEOM::GEOM_I3DPrimOperations::_nil(); - myBoolOp = GEOM::GEOM_IBooleanOperations::_nil(); - myInsOp = GEOM::GEOM_IInsertOperations::_nil(); - myTransfOp = GEOM::GEOM_ITransformOperations::_nil(); - myShapesOp = GEOM::GEOM_IShapesOperations::_nil(); - myBlocksOp = GEOM::GEOM_IBlocksOperations::_nil(); - myCurvesOp = GEOM::GEOM_ICurvesOperations::_nil(); - myLocalOp = GEOM::GEOM_ILocalOperations::_nil(); - myGroupOp = GEOM::GEOM_IGroupOperations::_nil(); -} - -//============================================================================= -// destructor -//============================================================================= -GEOM_Superv_i::~GEOM_Superv_i() -{ - MESSAGE("GEOM_Superv_i::~GEOM_Superv_i"); - delete name_service; -} - -//============================================================================ -// function : register() -// purpose : register 'name' in 'name_service' -//============================================================================ -void GEOM_Superv_i::register_name(char * name) -{ - GEOM::GEOM_Superv_ptr g = GEOM::GEOM_Superv::_narrow(POA_GEOM::GEOM_Superv::_this()); - name_service->Register(g, strdup(name)); -} - -//============================================================================= -// setGEOMEngine: -//============================================================================= -void GEOM_Superv_i::setGeomEngine() -{ - // get GEOM_Gen engine - SALOME_LifeCycleCORBA* lcc = new SALOME_LifeCycleCORBA( name_service ); - Engines::Component_var comp = lcc->FindOrLoad_Component( "FactoryServer", "GEOM" ); - - myGeomEngine = GEOM::GEOM_Gen::_narrow(comp); -} - -//============================================================================= -// SetStudyID: -//============================================================================= -void GEOM_Superv_i::SetStudyID( CORBA::Long theId ) -{ - myStudyID = theId; -} - -//============================================================================= -// CreateListOfGO: -//============================================================================= -GEOM::GEOM_List_ptr GEOM_Superv_i::CreateListOfGO() -{ - MESSAGE("GEOM_Superv_i::CreateListOfGO()"); - GEOM_List_i* aListPtr = new GEOM_List_i(); - return aListPtr->_this(); -} - -//============================================================================= -// AddItemToListOfGO: -//============================================================================= -void GEOM_Superv_i::AddItemToListOfGO(GEOM::GEOM_List_ptr& theList, - GEOM::GEOM_Object_ptr theObject) -{ - MESSAGE("GEOM_Superv_i::AddItemToListOfGO(...)"); - if (GEOM_List_i* aList = - dynamic_cast*>(GetServant(theList, myPOA).in())) { - aList->AddObject(theObject); - MESSAGE(" NewLength = "<GetList().length()); - } -} - -//============================================================================= -// CreateListOfLong: -//============================================================================= -GEOM::GEOM_List_ptr GEOM_Superv_i::CreateListOfLong() -{ - MESSAGE("GEOM_Superv_i::CreateListOfLong()"); - GEOM_List_i* aListPtr = new GEOM_List_i(); - return aListPtr->_this(); -} - -//============================================================================= -// AddItemToListOfLong: -//============================================================================= -void GEOM_Superv_i::AddItemToListOfLong(GEOM::GEOM_List_ptr& theList, - long theObject) -{ - MESSAGE("GEOM_Superv_i::AddItemToListOfLong(...)"); - if (GEOM_List_i* aList = - dynamic_cast*>(GetServant(theList, myPOA).in())) { - aList->AddObject(theObject); - MESSAGE(" NewLength = "<GetList().length()); - } -} - -//============================================================================= -// CreateListOfDouble: -//============================================================================= -GEOM::GEOM_List_ptr GEOM_Superv_i::CreateListOfDouble() -{ - MESSAGE("GEOM_Superv_i::CreateListOfDouble()"); - GEOM_List_i* aListPtr = new GEOM_List_i(); - return aListPtr->_this(); -} - -//============================================================================= -// AddItemToListOfDouble: -//============================================================================= -void GEOM_Superv_i::AddItemToListOfDouble(GEOM::GEOM_List_ptr& theList, - double theObject) -{ - MESSAGE("GEOM_Superv_i::AddItemToListOfDouble(...)"); - if (GEOM_List_i* aList = - dynamic_cast*>(GetServant(theList, myPOA).in())) { - aList->AddObject(theObject); - MESSAGE(" NewLength = "<GetList().length()); - } -} - -//============================================================================= -// getBasicOp: -//============================================================================= -void GEOM_Superv_i::getBasicOp() -{ - if (CORBA::is_nil(myGeomEngine)) - setGeomEngine(); - // get GEOM_IBasicOperations interface - myBasicOp = myGeomEngine->GetIBasicOperations(myStudyID); -} - -//============================================================================= -// get3DPrimOp: -//============================================================================= -void GEOM_Superv_i::get3DPrimOp() -{ - if (CORBA::is_nil(myGeomEngine)) - setGeomEngine(); - // get GEOM_I3DPrimOperations interface - my3DPrimOp = myGeomEngine->GetI3DPrimOperations(myStudyID); -} - -//============================================================================= -// getBoolOp: -//============================================================================= -void GEOM_Superv_i::getBoolOp() -{ - if (CORBA::is_nil(myGeomEngine)) - setGeomEngine(); - // get GEOM_IBooleanOperations interface - myBoolOp = myGeomEngine->GetIBooleanOperations(myStudyID); -} - -//============================================================================= -// getInsOp: -//============================================================================= -void GEOM_Superv_i::getInsOp() -{ - if (CORBA::is_nil(myGeomEngine)) - setGeomEngine(); - // get GEOM_IInsertOperations interface - myInsOp = myGeomEngine->GetIInsertOperations(myStudyID); -} - -//============================================================================= -// getTransfOp: -//============================================================================= -void GEOM_Superv_i::getTransfOp() -{ - if (CORBA::is_nil(myGeomEngine)) - setGeomEngine(); - // get GEOM_ITransformOperations interface - myTransfOp = myGeomEngine->GetITransformOperations(myStudyID); -} - -//============================================================================= -// getShapesOp: -//============================================================================= -void GEOM_Superv_i::getShapesOp() -{ - if (CORBA::is_nil(myGeomEngine)) - setGeomEngine(); - // get GEOM_IShapesOperations interface - myShapesOp = myGeomEngine->GetIShapesOperations(myStudyID); -} - -//============================================================================= -// getBlocksOp: -//============================================================================= -void GEOM_Superv_i::getBlocksOp() -{ - if (CORBA::is_nil(myGeomEngine)) - setGeomEngine(); - // get GEOM_IBlocksOperations interface - myBlocksOp = myGeomEngine->GetIBlocksOperations(myStudyID); -} - -//============================================================================= -// getCurvesOp: -//============================================================================= -void GEOM_Superv_i::getCurvesOp() -{ - if (CORBA::is_nil(myGeomEngine)) - setGeomEngine(); - // get GEOM_ICurvesOperations interface - myCurvesOp = myGeomEngine->GetICurvesOperations(myStudyID); -} - -//============================================================================= -// getLocalOp: -//============================================================================= -void GEOM_Superv_i::getLocalOp() -{ - if (CORBA::is_nil(myGeomEngine)) - setGeomEngine(); - // get GEOM_ILocalOperations interface - myLocalOp = myGeomEngine->GetILocalOperations(myStudyID); -} - -//============================================================================= -// getGroupOp: -//============================================================================= -void GEOM_Superv_i::getGroupOp() -{ - if (CORBA::is_nil(myGeomEngine)) - setGeomEngine(); - // get GEOM_IGroupOperations interface - myGroupOp = myGeomEngine->GetIGroupOperations(myStudyID); -} - -//============================================================================= -// GetServant: -//============================================================================= -PortableServer::ServantBase_var GEOM_Superv_i::GetServant(CORBA::Object_ptr theObject, - PortableServer::POA_ptr thePOA) -{ - if(CORBA::is_nil(theObject)) return NULL; - PortableServer::Servant aServant = thePOA->reference_to_servant(theObject); - return aServant; -} - -//============================================================================ -// function : Save() -// purpose : save OCAF/Geom document -//============================================================================ -SALOMEDS::TMPFile* GEOM_Superv_i::Save(SALOMEDS::SComponent_ptr theComponent, - const char* theURL, - bool isMultiFile) -{ - SALOMEDS::TMPFile_var aStreamFile; - return aStreamFile._retn(); -} - -//============================================================================ -// function : SaveASCII() -// purpose : -//============================================================================ -SALOMEDS::TMPFile* GEOM_Superv_i::SaveASCII(SALOMEDS::SComponent_ptr theComponent, - const char* theURL, - bool isMultiFile) -{ - SALOMEDS::TMPFile_var aStreamFile; - return aStreamFile._retn(); -} - -//============================================================================ -// function : Load() -// purpose : -//============================================================================ -CORBA::Boolean GEOM_Superv_i::Load(SALOMEDS::SComponent_ptr theComponent, - const SALOMEDS::TMPFile& theStream, - const char* theURL, - bool isMultiFile) -{ - return false; -} - -//============================================================================ -// function : LoadASCII() -// purpose : -//============================================================================ -CORBA::Boolean GEOM_Superv_i::LoadASCII(SALOMEDS::SComponent_ptr theComponent, - const SALOMEDS::TMPFile& theStream, - const char* theURL, - bool isMultiFile) -{ - return false; -} - -//============================================================================ -// function : Close() -// purpose : -//============================================================================ -void GEOM_Superv_i::Close(SALOMEDS::SComponent_ptr theComponent) -{} - -//============================================================================ -// function : ComponentDataType() -// purpose : -//============================================================================ -char* GEOM_Superv_i::ComponentDataType() -{ - return 0; -} - -//============================================================================ -// function : IORToLocalPersistentID() -// purpose : -//============================================================================ -char* GEOM_Superv_i::IORToLocalPersistentID(SALOMEDS::SObject_ptr theSObject, - const char* IORString, - CORBA::Boolean isMultiFile, - CORBA::Boolean isASCII) -{ - return 0; -} - -//============================================================================ -// function : LocalPersistentIDToIOR() -// purpose : Create/Load CORBA object from a persistent ref (an entry) -// : Used when a study is loaded -// : The IOR (IORName) of object created is returned -//============================================================================ -char* GEOM_Superv_i::LocalPersistentIDToIOR(SALOMEDS::SObject_ptr theSObject, - const char* aLocalPersistentID, - CORBA::Boolean isMultiFile, - CORBA::Boolean isASCII) -{ - return 0; -} - -//============================================================================ -// function : CanPublishInStudy -// purpose : -//============================================================================ -bool GEOM_Superv_i::CanPublishInStudy(CORBA::Object_ptr theIOR) -{ - if (CORBA::is_nil(myGeomEngine)) - setGeomEngine(); - return myGeomEngine->CanPublishInStudy(theIOR); -} - -//============================================================================ -// function : PublishInStudy -// purpose : -//============================================================================ -SALOMEDS::SObject_ptr GEOM_Superv_i::PublishInStudy(SALOMEDS::Study_ptr theStudy, - SALOMEDS::SObject_ptr theSObject, - CORBA::Object_ptr theObject, - const char* theName) throw (SALOME::SALOME_Exception) -{ - if (CORBA::is_nil(myGeomEngine)) - setGeomEngine(); - return myGeomEngine->PublishInStudy(theStudy, theSObject, theObject, theName); -} - -//============================================================================ -// function : CanCopy() -// purpose : -//============================================================================ -CORBA::Boolean GEOM_Superv_i::CanCopy(SALOMEDS::SObject_ptr theObject) -{ - return false; -} - -//============================================================================ -// function : CopyFrom() -// purpose : -//============================================================================ -SALOMEDS::TMPFile* GEOM_Superv_i::CopyFrom(SALOMEDS::SObject_ptr theObject, CORBA::Long& theObjectID) -{ - SALOMEDS::TMPFile_var aStreamFile; - return aStreamFile._retn(); -} - -//============================================================================ -// function : CanPaste() -// purpose : -//============================================================================ -CORBA::Boolean GEOM_Superv_i::CanPaste(const char* theComponentName, CORBA::Long theObjectID) -{ - return false; -} - -//============================================================================ -// function : PasteInto() -// purpose : -//============================================================================ -SALOMEDS::SObject_ptr GEOM_Superv_i::PasteInto(const SALOMEDS::TMPFile& theStream, - CORBA::Long theObjectID, - SALOMEDS::SObject_ptr theObject) -{ - SALOMEDS::SObject_var aNewSO; - return aNewSO._retn(); -} - -//================= Primitives Construction : BasicOperations ================= -//============================================================================= -// MakePointXYZ: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointXYZ(CORBA::Double theX, - CORBA::Double theY, - CORBA::Double theZ) -{ - MESSAGE("GEOM_Superv_i::MakePointXYZ"); - if (CORBA::is_nil(myBasicOp)) getBasicOp(); - // make vertex and return - return myBasicOp->MakePointXYZ(theX, theY, theZ); -} - -//============================================================================= -// MakePointWithReference: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointWithReference (GEOM::GEOM_Object_ptr theReference, - CORBA::Double theX, - CORBA::Double theY, - CORBA::Double theZ) -{ - MESSAGE("GEOM_Superv_i::MakePointWithReference"); - if (CORBA::is_nil(myBasicOp)) getBasicOp(); - return myBasicOp->MakePointWithReference(theReference, theX, theY, theZ); -} - -//============================================================================= -// MakePointOnCurve: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnCurve (GEOM::GEOM_Object_ptr theRefCurve, - CORBA::Double theParameter) -{ - MESSAGE("GEOM_Superv_i::MakePointOnCurve"); - if (CORBA::is_nil(myBasicOp)) getBasicOp(); - return myBasicOp->MakePointOnCurve(theRefCurve, theParameter); -} - -//============================================================================= -// MakeVectorDXDYDZ: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeVectorDXDYDZ (CORBA::Double theDX, - CORBA::Double theDY, - CORBA::Double theDZ) -{ - MESSAGE("GEOM_Superv_i::MakeVectorDXDYDZ"); - if (CORBA::is_nil(myBasicOp)) getBasicOp(); - return myBasicOp->MakeVectorDXDYDZ(theDX, theDY, theDZ); -} - -//============================================================================= -// MakeVectorTwoPnt: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeVectorTwoPnt (GEOM::GEOM_Object_ptr thePnt1, - GEOM::GEOM_Object_ptr thePnt2) -{ - MESSAGE("GEOM_Superv_i::MakeVector"); - if (CORBA::is_nil(myBasicOp)) getBasicOp(); - return myBasicOp->MakeVectorTwoPnt(thePnt1, thePnt2); -} - -//============================================================================= -// MakeLineTwoPnt: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeLineTwoPnt (GEOM::GEOM_Object_ptr thePnt1, - GEOM::GEOM_Object_ptr thePnt2) -{ - MESSAGE("GEOM_Superv_i::MakeLineTwoPnt"); - if (CORBA::is_nil(myBasicOp)) getBasicOp(); - return myBasicOp->MakeLineTwoPnt(thePnt1, thePnt2); -} - -//============================================================================= -// MakePlaneThreePnt: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlaneThreePnt (GEOM::GEOM_Object_ptr thePnt1, - GEOM::GEOM_Object_ptr thePnt2, - GEOM::GEOM_Object_ptr thePnt3, - CORBA::Double theTrimSize) -{ - MESSAGE("GEOM_Superv_i::MakePlaneThreePnt"); - if (CORBA::is_nil(myBasicOp)) getBasicOp(); - return myBasicOp->MakePlaneThreePnt(thePnt1, thePnt2, thePnt3, theTrimSize); -} - -//============================================================================= -// MakePlanePntVec: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlanePntVec (GEOM::GEOM_Object_ptr thePnt, - GEOM::GEOM_Object_ptr theVec, - CORBA::Double theTrimSize) -{ - MESSAGE("GEOM_Superv_i::MakePlanePntVec"); - if (CORBA::is_nil(myBasicOp)) getBasicOp(); - return myBasicOp->MakePlanePntVec(thePnt, theVec, theTrimSize); -} - -//============================================================================= -// MakePlaneFace: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlaneFace (GEOM::GEOM_Object_ptr theFace, - CORBA::Double theTrimSize) -{ - MESSAGE("GEOM_Superv_i::MakePlaneFace"); - if (CORBA::is_nil(myBasicOp)) getBasicOp(); - return myBasicOp->MakePlaneFace(theFace, theTrimSize); -} - -//============================================================================= -// MakeMarker: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMarker -(CORBA::Double theOX , CORBA::Double theOY , CORBA::Double theOZ, - CORBA::Double theXDX, CORBA::Double theXDY, CORBA::Double theXDZ, - CORBA::Double theYDX, CORBA::Double theYDY, CORBA::Double theYDZ) -{ - MESSAGE("GEOM_Superv_i::MakeMarker"); - if (CORBA::is_nil(myBasicOp)) getBasicOp(); - return myBasicOp->MakeMarker(theOX, theOY, theOZ, theXDX, theXDY, theXDZ, theYDX, theYDY, theYDZ); -} - -//================= Primitives Construction : 3DPrimOperations ================ -//============================================================================= -// MakeBox: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBox (CORBA::Double theX1, - CORBA::Double theY1, - CORBA::Double theZ1, - CORBA::Double theX2, - CORBA::Double theY2, - CORBA::Double theZ2) -{ - MESSAGE("GEOM_Superv_i::MakeBox"); - if (CORBA::is_nil(myBasicOp)) getBasicOp(); - if (CORBA::is_nil(my3DPrimOp)) get3DPrimOp(); - return my3DPrimOp->MakeBoxTwoPnt(myBasicOp->MakePointXYZ(theX1, theY1, theZ1), - myBasicOp->MakePointXYZ(theX2, theY2, theZ2)); -} - -//============================================================================= -// MakeBoxDXDYDZ: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBoxDXDYDZ (CORBA::Double theDX, - CORBA::Double theDY, - CORBA::Double theDZ) -{ - MESSAGE("GEOM_Superv_i::MakeBoxDXDYDZ"); - if (CORBA::is_nil(my3DPrimOp)) get3DPrimOp(); - return my3DPrimOp->MakeBoxDXDYDZ(theDX, theDY, theDZ); -} - -//============================================================================= -// MakeBoxTwoPnt: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBoxTwoPnt (GEOM::GEOM_Object_ptr thePnt1, - GEOM::GEOM_Object_ptr thePnt2) -{ - MESSAGE("GEOM_Superv_i::MakeBoxTwoPnt"); - if (CORBA::is_nil(my3DPrimOp)) get3DPrimOp(); - return my3DPrimOp->MakeBoxTwoPnt(thePnt1, thePnt2); -} - -//============================================================================= -// MakeCylinderPntVecRH: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCylinderPntVecRH (GEOM::GEOM_Object_ptr thePnt, - GEOM::GEOM_Object_ptr theAxis, - CORBA::Double theRadius, - CORBA::Double theHeight) -{ - MESSAGE("GEOM_Superv_i::MakeCylinderPntVecRH"); - if (CORBA::is_nil(my3DPrimOp)) get3DPrimOp(); - return my3DPrimOp->MakeCylinderPntVecRH(thePnt, theAxis, theRadius, theHeight); -} - -//============================================================================= -// MakeCylinderRH: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCylinderRH (CORBA::Double theR, - CORBA::Double theH) -{ - MESSAGE("GEOM_Superv_i::MakeCylinderRH"); - if (CORBA::is_nil(my3DPrimOp)) get3DPrimOp(); - return my3DPrimOp->MakeCylinderRH(theR, theH); -} - -//============================================================================= -// MakeSphere: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSphere (CORBA::Double theX, - CORBA::Double theY, - CORBA::Double theZ, - CORBA::Double theRadius) -{ - MESSAGE("GEOM_Superv_i::MakeSphepe"); - if (CORBA::is_nil(myBasicOp)) getBasicOp(); - if (CORBA::is_nil(my3DPrimOp)) get3DPrimOp(); - return my3DPrimOp->MakeSpherePntR(myBasicOp->MakePointXYZ(theX, theY, theZ), theRadius); -} - -//============================================================================= -// MakeSphereR: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSphereR (CORBA::Double theR) -{ - MESSAGE("GEOM_Superv_i::MakeSphereR"); - if (CORBA::is_nil(my3DPrimOp)) get3DPrimOp(); - return my3DPrimOp->MakeSphereR(theR); -} - -//============================================================================= -// MakeSpherePntR: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSpherePntR (GEOM::GEOM_Object_ptr thePnt, - CORBA::Double theR) -{ - MESSAGE("GEOM_Superv_i::MakeSpherePntR"); - if (CORBA::is_nil(my3DPrimOp)) get3DPrimOp(); - return my3DPrimOp->MakeSpherePntR(thePnt, theR); -} - -//============================================================================= -// MakeTorusPntVecRR: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTorusPntVecRR (GEOM::GEOM_Object_ptr thePnt, - GEOM::GEOM_Object_ptr theVec, - CORBA::Double theRMajor, - CORBA::Double theRMinor) -{ - MESSAGE("GEOM_Superv_i::MakeTorusPntVecRR"); - if (CORBA::is_nil(my3DPrimOp)) get3DPrimOp(); - return my3DPrimOp->MakeTorusPntVecRR(thePnt, theVec, theRMajor, theRMinor); -} - -//============================================================================= -// MakeTorusRR: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTorusRR (CORBA::Double theRMajor, - CORBA::Double theRMinor) -{ - MESSAGE("GEOM_Superv_i::MakeTorusRR"); - if (CORBA::is_nil(my3DPrimOp)) get3DPrimOp(); - return my3DPrimOp->MakeTorusRR(theRMajor, theRMinor); -} - -//============================================================================= -// MakeConePntVecR1R2H: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeConePntVecR1R2H (GEOM::GEOM_Object_ptr thePnt, - GEOM::GEOM_Object_ptr theAxis, - CORBA::Double theR1, - CORBA::Double theR2, - CORBA::Double theHeight) -{ - MESSAGE("GEOM_Superv_i::MakeConePntVecR1R2H"); - if (CORBA::is_nil(my3DPrimOp)) get3DPrimOp(); - return my3DPrimOp->MakeConePntVecR1R2H(thePnt, theAxis, theR1, theR2, theHeight); -} - -//============================================================================= -// MakeConeR1R2H: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeConeR1R2H (CORBA::Double theR1, - CORBA::Double theR2, - CORBA::Double theHeight) -{ - MESSAGE("GEOM_Superv_i::MakeConeR1R2H"); - if (CORBA::is_nil(my3DPrimOp)) get3DPrimOp(); - return my3DPrimOp->MakeConeR1R2H(theR1, theR2, theHeight); -} - -//============================================================================= -// MakePrismVecH: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismVecH (GEOM::GEOM_Object_ptr theBase, - GEOM::GEOM_Object_ptr theVec, - CORBA::Double theH) -{ - MESSAGE("GEOM_Superv_i::MakePrismVecH"); - if (CORBA::is_nil(my3DPrimOp)) get3DPrimOp(); - return my3DPrimOp->MakePrismVecH(theBase, theVec, theH); -} - - -//============================================================================= -// MakePrismTwoPnt: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismTwoPnt (GEOM::GEOM_Object_ptr theBase, - GEOM::GEOM_Object_ptr thePoint1, - GEOM::GEOM_Object_ptr thePoint2) -{ - MESSAGE("GEOM_Superv_i::MakePrismTwoPnt"); - if (CORBA::is_nil(my3DPrimOp)) get3DPrimOp(); - return my3DPrimOp->MakePrismTwoPnt(theBase, thePoint1, thePoint2); -} - -//============================================================================= -// MakePipe: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipe (GEOM::GEOM_Object_ptr theBase, - GEOM::GEOM_Object_ptr thePath) -{ - MESSAGE("GEOM_Superv_i::MakePipe"); - if (CORBA::is_nil(my3DPrimOp)) get3DPrimOp(); - return my3DPrimOp->MakePipe(theBase, thePath); -} - -//============================================================================= -// MakeRevolutionAxisAngle: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeRevolutionAxisAngle (GEOM::GEOM_Object_ptr theBase, - GEOM::GEOM_Object_ptr theAxis, - CORBA::Double theAngle) -{ - MESSAGE("GEOM_Superv_i::MakeRevolutionAxisAngle"); - if (CORBA::is_nil(my3DPrimOp)) get3DPrimOp(); - return my3DPrimOp->MakeRevolutionAxisAngle(theBase, theAxis, theAngle); -} - -//============================================================================= -// MakeFilling: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilling (GEOM::GEOM_Object_ptr theShape, - CORBA::Long theMinDeg, CORBA::Long theMaxDeg, - CORBA::Double theTol2D, CORBA::Double theTol3D, - CORBA::Long theNbIter) -{ - MESSAGE("GEOM_Superv_i::MakeFilling"); - if (CORBA::is_nil(my3DPrimOp)) get3DPrimOp(); - return my3DPrimOp->MakeFilling(theShape, theMinDeg, theMaxDeg, theTol2D, theTol3D, theNbIter); -} - -//============================= BooleanOperations ============================= -//============================================================================= -// MakeBoolean: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBoolean (GEOM::GEOM_Object_ptr theShape1, - GEOM::GEOM_Object_ptr theShape2, - CORBA::Long theOperation) -{ - // theOperation indicates the operation to be done: - // 1 - Common, 2 - Cut, 3 - Fuse, 4 - Section - MESSAGE("GEOM_Superv_i::MakeBoolean"); - if (CORBA::is_nil(myBoolOp)) getBoolOp(); - return myBoolOp->MakeBoolean(theShape1, theShape2, theOperation); -} - -//============================================================================= -// MakeFuse: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFuse (GEOM::GEOM_Object_ptr theShape1, - GEOM::GEOM_Object_ptr theShape2) -{ - MESSAGE("GEOM_Superv_i::MakeFuse"); - if (CORBA::is_nil(myBoolOp)) getBoolOp(); - return myBoolOp->MakeBoolean(theShape1, theShape2, 3); -} - -//============================================================================= -// MakePartition: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePartition (GEOM::GEOM_List_ptr theShapes, - GEOM::GEOM_List_ptr theTools, - GEOM::GEOM_List_ptr theKeepInside, - GEOM::GEOM_List_ptr theRemoveInside, - CORBA::Short theLimit, - CORBA::Boolean theRemoveWebs, - GEOM::GEOM_List_ptr theMaterials) -{ - MESSAGE("GEOM_Superv_i::MakePartition"); - GEOM_List_i* aListImplS = - dynamic_cast*>(GetServant(theShapes, myPOA).in()); - GEOM_List_i* aListImplT = - dynamic_cast*>(GetServant(theTools, myPOA).in()); - GEOM_List_i* aListImplKI = - dynamic_cast*>(GetServant(theKeepInside, myPOA).in()); - GEOM_List_i* aListImplRI = - dynamic_cast*>(GetServant(theRemoveInside, myPOA).in()); - GEOM_List_i* aListImplM = - dynamic_cast*>(GetServant(theMaterials, myPOA).in()); - if (aListImplS && aListImplT && aListImplKI && aListImplRI && aListImplM) { - if (CORBA::is_nil(myBoolOp)) getBoolOp(); - return myBoolOp->MakePartition(aListImplS->GetList(), aListImplT->GetList(), - aListImplKI->GetList(), aListImplRI->GetList(), - theLimit, theRemoveWebs, aListImplM->GetList()); - } - return NULL; -} - -//============================================================================= -// MakeHalfPartition: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHalfPartition (GEOM::GEOM_Object_ptr theShape, - GEOM::GEOM_Object_ptr thePlane) -{ - MESSAGE("GEOM_Superv_i::MakeHalfPartition"); - if (CORBA::is_nil(myBoolOp)) getBoolOp(); - return myBoolOp->MakeHalfPartition(theShape, thePlane); -} - -//============================== InsertOperations ============================= -//============================================================================= -// MakeCopy: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCopy (GEOM::GEOM_Object_ptr theOriginal) -{ - MESSAGE("GEOM_Superv_i::MakeCopy"); - if (CORBA::is_nil(myInsOp)) getInsOp(); - return myInsOp->MakeCopy(theOriginal); -} - -//============================================================================= -// Export: -//============================================================================= -void GEOM_Superv_i::Export (GEOM::GEOM_Object_ptr theObject, - const char* theFileName, - const char* theFormatName) -{ - MESSAGE("GEOM_Superv_i::Export"); - if (CORBA::is_nil(myInsOp)) getInsOp(); - myInsOp->Export(theObject, theFileName, theFormatName); -} - -//============================================================================= -// Import: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::Import (const char* theFileName, - const char* theFormatName) -{ - MESSAGE("GEOM_Superv_i::Import"); - if (CORBA::is_nil(myInsOp)) getInsOp(); - return myInsOp->Import(theFileName, theFormatName); -} - -//============================================================================= -// ImportTranslators: -//============================================================================= -void GEOM_Superv_i::ImportTranslators (GEOM::string_array_out theFormats, - GEOM::string_array_out thePatterns) -{ - MESSAGE("GEOM_Superv_i::ImportTranslators"); - if (CORBA::is_nil(myInsOp)) getInsOp(); - myInsOp->ImportTranslators(theFormats, thePatterns); -} - -//============================================================================= -// ExportTranslators: -//============================================================================= -void GEOM_Superv_i::ExportTranslators (GEOM::string_array_out theFormats, - GEOM::string_array_out thePatterns) -{ - MESSAGE("GEOM_Superv_i::ExportTranslators"); - if (CORBA::is_nil(myInsOp)) getInsOp(); - myInsOp->ExportTranslators(theFormats, thePatterns); -} - -//============================= TransformOperations =========================== -//============================================================================= -// TranslateTwoPoints: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateTwoPoints (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr thePoint1, - GEOM::GEOM_Object_ptr thePoint2) -{ - MESSAGE("GEOM_Superv_i::TranslateTwoPoints"); - if (CORBA::is_nil(myTransfOp)) getTransfOp(); - return myTransfOp->TranslateTwoPoints(theObject, thePoint1, thePoint2); -} - -//============================================================================= -// TranslateTwoPointsCopy: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateTwoPointsCopy (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr thePoint1, - GEOM::GEOM_Object_ptr thePoint2) -{ - MESSAGE("GEOM_Superv_i::TranslateTwoPointsCopy"); - if (CORBA::is_nil(myTransfOp)) getTransfOp(); - return myTransfOp->TranslateTwoPointsCopy(theObject, thePoint1, thePoint2); -} - -//============================================================================= -// TranslateDXDYDZ: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateDXDYDZ (GEOM::GEOM_Object_ptr theObject, - CORBA::Double theDX, - CORBA::Double theDY, - CORBA::Double theDZ) -{ - MESSAGE("GEOM_Superv_i::TranslateDXDYDZ"); - if (CORBA::is_nil(myTransfOp)) getTransfOp(); - return myTransfOp->TranslateDXDYDZ(theObject, theDX, theDY, theDZ); -} - -//============================================================================= -// TranslateDXDYDZCopy: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateDXDYDZCopy (GEOM::GEOM_Object_ptr theObject, - CORBA::Double theDX, - CORBA::Double theDY, - CORBA::Double theDZ) -{ - MESSAGE("GEOM_Superv_i::TranslateDXDYDZCopy"); - if (CORBA::is_nil(myTransfOp)) getTransfOp(); - return myTransfOp->TranslateDXDYDZCopy(theObject, theDX, theDY, theDZ); -} - -//============================================================================= -// TranslateVector: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateVector (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theVector) -{ - MESSAGE("GEOM_Superv_i::TranslateVector"); - if (CORBA::is_nil(myTransfOp)) getTransfOp(); - return myTransfOp->TranslateVector(theObject, theVector); -} - -//============================================================================= -// TranslateVectorCopy: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateVectorCopy (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theVector) -{ - MESSAGE("GEOM_Superv_i::TranslateVectorCopy"); - if (CORBA::is_nil(myTransfOp)) getTransfOp(); - return myTransfOp->TranslateVectorCopy(theObject, theVector); -} - -//============================================================================= -// MultiTranslate1D: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiTranslate1D (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theVector, - CORBA::Double theStep, - CORBA::Long theNbTimes) -{ - MESSAGE("GEOM_Superv_i::MultiTranslate1D"); - if (CORBA::is_nil(myTransfOp)) getTransfOp(); - return myTransfOp->MultiTranslate1D(theObject, theVector, theStep, theNbTimes); -} - -//============================================================================= -// MultiTranslate2D: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiTranslate2D (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theVector1, - CORBA::Double theStep1, - CORBA::Long theNbTimes1, - GEOM::GEOM_Object_ptr theVector2, - CORBA::Double theStep2, - CORBA::Long theNbTimes2) -{ - MESSAGE("GEOM_Superv_i::MultiTranslate2D"); - if (CORBA::is_nil(myTransfOp)) getTransfOp(); - return myTransfOp->MultiTranslate2D(theObject, theVector1, theStep1, theNbTimes1, - theVector2, theStep2, theNbTimes2); -} - -//============================================================================= -// Rotate: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::Rotate (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theAxis, - CORBA::Double theAngle) -{ - MESSAGE("GEOM_Superv_i::Rotate"); - if (CORBA::is_nil(myTransfOp)) getTransfOp(); - return myTransfOp->Rotate(theObject, theAxis, theAngle); -} - -//============================================================================= -// RotateCopy: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::RotateCopy (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theAxis, - CORBA::Double theAngle) -{ - MESSAGE("GEOM_Superv_i::RotateCopy"); - if (CORBA::is_nil(myTransfOp)) getTransfOp(); - return myTransfOp->RotateCopy(theObject, theAxis, theAngle); -} - -//============================================================================= -// MultiRotate1D: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiRotate1D (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theAxis, - CORBA::Long theNbTimes) -{ - MESSAGE("GEOM_Superv_i::MultiRotate1D"); - if (CORBA::is_nil(myTransfOp)) getTransfOp(); - return myTransfOp->MultiRotate1D(theObject, theAxis, theNbTimes); -} - -//============================================================================= -// MultiRotate2D: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiRotate2D (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theAxis, - CORBA::Double theAngle, - CORBA::Long theNbTimes1, - CORBA::Double theStep, - CORBA::Long theNbTimes2) -{ - MESSAGE("GEOM_Superv_i::MultiRotate2D"); - if (CORBA::is_nil(myTransfOp)) getTransfOp(); - return myTransfOp->MultiRotate2D(theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2); -} - -//============================================================================= -// MirrorPlane: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPlane (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr thePlane) -{ - MESSAGE("GEOM_Superv_i::MirrorPlane"); - if (CORBA::is_nil(myTransfOp)) getTransfOp(); - return myTransfOp->MirrorPlane(theObject, thePlane); -} - -//============================================================================= -// MirrorPlaneCopy: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPlaneCopy (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr thePlane) -{ - MESSAGE("GEOM_Superv_i::MirrorPlaneCopy"); - if (CORBA::is_nil(myTransfOp)) getTransfOp(); - return myTransfOp->MirrorPlaneCopy(theObject, thePlane); -} - -//============================================================================= -// MirrorAxis: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorAxis (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theAxis) -{ - MESSAGE("GEOM_Superv_i::MirrorAxis"); - if (CORBA::is_nil(myTransfOp)) getTransfOp(); - return myTransfOp->MirrorAxis(theObject, theAxis); -} - -//============================================================================= -// MirrorAxisCopy: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorAxisCopy (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theAxis) -{ - MESSAGE("GEOM_Superv_i::MirrorAxisCopy"); - if (CORBA::is_nil(myTransfOp)) getTransfOp(); - return myTransfOp->MirrorAxisCopy(theObject, theAxis); -} - -//============================================================================= -// MirrorPoint: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPoint (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr thePoint) -{ - MESSAGE("GEOM_Superv_i::MirrorPoint"); - if (CORBA::is_nil(myTransfOp)) getTransfOp(); - return myTransfOp->MirrorPoint(theObject, thePoint); -} - -//============================================================================= -// MirrorPointCopy: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPointCopy (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr thePoint) -{ - MESSAGE("GEOM_Superv_i::MirrorPointCopy"); - if (CORBA::is_nil(myTransfOp)) getTransfOp(); - return myTransfOp->MirrorPointCopy(theObject, thePoint); -} - -//============================================================================= -// OffsetShape: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::OffsetShape (GEOM::GEOM_Object_ptr theObject, - CORBA::Double theOffset) -{ - MESSAGE("GEOM_Superv_i::OffsetShape"); - if (CORBA::is_nil(myTransfOp)) getTransfOp(); - return myTransfOp->OffsetShape(theObject, theOffset); -} - -//============================================================================= -// OffsetShapeCopy: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::OffsetShapeCopy (GEOM::GEOM_Object_ptr theObject, - CORBA::Double theOffset) -{ - MESSAGE("GEOM_Superv_i::OffsetShapeCopy"); - if (CORBA::is_nil(myTransfOp)) getTransfOp(); - return myTransfOp->OffsetShapeCopy(theObject, theOffset); -} - -//============================================================================= -// ScaleShape: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShape (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr thePoint, - CORBA::Double theFactor) -{ - MESSAGE("GEOM_Superv_i::ScaleShape"); - if (CORBA::is_nil(myTransfOp)) getTransfOp(); - return myTransfOp->ScaleShape(theObject, thePoint, theFactor); -} - -//============================================================================= -// ScaleShapeCopy: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShapeCopy (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr thePoint, - CORBA::Double theFactor) -{ - MESSAGE("GEOM_Superv_i::ScaleShapeCopy"); - if (CORBA::is_nil(myTransfOp)) getTransfOp(); - return myTransfOp->ScaleShapeCopy(theObject, thePoint, theFactor); -} - -//============================================================================= -// PositionShape: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::PositionShape (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theStartLCS, - GEOM::GEOM_Object_ptr theEndLCS) -{ - MESSAGE("GEOM_Superv_i::PositionShape"); - if (CORBA::is_nil(myTransfOp)) getTransfOp(); - return myTransfOp->PositionShape(theObject, theStartLCS, theEndLCS); -} - -//============================================================================= -// PositionShapeCopy: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::PositionShapeCopy (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theStartLCS, - GEOM::GEOM_Object_ptr theEndLCS) -{ - MESSAGE("GEOM_Superv_i::PositionShapeCopy"); - if (CORBA::is_nil(myTransfOp)) getTransfOp(); - return myTransfOp->PositionShapeCopy(theObject, theStartLCS, theEndLCS); -} - -//=============================== ShapesOperations ============================ -//============================================================================= -// Make: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeEdge (GEOM::GEOM_Object_ptr thePnt1, - GEOM::GEOM_Object_ptr thePnt2) -{ - MESSAGE("GEOM_Superv_i::MakeEdge"); - if (CORBA::is_nil(myShapesOp)) getShapesOp(); - return myShapesOp->MakeEdge(thePnt1, thePnt2); -} - -//============================================================================= -// MakeWire: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeWire (GEOM::GEOM_List_ptr theEdgesAndWires) -{ - MESSAGE("GEOM_Superv_i::MakeWire"); - if (GEOM_List_i* aListImplEW = - dynamic_cast*>(GetServant(theEdgesAndWires, myPOA).in())) { - if (CORBA::is_nil(myShapesOp)) getShapesOp(); - return myShapesOp->MakeWire(aListImplEW->GetList()); - } - return NULL; -} - -//============================================================================= -// MakeFace: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFace (GEOM::GEOM_Object_ptr theWire, - CORBA::Boolean isPlanarWanted) -{ - MESSAGE("GEOM_Superv_i::MakeFace"); - if (CORBA::is_nil(myShapesOp)) getShapesOp(); - return myShapesOp->MakeFace(theWire, isPlanarWanted); -} - -//============================================================================= -// MakeFaceWires: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFaceWires (GEOM::GEOM_List_ptr theWires, - CORBA::Boolean isPlanarWanted) -{ - MESSAGE("GEOM_Superv_i::MakeFaceWires"); - if (GEOM_List_i* aListImplW = - dynamic_cast*>(GetServant(theWires, myPOA).in())) { - if (CORBA::is_nil(myShapesOp)) getShapesOp(); - return myShapesOp->MakeFaceWires(aListImplW->GetList(), isPlanarWanted); - } - return NULL; -} - -//============================================================================= -// MakeShell: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeShell (GEOM::GEOM_List_ptr theFacesAndShells) -{ - MESSAGE("GEOM_Superv_i::MakeShell"); - if (GEOM_List_i* aListImplFS = - dynamic_cast*>(GetServant(theFacesAndShells, myPOA).in())) { - if (CORBA::is_nil(myShapesOp)) getShapesOp(); - return myShapesOp->MakeShell(aListImplFS->GetList()); - } - return NULL; -} - -//============================================================================= -// MakeSolidShell: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSolidShell (GEOM::GEOM_Object_ptr theShell) -{ - MESSAGE("GEOM_Superv_i::MakeSolidShell"); - if (CORBA::is_nil(myShapesOp)) getShapesOp(); - return myShapesOp->MakeSolidShell(theShell); -} - -//============================================================================= -// MakeSolidShells: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSolidShells (GEOM::GEOM_List_ptr theShells) -{ - MESSAGE("GEOM_Superv_i::MakeSolidShells"); - if (GEOM_List_i* aListImplS = - dynamic_cast*>(GetServant(theShells, myPOA).in())) { - if (CORBA::is_nil(myShapesOp)) getShapesOp(); - return myShapesOp->MakeSolidShells(aListImplS->GetList()); - } - return NULL; -} - -//============================================================================= -// MakeCompound: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCompound (GEOM::GEOM_List_ptr theShapes) -{ - MESSAGE("GEOM_Superv_i::MakeCompound"); - if (GEOM_List_i* aListImpl = - dynamic_cast*>(GetServant(theShapes, myPOA).in())) { - if (CORBA::is_nil(myShapesOp)) getShapesOp(); - return myShapesOp->MakeCompound(aListImpl->GetList()); - } - return NULL; -} - -//============================================================================= -// MakeGlueFaces: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeGlueFaces (GEOM::GEOM_Object_ptr theShape, - CORBA::Double theTolerance) -{ - MESSAGE("GEOM_Superv_i::MakeGlueFaces"); - if (CORBA::is_nil(myShapesOp)) getShapesOp(); - return myShapesOp->MakeGlueFaces(theShape, theTolerance); -} - -//============================================================================= -// MakeExplode: -//============================================================================= -GEOM::GEOM_List_ptr GEOM_Superv_i::MakeExplode (GEOM::GEOM_Object_ptr theShape, - CORBA::Long theShapeType, - CORBA::Boolean isSorted) -{ - MESSAGE("GEOM_Superv_i::MakeExplode"); - if (CORBA::is_nil(myShapesOp)) getShapesOp(); - - GEOM::ListOfGO* aList = myShapesOp->MakeExplode(theShape, theShapeType, isSorted); - GEOM_List_i* aListPtr = new GEOM_List_i(*(aList)); - MESSAGE(" List of "<GetList().length()<<" element(s)"); - return aListPtr->_this(); -} - -//============================================================================= -// NumberOfFaces: -//============================================================================= -CORBA::Long GEOM_Superv_i::NumberOfFaces (GEOM::GEOM_Object_ptr theShape) -{ - MESSAGE("GEOM_Superv_i::NumberOfFaces"); - if (CORBA::is_nil(myShapesOp)) getShapesOp(); - return myShapesOp->NumberOfFaces(theShape); -} - -//============================================================================= -// NumberOfEdges: -//============================================================================= -CORBA::Long GEOM_Superv_i::NumberOfEdges (GEOM::GEOM_Object_ptr theShape) -{ - MESSAGE("GEOM_Superv_i::NumberOfEdges"); - if (CORBA::is_nil(myShapesOp)) getShapesOp(); - return myShapesOp->NumberOfEdges(theShape); -} - -//============================================================================= -// ChangeOrientation: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::ChangeOrientation (GEOM::GEOM_Object_ptr theShape) -{ - MESSAGE("GEOM_Superv_i::ChangeOrientation"); - if (CORBA::is_nil(myShapesOp)) getShapesOp(); - return myShapesOp->ChangeOrientation(theShape); -} - - -//=============================== BlocksOperations ============================ -//============================================================================= -// MakeQuad4Vertices: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad4Vertices (GEOM::GEOM_Object_ptr thePnt1, - GEOM::GEOM_Object_ptr thePnt2, - GEOM::GEOM_Object_ptr thePnt3, - GEOM::GEOM_Object_ptr thePnt4) -{ - MESSAGE("GEOM_Superv_i::MakeQuad4Vertices"); - if (CORBA::is_nil(myBlocksOp)) getBlocksOp(); - return myBlocksOp->MakeQuad4Vertices(thePnt1, thePnt2, thePnt3, thePnt4); -} - -//============================================================================= -// MakeQuad: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad (GEOM::GEOM_Object_ptr theEdge1, - GEOM::GEOM_Object_ptr theEdge2, - GEOM::GEOM_Object_ptr theEdge3, - GEOM::GEOM_Object_ptr theEdge4) -{ - MESSAGE("GEOM_Superv_i::MakeQuad"); - if (CORBA::is_nil(myBlocksOp)) getBlocksOp(); - return myBlocksOp->MakeQuad(theEdge1, theEdge2, theEdge3, theEdge4); -} - -//============================================================================= -// MakeQuad2Edges: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad2Edges (GEOM::GEOM_Object_ptr theEdge1, - GEOM::GEOM_Object_ptr theEdge2) -{ - MESSAGE("GEOM_Superv_i::MakeQuad2Edges"); - if (CORBA::is_nil(myBlocksOp)) getBlocksOp(); - return myBlocksOp->MakeQuad2Edges(theEdge1, theEdge2); -} - -//============================================================================= -// MakeHexa: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHexa (GEOM::GEOM_Object_ptr theFace1, - GEOM::GEOM_Object_ptr theFace2, - GEOM::GEOM_Object_ptr theFace3, - GEOM::GEOM_Object_ptr theFace4, - GEOM::GEOM_Object_ptr theFace5, - GEOM::GEOM_Object_ptr theFace6) -{ - MESSAGE("GEOM_Superv_i::MakeHexa"); - if (CORBA::is_nil(myBlocksOp)) getBlocksOp(); - return myBlocksOp->MakeHexa(theFace1, theFace2, theFace3, theFace4, theFace5, theFace6); -} - -//============================================================================= -// MakeHexa2Faces: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHexa2Faces (GEOM::GEOM_Object_ptr theFace1, - GEOM::GEOM_Object_ptr theFace2) -{ - MESSAGE("GEOM_Superv_i::MakeHexa2Faces"); - if (CORBA::is_nil(myBlocksOp)) getBlocksOp(); - return myBlocksOp->MakeHexa2Faces(theFace1, theFace2); -} - -//============================================================================= -// GetPoint: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::GetPoint (GEOM::GEOM_Object_ptr theShape, - CORBA::Double theX, - CORBA::Double theY, - CORBA::Double theZ, - CORBA::Double theEpsilon) -{ - MESSAGE("GEOM_Superv_i::GetPoint"); - if (CORBA::is_nil(myBlocksOp)) getBlocksOp(); - return myBlocksOp->GetPoint(theShape, theX, theY, theZ, theEpsilon); -} - -//============================================================================= -// GetEdge: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::GetEdge (GEOM::GEOM_Object_ptr theShape, - GEOM::GEOM_Object_ptr thePoint1, - GEOM::GEOM_Object_ptr thePoint2) -{ - MESSAGE("GEOM_Superv_i::GetEdge"); - if (CORBA::is_nil(myBlocksOp)) getBlocksOp(); - return myBlocksOp->GetEdge(theShape, thePoint1, thePoint2); -} - -//============================================================================= -// GetEdgeNearPoint: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::GetEdgeNearPoint (GEOM::GEOM_Object_ptr theShape, - GEOM::GEOM_Object_ptr thePoint) -{ - MESSAGE("GEOM_Superv_i::GetEdgeNearPoint"); - if (CORBA::is_nil(myBlocksOp)) getBlocksOp(); - return myBlocksOp->GetEdgeNearPoint(theShape, thePoint); -} - -//============================================================================= -// GetFaceByPoints: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByPoints (GEOM::GEOM_Object_ptr theShape, - GEOM::GEOM_Object_ptr thePoint1, - GEOM::GEOM_Object_ptr thePoint2, - GEOM::GEOM_Object_ptr thePoint3, - GEOM::GEOM_Object_ptr thePoint4) -{ - MESSAGE("GEOM_Superv_i::GetFaceByPoints"); - if (CORBA::is_nil(myBlocksOp)) getBlocksOp(); - return myBlocksOp->GetFaceByPoints(theShape, thePoint1, thePoint2, thePoint3, thePoint4); -} - -//============================================================================= -// GetFaceByEdges: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByEdges (GEOM::GEOM_Object_ptr theShape, - GEOM::GEOM_Object_ptr theEdge1, - GEOM::GEOM_Object_ptr theEdge2) -{ - MESSAGE("GEOM_Superv_i::GetFaceByEdges"); - if (CORBA::is_nil(myBlocksOp)) getBlocksOp(); - return myBlocksOp->GetFaceByEdges(theShape, theEdge1, theEdge2); -} - -//============================================================================= -// GetOppositeFace: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::GetOppositeFace (GEOM::GEOM_Object_ptr theBlock, - GEOM::GEOM_Object_ptr theFace) -{ - MESSAGE("GEOM_Superv_i::GetOppositeFace"); - if (CORBA::is_nil(myBlocksOp)) getBlocksOp(); - return myBlocksOp->GetOppositeFace(theBlock, theFace); -} - -//============================================================================= -// GetFaceNearPoint: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceNearPoint (GEOM::GEOM_Object_ptr theShape, - GEOM::GEOM_Object_ptr thePoint) -{ - MESSAGE("GEOM_Superv_i::GetFaceNearPoint"); - if (CORBA::is_nil(myBlocksOp)) getBlocksOp(); - return myBlocksOp->GetFaceNearPoint(theShape, thePoint); -} - -//============================================================================= -// GetFaceByNormale: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByNormale (GEOM::GEOM_Object_ptr theBlock, - GEOM::GEOM_Object_ptr theVector) -{ - MESSAGE("GEOM_Superv_i::GetFaceByNormale"); - if (CORBA::is_nil(myBlocksOp)) getBlocksOp(); - return myBlocksOp->GetFaceByNormale(theBlock, theVector); -} - -//============================================================================= -// IsCompoundOfBlocks: -//============================================================================= -CORBA::Boolean GEOM_Superv_i::IsCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound, - CORBA::Long theMinNbFaces, - CORBA::Long theMaxNbFaces, - CORBA::Long& theNbBlocks) -{ - MESSAGE("GEOM_Superv_i::IsCompoundOfBlocks"); - if (CORBA::is_nil(myBlocksOp)) getBlocksOp(); - return myBlocksOp->IsCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces, theNbBlocks); -} - -//============================================================================= -// CheckCompoundOfBlocks: -//============================================================================= -CORBA::Boolean GEOM_Superv_i::CheckCompoundOfBlocks -(GEOM::GEOM_Object_ptr theCompound, - GEOM::GEOM_IBlocksOperations::BCErrors_out theErrors) -{ - MESSAGE("GEOM_Superv_i::CheckCompoundOfBlocks"); - if (CORBA::is_nil(myBlocksOp)) getBlocksOp(); - return myBlocksOp->CheckCompoundOfBlocks(theCompound, theErrors); -} - -//============================================================================= -// PrintBCErrors: -//============================================================================= -char* GEOM_Superv_i::PrintBCErrors (GEOM::GEOM_Object_ptr theCompound, - const GEOM::GEOM_IBlocksOperations::BCErrors& theErrors) -{ - MESSAGE("GEOM_Superv_i::PrintBCErrors"); - if (CORBA::is_nil(myBlocksOp)) getBlocksOp(); - return myBlocksOp->PrintBCErrors(theCompound, theErrors); -} - -//============================================================================= -// ExplodeCompoundOfBlocks: -//============================================================================= -GEOM::GEOM_List_ptr GEOM_Superv_i::ExplodeCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound, - CORBA::Long theMinNbFaces, - CORBA::Long theMaxNbFaces) -{ - MESSAGE("GEOM_Superv_i::ExplodeCompoundOfBlocks"); - if (CORBA::is_nil(myBlocksOp)) getBlocksOp(); - GEOM::ListOfGO* aBlocks = myBlocksOp->ExplodeCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces); - GEOM_List_i* aListPtr = new GEOM_List_i(*(aBlocks)); - return aListPtr->_this(); -} - -//============================================================================= -// GetBlockNearPoint: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::GetBlockNearPoint (GEOM::GEOM_Object_ptr theCompound, - GEOM::GEOM_Object_ptr thePoint) -{ - MESSAGE("GEOM_Superv_i::GetBlockNearPoint"); - if (CORBA::is_nil(myBlocksOp)) getBlocksOp(); - return myBlocksOp->GetBlockNearPoint(theCompound, thePoint); -} - -//============================================================================= -// GetBlockByParts: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::GetBlockByParts (GEOM::GEOM_Object_ptr theCompound, - GEOM::GEOM_List_ptr theParts) -{ - MESSAGE("GEOM_Superv_i::GetBlockByParts"); - if (GEOM_List_i* aListImplP = - dynamic_cast*>(GetServant(theParts, myPOA).in())) { - if (CORBA::is_nil(myBlocksOp)) getBlocksOp(); - return myBlocksOp->GetBlockByParts(theCompound, aListImplP->GetList()); - } - return NULL; -} - -//============================================================================= -// GetBlocksByParts: -//============================================================================= -GEOM::GEOM_List_ptr GEOM_Superv_i::GetBlocksByParts (GEOM::GEOM_Object_ptr theCompound, - GEOM::GEOM_List_ptr theParts) -{ - MESSAGE("GEOM_Superv_i::GetBlocksByParts"); - if (GEOM_List_i* aListImplP = - dynamic_cast*>(GetServant(theParts, myPOA).in())) { - if (CORBA::is_nil(myBlocksOp)) getBlocksOp(); - - GEOM::ListOfGO* aBlocks = myBlocksOp->GetBlocksByParts(theCompound, aListImplP->GetList()); - GEOM_List_i* aListPtr = new GEOM_List_i(*(aBlocks)); - return aListPtr->_this(); - } - return NULL; -} - -//============================================================================= -// MakeMultiTransformation1D: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMultiTransformation1D (GEOM::GEOM_Object_ptr theBlock, - CORBA::Long theDirFace1, - CORBA::Long theDirFace2, - CORBA::Long theNbTimes) -{ - MESSAGE("GEOM_Superv_i::MakeMultiTransformation1D"); - if (CORBA::is_nil(myBlocksOp)) getBlocksOp(); - return myBlocksOp->MakeMultiTransformation1D(theBlock, theDirFace1, theDirFace2, theNbTimes); -} - -//============================================================================= -// MakeMultiTransformation2D: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMultiTransformation2D -(GEOM::GEOM_Object_ptr theBlock, - CORBA::Long theDirFace1U, - CORBA::Long theDirFace2U, - CORBA::Long theNbTimesU, - CORBA::Long theDirFace1V, - CORBA::Long theDirFace2V, - CORBA::Long theNbTimesV) -{ - MESSAGE("GEOM_Superv_i::MakeMultiTransformation2D"); - if (CORBA::is_nil(myBlocksOp)) getBlocksOp(); - return myBlocksOp->MakeMultiTransformation2D(theBlock, - theDirFace1U, theDirFace2U, theNbTimesU, - theDirFace1V, theDirFace2V, theNbTimesV); -} - -//=============================== CurvesOperations ============================ -//============================================================================= -// MakeCirclePntVecR: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCirclePntVecR (GEOM::GEOM_Object_ptr theCenter, - GEOM::GEOM_Object_ptr theVector, - CORBA::Double theR) -{ - MESSAGE("GEOM_Superv_i::MakeCirclePntVecR"); - if (CORBA::is_nil(myCurvesOp)) getCurvesOp(); - return myCurvesOp->MakeCirclePntVecR(theCenter, theVector, theR); -} - -//============================================================================= -// MakeCircleThreePnt: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCircleThreePnt (GEOM::GEOM_Object_ptr thePnt1, - GEOM::GEOM_Object_ptr thePnt2, - GEOM::GEOM_Object_ptr thePnt3) -{ - MESSAGE("GEOM_Superv_i::MakeCircleThreePnt"); - if (CORBA::is_nil(myCurvesOp)) getCurvesOp(); - return myCurvesOp->MakeCircleThreePnt(thePnt1, thePnt2, thePnt3); -} - -//============================================================================= -// MakeEllipse: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeEllipse (GEOM::GEOM_Object_ptr theCenter, - GEOM::GEOM_Object_ptr theVector, - CORBA::Double theRMajor, - CORBA::Double theRMinor) -{ - MESSAGE("GEOM_Superv_i::MakeEllipse"); - if (CORBA::is_nil(myCurvesOp)) getCurvesOp(); - return myCurvesOp->MakeEllipse(theCenter, theVector, theRMajor, theRMinor); -} - -//============================================================================= -// MakeArc: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArc (GEOM::GEOM_Object_ptr thePnt1, - GEOM::GEOM_Object_ptr thePnt2, - GEOM::GEOM_Object_ptr thePnt3) -{ - MESSAGE("GEOM_Superv_i::MakeArc"); - if (CORBA::is_nil(myCurvesOp)) getCurvesOp(); - return myCurvesOp->MakeArc(thePnt1, thePnt2, thePnt3); -} - -//============================================================================= -// MakePolyline: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePolyline (GEOM::GEOM_List_ptr thePoints) -{ - MESSAGE("GEOM_Superv_i::MakePolyline"); - if (GEOM_List_i* aListImplP = - dynamic_cast*>(GetServant(thePoints, myPOA).in())) { - if (CORBA::is_nil(myCurvesOp)) getCurvesOp(); - return myCurvesOp->MakePolyline(aListImplP->GetList()); - } - return NULL; -} - -//============================================================================= -// MakeSplineBezier: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSplineBezier (GEOM::GEOM_List_ptr thePoints) -{ - MESSAGE("GEOM_Superv_i::MakeSplineBezier"); - if (GEOM_List_i* aListImplP = - dynamic_cast*>(GetServant(thePoints, myPOA).in())) { - if (CORBA::is_nil(myCurvesOp)) getCurvesOp(); - return myCurvesOp->MakeSplineBezier(aListImplP->GetList()); - } - return NULL; -} - -//============================================================================= -// MakeSplineInterpolation: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSplineInterpolation (GEOM::GEOM_List_ptr thePoints) -{ - MESSAGE("GEOM_Superv_i::MakeSplineInterpolation"); - if (GEOM_List_i* aListImplP = - dynamic_cast*>(GetServant(thePoints, myPOA).in())) { - if (CORBA::is_nil(myCurvesOp)) getCurvesOp(); - return myCurvesOp->MakeSplineInterpolation(aListImplP->GetList()); - } - return NULL; -} - -//============================================================================= -// MakeSketcher: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSketcher (const char* theCommand, - GEOM::GEOM_List_ptr theWorkingPlane) -{ - MESSAGE("GEOM_Superv_i::MakeSketcher"); - if (GEOM_List_i* aListImplWP = - dynamic_cast*>(GetServant(theWorkingPlane, myPOA).in())) { - if (CORBA::is_nil(myCurvesOp)) getCurvesOp(); - return myCurvesOp->MakeSketcher(theCommand, aListImplWP->GetList()); - } - return NULL; -} - -//=============================== LocalOperations ============================= -//============================================================================= -// MakeFilletAll: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletAll (GEOM::GEOM_Object_ptr theShape, - CORBA::Double theR) -{ - MESSAGE("GEOM_Superv_i::MakeFilletAllMakeSketcher"); - if (CORBA::is_nil(myLocalOp)) getLocalOp(); - return myLocalOp->MakeFilletAll(theShape, theR); -} - -//============================================================================= -// MakeFilletEdges: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletEdges (GEOM::GEOM_Object_ptr theShape, - CORBA::Double theR, - GEOM::GEOM_List_ptr theEdges) -{ - MESSAGE("GEOM_Superv_i::MakeFilletEdges"); - if (GEOM_List_i* aListImplE = - dynamic_cast*>(GetServant(theEdges, myPOA).in())) { - if (CORBA::is_nil(myLocalOp)) getLocalOp(); - return myLocalOp->MakeFilletEdges(theShape, theR, aListImplE->GetList()); - } - return NULL; -} - -//============================================================================= -// MakeFilletFaces: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletFaces (GEOM::GEOM_Object_ptr theShape, - CORBA::Double theR, - GEOM::GEOM_List_ptr theFaces) -{ - MESSAGE("GEOM_Superv_i::MakeFilletFaces"); - if (GEOM_List_i* aListImplF = - dynamic_cast*>(GetServant(theFaces, myPOA).in())) { - if (CORBA::is_nil(myLocalOp)) getLocalOp(); - return myLocalOp->MakeFilletFaces(theShape, theR, aListImplF->GetList()); - } - return NULL; -} - -//============================================================================= -// MakeChamferAll: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferAll (GEOM::GEOM_Object_ptr theShape, CORBA::Double theD) -{ - MESSAGE("GEOM_Superv_i::MakeChamferAll"); - if (CORBA::is_nil(myLocalOp)) getLocalOp(); - return myLocalOp->MakeChamferAll(theShape, theD); -} - -//============================================================================= -// MakeChamferEdge: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdge (GEOM::GEOM_Object_ptr theShape, - CORBA::Double theD1, CORBA::Double theD2, - CORBA::Long theFace1, CORBA::Long theFace2) -{ - MESSAGE("GEOM_Superv_i::MakeChamferEdge"); - if (CORBA::is_nil(myLocalOp)) getLocalOp(); - return myLocalOp->MakeChamferEdge(theShape, theD1, theD2, theFace1, theFace2); -} - -//============================================================================= -// MakeChamferFaces: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferFaces (GEOM::GEOM_Object_ptr theShape, - CORBA::Double theD1, CORBA::Double theD2, - GEOM::GEOM_List_ptr theFaces) -{ - MESSAGE("GEOM_Superv_i::MakeChamferFaces"); - if (GEOM_List_i* aListImplF = - dynamic_cast*>(GetServant(theFaces, myPOA).in())) { - if (CORBA::is_nil(myLocalOp)) getLocalOp(); - return myLocalOp->MakeChamferFaces(theShape, theD1, theD2, aListImplF->GetList()); - } - return NULL; -} - -//============================================================================= -// MakeArchimede: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArchimede (GEOM::GEOM_Object_ptr theShape, - CORBA::Double theWeight, - CORBA::Double theWaterDensity, - CORBA::Double theMeshingDeflection) -{ - MESSAGE("GEOM_Superv_i::MakeArchimede"); - if (CORBA::is_nil(myLocalOp)) getLocalOp(); - return myLocalOp->MakeArchimede(theShape, theWeight, theWaterDensity, theMeshingDeflection); -} - -//============================================================================= -// GetSubShapeIndexMakeFilletAll: -//============================================================================= -CORBA::Long GEOM_Superv_i::GetSubShapeIndex (GEOM::GEOM_Object_ptr theShape, - GEOM::GEOM_Object_ptr theSubShape) -{ - MESSAGE("GEOM_Superv_i::GetSubShapeIndexMakeArchimede"); - if (CORBA::is_nil(myLocalOp)) getLocalOp(); - return myLocalOp->GetSubShapeIndex(theShape, theSubShape); -} - -//=============================== GroupOperations ============================= -//============================================================================= -// CreateGroup: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::CreateGroup (GEOM::GEOM_Object_ptr theMainShape, - CORBA::Long theShapeType) -{ - MESSAGE("GEOM_Superv_i::CreateGroup"); - if (CORBA::is_nil(myGroupOp)) getGroupOp(); - return myGroupOp->CreateGroup(theMainShape, theShapeType); -} - -//============================================================================= -// AddObject: -//============================================================================= -void GEOM_Superv_i::AddObject (GEOM::GEOM_Object_ptr theGroup, - CORBA::Long theSubShapeId) -{ - MESSAGE("GEOM_Superv_i::AddObject"); - if (CORBA::is_nil(myGroupOp)) getGroupOp(); - myGroupOp->AddObject(theGroup, theSubShapeId); -} - -//============================================================================= -// RemoveObject: -//============================================================================= -void GEOM_Superv_i::RemoveObject (GEOM::GEOM_Object_ptr theGroup, - CORBA::Long theSubShapeId) -{ - MESSAGE("GEOM_Superv_i::RemoveObject"); - if (CORBA::is_nil(myGroupOp)) getGroupOp(); - myGroupOp->RemoveObject(theGroup, theSubShapeId); -} - -//============================================================================= -// GetType: -//============================================================================= -CORBA::Long GEOM_Superv_i::GetType (GEOM::GEOM_Object_ptr theGroup) -{ - MESSAGE("GEOM_Superv_i::GetType"); - if (CORBA::is_nil(myGroupOp)) getGroupOp(); - return myGroupOp->GetType(theGroup); -} - -//============================================================================= -// GetMainShape: -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_Superv_i::GetMainShape (GEOM::GEOM_Object_ptr theGroup) -{ - MESSAGE("GEOM_Superv_i::GetMainShape"); - if (CORBA::is_nil(myGroupOp)) getGroupOp(); - return myGroupOp->GetMainShape(theGroup); -} - -//============================================================================= -// GetObjects: -//============================================================================= -GEOM::GEOM_List_ptr GEOM_Superv_i::GetObjects (GEOM::GEOM_Object_ptr theGroup) -{ - MESSAGE("GEOM_Superv_i::GetObjects"); - if (CORBA::is_nil(myGroupOp)) getGroupOp(); - - GEOM::ListOfLong* aList = myGroupOp->GetObjects(theGroup); - GEOM_List_i* aListPtr = new GEOM_List_i(*(aList)); - MESSAGE(" List of "<GetList().length()<<" element(s)"); - return aListPtr->_this(); -} - -//===================================================================================== -// EXPORTED METHODS -//===================================================================================== -extern "C" -{ - PortableServer::ObjectId * GEOM_SupervEngine_factory(CORBA::ORB_ptr orb, - PortableServer::POA_ptr poa, - PortableServer::ObjectId * contId, - const char *instanceName, - const char * interfaceName) - { - GEOM_Superv_i * myGEOM_Superv_i = new GEOM_Superv_i(orb, poa, contId, instanceName, interfaceName); - myGEOM_Superv_i->register_name("/myGEOM_Superv"); - return myGEOM_Superv_i->getId() ; - } -} diff --git a/src/GEOM_I_Superv/GEOM_Superv_i.hh b/src/GEOM_I_Superv/GEOM_Superv_i.hh deleted file mode 100644 index 1072758a7..000000000 --- a/src/GEOM_I_Superv/GEOM_Superv_i.hh +++ /dev/null @@ -1,484 +0,0 @@ -#ifndef __GEOM_SUPERV_I_H__ -#define __GEOM_SUPERV_I_H__ - -// IDL headers -#include -#include CORBA_SERVER_HEADER(GEOM_Superv) - -#include "GEOM_Gen_i.hh" -#include "GEOM_List_i.hh" - -class GEOM_Superv_i : public virtual POA_GEOM::GEOM_Superv, - public Engines_Component_i -{ -public: - GEOM_Superv_i(CORBA::ORB_ptr orb, - PortableServer::POA_ptr poa, - PortableServer::ObjectId * contId, - const char *instanceName, - const char *interfaceName); - ~GEOM_Superv_i(); - - // generic method to be put in a super class - void register_name(char * name); - void setGeomEngine(); - - void getBasicOp(); - void get3DPrimOp(); - void getBoolOp(); - void getInsOp(); - void getTransfOp(); - void getShapesOp(); - void getBlocksOp(); - void getCurvesOp(); - void getLocalOp(); - void getGroupOp(); - - PortableServer::ServantBase_var GetServant(CORBA::Object_ptr theObject, - PortableServer::POA_ptr thePOA); - - //-----------------------------------------------------------------------// - // Set current stydy ID // - //-----------------------------------------------------------------------// - void SetStudyID( CORBA::Long theId ); - - //-----------------------------------------------------------// - // Create ListOfGO and add items to it // - //-----------------------------------------------------------// - GEOM::GEOM_List_ptr CreateListOfGO(); - void AddItemToListOfGO(GEOM::GEOM_List_ptr& theList, - GEOM::GEOM_Object_ptr theObject); - - //-----------------------------------------------------------// - // Create ListOfLong and add items to it // - //-----------------------------------------------------------// - GEOM::GEOM_List_ptr CreateListOfLong(); - void AddItemToListOfLong(GEOM::GEOM_List_ptr& theList, - long theObject); - - //-----------------------------------------------------------// - // Create ListOfDouble and add items to it // - //-----------------------------------------------------------// - GEOM::GEOM_List_ptr CreateListOfDouble(); - void AddItemToListOfDouble(GEOM::GEOM_List_ptr& theList, - double theObject); - - //-----------------------------------------------------------------------// - // Inherited methods from SALOMEDS::Driver // - //-----------------------------------------------------------------------// - - SALOMEDS::TMPFile* Save(SALOMEDS::SComponent_ptr theComponent, - const char* theURL, - bool isMultiFile); - - SALOMEDS::TMPFile* SaveASCII(SALOMEDS::SComponent_ptr theComponent, - const char* theURL, - bool isMultiFile); - - CORBA::Boolean Load(SALOMEDS::SComponent_ptr theComponent, - const SALOMEDS::TMPFile& theStream, - const char* theURL, - bool isMultiFile); - - CORBA::Boolean LoadASCII(SALOMEDS::SComponent_ptr theComponent, - const SALOMEDS::TMPFile& theStream, - const char* theURL, - bool isMultiFile); - - void Close(SALOMEDS::SComponent_ptr theComponent); - char* ComponentDataType(); - - - char* IORToLocalPersistentID(SALOMEDS::SObject_ptr theSObject, - const char* IORString, - CORBA::Boolean isMultiFile, - CORBA::Boolean isASCII); - char* LocalPersistentIDToIOR(SALOMEDS::SObject_ptr theSObject, - const char* aLocalPersistentID, - CORBA::Boolean isMultiFile, - CORBA::Boolean isASCII); - - bool CanPublishInStudy(CORBA::Object_ptr theIOR); - SALOMEDS::SObject_ptr PublishInStudy(SALOMEDS::Study_ptr theStudy, - SALOMEDS::SObject_ptr theSObject, - CORBA::Object_ptr theObject, - const char* theName) throw (SALOME::SALOME_Exception) ; - - CORBA::Boolean CanCopy(SALOMEDS::SObject_ptr theObject); - SALOMEDS::TMPFile* CopyFrom(SALOMEDS::SObject_ptr theObject, CORBA::Long& theObjectID); - CORBA::Boolean CanPaste(const char* theComponentName, CORBA::Long theObjectID); - SALOMEDS::SObject_ptr PasteInto(const SALOMEDS::TMPFile& theStream, - CORBA::Long theObjectID, - SALOMEDS::SObject_ptr theObject); - - //-----------------------------------------------------------// - // Primitives Construction : BasicOperations // - //-----------------------------------------------------------// - GEOM::GEOM_Object_ptr MakePointXYZ (CORBA::Double theX, - CORBA::Double theY, - CORBA::Double theZ); - GEOM::GEOM_Object_ptr MakePointWithReference (GEOM::GEOM_Object_ptr theReference, - CORBA::Double theX, - CORBA::Double theY, - CORBA::Double theZ); - GEOM::GEOM_Object_ptr MakePointOnCurve (GEOM::GEOM_Object_ptr theRefCurve, - CORBA::Double theParameter); - GEOM::GEOM_Object_ptr MakeVectorDXDYDZ (CORBA::Double theDX, - CORBA::Double theDY, - CORBA::Double theDZ); - GEOM::GEOM_Object_ptr MakeVectorTwoPnt (GEOM::GEOM_Object_ptr thePnt1, - GEOM::GEOM_Object_ptr thePnt2); - GEOM::GEOM_Object_ptr MakeLineTwoPnt (GEOM::GEOM_Object_ptr thePnt1, - GEOM::GEOM_Object_ptr thePnt2); - GEOM::GEOM_Object_ptr MakePlaneThreePnt (GEOM::GEOM_Object_ptr thePnt1, - GEOM::GEOM_Object_ptr thePnt2, - GEOM::GEOM_Object_ptr thePnt3, - CORBA::Double theTrimSize); - GEOM::GEOM_Object_ptr MakePlanePntVec (GEOM::GEOM_Object_ptr thePnt, - GEOM::GEOM_Object_ptr theVec, - CORBA::Double theTrimSize); - GEOM::GEOM_Object_ptr MakePlaneFace (GEOM::GEOM_Object_ptr theFace, - CORBA::Double theTrimSize); - GEOM::GEOM_Object_ptr MakeMarker (CORBA::Double theOX , CORBA::Double theOY , CORBA::Double theOZ, - CORBA::Double theXDX, CORBA::Double theXDY, CORBA::Double theXDZ, - CORBA::Double theYDX, CORBA::Double theYDY, CORBA::Double theYDZ); - - //-----------------------------------------------------------// - // Primitives Construction : 3DPrimOperations // - //-----------------------------------------------------------// - GEOM::GEOM_Object_ptr MakeBox (CORBA::Double theX1, - CORBA::Double theY1, - CORBA::Double theZ1, - CORBA::Double theX2, - CORBA::Double theY2, - CORBA::Double theZ2); - GEOM::GEOM_Object_ptr MakeBoxDXDYDZ (CORBA::Double theDX, - CORBA::Double theDY, - CORBA::Double theDZ); - GEOM::GEOM_Object_ptr MakeBoxTwoPnt (GEOM::GEOM_Object_ptr thePnt1, - GEOM::GEOM_Object_ptr thePnt2); - GEOM::GEOM_Object_ptr MakeCylinderPntVecRH (GEOM::GEOM_Object_ptr thePnt, - GEOM::GEOM_Object_ptr theAxis, - CORBA::Double theRadius, - CORBA::Double theHeight); - GEOM::GEOM_Object_ptr MakeCylinderRH (CORBA::Double theR, - CORBA::Double theH); - GEOM::GEOM_Object_ptr MakeSphere (CORBA::Double theX, - CORBA::Double theY, - CORBA::Double theZ, - CORBA::Double theRadius); - GEOM::GEOM_Object_ptr MakeSphereR (CORBA::Double theR); - GEOM::GEOM_Object_ptr MakeSpherePntR (GEOM::GEOM_Object_ptr thePnt, - CORBA::Double theR); - GEOM::GEOM_Object_ptr MakeTorusPntVecRR (GEOM::GEOM_Object_ptr thePnt, - GEOM::GEOM_Object_ptr theVec, - CORBA::Double theRMajor, - CORBA::Double theRMinor); - GEOM::GEOM_Object_ptr MakeTorusRR (CORBA::Double theRMajor, - CORBA::Double theRMinor); - GEOM::GEOM_Object_ptr MakeConePntVecR1R2H (GEOM::GEOM_Object_ptr thePnt, - GEOM::GEOM_Object_ptr theAxis, - CORBA::Double theR1, - CORBA::Double theR2, - CORBA::Double theHeight); - GEOM::GEOM_Object_ptr MakeConeR1R2H (CORBA::Double theR1, - CORBA::Double theR2, - CORBA::Double theHeight); - GEOM::GEOM_Object_ptr MakePrismVecH (GEOM::GEOM_Object_ptr theBase, - GEOM::GEOM_Object_ptr theVec, - CORBA::Double theH); - GEOM::GEOM_Object_ptr MakePrismTwoPnt (GEOM::GEOM_Object_ptr theBase, - GEOM::GEOM_Object_ptr thePoint1, - GEOM::GEOM_Object_ptr thePoint2); - GEOM::GEOM_Object_ptr MakePipe (GEOM::GEOM_Object_ptr theBase, - GEOM::GEOM_Object_ptr thePath); - GEOM::GEOM_Object_ptr MakeRevolutionAxisAngle (GEOM::GEOM_Object_ptr theBase, - GEOM::GEOM_Object_ptr theAxis, - CORBA::Double theAngle); - GEOM::GEOM_Object_ptr MakeFilling (GEOM::GEOM_Object_ptr theShape, - CORBA::Long theMinDeg, CORBA::Long theMaxDeg, - CORBA::Double theTol2D, CORBA::Double theTol3D, - CORBA::Long theNbIter); - - //-----------------------------------------------------------// - // BooleanOperations // - //-----------------------------------------------------------// - GEOM::GEOM_Object_ptr MakeBoolean (GEOM::GEOM_Object_ptr theShape1, - GEOM::GEOM_Object_ptr theShape2, - CORBA::Long theOperation); - GEOM::GEOM_Object_ptr MakeFuse (GEOM::GEOM_Object_ptr theShape1, - GEOM::GEOM_Object_ptr theShape2); - GEOM::GEOM_Object_ptr MakePartition (GEOM::GEOM_List_ptr theShapes, - GEOM::GEOM_List_ptr theTools, - GEOM::GEOM_List_ptr theKeepInside, - GEOM::GEOM_List_ptr theRemoveInside, - CORBA::Short theLimit, - CORBA::Boolean theRemoveWebs, - GEOM::GEOM_List_ptr theMaterials); - GEOM::GEOM_Object_ptr MakeHalfPartition (GEOM::GEOM_Object_ptr theShape, - GEOM::GEOM_Object_ptr thePlane); - - //-----------------------------------------------------------// - // InsertOperations // - //-----------------------------------------------------------// - GEOM::GEOM_Object_ptr MakeCopy (GEOM::GEOM_Object_ptr theOriginal); - void Export (GEOM::GEOM_Object_ptr theObject, - const char* theFileName, - const char* theFormatName); - GEOM::GEOM_Object_ptr Import (const char* theFileName, - const char* theFormatName); - void ImportTranslators (GEOM::string_array_out theFormats, - GEOM::string_array_out thePatterns); - void ExportTranslators (GEOM::string_array_out theFormats, - GEOM::string_array_out thePatterns); - - //-----------------------------------------------------------// - // TransformOperations // - //-----------------------------------------------------------// - GEOM::GEOM_Object_ptr TranslateTwoPoints (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr thePoint1, - GEOM::GEOM_Object_ptr thePoint2); - GEOM::GEOM_Object_ptr TranslateTwoPointsCopy (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr thePoint1, - GEOM::GEOM_Object_ptr thePoint2); - GEOM::GEOM_Object_ptr TranslateDXDYDZ (GEOM::GEOM_Object_ptr theObject, - CORBA::Double theDX, - CORBA::Double theDY, - CORBA::Double theDZ); - GEOM::GEOM_Object_ptr TranslateDXDYDZCopy (GEOM::GEOM_Object_ptr theObject, - CORBA::Double theDX, - CORBA::Double theDY, - CORBA::Double theDZ); - GEOM::GEOM_Object_ptr TranslateVector (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theVector); - GEOM::GEOM_Object_ptr TranslateVectorCopy (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theVector); - GEOM::GEOM_Object_ptr MultiTranslate1D (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theVector, - CORBA::Double theStep, - CORBA::Long theNbTimes); - GEOM::GEOM_Object_ptr MultiTranslate2D (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theVector1, - CORBA::Double theStep1, - CORBA::Long theNbTimes1, - GEOM::GEOM_Object_ptr theVector2, - CORBA::Double theStep2, - CORBA::Long theNbTimes2); - GEOM::GEOM_Object_ptr Rotate (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theAxis, - CORBA::Double theAngle); - GEOM::GEOM_Object_ptr RotateCopy (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theAxis, - CORBA::Double theAngle); - GEOM::GEOM_Object_ptr MultiRotate1D (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theAxis, - CORBA::Long theNbTimes); - GEOM::GEOM_Object_ptr MultiRotate2D (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theAxis, - CORBA::Double theAngle, - CORBA::Long theNbTimes1, - CORBA::Double theStep, - CORBA::Long theNbTimes2); - GEOM::GEOM_Object_ptr MirrorPlane (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr thePlane); - GEOM::GEOM_Object_ptr MirrorPlaneCopy (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr thePlane); - GEOM::GEOM_Object_ptr MirrorAxis (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theAxis); - GEOM::GEOM_Object_ptr MirrorAxisCopy (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theAxis); - GEOM::GEOM_Object_ptr MirrorPoint (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr thePoint); - GEOM::GEOM_Object_ptr MirrorPointCopy (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr thePoint); - GEOM::GEOM_Object_ptr OffsetShape (GEOM::GEOM_Object_ptr theObject, - CORBA::Double theOffset); - GEOM::GEOM_Object_ptr OffsetShapeCopy (GEOM::GEOM_Object_ptr theObject, - CORBA::Double theOffset); - GEOM::GEOM_Object_ptr ScaleShape (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr thePoint, - CORBA::Double theFactor); - GEOM::GEOM_Object_ptr ScaleShapeCopy (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr thePoint, - CORBA::Double theFactor); - GEOM::GEOM_Object_ptr PositionShape (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theStartLCS, - GEOM::GEOM_Object_ptr theEndLCS); - GEOM::GEOM_Object_ptr PositionShapeCopy (GEOM::GEOM_Object_ptr theObject, - GEOM::GEOM_Object_ptr theStartLCS, - GEOM::GEOM_Object_ptr theEndLCS); - - //-----------------------------------------------------------// - // ShapesOperations // - //-----------------------------------------------------------// - GEOM::GEOM_Object_ptr MakeEdge (GEOM::GEOM_Object_ptr thePnt1, - GEOM::GEOM_Object_ptr thePnt2); - GEOM::GEOM_Object_ptr MakeWire (GEOM::GEOM_List_ptr theEdgesAndWires); - GEOM::GEOM_Object_ptr MakeFace (GEOM::GEOM_Object_ptr theWire, - CORBA::Boolean isPlanarWanted); - GEOM::GEOM_Object_ptr MakeFaceWires (GEOM::GEOM_List_ptr theWires, - CORBA::Boolean isPlanarWanted); - GEOM::GEOM_Object_ptr MakeShell (GEOM::GEOM_List_ptr theFacesAndShells); - GEOM::GEOM_Object_ptr MakeSolidShell (GEOM::GEOM_Object_ptr theShell); - GEOM::GEOM_Object_ptr MakeSolidShells (GEOM::GEOM_List_ptr theShells); - GEOM::GEOM_Object_ptr MakeCompound (GEOM::GEOM_List_ptr theShapes); - GEOM::GEOM_Object_ptr MakeGlueFaces (GEOM::GEOM_Object_ptr theShape, - CORBA::Double theTolerance); - GEOM::GEOM_List_ptr MakeExplode (GEOM::GEOM_Object_ptr theShape, - CORBA::Long theShapeType, - CORBA::Boolean isSorted); - CORBA::Long NumberOfFaces (GEOM::GEOM_Object_ptr theShape); - CORBA::Long NumberOfEdges (GEOM::GEOM_Object_ptr theShape); - GEOM::GEOM_Object_ptr ChangeOrientation (GEOM::GEOM_Object_ptr theShape); - - //-----------------------------------------------------------// - // BlocksOperations // - //-----------------------------------------------------------// - GEOM::GEOM_Object_ptr MakeQuad4Vertices (GEOM::GEOM_Object_ptr thePnt1, - GEOM::GEOM_Object_ptr thePnt2, - GEOM::GEOM_Object_ptr thePnt3, - GEOM::GEOM_Object_ptr thePnt4); - GEOM::GEOM_Object_ptr MakeQuad (GEOM::GEOM_Object_ptr theEdge1, - GEOM::GEOM_Object_ptr theEdge2, - GEOM::GEOM_Object_ptr theEdge3, - GEOM::GEOM_Object_ptr theEdge4); - GEOM::GEOM_Object_ptr MakeQuad2Edges (GEOM::GEOM_Object_ptr theEdge1, - GEOM::GEOM_Object_ptr theEdge2); - GEOM::GEOM_Object_ptr MakeHexa (GEOM::GEOM_Object_ptr theFace1, - GEOM::GEOM_Object_ptr theFace2, - GEOM::GEOM_Object_ptr theFace3, - GEOM::GEOM_Object_ptr theFace4, - GEOM::GEOM_Object_ptr theFace5, - GEOM::GEOM_Object_ptr theFace6); - GEOM::GEOM_Object_ptr MakeHexa2Faces (GEOM::GEOM_Object_ptr theFace1, - GEOM::GEOM_Object_ptr theFace2); - GEOM::GEOM_Object_ptr GetPoint (GEOM::GEOM_Object_ptr theShape, - CORBA::Double theX, - CORBA::Double theY, - CORBA::Double theZ, - CORBA::Double theEpsilon); - GEOM::GEOM_Object_ptr GetEdge (GEOM::GEOM_Object_ptr theShape, - GEOM::GEOM_Object_ptr thePoint1, - GEOM::GEOM_Object_ptr thePoint2); - GEOM::GEOM_Object_ptr GetEdgeNearPoint (GEOM::GEOM_Object_ptr theShape, - GEOM::GEOM_Object_ptr thePoint); - GEOM::GEOM_Object_ptr GetFaceByPoints (GEOM::GEOM_Object_ptr theShape, - GEOM::GEOM_Object_ptr thePoint1, - GEOM::GEOM_Object_ptr thePoint2, - GEOM::GEOM_Object_ptr thePoint3, - GEOM::GEOM_Object_ptr thePoint4); - GEOM::GEOM_Object_ptr GetFaceByEdges (GEOM::GEOM_Object_ptr theShape, - GEOM::GEOM_Object_ptr theEdge1, - GEOM::GEOM_Object_ptr theEdge2); - GEOM::GEOM_Object_ptr GetOppositeFace (GEOM::GEOM_Object_ptr theBlock, - GEOM::GEOM_Object_ptr theFace); - GEOM::GEOM_Object_ptr GetFaceNearPoint (GEOM::GEOM_Object_ptr theShape, - GEOM::GEOM_Object_ptr thePoint); - GEOM::GEOM_Object_ptr GetFaceByNormale (GEOM::GEOM_Object_ptr theBlock, - GEOM::GEOM_Object_ptr theVector); - CORBA::Boolean IsCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound, - CORBA::Long theMinNbFaces, - CORBA::Long theMaxNbFaces, - CORBA::Long& theNbBlocks); - CORBA::Boolean CheckCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound, - GEOM::GEOM_IBlocksOperations::BCErrors_out theErrors); - char* PrintBCErrors (GEOM::GEOM_Object_ptr theCompound, - const GEOM::GEOM_IBlocksOperations::BCErrors& theErrors); - GEOM::GEOM_List_ptr ExplodeCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound, - CORBA::Long theMinNbFaces, - CORBA::Long theMaxNbFaces); - GEOM::GEOM_Object_ptr GetBlockNearPoint (GEOM::GEOM_Object_ptr theCompound, - GEOM::GEOM_Object_ptr thePoint); - GEOM::GEOM_Object_ptr GetBlockByParts (GEOM::GEOM_Object_ptr theCompound, - GEOM::GEOM_List_ptr theParts); - GEOM::GEOM_List_ptr GetBlocksByParts (GEOM::GEOM_Object_ptr theCompound, - GEOM::GEOM_List_ptr theParts); - GEOM::GEOM_Object_ptr MakeMultiTransformation1D (GEOM::GEOM_Object_ptr theBlock, - CORBA::Long theDirFace1, - CORBA::Long theDirFace2, - CORBA::Long theNbTimes); - GEOM::GEOM_Object_ptr MakeMultiTransformation2D (GEOM::GEOM_Object_ptr theBlock, - CORBA::Long theDirFace1U, - CORBA::Long theDirFace2U, - CORBA::Long theNbTimesU, - CORBA::Long theDirFace1V, - CORBA::Long theDirFace2V, - CORBA::Long theNbTimesV); - - //-----------------------------------------------------------// - // CurvesOperations // - //-----------------------------------------------------------// - GEOM::GEOM_Object_ptr MakeCirclePntVecR (GEOM::GEOM_Object_ptr theCenter, - GEOM::GEOM_Object_ptr theVector, - CORBA::Double theR); - GEOM::GEOM_Object_ptr MakeCircleThreePnt (GEOM::GEOM_Object_ptr thePnt1, - GEOM::GEOM_Object_ptr thePnt2, - GEOM::GEOM_Object_ptr thePnt3); - GEOM::GEOM_Object_ptr MakeEllipse (GEOM::GEOM_Object_ptr theCenter, - GEOM::GEOM_Object_ptr theVector, - CORBA::Double theRMajor, CORBA::Double theRMinor); - GEOM::GEOM_Object_ptr MakeArc (GEOM::GEOM_Object_ptr thePnt1, - GEOM::GEOM_Object_ptr thePnt2, - GEOM::GEOM_Object_ptr thePnt3); - GEOM::GEOM_Object_ptr MakePolyline (GEOM::GEOM_List_ptr thePoints); - GEOM::GEOM_Object_ptr MakeSplineBezier (GEOM::GEOM_List_ptr thePoints); - GEOM::GEOM_Object_ptr MakeSplineInterpolation (GEOM::GEOM_List_ptr thePoints); - GEOM::GEOM_Object_ptr MakeSketcher (const char* theCommand, - GEOM::GEOM_List_ptr theWorkingPlane); - - //-----------------------------------------------------------// - // LocalOperations // - //-----------------------------------------------------------// - GEOM::GEOM_Object_ptr MakeFilletAll (GEOM::GEOM_Object_ptr theShape, - CORBA::Double theR); - GEOM::GEOM_Object_ptr MakeFilletEdges (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR, - GEOM::GEOM_List_ptr theEdges); - GEOM::GEOM_Object_ptr MakeFilletFaces (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR, - GEOM::GEOM_List_ptr theFaces); - GEOM::GEOM_Object_ptr MakeChamferAll (GEOM::GEOM_Object_ptr theShape, CORBA::Double theD); - GEOM::GEOM_Object_ptr MakeChamferEdge (GEOM::GEOM_Object_ptr theShape, - CORBA::Double theD1, CORBA::Double theD2, - CORBA::Long theFace1, CORBA::Long theFace2); - GEOM::GEOM_Object_ptr MakeChamferFaces (GEOM::GEOM_Object_ptr theShape, - CORBA::Double theD1, CORBA::Double theD2, - GEOM::GEOM_List_ptr theFaces); - GEOM::GEOM_Object_ptr MakeArchimede (GEOM::GEOM_Object_ptr theShape, - CORBA::Double theWeight, - CORBA::Double theWaterDensity, - CORBA::Double theMeshingDeflection); - CORBA::Long GetSubShapeIndex (GEOM::GEOM_Object_ptr theShape, - GEOM::GEOM_Object_ptr theSubShape); - - //-----------------------------------------------------------// - // GroupOperations // - //-----------------------------------------------------------// - GEOM::GEOM_Object_ptr CreateGroup (GEOM::GEOM_Object_ptr theMainShape, - CORBA::Long theShapeType); - void AddObject (GEOM::GEOM_Object_ptr theGroup, - CORBA::Long theSubShapeId); - void RemoveObject (GEOM::GEOM_Object_ptr theGroup, - CORBA::Long theSubShapeId); - CORBA::Long GetType (GEOM::GEOM_Object_ptr theGroup); - GEOM::GEOM_Object_ptr GetMainShape (GEOM::GEOM_Object_ptr theGroup); - GEOM::GEOM_List_ptr GetObjects (GEOM::GEOM_Object_ptr theGroup); - -private: - SALOME_NamingService * name_service; - GEOM::GEOM_Gen_ptr myGeomEngine; - CORBA::Long myStudyID; - PortableServer::POA_var myPOA; - - GEOM::GEOM_IBasicOperations_ptr myBasicOp; - GEOM::GEOM_I3DPrimOperations_ptr my3DPrimOp; - GEOM::GEOM_IBooleanOperations_ptr myBoolOp; - GEOM::GEOM_IInsertOperations_ptr myInsOp; - GEOM::GEOM_ITransformOperations_ptr myTransfOp; - GEOM::GEOM_IShapesOperations_ptr myShapesOp; - GEOM::GEOM_IBlocksOperations_ptr myBlocksOp; - GEOM::GEOM_ICurvesOperations_ptr myCurvesOp; - GEOM::GEOM_ILocalOperations_ptr myLocalOp; - GEOM::GEOM_IGroupOperations_ptr myGroupOp; - -}; - -#endif diff --git a/src/GEOM_I_Superv/Makefile.in b/src/GEOM_I_Superv/Makefile.in deleted file mode 100644 index 90ab6307f..000000000 --- a/src/GEOM_I_Superv/Makefile.in +++ /dev/null @@ -1,64 +0,0 @@ -# GEOM GEOM : implementaion of GEOM_Superv.idl -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Author : Patrick GOLDBRONN (CEA) -# Module : GEOM -# $Header$ - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - -@COMMENCE@ - -# Libraries targets - -LIB = libGEOM_SupervEngine.la -LIB_SRC = \ - GEOM_Superv_i.cc - -LIB_SERVER_IDL = SALOMEDS.idl SALOMEDS_Attributes.idl SALOME_Component.idl SALOME_Exception.idl \ - SALOME_GenericObj.idl SALOME_ModuleCatalog.idl GEOM_Gen.idl GEOM_Superv.idl \ - -# Executables targets -BIN = -BIN_SRC = -BIN_CLIENT_IDL = -BIN_SERVER_IDL = - -EXPORT_HEADERS = - -# additionnal information to compil and link file -CPPFLAGS += $(OCC_INCLUDES) $(QT_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome $(BOOST_CPPFLAGS) -CXXFLAGS += $(OCC_CXXFLAGS) -I${KERNEL_ROOT_DIR}/include/salome -LDFLAGS += -lGEOMEngine -lSalomeNS -lSalomeLifeCycleCORBA -lSalomeContainer -L${KERNEL_ROOT_DIR}/lib/salome -lSalomeGenericObj - -# additional file to be cleaned -MOSTLYCLEAN = -CLEAN = -DISTCLEAN = - -@CONCLUDE@ - diff --git a/src/GEOM_SWIG/GEOM_Nut.py b/src/GEOM_SWIG/GEOM_Nut.py deleted file mode 100755 index 46271b93f..000000000 --- a/src/GEOM_SWIG/GEOM_Nut.py +++ /dev/null @@ -1,68 +0,0 @@ -##################################################################### -#Created :17/02/2005 -#Auhtor :MASLOV Eugeny, KOVALTCHUK Alexey -##################################################################### - -import geompy -import salome -import os -import math - -#Sketcher_1 creation -Sketcher_1 = geompy.MakeSketcher("Sketcher:F 100 -57.7:TT 100 57.7:TT 0 115.47:TT -100 57.7:TT -100 -57.7:TT 0 -115.47:WW") -geompy.addToStudy(Sketcher_1, "Sketcher_1") -Face_1 = geompy.MakeFace(Sketcher_1, 1) -geompy.addToStudy(Face_1, "Face_1") - -#Line creation -Line_1 = geompy.MakeLineTwoPnt(geompy.MakeVertex(0,0,0), geompy.MakeVertex(0,0,100)) -geompy.addToStudy(Line_1, "Line_1") - -#Prism creation -Prism_1 = geompy.MakePrismVecH(Face_1, Line_1, 100) -geompy.addToStudy(Prism_1, "Prism_1") - -#Sketcher_2 creation -Sketcher_2 = geompy.MakeSketcher("Sketcher:F 50 0:TT 80 0:TT 112 13:TT 112 48:TT 80 63:TT 80 90:TT 50 90:WW", [0,0,0, 1,0,0, 0,1,0]) -geompy.addToStudy(Sketcher_2, "Sketcher_2") -Face_2 = geompy.MakeFace(Sketcher_2, 1) -geompy.addToStudy(Face_2, "Face_2") - -#Revolution creation -Revolution_1 = geompy.MakeRevolution(Face_2, Line_1, 2*math.pi) -geompy.addToStudy(Revolution_1, "Revolution_1") - -#Common applying -Common_1 = geompy.MakeBoolean(Revolution_1, Prism_1, 1) -geompy.addToStudy(Common_1, "Common_1") - -#Explode Common_1 on edges -CommonExplodedListEdges = geompy.SubShapeAll(Common_1, geompy.ShapeType["EDGE"]) -for i in range(0, len(CommonExplodedListEdges)): - name = "Edge_"+str(i+1) - geompy.addToStudyInFather(Common_1, CommonExplodedListEdges[i], name) - -#Fillet applying -#ID = geompy.GetSubShapeID(Common_1, CommonExplodedListEdges[0]) -Fillet_1 = geompy.MakeFillet(Common_1, 10, geompy.ShapeType["EDGE"], [6]) -geompy.addToStudy(Fillet_1, "Fillet_1") - -#Chamfer applying -Chamfer_1 = geompy.MakeChamferEdge(Fillet_1, 10, 10, 16, 50 ) -geompy.addToStudy(Chamfer_1, "Chamfer_1") - -Chamfer_2 = geompy.MakeChamferEdge(Chamfer_1, 10, 10, 21, 31 ) -geompy.addToStudy(Chamfer_2, "Chamfer_2") - -#Import of the shape from "slots.brep" -thePath = os.getenv("KERNEL_ROOT_DIR") -theFileName = thePath + "/examples/slots.brep" -theShapeForCut = geompy.ImportBREP(theFileName) -geompy.addToStudy(theShapeForCut, "slot.brep_1") - -#Cut applying -Cut_1 = geompy.MakeBoolean(Chamfer_2, theShapeForCut, 2) -geompy.addToStudy(Cut_1, "Cut_1") - -salome.sg.updateObjBrowser(1) - diff --git a/src/GEOM_SWIG/GEOM_Partition1.py b/src/GEOM_SWIG/GEOM_Partition1.py deleted file mode 100755 index 3a6118833..000000000 --- a/src/GEOM_SWIG/GEOM_Partition1.py +++ /dev/null @@ -1,86 +0,0 @@ -# GEOM GEOM_SWIG : binding of C++ omplementaion with Python -# -# Copyright (C) 2003 CEA/DEN, EDF R&D -# -# -# -# File : GEOM_Partition1.py -# Module : GEOM - -#%Make geometry (like CEA script (A1)) using Partition algorithm% -# appel: -# import alveole_3D_01_GEOM -# reload(alveole_3D_01_GEOM) - -# -- Rayon de la bariere - -barier_height = 7.0 -barier_radius = 5.6 / 2 # Rayon de la bariere -colis_radius = 1.0 / 2 # Rayon du colis -colis_step = 2.0 # Distance s‰parant deux colis -cc_width = 0.11 # Epaisseur du complement de colisage - -# -- - -cc_radius = colis_radius + cc_width -from math import sqrt -colis_center = sqrt(2.0)*colis_step/2 - -# -- - -import geompy -geom = geompy.geom - -boolean_common = 1 -boolean_cut = 2 -boolean_fuse = 3 -boolean_section = 4 - -# -- - -pnt0 = geompy.MakeVertex(0.,0.,0.) -vecz = geompy.MakeVectorDXDYDZ(0.,0.,1.) - -barier = geompy.MakeCylinder( - pnt0, - vecz, - barier_radius, - barier_height) - -# -- - -colis = geompy.MakeCylinder(pnt0, vecz, colis_radius, barier_height) - -cc = geompy.MakeCylinder(pnt0, vecz, cc_radius, barier_height) - -colis_cc = geompy.MakeCompound([colis, cc]) - -colis_cc = geompy.MakeTranslation(colis_cc, colis_center, 0.0, 0.0) - -colis_cc_multi = geompy.MultiRotate1D(colis_cc, vecz, 4) - -# -- - -alveole = geompy.MakePartition([colis_cc_multi, barier]) - -geompy.addToStudy(alveole, "alveole before explode") - -subshapes = geompy.SubShapeAll(alveole, geompy.ShapeType["SHAPE"]) - -## there are 9 subshapes - -comp1 = geompy.MakeCompound([subshapes[0], subshapes[1]]); -comp2 = geompy.MakeCompound([subshapes[2], subshapes[3]]); -comp3 = geompy.MakeCompound([subshapes[4], subshapes[5]]); -comp4 = geompy.MakeCompound([subshapes[6], subshapes[7]]); - -compGOs = [] -compGOs.append(comp1); -compGOs.append(comp2); -compGOs.append(comp3); -compGOs.append(comp4); -comp = geompy.MakeCompound(compGOs); - -alveole = geompy.MakeCompound([comp, subshapes[8]]); - -geompy.addToStudy(alveole, "alveole") diff --git a/src/GEOM_SWIG/GEOM_Partition2.py b/src/GEOM_SWIG/GEOM_Partition2.py deleted file mode 100755 index 2a4ca4e73..000000000 --- a/src/GEOM_SWIG/GEOM_Partition2.py +++ /dev/null @@ -1,145 +0,0 @@ -# GEOM GEOM_SWIG : binding of C++ omplementaion with Python -# -# Copyright (C) 2003 CEA/DEN, EDF R&D -# -# -# -# File : GEOM_Partition2.py -# Module : GEOM - -#%Make geometry (like CEA script (A2)) using Partition algorithm% -# import callovo_01_GEOM -# reload(callovo_01_GEOM) - - -# -------------------------------------------- -# Geometrie avec une galerie perpendiculaire -# -------------------------------------------- - -import geompy -geom = geompy.geom - -vecx = geompy.MakeVectorDXDYDZ(1.,0.,0.) -vecy = geompy.MakeVectorDXDYDZ(0.,1.,0.) - -# -- colis - -colis_xmin = 05.76 -colis_xmax = 19.83 -colis_radius = 0.3 - -colis = geompy.MakeCylinder( - geompy.MakeVertex(colis_xmin,0.,0.), - vecx, - colis_radius, - colis_xmax-colis_xmin) - -# -- bo - -bo_xmin = 04.83 -bo_xmax = colis_xmax -bo_radius = 1.23 - -bo = geompy.MakeCylinder( - geompy.MakeVertex(bo_xmin,0.,0.), - vecx, - bo_radius, - bo_xmax-bo_xmin) - - -# -- rupture alveole - -alvRup_xmin = 04.46 -alvRup_xmax = colis_xmax -alvRup_radius = 1.6 - -alvRup = geompy.MakeCylinder( - geompy.MakeVertex(alvRup_xmin,0.,0.), - vecx, - alvRup_radius, - alvRup_xmax-alvRup_xmin) - - -# bouchon - -bouchon_xmin = colis_xmax -bouchon_xmax = 22.83 -bouchon_radius = alvRup_radius - -bouchon = geompy.MakeCylinder( - geompy.MakeVertex(bouchon_xmin,0.,0.), - vecx, - bouchon_radius, - bouchon_xmax-bouchon_xmin) - -# galerie - -galerie_xmax = 25.0 -galerie_radius = 3.0 -box_y = 30.0 - -pnt_galerie_xmax = geompy.MakeVertex(galerie_xmax,0.,0.) - -galerie = geompy.MakeCylinder( - pnt_galerie_xmax, - vecy, - galerie_radius, - box_y) -galerie = geompy.MakeTranslation(galerie, 0, -box_y/2, 0) - -# -- box - -box = geompy.MakeBox(0., 0., 0., galerie_xmax, box_y, box_y) -box = geompy.MakeTranslation(box, 0.0, -box_y/2, -box_y/2) - - -# -- rupture galerie - -galRup_xmax = galerie_xmax -galRup_radius = 3.9 - -galRup = geompy.MakeCylinder( - pnt_galerie_xmax, - vecy, - galRup_radius, - box_y) -galRup = geompy.MakeTranslation(galRup, 0, -box_y/2, 0) - -# -- endommagement galerie - -galEnd_xmax = galerie_xmax -galEnd_radius = 4.6 - -galEnd = geompy.MakeCylinder(pnt_galerie_xmax, vecy, galEnd_radius, box_y) -galEnd = geompy.MakeTranslation(galEnd, 0, -box_y/2, 0) - -# -- endommagement alveole - -alvEnd_xmin = 03.6 -alvEnd_xmax = galerie_xmax -alvEnd_radius = 2.46 - -alvEnd = geompy.MakeCylinder( - geompy.MakeVertex(alvEnd_xmin,0.,0.), - vecx, - alvEnd_radius, - alvEnd_xmax-alvEnd_xmin) - -# remove internal parts of galEnd intersecting alvEnd - -galEnd_alvEnd = geompy.MakePartition([alvEnd], [], [], [galEnd]) - -GOList = [colis] -GOList += [bo] -GOList += [alvRup] -#GOList += [galerie ] -GOList += [galRup] -GOList += [galEnd_alvEnd] - -# -- - -# remove section parts outside bo and inside bouchon - -callovo = geompy.MakePartition(GOList, [], [box], [galerie, bouchon]) - -geompy.addToStudy(callovo, "callovo perp. 2") diff --git a/src/GEOM_SWIG/GEOM_Partition3.py b/src/GEOM_SWIG/GEOM_Partition3.py deleted file mode 100755 index 9f35f08b8..000000000 --- a/src/GEOM_SWIG/GEOM_Partition3.py +++ /dev/null @@ -1,143 +0,0 @@ -# GEOM GEOM_SWIG : binding of C++ omplementaion with Python -# -# Copyright (C) 2003 CEA/DEN, EDF R&D -# -# -# -# File : GEOM_Partition3.py -# Module : GEOM - -#%Make geometry (like CEA script (A2)) using Partition algorithm% -# import callovo_01_GEOM -# reload(callovo_01_GEOM) - - -import geompy -geom = geompy.geom - -vecx = geompy.MakeVectorDXDYDZ(1.,0.,0.) - -# -- colis - -colis_xmin = 05.76 -colis_xmax = 19.83 -colis_radius = 0.3 - -colis = geompy.MakeCylinder( - geompy.MakeVertex(colis_xmin,0.,0.), - vecx, - colis_radius, - colis_xmax-colis_xmin) - -GOList = [colis] - -# -- bo - -bo_xmin = 04.83 -bo_xmax = colis_xmax -bo_radius = 1.23 - -bo = geompy.MakeCylinder( - geompy.MakeVertex(bo_xmin,0.,0.), - vecx, - bo_radius, - bo_xmax-bo_xmin) - -GOList.append(bo) - -# -- rupture alveole - -alvRup_xmin = 04.46 -alvRup_xmax = colis_xmax -alvRup_radius = 1.6 - -alvRup = geompy.MakeCylinder( - geompy.MakeVertex(alvRup_xmin,0.,0.), - vecx, - alvRup_radius, - alvRup_xmax-alvRup_xmin) - -GOList.append(alvRup) - -# bouchon - -bouchon_xmin = colis_xmax -bouchon_xmax = 22.83 -bouchon_radius = alvRup_radius - -bouchon = geompy.MakeCylinder( - geompy.MakeVertex(bouchon_xmin,0.,0.), - vecx, - bouchon_radius, - bouchon_xmax-bouchon_xmin) - -#GOList.append(bouchon) - -# -- endommagement alveole - -alvEnd_xmin = 03.6 -alvEnd_xmax = 20.66 -alvEnd_radius = 2.46 - -alvEnd = geompy.MakeCylinder( - geompy.MakeVertex(alvEnd_xmin,0.,0.), - vecx, - alvEnd_radius, - alvEnd_xmax-alvEnd_xmin) - -GOList.append(alvEnd) - -# galerie - -galerie_xmin = bouchon_xmax -galerie_xmax = 25.0 -galerie_radius = 2.17 - -galerie = geompy.MakeCylinder( - geompy.MakeVertex(galerie_xmin,0.,0.), - vecx, - galerie_radius, - galerie_xmax-galerie_xmin) - -GOList.append(galerie) - -# -- rupture galerie - -galRup_xmin = 22.18 -galRup_xmax = galerie_xmax -galRup_radius = 2.82 - -galRup = geompy.MakeCylinder( - geompy.MakeVertex(galRup_xmin,0.,0.), - vecx, - galRup_radius, - galRup_xmax-galRup_xmin) - -GOList.append(galRup) - -# -- endom. galerie - -galEnd_xmin = alvEnd_xmax -galEnd_xmax = galerie_xmax -galEnd_radius = 4.34 - -galEnd = geompy.MakeCylinder( - geompy.MakeVertex(galEnd_xmin,0.,0.), - vecx, - galEnd_radius, - galEnd_xmax-galEnd_xmin) - -GOList.append(galEnd) - -# -- - -box_y = 30.0 -box = geompy.MakeBox(0., 0., 0., galerie_xmax, box_y, box_y) -box = geompy.MakeTranslation(box, 0.0, -box_y/2, -box_y/2) - -GOList.append(box) - -# -- - -callovo = geompy.MakePartition(GOList, [], [], [bouchon]) -geompy.addToStudy(callovo, "callovo 2") diff --git a/src/GEOM_SWIG/GEOM_Partition4.py b/src/GEOM_SWIG/GEOM_Partition4.py deleted file mode 100755 index 96dd0d4f8..000000000 --- a/src/GEOM_SWIG/GEOM_Partition4.py +++ /dev/null @@ -1,83 +0,0 @@ -# GEOM GEOM_SWIG : binding of C++ omplementaion with Python -# -# Copyright (C) 2003 CEA/DEN, EDF R&D -# -# -# -# File : GEOM_Partition4.py -# Module : GEOM - -#%Make geometry (like CEA script (A3)) using Partition algorithm% -# import couplex2_01_GEOM -# reload(couplex2_01_GEOM) - -# Dimensions de alveolus -# Parall‰pipˆde rectangle de taille alDx, alDy, alDz - -alDx = 2.5 -alDy = 20.0 -alDz = 2.5 -alSepx = 18.0 - -# Dimensions de backfill -# Parall‰pipˆde rectangle de taille baDx, baDy, baDz - -baDx = 27.0 -baDy = 4.8 -baDz = 4.8 - -# Dimensions de geological medium - -gmDx = baDx -gmDy = 49.6 -gmDz = 100.0 - -# -- - -import geompy -geom = geompy.geom - -# -- Construction de backfill - -backA = geompy.MakeBox(0.0, 0.0, 0.0, baDx, baDy, baDz) -back = geompy.MakeTranslation(backA, -baDx/2, -baDy/2, -baDz/2) - -# -- Construction de alveolus - -import math - -alveA = geompy.MakeBox(0.0, 0.0, 0.0, alDx, alDy, alDz) -alveB = geompy.MakeTranslation(alveA, -alDx/2, baDy/2, -alDz/2) -axis = geompy.MakeVectorDXDYDZ(1.0, 0.0, 0.0) -alve1 = geompy.MakeRotation(alveB, axis, math.pi) -alve2 = geompy.MakeTranslation(alveB, +alSepx/2, 0.0, 0.0) -alve3 = geompy.MakeTranslation(alveB, -alSepx/2, 0.0, 0.0) -GOlist = [] -GOlist.append(alve1) -GOlist.append(alve2) -GOlist.append(alve3) -alve = geompy.MakeCompound(GOlist) - -# -- Construction de geological medium - -geolA = geompy.MakeBox(0.0, 0.0, 0.0, gmDx, gmDy, gmDz) -geol = geompy.MakeTranslation(geolA, -gmDx/2, -gmDy/2, -gmDz/2) - -geol = geompy.MakePartition([alve, geol, back]) - -subshapes = geompy.SubShapeAll(geol, geompy.ShapeType["SHAPE"]) - -GOlist = [] -GOlist.append(subshapes[0]) -GOlist.append(subshapes[1]) -GOlist.append(subshapes[2]) -alve = geompy.MakeCompound(GOlist) - -geol = subshapes[3] -back = subshapes[4] - -# -- - -geol = geompy.MakeCompound([geol, back, alve]) - -geompy.addToStudy(geol, "couplex2 2") diff --git a/src/GEOM_SWIG/GEOM_Partition5.py b/src/GEOM_SWIG/GEOM_Partition5.py deleted file mode 100755 index ca6d5de81..000000000 --- a/src/GEOM_SWIG/GEOM_Partition5.py +++ /dev/null @@ -1,93 +0,0 @@ -# GEOM GEOM_SWIG : binding of C++ omplementaion with Python -# -# Copyright (C) 2003 CEA/DEN, EDF R&D -# -# -# -# File : GEOM_Partition5.py -# Module : GEOM - -#%Make geometry (like CEA script (A4)) using Partition algorithm% -# import gallery_01_GEOM -# reload(gallery_01_GEOM) - -# -- Import geompy pour piloter GEOM par script - -import geompy -geom = geompy.geom - -# -- Dimensions de la boite entiˆre - -LX, LY, LZ = 300.0, 150.0, 150.0 -p0 = geompy.MakeVertex(0.,0.,0.) -vy = geompy.MakeVectorDXDYDZ(0.,1.,0.) - -# -- D‰finition du plan de sym‰trie (O,Ox,Oz) - -symPlane = geompy.MakePlane(p0, vy, 10.0) - -# -- bo - -bo = geompy.MakeBoxDXDYDZ(LX, LY, LZ) -bo = geompy.MakeTranslation(bo, 0.0, -LY/2, -LZ/2) - -# -- Galerie principale - -gal_diam = 80.0 -gal_lony = LY -gal_x = LX-20.0-gal_diam/2 - -gal = geompy.MakeCylinder(p0, vy, gal_diam/2, gal_lony) -gal = geompy.MakeTranslation(gal, gal_x, -gal_lony/2, 0.0) - -# -- Galerie perpendiculaire -# -- Dimensions de la galerie perpendiculaire -# -- La longueur est compt‰e € partir du centre -# -- de la galerie principale - -gpe_long, gpe_diam = 200.0, 60.0 -gpe_x = gal_x -gpe = geompy.MakeCylinder( - p0, - geompy.MakeVectorDXDYDZ(-1.,0.,0.), - gpe_diam/2,gpe_long) -gpe = geompy.MakeTranslation(gpe, gpe_x, 0, 0) - -# -- Dimensions d'une alveole -# -- Construction d'une alv‰ole - -alv_long, alv_diam = 60.0, 18.0 -alv01 = geompy.MakeCylinder(p0, vy, alv_diam/2, alv_long) -alv02 = geompy.MakeMirrorByPlane(alv01, symPlane) -alv0 = geompy.MakeCompound([alv01, alv02]) - -# -- Construction des alv‰oles - -alv_del, alv_sep = 40.0, 35.0 -alv1 = geompy.MakeTranslation(alv0, gal_x-gal_diam/2-alv_sep, 0.0, 0.0) -alv2 = geompy.MakeTranslation(alv1, -alv_del, 0.0, 0.0 ) -alv3 = geompy.MakeTranslation(alv2, -alv_del, 0.0, 0.0 ) -alv = geompy.MakeCompound([alv1, alv2, alv3]) - -# -- Remplissage de la BO - -gallery = geompy.MakePartition([alv, bo], [], [], [gal, gpe]) - -subshapes = geompy.SubShapeAll(gallery, geompy.ShapeType["SHAPE"]) - -alvGOs = [] -alvGOs.append(subshapes[0]) -alvGOs.append(subshapes[1]) -alvGOs.append(subshapes[2]) -alvGOs.append(subshapes[3]) -alvGOs.append(subshapes[4]) -alvGOs.append(subshapes[5]) -alvcomp = geompy.MakeCompound(alvGOs) - -boGO = subshapes[6] -galGO = subshapes[7] -gpeGO = subshapes[8] - -gallery = geompy.MakeCompound([boGO, alvcomp, gpeGO, galGO]) - -geompy.addToStudy(gallery,"Gallery 2") diff --git a/src/GEOM_SWIG/GEOM_Sketcher.py b/src/GEOM_SWIG/GEOM_Sketcher.py deleted file mode 100644 index fbdb7fbf5..000000000 --- a/src/GEOM_SWIG/GEOM_Sketcher.py +++ /dev/null @@ -1,58 +0,0 @@ -# GEOM GEOM_SWIG : binding of C++ omplementaion with Python -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : GEOM_Sketcher.py -# Author : Damien COQUERET, Open CASCADE -# Module : GEOM -# $Header$ - -import geompy - -#SKETCHER INFOS -#Init Sketcher -#Create a string beginning by :"Sketcher:" -#Each command must be separated by ":" -#"F x y" : Create first point at X & Y - -#To Make Segment -#"R angle" : Set the direction by angle -#"D dx dy" : Set the direction by DX & DY - -#"TT x y" : Create by point at X & Y -#"T dx dy" : Create by point with DX & DY -#"L length" : Create by direction & Length -#"IX x" : Create by direction & Intersect. X -#"IY y" : Create by direction & Intersect. Y - -#To Make Arc -#"C radius length" : Create by direction, radius and length(in degree) - -#To finish -#"WW" : Close Wire - -#Create Sketcher -Cmd = "Sketch:F 0 0:TT 0 100:C 100 180:WW" -Sketcher = geompy.MakeSketcher(Cmd) #(string)->GEOM_Shape_ptr - -#Add In Study -id_Sketcher = geompy.addToStudy(Sketcher, "Sketcher") diff --git a/src/GEOM_SWIG/GEOM_Spanner.py b/src/GEOM_SWIG/GEOM_Spanner.py deleted file mode 100644 index cc336a7b4..000000000 --- a/src/GEOM_SWIG/GEOM_Spanner.py +++ /dev/null @@ -1,504 +0,0 @@ -# GEOM GEOM_SWIG : binding of C++ implementaion with Python -# -# Copyright (C) 2003 CEA -# -# 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. -# -# 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.org -# -# -# -# File : GEOM_Spanner.py -# Author : Julia DOROVSKIKH -# Module : GEOM -# $Header$ - -############# MakeSpanner ############# - -def MakeSpanner (salome, geompy, math, isBlocksTest = 0, isMeshTest = 0, smesh = None, hasGUI = 0): - - ### Variables ### - - th = 4.0 - - ### BlocksOp ### - - BlocksOp = geompy.BlocksOp - - ### Basic points and directions ### - - p0 = geompy.MakeVertex(0., 0., 0.) - pth = geompy.MakeVertex(0., 0., th) - - vx = geompy.MakeVectorDXDYDZ(1., 0., 0.) - vy = geompy.MakeVectorDXDYDZ(0., 1., 0.) - vz = geompy.MakeVectorDXDYDZ(0., 0., 1.) - - vxy = geompy.MakeVectorDXDYDZ(1., 1., 0.) - - ### Block 1 ### - - p_10_0 = geompy.MakeVertex(10., 0., 0.) - p_10_25 = geompy.MakeVertex(10., 25., 0.) - p_0_35 = geompy.MakeVertex( 0., 35., 0.) - p_0_10 = geompy.MakeVertex( 0., 10., 0.) - - Face11 = geompy.MakeQuad4Vertices(p_10_0, p_10_25, p_0_10, p_0_35); - id_face11 = geompy.addToStudy(Face11, "1 Face for Block 1") - - Face12 = geompy.MakeTranslationTwoPoints(Face11, p0, pth) - id_face12 = geompy.addToStudy(Face12, "2 Face for Block 1") - - Block1 = geompy.MakeHexa2Faces(Face11, Face12) - id_block1 = geompy.addToStudy(Block1, "Block 1") - - ### Block 2 ### - - p_15_0 = geompy.MakeVertex(15., 0., 0.) - p_15_20 = geompy.MakeVertex(15., 20., 0.) - - Edge21 = geompy.MakeEdge(p_15_0, p_15_20) - id_edge21 = geompy.addToStudy(Edge21, "1 Edge for Block 2") - - Edge22 = geompy.GetEdge(Block1, p_10_0, p_10_25) - id_edge22 = geompy.addToStudy(Edge22, "2 Edge for Block 2") - - Face21 = geompy.MakeQuad2Edges(Edge21, Edge22); - id_face21 = geompy.addToStudy(Face21, "1 Face for Block 2") - - Face22 = geompy.MakeTranslationTwoPoints(Face21, p0, pth) - id_face22 = geompy.addToStudy(Face22, "2 Face for Block 2") - - Block2 = geompy.MakeHexa2Faces(Face21, Face22) - id_block2 = geompy.addToStudy(Block2, "Block 2") - - ### Block 3 ### - - p_15_10_1 = geompy.MakeVertex(15., 10., 1.) - - Face31 = geompy.GetFaceNearPoint(Block2, p_15_10_1) - id_face31 = geompy.addToStudy(Face31, "1 Face for Block 3") - - Prism1 = geompy.MakePrismVecH(Face31, vx, 5); - id_prism1 = geompy.addToStudy(Prism1, "Prism to be Block 3") - - nbFaces = geompy.ShapesOp.NumberOfFaces(Prism1) - if nbFaces == 6: - print "Prism 1 is a hexahedral solid" - else: - print "Prism 1 is not a hexahedral solid" - - Prism1_faces = geompy.SubShapeAllSorted(Prism1, geompy.ShapeType["FACE"]) - ii = 1 - for aFace in Prism1_faces: - name = geompy.SubShapeName(aFace, Prism1) - Id_Face = geompy.addToStudyInFather(Prism1, aFace, name) - ii = ii + 1 - - Block3 = geompy.MakeHexa(Prism1_faces[0], Prism1_faces[1], - Prism1_faces[2], Prism1_faces[3], - Prism1_faces[4], Prism1_faces[5]); - id_block3 = geompy.addToStudy(Block3, "Block 3") - - ### Block 4 ### - - Face41 = geompy.GetOppositeFace(Block3, Face31) - id_face41 = geompy.addToStudy(Face41, "1 Face for Block 4") - - p_25_5 = geompy.MakeVertex(25., 5., 0.) - p_25_20 = geompy.MakeVertex(25., 20., 0.) - - Edge41 = geompy.MakeEdge(p_25_5, p_25_20) - id_edge41 = geompy.addToStudy(Edge41, "1 Edge for Block 4") - - p_25_5_2 = geompy.MakeVertex(25., 5., th) - p_25_20_2 = geompy.MakeVertex(25., 20., th) - - Edge42 = geompy.MakeEdge(p_25_5_2, p_25_20_2) - id_edge42 = geompy.addToStudy(Edge42, "2 Edge for Block 4") - - Edge43 = geompy.MakeEdge(p_25_5, p_25_5_2) - id_edge43 = geompy.addToStudy(Edge43, "3 Edge for Block 4") - - Edge44 = geompy.MakeEdge(p_25_20, p_25_20_2) - id_edge44 = geompy.addToStudy(Edge44, "4 Edge for Block 4") - - Face42 = geompy.MakeQuad(Edge41, Edge42, Edge43, Edge44) - id_face42 = geompy.addToStudy(Face42, "2 Face for Block 4") - - Block4 = geompy.MakeHexa2Faces(Face41, Face42) - id_block4 = geompy.addToStudy(Block4, "Block 4") - - ### Block 5 ### - - p_25_30 = geompy.MakeVertex(25., 30., 0.) - p_25_30_1 = geompy.MakeVertex(25., 30., 1) - axis_rot = geompy.MakeVector(p_25_30, p_25_30_1) - - Face51 = Face42 - Face52 = geompy.MakeRotation(Face51, axis_rot, math.pi/2.) - id_face52 = geompy.addToStudy(Face52, "2 Face for Block 5") - - Block5 = geompy.MakeHexa2Faces(Face51, Face52) - id_block5 = geompy.addToStudy(Block5, "Block 5") - - ### Compound of blocks 1 - 4 ### - - Comp1234 = geompy.MakeCompound([Block1, Block2, Block3, Block4]) - Glue1234 = geompy.MakeGlueFaces(Comp1234, 1e-5) - id_glue1234 = geompy.addToStudy(Glue1234, "Glue 1234") - - plane_mirror = geompy.MakePlane(p_25_30, vxy, 100.) - #id_plane_mirror = geompy.addToStudy(plane_mirror, "Plane for mirror") - - Mirror1 = geompy.MakeMirrorByPlane(Glue1234, plane_mirror) - id_mirror1 = geompy.addToStudy(Mirror1, "Mirror 1") - - ### The second end ### - - p_18_0 = geompy.MakeVertex(18., 0., 0.) - p_20_0 = geompy.MakeVertex(20., 0., 0.) - p_40_0 = geompy.MakeVertex(40., 0., 0.) - - Edge1s = geompy.MakeEdge(p_20_0, p_40_0) - id_edge1s = geompy.addToStudy(Edge1s, "1 Edge for Block 1s") - - Edge2s = geompy.MakeRotation(Edge1s, vz, math.pi/12.) - id_edge2s = geompy.addToStudy(Edge2s, "2 Edge for Block 1s") - - p_18_0_r = geompy.MakeRotation(p_18_0, vz, math.pi/24.) - p_20_0_r = geompy.MakeRotation(p_20_0, vz, math.pi/12.) - p_40_0_r = geompy.MakeRotation(p_40_0, vz, math.pi/12.) - - Edge3s = geompy.MakeEdge(p_40_0, p_40_0_r) - id_edge3s = geompy.addToStudy(Edge3s, "3 Edge for Block 1s") - - Edge4s = geompy.MakeArc(p_20_0, p_18_0_r, p_20_0_r) - id_edge4s = geompy.addToStudy(Edge4s, "4 Edge for Block 1s") - - Face1s = geompy.MakeQuad(Edge1s, Edge2s, Edge3s, Edge4s) - id_face1s = geompy.addToStudy(Face1s, "1 Face for Block 1s") - - Block1s = geompy.MakePrismVecH(Face1s, vz, th); - id_block1s = geompy.addToStudy(Block1s, "Block 1s") - - p_30_0_1 = geompy.MakeVertex(30., 0., 1.) - - Face2s = geompy.GetFaceNearPoint(Block1s, p_30_0_1) - id_face2s = geompy.addToStudy(Face2s, "2 Face of Block 1s") - - f2s_ind = geompy.LocalOp.GetSubShapeIndex(Block1s, Face2s) - - Block1s_tr1 = geompy.MakeMultiTransformation1D(Block1s, f2s_ind, 0, 24) - id_block1s_tr1 = geompy.addToStudy(Block1s_tr1, "Multi-transformed Block 1s") - - p_60_150_0 = geompy.MakeVertex(60., -150., 0.) - Gear = geompy.MakeTranslationTwoPoints(Block1s_tr1, p0, p_60_150_0) - id_gear = geompy.addToStudy(Gear, "Gear") - - ### Link two parts ### - - ### Linking Block 1 ### - - p_55_0_1 = geompy.MakeVertex(55., 0., 1.) - p_55_110_1 = geompy.MakeVertex(55., -110., 1.) - - Face11l = geompy.GetFaceNearPoint(Block5, p_55_0_1) - id_face11l = geompy.addToStudy(Face11l, "1 Face for Linking Block 1") - - Face12l = geompy.GetFaceNearPoint(Gear, p_55_110_1) - id_face12l = geompy.addToStudy(Face12l, "2 Face for Linking Block 1") - - Block1l = geompy.MakeHexa2Faces(Face11l, Face12l) - id_block1l = geompy.addToStudy(Block1l, "Linking Block 1") - - ### Linking Block 2 ### - - p_25_0_1 = geompy.MakeVertex(25., 0., 1.) - p_45_110_1 = geompy.MakeVertex(45., -110., 1.) - - Face21l = geompy.GetFaceNearPoint(Block4, p_25_0_1) - id_face21l = geompy.addToStudy(Face21l, "1 Face for Linking Block 2") - - Face22l = geompy.GetFaceNearPoint(Gear, p_45_110_1) - id_face22l = geompy.addToStudy(Face22l, "2 Face for Linking Block 2") - - Block2l = geompy.MakeHexa2Faces(Face21l, Face22l) - id_block2l = geompy.addToStudy(Block2l, "Linking Block 2") - - ### Linking Block 3 ### - - p_55_30_1 = geompy.MakeVertex(55., 30., 1.) - p_65_110_1 = geompy.MakeVertex(65., -110., 1.) - - Face31l = geompy.GetFaceNearPoint(Mirror1, p_55_30_1) - id_face31l = geompy.addToStudy(Face31l, "1 Face for Linking Block 3") - - Face32l = geompy.GetFaceNearPoint(Gear, p_65_110_1) - id_face32l = geompy.addToStudy(Face32l, "2 Face for Linking Block 3") - - Block3l = geompy.MakeHexa2Faces(Face31l, Face32l) - id_block3l = geompy.addToStudy(Block3l, "Linking Block 3") - - ### Handle ### - - CompLB = geompy.MakeCompound([Block1l, Block2l, Block3l]) - Handle = geompy.MakeGlueFaces(CompLB, 1e-5) - id_handle = geompy.addToStudy(Handle, "Handle") - - Block1h = geompy.GetBlockNearPoint(Handle, p_45_110_1) - id_block1h = geompy.addToStudyInFather(Handle, Block1h, "Block 1 of Handle") - - Block2h = geompy.GetBlockNearPoint(Handle, p_65_110_1) - id_block2h = geompy.addToStudyInFather(Handle, Block2h, "Block 2 of Handle") - - Face11h = geompy.GetFaceByNormale(Block1h, vx) - id_face11h = geompy.addToStudyInFather(Block1h, Face11h, "Face 1") - - Face12h = geompy.GetOppositeFace(Block1h, Face11h) - id_face12h = geompy.addToStudyInFather(Block1h, Face12h, "Face 2") - - Face21h = geompy.GetFaceByNormale(Block2h, vx) - id_face21h = geompy.addToStudyInFather(Block2h, Face21h, "Face 1") - - Face22h = geompy.GetOppositeFace(Block2h, Face21h) - id_face22h = geompy.addToStudyInFather(Block2h, Face22h, "Face 2") - - Block3h = BlocksOp.GetBlockByParts(Handle, [Face11h, Face21h]) - if BlocksOp.IsDone() == 0: - Block3h = BlocksOp.GetBlockByParts(Handle, [Face11h, Face22h]) - if BlocksOp.IsDone() == 0: - Block3h = BlocksOp.GetBlockByParts(Handle, [Face12h, Face21h]) - if BlocksOp.IsDone() == 0: - Block3h = BlocksOp.GetBlockByParts(Handle, [Face12h, Face22h]) - if BlocksOp.IsDone() == 0: - print "ERROR: BlocksOp.GetBlockByParts() failed : ", BlocksOp.GetErrorCode() - else: - id_block3h = geompy.addToStudyInFather(Handle, Block3h, "Block 3 of Handle") - - ### The whole shape ### - - CompALL = geompy.MakeCompound([Glue1234, Block5, Mirror1, Handle, Gear]) - Spanner = geompy.MakeGlueFaces(CompALL, 1e-5) - id_glueALL = geompy.addToStudy(Spanner, "The Spanner") - - ### Check the Spanner ### - - isCompOfBlocks6 = BlocksOp.CheckCompoundOfBlocks(Spanner) - if isCompOfBlocks6 == 0: - print "Spanner is not a compound of hexahedral solids" - else: - print "Spanner is a compound of hexahedral solids" - - if isBlocksTest == 1: - - print "##################### Test More #####################" - - ### Get Blocks 4 and 5 from the spanner ### - - Face42_sp = geompy.GetFaceByEdges(Spanner, Edge41, Edge42) - id_face42_sp = geompy.addToStudyInFather(Spanner, Face42_sp, "Face 4_2") - - Blocks_f4_sp = geompy.GetBlocksByParts(Spanner, [Face42_sp]) - - isMRot2D = 0 - - for aBlock in Blocks_f4_sp: - name = geompy.SubShapeName(aBlock, Spanner) - Id_block = geompy.addToStudyInFather(Spanner, aBlock, name) - - f42_sp_ind = geompy.LocalOp.GetSubShapeIndex(aBlock, Face42_sp) - - Face_5_horiz = geompy.GetFaceByNormale(aBlock, vz) - f_5_horiz_ind = geompy.LocalOp.GetSubShapeIndex(aBlock, Face_5_horiz) - - MRot = geompy.MakeMultiTransformation2D(aBlock, f42_sp_ind, 0, 3, f_5_horiz_ind, 0, 5) - if MRot is not None: - isMRot2D = 1 - p_z100 = geompy.MakeVertex(0., 0., 100.) - MRot_tr = geompy.MakeTranslationTwoPoints(MRot, p0, p_z100) - id_MRot_tr = geompy.addToStudy(MRot_tr, "Multi-rotated block 5") - - if isMRot2D == 0: - print "2D Multi Transformation failed" - - ### Get one face of the Gear ### - - p_20_0_tr = geompy.MakeTranslationTwoPoints(p_20_0 , p0, p_60_150_0) - p_20_0_r_tr = geompy.MakeTranslationTwoPoints(p_20_0_r, p0, p_60_150_0) - p_40_0_tr = geompy.MakeTranslationTwoPoints(p_40_0 , p0, p_60_150_0) - p_40_0_r_tr = geompy.MakeTranslationTwoPoints(p_40_0_r, p0, p_60_150_0) - - Face_g_1 = geompy.GetFaceByPoints(Gear, p_20_0_tr, p_20_0_r_tr, p_40_0_tr, p_40_0_r_tr) - id_face_g_1 = geompy.addToStudyInFather(Gear, Face_g_1, "Face of Gear by four points") - - edgesNb = geompy.ShapesOp.NumberOfEdges(Face_g_1) - print "Face of Gear has ", edgesNb, " edges" - - Face_g_1_tr = geompy.MakeTranslationTwoPoints(Face_g_1, p0, pth) - id_face_g_1_tr = geompy.addToStudyInFather(Gear, Face_g_1_tr, "Face of Gear by four points, translated") - - ### equivalent of Block1s, but made as block - - Block_new = geompy.MakeHexa2Faces(Face_g_1, Face_g_1_tr) - id_block_new = geompy.addToStudy(Block_new, "Block New") - - if isMeshTest == 1: - - print "##################### Build Mesh #####################" - - import StdMeshers - - # ---- add a middle block of spanner handle in study - - p_45_0_1 = geompy.MakeVertex(45., 0., 1.) - BlockMh = geompy.GetBlockNearPoint(Spanner, p_45_0_1) - id_blockMh = geompy.addToStudyInFather(Spanner, BlockMh, "Middle Block of Spanner Handle") - - # ---- add the top face of the middle block in study - - FaceTop = geompy.GetFaceByNormale(BlockMh, vz) - id_facetop = geompy.addToStudyInFather(BlockMh, FaceTop, "Top Face") - - # ---- add long edges of the top face in study - - FaceTop_edges = geompy.SubShapeAllSorted(FaceTop, geompy.ShapeType["EDGE"]) - Edge1 = FaceTop_edges[0] - Edge2 = FaceTop_edges[3] - Id_Edge1 = geompy.addToStudyInFather(FaceTop, Edge1, "Edge 1") - Id_Edge2 = geompy.addToStudyInFather(FaceTop, Edge2, "Edge 2") - - # ---- launch SMESH - - smeshgui = None - if hasGUI == 1: - smeshgui = salome.ImportComponentGUI("SMESH") - smeshgui.Init(salome.myStudyId) - - print "-------------------------- create Hypothesis" - - print "-------------------------- NumberOfSegments" - - hypNbSeg3 = smesh.CreateHypothesis("NumberOfSegments", "libStdMeshersEngine.so") - hypNbSeg3.SetNumberOfSegments(3) - print hypNbSeg3.GetName() - print hypNbSeg3.GetId() - print hypNbSeg3.GetNumberOfSegments() - - if hasGUI == 1: - idseg = salome.ObjectToID(hypNbSeg3) - smeshgui.SetName(idseg, "NumberOfSegments_3"); - - print "-------------------------- LocalLength" - - hypLen1 = smesh.CreateHypothesis("LocalLength", "libStdMeshersEngine.so") - hypLen1.SetLength(10) - print hypLen1.GetName() - print hypLen1.GetId() - print hypLen1.GetLength() - - if hasGUI == 1: - idlength = salome.ObjectToID(hypLen1) - smeshgui.SetName(idlength, "Local_Length_10"); - - print "-------------------------- Propagation" - - hypProp = smesh.CreateHypothesis("Propagation", "libStdMeshersEngine.so") - print hypProp.GetName() - print hypProp.GetId() - - if hasGUI == 1: - idprop = salome.ObjectToID(hypProp) - smeshgui.SetName(idprop, "Propagation hypothesis"); - - #print "-------------------------- NumberOfSegments" - # - #hypNbSeg15 = smesh.CreateHypothesis("NumberOfSegments", "libStdMeshersEngine.so") - #hypNbSeg15.SetNumberOfSegments(15) - #print hypNbSeg15.GetName() - #print hypNbSeg15.GetId() - #print hypNbSeg15.GetNumberOfSegments() - # - #if hasGUI == 1: - # idseg15 = salome.ObjectToID(hypNbSeg15) - # smeshgui.SetName(idseg15, "NumberOfSegments_15"); - - print "-------------------------- Regular_1D" - - algoReg = smesh.CreateHypothesis("Regular_1D", "libStdMeshersEngine.so") - listHyp = algoReg.GetCompatibleHypothesis() - for hyp in listHyp: - print hyp - print algoReg.GetName() - print algoReg.GetId() - - if hasGUI == 1: - idreg = salome.ObjectToID(algoReg) - smeshgui.SetName(idreg, "Regular_1D"); - - print "-------------------------- Quadrangle_2D" - - algoQuad = smesh.CreateHypothesis("Quadrangle_2D", "libStdMeshersEngine.so") - listHyp = algoQuad.GetCompatibleHypothesis() - for hyp in listHyp: - print hyp - print algoQuad.GetName() - print algoQuad.GetId() - - if hasGUI == 1: - idquad = salome.ObjectToID(algoQuad) - smeshgui.SetName(idquad, "Quadrangle_2D"); - - print "---- Init a Mesh with the Spanner" - - mesh = smesh.CreateMesh(Spanner) - if hasGUI == 1: - idmesh = salome.ObjectToID(mesh) - smeshgui.SetName(idmesh, "Meshed Spanner"); - - print "-------------------------- add hypothesis to Spanner" - - mesh.AddHypothesis(Spanner, algoReg) - mesh.AddHypothesis(Spanner, hypNbSeg3) - mesh.AddHypothesis(Spanner, algoQuad) - - print "-------------------------- add hypothesis to the Middle Block" - - submesh_bl = mesh.GetSubMesh(BlockMh, "SubMesh Middle Block") - mesh.AddHypothesis(BlockMh, hypLen1) - - print "-------------------------- add hypothesis to the long edges of the Top Face of the Middle Block" - - submesh_e1 = mesh.GetSubMesh(Edge1, "SubMesh Edge 1 of Top Face") - mesh.AddHypothesis(Edge1, hypProp) - #mesh.AddHypothesis(Edge1, hypNbSeg15) - - submesh_e2 = mesh.GetSubMesh(Edge2, "SubMesh Edge 2 of Top Face") - mesh.AddHypothesis(Edge2, hypProp) - #mesh.AddHypothesis(Edge2, hypNbSeg15) - - print "-------------------------- compute the mesh" - smesh.Compute(mesh, Spanner) - - print "Information about the Mesh:" - print "Number of nodes : ", mesh.NbNodes() - print "Number of edges : ", mesh.NbEdges() - print "Number of faces : ", mesh.NbFaces() - print "Number of triangles : ", mesh.NbTriangles() - print "Number of quadrangles : ", mesh.NbQuadrangles() - print "Number of volumes : ", mesh.NbVolumes() - print "Number of tetrahedrons: ", mesh.NbTetras() - - return Spanner diff --git a/src/GEOM_SWIG/GEOM_TestAll.py b/src/GEOM_SWIG/GEOM_TestAll.py deleted file mode 100644 index 67e626578..000000000 --- a/src/GEOM_SWIG/GEOM_TestAll.py +++ /dev/null @@ -1,335 +0,0 @@ -# GEOM GEOM_SWIG : binding of C++ omplementaion with Python -# -# Copyright (C) 2003 CEA -# -# 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. -# -# 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.org -# -# -# File : GEOM_usinggeom.py -# Author : Damien COQUERET, Open CASCADE -# Module : GEOM -# $Header$ - -def TestAll (geompy, math): - - #Create base Variables - nbtimes1 = 5 #Short - nbtimes2 = 5 - mindeg = 2 - maxdeg = 5 - nbiter = 5 - ShapeTypeFace = geompy.ShapeType["FACE"] - ShapeTypeEdge = geompy.ShapeType["EDGE"] - WantPlanarFace = 1 #True - - radius = 10. #Double - radius1 = 100. - radius2 = 200. - height = 200. - d1 = 10. - d2 = 10. - step1 = 250. - step2 = 250. - angle = 45. - angle1 = angle * math.pi / 180 - angle2 = 2 * angle1 - factor = 2. - tol3d = 0.0001 - tol2d = 0.0001 - weight = 1000000. - waterdensity = 1. - meshingdeflection = 0.01 - trimsize = 1000. - precision = 0.00001 - - #Create base points - p0 = geompy.MakeVertex(0. , 0. , 0. ) #(3 Doubles)->GEOM_Object_ptr - px = geompy.MakeVertex(100., 0. , 0. ) - py = geompy.MakeVertex(0. , 100., 0. ) - pz = geompy.MakeVertex(0. , 0. , 100.) - pxyz = geompy.MakeVertex(100., 100., 100.) - - p200 = geompy.MakeVertexWithRef(pxyz, 100., 100., 100.) #(GEOM_Object_ptr, 3 Doubles)->GEOM_Object_ptr - - #Create base directions - vx = geompy.MakeVector(p0, px) #(GEOM_Object_ptr, GEOM_Object_ptr)->GEOM_Object_ptr - vy = geompy.MakeVector(p0, py) - vz = geompy.MakeVector(p0, pz) - vxy = geompy.MakeVector(px, py) - - vxyz = geompy.MakeVectorDXDYDZ(100., 100., 100.) #(3 Doubles)->GEOM_Object_ptr - - #Create local coordinate systems - cs1 = geompy.MakeMarker(50,50,50, 1,0,0, 0,1,0) - cs2 = geompy.MakeMarker(70,80,10, 1,0,1, 1,1,0) - - #Create base geometry 2D - Line = geompy.MakeLineTwoPnt(p0, pxyz) #(2 GEOM_Object_ptr)->GEOM_Object_ptr - Line1 = geompy.MakeLine(pz, vxy) #(2 GEOM_Object_ptr)->GEOM_Object_ptr - Plane = geompy.MakePlane(pz, vxyz, trimsize) #(2 GEOM_Object_ptr, Double)->GEOM_Object_ptr - Plane1 = geompy.MakePlaneThreePnt(px, pz, p200, trimsize) #(4 Doubles)->GEOM_Object_ptr - - Arc = geompy.MakeArc(py, pz, px) #(3 GEOM_Object_ptr)->GEOM_Object_ptr - Circle = geompy.MakeCircle(p0, vz, radius1) #(2 GEOM_Object_ptr, Double)->GEOM_Object_ptr - Circle1 = geompy.MakeCircleThreePnt(p0, pxyz, px) #(3 GEOM_Object_ptr)->GEOM_Object_ptr - Ellipse = geompy.MakeEllipse(p0, vy, radius2, radius1) #(2 GEOM_Object_ptr, 2 Doubles)->GEOM_Object_ptr - Polyline = geompy.MakePolyline([p0, pz, py, p200]) #(List of GEOM_Object_ptr)->GEOM_Object_ptr - Bezier = geompy.MakeBezier([p0, pz, p200, px]) #(List of GEOM_Object_ptr)->GEOM_Object_ptr - Interpol = geompy.MakeInterpol([px, py, p200, pxyz]) #(List of GEOM_Object_ptr)->GEOM_Object_ptr - Sketcher = geompy.MakeSketcher("Sketcher:F -100 -100:TT 250 -100:R 0:C 100 150:R 0:L 300:WW", - [100,0,0, 1,1,1, -1,1,0]) #(String, List of Doubles)->GEOM_Object_ptr - - #Test point on curve creation - p_on_arc = geompy.MakeVertexOnCurve(Arc, 0.25) #(GEOM_Object_ptr, Double)->GEOM_Object_ptr - - #Create base geometry 3D - Box = geompy.MakeBoxTwoPnt(p0, p200) #(2 GEOM_Object_ptr)->GEOM_Object_ptr - Box1 = geompy.MakeBoxDXDYDZ(10, 20, 30) #(3 Doubles)->GEOM_Object_ptr - Box2 = geompy.MakeBox(10,20,30, 15,25,35) #(6 Doubles)->GEOM_Object_ptr - Cylinder = geompy.MakeCylinder(p0, vz, radius1, height) #(2 GEOM_Object_ptr, 2 Doubles)->GEOM_Object_ptr - Cyl1 = geompy.MakeCylinderRH(radius2, height) #(2 Doubles)->GEOM_Object_ptr - Sphere = geompy.MakeSpherePntR(p0, radius1) #(GEOM_Object_ptr, Double)->GEOM_Object_ptr - Sphere1 = geompy.MakeSphereR(radius) #(Double)->GEOM_Object_ptr - Sphere2 = geompy.MakeSphere(50, 70, 30, radius) #(4 Doubles)->GEOM_Object_ptr - Cone = geompy.MakeCone(p0, vz, radius2, radius, height) #(2 GEOM_Object_ptr, 3 Doubles)->GEOM_Object_ptr - Cone1 = geompy.MakeConeR1R2H(radius1, radius, height) #(3 Doubles)->GEOM_Object_ptr - Torus = geompy.MakeTorus(p0, vz, radius2, radius) #(2 GEOM_Object_ptr, 2 Doubles)->GEOM_Object_ptr - Torus1 = geompy.MakeTorusRR(radius2, radius1) #(2 Doubles)->GEOM_Object_ptr - - #Boolean (Common, Cut, Fuse, Section) - Common = geompy.MakeBoolean(Box, Sphere, 1) #(2 GEOM_Object_ptr, Short)->GEOM_Object_ptr - Cut = geompy.MakeBoolean(Box, Sphere, 2) - Fuse = geompy.MakeBoolean(Box, Sphere, 3) - Section = geompy.MakeBoolean(Box, Sphere, 4) - - #Create base objects - Edge = geompy.MakeEdge(p0, pxyz) #(2 GEOM_Object_ptr)->GEOM_Object_ptr - Wire = geompy.MakeWire([vxy, Arc]) #(List Of GEOM_Object_ptr)->GEOM_Object_ptr - Face = geompy.MakeFace(Wire, WantPlanarFace) #(GEOM_Object_ptr, Boolean)->GEOM_Object_ptr - Face1 = geompy.MakeFaceWires([Wire, Sketcher], - WantPlanarFace) #(List of GEOM_Object_ptr, Boolean)->GEOM_Object_ptr - Face2 = geompy.MakeFace(Sketcher, WantPlanarFace) - Shell = geompy.MakeShell([Face, Face1]) #(List of GEOM_Object_ptr)->GEOM_Object_ptr - - Prism1 = geompy.MakePrism(Face2, p0, pxyz) #(3 GEOM_Object_ptr)->GEOM_Object_ptr - prism1_faces = geompy.SubShapeAllSorted(Prism1, ShapeTypeFace) - Shell1 = geompy.MakeShell([prism1_faces[0], prism1_faces[1], - prism1_faces[3], prism1_faces[4], - prism1_faces[5], prism1_faces[2]]) - Solid = geompy.MakeSolid([Shell1]) #(List of GEOM_Object_ptr)->GEOM_Object_ptr - - ShapeListCompound = [] - i = 0 - while i <= 3 : - S = geompy.MakeTranslation(Arc, i * 100., i * 100., i * 100.) - ShapeListCompound.append(S) - i = i + 1 - Compound = geompy.MakeCompound(ShapeListCompound) #(List of GEOM_Object_ptr)->GEOM_Object_ptr - - # Test plane from existing face creation - Plane2 = geompy.MakePlaneFace(Face, trimsize) #(GEOM_Object_ptr, Double)->GEOM_Object_ptr - - #ShapeList for Sewing - S = geompy.MakeRotation(Face, vxy, angle1) - - #Create advanced objects - Copy = geompy.MakeCopy(Box) #(GEOM_Object_ptr)->GEOM_Object_ptr - Prism = geompy.MakePrismVecH(Face, vz, 100.0) #(2 GEOM_Object_ptr, Double)->GEOM_Object_ptr - Revolution = geompy.MakeRevolution(Face, vz, angle2) # - Filling = geompy.MakeFilling(Compound, mindeg, maxdeg, - tol2d, tol3d, nbiter) #(GEOM_Object_ptr, 4 Doubles, Short)->GEOM_Object_ptr - Pipe = geompy.MakePipe(Wire, Edge) #(2 GEOM_Object_ptr)->GEOM_Object_ptr - Sewing = geompy.MakeSewing([Face, S], precision) #(List Of GEOM_Object_ptr, Double)->GEOM_Object_ptr - - #Transform objects - Translation = geompy.MakeTranslationTwoPoints(Box, px, pz) #(3 GEOM_Object_ptr)->GEOM_Object_ptr - TranslVect = geompy.MakeTranslationVector(Box, vxyz) #(2 GEOM_Object_ptr)->GEOM_Object_ptr - Rotation = geompy.MakeRotation(Box, vz, angle1) #(2 GEOM_Object_ptr, Double)->GEOM_Object_ptr - Scale = geompy.MakeScaleTransform(Box, p0, factor) # - Mirror = geompy.MakeMirrorByPlane(Box, Plane) #(2 GEOM_Object_ptr)->GEOM_Object_ptr - MirrorAxis = geompy.MakeMirrorByAxis(Box, Line1) # - MirrorPnt = geompy.MakeMirrorByPoint(Box, p200) # - Position = geompy.MakePosition(Box, cs1, cs2) #(3 GEOM_Object_ptr)->GEOM_Object_ptr - Offset = geompy.MakeOffset(Box, 10.) #(GEOM_Object_ptr, Double)->GEOM_Object_ptr - Orientation = geompy.ChangeOrientation(Box) - - #IDList for Fillet/Chamfer - prism_edges = geompy.SubShapeAllSorted(Prism, ShapeTypeEdge) - - for anEdge in prism_edges: - eid = geompy.GetSubShapeID(Prism, anEdge) - sse = geompy.GetSubShape(Prism, [eid]) - - sse_id = geompy.GetSubShapeID(Prism, sse) - if sse_id != eid: - print "Error: GetSubShape() or GetSubShapeID() has failed!" - - IDlist_e = [] - IDlist_e.append(geompy.GetSubShapeID(Prism, prism_edges[0])) - IDlist_e.append(geompy.GetSubShapeID(Prism, prism_edges[1])) - IDlist_e.append(geompy.GetSubShapeID(Prism, prism_edges[2])) - - prism_faces = geompy.SubShapeAllSorted(Prism, ShapeTypeFace) - - f_ind_1 = geompy.GetSubShapeID(Prism, prism_faces[0]) - f_ind_2 = geompy.GetSubShapeID(Prism, prism_faces[1]) - - IDlist_f = [f_ind_1, f_ind_2] - - #Local operations - Fillet = geompy.MakeFillet (Prism, radius, ShapeTypeEdge, - IDlist_e) #(GEOM_Object_ptr, Double, Short, ListOfLong)->GEOM_Object_ptr - Chamfer = geompy.MakeChamferEdge(Prism, d1, d2, - f_ind_1, f_ind_2) #(GEOM_Object_ptr, 2 Doubles, 2 Long)->GEOM_Object_ptr - Chamfer2 = geompy.MakeChamferFaces(Prism, d1, d2, - IDlist_f) #(GEOM_Object_ptr, 2 Doubles, ListOfLong)->GEOM_Object_ptr - - #Create Patterns - MultiTrans1D = geompy.MakeMultiTranslation1D(Fillet, vz, step1, nbtimes1) - MultiTrans2D = geompy.MakeMultiTranslation2D(Fillet, vz, step1, nbtimes1, vy, step2, nbtimes2) - #!!!!Angle In Degree!!!! - MultiRot1D = geompy.MultiRotate1D(Chamfer, vx, nbtimes1) - MultiRot2D = geompy.MultiRotate2D(Chamfer, vx, angle, nbtimes1, step1, nbtimes2) - - #Create Informations objects - CDG = geompy.MakeCDG(Prism) #(GEOM_Object_ptr)->GEOM_Object_ptr - Archimede = geompy.Archimede(Box, weight, waterdensity, - meshingdeflection) #(GEOM_Object_ptr, 3 Doubles)->GEOM_Object_ptr - CheckShape = geompy.CheckShape(Prism) #(GEOM_Object_ptr)->Boolean - print "CheckShape(Prism) = ", CheckShape - - #Partition objects - Partition = geompy.MakePartition([Box], [Plane]) #(2 Lists Of GEOM_Object_ptr)->GEOM_Object_ptr - Partition1 = geompy.MakeHalfPartition(Box, Plane) #(2 GEOM_Object_ptr)->GEOM_Object_ptr - - #Add In Study - - id_p0 = geompy.addToStudy(p0, "Vertex 0") - id_px = geompy.addToStudy(px, "Vertex X") - id_py = geompy.addToStudy(py, "Vertex Y") - id_pz = geompy.addToStudy(pz, "Vertex Z") - id_pxyz = geompy.addToStudy(pxyz, "Vertex XYZ") - id_p200 = geompy.addToStudy(p200, "Vertex 200") - - id_vx = geompy.addToStudy(vx, "Vector X") - id_vy = geompy.addToStudy(vy, "Vector Y") - id_vz = geompy.addToStudy(vz, "Vector Z") - id_vxy = geompy.addToStudy(vxy, "Vector XY") - id_vxyz = geompy.addToStudy(vxyz, "Vector XYZ") - - id_cs1 = geompy.addToStudy(cs1, "CS 50,50,50, 1,0,0, 0,1,0") - id_cs2 = geompy.addToStudy(cs2, "CS 70,80,10, 1,0,1, 1,1,0") - - id_Line = geompy.addToStudy(Line, "Line") - id_Line1 = geompy.addToStudy(Line1, "Line by point and vector") - id_Plane = geompy.addToStudy(Plane, "Plane") - id_Plane1 = geompy.addToStudy(Plane1, "Plane by 3 points") - - id_Arc = geompy.addToStudy(Arc, "Arc") - id_Circle = geompy.addToStudy(Circle, "Circle") - id_Circle1 = geompy.addToStudy(Circle1, "Circle by 3 points") - id_Ellipse = geompy.addToStudy(Ellipse, "Ellipse") - id_Polyline = geompy.addToStudy(Polyline, "Polyline") - id_Bezier = geompy.addToStudy(Bezier, "Bezier") - id_Interpol = geompy.addToStudy(Interpol, "Interpol") - id_Sketcher = geompy.addToStudy(Sketcher, "Sketcher") - - id_p_on_arc = geompy.addToStudy(p_on_arc, "Vertex on Arc") - - id_Box = geompy.addToStudy(Box, "Box") - id_Box1 = geompy.addToStudy(Box1, "Box 10x20x30") - id_Box2 = geompy.addToStudy(Box2, "Box (10,20,30)-(15,25,35)") - id_Cylinder = geompy.addToStudy(Cylinder, "Cylinder") - id_Cyl1 = geompy.addToStudy(Cyl1, "Cylinder RH") - id_Sphere = geompy.addToStudy(Sphere, "Sphere Pnt R") - id_Sphere1 = geompy.addToStudy(Sphere1, "Sphere R") - id_Sphere2 = geompy.addToStudy(Sphere2, "Sphere") - id_Cone = geompy.addToStudy(Cone, "Cone") - id_Cone1 = geompy.addToStudy(Cone1, "Cone R1R2H") - id_Torus = geompy.addToStudy(Torus, "Torus") - id_Torus1 = geompy.addToStudy(Torus1, "Torus RR") - - id_Common = geompy.addToStudy(Common, "Common") - id_Cut = geompy.addToStudy(Cut, "Cut") - id_Fuse = geompy.addToStudy(Fuse, "Fuse") - id_Section = geompy.addToStudy(Section, "Section") - - id_Edge = geompy.addToStudy(Edge, "Edge") - id_Wire = geompy.addToStudy(Wire, "Wire") - id_Face = geompy.addToStudy(Face, "Face") - id_Face1 = geompy.addToStudy(Face1, "Face from two wires") - id_Face2 = geompy.addToStudy(Face2, "Face from Sketcher") - id_Shell = geompy.addToStudy(Shell, "Shell") - - id_Prism1 = geompy.addToStudy(Prism1, "Prism by Two Pnt") - id_Shell1 = geompy.addToStudy(Shell1, "Shell from Prism1 faces") - id_Solid = geompy.addToStudy(Solid, "Solid") - id_Compound = geompy.addToStudy(Compound, "Compound") - - id_Plane2 = geompy.addToStudy(Plane2, "Plane on Face") - - id_Copy = geompy.addToStudy(Copy, "Copy") - id_Prism = geompy.addToStudy(Prism, "Prism") - id_Revolution = geompy.addToStudy(Revolution, "Revolution") - id_Filling = geompy.addToStudy(Filling, "Filling") - id_Pipe = geompy.addToStudy(Pipe, "Pipe") - id_Sewing = geompy.addToStudy(Sewing, "Sewing") - - id_Translation = geompy.addToStudy(Translation, "Translation") - id_TranslVect = geompy.addToStudy(TranslVect , "Translation along vector") - id_Rotation = geompy.addToStudy(Rotation, "Rotation") - id_Scale = geompy.addToStudy(Scale, "Scale") - id_Mirror = geompy.addToStudy(Mirror, "Mirror by Plane") - id_MirrorAxis = geompy.addToStudy(MirrorAxis, "Mirror by Axis") - id_MirrorPnt = geompy.addToStudy(MirrorPnt, "Mirror by Point") - id_Position = geompy.addToStudy(Position, "Positioned box") - id_Offset = geompy.addToStudy(Offset, "Offset") - id_Orientation = geompy.addToStudy(Orientation, "Orientation") - - id_Fillet = geompy.addToStudy(Fillet, "Fillet") - id_Chamfer = geompy.addToStudy(Chamfer, "Chamfer on Edge") - id_Chamfer2 = geompy.addToStudy(Chamfer2, "Chamfer on Faces") - - id_MultiTrans1D = geompy.addToStudy(MultiTrans1D, "MultiTrans1D") - id_MultiTrans2D = geompy.addToStudy(MultiTrans2D, "MultiTrans2D") - id_MultiRot1D = geompy.addToStudy(MultiRot1D, "MultiRot1D") - id_MultiRot2D = geompy.addToStudy(MultiRot2D, "MultiRot2D") - - id_CDG = geompy.addToStudy(CDG, "CDG") - id_Archimede = geompy.addToStudy(Archimede, "Archimede") - - id_Partition = geompy.addToStudy(Partition, "Partition") - id_Partition1 = geompy.addToStudy(Partition1, "Half Partition") - - #Decompose objects - SubFace = geompy.SubShape(Box, geompy.ShapeType["FACE"], [2]) - name = geompy.SubShapeName(SubFace, Box) - id_SubFace = geompy.addToStudyInFather(Box, SubFace, name) - - SubFaceS = geompy.SubShapeSorted(Box, geompy.ShapeType["FACE"], [5]) - nameS = geompy.SubShapeName(SubFaceS, Box) - id_SubFace = geompy.addToStudyInFather(Box, SubFaceS, nameS) - - SubEdgeList = geompy.SubShapeAll(SubFace, geompy.ShapeType["EDGE"]) - i=0 - for SubEdge in SubEdgeList : - name = geompy.SubShapeName(SubEdge, SubFace) - id_SubEdge = geompy.addToStudyInFather(SubFace, SubEdge, name) - - #------------------- - - print "DONE" diff --git a/src/GEOM_SWIG/GEOM_TestHealing.py b/src/GEOM_SWIG/GEOM_TestHealing.py deleted file mode 100644 index 4ad4a1ca3..000000000 --- a/src/GEOM_SWIG/GEOM_TestHealing.py +++ /dev/null @@ -1,331 +0,0 @@ -# GEOM GEOM_SWIG : binding of C++ implementaion with Python -# -# Copyright (C) 2003 CEA -# -# 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. -# -# 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.org -# -# -# File : GEOM_TestHealing.py -# Author : Julia DOROVSKIKH -# Module : GEOM -# $Header$ - -def TestProcessShape (geompy): - - ##Load shape from BREP file - #import os - #datadir = os.getenv("GEOM_TEST") - #if datadir != 0: - # datadir = datadir + "/Resources/" - #else: - # "Please, define GEOM_TEST variable !" - # - #print "Import ", datadir + "aze2.brep" - #Shape = batchmode_geompy.Import(datadir + "aze2.brep", "BREP") - - p1 = geompy.MakeVertex(0,0,0) - p2 = geompy.MakeVertex(200,0,0) - p3 = geompy.MakeVertex(100,150,0) - - edge = geompy.MakeEdge(p1,p2) - arc = geompy.MakeArc(p1,p3,p2) - wire = geompy.MakeWire([edge,arc]) - face = geompy.MakeFace(wire, 1) - - theShape = geompy.MakePrismVecH(face, edge, 130) - - #Check shape - print "Before ProcessShape:" - isValid = geompy.CheckShape(theShape) - if isValid == 0: - print "The shape is not valid" - else: - print "The shape seems to be valid" - - #Process Shape - Operators = ["FixShape"] - Parameters = ["FixShape.Tolerance3d"] - Values = ["1e-7"] - - PS = geompy.ProcessShape(theShape, Operators, Parameters, Values) - - #Check shape - print "After ProcessShape:" - isValid = geompy.CheckShape(PS) - if isValid == 0: - print "The shape is not valid" - raise RuntimeError, "It seems, that the ProcessShape() has failed" - else: - print "The shape seems to be valid" - - #Add In Study - Id_Shape = geompy.addToStudy(theShape, "Invalid Shape") - Id_PS = geompy.addToStudy(PS, "Processed Shape") - -def TestSuppressFaces (geompy): - - #Create base geometry 3D - Box = geompy.MakeBoxDXDYDZ(200., 200., 200.) - - #IDList for SuppHole - faces = [] - faces = geompy.SubShapeAllSorted(Box, geompy.ShapeType["FACE"]) - - f_glob_id = geompy.GetSubShapeID(Box, faces[5]) - - #Transform objects - SuppFace = geompy.SuppressFaces(Box, [f_glob_id]) - - #Add In Study - Id_SuppFace = geompy.addToStudy(SuppFace, "SuppFace") - -def TestSuppressInternalWires (geompy): - - #Create Face with hole - p11 = geompy.MakeVertex( 0, 0, 0) - p12 = geompy.MakeVertex(30, 0, 0) - p13 = geompy.MakeVertex(30, 30, 0) - p14 = geompy.MakeVertex( 0, 30, 0) - - p21 = geompy.MakeVertex(10, 10, 0) - p22 = geompy.MakeVertex(20, 10, 0) - p23 = geompy.MakeVertex(20, 20, 0) - p24 = geompy.MakeVertex(10, 20, 0) - - e11 = geompy.MakeEdge(p11, p12) - e12 = geompy.MakeEdge(p12, p13) - e13 = geompy.MakeEdge(p13, p14) - e14 = geompy.MakeEdge(p14, p11) - - e21 = geompy.MakeEdge(p21, p22) - e22 = geompy.MakeEdge(p22, p23) - e23 = geompy.MakeEdge(p23, p24) - e24 = geompy.MakeEdge(p24, p21) - - w1 = geompy.MakeWire([e11, e12, e13, e14]) - w2 = geompy.MakeWire([e21, e22, e23, e24]) - - id_w1 = geompy.addToStudy(w1, "Outside Wire") - id_w2 = geompy.addToStudy(w2, "Inside Wire") - - f12 = geompy.MakeFaceWires([w1, w2], 0) - id_f12 = geompy.addToStudy(f12, "Face WO + WI") - - #Get Free Boundary - Res1 = geompy.GetFreeBoundary(f12) - isSuccess1 = Res1[0] - ClosedWires1 = Res1[1] - OpenWires1 = Res1[2] - nbw1 = 0 - - for wire in ClosedWires1: - nbw1 = nbw1 + 1 - - if nbw1 != 2: - raise RuntimeError, "GetFreeBoundary(f12) must return 2 closed wires, but returned ", nbw1 - - #SuppressInternalWires - face = geompy.SuppressInternalWires(f12, []) - - #Get Free Boundary - Res2 = geompy.GetFreeBoundary(face) - isSuccess2 = Res2[0] - ClosedWires2 = Res2[1] - OpenWires2 = Res2[2] - nbw2 = 0 - - for wire in ClosedWires2: - nbw2 = nbw2 + 1 - - if nbw2 != 1: - print "GetFreeBoundary(face) must return 1 closed wires, but returned ", nbw2 - raise RuntimeError, "SuppressInternalWires() works not correctly" - - #Add In Study - Id_face = geompy.addToStudy(face, "Face without internal wires") - -def TestCloseContour (geompy): - - ##Load shape from BREP file - #import os - #datadir = os.getenv("GEOM_TEST") - #if datadir != 0: - # datadir = datadir + "/Resources/" - #else: - # "Please, define GEOM_TEST variable !" - # - #print "Import ", datadir + "open_cont.brep" - #Shape = geompy.Import(datadir + "open_cont.brep", "BREP") - - p0 = geompy.MakeVertex(0. , 0. , 0. ) - py = geompy.MakeVertex(0. , 100., 0. ) - pz = geompy.MakeVertex(0. , 0. , 100.) - p200 = geompy.MakeVertex(200., 200., 200.) - - Shape = geompy.MakePolyline([p0, pz, py, p200]) - - #Check shape - print "Before closing contour:" - isValid = geompy.CheckShape(Shape) - if isValid == 0: - print "The shape is not valid" - else: - print "The shape seems to be valid" - - #Close Contour - IsCommonVertex = 0 # false - - shape_wires = geompy.SubShapeAll(Shape, geompy.ShapeType["WIRE"]) - Wires = [] - wi = 0 - - for wire in shape_wires: - Wires.append(geompy.GetSubShapeID(Shape, shape_wires[wi])) - wi = wi + 1 - - CC = geompy.CloseContour(Shape, Wires, IsCommonVertex) - - #Check shape - print "After closing contour:" - isValid = geompy.CheckShape(CC) - if isValid == 0: - print "The shape is not valid" - raise RuntimeError, "It seems, that the contour was not closed" - else: - print "The shape seems to be valid" - - #Add In Study - Id_Shape = geompy.addToStudy(Shape, "Shape with open wire") - Id_CC = geompy.addToStudy(CC, "Shape with closed wire") - -def TestSuppressHoles (geompy): - - #Create base Variables - radius = 50. - height = 300. - - #Create base points - p1 = geompy.MakeVertex(100., 100., 50.) - - #Create base directions - vz = geompy.MakeVectorDXDYDZ(0., 0., 100.) - - #Create base geometry 3D - Box = geompy.MakeBoxDXDYDZ(200., 200., 200.) - Cylinder = geompy.MakeCylinder(p1, vz, radius, height) - - #Boolean (Cut) - Cut = geompy.MakeBoolean(Box, Cylinder, 2) - idCut = geompy.addToStudy(Cut, "CUT") - - #IDList for SuppressFaces - faces = [] - faces = geompy.SubShapeAllSorted(Cut, geompy.ShapeType["FACE"]) - ind = 0 - for face in faces: - f_name = "FACE %d"%(ind) - f_id = geompy.addToStudyInFather(Cut, face, f_name) - - f_glob_id = geompy.GetSubShapeID(Cut, face) - print "face ", ind, " global index = ", f_glob_id - ind = ind + 1 - - f_glob_id_0 = geompy.GetSubShapeID(Cut, faces[0]) - cut_without_f_0 = geompy.SuppressFaces(Cut, [f_glob_id_0]) - - faces1 = [] - faces1 = geompy.SubShapeAllSorted(cut_without_f_0, geompy.ShapeType["FACE"]) - ind = 0 - for face in faces1: - f_name = "FACE %d"%(ind) - f_id = geompy.addToStudyInFather(cut_without_f_0, face, f_name) - - f_glob_id = geompy.GetSubShapeID(cut_without_f_0, face) - print "face ", ind, " global index = ", f_glob_id - ind = ind + 1 - - f_glob_id_5 = geompy.GetSubShapeID(cut_without_f_0, faces1[5]) - cut_without_f_0_5 = geompy.SuppressFaces(cut_without_f_0, [f_glob_id_5]) - cut_without_f_0_5_id = geompy.addToStudy(cut_without_f_0_5, "Cut without faces 0 and 5") - - #IDList for SuppHole - wires = [] - wires = geompy.SubShapeAllSorted(cut_without_f_0_5, geompy.ShapeType["WIRE"]) - ind = 0 - for wire in wires: - w_name = "WIRE %d"%(ind) - w_id = geompy.addToStudyInFather(cut_without_f_0_5, wire, w_name) - - w_glob_id = geompy.GetSubShapeID(cut_without_f_0_5, wire) - print "wire ", ind, " global index = ", w_glob_id - ind = ind + 1 - - w_3 = geompy.GetSubShapeID(cut_without_f_0_5, wires[3]) - - SuppHole3 = geompy.SuppressHoles(cut_without_f_0_5, [w_3]) - SuppHole3_id = geompy.addToStudy(SuppHole3, "Supp Hole 3") - -def TestMakeSewing (geompy, math): - - #Create base points - px = geompy.MakeVertex(100., 0., 0.) - py = geompy.MakeVertex(0., 100., 0.) - pz = geompy.MakeVertex(0., 0., 100.) - - #Create base geometry 2D & 3D - Vector = geompy.MakeVector(px, py) - Arc = geompy.MakeArc(py, pz, px) - - #Create base objects - angle = 45. * math.pi / 180 - WantPlanarFace = 1 #True - - Wire = geompy.MakeWire([Vector, Arc]) - Face = geompy.MakeFace(Wire, WantPlanarFace) - S = geompy.MakeRotation(Face, Vector, angle) - - #Make Sewing - precision = 0.00001 - Sewing = geompy.MakeSewing([Face, S], precision) - - #Add In Study - id_Sewing = geompy.addToStudy(Sewing, "Sewing") - -def TestDivideEdge (geompy): - - #Create Box - Box = geompy.MakeBoxDXDYDZ(200., 200., 200.) - - #Divide Edge - box_edges = geompy.SubShapeAllSorted(Box, geompy.ShapeType["EDGE"]) - edge_ind = geompy.GetSubShapeID(Box, box_edges[1]) - - Divide = geompy.DivideEdge(Box, edge_ind, 0.5, 1) # Obj, ind, param, is_curve_param - - #Add In Study - Id_Box = geompy.addToStudy(Box, "Box") - Id_Divide = geompy.addToStudy(Divide, "Box with Divided Edge") - -def TestHealingOperations (geompy, math): - - TestMakeSewing(geompy, math) - TestDivideEdge(geompy) - TestSuppressHoles(geompy) - TestSuppressInternalWires(geompy) - TestCloseContour(geompy) - TestSuppressFaces(geompy) - TestProcessShape(geompy) diff --git a/src/GEOM_SWIG/GEOM_TestMeasures.py b/src/GEOM_SWIG/GEOM_TestMeasures.py deleted file mode 100644 index 53604ea18..000000000 --- a/src/GEOM_SWIG/GEOM_TestMeasures.py +++ /dev/null @@ -1,102 +0,0 @@ -def TestMeasureOperations (geompy, math): - - p0 = geompy.MakeVertex(0 , 0, 0) - p137 = geompy.MakeVertex(10, 30, 70) - - box = geompy.MakeBoxTwoPnt(p0, p137) - - p678 = geompy.MakeVertex(60, 70, 80) - p789 = geompy.MakeVertex(70, 80, 90) - - cube = geompy.MakeBoxTwoPnt(p678, p789) - - ####### PointCoordinates ####### - - Coords = geompy.PointCoordinates(p137) - if Coords[0] != 10 or Coords[1] != 30 or Coords[2] != 70: - print "Coordinates of p137 must be (10, 30, 70), but returned (", Coords[0], ", ", Coords[1], ", ", Coords[2], ")" - - ####### CheckShape ####### - - IsValid = geompy.CheckShape(box) - if IsValid == 0: - raise RuntimeError, "Invalid box created" - else: - print "\nBox is valid" - - ####### WhatIs ####### - - Descr = geompy.WhatIs(box) - print "\nBox 10x30x70 description:" - print Descr - - ####### BasicProperties ####### - - Props = geompy.BasicProperties(box) - print "\nBox 10x30x70 Basic Properties:" - print " Wires length: ", Props[0] - print " Surface area: ", Props[1] - print " Volume : ", Props[2] - - dl = math.sqrt((Props[0] - 880)*(Props[0] - 880)) - da = math.sqrt((Props[1] - 6200)*(Props[1] - 6200)) - dv = math.sqrt((Props[2] - 21000)*(Props[2] - 21000)) - #print "|Props[0] - 880| = ", dl - - if dl > 1e-7 or da > 1e-7 or dv > 1e-7: - print "While must be:" - print " Wires length: ", 880 - print " Surface area: ", 6200 - print " Volume : ", 21000 - - ####### BoundingBox ####### - - BB = geompy.BoundingBox(box) - print "\nBounding Box of box 10x30x70:" - print " Xmin = ", BB[0], ", Xmax = ", BB[1] - print " Ymin = ", BB[2], ", Ymax = ", BB[3] - print " Zmin = ", BB[4], ", Zmax = ", BB[5] - - ####### Inertia ####### - - In = geompy.Inertia(box) - print "\nInertia matrix of box 10x30x70:" - print " (", In[0], ", ", In[1], ", ", In[2], ")" - print " (", In[3], ", ", In[4], ", ", In[5], ")" - print " (", In[6], ", ", In[7], ", ", In[8], ")" - print "Main moments of inertia of box 10x30x70:" - print " Ix = ", In[9], ", Iy = ", In[10], ", Iz = ", In[11] - - ####### Tolerance ####### - - Toler = geompy.Tolerance(box) - print "\nBox 10x30x70 tolerance:" - print " Face min. tolerance: ", Toler[0] - print " Face max. tolerance: ", Toler[1] - print " Edge min. tolerance: ", Toler[2] - print " Edge max. tolerance: ", Toler[3] - print " Vertex min. tolerance: ", Toler[4] - print " Vertex max. tolerance: ", Toler[5] - - ####### MakeCDG ####### - - pcdg = geompy.MakeCDG(box) - if pcdg is None: - raise RuntimeError, "MakeCDG(box) failed" - else: - print "\nCentre of gravity of box has been successfully obtained:" - Coords = geompy.PointCoordinates(pcdg) - print "(", Coords[0], ", ", Coords[1], ", ", Coords[2], ")" - if Coords[0] != 5 or Coords[1] != 15 or Coords[2] != 35: - print "But must be (5, 15, 35)" - - ####### MinDistance ####### - - MinDist = geompy.MinDistance(box, cube) - - #print "\nMinimal distance between Box and Cube = ", MinDist[0] - #print "It is reached at points:" - #print " On Box (", MinDist[1], ", ", MinDist[2], ", ", MinDist[3], ")" - #print " On Cube (", MinDist[4], ", ", MinDist[5], ", ", MinDist[6], ")" - - print "\nMinimal distance between Box and Cube = ", MinDist diff --git a/src/GEOM_SWIG/GEOM_TestOthers.py b/src/GEOM_SWIG/GEOM_TestOthers.py deleted file mode 100644 index bb3d94f63..000000000 --- a/src/GEOM_SWIG/GEOM_TestOthers.py +++ /dev/null @@ -1,427 +0,0 @@ -# GEOM GEOM_SWIG : binding of C++ implementaion with Python -# -# Copyright (C) 2003 CEA -# -# 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. -# -# 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.org -# -# -# File : GEOM_TestOthers.py -# Author : Julia DOROVSKIKH -# Module : GEOM -# $Header$ - -import os - -def TestExportImport (geompy, shape): - - print "Test Export/Import ...", - - # Files for Export/Import testing - fileExportImport = "/tmp/testExportImport.brep" - fileExportImportBREP = "/tmp/testExportImportBREP.brep" - fileExportImportIGES = "/tmp/testExportImportIGES.iges" - fileExportImportSTEP = "/tmp/testExportImportSTEP.step" - - if os.access(fileExportImport, os.F_OK): - if os.access(fileExportImport, os.W_OK): - os.remove(fileExportImport) - else: - fileExportImport = "/tmp/testExportImport1.brep" - - if os.access(fileExportImportBREP, os.W_OK): - os.remove(fileExportImportBREP) - else: - fileExportImportBREP = "/tmp/testExportImportBREP1.brep" - - if os.access(fileExportImportIGES, os.W_OK): - os.remove(fileExportImportIGES) - else: - fileExportImportIGES = "/tmp/testExportImportIGES1.iges" - - if os.access(fileExportImportSTEP, os.W_OK): - os.remove(fileExportImportSTEP) - else: - fileExportImportSTEP = "/tmp/testExportImportSTEP1.step" - - # Export - geompy.Export(shape, fileExportImport, "BREP") - - # ExportBREP, ExportIGES, ExportSTEP - geompy.ExportBREP(shape, fileExportImportBREP) - geompy.ExportIGES(shape, fileExportImportIGES) - geompy.ExportSTEP(shape, fileExportImportSTEP) - - # Import - Import = geompy.Import(fileExportImport, "BREP") - - id_Import = geompy.addToStudy(Import, "Import") - - # ImportBREP, ImportIGES, ImportSTEP - ImportBREP = geompy.ImportBREP(fileExportImportBREP) - ImportIGES = geompy.ImportIGES(fileExportImportIGES) - ImportSTEP = geompy.ImportSTEP(fileExportImportSTEP) - - id_ImportBREP = geompy.addToStudy(ImportBREP, "ImportBREP") - id_ImportIGES = geompy.addToStudy(ImportIGES, "ImportIGES") - id_ImportSTEP = geompy.addToStudy(ImportSTEP, "ImportSTEP") - - # Remove files for Export/Import testing - os.remove(fileExportImport) - os.remove(fileExportImportBREP) - os.remove(fileExportImportIGES) - os.remove(fileExportImportSTEP) - - print "OK" - - -def TestOtherOperations (geompy, math): - - # MakeFaces - p11 = geompy.MakeVertex( 0, 0, 0) - p12 = geompy.MakeVertex(30, 0, 0) - p13 = geompy.MakeVertex(30, 30, 0) - p14 = geompy.MakeVertex( 0, 30, 0) - - p21 = geompy.MakeVertex(10, 10, 0) - p22 = geompy.MakeVertex(20, 10, 0) - p23 = geompy.MakeVertex(20, 20, 0) - p24 = geompy.MakeVertex(10, 20, 0) - - e11 = geompy.MakeEdge(p11, p12) - e12 = geompy.MakeEdge(p12, p13) - e13 = geompy.MakeEdge(p13, p14) - e14 = geompy.MakeEdge(p14, p11) - - e21 = geompy.MakeEdge(p21, p22) - e22 = geompy.MakeEdge(p22, p23) - e23 = geompy.MakeEdge(p23, p24) - e24 = geompy.MakeEdge(p24, p21) - - w1 = geompy.MakeWire([e11, e12, e13, e14]) - w2 = geompy.MakeWire([e21, e22, e23, e24]) - w3 = geompy.MakeTranslation(w2, 0, 0, 10) - - id_w1 = geompy.addToStudy(w1, "Outside Wire") - id_w2 = geompy.addToStudy(w2, "Inside Wire") - id_w3 = geompy.addToStudy(w3, "Inside Wire, translated along OZ") - - f12 = geompy.MakeFaces([w1, w2], 0) - id_f12 = geompy.addToStudy(f12, "MakeFaces WO + WI") - - # Export/Import - TestExportImport(geompy, f12) - - # OrientationChange - Box = geompy.MakeBoxDXDYDZ(200, 200, 200) - Orientation = geompy.OrientationChange(Box) - id_Orientation = geompy.addToStudy(Orientation, "OrientationChange") - - # MakeCommon, MakeCut, MakeFuse, MakeSection - Sphere = geompy.MakeSphereR(100) - - Common = geompy.MakeCommon (Box, Sphere) - Cut = geompy.MakeCut (Box, Sphere) - Fuse = geompy.MakeFuse (Box, Sphere) - Section = geompy.MakeSection(Box, Sphere) - - id_Common = geompy.addToStudy(Common, "Common") - id_Cut = geompy.addToStudy(Cut, "Cut") - id_Fuse = geompy.addToStudy(Fuse, "Fuse") - id_Section = geompy.addToStudy(Section, "Section") - - # Partition - p100 = geompy.MakeVertex(100, 100, 100) - p300 = geompy.MakeVertex(300, 300, 300) - Box1 = geompy.MakeBoxTwoPnt(p100, p300) - Partition = geompy.Partition([Box], [Box1], [], [Box]) - id_Partition = geompy.addToStudy(Partition, "Partition of Box by Box1") - - # MakeMultiRotation1D, MakeMultiRotation2D - pz = geompy.MakeVertex(0, 0, 100) - vy = geompy.MakeVectorDXDYDZ(0, 100, 0) - - MultiRot1D = geompy.MakeMultiRotation1D(f12, vy, pz, 6) - MultiRot2D = geompy.MakeMultiRotation2D(f12, vy, pz, 45, 6, 30, 3) - - id_MultiRot1D = geompy.addToStudy(MultiRot1D, "MakeMultiRotation1D") - id_MultiRot2D = geompy.addToStudy(MultiRot2D, "MakeMultiRotation2D") - - # MakeFilletAll - radius_fillet = 10. - face5 = geompy.SubShapeSorted(Box, geompy.ShapeType["FACE"], [5]) - f_glob_id = geompy.GetSubShapeID(Box, face5) - SuppFace = geompy.SuppressFaces(Box, [f_glob_id]) - - MakeFilletAll = geompy.MakeFilletAll(SuppFace, radius_fillet) - id_MakeFilletAll = geompy.addToStudy(MakeFilletAll, "MakeFilletAll") - - # MakeChamferAll - dimension_chamfer = 10. - MakeChamferAll = geompy.MakeChamferAll(SuppFace, dimension_chamfer) - id_MakeChamferAll = geompy.addToStudy(MakeChamferAll, "MakeChamferAll") - - # MakeChamfer - d1 = 13. - d2 = 7. - box_faces = geompy.SubShapeAllSorted(Box, geompy.ShapeType["FACE"]) - f_ind_1 = geompy.GetSubShapeID(Box, box_faces[0]) - f_ind_2 = geompy.GetSubShapeID(Box, box_faces[1]) - f_ind_3 = geompy.GetSubShapeID(Box, box_faces[2]) - - MakeChamfer = geompy.MakeChamfer(Box, d1, d2, geompy.ShapeType["FACE"], - [f_ind_1, f_ind_2, f_ind_3]) - id_MakeChamfer = geompy.addToStudy(MakeChamfer, "MakeChamfer") - - # NumberOfFaces - NumberOfFaces = geompy.NumberOfFaces(Box) - if NumberOfFaces != 6: - print "Bad number of faces in BOX!" - - # NumberOfEdges - NumberOfEdges = geompy.NumberOfEdges(Box) - if NumberOfEdges != 12: - print "Bad number of edges in BOX!" - - # MakeBlockExplode - Compound = geompy.MakeCompound([Box, Sphere]) - MakeBlockExplode = geompy.MakeBlockExplode(Compound, 6, 6) - - id_MakeBlockExplode = geompy.addToStudy(MakeBlockExplode[0], "MakeBlockExplode") - - # CheckCompoundOfBlocks - p1 = geompy.MakeVertex(200, 0, 0) - p2 = geompy.MakeVertex(400, 200, 200) - p3 = geompy.MakeVertex(400, 50, 50) - p4 = geompy.MakeVertex(600, 250, 250) - - Box2 = geompy.MakeBoxTwoPnt(p1, p2) - Box3 = geompy.MakeBoxTwoPnt(p3, p4) - Cyl = geompy.MakeCylinderRH(50, 300) - Cone = geompy.MakeConeR1R2H(150, 10, 400) - - Compound1 = geompy.MakeCompound([Box, Cyl, Cone, Box3, Box2]) - - IsValid = geompy.CheckCompoundOfBlocks(Compound1) - if IsValid == 0: - print "The Blocks Compound is NOT VALID" - else: - print "The Blocks Compound is VALID" - - IsValid = geompy.CheckCompoundOfBlocks(Box) - if IsValid == 0: - print "The Box is NOT VALID" - else: - print "The Box is VALID" - - # test geometrical groups - - # CreateGroup - CreateGroup = geompy.CreateGroup(Box, geompy.ShapeType["FACE"]) - - id_CreateGroup = geompy.addToStudy(CreateGroup, "CreateGroup") - - # AddObject - f_ind_4 = geompy.GetSubShapeID(Box, box_faces[3]) - f_ind_5 = geompy.GetSubShapeID(Box, box_faces[4]) - f_ind_6 = geompy.GetSubShapeID(Box, box_faces[5]) - - geompy.AddObject(CreateGroup, f_ind_6) # box_faces[5] - geompy.AddObject(CreateGroup, f_ind_1) # box_faces[0] - geompy.AddObject(CreateGroup, f_ind_4) # box_faces[3] - - # UnionList - geompy.UnionList(CreateGroup, [box_faces[2], box_faces[4], box_faces[5]]) - - # RemoveObject(theGroup, theSubShapeID) - geompy.RemoveObject(CreateGroup, f_ind_1) # box_faces[0] - - # DifferenceList - geompy.DifferenceList(CreateGroup, [box_faces[1], box_faces[0], box_faces[3]]) - - # GetObjectIDs - GetObjectIDs = geompy.GetObjectIDs(CreateGroup) - - print "Group of Box's faces includes the following IDs:" - print "(must be ", f_ind_6, ", ", f_ind_3, " and ", f_ind_5, ")" - for ObjectID in GetObjectIDs: - print " ", ObjectID - - BoxCopy = geompy.GetMainShape(CreateGroup) - - # ----------------------------------------------------------------------------- - # enumeration ShapeTypeString as a dictionary - # ----------------------------------------------------------------------------- - ShapeTypeString = {'0':"COMPOUND", '1':"COMPSOLID", '2':"SOLID", '3':"SHELL", '4':"FACE", '5':"WIRE", '6':"EDGE", '7':"VERTEX", '8':"SHAPE"} - - GroupType = geompy.GetType(CreateGroup) - print "Type of elements of the created group is ", ShapeTypeString[`GroupType`] - - # Prepare data for the following operations - p0 = geompy.MakeVertex(0, 0, 0) - b0 = geompy.MakeBox(-50, -50, -50, 50, 50, 50) - s0 = geompy.MakeSphereR(100) - - id_b0 = geompy.addToStudy(b0, "b0") - id_s0 = geompy.addToStudy(s0, "s0") - - v_0pp = geompy.MakeVectorDXDYDZ( 0, 1, 1) - v_0np = geompy.MakeVectorDXDYDZ( 0, -1, 1) - v_p0p = geompy.MakeVectorDXDYDZ( 1, 0, 1) - v_n0p = geompy.MakeVectorDXDYDZ(-1, 0, 1) - v_pp0 = geompy.MakeVectorDXDYDZ( 1, 1, 0) - v_np0 = geompy.MakeVectorDXDYDZ(-1, 1, 0) - - pln_0pp = geompy.MakePlane(p0, v_0pp, 300) - pln_0np = geompy.MakePlane(p0, v_0np, 300) - pln_p0p = geompy.MakePlane(p0, v_p0p, 300) - pln_n0p = geompy.MakePlane(p0, v_n0p, 300) - pln_pp0 = geompy.MakePlane(p0, v_pp0, 300) - pln_np0 = geompy.MakePlane(p0, v_np0, 300) - - part_tool_1 = geompy.MakePartition([b0, pln_0pp, pln_0np, pln_p0p, pln_n0p, pln_pp0, pln_np0], - [], - [], - [b0]) - - pt_pnt_1 = geompy.MakeVertex( 55, 0, 55) - pt_pnt_2 = geompy.MakeVertex( 0, 55, 55) - pt_pnt_3 = geompy.MakeVertex(-55, 0, 55) - pt_pnt_4 = geompy.MakeVertex( 0, -55, 55) - pt_pnt_5 = geompy.MakeVertex( 55, 55, 0) - pt_pnt_6 = geompy.MakeVertex( 55, -55, 0) - pt_pnt_7 = geompy.MakeVertex(-55, 55, 0) - pt_pnt_8 = geompy.MakeVertex(-55, -55, 0) - pt_pnt_9 = geompy.MakeVertex( 55, 0, -55) - pt_pnt_10 = geompy.MakeVertex( 0, 55, -55) - pt_pnt_11 = geompy.MakeVertex(-55, 0, -55) - pt_pnt_12 = geompy.MakeVertex( 0, -55, -55) - - pt_face_1 = geompy.GetFaceNearPoint(part_tool_1, pt_pnt_1) - pt_face_2 = geompy.GetFaceNearPoint(part_tool_1, pt_pnt_2) - pt_face_3 = geompy.GetFaceNearPoint(part_tool_1, pt_pnt_3) - pt_face_4 = geompy.GetFaceNearPoint(part_tool_1, pt_pnt_4) - pt_face_5 = geompy.GetFaceNearPoint(part_tool_1, pt_pnt_5) - pt_face_6 = geompy.GetFaceNearPoint(part_tool_1, pt_pnt_6) - pt_face_7 = geompy.GetFaceNearPoint(part_tool_1, pt_pnt_7) - pt_face_8 = geompy.GetFaceNearPoint(part_tool_1, pt_pnt_8) - pt_face_9 = geompy.GetFaceNearPoint(part_tool_1, pt_pnt_9) - pt_face_10 = geompy.GetFaceNearPoint(part_tool_1, pt_pnt_10) - pt_face_11 = geompy.GetFaceNearPoint(part_tool_1, pt_pnt_11) - pt_face_12 = geompy.GetFaceNearPoint(part_tool_1, pt_pnt_12) - - pt_box = geompy.GetBlockNearPoint(part_tool_1, p0) - - part_tool = geompy.MakeCompound([pt_face_1, pt_face_4, pt_face_7, pt_face_10, - pt_face_2, pt_face_5, pt_face_8, pt_face_11, - pt_face_3, pt_face_6, pt_face_9, pt_face_12, pt_box]) - id_part_tool = geompy.addToStudy(part_tool, "part_tool") - - part = geompy.MakePartition([s0], [part_tool]) - geompy.addToStudy(part, "part") - - # GetFreeFacesIDs - anIDs = geompy.GetFreeFacesIDs(part) - freeFaces = geompy.GetSubShape(part, anIDs) - - geompy.addToStudy(freeFaces, "freeFaces") - - # RemoveExtraEdges - freeFacesWithoutExtra = geompy.RemoveExtraEdges(freeFaces) - - geompy.addToStudy(freeFacesWithoutExtra, "freeFacesWithoutExtra") - - # GetSharedShapes - sharedFaces = geompy.GetSharedShapes(part, freeFacesWithoutExtra, geompy.ShapeType["FACE"]) - - for shFace in sharedFaces: - geompy.addToStudy(shFace, "sharedFace") - - # CheckAndImprove - blocksComp = geompy.CheckAndImprove(part) - - geompy.addToStudy(blocksComp, "blocksComp") - - # Propagate - listChains = geompy.Propagate(blocksComp) - - for chain in listChains: - geompy.addToStudyInFather(blocksComp, chain, "propagation chain") - - # GetPoint(theShape, theX, theY, theZ, theEpsilon) - # - # (-50, 50, 50) .-----. (50, 50, 50) - # pb0_top_1 | | - # | . pmidle - # | | - # (-50, -50, 50) '-----' (50, -50, 50) - # - pb0_top_1 = geompy.GetPoint(blocksComp, -50, 50, 50, 0.01) - pb0_bot_1 = geompy.GetPoint(blocksComp, -50, -50, -50, 0.01) - - geompy.addToStudyInFather(blocksComp, pb0_top_1, "point from blocksComp (-50, 50, 50)") - geompy.addToStudyInFather(blocksComp, pb0_bot_1, "point from blocksComp (-50, -50, -50)") - - # GetEdgeNearPoint(theShape, thePoint) - pmidle = geompy.MakeVertex(50, 0, 50) - edge1 = geompy.GetEdgeNearPoint(blocksComp, pmidle) - - geompy.addToStudyInFather(blocksComp, edge1, "edge near point (50, 0, 50)") - - # GetBlockByParts(theCompound, theParts) - b0_image = geompy.GetBlockByParts(blocksComp, [pb0_top_1, pb0_bot_1, edge1]) - - geompy.addToStudyInFather(blocksComp, b0_image, "b0 image") - - # GetShapesOnPlane - faces_on_pln = geompy.GetShapesOnPlane(blocksComp, geompy.ShapeType["FACE"], - v_0pp, geompy.GEOM.ST_ONIN) - for face_i in faces_on_pln: - geompy.addToStudy(face_i, "Face on Plane (N = (0, 1, 1)) or below it") - - # GetShapesOnCylinder - edges_on_cyl = geompy.GetShapesOnCylinder(blocksComp, geompy.ShapeType["EDGE"], - vy, 55, geompy.GEOM.ST_OUT) - for edge_i in edges_on_cyl: - geompy.addToStudy(edge_i, "Edge out of Cylinder (axis = (0, 1, 0), r = 55)") - - # GetShapesOnSphere - vertices_on_sph = geompy.GetShapesOnSphere(blocksComp, geompy.ShapeType["VERTEX"], - p0, 100, geompy.GEOM.ST_ON) - for vertex_i in vertices_on_sph: - geompy.addToStudy(vertex_i, "Vertex on Sphere (center = (0, 0, 0), r = 100)") - - # GetInPlace(theShapeWhere, theShapeWhat) - box5 = geompy.MakeBoxDXDYDZ(100, 100, 100) - box6 = geompy.MakeTranslation(box5, 50, 50, 0) - - part = geompy.MakePartition([box5], [box6]) - geompy.addToStudy(part, "Partitioned") - - ibb = 5 - box_list = [box5, box6] - for abox in box_list: - geompy.addToStudy(abox, "Box " + `ibb`) - box_faces = geompy.SubShapeAll(abox, geompy.ShapeType["FACE"]) - ifa = 1 - for aface in box_faces: - geompy.addToStudyInFather(abox, aface, "Face" + `ifa`) - refl_box_face = geompy.GetInPlace(part, aface) - if refl_box_face is not None: - geompy.addToStudyInFather(part, refl_box_face, - "Reflection of Face " + `ifa` + " of box " + `ibb`) - ifa = ifa + 1 - ibb = ibb + 1 diff --git a/src/GEOM_SWIG/GEOM_blocks.py b/src/GEOM_SWIG/GEOM_blocks.py deleted file mode 100644 index fca4d3fb6..000000000 --- a/src/GEOM_SWIG/GEOM_blocks.py +++ /dev/null @@ -1,41 +0,0 @@ -# GEOM GEOM_SWIG : binding of C++ implementaion with Python -# -# Copyright (C) 2003 CEA -# -# 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. -# -# 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.org -# -# -# -# File : GEOM_blocks.py -# Author : Julia DOROVSKIKH -# Module : GEOM -# $Header$ - -import salome -import geompy -import math - -import GEOM_Spanner - -isBlocksTest = 0 # False -isMeshTest = 0 # False - -smesh = None - -GEOM_Spanner.MakeSpanner(salome, geompy, math, isBlocksTest, isMeshTest, smesh) - -salome.sg.updateObjBrowser(1); diff --git a/src/GEOM_SWIG/GEOM_cyl2complementary.py b/src/GEOM_SWIG/GEOM_cyl2complementary.py deleted file mode 100755 index 97efc776e..000000000 --- a/src/GEOM_SWIG/GEOM_cyl2complementary.py +++ /dev/null @@ -1,88 +0,0 @@ -#============================================================================== -# Info. -# Bug (from script, bug) : cyl2complementary_modified.py, PAL6700 -# Modified : 25/11/2004 -# Author : Kovaltchuk Alexey -# Project : PAL/SALOME -#============================================================================== - -# Import -# ------ - -import salome -import geompy -geomgui = salome.ImportComponentGUI("GEOM") - -def addToStudy(shape, name): - i = geompy.addToStudy(shape, name) - salome.sg.updateObjBrowser(0) - geomgui.createAndDisplayGO(i) - return i - -# Piece -# ----- - -# Creer la geometrie en bloc hexahedrique d'un parallelepipede troue d'une piece en forme de T composee de 2 cylindres de diametre different dont les axes se coupent orthogonalement, -# puis mailler en hexahedrique. - -gx = 0 -gy = 0 -gz = 0 - -g_dx = 250 -g_dy = 200 -g_dz = 150 - -g_rayonGrand = 70 -g_rayonPetit = 50 - -# Geometrie -# ========= - -# Le parallelepipede -# ------------------ - -p_boite = geompy.MakeBox(gx-g_dx, gy-g_dy, gz-g_dz, gx+g_dx, gy+g_dy, gz+g_dz) - -# Le grand cylindre -# ----------------- - -g_base = geompy.MakeVertex(gx-g_dx, gy, gz) -g_dir = geompy.MakeVectorDXDYDZ(1, 0, 0) -g_cyl = geompy.MakeCylinder(g_base, g_dir, g_rayonGrand, g_dx*2) - -# Le petit cylindre -# ----------------- - -c_base = geompy.MakeVertex(gx, gy, gz) -c_dir = geompy.MakeVectorDXDYDZ(0, 0, 1) -c_cyl = geompy.MakeCylinder(c_base, c_dir, g_rayonPetit, g_dz) - -# Le parallelepipede troue -# ------------------------ - -t_boite1 = geompy.MakeBoolean(p_boite , g_cyl, 2) -t_boite = geompy.MakeBoolean(t_boite1, c_cyl, 2) - -# Partitionner -# ------------ - -p_tools = [] - -p_tools.append(geompy.MakePlane(c_base, geompy.MakeVectorDXDYDZ(0, g_dz, g_dy), 10)) -p_tools.append(geompy.MakePlane(c_base, geompy.MakeVectorDXDYDZ(0, -g_dz, g_dy), 10)) - -p_tools.append(geompy.MakePlane(geompy.MakeVertex(gx-g_rayonPetit, 0, 0), geompy.MakeVectorDXDYDZ(1, 0, 0), 10)) -p_tools.append(geompy.MakePlane(geompy.MakeVertex(gx+g_rayonPetit, 0, 0), geompy.MakeVectorDXDYDZ(1, 0, 0), 10)) - -addToStudy(t_boite, "t_boite") - -p_element = geompy.MakePartition([t_boite], p_tools, [], [], 4, 0, []) - -# Compound -# -------- - -# Ajouter la piece dans l'etude -# ----------------------------- - -idpiece = addToStudy(p_element, "BoxHoled2Cylinders") diff --git a/src/GEOM_SWIG/GEOM_example.py b/src/GEOM_SWIG/GEOM_example.py deleted file mode 100644 index 6feb7b453..000000000 --- a/src/GEOM_SWIG/GEOM_example.py +++ /dev/null @@ -1,54 +0,0 @@ -# GEOM GEOM_SWIG : binding of C++ omplementaion with Python -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : GEOM_example.py -# Author : Paul RASCLE, EDF -# Module : GEOM -# $Header$ - -import salome -import geompy - -ind = 0 -boxlist = [] -while ind < 5: - x1 = 10. * ind - y1 = 0. - z1 = 0. - x2 = 10. * (ind+1) - y2 = 20. * (ind+1) - z2 = 30. * (ind+1) - print x1, y1, z1, x2, y2, z2 - - point1 = geompy.MakeVertex(x1, y1, z1) - name1 = "point1_%d"%(ind) - id_pt1 = geompy.addToStudy(point1, name1) - point2 = geompy.MakeVertex(x2, y2, z2) - name2 = "point2_%d"%(ind) - id_pt2 = geompy.addToStudy(point2, name2) - - name = "box%d"%(ind) - box = geompy.MakeBoxTwoPnt(point1, point2) - id_box = geompy.addToStudy(box, name) - boxlist.append(box) - ind = ind + 1 diff --git a/src/GEOM_SWIG/GEOM_example2.py b/src/GEOM_SWIG/GEOM_example2.py deleted file mode 100644 index 87ae39ddc..000000000 --- a/src/GEOM_SWIG/GEOM_example2.py +++ /dev/null @@ -1,68 +0,0 @@ -# GEOM GEOM_SWIG : binding of C++ omplementaion with Python -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : GEOM_example2.py -# Author : Paul RASCLE, EDF -# Module : GEOM -# $Header$ - -import salome -import geompy -import math - -geom = salome.lcc.FindOrLoadComponent("FactoryServer", "GEOM") -myBuilder = salome.myStudy.NewBuilder() - -BasicOp = geom.GetIBasicOperations(salome.myStudyId) -PrimOp = geom.GetI3DPrimOperations(salome.myStudyId) -InsertOp = geom.GetIInsertOperations(salome.myStudyId) -TrsfOp = geom.GetITransformOperations(salome.myStudyId) - -point0 = BasicOp.MakePointXYZ(0.,0.,0.) -pointz1 = BasicOp.MakePointXYZ(0.,0.,1.) -dirz = BasicOp.MakeVectorTwoPnt(point0,pointz1) - -torus1 = PrimOp.MakeTorusPntVecRR(point0,dirz,150.,25.) -id_torus1 = geompy.addToStudy(torus1,"torus1") - -torus2 = InsertOp.MakeCopy(torus1) - -vec1 = BasicOp.MakeVectorDXDYDZ(0.,0.,100.) -torus2 = TrsfOp.TranslateVectorCopy(torus2,vec1) -id_torus2 = geompy.addToStudy(torus2,"torus2") - -cylz1 = PrimOp.MakeCylinderPntVecRH(point0,dirz,25.,100.) - -ind = 0 -cyllist = [] -while ind < 6: - acyl = InsertOp.MakeCopy(cylz1) - x = 150. * math.cos(ind * math.pi/3.) - y = 150. * math.sin(ind * math.pi/3.) - z = 0. - vec_i = BasicOp.MakeVectorDXDYDZ(x,y,z) - name = "cyl%d"%(ind) - acyl = TrsfOp.TranslateVectorCopy(acyl,vec_i) - id_acyl = geompy.addToStudy(acyl,name) - cyllist.append(acyl) - ind = ind + 1 diff --git a/src/GEOM_SWIG/GEOM_example3.py b/src/GEOM_SWIG/GEOM_example3.py deleted file mode 100644 index 1287f6853..000000000 --- a/src/GEOM_SWIG/GEOM_example3.py +++ /dev/null @@ -1,116 +0,0 @@ -# GEOM GEOM_SWIG : binding of C++ omplementaion with Python -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : GEOM_example3.py -# Author : Paul RASCLE, EDF -# Module : GEOM -# $Header$ - -import salome -import geompy -import math -from time import sleep - -geom = salome.lcc.FindOrLoadComponent("FactoryServer", "GEOM") -myBuilder = salome.myStudy.NewBuilder() - -gg = salome.ImportComponentGUI("GEOM") - -BasicOp = geom.GetIBasicOperations(salome.myStudyId) -PrimOp = geom.GetI3DPrimOperations(salome.myStudyId) -InsertOp = geom.GetIInsertOperations(salome.myStudyId) -TrsfOp = geom.GetITransformOperations(salome.myStudyId) - -point0 = BasicOp.MakePointXYZ(0.,0.,0.) -pointz1 = BasicOp.MakePointXYZ(0.,0.,1.) -dirz = BasicOp.MakeVectorTwoPnt(point0,pointz1) - -torus1 = PrimOp.MakeTorusPntVecRR(point0,dirz,150.,25.) -id_torus1 = geompy.addToStudy(torus1,"torus1") -gg.createAndDisplayGO(id_torus1) - -torus2 = InsertOp.MakeCopy(torus1) - -vec1 = BasicOp.MakeVectorDXDYDZ(0.,0.,100.) -torus2 = TrsfOp.TranslateVectorCopy(torus2,vec1) -id_torus2 = geompy.addToStudy(torus2,"torus2") -gg.createAndDisplayGO(id_torus2) - -cylz1 = PrimOp.MakeCylinderPntVecRH(point0,dirz,25.,100.) - -ind = 0 -shapeList = [] -idList = [] -while ind < 6: - acyl = InsertOp.MakeCopy(cylz1) - x = 150. * math.cos(ind * math.pi/3.) - y = 150. * math.sin(ind * math.pi/3.) - z = 0. - vec_i = BasicOp.MakeVectorDXDYDZ(x,y,z) - name = "cyl%d"%(ind) - acyl = TrsfOp.TranslateVectorCopy(acyl,vec_i) - id_acyl = geompy.addToStudy(acyl,name) - gg.createAndDisplayGO(id_acyl) - shapeList.append(acyl) - idList.append(id_acyl) - ind = ind +1 - -shapeList.append(torus1) -shapeList.append(torus2) -idList.append(id_torus1) -idList.append(id_torus2) - -cage = geompy.MakeCompound(shapeList) -id_cage = geompy.addToStudy(cage,"cage") -gg.createAndDisplayGO(id_cage) - -from salome import sg -sleep(1) -sg.EraseAll() -for id in idList: - sg.DisplayOnly(id) - sleep(1) -sg.EraseAll() -for id in idList: - sg.Display(id) - sleep(1) -for id in idList: - sg.Erase(id) - sleep(1) - -#sg.Display(id_cage) -sg.Display(id_torus1) -sg.Display(id_torus2) -sg.Display(id_acyl) - -gg.setTransparency(id_torus1,0.5) - -gg.setDisplayMode(id_torus1,1) -gg.setDisplayMode(id_torus2,1) -gg.setDisplayMode(id_acyl,1) -#gg.setDisplayMode(id_cage,1) - -gg.setColor(id_torus1,0,0,255) -gg.setColor(id_torus2,255,0,0) -gg.setColor(id_acyl,0,255,0) -#gg.setColor(id_cage,255,255,0) diff --git a/src/GEOM_SWIG/GEOM_example4.py b/src/GEOM_SWIG/GEOM_example4.py deleted file mode 100755 index 631ef13ca..000000000 --- a/src/GEOM_SWIG/GEOM_example4.py +++ /dev/null @@ -1,108 +0,0 @@ -# GEOM GEOM_SWIG : binding of C++ omplementaion with Python -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : GEOM_example4.py -# Module : GEOM - -#import SMESH -#import smeshpy -import salome -from salome import sg -import math - -import geompy - -geom = salome.lcc.FindOrLoadComponent("FactoryServer", "GEOM") -myBuilder = salome.myStudy.NewBuilder() -from geompy import gg - -#smeshgui = salome.ImportComponentGUI("SMESH") -#smeshgui.Init(salome.myStudyId); - -ShapeTypeCompSolid = 1 -ShapeTypeSolid = 2 -ShapeTypeShell = 3 -ShapeTypeFace = 4 -ShapeTypeWire = 5 -ShapeTypeEdge = 6 -ShapeTypeVertex = 7 - -pi=math.pi - -# --------------------------------------------- -xa=math.sin(pi/12) -ya=0 -za=math.cos(pi/12) - -xb=0 -yb=math.sin(pi/18) -zb=math.cos(pi/18) - -xc=math.cos(-pi/18) -yc=0 -zc=math.sin(-pi/18) - -rc1=150 -hc1=300 -rc2=150 -rc3=150 -rc4=300 -# --------------------------------------------- -point_0 = geompy.MakeVertex(0, 0, 0) -point_z = geompy.MakeVertex(0, 0, 1) - -point_a = geompy.MakeVertex(xa, ya, za) -point_b = geompy.MakeVertex(xb, yb, zb) -point_c = geompy.MakeVertex(xc, yc, zc) - -dir_z = geompy.MakeVector(point_0,point_z) -dir_a = geompy.MakeVector(point_0,point_a) -dir_b = geompy.MakeVector(point_0,point_b) -dir_c = geompy.MakeVector(point_0,point_c) - -cyl_1 = geompy.MakeCylinder(point_0, dir_z, rc1, hc1) - -hc2=2*hc1 -cyl_t = geompy.MakeCylinder(point_0, dir_a, rc2, hc2) -cyl_a = geompy.MakeTranslation(cyl_t, 1.2*rc1, 0.1*rc1, -0.5*hc1) - -hc3=2*hc1 -cyl_t = geompy.MakeCylinder(point_0, dir_b, rc3, hc3) -cyl_b = geompy.MakeTranslation(cyl_t, -1.2*rc1, -0.1*rc1, -0.5*hc1) - -hc4=2*hc1 -cyl_t = geompy.MakeCylinder(point_0, dir_c, rc4, hc4) -cyl_t = geompy.MakeRotation(cyl_t, dir_c, pi/2) -cyl_c = geompy.MakeTranslation(cyl_t, -hc1, 0, 0) -cyl_d = geompy.MakeTranslation(cyl_t, -hc1, 0, 1.3*rc4) - -inter_t = geompy.MakeBoolean(cyl_c,cyl_d, 1) # common - -blob_t = geompy.MakeBoolean(cyl_1, cyl_a, 2) # cut -blob_t = geompy.MakeBoolean(blob_t, cyl_b, 2) - -blob = geompy.MakeBoolean(blob_t, inter_t, 1) # common - -idblob = geompy.addToStudy(blob,"blob") -#idc = geompy.addToStudy(cyl_c,"cyl_c") -#idd = geompy.addToStudy(cyl_d,"cyl_d") diff --git a/src/GEOM_SWIG/GEOM_example5.py b/src/GEOM_SWIG/GEOM_example5.py deleted file mode 100644 index c26239ba4..000000000 --- a/src/GEOM_SWIG/GEOM_example5.py +++ /dev/null @@ -1,54 +0,0 @@ -# GEOM GEOM_SWIG : binding of C++ omplementaion with Python -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : GEOM_example5.py -# Author : Damien COQUERET, Open CASCADE -# Module : GEOM -# $Header$ - -import salome -import geompy - -geom = salome.lcc.FindOrLoadComponent("FactoryServer", "GEOM") - -#Create Points -BasicOp = geom.GetIBasicOperations(salome.myStudyId) -Vertex1 = BasicOp.MakePointXYZ(0., 0., 0.) -Vertex2 = BasicOp.MakePointXYZ(100., 20., 30.) -Vertex3 = BasicOp.MakePointXYZ(150., 100., -25.) -Vertex4 = BasicOp.MakePointXYZ(40., -80., 79.) - -#GEOM_Objects List for Splines -GOList = [] -GOList.append(Vertex1) -GOList.append(Vertex2) -GOList.append(Vertex3) -GOList.append(Vertex4) - -#Create Splines -Bezier = geompy.MakeBezier(GOList) -Interpol = geompy.MakeInterpol(GOList) - -#Add In Study -id_Bezier = geompy.addToStudy(Bezier, "Bezier") -id_Interpol = geompy.addToStudy(Interpol, "Interpol") diff --git a/src/GEOM_SWIG/GEOM_moteur.py b/src/GEOM_SWIG/GEOM_moteur.py deleted file mode 100644 index dfe87ae27..000000000 --- a/src/GEOM_SWIG/GEOM_moteur.py +++ /dev/null @@ -1,144 +0,0 @@ -# GEOM GEOM_SWIG : binding of C++ omplementaion with Python -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : GEOM_moteur.py -# Author : Damien COQUERET, Open CASCADE -# Module : GEOM -# $Header$ - -import salome -import geompy -import math - -geom = salome.lcc.FindOrLoadComponent("FactoryServer", "GEOM") -myBuilder = salome.myStudy.NewBuilder() - -#Variables modifiables -PosX = 0 #Position du cylindre dans l'espace -PosY = 0 #Il est oriente suivant Z -PosZ = 0 -NbBranches = 7 #>2 -HauteurT = 70 #Hauteur total du stator - -#Variables -Angle1 = 2 * math.pi / NbBranches -Angle2 = Angle1 / 2 -HauteurR = HauteurT / 3 -Ep = HauteurT / 10 -DExtExt = HauteurT * 6 / 7 -DExtInt = DExtExt - Ep -DIntExt = DExtExt / 3 -DIntInt = DExtExt / 4 -EpRot = DIntExt * math.sin(Angle2) -Pos1C = PosX + DIntExt * math.cos(Angle2) -Pos1S = PosY + DIntExt * math.sin(Angle2) -PosCour = PosZ + HauteurT * 4 / 7 -PosRot = PosZ + 0.9 * HauteurT - -#Points -BasicOp = geom.GetIBasicOperations(salome.myStudyId) -OO = BasicOp.MakePointXYZ(0, 0, 0) -P0 = BasicOp.MakePointXYZ(0, 0, 1) -P1 = BasicOp.MakePointXYZ(PosX, PosY, PosZ) -P2 = BasicOp.MakePointXYZ(PosX, PosY, PosZ + Ep) -P3 = BasicOp.MakePointXYZ(PosX, PosY, PosCour) -P4 = BasicOp.MakePointXYZ(PosX, PosY, PosCour + Ep) -P5 = BasicOp.MakePointXYZ(PosX, PosY, PosRot) -P6 = BasicOp.MakePointXYZ(Pos1C, Pos1S, PosZ) -P7 = BasicOp.MakePointXYZ(PosX + DExtExt, Pos1S, PosZ) -P8 = BasicOp.MakePointXYZ(Pos1C, Pos1S, PosZ + HauteurT) - -#Vecteurs -V1 = BasicOp.MakeVectorTwoPnt(OO,P0) -V2 = BasicOp.MakeVectorTwoPnt(P1,P2) -V3 = BasicOp.MakeVectorTwoPnt(P6,P8) - -#Cylindre central -C0 = geompy.MakeCylinder(P1, V1, DIntInt, PosCour + Ep - PosZ) -C01 = geompy.MakeCylinder(P1, V1, DIntExt, PosCour + Ep - PosZ) -Cylindre = geompy.MakeBoolean(C01, C0, 2) -#Id_Cyl = geompy.addToStudy(Cylindre, "Cylindre") - -#Camemberts de coupe -B1 = BasicOp.MakeVectorTwoPnt(P6, P7) -B2 = geompy.MakePrismVecH(B1, V1, HauteurT) -S0 = geompy.MakeRevolution(B2, V3, Angle1) -CoupeList = [] -CoupeList.append(S0) -Ind = 1 -while Ind < NbBranches : - S = geompy.MakeRotation(S0, V2, Ind * Angle1) - CoupeList.append(S) - Ind = Ind + 1 -Coupe1 = geompy.MakeCompound(CoupeList) -#Id_Coupe1 = geompy.addToStudy(Coupe1, "Coupe1") - -#Couronne1 -C1 = geompy.MakeCylinder(P1, V1, DExtExt, HauteurT) -C2 = geompy.MakeCylinder(P2, V1, DExtInt, HauteurT) -C3 = geompy.MakeBoolean(C1, C2, 2) -C31 = geompy.MakeBoolean(C3, C0, 2) -Couronne1 = geompy.MakeBoolean(C31, Coupe1, 2) -#Id_Couronne1 = geompy.addToStudy(Couronne1, "Couronne1") - -#Couronne2 -C4 = geompy.MakeCylinder(P3, V1, DExtExt, PosZ + HauteurT - PosCour) -C5 = geompy.MakeCylinder(P4, V1, DExtInt, HauteurT) -Coupe2 = geompy.MakeRotation(Coupe1, V2, Angle2) -C6 = geompy.MakeBoolean(C4, C5, 2) -C61 = geompy.MakeBoolean(C6, C0, 2) -Couronne2 = geompy.MakeBoolean(C61, Coupe2, 2) -#Id_Couronne2 = geompy.addToStudy(Couronne2, "Couronne2") - -#Rotor1 -C9 = geompy.MakeCylinder(P5, V1, DIntExt, HauteurR) -C10 = geompy.MakeCylinder(P5, V1, DIntExt / 4, 2 * HauteurR) -Rotor1List = [] -Rotor1List.append(C9) -Rotor1List.append(C10) -Rotor1 = geompy.MakeCompound(Rotor1List) -Id_Rotor1 = geompy.addToStudy(Rotor1, "Rotor1") - -#Rotor2 -D0 = geompy.MakeBox(2 * Pos1C - PosX, -Pos1S + 2 * PosY, PosRot, 2 * Pos1C + EpRot - PosX, Pos1S, PosRot + EpRot / 2) -Rotor2List = [] -Rotor2List.append(D0) -Ind = 1 -while Ind < NbBranches : - R = geompy.MakeRotation(D0, V2, Ind * Angle1) - Rotor2List.append(R) - Ind = Ind + 1 -Rotor2 = geompy.MakeCompound(Rotor2List) -Id_Rotor2 = geompy.addToStudy(Rotor2, "Rotor2") - -#Rotor3 -Rotor3 = geompy.MakeRotation(Rotor2, V2, Angle2) -Id_Rotor3 = geompy.addToStudy(Rotor3, "Rotor3") - -#Stator -StatorList = [] -StatorList.append(Cylindre) -StatorList.append(Couronne1) -StatorList.append(Couronne2) -Stator = geompy.MakeCompound(StatorList) -Id_Stator = geompy.addToStudy(Stator, "Stator") diff --git a/src/GEOM_SWIG/GEOM_shared_modules.py b/src/GEOM_SWIG/GEOM_shared_modules.py deleted file mode 100644 index bd994fadc..000000000 --- a/src/GEOM_SWIG/GEOM_shared_modules.py +++ /dev/null @@ -1,19 +0,0 @@ -""" - -""" - -# force GEOM importation at interpretor initialization -# see salome_shared_modules.py -# (avoids incomplete import at run time) - -print "============== import GEOM =======================" - -import GEOM - -# this function is required - -def init_shared_modules(): - """ - This function initializes shared modules that need to be - """ - pass diff --git a/src/GEOM_SWIG/GEOM_shellSolid.py b/src/GEOM_SWIG/GEOM_shellSolid.py deleted file mode 100755 index 0495979c1..000000000 --- a/src/GEOM_SWIG/GEOM_shellSolid.py +++ /dev/null @@ -1,678 +0,0 @@ -#============================================================================== -# Info. -# Bug (from script, bug) : shellSolid_modified.py, PAL6611 -# Modified : 25/11/2004 -# Author : Kovaltchuk Alexey -# Project : PAL/SALOME -#============================================================================== - -# Imports -# ------- - -import salome -import SALOMEDS - -import geompy - -# Interface with geometry -# ----------------------- - -#geom = salome.lcc.FindOrLoadComponent("FactoryServer", "GEOM") -geomgui = salome.ImportComponentGUI("GEOM") - -geom = geompy - -# Interface with study -# -------------------- - -def addToStudy(shape, name): - i = geompy.addToStudy(shape, name) - salome.sg.updateObjBrowser(0) -# geomgui.createAndDisplayGO(i) - return i - -def setName(obj): - obj.SetName(salome.orb.object_to_string(obj)) - - -def MakeVertex(x, y, z): - v = geom.MakeVertex(x, y, z) - setName(v) - return v - -def MakeEdge(v1, v2): - e = geom.MakeEdge(v1, v2) - setName(e) - return e - -def MakeArc(f, p, t): - e = geom.MakeArc(f, p, t) - setName(e) - return e - -def MakeArcCenter(c, f, t): - p = fkl(c, f, t) - e = geom.MakeArc(f, p, t) - setName(e) - return e - -# Face with 4 edges -# ----------------- - -# cf. makeTiledSurfByContour - -def MakeQuadFace(e1, e2, e3, e4): - l = [] - l.append(e1) - l.append(e2) - l.append(e3) - l.append(e4) - w = geom.MakeWire(l) - f = geom.MakeFace(w, 1) - setName(f) - return f - -# cf. makeTiledSurfBetweenTwolines - -def MakeQuadFaceEdge(e1, e2): - return fkl - -# cf. makeTiledSurfByPointsOfContour -# cf. makeMesh - -def MakeQuadFaceVertex(v1, v2, v3, v4): - l = [] - e = MakeEdge(v1, v2) - l.append(e) - e = MakeEdge(v2, v3) - l.append(e) - e = MakeEdge(v3, v4) - l.append(e) - e = MakeEdge(v4, v1) - l.append(e) - w = geom.MakeWire(l) - f = geom.MakeFace(w, 1) - setName(f) - return f - -# Solid with 6 faces -# ------------------ - -# cf. makePavedVolWithContour -# cf. makeVolWithEnvolope - -def MakeHexaSolid(f1, f2, f3, f4, f5, f6): - l = [] - l.append(f1) - l.append(f2) - l.append(f3) - l.append(f4) - l.append(f5) - l.append(f6) - s = geom.MakeShell(l) -# FKL: bad shell - l = [] - l.append(s) - s = geom.MakeSolid(l) -# FKL: MakeSolid crash - setName(s) - return s - -# cf. makeVolBetweenTwoSurfaces - -def MakeHexaSolidFace(f1, f2): - return fkl - -# Face (with 4 edges) and solid (with 6 faces) -# -------------------------------------------- - -# makeTiledSurfByRotationOfLine - -def MakeRevolution(g, pt, ve, angle): - """ - Creates a face by rotation of an edge with an angle around an axis defined by a point and a vector or - creates a solid by rotation of a face with an angle around an axis defined by a point and a vector - """ - axis = geom.MakeAxisStruct(pt.x, pt.y, pt.z, ve.x, ve.y, ve.z) - s = geom.MakeRevolution(g, axis, angle) - setName(s) - return s - -# cf. makeSurfSewingTwolines - -def MakeSewing(ls): - """ - Creates a face by sewing common edges between a list of faces or - Creates a solid by sewing common faces between a list of solids - """ - s = geom.MakeSewing(ls) - setName(s) - return s - -# cf. makeIntersectionBetweenTwoMeshes - -def MakeCommon(s1, s2): - """ - Creates the common face between 2 faces or - Creates the common solid between 2 solids - """ - s = geom.MakeBoolean(s1, s2, 1) - setName(s) - return s - -# cf. makeMerge - -def MakeFuse(s1, s2): - """ - Fuses 2 faces or 2 solids - """ - s = geom.MakeBoolean(s1, s2, 3) - setName(s) - return s - -# Additional - -def MakeCut(s1, s2): - """ - Cuts 2 faces or 2 solids - """ - s = geom.MakeBoolean(s1, s2, 2) - setName(s) - return s - -# Edge, face (with 4 edges) and solid (with 6 faces) -# -------------------------------------------------- - -# cf. makeSurfByTranslation -# cf. makeVolByTranslation - -def MakePrism(s, v): - """ - Creates a edge defined by a vertex and along a vector - Creates a face defined by a edge and along a vector - Creates a solid defined by a face and along a vector - """ - r = geom.MakePrism(s, point(0, 0, 0), v) - setName(r) - return r - -# cf. homothety - -def MakeScaleTransform(s, center, factor): - """ - Creates a homothety of a geometric object - """ - r = geom.MakeScaleTransform(s, center, factor) - setName(r) - return r - -# Vertex, edge, face (with 4 edges) and solid (with 6 faces) -# ---------------------------------------------------------- - -# cf. translate - -def MakeTranslation(s, vx, vy, vz): - """ - Translates a vertex, an edge, a face or a solid - """ - r = geom.MakeTranslation(s, vx, vy, vz) - setName(r) - return r - -# cf. rotation - -def MakeRotation(g, pt, ve, angle): - """ - Creates a rotation of the geometric object with an angle around an axis defined by a point and a vector - """ - axis = geom.MakeAxisStruct(pt.x, pt.y, pt.z, ve.x, ve.y, ve.z) - s = geom.MakeRotation(g, axis, angle) - setName(s) - return s - -# cf. symmetryByPoint - -def MakeMirrorByPoint(s, point): - """ - Creates a symmetric object by point symetry - """ - return fkl - -# cf. symmetryByLine - -def MakeMirrorByLine(s, line): - """ - Creates a symmetric object by line symetry - """ - return fkl - -# cf. symmetryByPlane - -def MakeMirrorByPlane(s, pt, ve): - """ - Creates a symmetric object by plane symetry defined by a point and a normal vector - """ - p = plane(pt, ve) - r = geom.MakeMirrorByplane(s, p) - setName(r) - return r - -# Compound -# -------- - -# Additional - -def BlockMakeCompound(ls): - """ - Creates a compound defined by a list and glue faces - """ - c = MakeCompound(ls) - r = MakeGlueFaces(c, 1.e-5) - setName(r) - return r - -# Boolean operators -# ----------------- - -def mergePointsNearBy(l, v): - """ - Modifies a list of shape by replacing all vertex near a new vextex - """ - return fkl - -# Acces operators -# --------------- - -def getCoords(v): - """ - Gets the coordinates of the vertex - """ - return fkl - -def extractBeginPoint(e): - """ - Gets the first point of an edge - """ - return fkl - -def extractEndPoint(e): - """ - Gets the second point of an edge - """ - return fkl - -# fkl more functionalities - -# Addionnal -# ========= - -# Check geometry -# -------------- - -def CheckQuadFace(f): - """ - Checks if a face has 4 edges - """ - return fkl - -def CheckHexaSolid(s): - """ - Checks if a solid has 6 faces and each faces have 4 edges - """ - return fkl - -# fkl more if other kind of solid like: tetra, penta, etc - -# point for building -# ------------------ - -def point(x, y, z): - p = geom.MakeVertex(x, y, z) - return p - -def plane(pt, dir): - p = geom.MakePlane(pt, d, 100) - return p - -# Solid -# ----- - -def MakeCylinder(center, dir, radius, height): - s = geom.MakeCylinder(center, dir, radius, height) - setName(s) - return s - -def MakeBox(p1, p2): - s = geom.MakeBoxTwoPnt(p1, p2) - setName(s) - return s - -# Compound -# -------- - -ShapeType = {"COMPOUND":0, "COMPSOLID":1, "SOLID":2, "SHELL":3, "FACE":4, "WIRE":5, "EDGE":6, "VERTEX":7, "SHAPE":8} - -def MakePartitionList(solids, tools): - """ - Creates a list of shape by a partition of a list of solids by a list of tools - """ - p = geom.Partition(solids, tools, [], [], ShapeType["SHAPE"]); - l = geom.SubShapeAll(p, ShapeType["SHAPE"]) - return l - -def MakePartition(solids, tools): - """ - Creates a partition of a list of solids by a list of tools - """ - l = MakePartitionList(solids, tools) - c = MakeCompound(l) - setName(c) - return c - -def BlockMakeMultiTranslation1D(shape, dir, step, times): - m = geom.MakeMultiTranslation1D(shape, dir, step, times) - c = MakeGlueFaces(m, 1.e-5) - setName(c) - return c - -def BlockMakeMultiTranslation2D(shape, dir1, step1, times1, dir2, step2, times2): - m = geom.MakeMultiTranslation2D(shape, dir1, step1, times1, dir2, step2, times2) - c = MakeGlueFaces(m, 1.e-5) - setName(c) - return c - -def BlockMakeMultiRotation1D(shape, dir, point, times): - m = geom.MakeMultiRotation1D(shape, dir, point, times) - c = MakeGlueFaces(m, 1.e-5) - setName(c) - return c - -def BlockMakeMultiRotation2D(shape, dir, point, angle, times1, step, times2): - m = geom.MakeMultiRotation2D(shape, dir, point, angle, times1, step, times2) - c = MakeGlueFaces(m, 1.e-5) - setName(c) - return c - -# internal -# -------- - -def MakeCompound(ls): - """ - Creates a compound defined by a list - """ - c = geom.MakeCompound(ls) - return c - -def MakeSewingShape(s, eps): - """ - Creates a shape fully sewed - """ - r = geom.MakeSewingShape(s, eps) - return r - -def MakeGlueFaces(s, eps): - """ - Touched faces are replaced by one - """ - r = geom.MakeGlueFaces(s, eps) - return r - - -# Geometry -# ======== - -# A small cube centered and put on a great cube - -# Points -# ------ - -greatPoint111 = point( 0, 0, 0) -greatPoint211 = point(10, 0, 0) -greatPoint311 = point(20, 0, 0) -greatPoint411 = point(30, 0, 0) - -greatPoint121 = point( 0, 10, 0) -greatPoint221 = point(10, 10, 0) -greatPoint321 = point(20, 10, 0) -greatPoint421 = point(30, 10, 0) - -greatPoint112 = point( 0, 0, 10) -greatPoint212 = point(10, 0, 10) -greatPoint312 = point(20, 0, 10) -greatPoint412 = point(30, 0, 10) - -greatPoint122 = point( 0, 10, 10) -greatPoint222 = point(10, 10, 10) -greatPoint322 = point(20, 10, 10) -greatPoint422 = point(30, 10, 10) - -greatPoint113 = point( 0, 0, 20) -greatPoint213 = point(10, 0, 20) -greatPoint313 = point(20, 0, 20) -greatPoint413 = point(30, 0, 20) - -greatPoint123 = point( 0, 10, 20) -greatPoint223 = point(10, 10, 20) -greatPoint323 = point(20, 10, 20) -greatPoint423 = point(30, 10, 20) - -greatPoint114 = point( 0, 0, 30) -greatPoint214 = point(10, 0, 30) -greatPoint314 = point(20, 0, 30) -greatPoint414 = point(30, 0, 30) - -greatPoint124 = point( 0, 10, 30) -greatPoint224 = point(10, 10, 30) -greatPoint324 = point(20, 10, 30) -greatPoint424 = point(30, 10, 30) - - -smallPoint111 = greatPoint222 -smallPoint211 = greatPoint322 -smallPoint121 = point(10, 20, 10) -smallPoint221 = point(20, 20, 10) - -smallPoint112 = greatPoint223 -smallPoint212 = greatPoint323 -smallPoint122 = point(10, 20, 20) -smallPoint222 = point(20, 20, 20) - -# Edges -# ----- - -smallEdgeX11 = MakeEdge(smallPoint111, smallPoint211) -smallEdgeX21 = MakeEdge(smallPoint121, smallPoint221) -smallEdgeX12 = MakeEdge(smallPoint112, smallPoint212) -smallEdgeX22 = MakeEdge(smallPoint122, smallPoint222) - -smallEdgeY11 = MakeEdge(smallPoint111, smallPoint121) -smallEdgeY21 = MakeEdge(smallPoint211, smallPoint221) -smallEdgeY12 = MakeEdge(smallPoint112, smallPoint122) -smallEdgeY22 = MakeEdge(smallPoint212, smallPoint222) - -smallEdgeZ11 = MakeEdge(smallPoint111, smallPoint112) -smallEdgeZ21 = MakeEdge(smallPoint211, smallPoint212) -smallEdgeZ12 = MakeEdge(smallPoint121, smallPoint122) -smallEdgeZ22 = MakeEdge(smallPoint221, smallPoint222) - - -greatEdgeX111 = MakeEdge(greatPoint111, greatPoint211) -greatEdgeX211 = MakeEdge(greatPoint211, greatPoint311) -greatEdgeX311 = MakeEdge(greatPoint311, greatPoint411) -greatEdgeX121 = MakeEdge(greatPoint121, greatPoint221) -greatEdgeX221 = MakeEdge(greatPoint221, greatPoint321) -greatEdgeX321 = MakeEdge(greatPoint321, greatPoint421) - -greatEdgeX112 = MakeEdge(greatPoint112, greatPoint212) -greatEdgeX212 = MakeEdge(greatPoint212, greatPoint312) -greatEdgeX312 = MakeEdge(greatPoint312, greatPoint412) -greatEdgeX122 = MakeEdge(greatPoint122, greatPoint222) -greatEdgeX222 = smallEdgeX11 -greatEdgeX322 = MakeEdge(greatPoint322, greatPoint422) - -greatEdgeX113 = MakeEdge(greatPoint113, greatPoint213) -greatEdgeX213 = MakeEdge(greatPoint213, greatPoint313) -greatEdgeX313 = MakeEdge(greatPoint313, greatPoint413) -greatEdgeX123 = MakeEdge(greatPoint123, greatPoint223) -greatEdgeX223 = smallEdgeX12 -greatEdgeX323 = MakeEdge(greatPoint323, greatPoint423) - -greatEdgeX114 = MakeEdge(greatPoint114, greatPoint214) -greatEdgeX214 = MakeEdge(greatPoint214, greatPoint314) -greatEdgeX314 = MakeEdge(greatPoint314, greatPoint414) -greatEdgeX124 = MakeEdge(greatPoint124, greatPoint224) -greatEdgeX224 = MakeEdge(greatPoint224, greatPoint324) -greatEdgeX324 = MakeEdge(greatPoint324, greatPoint424) - -greatEdgeY11 = MakeEdge(greatPoint111, greatPoint121) -greatEdgeY21 = MakeEdge(greatPoint211, greatPoint221) -greatEdgeY31 = MakeEdge(greatPoint311, greatPoint321) -greatEdgeY41 = MakeEdge(greatPoint411, greatPoint421) - -greatEdgeY12 = MakeEdge(greatPoint112, greatPoint122) -greatEdgeY22 = MakeEdge(greatPoint212, greatPoint222) -greatEdgeY32 = MakeEdge(greatPoint312, greatPoint322) -greatEdgeY42 = MakeEdge(greatPoint412, greatPoint422) - -greatEdgeY13 = MakeEdge(greatPoint113, greatPoint123) -greatEdgeY23 = MakeEdge(greatPoint213, greatPoint223) -greatEdgeY33 = MakeEdge(greatPoint313, greatPoint323) -greatEdgeY43 = MakeEdge(greatPoint413, greatPoint423) - -greatEdgeY14 = MakeEdge(greatPoint114, greatPoint124) -greatEdgeY24 = MakeEdge(greatPoint214, greatPoint224) -greatEdgeY34 = MakeEdge(greatPoint314, greatPoint324) -greatEdgeY44 = MakeEdge(greatPoint414, greatPoint424) - -greatEdgeZ111 = MakeEdge(greatPoint111, greatPoint112) -greatEdgeZ211 = MakeEdge(greatPoint211, greatPoint212) -greatEdgeZ311 = MakeEdge(greatPoint311, greatPoint312) -greatEdgeZ411 = MakeEdge(greatPoint411, greatPoint412) - -greatEdgeZ121 = MakeEdge(greatPoint121, greatPoint122) -greatEdgeZ221 = MakeEdge(greatPoint221, greatPoint222) -greatEdgeZ321 = MakeEdge(greatPoint321, greatPoint322) -greatEdgeZ421 = MakeEdge(greatPoint421, greatPoint422) - -greatEdgeZ112 = MakeEdge(greatPoint112, greatPoint113) -greatEdgeZ212 = MakeEdge(greatPoint212, greatPoint213) -greatEdgeZ312 = MakeEdge(greatPoint312, greatPoint313) -greatEdgeZ412 = MakeEdge(greatPoint412, greatPoint413) - -greatEdgeZ122 = MakeEdge(greatPoint122, greatPoint123) -greatEdgeZ222 = smallEdgeZ11 -greatEdgeZ322 = smallEdgeZ21 -greatEdgeZ422 = MakeEdge(greatPoint422, greatPoint423) - -greatEdgeZ113 = MakeEdge(greatPoint113, greatPoint114) -greatEdgeZ213 = MakeEdge(greatPoint213, greatPoint214) -greatEdgeZ313 = MakeEdge(greatPoint313, greatPoint314) -greatEdgeZ413 = MakeEdge(greatPoint413, greatPoint414) - -greatEdgeZ123 = MakeEdge(greatPoint123, greatPoint124) -greatEdgeZ223 = MakeEdge(greatPoint223, greatPoint224) -greatEdgeZ323 = MakeEdge(greatPoint323, greatPoint324) -greatEdgeZ423 = MakeEdge(greatPoint423, greatPoint424) - -# Faces -# ----- - -smallFaceX1 = MakeQuadFace(smallEdgeY11, smallEdgeZ11, smallEdgeY12, smallEdgeZ12) -smallFaceX2 = MakeQuadFace(smallEdgeY21, smallEdgeZ21, smallEdgeY22, smallEdgeZ22) -smallFaceY1 = MakeQuadFace(smallEdgeX11, smallEdgeZ11, smallEdgeX12, smallEdgeZ21) -smallFaceY2 = MakeQuadFace(smallEdgeX21, smallEdgeZ12, smallEdgeX22, smallEdgeZ22) -smallFaceZ1 = MakeQuadFace(smallEdgeX11, smallEdgeY11, smallEdgeX21, smallEdgeY21) -smallFaceZ2 = MakeQuadFace(smallEdgeX12, smallEdgeY12, smallEdgeX22, smallEdgeY22) - - -greatFaceX11 = MakeQuadFace(greatEdgeY11, greatEdgeZ111, greatEdgeY12, greatEdgeZ121) -greatFaceX21 = MakeQuadFace(greatEdgeY21, greatEdgeZ211, greatEdgeY22, greatEdgeZ221) -greatFaceX31 = MakeQuadFace(greatEdgeY31, greatEdgeZ311, greatEdgeY32, greatEdgeZ321) -greatFaceX41 = MakeQuadFace(greatEdgeY41, greatEdgeZ411, greatEdgeY42, greatEdgeZ421) - -greatFaceX12 = MakeQuadFace(greatEdgeY12, greatEdgeZ112, greatEdgeY13, greatEdgeZ122) -greatFaceX22 = MakeQuadFace(greatEdgeY22, greatEdgeZ212, greatEdgeY23, greatEdgeZ222) -greatFaceX32 = MakeQuadFace(greatEdgeY32, greatEdgeZ312, greatEdgeY33, greatEdgeZ322) -greatFaceX42 = MakeQuadFace(greatEdgeY42, greatEdgeZ412, greatEdgeY43, greatEdgeZ422) - -greatFaceX13 = MakeQuadFace(greatEdgeY13, greatEdgeZ113, greatEdgeY14, greatEdgeZ123) -greatFaceX23 = MakeQuadFace(greatEdgeY23, greatEdgeZ213, greatEdgeY24, greatEdgeZ223) -greatFaceX33 = MakeQuadFace(greatEdgeY33, greatEdgeZ313, greatEdgeY34, greatEdgeZ323) -greatFaceX43 = MakeQuadFace(greatEdgeY43, greatEdgeZ413, greatEdgeY44, greatEdgeZ423) - -greatFaceY111 = MakeQuadFace(greatEdgeX111, greatEdgeZ111, greatEdgeX112, greatEdgeZ211) -greatFaceY211 = MakeQuadFace(greatEdgeX211, greatEdgeZ211, greatEdgeX212, greatEdgeZ311) -greatFaceY311 = MakeQuadFace(greatEdgeX311, greatEdgeZ311, greatEdgeX312, greatEdgeZ411) -greatFaceY121 = MakeQuadFace(greatEdgeX121, greatEdgeZ121, greatEdgeX122, greatEdgeZ221) -greatFaceY221 = MakeQuadFace(greatEdgeX221, greatEdgeZ221, greatEdgeX222, greatEdgeZ321) -greatFaceY321 = MakeQuadFace(greatEdgeX321, greatEdgeZ321, greatEdgeX322, greatEdgeZ421) - -greatFaceY112 = MakeQuadFace(greatEdgeX112, greatEdgeZ112, greatEdgeX113, greatEdgeZ212) -greatFaceY212 = MakeQuadFace(greatEdgeX212, greatEdgeZ212, greatEdgeX213, greatEdgeZ312) -greatFaceY312 = MakeQuadFace(greatEdgeX312, greatEdgeZ312, greatEdgeX313, greatEdgeZ412) -greatFaceY122 = MakeQuadFace(greatEdgeX122, greatEdgeZ122, greatEdgeX123, greatEdgeZ222) -greatFaceY222 = smallFaceY1 -greatFaceY322 = MakeQuadFace(greatEdgeX322, greatEdgeZ322, greatEdgeX323, greatEdgeZ422) - -greatFaceY113 = MakeQuadFace(greatEdgeX113, greatEdgeZ113, greatEdgeX114, greatEdgeZ213) -greatFaceY213 = MakeQuadFace(greatEdgeX213, greatEdgeZ213, greatEdgeX214, greatEdgeZ313) -greatFaceY313 = MakeQuadFace(greatEdgeX313, greatEdgeZ313, greatEdgeX314, greatEdgeZ413) -greatFaceY123 = MakeQuadFace(greatEdgeX123, greatEdgeZ123, greatEdgeX124, greatEdgeZ223) -greatFaceY223 = MakeQuadFace(greatEdgeX223, greatEdgeZ223, greatEdgeX224, greatEdgeZ323) -greatFaceY323 = MakeQuadFace(greatEdgeX323, greatEdgeZ323, greatEdgeX324, greatEdgeZ423) - -greatFaceZ11 = MakeQuadFace(greatEdgeX111, greatEdgeY11, greatEdgeX121, greatEdgeY21) -greatFaceZ21 = MakeQuadFace(greatEdgeX211, greatEdgeY21, greatEdgeX221, greatEdgeY31) -greatFaceZ31 = MakeQuadFace(greatEdgeX311, greatEdgeY31, greatEdgeX321, greatEdgeY41) - -greatFaceZ12 = MakeQuadFace(greatEdgeX112, greatEdgeY12, greatEdgeX122, greatEdgeY22) -greatFaceZ22 = MakeQuadFace(greatEdgeX212, greatEdgeY22, greatEdgeX222, greatEdgeY32) -greatFaceZ32 = MakeQuadFace(greatEdgeX312, greatEdgeY32, greatEdgeX322, greatEdgeY42) - -greatFaceZ13 = MakeQuadFace(greatEdgeX113, greatEdgeY13, greatEdgeX123, greatEdgeY23) -greatFaceZ23 = MakeQuadFace(greatEdgeX213, greatEdgeY23, greatEdgeX223, greatEdgeY33) -greatFaceZ33 = MakeQuadFace(greatEdgeX313, greatEdgeY33, greatEdgeX323, greatEdgeY43) - -greatFaceZ14 = MakeQuadFace(greatEdgeX114, greatEdgeY14, greatEdgeX124, greatEdgeY24) -greatFaceZ24 = MakeQuadFace(greatEdgeX214, greatEdgeY24, greatEdgeX224, greatEdgeY34) -greatFaceZ34 = MakeQuadFace(greatEdgeX314, greatEdgeY34, greatEdgeX324, greatEdgeY44) - -# Solids -# ------ - -smallBlock = MakeHexaSolid(smallFaceX1, smallFaceX2, smallFaceY1, smallFaceY2, smallFaceZ1, smallFaceZ2) - -greatBlock11 = MakeHexaSolid(greatFaceX11, greatFaceX21, greatFaceY111, greatFaceY121, greatFaceZ11, greatFaceZ12) -greatBlock21 = MakeHexaSolid(greatFaceX21, greatFaceX31, greatFaceY211, greatFaceY221, greatFaceZ21, greatFaceZ22) -greatBlock31 = MakeHexaSolid(greatFaceX31, greatFaceX41, greatFaceY311, greatFaceY321, greatFaceZ31, greatFaceZ32) - -greatBlock12 = MakeHexaSolid(greatFaceX12, greatFaceX22, greatFaceY112, greatFaceY122, greatFaceZ12, greatFaceZ13) -greatBlock22 = MakeHexaSolid(greatFaceX22, greatFaceX32, greatFaceY212, greatFaceY222, greatFaceZ22, greatFaceZ23) -greatBlock32 = MakeHexaSolid(greatFaceX32, greatFaceX42, greatFaceY312, greatFaceY322, greatFaceZ32, greatFaceZ33) - -greatBlock13 = MakeHexaSolid(greatFaceX13, greatFaceX23, greatFaceY113, greatFaceY123, greatFaceZ13, greatFaceZ14) -greatBlock23 = MakeHexaSolid(greatFaceX23, greatFaceX33, greatFaceY213, greatFaceY223, greatFaceZ23, greatFaceZ24) -greatBlock33 = MakeHexaSolid(greatFaceX33, greatFaceX43, greatFaceY313, greatFaceY323, greatFaceZ33, greatFaceZ34) - -# Compound -# -------- - -l = [] -l.append(smallBlock) -l.append(greatBlock11) -l.append(greatBlock21) -l.append(greatBlock31) -l.append(greatBlock12) -l.append(greatBlock22) -l.append(greatBlock32) -l.append(greatBlock13) -l.append(greatBlock23) -l.append(greatBlock33) - -piece = MakeCompound(l) - -# Add in study -# ------------ - -idpiece = addToStudy(piece, "Cubes2pyGibi") -#geom.InsertOp.Export(piece,"piece.brep", "BREP") diff --git a/src/GEOM_SWIG/GEOM_tube_geom.py b/src/GEOM_SWIG/GEOM_tube_geom.py deleted file mode 100755 index b91935223..000000000 --- a/src/GEOM_SWIG/GEOM_tube_geom.py +++ /dev/null @@ -1,151 +0,0 @@ -#============================================================================== -# Info. -# Bug (from script, bug) : tube_geom_corrected.py, PAL5243 -# Modified : 25/11/2004 -# Author : Kovaltchuk Alexey -# Project : PAL/SALOME -#============================================================================== -# -# Geometrie du cas test -# -import salome -from geompy import * - -# -# base de l'assemblage -# -L_base = 300. -l_base = 150. -h_base = 75. -e_base = 6. - -base_bot = MakeBox(0.,0.,0.,L_base,l_base,e_base) -base_top = MakeTranslation(base_bot,0.,0.,h_base-e_base) -base_front = MakeBox(0,0,0,L_base,e_base,h_base) -base_rear = MakeTranslation(base_front,0.,l_base,0.) - -tmp = MakeBoolean(base_top,base_rear,3) -tmp = MakeBoolean(tmp,base_bot,3) -base = MakeBoolean(tmp,base_front,3) - -addToStudy(base,"base") -# -# traverse -# -L_trav = 60. -h_trav = 300. -e_trav = 7. -marge = 15. - -flange_left = MakeBox(0.,0.,0,e_trav,L_trav,h_trav) -flange_right = MakeTranslation(flange_left,L_trav-e_trav,0.,0.) -flange_front = MakeBox(0.,0.,0,L_trav,e_trav,h_trav) -flange_rear = MakeTranslation(flange_front,0.,L_trav-e_trav,0.) - -tmp = MakeBoolean(flange_left,flange_rear,3) -tmp = MakeBoolean(tmp,flange_right,3) -flange = MakeBoolean(tmp,flange_front,3) -# -# left chamfer -# -import math -length = e_trav/math.sin(math.pi/4.) -p1 = MakeVertex(0,0,0) -p2 = MakeVertex(0,1,0) -yaxis = MakeVector(p1, p2) -cut_left = MakeBox(0.,-marge,0.,-length,L_trav+marge,length) -cut_left = MakeRotation(cut_left,yaxis,-math.pi/4.) -cut_left = MakeTranslation(cut_left,e_trav,0.,0.) -# -# right chamfer -# -symPlaneYZ = MakePlane( - MakeVertex(L_trav/2.,0.,0.), - MakeVector(p1,MakeVertex(1.,0.,0.)), 10000. ) -cut_right = MakeMirrorByPlane(cut_left,symPlaneYZ) -# -# front chamfer -# -xaxis = MakeVector(p1,MakeVertex(1.,0.,0.)) -cut_front = MakeBox(-marge,0.,0.,L_trav+marge,length,length) -cut_front = MakeRotation(cut_front,xaxis,3.*math.pi/4.) -cut_front = MakeTranslation(cut_front,0.,e_trav,0.) -# -# rear chamfer -# -symPlaneXZ = MakePlane( - MakeVertex(0.,L_trav/2.,0.), - MakeVector(p1,MakeVertex(0.,1.,0.)), 10000. ) -cut_rear = MakeMirrorByPlane(cut_front,symPlaneXZ) -# -# chamfer -# -trav = MakeBoolean(flange,cut_left,2) -trav = MakeBoolean(trav,cut_right,2) -trav = MakeBoolean(trav,cut_front,2) -trav = MakeBoolean(trav,cut_rear,2) -trav = MakeTranslation(trav, - L_base/2.-L_trav/2., - l_base/2.-L_trav/2., - h_base) -addToStudy(trav,"trav") -# -# Welding -# -ground = MakeBox(-1000.,-1000.,0.,1000.,1000.,-1000.) -weld_left = MakeBoolean(cut_left,ground,2) -weld_right = MakeBoolean(cut_right,ground,2) -weld_front = MakeBoolean(cut_front,ground,2) -weld_rear = MakeBoolean(cut_rear,ground,2) -# -# Assembly -# -coarse_weld = MakeBoolean(weld_left,weld_rear,3) -coarse_weld = MakeBoolean(coarse_weld,weld_right,3) -coarse_weld = MakeBoolean(coarse_weld,weld_front,3) -# -# Cleaners -# -left_cleaner = MakeBox(0.,-10*marge,0.,-10.*marge,10.*marge,10.*marge) -left_cleaner = MakeRotation(left_cleaner,yaxis,math.pi/4.) -left_cleaner = MakeTranslation(left_cleaner,-e_trav-2.*marge,0.,-2.*marge) - -right_cleaner = MakeMirrorByPlane(left_cleaner,symPlaneYZ) - -front_cleaner = MakeBox(-10*marge,0.,0.,10.*marge,10.*marge,10.*marge) -front_cleaner = MakeRotation(front_cleaner,xaxis,3.*math.pi/4.) -front_cleaner = MakeTranslation(front_cleaner,0.,2.*marge-e_trav,2.*marge) - -rear_cleaner = MakeMirrorByPlane(front_cleaner,symPlaneXZ) -# -# Welding -# -weld = MakeBoolean(coarse_weld,left_cleaner,2) -weld = MakeBoolean(weld,rear_cleaner,2) -weld = MakeBoolean(weld,right_cleaner,2) -weld = MakeBoolean(weld,front_cleaner,2) -weld = MakeTranslation(weld, - L_base/2.-L_trav/2., - l_base/2.-L_trav/2., - h_base) -weldId = addToStudy(weld,"weld") -# -# Assembly -# -assemblage = Partition([base ,weld ,trav]) -assemblageId = addToStudy(assemblage, "assemblage") -salome.sg.updateObjBrowser(1) -# -# Display -# -## gg.createAndDisplayGO(assemblageId) -## gg.createAndDisplayGO(baseId) -## gg.setTransparency(baseId,0.5) -## gg.setDisplayMode(baseId,1) -## gg.setColor(baseId,255,0,0) -## gg.createAndDisplayGO(travId) -## gg.setTransparency(travId,0.5) -## gg.setDisplayMode(travId,1) -## gg.setColor(travId,0,255,0) - - diff --git a/src/GEOM_SWIG/GEOM_tube_geom_gg2.py b/src/GEOM_SWIG/GEOM_tube_geom_gg2.py deleted file mode 100755 index 29f77815f..000000000 --- a/src/GEOM_SWIG/GEOM_tube_geom_gg2.py +++ /dev/null @@ -1,157 +0,0 @@ -#============================================================================== -# Info. -# Bug (from script, bug) : tube_geom_gg2_corrected.py, PAL5243 -# Modified : 25/11/2004 -# Author : Kovaltchuk Alexey -# Project : PAL/SALOME -#============================================================================== -# -# Geometrie du cas test -# - -from geompy import * -import salome -# -# base de l'assemblage -# -L_base = 300. -l_base = 150. -h_base = 75. -e_base = 6. - -base_bot = MakeBox(0.,0.,0.,L_base,l_base,e_base) -base_top = MakeTranslation(base_bot,0.,0.,h_base-e_base) -base_front = MakeBox(0,0,0,L_base,e_base,h_base) -base_rear = MakeTranslation(base_front,0.,l_base,0.) - -tmp = MakeBoolean(base_top,base_rear,3) -tmp = MakeBoolean(tmp,base_bot,3) -base = MakeBoolean(tmp,base_front,3) - -baseId = addToStudy(base,"base") -# -# traverse -# -L_trav = 60. -h_trav = 300. -e_trav = 7. -marge = 15. - -flange_left = MakeBox(0.,0.,0,e_trav,L_trav,h_trav) -flange_right = MakeTranslation(flange_left,L_trav-e_trav,0.,0.) -flange_front = MakeBox(0.,0.,0,L_trav,e_trav,h_trav) -flange_rear = MakeTranslation(flange_front,0.,L_trav-e_trav,0.) - -tmp = MakeBoolean(flange_left,flange_rear,3) -tmp = MakeBoolean(tmp,flange_right,3) -flange = MakeBoolean(tmp,flange_front,3) -# -# left chamfer -# -import math -length = e_trav/math.sin(math.pi/4.) -yaxis = MakeVectorDXDYDZ(0.,1.,0.) -cut_left = MakeBox(0.,-marge,0.,-length,L_trav+marge,length) -cut_left = MakeRotation(cut_left,yaxis,-math.pi/4.) -cut_left = MakeTranslation(cut_left,e_trav,0.,0.) -# -# right chamfer -# -symPlaneYZ = MakePlane( - MakeVertex(L_trav/2.,0.,0.), - MakeVectorDXDYDZ(1.,0.,0.), 10000. ) -cut_right = MakeMirrorByPlane(cut_left,symPlaneYZ) -# -# front chamfer -# -xaxis = MakeVectorDXDYDZ(1.,0.,0.) -cut_front = MakeBox(-marge,0.,0.,L_trav+marge,length,length) -cut_front = MakeRotation(cut_front,xaxis,3.*math.pi/4.) -cut_front = MakeTranslation(cut_front,0.,e_trav,0.) -# -# rear chamfer -# -symPlaneXZ = MakePlane( - MakeVertex(0.,L_trav/2.,0.), - MakeVectorDXDYDZ(0.,1.,0.), 10000. ) -cut_rear = MakeMirrorByPlane(cut_front,symPlaneXZ) -# -# chamfer -# -trav = MakeBoolean(flange,cut_left,2) -trav = MakeBoolean(trav,cut_right,2) -trav = MakeBoolean(trav,cut_front,2) -trav = MakeBoolean(trav,cut_rear,2) -trav = MakeTranslation(trav, - L_base/2.-L_trav/2., - l_base/2.-L_trav/2., - h_base) -travId = addToStudy(trav,"trav") -# -# Welding -# -ground = MakeBox(-1000.,-1000.,0.,1000.,1000.,-1000.) -weld_left = MakeBoolean(cut_left,ground,2) -weld_right = MakeBoolean(cut_right,ground,2) -weld_front = MakeBoolean(cut_front,ground,2) -weld_rear = MakeBoolean(cut_rear,ground,2) -# -# Assembly -# -coarse_weld = MakeBoolean(weld_left,weld_rear,3) -coarse_weld = MakeBoolean(coarse_weld,weld_right,3) -coarse_weld = MakeBoolean(coarse_weld,weld_front,3) -# -# Cleaners -# -left_cleaner = MakeBox(0.,-10*marge,0.,-10.*marge,10.*marge,10.*marge) -left_cleaner = MakeRotation(left_cleaner,yaxis,math.pi/4.) -left_cleaner = MakeTranslation(left_cleaner,-e_trav-2.*marge,0.,-2.*marge) - -right_cleaner = MakeMirrorByPlane(left_cleaner,symPlaneYZ) - -front_cleaner = MakeBox(-10*marge,0.,0.,10.*marge,10.*marge,10.*marge) -front_cleaner = MakeRotation(front_cleaner,xaxis,3.*math.pi/4.) -front_cleaner = MakeTranslation(front_cleaner,0.,2.*marge-e_trav,2.*marge) - -rear_cleaner = MakeMirrorByPlane(front_cleaner,symPlaneXZ) -# -# Welding -# -weld = MakeBoolean(coarse_weld,left_cleaner,2) -weld = MakeBoolean(weld,rear_cleaner,2) -weld = MakeBoolean(weld,right_cleaner,2) -weld = MakeBoolean(weld,front_cleaner,2) -weld = MakeTranslation(weld, - L_base/2.-L_trav/2., - l_base/2.-L_trav/2., - h_base) -weldId = addToStudy(weld,"weld") -# -# Assembly -# -#assemblage = MakePartition([base.,weld.GetName()]) -assemblage = MakePartition([base,weld]) -addToStudy(assemblage, "base+weld") -#print assemblage.GetName() -#print trav.GetName() -#assemblage = MakePartition([assemblage.GetName(),trav.GetName()]) -assemblage = MakePartition([assemblage,trav]) -assemblageId = addToStudy(assemblage, "assemblage") - -# -# Display -# -gg.createAndDisplayGO(baseId) -gg.setTransparency(baseId,0.5) -gg.setDisplayMode(baseId,1) -gg.setColor(baseId,255,0,0) -gg.createAndDisplayGO(travId) -gg.setTransparency(travId,0.5) -gg.setDisplayMode(travId,1) -gg.setColor(travId,255,0,0) -gg.createAndDisplayGO(weldId) -gg.setTransparency(weldId,0.5) -gg.setDisplayMode(weldId,1) -gg.setColor(weldId,0,0,255) - diff --git a/src/GEOM_SWIG/GEOM_usinggeom.py b/src/GEOM_SWIG/GEOM_usinggeom.py deleted file mode 100644 index 08fdc0864..000000000 --- a/src/GEOM_SWIG/GEOM_usinggeom.py +++ /dev/null @@ -1,40 +0,0 @@ -# GEOM GEOM_SWIG : binding of C++ omplementaion with Python -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : GEOM_usinggeom.py -# Author : Damien COQUERET, Open CASCADE -# Module : GEOM -# $Header$ - -import geompy -import math - -import GEOM_TestAll -import GEOM_TestOthers -import GEOM_TestHealing -import GEOM_TestMeasures - -GEOM_TestMeasures.TestMeasureOperations(geompy, math) -GEOM_TestHealing.TestHealingOperations(geompy, math) -GEOM_TestOthers.TestOtherOperations(geompy, math) -GEOM_TestAll.TestAll(geompy, math) diff --git a/src/GEOM_SWIG/Makefile.in b/src/GEOM_SWIG/Makefile.in deleted file mode 100644 index 8f3d5c12a..000000000 --- a/src/GEOM_SWIG/Makefile.in +++ /dev/null @@ -1,91 +0,0 @@ -# GEOM GEOM_SWIG : binding of C++ omplementaion with Python -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Author : Nicolas REJNERI, Paul RASCLE -# Module : GEOM -# $Header$ - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -# Libraries targets - -LIB = libGEOM_Swigcmodule.la -LIB_SRC = - -SWIG_DEF = libGEOM_Swig.i -EXPORT_PYSCRIPTS = \ - libGEOM_Swig.py \ - geompy.py \ - batchmode_geompy.py \ - GEOM_Spanner.py \ - GEOM_blocks.py \ - GEOM_example.py \ - GEOM_example2.py \ - GEOM_example3.py \ - GEOM_example4.py \ - GEOM_example5.py \ - GEOM_moteur.py \ - GEOM_TestAll.py \ - GEOM_TestOthers.py \ - GEOM_TestHealing.py \ - GEOM_TestMeasures.py \ - GEOM_usinggeom.py \ - GEOM_Partition1.py \ - GEOM_Partition2.py \ - GEOM_Partition3.py \ - GEOM_Partition4.py \ - GEOM_Partition5.py \ - GEOM_cyl2complementary.py \ - GEOM_shellSolid.py \ - GEOM_tube_geom.py \ - GEOM_tube_geom_gg2.py \ - GEOM_Nut.py \ - GEOM_Sketcher.py \ - PAL_MESH_019_020_geometry.py \ - PAL_MESH_028_geometry.py \ - PAL_MESH_030_geometry.py \ - PAL_MESH_033_geometry.py \ - PAL_MESH_035_geometry.py - -LIB_CLIENT_IDL = SALOMEDS.idl \ - SALOMEDS_Attributes.idl \ - SALOME_Exception.idl \ - GEOM_Gen.idl \ - SALOME_Component.idl \ - SALOME_GenericObj.idl - -EXPORT_SHAREDPYSCRIPTS=\ - GEOM_shared_modules.py - -CPPFLAGS+=$(QT_INCLUDES) $(PYTHON_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) -DHAVE_CONFIG_H -LIBS+= $(PYTHON_LIBS) -LDFLAGS+= -lGEOM - -@CONCLUDE@ diff --git a/src/GEOM_SWIG/PAL_MESH_019_020_geometry.py b/src/GEOM_SWIG/PAL_MESH_019_020_geometry.py deleted file mode 100755 index 68d54f14f..000000000 --- a/src/GEOM_SWIG/PAL_MESH_019_020_geometry.py +++ /dev/null @@ -1,34 +0,0 @@ -##################################################################################### -#Created :17/02/2005 -#Auhtor :KOVALTCHUK Alexey -#GUI test scenario :PAL-MESH-019 (geometry part), PAL-MESH-020 (geometry part) -##################################################################################### - -import geompy -import salome - -#Points creation (2.2) -Vertex_1 = geompy.MakeVertex(0, 0, 0) -geompy.addToStudy(Vertex_1, "Vertex_1") - -Vertex_2 = geompy.MakeVertex(20, 0, 0) -geompy.addToStudy(Vertex_2, "Vertex_2") - -Vertex_3 = geompy.MakeVertex(10, 10, 0) -geompy.addToStudy(Vertex_3, "Vertex_3") - -Vertex_4 = geompy.MakeVertex(0, 100, 0) -geompy.addToStudy(Vertex_4, "Vertex_4") - -Vertex_5 = geompy.MakeVertex(0, 80, 20) -geompy.addToStudy(Vertex_5, "Vertex_5") - -#Curve creation (2.21) -Curve_1 = geompy.MakeInterpol([Vertex_1, Vertex_3, Vertex_2]) -geompy.addToStudy(Curve_1, "Curve_1") - -#Line creation (2.29) -Line_1 = geompy.MakeLineTwoPnt(Vertex_4, Vertex_5) -geompy.addToStudy(Line_1, "Line_1") - -salome.sg.updateObjBrowser(1) diff --git a/src/GEOM_SWIG/PAL_MESH_028_geometry.py b/src/GEOM_SWIG/PAL_MESH_028_geometry.py deleted file mode 100755 index cd4aa6cf4..000000000 --- a/src/GEOM_SWIG/PAL_MESH_028_geometry.py +++ /dev/null @@ -1,64 +0,0 @@ -##################################################################### -#Created :17/02/2005 -#Auhtor :KOVALTCHUK Alexey -#GUI test scenario :PAL-MESH-028 (geometry part) -##################################################################### - -import geompy -import salome -import os - -#Initialization -salome.salome_init(1) - -#Points construction (2.1) -Vertices = [geompy.MakeVertex(0, 0, 0), geompy.MakeVertex(200, 0, 0), geompy.MakeVertex(200, 200, 0), geompy.MakeVertex(0, 200, 0), geompy.MakeVertex(50, 50, 200), geompy.MakeVertex(150, 50, 200), geompy.MakeVertex(150, 150, 200), geompy.MakeVertex(50, 150, 200)] -for i in range(0, len(Vertices)): - name = "Vertex_" + str(i+1) - geompy.addToStudy(Vertices[i], name) - -#Edges construction (3.1) -Edges = [geompy.MakeEdge(Vertices[0], Vertices[1]), geompy.MakeEdge(Vertices[1], Vertices[5]), geompy.MakeEdge(Vertices[5], Vertices[4]), geompy.MakeEdge(Vertices[4], Vertices[0]), geompy.MakeEdge(Vertices[1], Vertices[2]), geompy.MakeEdge(Vertices[2], Vertices[6]), geompy.MakeEdge(Vertices[6], Vertices[5]), geompy.MakeEdge(Vertices[2], Vertices[3]), geompy.MakeEdge(Vertices[3], Vertices[7]), geompy.MakeEdge(Vertices[7], Vertices[6]), geompy.MakeEdge(Vertices[3], Vertices[0]), geompy.MakeEdge(Vertices[4], Vertices[7])] -for i in range(0, len(Edges)): - name = "Edge_" + str(i+1) - geompy.addToStudy(Edges[i], name) - -#Wires construction (4.1) -Wires = [geompy.MakeWire([Edges[0], Edges[1], Edges[2], Edges[3]]), geompy.MakeWire([Edges[1], Edges[4], Edges[5], Edges[6]]), geompy.MakeWire([Edges[5], Edges[7], Edges[8], Edges[9]]), geompy.MakeWire([Edges[3], Edges[10], Edges[8], Edges[11]]), geompy.MakeWire([Edges[2], Edges[6], Edges[9], Edges[11]]), geompy.MakeWire([Edges[0], Edges[4], Edges[7], Edges[10]])] -for i in range(0, len(Wires)): - name = "Wire_" + str(i+1) - geompy.addToStudy(Wires[i], name) - -#Faces construction (5.1) -Faces = [geompy.MakeFace(Wires[0], 1), geompy.MakeFace(Wires[1], 1), geompy.MakeFace(Wires[2], 1), geompy.MakeFace(Wires[3], 1), geompy.MakeFace(Wires[4], 1), geompy.MakeFace(Wires[5], 1)] -for i in range(0, len(Faces)): - name = "Face_" + str(i+1) - geompy.addToStudy(Faces[i], name) - -#Shell construction (6.1) -Shell_1 = geompy.MakeShell(Faces) -geompy.addToStudy(Shell_1, "Shell_1") -Shells = [Shell_1] - -#Solid construction (7.1) -Solid_1 = geompy.MakeSolid(Shells) -geompy.addToStudy(Solid_1, "Solid_1") - -#Prism construction (8.1) -Prism_1 = geompy.MakePrismVecH(Faces[4], Edges[1], 100) -geompy.addToStudy(Prism_1, "Prism_1") - -#Save Study (9.1) -theHomePath = os.getenv("HOME") -theFilenameToSave = theHomePath + "/Pyramid.hdf" -if os.access(theFilenameToSave, os.F_OK): - if os.access(theFilenameToSave, os.W_OK): - os.remove(theFilenameToSave) - salome.myStudyManager.SaveAs(theFilenameToSave, salome.myStudy, 0) - else: - print "You have no enough permissions to overwrite HDF file: ",theFilenameToSave -else: - salome.myStudyManager.SaveAs(theFilenameToSave, salome.myStudy, 0) - - -salome.sg.updateObjBrowser(1) diff --git a/src/GEOM_SWIG/PAL_MESH_030_geometry.py b/src/GEOM_SWIG/PAL_MESH_030_geometry.py deleted file mode 100755 index 374cbf922..000000000 --- a/src/GEOM_SWIG/PAL_MESH_030_geometry.py +++ /dev/null @@ -1,57 +0,0 @@ -#============================================================================== -# Created : 17/02/2005 -# Author : Alexander KOVALEV -# GUI test scenario : PAL-MESH-030_geometry -#============================================================================== - -import salome -import geompy - -# Stage 2: "Creation of geometry" - -# (2.1) Creating a box -Box_1 = geompy.MakeBoxDXDYDZ(200, 400, 300) -# (2.8) Exploding Box_1 to vertices and faces -Box_1_vertices = geompy.SubShapeAll(Box_1, geompy.ShapeType["VERTEX"]) -Box_1_faces = geompy.SubShapeAll(Box_1, geompy.ShapeType["FACE"]) -# (2.17) Creating a new points -Vertex_9 = geompy.MakeVertex(200, 200, 50) -Vertex_10 = geompy.MakeVertex(150, 300, 80) -# (2.26) Translation of the faces -Face_translated = [] -Face_translated.append(geompy.MakeTranslationTwoPoints(Box_1_faces[2], Box_1_vertices[5], Vertex_9)) -Face_translated.append(geompy.MakeTranslationTwoPoints(Box_1_faces[5], Vertex_9, Vertex_10)) -Face_translated.append(geompy.MakeTranslationTwoPoints(Box_1_faces[2], Vertex_10, Vertex_9)) -Face_translated.append(geompy.MakeTranslationTwoPoints(Box_1_faces[3], Box_1_vertices[5], Vertex_9)) -Face_translated.append(geompy.MakeTranslationTwoPoints(Face_translated[1], Vertex_9, Vertex_10)) -# (2.49) Building a Compound_1 -ShapeListCompound_1 = [] -i = 0 -while i < 5 : - ShapeListCompound_1.append(Face_translated[i]) - i = i + 1 -Compound_1 = geompy.MakeCompound(ShapeListCompound_1) -# (2.54) Exploding of Compound_1 to faces -Compound_1_faces = geompy.SubShapeAll(Compound_1, geompy.ShapeType["FACE"]) -# (2.54) Exploding of Face_translated_2 to vertices -Face_translated_2_vertices = geompy.SubShapeAll(Face_translated[1], geompy.ShapeType["VERTEX"]) -# (2.62) Creating two boxes -Box_1 = geompy.MakeBoxTwoPnt(Vertex_9, Face_translated_2_vertices[1]) -Box_2 = geompy.MakeBoxTwoPnt(Vertex_10, Face_translated_2_vertices[0]) -# (2.70) Building Compound_2 -ShapeListCompound_2 = [] -ShapeListCompound_2.append(Box_1) -ShapeListCompound_2.append(Box_2) -Compound_2 = geompy.MakeCompound(ShapeListCompound_2) -# (2.75) Exploding of Compound_2 to solids -Compound_2_solids = geompy.SubShapeAll(Compound_2, geompy.ShapeType["SOLID"]) - -# Adding to study of geometrical objects -id_Compound_1 = geompy.addToStudy(Compound_1, "Compound_1") -id_Face_1 = geompy.addToStudyInFather(Compound_1,Compound_1_faces[0], "Face_1") -id_Face_5 = geompy.addToStudyInFather(Compound_1,Compound_1_faces[4], "Face_5") -id_Face_4 = geompy.addToStudyInFather(Compound_1,Compound_1_faces[3], "Face_4") -id_Compound_2 = geompy.addToStudy(Compound_2, "Compound_2") -id_Solid_2 = geompy.addToStudyInFather(Compound_2,Compound_2_solids[1], "Solid_2") - -salome.sg.updateObjBrowser(1) diff --git a/src/GEOM_SWIG/PAL_MESH_033_geometry.py b/src/GEOM_SWIG/PAL_MESH_033_geometry.py deleted file mode 100755 index 0040b33ca..000000000 --- a/src/GEOM_SWIG/PAL_MESH_033_geometry.py +++ /dev/null @@ -1,40 +0,0 @@ -##################################################################### -#Created :17/02/2005 -#Auhtor :KOVALTCHUK Alexey -#GUI test scenario :PAL-MESH-033 (geometry part) -##################################################################### - -import geompy -import salome - -#Points creation (2.2) -Vertex_1 = geompy.MakeVertex(0, 0, 0) -geompy.addToStudy(Vertex_1, "Vertex_1") - -Vertex_2 = geompy.MakeVertex(0, 100, 0) -geompy.addToStudy(Vertex_2, "Vertex_2") - -Vertex_3 = geompy.MakeVertex(100, 100, 0) -geompy.addToStudy(Vertex_3, "Vertex_3") - -Vertex_4 = geompy.MakeVertex(100, 0, 0) -geompy.addToStudy(Vertex_4, "Vertex_4") - -#Edges creation (2.18) -Edge_1 = geompy.MakeEdge(Vertex_1, Vertex_2) -geompy.addToStudy(Edge_1, "Edge_1") - -Edge_2 = geompy.MakeEdge(Vertex_2, Vertex_3) -geompy.addToStudy(Edge_2, "Edge_2") - -Edge_3 = geompy.MakeEdge(Vertex_3, Vertex_4) -geompy.addToStudy(Edge_3, "Edge_3") - -Edge_4 = geompy.MakeEdge(Vertex_4, Vertex_1) -geompy.addToStudy(Edge_4, "Edge_4") - -#Wire creation (2.33) -Wire_1 = geompy.MakeWire([Edge_1, Edge_2, Edge_3, Edge_4]) -geompy.addToStudy(Wire_1, "Wire_1") - -salome.sg.updateObjBrowser(1) diff --git a/src/GEOM_SWIG/PAL_MESH_035_geometry.py b/src/GEOM_SWIG/PAL_MESH_035_geometry.py deleted file mode 100755 index ef3fe52e2..000000000 --- a/src/GEOM_SWIG/PAL_MESH_035_geometry.py +++ /dev/null @@ -1,88 +0,0 @@ -##################################################################### -#Created :15/02/2005 -#Auhtor :KOVALTCHUK Alexey -#GUI test scenario :PAL-MESH-035 (geometry part) -##################################################################### - -import geompy -import salome - -#Box creation (2.2) -Box_1 = geompy.MakeBoxDXDYDZ(200, 400, 300) -geompy.addToStudy(Box_1, "Box_1") - -#Cylinder creation (2.8) -Cylinder_1 = geompy.MakeCylinderRH(100, 300) -geompy.addToStudy(Cylinder_1, "Cylinder_1") - -#Cone creation (2.13) -Cone_1 = geompy.MakeConeR1R2H(100, 50, 200) -geompy.addToStudy(Cone_1, "Cone_1") - -#Explode box, cone and cylinder on faces and vertices(2.18) -ListOfFaces_Box_1 = geompy.SubShapeAll(Box_1, geompy.ShapeType["FACE"]) -NbExplodedFaces_Box_1 = len(ListOfFaces_Box_1) -for i in range (0, NbExplodedFaces_Box_1): - name = "Face_" + str(i+1) - geompy.addToStudyInFather(Box_1, ListOfFaces_Box_1[i], name) - -ListOfVertices_Box_1 = geompy.SubShapeAll(Box_1, geompy.ShapeType["VERTEX"]) -NbExplodedVertices_Box_1 = len(ListOfVertices_Box_1) -for i in range (0, NbExplodedVertices_Box_1): - name = "Vertex_" + str(i+1) - geompy.addToStudyInFather(Box_1, ListOfVertices_Box_1[i], name) - -ListOfFaces_Cylinder_1 = geompy.SubShapeAll(Cylinder_1, geompy.ShapeType["FACE"]) -NbExplodedFaces_Cylinder_1 = len(ListOfFaces_Cylinder_1) -for i in range (0, NbExplodedFaces_Cylinder_1): - name = "Face_" + str(NbExplodedFaces_Box_1+i+1) - geompy.addToStudyInFather(Cylinder_1, ListOfFaces_Cylinder_1[i], name) - -ListOfFaces_Cone_1 = geompy.SubShapeAll(Cone_1, geompy.ShapeType["FACE"]) -NbExplodedFaces_Cone_1 = len(ListOfFaces_Cone_1) -for i in range (0, NbExplodedFaces_Cone_1): - name = "Face_" + str(NbExplodedFaces_Box_1+NbExplodedFaces_Cylinder_1+i+1) - geompy.addToStudyInFather(Cone_1, ListOfFaces_Cone_1[i], name) - -#Plane creation (2.32) -Plane_1 = geompy.MakePlaneThreePnt(ListOfVertices_Box_1[0], ListOfVertices_Box_1[1], ListOfVertices_Box_1[3], 600) -geompy.addToStudy(Plane_1, "Plane_1") - -#Partition (2.32) -compound = geompy.MakeCompound([ListOfFaces_Cylinder_1[0], ListOfFaces_Cone_1[0]]) -Partition_1 = geompy.MakeHalfPartition(compound, Plane_1) -geompy.addToStudy(Partition_1, "Partition_1") - -#Explode partition on faces and vertices(2.38) -ListOfFaces_Partition_1 = geompy.SubShapeAll(Partition_1, geompy.ShapeType["FACE"]) -NbExplodedFaces_Partition_1 = len(ListOfFaces_Partition_1) -for i in range (0, NbExplodedFaces_Partition_1): - name = "Face_" + str(NbExplodedFaces_Box_1+NbExplodedFaces_Cylinder_1+NbExplodedFaces_Cone_1+i+1) - geompy.addToStudyInFather(Partition_1, ListOfFaces_Partition_1[i], name) - -#Explode faces on vertices(2.43) -ListOfVertices_Face_7 = geompy.SubShapeAll(ListOfFaces_Cylinder_1[0], geompy.ShapeType["VERTEX"]) -NbExplodedVertices_Face_7 = len(ListOfVertices_Face_7) -for i in range (0, NbExplodedVertices_Face_7): - name = "Vertex_" + str(NbExplodedVertices_Box_1+i+1) - geompy.addToStudyInFather(ListOfFaces_Cylinder_1[0], ListOfVertices_Face_7[i], name) - -ListOfVertices_Face_10 = geompy.SubShapeAll(ListOfFaces_Cone_1[0], geompy.ShapeType["VERTEX"]) -NbExplodedVertices_Face_10 = len(ListOfVertices_Face_10) -for i in range (0, NbExplodedVertices_Face_10): - name = "Vertex_" + str(NbExplodedVertices_Box_1+NbExplodedVertices_Face_7+i+1) - geompy.addToStudyInFather(ListOfFaces_Cone_1[0], ListOfVertices_Face_10[i], name) - -ListOfVertices_Face_15 = geompy.SubShapeAll(ListOfFaces_Partition_1[2], geompy.ShapeType["VERTEX"]) -NbExplodedVertices_Face_15 = len(ListOfVertices_Face_15) -for i in range (0, NbExplodedVertices_Face_15): - name = "Vertex_" + str(NbExplodedVertices_Box_1+NbExplodedVertices_Face_7+NbExplodedVertices_Face_10+i+1) - geompy.addToStudyInFather(ListOfFaces_Partition_1[2], ListOfVertices_Face_15[i], name) - -ListOfVertices_Face_18 = geompy.SubShapeAll(ListOfFaces_Partition_1[NbExplodedFaces_Partition_1-1], geompy.ShapeType["VERTEX"]) -NbExplodedVertices_Face_18 = len(ListOfVertices_Face_18) -for i in range (0, NbExplodedVertices_Face_18): - name = "Vertex_" + str(NbExplodedVertices_Box_1+NbExplodedVertices_Face_7+NbExplodedVertices_Face_10+NbExplodedVertices_Face_15+i+1) - geompy.addToStudyInFather(ListOfFaces_Partition_1[NbExplodedFaces_Partition_1-1], ListOfVertices_Face_18[i], name) - -salome.sg.updateObjBrowser(1) diff --git a/src/GEOM_SWIG/batchmode_geompy.py b/src/GEOM_SWIG/batchmode_geompy.py deleted file mode 100644 index fb2c74e31..000000000 --- a/src/GEOM_SWIG/batchmode_geompy.py +++ /dev/null @@ -1,1163 +0,0 @@ -# GEOM GEOM_SWIG : binding of C++ omplementaion with Python -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : geompy.py -# Author : Paul RASCLE, EDF -# Module : GEOM -# $Header$ - -from batchmode_salome import * -import GEOM - -g=None -step = 0 -while step < 50 and g == None: - g = lcc.FindOrLoadComponent("FactoryServer", "GEOM") - step = step + 1 - time.sleep(4) -geom = g._narrow( GEOM.GEOM_Gen ) - -myBuilder = None -myStudyId = 0 -father = None - -BasicOp = None -CurvesOp = None -PrimOp = None -ShapesOp = None -HealOp = None -InsertOp = None -BoolOp = None -TrsfOp = None -LocalOp = None -MeasuOp = None -BlocksOp = None -GroupOp = None - -def init_geom(theStudy): - - global myStudy, myBuilder, myStudyId, BasicOp, CurvesOp, PrimOp, ShapesOp, HealOp - global InsertOp, BoolOp, TrsfOp, LocalOp, MeasuOp, BlocksOp, GroupOp, father - - myStudy = theStudy - myStudyId = myStudy._get_StudyId() - myBuilder = myStudy.NewBuilder() - father = myStudy.FindComponent("GEOM") - if father is None: - father = myBuilder.NewComponent("GEOM") - A1 = myBuilder.FindOrCreateAttribute(father, "AttributeName") - FName = A1._narrow(SALOMEDS.AttributeName) - FName.SetValue("Geometry") - A2 = myBuilder.FindOrCreateAttribute(father, "AttributePixMap") - aPixmap = A2._narrow(SALOMEDS.AttributePixMap) - aPixmap.SetPixMap("ICON_OBJBROWSER_Geometry") - myBuilder.DefineComponentInstance(father,geom) - pass - - # ----------------------------------------------------------------------------- - # Assign Operations Interfaces - # ----------------------------------------------------------------------------- - - BasicOp = geom.GetIBasicOperations (myStudyId) - CurvesOp = geom.GetICurvesOperations (myStudyId) - PrimOp = geom.GetI3DPrimOperations (myStudyId) - ShapesOp = geom.GetIShapesOperations (myStudyId) - HealOp = geom.GetIHealingOperations (myStudyId) - InsertOp = geom.GetIInsertOperations (myStudyId) - BoolOp = geom.GetIBooleanOperations (myStudyId) - TrsfOp = geom.GetITransformOperations(myStudyId) - LocalOp = geom.GetILocalOperations (myStudyId) - MeasuOp = geom.GetIMeasureOperations (myStudyId) - BlocksOp = geom.GetIBlocksOperations (myStudyId) - GroupOp = geom.GetIGroupOperations (myStudyId) - pass - -init_geom(myStudy) - -# * Get name for sub-shape aSubObj of shape aMainObj -# -def SubShapeName(aSubObj, aMainObj): - name = "SubShape" - print name - return name - -# * Publish in study aShape with name aName -# -def addToStudy(aShape, aName): - try: - aSObject = geom.AddInStudy(myStudy, aShape, aName, None) - except: - print "addToStudy() failed" - return "" - return aShape.GetStudyEntry() - -# * Publish in study aShape with name aName as sub-object of previously published aFather -# -def addToStudyInFather(aFather, aShape, aName): - try: - aSObject = geom.AddInStudy(myStudy, aShape, aName, aFather) - except: - print "addToStudyInFather() failed" - return "" - return aShape.GetStudyEntry() - -# ----------------------------------------------------------------------------- -# enumeration ShapeType as a dictionary -# ----------------------------------------------------------------------------- - -ShapeType = {"COMPOUND":0, "COMPSOLID":1, "SOLID":2, "SHELL":3, "FACE":4, "WIRE":5, "EDGE":6, "VERTEX":7, "SHAPE":8} - -# ----------------------------------------------------------------------------- -# Basic primitives -# ----------------------------------------------------------------------------- - -def MakeVertex(theX, theY, theZ): - anObj = BasicOp.MakePointXYZ(theX, theY, theZ) - if BasicOp.IsDone() == 0: - print "MakePointXYZ : ", BasicOp.GetErrorCode() - return anObj - -def MakeVertexWithRef(vertex,x,y,z): - anObj = BasicOp.MakePointWithReference(vertex,x,y,z) - if BasicOp.IsDone() == 0: - print "MakePointWithReference : ", BasicOp.GetErrorCode() - return anObj - -def MakeVertexOnCurve(curve,par): - anObj = BasicOp.MakePointOnCurve(curve,par) - if BasicOp.IsDone() == 0: - print "MakePointOnCurve : ", BasicOp.GetErrorCode() - return anObj - -def MakeVectorDXDYDZ(dx,dy,dz): - anObj = BasicOp.MakeVectorDXDYDZ(dx,dy,dz) - if BasicOp.IsDone() == 0: - print "MakeVectorDXDYDZ : ", BasicOp.GetErrorCode() - return anObj - -def MakeVector(p1,p2): - anObj = BasicOp.MakeVectorTwoPnt(p1, p2) - if BasicOp.IsDone() == 0: - print "MakeVectorTwoPnt : ", BasicOp.GetErrorCode() - return anObj - -def MakeLine(p1, d1): - anObj = BasicOp.MakeLine(p1,d1) - if BasicOp.IsDone() == 0: - print "MakeLine : ", BasicOp.GetErrorCode() - return anObj - -def MakeLineTwoPnt(p1, p2): - anObj = BasicOp.MakeLineTwoPnt(p1,p2) - if BasicOp.IsDone() == 0: - print "MakeLineTwoPnt : ", BasicOp.GetErrorCode() - return anObj - -def MakePlane(p1,v1,trimsize): - anObj = BasicOp.MakePlanePntVec(p1,v1,trimsize) - if BasicOp.IsDone() == 0: - print "MakePlanePntVec : ", BasicOp.GetErrorCode() - return anObj - -def MakePlaneThreePnt(p1,p2,p3,trimsize): - anObj = BasicOp.MakePlaneThreePnt(p1,p2,p3,trimsize) - if BasicOp.IsDone() == 0: - print "MakePlaneThreePnt : ", BasicOp.GetErrorCode() - return anObj - -def MakePlaneFace(face,trimsize): - anObj = BasicOp.MakePlaneFace(face,trimsize) - if BasicOp.IsDone() == 0: - print "MakePlaneFace : ", BasicOp.GetErrorCode() - return anObj - -def MakeMarker(OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ): - anObj = BasicOp.MakeMarker(OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ) - if BasicOp.IsDone() == 0: - print "MakeMarker : ", BasicOp.GetErrorCode() - return anObj - -def MakeMarkerPntTwoVec(theOrigin, theXVec, theYVec): - """ - * Create a local coordinate system. - * \param theOrigin Point of coordinate system origin. - * \param theXVec Vector of X direction - * \param theYVec Vector of Y direction - * \return New GEOM_Object, containing the created coordinate system. - """ - O = PointCoordinates( theOrigin ) - OXOY = [] - for vec in [ theXVec, theYVec ]: - v1, v2 = SubShapeAll( vec, ShapeType["VERTEX"] ) - p1 = PointCoordinates( v1 ) - p2 = PointCoordinates( v2 ) - for i in range( 0, 3 ): - OXOY.append( p2[i] - p1[i] ) - # - anObj = BasicOp.MakeMarker( O[0], O[1], O[2], - OXOY[0], OXOY[1], OXOY[2], - OXOY[3], OXOY[4], OXOY[5], ) - if BasicOp.IsDone() == 0: - print "MakeMarker : ", BasicOp.GetErrorCode() - return anObj - -# ----------------------------------------------------------------------------- -# Curves -# ----------------------------------------------------------------------------- - -def MakeArc(p1,p2,p3): - anObj = CurvesOp.MakeArc(p1,p2,p3) - if CurvesOp.IsDone() == 0: - print "MakeArc : ", CurvesOp.GetErrorCode() - return anObj - -def MakeCircle(p1,v1,radius): - anObj = CurvesOp.MakeCirclePntVecR(p1,v1,radius) - if CurvesOp.IsDone() == 0: - print "MakeCirclePntVecR : ", CurvesOp.GetErrorCode() - return anObj - -def MakeCircleThreePnt(p1,p2,p3): - anObj = CurvesOp.MakeCircleThreePnt(p1,p2,p3) - if CurvesOp.IsDone() == 0: - print "MakeCircleThreePnt : ", CurvesOp.GetErrorCode() - return anObj - -def MakeEllipse(p1,v1,radiusMaj,radiusMin): - anObj = CurvesOp.MakeEllipse(p1,v1,radiusMaj, radiusMin) - if CurvesOp.IsDone() == 0: - print "MakeEllipse : ", CurvesOp.GetErrorCode() - return anObj - -def MakePolyline(ListShape): - anObj = CurvesOp.MakePolyline(ListShape) - if CurvesOp.IsDone() == 0: - print "MakePolyline : ", CurvesOp.GetErrorCode() - return anObj - -def MakeBezier(ListShape): - anObj = CurvesOp.MakeSplineBezier(ListShape) - if CurvesOp.IsDone() == 0: - print "MakeSplineBezier : ", CurvesOp.GetErrorCode() - return anObj - -def MakeInterpol(ListShape): - anObj = CurvesOp.MakeSplineInterpolation(ListShape) - if CurvesOp.IsDone() == 0: - print "MakeSplineInterpolation : ", CurvesOp.GetErrorCode() - return anObj - -# : Nine double values, defining origin, -# OZ and OX directions of the working plane. -def MakeSketcher(Cmd, WPL = [0,0,0, 0,0,1, 1,0,0]): - anObj = CurvesOp.MakeSketcher(Cmd, WPL) - if CurvesOp.IsDone() == 0: - print "MakeSketcher : ", CurvesOp.GetErrorCode() - return anObj - -def MakeSketcherOnPlane(theCommand, theWorkingPlane): - """ - * Create a sketcher (wire or face), following the textual description, - * passed through \a theCommand argument. \n - * For format of the description string see the previous method.\n - * \param theCommand String, defining the sketcher in local - * coordinates of the working plane. - * \param theWorkingPlane Planar Face of the working plane. - * \return New GEOM_Object, containing the created wire. - """ - anObj = CurvesOp.MakeSketcherOnPlane(theCommand, theWorkingPlane) - if CurvesOp.IsDone() == 0: - print "MakeSketcher : ", CurvesOp.GetErrorCode() - return anObj - -# ----------------------------------------------------------------------------- -# Create 3D Primitives -# ----------------------------------------------------------------------------- - -def MakeBox(x1,y1,z1,x2,y2,z2): - pnt1 = MakeVertex(x1,y1,z1) - pnt2 = MakeVertex(x2,y2,z2) - return MakeBoxTwoPnt(pnt1,pnt2) - -def MakeBoxDXDYDZ(dx,dy,dz): - anObj = PrimOp.MakeBoxDXDYDZ(dx,dy,dz) - if PrimOp.IsDone() == 0: - print "MakeBoxDXDYDZ : ", PrimOp.GetErrorCode() - return anObj - -def MakeBoxTwoPnt(point1, point2): - anObj = PrimOp.MakeBoxTwoPnt(point1, point2) - if PrimOp.IsDone() == 0: - print "MakeBoxTwoPnt : ", PrimOp.GetErrorCode() - return anObj - -def MakeCylinder(p1,v1,radius,height): - anObj = PrimOp.MakeCylinderPntVecRH(p1,v1,radius,height) - if PrimOp.IsDone() == 0: - print "MakeCylinderPntVecRH : ", PrimOp.GetErrorCode() - return anObj - -def MakeCylinderRH(radius,height): - anObj = PrimOp.MakeCylinderRH(radius,height) - if PrimOp.IsDone() == 0: - print "MakeCylinderRH : ", PrimOp.GetErrorCode() - return anObj - -def MakeSpherePntR(point,radius): - anObj = PrimOp.MakeSpherePntR(point,radius) - if PrimOp.IsDone() == 0: - print "MakeSpherePntR : ", PrimOp.GetErrorCode() - return anObj - -def MakeSphere(x,y,z,radius): - point = MakeVertex(x,y,z) - anObj = MakeSpherePntR(point,radius) - return anObj - -def MakeSphereR(radius): - anObj = PrimOp.MakeSphereR(radius) - if PrimOp.IsDone() == 0: - print "MakeSphereR : ", PrimOp.GetErrorCode() - return anObj - -def MakeCone(p1,v1,radius1,radius2,height): - anObj = PrimOp.MakeConePntVecR1R2H(p1,v1,radius1,radius2,height) - if PrimOp.IsDone() == 0: - print "MakeConePntVecR1R2H : ", PrimOp.GetErrorCode() - return anObj - -def MakeConeR1R2H(radius1,radius2,height): - anObj = PrimOp.MakeConeR1R2H(radius1,radius2,height) - if PrimOp.IsDone() == 0: - print "MakeConeR1R2H : ", PrimOp.GetErrorCode() - return anObj - -def MakeTorus(p1,v1,major_radius,minor_radius): - anObj = PrimOp.MakeTorusPntVecRR(p1,v1,major_radius,minor_radius) - if PrimOp.IsDone() == 0: - print "MakeTorusPntVecRR : ", PrimOp.GetErrorCode() - return anObj - -def MakeTorusRR(major_radius,minor_radius): - anObj = PrimOp.MakeTorusRR(major_radius,minor_radius) - if PrimOp.IsDone() == 0: - print "MakeTorusRR : ", PrimOp.GetErrorCode() - return anObj - -def MakePrism(baseShape,point1,point2): - anObj = PrimOp.MakePrismTwoPnt(baseShape,point1,point2) - if PrimOp.IsDone() == 0: - print "MakePrismTwoPnt : ", PrimOp.GetErrorCode() - return anObj - -def MakePrismVecH(baseShape,vector,height): - anObj = PrimOp.MakePrismVecH(baseShape,vector,height) - if PrimOp.IsDone() == 0: - print "MakePrismVecH : ", PrimOp.GetErrorCode() - return anObj - -def MakePipe(baseShape,pathShape): - anObj = PrimOp.MakePipe(baseShape,pathShape) - if PrimOp.IsDone() == 0: - print "MakePipe : ", PrimOp.GetErrorCode() - return anObj - -def MakeRevolution(aShape,axis,angle): - anObj = PrimOp.MakeRevolutionAxisAngle(aShape,axis,angle) - if PrimOp.IsDone() == 0: - print "MakeRevolutionAxisAngle : ", PrimOp.GetErrorCode() - return anObj - -# ----------------------------------------------------------------------------- -# Create base shapes -# ----------------------------------------------------------------------------- - -def MakeEdge(p1,p2): - anObj = ShapesOp.MakeEdge(p1,p2) - if ShapesOp.IsDone() == 0: - print "MakeEdge : ", ShapesOp.GetErrorCode() - return anObj - -def MakeWire(ListShape): - anObj = ShapesOp.MakeWire(ListShape) - if ShapesOp.IsDone() == 0: - print "MakeWire : ", ShapesOp.GetErrorCode() - return anObj - -def MakeFace(aShapeWire,WantPlanarFace): - anObj = ShapesOp.MakeFace(aShapeWire,WantPlanarFace) - if ShapesOp.IsDone() == 0: - print "MakeFace : ", ShapesOp.GetErrorCode() - return anObj - -def MakeFaceWires(ListWires,WantPlanarFace): - anObj = ShapesOp.MakeFaceWires(ListWires,WantPlanarFace) - if ShapesOp.IsDone() == 0: - print "MakeFaceWires : ", ShapesOp.GetErrorCode() - return anObj - -def MakeFaces(ListWires,WantPlanarFace): - anObj = MakeFaceWires(ListWires,WantPlanarFace) - return anObj - -def MakeShell(ListOfShapes): - anObj = ShapesOp.MakeShell(ListOfShapes) - if ShapesOp.IsDone() == 0: - print "MakeShell : ", ShapesOp.GetErrorCode() - return anObj - -def MakeSolid(ListOfShells): - anObj = ShapesOp.MakeSolidShells(ListOfShells) - if ShapesOp.IsDone() == 0: - print "MakeSolid : ", ShapesOp.GetErrorCode() - return anObj - -def MakeCompound(ListShape): - anObj = ShapesOp.MakeCompound(ListShape) - if ShapesOp.IsDone() == 0: - print "MakeCompound : ", ShapesOp.GetErrorCode() - return anObj - -def NumberOfFaces(theShape): - nb_faces = ShapesOp.NumberOfFaces(theShape) - if ShapesOp.IsDone() == 0: - print "NumberOfFaces : ", ShapesOp.GetErrorCode() - return nb_faces - -def NumberOfEdges(theShape): - nb_edges = ShapesOp.NumberOfEdges(theShape) - if ShapesOp.IsDone() == 0: - print "NumberOfEdges : ", ShapesOp.GetErrorCode() - return nb_edges - -def ChangeOrientation(Shape): - anObj = ShapesOp.ChangeOrientation(Shape) - if ShapesOp.IsDone() == 0: - print "ChangeOrientation : ", ShapesOp.GetErrorCode() - return anObj - -def OrientationChange(Shape): - anObj = ChangeOrientation(Shape) - return anObj - -def GetFreeFacesIDs(theShape): - anIDs = ShapesOp.GetFreeFacesIDs(theShape) - if ShapesOp.IsDone() == 0: - print "GetFreeFacesIDs : ", ShapesOp.GetErrorCode() - return anIDs - -def GetSharedShapes(theShape1, theShape2, theShapeType): - aList = ShapesOp.GetSharedShapes(theShape1, theShape2, theShapeType) - if ShapesOp.IsDone() == 0: - print "GetSharedShapes : ", ShapesOp.GetErrorCode() - return aList - -def GetShapesOnPlane(theShape, theShapeType, theAx1, theState): - aList = ShapesOp.GetShapesOnPlane(theShape, theShapeType, theAx1, theState) - if ShapesOp.IsDone() == 0: - print "GetShapesOnPlane : ", ShapesOp.GetErrorCode() - return aList - -def GetShapesOnCylinder(theShape, theShapeType, theAxis, theRadius, theState): - aList = ShapesOp.GetShapesOnCylinder(theShape, theShapeType, theAxis, theRadius, theState) - if ShapesOp.IsDone() == 0: - print "GetShapesOnCylinder : ", ShapesOp.GetErrorCode() - return aList - -def GetShapesOnSphere(theShape, theShapeType, theCenter, theRadius, theState): - aList = ShapesOp.GetShapesOnSphere(theShape, theShapeType, theCenter, theRadius, theState) - if ShapesOp.IsDone() == 0: - print "GetShapesOnSphere : ", ShapesOp.GetErrorCode() - return aList - -def GetInPlace(theShapeWhere, theShapeWhat): - anObj = ShapesOp.GetInPlace(theShapeWhere, theShapeWhat) - if ShapesOp.IsDone() == 0: - print "GetInPlace : ", ShapesOp.GetErrorCode() - return anObj - -# ----------------------------------------------------------------------------- -# Access to sub-shapes by their unique IDs inside the main shape. -# ----------------------------------------------------------------------------- - -# Obtain a composite sub-shape of , composed from sub-shapes -# of , selected by their unique IDs inside -def GetSubShape(aShape, ListOfID): - anObj = geom.AddSubShape(aShape,ListOfID) - return anObj - -# Obtain unique ID of sub-shape inside -def GetSubShapeID(aShape, aSubShape): - anID = LocalOp.GetSubShapeIndex(aShape, aSubShape) - if LocalOp.IsDone() == 0: - print "GetSubShapeIndex : ", LocalOp.GetErrorCode() - return anID - -# ----------------------------------------------------------------------------- -# Decompose objects -# ----------------------------------------------------------------------------- - -def SubShapeAll(aShape, aType): - ListObj = ShapesOp.MakeExplode(aShape,aType,0) - if ShapesOp.IsDone() == 0: - print "MakeExplode : ", ShapesOp.GetErrorCode() - return ListObj - -def SubShapeAllIDs(aShape, aType): - ListObj = ShapesOp.SubShapeAllIDs(aShape,aType,0) - if ShapesOp.IsDone() == 0: - print "SubShapeAllIDs : ", ShapesOp.GetErrorCode() - return ListObj - -def SubShapeAllSorted(aShape, aType): - ListObj = ShapesOp.MakeExplode(aShape,aType,1) - if ShapesOp.IsDone() == 0: - print "MakeExplode : ", ShapesOp.GetErrorCode() - return ListObj - -def SubShapeAllSortedIDs(aShape, aType): - ListIDs = ShapesOp.SubShapeAllIDs(aShape,aType,1) - if ShapesOp.IsDone() == 0: - print "SubShapeAllSortedIDs : ", ShapesOp.GetErrorCode() - return ListObj - -# Obtain a compound of sub-shapes of , -# selected by they indices in list of all sub-shapes of type -def SubShape(aShape, aType, ListOfInd): - ListOfIDs = [] - AllShapeList = SubShapeAll(aShape, aType) - for ind in ListOfInd: - ListOfIDs.append(GetSubShapeID(aShape, AllShapeList[ind - 1])) - anObj = GetSubShape(aShape, ListOfIDs) - return anObj - -# Obtain a compound of sub-shapes of , -# selected by they indices in sorted list of all sub-shapes of type -def SubShapeSorted(aShape, aType, ListOfInd): - ListOfIDs = [] - AllShapeList = SubShapeAllSorted(aShape, aType) - for ind in ListOfInd: - ListOfIDs.append(GetSubShapeID(aShape, AllShapeList[ind - 1])) - anObj = GetSubShape(aShape, ListOfIDs) - return anObj - -# ----------------------------------------------------------------------------- -# Healing operations -# ----------------------------------------------------------------------------- - -def ProcessShape(Shape, Operators, Parameters, Values): - anObj = HealOp.ProcessShape(Shape, Operators, Parameters, Values) - if HealOp.IsDone() == 0: - print "ProcessShape : ", HealOp.GetErrorCode() - return anObj - -def SuppressFaces(aShape,ListOfId): - anObj = HealOp.SuppressFaces(aShape,ListOfId) - if HealOp.IsDone() == 0: - print "SuppressFaces : ", HealOp.GetErrorCode() - return anObj - -def MakeSewing(ListShape,precision): - comp = MakeCompound(ListShape) - anObj = Sew(comp,precision) - return anObj - -def Sew(aShape,precision): - anObj = HealOp.Sew(aShape,precision) - if HealOp.IsDone() == 0: - print "Sew : ", HealOp.GetErrorCode() - return anObj - -def SuppressInternalWires(aShape, Wires): - anObj = HealOp.RemoveIntWires(aShape, Wires) - if HealOp.IsDone() == 0: - print "SuppressInternalWires : ", HealOp.GetErrorCode() - return anObj - -def SuppressHoles(aShape, ListOfId): - anObj = HealOp.FillHoles(aShape,ListOfId) - if HealOp.IsDone() == 0: - print "SuppressHoles : ", HealOp.GetErrorCode() - return anObj - -def CloseContour(aShape, Wires, IsCommonVertex): - anObj = HealOp.CloseContour(aShape, Wires, IsCommonVertex) - if HealOp.IsDone() == 0: - print "CloseContour : ", HealOp.GetErrorCode() - return anObj - -def DivideEdge(aShape, EdgeID, Value, IsByParameter): - anObj = HealOp.DivideEdge(aShape, EdgeID, Value, IsByParameter) - if HealOp.IsDone() == 0: - print "DivideEdge : ", HealOp.GetErrorCode() - return anObj - -def GetFreeBoundary(Shape): - anObj = HealOp.GetFreeBoundary(Shape) - if HealOp.IsDone() == 0: - print "GetFreeBoundaries : ", HealOp.GetErrorCode() - return anObj - -# ----------------------------------------------------------------------------- -# Create advanced objects -# ----------------------------------------------------------------------------- - -def MakeCopy(aShape): - anObj = InsertOp.MakeCopy(aShape) - if InsertOp.IsDone() == 0: - print "MakeCopy : ", InsertOp.GetErrorCode() - return anObj - -def MakeFilling(aShape,mindeg,maxdeg,tol2d,tol3d,nbiter): - anObj = PrimOp.MakeFilling(aShape,mindeg,maxdeg,tol2d,tol3d,nbiter) - if PrimOp.IsDone() == 0: - print "MakeFilling : ", PrimOp.GetErrorCode() - return anObj - -def MakeGlueFaces(aShape,aTolerance): - anObj = ShapesOp.MakeGlueFaces(aShape,aTolerance) - if ShapesOp.IsDone() == 0: - print "MakeGlueFaces : ", ShapesOp.GetErrorCode() - return anObj - -# ----------------------------------------------------------------------------- -# Boolean (Common, Cut, Fuse, Section) -# ----------------------------------------------------------------------------- - -def MakeBoolean(shape1,shape2,operation): - anObj = BoolOp.MakeBoolean(shape1,shape2,operation) - if BoolOp.IsDone() == 0: - print "MakeBoolean : ", BoolOp.GetErrorCode() - return anObj - -def MakeCommon(s1, s2): - return MakeBoolean(s1, s2, 1) - -def MakeCut(s1, s2): - return MakeBoolean(s1, s2, 2) - -def MakeFuse(s1, s2): - return MakeBoolean(s1, s2, 3) - -def MakeSection(s1, s2): - return MakeBoolean(s1, s2, 4) - -def MakePartition(ListShapes, ListTools=[], ListKeepInside=[], ListRemoveInside=[], - Limit=ShapeType["SHAPE"], RemoveWebs=0, ListMaterials=[]): - anObj = BoolOp.MakePartition(ListShapes, ListTools, - ListKeepInside, ListRemoveInside, - Limit, RemoveWebs, ListMaterials); - if BoolOp.IsDone() == 0: - print "MakePartition : ", BoolOp.GetErrorCode() - return anObj - -def Partition(ListShapes, ListTools=[], ListKeepInside=[], ListRemoveInside=[], - Limit=ShapeType["SHAPE"], RemoveWebs=0, ListMaterials=[]): - anObj = MakePartition(ListShapes, ListTools, - ListKeepInside, ListRemoveInside, - Limit, RemoveWebs, ListMaterials); - return anObj - -def MakeHalfPartition(theShape, thePlane): - anObj = BoolOp.MakeHalfPartition(theShape, thePlane) - if BoolOp.IsDone() == 0: - print "MakeHalfPartition : ", BoolOp.GetErrorCode() - return anObj - -# ----------------------------------------------------------------------------- -# Transform objects -# ----------------------------------------------------------------------------- - -def MakeTranslationTwoPoints(aShape,point1,point2): - anObj = TrsfOp.TranslateTwoPointsCopy(aShape,point1,point2) - if TrsfOp.IsDone() == 0: - print "TranslateTwoPointsCopy : ", TrsfOp.GetErrorCode() - return anObj - -def MakeTranslation(aShape,dx,dy,dz): - anObj = TrsfOp.TranslateDXDYDZCopy(aShape,dx,dy,dz) - if TrsfOp.IsDone() == 0: - print "TranslateDXDYDZCopy : ", TrsfOp.GetErrorCode() - return anObj - -def MakeTranslationVector(theObject, theVector): - anObj = TrsfOp.TranslateVectorCopy(theObject, theVector) - if TrsfOp.IsDone() == 0: - print "TranslateVectorCopy : ", TrsfOp.GetErrorCode() - return anObj - -def MakeRotation(aShape,axis,angle): - anObj = TrsfOp.RotateCopy(aShape,axis,angle) - if TrsfOp.IsDone() == 0: - print "RotateCopy : ", TrsfOp.GetErrorCode() - return anObj - -def MakeScaleTransform(aShape,theCenterofScale,factor): - anObj = TrsfOp.ScaleShapeCopy(aShape,theCenterofScale,factor) - if TrsfOp.IsDone() == 0: - print "ScaleShapeCopy : ", TrsfOp.GetErrorCode() - return anObj - -def MakeMirrorByPlane(aShape,aPlane): - anObj = TrsfOp.MirrorPlaneCopy(aShape,aPlane) - if TrsfOp.IsDone() == 0: - print "MirrorPlaneCopy : ", TrsfOp.GetErrorCode() - return anObj - -def MakeMirrorByAxis(theObject, theAxis): - anObj = TrsfOp.MirrorAxisCopy(theObject, theAxis) - if TrsfOp.IsDone() == 0: - print "MirrorAxisCopy : ", TrsfOp.GetErrorCode() - return anObj - -def MakeMirrorByPoint(theObject, thePoint): - anObj = TrsfOp.MirrorPointCopy(theObject, thePoint) - if TrsfOp.IsDone() == 0: - print "MirrorPointCopy : ", TrsfOp.GetErrorCode() - return anObj - -def MakePosition(aShape,theStartLCS,theEndLCS): - anObj = TrsfOp.PositionShapeCopy(aShape,theStartLCS,theEndLCS) - if TrsfOp.IsDone() == 0: - print "PositionShapeCopy : ", TrsfOp.GetErrorCode() - return anObj - -def MakeOffset(aShape, anOffset): - anObj = TrsfOp.OffsetShapeCopy(aShape, anOffset) - if TrsfOp.IsDone() == 0: - print "OffsetShapeCopy : ", TrsfOp.GetErrorCode() - return anObj - -# ----------------------------------------------------------------------------- -# Patterns -# ----------------------------------------------------------------------------- - -def MakeMultiTranslation1D(aShape,aDir,aStep,aNbTimes): - anObj = TrsfOp.MultiTranslate1D(aShape,aDir,aStep,aNbTimes) - if TrsfOp.IsDone() == 0: - print "MultiTranslate1D : ", TrsfOp.GetErrorCode() - return anObj - -def MakeMultiTranslation2D(aShape,d1,step1,nbtimes1,d2,step2,nbtimes2): - anObj = TrsfOp.MultiTranslate2D(aShape,d1,step1,nbtimes1,d2,step2,nbtimes2) - if TrsfOp.IsDone() == 0: - print "MultiTranslate2D : ", TrsfOp.GetErrorCode() - return anObj - -def MultiRotate1D(aShape,aVec,aNbTimes): - anObj = TrsfOp.MultiRotate1D(aShape,aVec,aNbTimes) - if TrsfOp.IsDone() == 0: - print "MultiRotate1D : ", TrsfOp.GetErrorCode() - return anObj - -def MultiRotate2D(aShape,aVec,anAngle,nbtimes1,aStep,nbtimes2): - anObj = TrsfOp.MultiRotate2D(aShape,aVec,anAngle,nbtimes1,aStep,nbtimes2) - if TrsfOp.IsDone() == 0: - print "MultiRotate2D : ", TrsfOp.GetErrorCode() - return anObj - -def MakeMultiRotation1D(aShape,aDir,aPoint,aNbTimes): - aVec = MakeLine(aPoint,aDir) - anObj = MultiRotate1D(aShape,aVec,aNbTimes) - return anObj - -def MakeMultiRotation2D(aShape,aDir,aPoint,anAngle,nbtimes1,aStep,nbtimes2): - aVec = MakeLine(aPoint,aDir) - anObj = MultiRotate2D(aShape,aVec,anAngle,nbtimes1,aStep,nbtimes2) - return anObj - -# ----------------------------------------------------------------------------- -# Local operations -# ----------------------------------------------------------------------------- - -def MakeFilletAll(aShape,radius): - anObj = LocalOp.MakeFilletAll(aShape,radius) - if LocalOp.IsDone() == 0: - print "MakeFilletAll : ", LocalOp.GetErrorCode() - return anObj - -def MakeFillet(aShape,radius,aShapeType,ListShape): - anObj = None - if aShapeType == ShapeType["EDGE"]: - anObj = LocalOp.MakeFilletEdges(aShape,radius,ListShape) - else: - anObj = LocalOp.MakeFilletFaces(aShape,radius,ListShape) - if LocalOp.IsDone() == 0: - print "MakeFillet : ", LocalOp.GetErrorCode() - return anObj - -def MakeChamferAll(aShape,d): - anObj = LocalOp.MakeChamferAll(aShape,d) - if LocalOp.IsDone() == 0: - print "MakeChamferAll : ", LocalOp.GetErrorCode() - return anObj - -def MakeChamferEdge(aShape,d1,d2,face1,face2): - anObj = LocalOp.MakeChamferEdge(aShape,d1,d2,face1,face2) - if LocalOp.IsDone() == 0: - print "MakeChamferEdge : ", LocalOp.GetErrorCode() - return anObj - -def MakeChamferFaces(aShape,d1,d2,ListShape): - anObj = LocalOp.MakeChamferFaces(aShape,d1,d2,ListShape) - if LocalOp.IsDone() == 0: - print "MakeChamferFaces : ", LocalOp.GetErrorCode() - return anObj - -def MakeChamfer(aShape,d1,d2,aShapeType,ListShape): - anObj = None - if aShapeType == ShapeType["EDGE"]: - anObj = MakeChamferEdge(aShape,d1,d2,ListShape[0],ListShape[1]) - else: - anObj = MakeChamferFaces(aShape,d1,d2,ListShape) - return anObj - -def Archimede(aShape,weight,WaterDensity,MeshingDeflection): - anObj = LocalOp.MakeArchimede(aShape,weight,WaterDensity,MeshingDeflection) - if LocalOp.IsDone() == 0: - print "MakeArchimede : ", LocalOp.GetErrorCode() - return anObj - -# ----------------------------------------------------------------------------- -# Information objects -# ----------------------------------------------------------------------------- - -def PointCoordinates(Point): - aTuple = MeasuOp.PointCoordinates(Point) - if MeasuOp.IsDone() == 0: - print "PointCoordinates : ", MeasuOp.GetErrorCode() - return aTuple - -def BasicProperties(Shape): - aTuple = MeasuOp.GetBasicProperties(Shape) - if MeasuOp.IsDone() == 0: - print "BasicProperties : ", MeasuOp.GetErrorCode() - return aTuple - -def BoundingBox(Shape): - aTuple = MeasuOp.GetBoundingBox(Shape) - if MeasuOp.IsDone() == 0: - print "BoundingBox : ", MeasuOp.GetErrorCode() - return aTuple - -def Inertia(Shape): - aTuple = MeasuOp.GetInertia(Shape) - if MeasuOp.IsDone() == 0: - print "Inertia : ", MeasuOp.GetErrorCode() - return aTuple - -def MinDistance(Shape1, Shape2): - aTuple = MeasuOp.GetMinDistance(Shape1, Shape2) - if MeasuOp.IsDone() == 0: - print "MinDistance : ", MeasuOp.GetErrorCode() - return aTuple[0] - -def Tolerance(Shape): - aTuple = MeasuOp.GetTolerance(Shape) - if MeasuOp.IsDone() == 0: - print "Tolerance : ", MeasuOp.GetErrorCode() - return aTuple - -def WhatIs(Shape): - aDescr = MeasuOp.WhatIs(Shape) - if MeasuOp.IsDone() == 0: - print "WhatIs : ", MeasuOp.GetErrorCode() - return aDescr - -def MakeCDG(aShape): - anObj = MeasuOp.GetCentreOfMass(aShape) - if MeasuOp.IsDone() == 0: - print "GetCentreOfMass : ", MeasuOp.GetErrorCode() - return anObj - -def CheckShape(aShape): - (IsValid, Status) = MeasuOp.CheckShape(aShape) - if MeasuOp.IsDone() == 0: - print "CheckShape : ", MeasuOp.GetErrorCode() - else: - if IsValid == 0: - print Status - return IsValid - -# ----------------------------------------------------------------------------- -# Import/Export objects -# ----------------------------------------------------------------------------- - -def Import(filename, formatname): - anObj = InsertOp.Import(filename, formatname) - if InsertOp.IsDone() == 0: - print "Import : ", InsertOp.GetErrorCode() - return anObj - -def ImportBREP(theFileName): - return Import(theFileName, "BREP") - -def ImportIGES(theFileName): - return Import(theFileName, "IGES") - -def ImportSTEP(theFileName): - return Import(theFileName, "STEP") - -def Export(aShape, filename, formatname): - InsertOp.Export(aShape, filename, formatname) - if InsertOp.IsDone() == 0: - print "Export : ", InsertOp.GetErrorCode() - -def ExportBREP(theObject, theFileName): - return Export(theObject, theFileName, "BREP") - -def ExportIGES(theObject, theFileName): - return Export(theObject, theFileName, "IGES") - -def ExportSTEP(theObject, theFileName): - return Export(theObject, theFileName, "STEP") - -# ----------------------------------------------------------------------------- -# Block operations -# ----------------------------------------------------------------------------- - -def MakeQuad(E1, E2, E3, E4): - anObj = BlocksOp.MakeQuad(E1, E2, E3, E4) - if BlocksOp.IsDone() == 0: - print "MakeQuad : ", BlocksOp.GetErrorCode() - return anObj - -def MakeQuad2Edges(E1, E2): - anObj = BlocksOp.MakeQuad2Edges(E1, E2) - if BlocksOp.IsDone() == 0: - print "MakeQuad2Edges : ", BlocksOp.GetErrorCode() - return anObj - -def MakeQuad4Vertices(V1, V2, V3, V4): - anObj = BlocksOp.MakeQuad4Vertices(V1, V2, V3, V4) - if BlocksOp.IsDone() == 0: - print "MakeQuad4Vertices : ", BlocksOp.GetErrorCode() - return anObj - -def MakeHexa(F1, F2, F3, F4, F5, F6): - anObj = BlocksOp.MakeHexa(F1, F2, F3, F4, F5, F6) - if BlocksOp.IsDone() == 0: - print "MakeHexa : ", BlocksOp.GetErrorCode() - return anObj - -def MakeHexa2Faces(F1, F2): - anObj = BlocksOp.MakeHexa2Faces(F1, F2) - if BlocksOp.IsDone() == 0: - print "MakeHexa2Faces : ", BlocksOp.GetErrorCode() - return anObj - -def GetPoint(theShape, theX, theY, theZ, theEpsilon): - anObj = BlocksOp.GetPoint(theShape, theX, theY, theZ, theEpsilon) - if BlocksOp.IsDone() == 0: - print "GetPoint : ", BlocksOp.GetErrorCode() - return anObj - -def GetEdge(theShape, thePoint1, thePoint2): - anObj = BlocksOp.GetEdge(theShape, thePoint1, thePoint2) - if BlocksOp.IsDone() == 0: - print "GetEdge : ", BlocksOp.GetErrorCode() - return anObj - -def GetEdgeNearPoint(theShape, thePoint): - anObj = BlocksOp.GetEdgeNearPoint(theShape, thePoint) - if BlocksOp.IsDone() == 0: - print "GetEdgeNearPoint : ", BlocksOp.GetErrorCode() - return anObj - -def GetFaceByPoints(theShape, thePoint1, thePoint2, thePoint3, thePoint4): - anObj = BlocksOp.GetFaceByPoints(theShape, thePoint1, thePoint2, thePoint3, thePoint4) - if BlocksOp.IsDone() == 0: - print "GetFaceByPoints : ", BlocksOp.GetErrorCode() - return anObj - -def GetFaceByEdges(theShape, theEdge1, theEdge2): - anObj = BlocksOp.GetFaceByEdges(theShape, theEdge1, theEdge2) - if BlocksOp.IsDone() == 0: - print "GetFaceByEdges : ", BlocksOp.GetErrorCode() - return anObj - -def GetOppositeFace(theBlock, theFace): - anObj = BlocksOp.GetOppositeFace(theBlock, theFace) - if BlocksOp.IsDone() == 0: - print "GetOppositeFace : ", BlocksOp.GetErrorCode() - return anObj - -def GetFaceNearPoint(theShape, thePoint): - anObj = BlocksOp.GetFaceNearPoint(theShape, thePoint) - if BlocksOp.IsDone() == 0: - print "GetFaceNearPoint : ", BlocksOp.GetErrorCode() - return anObj - -def GetFaceByNormale(theBlock, theVector): - anObj = BlocksOp.GetFaceByNormale(theBlock, theVector) - if BlocksOp.IsDone() == 0: - print "GetFaceByNormale : ", BlocksOp.GetErrorCode() - return anObj - -def CheckCompoundOfBlocks(theCompound): - (IsValid, BCErrors) = BlocksOp.CheckCompoundOfBlocks(theCompound) - if BlocksOp.IsDone() == 0: - print "CheckCompoundOfBlocks : ", BlocksOp.GetErrorCode() - else: - if IsValid == 0: - Descr = BlocksOp.PrintBCErrors(theCompound, BCErrors) - print Descr - return IsValid - -def RemoveExtraEdges(theShape): - anObj = BlocksOp.RemoveExtraEdges(theShape) - if BlocksOp.IsDone() == 0: - print "RemoveExtraEdges : ", BlocksOp.GetErrorCode() - return anObj - -def CheckAndImprove(theShape): - anObj = BlocksOp.CheckAndImprove(theShape) - if BlocksOp.IsDone() == 0: - print "CheckAndImprove : ", BlocksOp.GetErrorCode() - return anObj - -def MakeBlockExplode(theCompound, theMinNbFaces, theMaxNbFaces): - aList = BlocksOp.ExplodeCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces) - if BlocksOp.IsDone() == 0: - print "MakeBlockExplode : ", BlocksOp.GetErrorCode() - return aList - -def GetBlockNearPoint(theCompound, thePoint): - anObj = BlocksOp.GetBlockNearPoint(theCompound, thePoint) - if BlocksOp.IsDone() == 0: - print "GetBlockNearPoint : ", BlocksOp.GetErrorCode() - return anObj - -def GetBlockByParts(theCompound, theParts): - anObj = BlocksOp.GetBlockByParts(theCompound, theParts) - if BlocksOp.IsDone() == 0: - print "GetBlockByParts : ", BlocksOp.GetErrorCode() - return anObj - -def GetBlocksByParts(theCompound, theParts): - aList = BlocksOp.GetBlocksByParts(theCompound, theParts) - if BlocksOp.IsDone() == 0: - print "GetBlocksByParts : ", BlocksOp.GetErrorCode() - return aList - -def MakeMultiTransformation1D(Block, DirFaceID1, DirFaceID2, NbTimes): - anObj = BlocksOp.MakeMultiTransformation1D(Block, DirFaceID1, DirFaceID2, NbTimes) - if BlocksOp.IsDone() == 0: - print "MakeMultiTransformation1D : ", BlocksOp.GetErrorCode() - return anObj - -def MakeMultiTransformation2D(Block, DirFaceID1U, DirFaceID2U, NbTimesU, - DirFaceID1V, DirFaceID2V, NbTimesV): - anObj = BlocksOp.MakeMultiTransformation2D(Block, DirFaceID1U, DirFaceID2U, NbTimesU, - DirFaceID1V, DirFaceID2V, NbTimesV) - if BlocksOp.IsDone() == 0: - print "MakeMultiTransformation2D : ", BlocksOp.GetErrorCode() - return anObj - -def Propagate(theShape): - listChains = BlocksOp.Propagate(theShape) - if BlocksOp.IsDone() == 0: - print "Propagate : ", BlocksOp.GetErrorCode() - return listChains - -# ----------------------------------------------------------------------------- -# Group operations -# ----------------------------------------------------------------------------- - -def CreateGroup(MainShape, ShapeType): - anObj = GroupOp.CreateGroup(MainShape, ShapeType) - if GroupOp.IsDone() == 0: - print "CreateGroup : ", GroupOp.GetErrorCode() - return anObj - -def AddObject(Group, SubShapeID): - GroupOp.AddObject(Group, SubShapeID) - if GroupOp.IsDone() == 0: - print "AddObject : ", GroupOp.GetErrorCode() - -def RemoveObject(Group, SubShapeID): - GroupOp.RemoveObject(Group, SubShapeID) - if GroupOp.IsDone() == 0: - print "RemoveObject : ", GroupOp.GetErrorCode() - -def UnionList (theGroup, theSubShapes): - GroupOp.UnionList(theGroup, theSubShapes) - if GroupOp.IsDone() == 0: - print "UnionList : ", GroupOp.GetErrorCode() - -def DifferenceList (theGroup, theSubShapes): - GroupOp.DifferenceList(theGroup, theSubShapes) - if GroupOp.IsDone() == 0: - print "DifferenceList : ", GroupOp.GetErrorCode() - -def GetObjectIDs(Group): - ListIDs = GroupOp.GetObjects(Group) - if GroupOp.IsDone() == 0: - print "GetObjectIDs : ", GroupOp.GetErrorCode() - return ListIDs - -def GetType(theGroup): - aType = GroupOp.GetType(theGroup) - if GroupOp.IsDone() == 0: - print "GetType : ", GroupOp.GetErrorCode() - return aType - -def GetMainShape(theGroup): - anObj = GroupOp.GetMainShape(theGroup) - if GroupOp.IsDone() == 0: - print "GetMainShape : ", GroupOp.GetErrorCode() - return anObj - -def GetEdgesByLength (theShape, min_length, max_length, include_min = 1, include_max = 1): - """ - Create group of edges of theShape, whose length is in range [min_length, max_length]. - If include_min/max == 0, edges with length == min/max_length will not be included in result. - """ - - edges = SubShapeAll(theShape, ShapeType["EDGE"]) - edges_in_range = [] - for edge in edges: - Props = BasicProperties(edge) - if min_length <= Props[0] and Props[0] <= max_length: - if (not include_min) and (min_length == Props[0]): - skip = 1 - else: - if (not include_max) and (Props[0] == max_length): - skip = 1 - else: - edges_in_range.append(edge) - - if len(edges_in_range) <= 0: - print "No edges found by given criteria" - return 0 - - group_edges = CreateGroup(theShape, ShapeType["EDGE"]) - UnionList(group_edges, edges_in_range) - - return group_edges - -# Add Path to the system path -# -def addPath(Path): - if (sys.path.count(Path) < 1): - sys.path.append(Path) diff --git a/src/GEOM_SWIG/geompy.py b/src/GEOM_SWIG/geompy.py deleted file mode 100644 index 6c3d37720..000000000 --- a/src/GEOM_SWIG/geompy.py +++ /dev/null @@ -1,2530 +0,0 @@ -# GEOM GEOM_SWIG : binding of C++ omplementaion with Python -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : geompy.py -# Author : Paul RASCLE, EDF -# Module : GEOM -# $Header$ - -from salome import * -import GEOM - -""" - \namespace geompy - \brief Module geompy -""" - -g = lcc.FindOrLoadComponent("FactoryServer", "GEOM") -geom = g._narrow( GEOM.GEOM_Gen ) -gg = ImportComponentGUI("GEOM") -gg.initGeomGen() - -#SRN: modified on Mar 18, 2005 - -myBuilder = None -myStudyId = 0 -father = None - -BasicOp = None -CurvesOp = None -PrimOp = None -ShapesOp = None -HealOp = None -InsertOp = None -BoolOp = None -TrsfOp = None -LocalOp = None -MeasuOp = None -BlocksOp = None -GroupOp = None - -def init_geom(theStudy): - - global myStudy, myBuilder, myStudyId, BasicOp, CurvesOp, PrimOp, ShapesOp, HealOp - global InsertOp, BoolOp, TrsfOp, LocalOp, MeasuOp, BlocksOp, GroupOp, father - - myStudy = theStudy - myStudyId = myStudy._get_StudyId() - myBuilder = myStudy.NewBuilder() - father = myStudy.FindComponent("GEOM") - if father is None: - father = myBuilder.NewComponent("GEOM") - A1 = myBuilder.FindOrCreateAttribute(father, "AttributeName") - FName = A1._narrow(SALOMEDS.AttributeName) - FName.SetValue("Geometry") - A2 = myBuilder.FindOrCreateAttribute(father, "AttributePixMap") - aPixmap = A2._narrow(SALOMEDS.AttributePixMap) - aPixmap.SetPixMap("ICON_OBJBROWSER_Geometry") - myBuilder.DefineComponentInstance(father,geom) - pass - - # ----------------------------------------------------------------------------- - # Assign Operations Interfaces - # ----------------------------------------------------------------------------- - - BasicOp = geom.GetIBasicOperations (myStudyId) - CurvesOp = geom.GetICurvesOperations (myStudyId) - PrimOp = geom.GetI3DPrimOperations (myStudyId) - ShapesOp = geom.GetIShapesOperations (myStudyId) - HealOp = geom.GetIHealingOperations (myStudyId) - InsertOp = geom.GetIInsertOperations (myStudyId) - BoolOp = geom.GetIBooleanOperations (myStudyId) - TrsfOp = geom.GetITransformOperations(myStudyId) - LocalOp = geom.GetILocalOperations (myStudyId) - MeasuOp = geom.GetIMeasureOperations (myStudyId) - BlocksOp = geom.GetIBlocksOperations (myStudyId) - GroupOp = geom.GetIGroupOperations (myStudyId) - pass - -init_geom(myStudy) - -#SRN: end of modifications - -def SubShapeName(aSubObj, aMainObj): - """ - * Get name for sub-shape aSubObj of shape aMainObj - - * Example: see GEOM_TestAll.py - """ - aSubId = orb.object_to_string(aSubObj) - aMainId = orb.object_to_string(aMainObj) - index = gg.getIndexTopology(aSubId, aMainId) - name = gg.getShapeTypeString(aSubId) + "_%d"%(index) - return name - -def addToStudy(aShape, aName): - """ - * Publish in study aShape with name aName - - * Example: see GEOM_TestAll.py - """ - try: - aSObject = geom.AddInStudy(myStudy, aShape, aName, None) - except: - print "addToStudy() failed" - return "" - return aShape.GetStudyEntry() - -def addToStudyInFather(aFather, aShape, aName): - """ - * Publish in study aShape with name aName as sub-object of previously published aFather - - * Example: see GEOM_TestAll.py - """ - try: - aSObject = geom.AddInStudy(myStudy, aShape, aName, aFather) - except: - print "addToStudyInFather() failed" - return "" - return aShape.GetStudyEntry() - -# ----------------------------------------------------------------------------- -# enumeration ShapeType as a dictionary -# ----------------------------------------------------------------------------- - -ShapeType = {"COMPOUND":0, "COMPSOLID":1, "SOLID":2, "SHELL":3, "FACE":4, "WIRE":5, "EDGE":6, "VERTEX":7, "SHAPE":8} - -# ----------------------------------------------------------------------------- -# Basic primitives -# ----------------------------------------------------------------------------- - -def MakeVertex(theX, theY, theZ): - """ - * Create point by three coordinates. - * \param theX The X coordinate of the point. - * \param theY The Y coordinate of the point. - * \param theZ The Z coordinate of the point. - * \return New GEOM_Object, containing the created point. - - * Example: see GEOM_TestAll.py - """ - anObj = BasicOp.MakePointXYZ(theX, theY, theZ) - if BasicOp.IsDone() == 0: - print "MakePointXYZ : ", BasicOp.GetErrorCode() - return anObj - -def MakeVertexWithRef(theReference, theX, theY, theZ): - """ - * Create a point, distant from the referenced point - * on the given distances along the coordinate axes. - * \param theReference The referenced point. - * \param theX Displacement from the referenced point along OX axis. - * \param theY Displacement from the referenced point along OY axis. - * \param theZ Displacement from the referenced point along OZ axis. - * \return New GEOM_Object, containing the created point. - - * Example: see GEOM_TestAll.py - """ - anObj = BasicOp.MakePointWithReference(theReference, theX, theY, theZ) - if BasicOp.IsDone() == 0: - print "MakePointWithReference : ", BasicOp.GetErrorCode() - return anObj - -def MakeVertexOnCurve(theRefCurve, theParameter): - """ - * Create a point, corresponding to the given parameter on the given curve. - * \param theRefCurve The referenced curve. - * \param theParameter Value of parameter on the referenced curve. - * \return New GEOM_Object, containing the created point. - - * Example: see GEOM_TestAll.py - """ - anObj = BasicOp.MakePointOnCurve(theRefCurve, theParameter) - if BasicOp.IsDone() == 0: - print "MakePointOnCurve : ", BasicOp.GetErrorCode() - return anObj - -def MakeVectorDXDYDZ(theDX, theDY, theDZ): - """ - * Create a vector with the given components. - * \param theDX X component of the vector. - * \param theDY Y component of the vector. - * \param theDZ Z component of the vector. - * \return New GEOM_Object, containing the created vector. - - * Example: see GEOM_TestAll.py - """ - anObj = BasicOp.MakeVectorDXDYDZ(theDX, theDY, theDZ) - if BasicOp.IsDone() == 0: - print "MakeVectorDXDYDZ : ", BasicOp.GetErrorCode() - return anObj - -def MakeVector(thePnt1, thePnt2): - """ - * Create a vector between two points. - * \param thePnt1 Start point for the vector. - * \param thePnt2 End point for the vector. - * \return New GEOM_Object, containing the created vector. - - * Example: see GEOM_TestAll.py - """ - anObj = BasicOp.MakeVectorTwoPnt(thePnt1, thePnt2) - if BasicOp.IsDone() == 0: - print "MakeVectorTwoPnt : ", BasicOp.GetErrorCode() - return anObj - -def MakeLine(thePnt, theDir): - """ - * Create a line, passing through the given point - * and parrallel to the given direction - * \param thePnt Point. The resulting line will pass through it. - * \param theDir Direction. The resulting line will be parallel to it. - * \return New GEOM_Object, containing the created line. - - * Example: see GEOM_TestAll.py - """ - anObj = BasicOp.MakeLine(thePnt, theDir) - if BasicOp.IsDone() == 0: - print "MakeLine : ", BasicOp.GetErrorCode() - return anObj - -def MakeLineTwoPnt(thePnt1, thePnt2): - """ - * Create a line, passing through the given points - * \param thePnt1 First of two points, defining the line. - * \param thePnt2 Second of two points, defining the line. - * \return New GEOM_Object, containing the created line. - - * Example: see GEOM_TestAll.py - """ - anObj = BasicOp.MakeLineTwoPnt(thePnt1, thePnt2) - if BasicOp.IsDone() == 0: - print "MakeLineTwoPnt : ", BasicOp.GetErrorCode() - return anObj - -def MakePlane(thePnt, theVec, theTrimSize): - """ - * Create a plane, passing through the given point - * and normal to the given vector. - * \param thePnt Point, the plane has to pass through. - * \param theVec Vector, defining the plane normal direction. - * \param theTrimSize Half size of a side of quadrangle face, representing the plane. - * \return New GEOM_Object, containing the created plane. - - * Example: see GEOM_TestAll.py - """ - anObj = BasicOp.MakePlanePntVec(thePnt, theVec, theTrimSize) - if BasicOp.IsDone() == 0: - print "MakePlanePntVec : ", BasicOp.GetErrorCode() - return anObj - -def MakePlaneThreePnt(thePnt1, thePnt2, thePnt3, theTrimSize): - """ - * Create a plane, passing through the three given points - * \param thePnt1 First of three points, defining the plane. - * \param thePnt2 Second of three points, defining the plane. - * \param thePnt3 Fird of three points, defining the plane. - * \param theTrimSize Half size of a side of quadrangle face, representing the plane. - * \return New GEOM_Object, containing the created plane. - - * Example: see GEOM_TestAll.py - """ - anObj = BasicOp.MakePlaneThreePnt(thePnt1, thePnt2, thePnt3, theTrimSize) - if BasicOp.IsDone() == 0: - print "MakePlaneThreePnt : ", BasicOp.GetErrorCode() - return anObj - -def MakePlaneFace(theFace, theTrimSize): - """ - * Create a plane, similar to the existing one, but with another size of representing face. - * \param theFace Referenced plane. - * \param theTrimSize New half size of a side of quadrangle face, representing the plane. - * \return New GEOM_Object, containing the created plane. - - * Example: see GEOM_TestAll.py - """ - anObj = BasicOp.MakePlaneFace(theFace, theTrimSize) - if BasicOp.IsDone() == 0: - print "MakePlaneFace : ", BasicOp.GetErrorCode() - return anObj - -def MakeMarker(OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ): - """ - * Create a local coordinate system. - * \param OX,OY,OZ Three coordinates of coordinate system origin. - * \param XDX,XDY,XDZ Three components of OX direction - * \param YDX,YDY,YDZ Three components of OY direction - * \return New GEOM_Object, containing the created coordinate system. - - * Example: see GEOM_TestAll.py - """ - anObj = BasicOp.MakeMarker(OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ) - if BasicOp.IsDone() == 0: - print "MakeMarker : ", BasicOp.GetErrorCode() - return anObj - -def MakeMarkerPntTwoVec(theOrigin, theXVec, theYVec): - """ - * Create a local coordinate system. - * \param theOrigin Point of coordinate system origin. - * \param theXVec Vector of X direction - * \param theYVec Vector of Y direction - * \return New GEOM_Object, containing the created coordinate system. - """ - O = PointCoordinates( theOrigin ) - OXOY = [] - for vec in [ theXVec, theYVec ]: - v1, v2 = SubShapeAll( vec, ShapeType["VERTEX"] ) - p1 = PointCoordinates( v1 ) - p2 = PointCoordinates( v2 ) - for i in range( 0, 3 ): - OXOY.append( p2[i] - p1[i] ) - # - anObj = BasicOp.MakeMarker( O[0], O[1], O[2], - OXOY[0], OXOY[1], OXOY[2], - OXOY[3], OXOY[4], OXOY[5], ) - if BasicOp.IsDone() == 0: - print "MakeMarker : ", BasicOp.GetErrorCode() - return anObj - -# ----------------------------------------------------------------------------- -# Curves -# ----------------------------------------------------------------------------- - -def MakeArc(thePnt1, thePnt2, thePnt3): - """ - * Create an arc of circle, passing through three given points. - * \param thePnt1 Start point of the arc. - * \param thePnt2 Middle point of the arc. - * \param thePnt3 End point of the arc. - * \return New GEOM_Object, containing the created arc. - - * Example: see GEOM_TestAll.py - """ - anObj = CurvesOp.MakeArc(thePnt1, thePnt2, thePnt3) - if CurvesOp.IsDone() == 0: - print "MakeArc : ", CurvesOp.GetErrorCode() - return anObj - -def MakeCircle(thePnt, theVec, theR): - """ - * Create a circle with given center, normal vector and radius. - * \param thePnt Circle center. - * \param theVec Vector, normal to the plane of the circle. - * \param theR Circle radius. - * \return New GEOM_Object, containing the created circle. - - * Example: see GEOM_TestAll.py - """ - anObj = CurvesOp.MakeCirclePntVecR(thePnt, theVec, theR) - if CurvesOp.IsDone() == 0: - print "MakeCirclePntVecR : ", CurvesOp.GetErrorCode() - return anObj - -def MakeCircleThreePnt(thePnt1, thePnt2, thePnt3): - """ - * Create a circle, passing through three given points - * \param thePnt1,thePnt2,thePnt3 Points, defining the circle. - * \return New GEOM_Object, containing the created circle. - - * Example: see GEOM_TestAll.py - """ - anObj = CurvesOp.MakeCircleThreePnt(thePnt1, thePnt2, thePnt3) - if CurvesOp.IsDone() == 0: - print "MakeCircleThreePnt : ", CurvesOp.GetErrorCode() - return anObj - -def MakeEllipse(thePnt, theVec, theRMajor, theRMinor): - """ - * Create an ellipse with given center, normal vector and radiuses. - * \param thePnt Ellipse center. - * \param theVec Vector, normal to the plane of the ellipse. - * \param theRMajor Major ellipse radius. - * \param theRMinor Minor ellipse radius. - * \return New GEOM_Object, containing the created ellipse. - - * Example: see GEOM_TestAll.py - """ - anObj = CurvesOp.MakeEllipse(thePnt, theVec, theRMajor, theRMinor) - if CurvesOp.IsDone() == 0: - print "MakeEllipse : ", CurvesOp.GetErrorCode() - return anObj - -def MakePolyline(thePoints): - """ - * Create a polyline on the set of points. - * \param thePoints Sequence of points for the polyline. - * \return New GEOM_Object, containing the created polyline. - - * Example: see GEOM_TestAll.py - """ - anObj = CurvesOp.MakePolyline(thePoints) - if CurvesOp.IsDone() == 0: - print "MakePolyline : ", CurvesOp.GetErrorCode() - return anObj - -def MakeBezier(thePoints): - """ - * Create bezier curve on the set of points. - * \param thePoints Sequence of points for the bezier curve. - * \return New GEOM_Object, containing the created bezier curve. - - * Example: see GEOM_TestAll.py - """ - anObj = CurvesOp.MakeSplineBezier(thePoints) - if CurvesOp.IsDone() == 0: - print "MakeSplineBezier : ", CurvesOp.GetErrorCode() - return anObj - -def MakeInterpol(thePoints): - """ - * Create B-Spline curve on the set of points. - * \param thePoints Sequence of points for the B-Spline curve. - * \return New GEOM_Object, containing the created B-Spline curve. - - * Example: see GEOM_TestAll.py - """ - anObj = CurvesOp.MakeSplineInterpolation(thePoints) - if CurvesOp.IsDone() == 0: - print "MakeSplineInterpolation : ", CurvesOp.GetErrorCode() - return anObj - -def MakeSketcher(theCommand, theWorkingPlane = [0,0,0, 0,0,1, 1,0,0]): - """ - * Create a sketcher (wire or face), following the textual description, - * passed through \a theCommand argument. \n - * Edges of the resulting wire or face will be arcs of circles and/or linear segments. \n - * Format of the description string have to be the following: - * - * "Sketcher[:F x1 y1]:CMD[:CMD[:CMD...]]" - * - * Where: - * - x1, y1 are coordinates of the first sketcher point (zero by default), - * - CMD is one of - * - "R angle" : Set the direction by angle - * - "D dx dy" : Set the direction by DX & DY - * . - * \n - * - "TT x y" : Create segment by point at X & Y - * - "T dx dy" : Create segment by point with DX & DY - * - "L length" : Create segment by direction & Length - * - "IX x" : Create segment by direction & Intersect. X - * - "IY y" : Create segment by direction & Intersect. Y - * . - * \n - * - "C radius length" : Create arc by direction, radius and length(in degree) - * . - * \n - * - "WW" : Close Wire (to finish) - * - "WF" : Close Wire and build face (to finish) - * - * \param theCommand String, defining the sketcher in local - * coordinates of the working plane. - * \param theWorkingPlane Nine double values, defining origin, - * OZ and OX directions of the working plane. - * \return New GEOM_Object, containing the created wire. - - * Example: see GEOM_TestAll.py - """ - anObj = CurvesOp.MakeSketcher(theCommand, theWorkingPlane) - if CurvesOp.IsDone() == 0: - print "MakeSketcher : ", CurvesOp.GetErrorCode() - return anObj - -def MakeSketcherOnPlane(theCommand, theWorkingPlane): - """ - * Create a sketcher (wire or face), following the textual description, - * passed through \a theCommand argument. \n - * For format of the description string see the previous method.\n - * \param theCommand String, defining the sketcher in local - * coordinates of the working plane. - * \param theWorkingPlane Planar Face of the working plane. - * \return New GEOM_Object, containing the created wire. - """ - anObj = CurvesOp.MakeSketcherOnPlane(theCommand, theWorkingPlane) - if CurvesOp.IsDone() == 0: - print "MakeSketcher : ", CurvesOp.GetErrorCode() - return anObj - -# ----------------------------------------------------------------------------- -# Create 3D Primitives -# ----------------------------------------------------------------------------- - -def MakeBox(x1,y1,z1,x2,y2,z2): - """ - * Create a box by coordinates of two opposite vertices. - - * Example: see GEOM_TestAll.py - """ - pnt1 = MakeVertex(x1,y1,z1) - pnt2 = MakeVertex(x2,y2,z2) - return MakeBoxTwoPnt(pnt1,pnt2) - -def MakeBoxDXDYDZ(theDX, theDY, theDZ): - """ - * Create a box with specified dimensions along the coordinate axes - * and with edges, parallel to the coordinate axes. - * Center of the box will be at point (DX/2, DY/2, DZ/2). - * \param theDX Length of Box edges, parallel to OX axis. - * \param theDY Length of Box edges, parallel to OY axis. - * \param theDZ Length of Box edges, parallel to OZ axis. - * \return New GEOM_Object, containing the created box. - - * Example: see GEOM_TestAll.py - """ - anObj = PrimOp.MakeBoxDXDYDZ(theDX, theDY, theDZ) - if PrimOp.IsDone() == 0: - print "MakeBoxDXDYDZ : ", PrimOp.GetErrorCode() - return anObj - -def MakeBoxTwoPnt(thePnt1, thePnt2): - """ - * Create a box with two specified opposite vertices, - * and with edges, parallel to the coordinate axes - * \param thePnt1 First of two opposite vertices. - * \param thePnt2 Second of two opposite vertices. - * \return New GEOM_Object, containing the created box. - - * Example: see GEOM_TestAll.py - """ - anObj = PrimOp.MakeBoxTwoPnt(thePnt1, thePnt2) - if PrimOp.IsDone() == 0: - print "MakeBoxTwoPnt : ", PrimOp.GetErrorCode() - return anObj - -def MakeCylinder(thePnt, theAxis, theR, theH): - """ - * Create a cylinder with given base point, axis, radius and height. - * \param thePnt Central point of cylinder base. - * \param theAxis Cylinder axis. - * \param theR Cylinder radius. - * \param theH Cylinder height. - * \return New GEOM_Object, containing the created cylinder. - - * Example: see GEOM_TestAll.py - """ - anObj = PrimOp.MakeCylinderPntVecRH(thePnt, theAxis, theR, theH) - if PrimOp.IsDone() == 0: - print "MakeCylinderPntVecRH : ", PrimOp.GetErrorCode() - return anObj - -def MakeCylinderRH(theR, theH): - """ - * Create a cylinder with given radius and height at - * the origin of coordinate system. Axis of the cylinder - * will be collinear to the OZ axis of the coordinate system. - * \param theR Cylinder radius. - * \param theH Cylinder height. - * \return New GEOM_Object, containing the created cylinder. - - * Example: see GEOM_TestAll.py - """ - anObj = PrimOp.MakeCylinderRH(theR, theH) - if PrimOp.IsDone() == 0: - print "MakeCylinderRH : ", PrimOp.GetErrorCode() - return anObj - -def MakeSpherePntR(thePnt, theR): - """ - * Create a sphere with given center and radius. - * \param thePnt Sphere center. - * \param theR Sphere radius. - * \return New GEOM_Object, containing the created sphere. - - * Example: see GEOM_TestAll.py - """ - anObj = PrimOp.MakeSpherePntR(thePnt, theR) - if PrimOp.IsDone() == 0: - print "MakeSpherePntR : ", PrimOp.GetErrorCode() - return anObj - -def MakeSphere(x, y, z, theR): - """ - * Create a sphere with given center and radius. - * \param x,y,z Coordinates of sphere center. - * \param theR Sphere radius. - * \return New GEOM_Object, containing the created sphere. - - * Example: see GEOM_TestAll.py - """ - point = MakeVertex(x, y, z) - anObj = MakeSpherePntR(point, theR) - return anObj - -def MakeSphereR(theR): - """ - * Create a sphere with given radius at the origin of coordinate system. - * \param theR Sphere radius. - * \return New GEOM_Object, containing the created sphere. - - * Example: see GEOM_TestAll.py - """ - anObj = PrimOp.MakeSphereR(theR) - if PrimOp.IsDone() == 0: - print "MakeSphereR : ", PrimOp.GetErrorCode() - return anObj - -def MakeCone(thePnt, theAxis, theR1, theR2, theH): - """ - * Create a cone with given base point, axis, height and radiuses. - * \param thePnt Central point of the first cone base. - * \param theAxis Cone axis. - * \param theR1 Radius of the first cone base. - * \param theR2 Radius of the second cone base. - * \note If both radiuses are non-zero, the cone will be truncated. - * \note If the radiuses are equal, a cylinder will be created instead. - * \param theH Cone height. - * \return New GEOM_Object, containing the created cone. - - * Example: see GEOM_TestAll.py - """ - anObj = PrimOp.MakeConePntVecR1R2H(thePnt, theAxis, theR1, theR2, theH) - if PrimOp.IsDone() == 0: - print "MakeConePntVecR1R2H : ", PrimOp.GetErrorCode() - return anObj - -def MakeConeR1R2H(theR1, theR2, theH): - """ - * Create a cone with given height and radiuses at - * the origin of coordinate system. Axis of the cone will - * be collinear to the OZ axis of the coordinate system. - * \param theR1 Radius of the first cone base. - * \param theR2 Radius of the second cone base. - * \note If both radiuses are non-zero, the cone will be truncated. - * \note If the radiuses are equal, a cylinder will be created instead. - * \param theH Cone height. - * \return New GEOM_Object, containing the created cone. - - * Example: see GEOM_TestAll.py - """ - anObj = PrimOp.MakeConeR1R2H(theR1, theR2, theH) - if PrimOp.IsDone() == 0: - print "MakeConeR1R2H : ", PrimOp.GetErrorCode() - return anObj - -def MakeTorus(thePnt, theVec, theRMajor, theRMinor): - """ - * Create a torus with given center, normal vector and radiuses. - * \param thePnt Torus central point. - * \param theVec Torus axis of symmetry. - * \param theRMajor Torus major radius. - * \param theRMinor Torus minor radius. - * \return New GEOM_Object, containing the created torus. - - * Example: see GEOM_TestAll.py - """ - anObj = PrimOp.MakeTorusPntVecRR(thePnt, theVec, theRMajor, theRMinor) - if PrimOp.IsDone() == 0: - print "MakeTorusPntVecRR : ", PrimOp.GetErrorCode() - return anObj - -def MakeTorusRR(theRMajor, theRMinor): - """ - * Create a torus with given radiuses at the origin of coordinate system. - * \param theRMajor Torus major radius. - * \param theRMinor Torus minor radius. - * \return New GEOM_Object, containing the created torus. - - * Example: see GEOM_TestAll.py - """ - anObj = PrimOp.MakeTorusRR(theRMajor, theRMinor) - if PrimOp.IsDone() == 0: - print "MakeTorusRR : ", PrimOp.GetErrorCode() - return anObj - -def MakePrism(theBase, thePoint1, thePoint2): - """ - * Create a shape by extrusion of the base shape along a vector, defined by two points. - * \param theBase Base shape to be extruded. - * \param thePoint1 First end of extrusion vector. - * \param thePoint2 Second end of extrusion vector. - * \return New GEOM_Object, containing the created prism. - - * Example: see GEOM_TestAll.py - """ - anObj = PrimOp.MakePrismTwoPnt(theBase, thePoint1, thePoint2) - if PrimOp.IsDone() == 0: - print "MakePrismTwoPnt : ", PrimOp.GetErrorCode() - return anObj - -def MakePrismVecH(theBase, theVec, theH): - """ - * Create a shape by extrusion of the base shape along the vector, - * i.e. all the space, transfixed by the base shape during its translation - * along the vector on the given distance. - * \param theBase Base shape to be extruded. - * \param theVec Direction of extrusion. - * \param theH Prism dimension along theVec. - * \return New GEOM_Object, containing the created prism. - - * Example: see GEOM_TestAll.py - """ - anObj = PrimOp.MakePrismVecH(theBase, theVec, theH) - if PrimOp.IsDone() == 0: - print "MakePrismVecH : ", PrimOp.GetErrorCode() - return anObj - -def MakePipe(theBase, thePath): - """ - * Create a shape by extrusion of the base shape along - * the path shape. The path shape can be a wire or an edge. - * \param theBase Base shape to be extruded. - * \param thePath Path shape to extrude the base shape along it. - * \return New GEOM_Object, containing the created pipe. - - * Example: see GEOM_TestAll.py - """ - anObj = PrimOp.MakePipe(theBase, thePath) - if PrimOp.IsDone() == 0: - print "MakePipe : ", PrimOp.GetErrorCode() - return anObj - -def MakeRevolution(theBase, theAxis, theAngle): - """ - * Create a shape by revolution of the base shape around the axis - * on the given angle, i.e. all the space, transfixed by the base - * shape during its rotation around the axis on the given angle. - * \param theBase Base shape to be rotated. - * \param theAxis Rotation axis. - * \param theAngle Rotation angle in radians. - * \return New GEOM_Object, containing the created revolution. - - * Example: see GEOM_TestAll.py - """ - anObj = PrimOp.MakeRevolutionAxisAngle(theBase, theAxis, theAngle) - if PrimOp.IsDone() == 0: - print "MakeRevolutionAxisAngle : ", PrimOp.GetErrorCode() - return anObj - -# ----------------------------------------------------------------------------- -# Create base shapes -# ----------------------------------------------------------------------------- - -def MakeEdge(thePnt1, thePnt2): - """ - * Create a linear edge with specified ends. - * \param thePnt1 Point for the first end of edge. - * \param thePnt2 Point for the second end of edge. - * \return New GEOM_Object, containing the created edge. - - * Example: see GEOM_TestAll.py - """ - anObj = ShapesOp.MakeEdge(thePnt1, thePnt2) - if ShapesOp.IsDone() == 0: - print "MakeEdge : ", ShapesOp.GetErrorCode() - return anObj - -def MakeWire(theEdgesAndWires): - """ - * Create a wire from the set of edges and wires. - * \param theEdgesAndWires List of edges and/or wires. - * \return New GEOM_Object, containing the created wire. - - * Example: see GEOM_TestAll.py - """ - anObj = ShapesOp.MakeWire(theEdgesAndWires) - if ShapesOp.IsDone() == 0: - print "MakeWire : ", ShapesOp.GetErrorCode() - return anObj - -def MakeFace(theWire, isPlanarWanted): - """ - * Create a face on the given wire. - * \param theWire Wire to build the face on. - * \param isPlanarWanted If TRUE, only planar face will be built. - * If impossible, NULL object will be returned. - * \return New GEOM_Object, containing the created face. - - * Example: see GEOM_TestAll.py - """ - anObj = ShapesOp.MakeFace(theWire, isPlanarWanted) - if ShapesOp.IsDone() == 0: - print "MakeFace : ", ShapesOp.GetErrorCode() - return anObj - -def MakeFaceWires(theWires, isPlanarWanted): - """ - * Create a face on the given wires set. - * \param theWires List of wires to build the face on. - * \param isPlanarWanted If TRUE, only planar face will be built. - * If impossible, NULL object will be returned. - * \return New GEOM_Object, containing the created face. - - * Example: see GEOM_TestAll.py - """ - anObj = ShapesOp.MakeFaceWires(theWires, isPlanarWanted) - if ShapesOp.IsDone() == 0: - print "MakeFaceWires : ", ShapesOp.GetErrorCode() - return anObj - -def MakeFaces(theWires, isPlanarWanted): - """ - * Shortcut to MakeFaceWires() - - * Example: see GEOM_TestOthers.py - """ - anObj = MakeFaceWires(theWires, isPlanarWanted) - return anObj - -def MakeShell(theFacesAndShells): - """ - * Create a shell from the set of faces and shells. - * \param theFacesAndShells List of faces and/or shells. - * \return New GEOM_Object, containing the created shell. - - * Example: see GEOM_TestAll.py - """ - anObj = ShapesOp.MakeShell(theFacesAndShells) - if ShapesOp.IsDone() == 0: - print "MakeShell : ", ShapesOp.GetErrorCode() - return anObj - -def MakeSolid(theShells): - """ - * Create a solid, bounded by the given shells. - * \param theShells Sequence of bounding shells. - * \return New GEOM_Object, containing the created solid. - - * Example: see GEOM_TestAll.py - """ - anObj = ShapesOp.MakeSolidShells(theShells) - if ShapesOp.IsDone() == 0: - print "MakeSolid : ", ShapesOp.GetErrorCode() - return anObj - -def MakeCompound(theShapes): - """ - * Create a compound of the given shapes. - * \param theShapes List of shapes to put in compound. - * \return New GEOM_Object, containing the created compound. - - * Example: see GEOM_TestAll.py - """ - anObj = ShapesOp.MakeCompound(theShapes) - if ShapesOp.IsDone() == 0: - print "MakeCompound : ", ShapesOp.GetErrorCode() - return anObj - -def NumberOfFaces(theShape): - """ - * Gives quantity of faces in the given shape. - * \param theShape Shape to count faces of. - * \return Quantity of faces. - - * Example: see GEOM_TestOthers.py - """ - nb_faces = ShapesOp.NumberOfFaces(theShape) - if ShapesOp.IsDone() == 0: - print "NumberOfFaces : ", ShapesOp.GetErrorCode() - return nb_faces - -def NumberOfEdges(theShape): - """ - * Gives quantity of edges in the given shape. - * \param theShape Shape to count edges of. - * \return Quantity of edges. - - * Example: see GEOM_TestOthers.py - """ - nb_edges = ShapesOp.NumberOfEdges(theShape) - if ShapesOp.IsDone() == 0: - print "NumberOfEdges : ", ShapesOp.GetErrorCode() - return nb_edges - -def ChangeOrientation(theShape): - """ - * Reverses an orientation the given shape. - * \param theShape Shape to be reversed. - * \return The reversed copy of theShape. - - * Example: see GEOM_TestAll.py - """ - anObj = ShapesOp.ChangeOrientation(theShape) - if ShapesOp.IsDone() == 0: - print "ChangeOrientation : ", ShapesOp.GetErrorCode() - return anObj - -def OrientationChange(theShape): - """ - * Shortcut to ChangeOrientation() - - * Example: see GEOM_TestOthers.py - """ - anObj = ChangeOrientation(theShape) - return anObj - -def GetFreeFacesIDs(theShape): - """ - * Retrieve all free faces from the given shape. - * Free face is a face, which is not shared between two shells of the shape. - * \param theShape Shape to find free faces in. - * \return List of IDs of all free faces, contained in theShape. - - * Example: see GEOM_TestOthers.py - """ - anIDs = ShapesOp.GetFreeFacesIDs(theShape) - if ShapesOp.IsDone() == 0: - print "GetFreeFacesIDs : ", ShapesOp.GetErrorCode() - return anIDs - -def GetSharedShapes(theShape1, theShape2, theShapeType): - """ - * Get all sub-shapes of theShape1 of the given type, shared with theShape2. - * \param theShape1 Shape to find sub-shapes in. - * \param theShape2 Shape to find shared sub-shapes with. - * \param theShapeType Type of sub-shapes to be retrieved. - * \return List of sub-shapes of theShape1, shared with theShape2. - - * Example: see GEOM_TestOthers.py - """ - aList = ShapesOp.GetSharedShapes(theShape1, theShape2, theShapeType) - if ShapesOp.IsDone() == 0: - print "GetSharedShapes : ", ShapesOp.GetErrorCode() - return aList - -def GetShapesOnPlane(theShape, theShapeType, theAx1, theState): - """ - * Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively - * the specified plane by the certain way, defined through \a theState parameter. - * \param theShape Shape to find sub-shapes of. - * \param theShapeType Type of sub-shapes to be retrieved. - * \param theAx1 Vector (or line, or linear edge), specifying normal - * direction and location of the plane to find shapes on. - * \param theState The state of the subshapes to find. It can be one of - * ST_ON, ST_OUT, ST_ONOUT, ST_IN, ST_ONIN. - * \return List of all found sub-shapes. - - * Example: see GEOM_TestOthers.py - """ - aList = ShapesOp.GetShapesOnPlane(theShape, theShapeType, theAx1, theState) - if ShapesOp.IsDone() == 0: - print "GetShapesOnPlane : ", ShapesOp.GetErrorCode() - return aList - -def GetShapesOnCylinder(theShape, theShapeType, theAxis, theRadius, theState): - """ - * Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively - * the specified cylinder by the certain way, defined through \a theState parameter. - * \param theShape Shape to find sub-shapes of. - * \param theShapeType Type of sub-shapes to be retrieved. - * \param theAxis Vector (or line, or linear edge), specifying - * axis of the cylinder to find shapes on. - * \param theRadius Radius of the cylinder to find shapes on. - * \param theState The state of the subshapes to find. It can be one of - * ST_ON, ST_OUT, ST_ONOUT, ST_IN, ST_ONIN. - * \return List of all found sub-shapes. - - * Example: see GEOM_TestOthers.py - """ - aList = ShapesOp.GetShapesOnCylinder(theShape, theShapeType, theAxis, theRadius, theState) - if ShapesOp.IsDone() == 0: - print "GetShapesOnCylinder : ", ShapesOp.GetErrorCode() - return aList - -def GetShapesOnSphere(theShape, theShapeType, theCenter, theRadius, theState): - """ - * Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively - * the specified sphere by the certain way, defined through \a theState parameter. - * \param theShape Shape to find sub-shapes of. - * \param theShapeType Type of sub-shapes to be retrieved. - * \param theCenter Point, specifying center of the sphere to find shapes on. - * \param theRadius Radius of the sphere to find shapes on. - * \param theState The state of the subshapes to find. It can be one of - * ST_ON, ST_OUT, ST_ONOUT, ST_IN, ST_ONIN. - * \return List of all found sub-shapes. - - * Example: see GEOM_TestOthers.py - """ - aList = ShapesOp.GetShapesOnSphere(theShape, theShapeType, theCenter, theRadius, theState) - if ShapesOp.IsDone() == 0: - print "GetShapesOnSphere : ", ShapesOp.GetErrorCode() - return aList - -def GetInPlace(theShapeWhere, theShapeWhat): - """ - * Get sub-shape(s) of theShapeWhere, which are - * coincident with \a theShapeWhat or could be a part of it. - * \param theShapeWhere Shape to find sub-shapes of. - * \param theShapeWhat Shape, specifying what to find. - * \return Group of all found sub-shapes or a single found sub-shape. - - * Example: see GEOM_TestOthers.py - """ - anObj = ShapesOp.GetInPlace(theShapeWhere, theShapeWhat) - if ShapesOp.IsDone() == 0: - print "GetInPlace : ", ShapesOp.GetErrorCode() - return anObj - -# ----------------------------------------------------------------------------- -# Access to sub-shapes by their unique IDs inside the main shape. -# ----------------------------------------------------------------------------- - -def GetSubShape(aShape, ListOfID): - """ - * Obtain a composite sub-shape of , composed from sub-shapes - * of , selected by their unique IDs inside - - * Example: see GEOM_TestAll.py - """ - anObj = geom.AddSubShape(aShape,ListOfID) - return anObj - -def GetSubShapeID(aShape, aSubShape): - """ - * Obtain unique ID of sub-shape inside - - * Example: see GEOM_TestAll.py - """ - anID = LocalOp.GetSubShapeIndex(aShape, aSubShape) - if LocalOp.IsDone() == 0: - print "GetSubShapeIndex : ", LocalOp.GetErrorCode() - return anID - -# ----------------------------------------------------------------------------- -# Decompose objects -# ----------------------------------------------------------------------------- - -def SubShapeAll(aShape, aType): - """ - * Explode a shape on subshapes of a given type. - * \param theShape Shape to be exploded. - * \param theShapeType Type of sub-shapes to be retrieved. - * \return List of sub-shapes of type theShapeType, contained in theShape. - - * Example: see GEOM_TestAll.py - """ - ListObj = ShapesOp.MakeExplode(aShape,aType,0) - if ShapesOp.IsDone() == 0: - print "MakeExplode : ", ShapesOp.GetErrorCode() - return ListObj - -def SubShapeAllIDs(aShape, aType): - """ - * Explode a shape on subshapes of a given type. - * \param theShape Shape to be exploded. - * \param theShapeType Type of sub-shapes to be retrieved. - * \return List of IDs of sub-shapes. - """ - ListObj = ShapesOp.SubShapeAllIDs(aShape,aType,0) - if ShapesOp.IsDone() == 0: - print "SubShapeAllIDs : ", ShapesOp.GetErrorCode() - return ListObj - -def SubShapeAllSorted(aShape, aType): - """ - * Explode a shape on subshapes of a given type. - * Sub-shapes will be sorted by coordinates of their gravity centers. - * \param theShape Shape to be exploded. - * \param theShapeType Type of sub-shapes to be retrieved. - * \return List of sub-shapes of type theShapeType, contained in theShape. - - * Example: see GEOM_TestAll.py - """ - ListObj = ShapesOp.MakeExplode(aShape,aType,1) - if ShapesOp.IsDone() == 0: - print "MakeExplode : ", ShapesOp.GetErrorCode() - return ListObj - -def SubShapeAllSortedIDs(aShape, aType): - """ - * Explode a shape on subshapes of a given type. - * Sub-shapes will be sorted by coordinates of their gravity centers. - * \param theShape Shape to be exploded. - * \param theShapeType Type of sub-shapes to be retrieved. - * \return List of IDs of sub-shapes. - """ - ListIDs = ShapesOp.SubShapeAllIDs(aShape,aType,1) - if ShapesOp.IsDone() == 0: - print "SubShapeAllSortedIDs : ", ShapesOp.GetErrorCode() - return ListObj - -def SubShape(aShape, aType, ListOfInd): - """ - * Obtain a compound of sub-shapes of , - * selected by they indices in list of all sub-shapes of type . - * Each index is in range [1, Nb_Sub-Shapes_Of_Given_Type] - - * Example: see GEOM_TestAll.py - """ - ListOfIDs = [] - AllShapeList = SubShapeAll(aShape, aType) - for ind in ListOfInd: - ListOfIDs.append(GetSubShapeID(aShape, AllShapeList[ind - 1])) - anObj = GetSubShape(aShape, ListOfIDs) - return anObj - -def SubShapeSorted(aShape, aType, ListOfInd): - """ - * Obtain a compound of sub-shapes of , - * selected by they indices in sorted list of all sub-shapes of type . - * Each index is in range [1, Nb_Sub-Shapes_Of_Given_Type] - - * Example: see GEOM_TestAll.py - """ - ListOfIDs = [] - AllShapeList = SubShapeAllSorted(aShape, aType) - for ind in ListOfInd: - ListOfIDs.append(GetSubShapeID(aShape, AllShapeList[ind - 1])) - anObj = GetSubShape(aShape, ListOfIDs) - return anObj - -# ----------------------------------------------------------------------------- -# Healing operations -# ----------------------------------------------------------------------------- - -def ProcessShape(theShape, theOperators, theParameters, theValues): - """ - * Apply a sequence of Shape Healing operators to the given object. - * \param theShape Shape to be processed. - * \param theOperators List of names of operators ("FixShape", "SplitClosedFaces", etc.). - * \param theParameters List of names of parameters - * ("FixShape.Tolerance3d", "SplitClosedFaces.NbSplitPoints", etc.). - * \param theValues List of values of parameters, in the same order - * as parameters are listed in \a theParameters list. - * \return New GEOM_Object, containing processed shape. - - * Example: see GEOM_TestHealing.py - """ - anObj = HealOp.ProcessShape(theShape, theOperators, theParameters, theValues) - if HealOp.IsDone() == 0: - print "ProcessShape : ", HealOp.GetErrorCode() - return anObj - -def SuppressFaces(theObject, theFaces): - """ - * Remove faces from the given object (shape). - * \param theObject Shape to be processed. - * \param theFaces Indices of faces to be removed, if EMPTY then the method - * removes ALL faces of the given object. - * \return New GEOM_Object, containing processed shape. - - * Example: see GEOM_TestHealing.py - """ - anObj = HealOp.SuppressFaces(theObject, theFaces) - if HealOp.IsDone() == 0: - print "SuppressFaces : ", HealOp.GetErrorCode() - return anObj - -def MakeSewing(ListShape, theTolerance): - """ - * Sewing of some shapes into single shape. - - * Example: see GEOM_TestHealing.py - """ - comp = MakeCompound(ListShape) - anObj = Sew(comp, theTolerance) - return anObj - -def Sew(theObject, theTolerance): - """ - * Sewing of the given object. - * \param theObject Shape to be processed. - * \param theTolerance Required tolerance value. - * \return New GEOM_Object, containing processed shape. - - * Example: see MakeSewing() above - """ - anObj = HealOp.Sew(theObject, theTolerance) - if HealOp.IsDone() == 0: - print "Sew : ", HealOp.GetErrorCode() - return anObj - -def SuppressInternalWires(theObject, theWires): - """ - * Remove internal wires and edges from the given object (face). - * \param theObject Shape to be processed. - * \param theWires Indices of wires to be removed, if EMPTY then the method - * removes ALL internal wires of the given object. - * \return New GEOM_Object, containing processed shape. - - * Example: see GEOM_TestHealing.py - """ - anObj = HealOp.RemoveIntWires(theObject, theWires) - if HealOp.IsDone() == 0: - print "SuppressInternalWires : ", HealOp.GetErrorCode() - return anObj - -def SuppressHoles(theObject, theWires): - """ - * Remove internal closed contours (holes) from the given object. - * \param theObject Shape to be processed. - * \param theWires Indices of wires to be removed, if EMPTY then the method - * removes ALL internal holes of the given object - * \return New GEOM_Object, containing processed shape. - - * Example: see GEOM_TestHealing.py - """ - anObj = HealOp.FillHoles(theObject, theWires) - if HealOp.IsDone() == 0: - print "SuppressHoles : ", HealOp.GetErrorCode() - return anObj - -def CloseContour(theObject, theWires, isCommonVertex): - """ - * Close an open wire. - * \param theObject Shape to be processed. - * \param theWires Indexes of edge(s) and wire(s) to be closed within theObject's shape, - * if -1, then theObject itself is a wire. - * \param isCommonVertex If TRUE : closure by creation of a common vertex, - * If FALS : closure by creation of an edge between ends. - * \return New GEOM_Object, containing processed shape. - - * Example: see GEOM_TestHealing.py - """ - anObj = HealOp.CloseContour(theObject, theWires, isCommonVertex) - if HealOp.IsDone() == 0: - print "CloseContour : ", HealOp.GetErrorCode() - return anObj - -def DivideEdge(theObject, theEdgeIndex, theValue, isByParameter): - """ - * Addition of a point to a given edge object. - * \param theObject Shape to be processed. - * \param theEdgeIndex Index of edge to be divided within theObject's shape, - * if -1, then theObject itself is the edge. - * \param theValue Value of parameter on edge or length parameter, - * depending on \a isByParameter. - * \param isByParameter If TRUE : \a theValue is treated as a curve parameter [0..1], - * if FALSE : \a theValue is treated as a length parameter [0..1] - * \return New GEOM_Object, containing processed shape. - - * Example: see GEOM_TestHealing.py - """ - anObj = HealOp.DivideEdge(theObject, theEdgeIndex, theValue, isByParameter) - if HealOp.IsDone() == 0: - print "DivideEdge : ", HealOp.GetErrorCode() - return anObj - -def GetFreeBoundary(theObject): - """ - * Get a list of wires (wrapped in GEOM_Object-s), - * that constitute a free boundary of the given shape. - * \param theObject Shape to get free boundary of. - * \return [status, theClosedWires, theOpenWires] - * status: FALSE, if an error(s) occured during the method execution. - * theClosedWires: Closed wires on the free boundary of the given shape. - * theOpenWires: Open wires on the free boundary of the given shape. - - * Example: see GEOM_TestHealing.py - """ - anObj = HealOp.GetFreeBoundary(theObject) - if HealOp.IsDone() == 0: - print "GetFreeBoundaries : ", HealOp.GetErrorCode() - return anObj - -# ----------------------------------------------------------------------------- -# Create advanced objects -# ----------------------------------------------------------------------------- - -def MakeCopy(theOriginal): - """ - * Create a copy of the given object - - * Example: see GEOM_TestAll.py - """ - anObj = InsertOp.MakeCopy(theOriginal) - if InsertOp.IsDone() == 0: - print "MakeCopy : ", InsertOp.GetErrorCode() - return anObj - -def MakeFilling(theShape, theMinDeg, theMaxDeg, theTol2D, theTol3D, theNbIter): - """ - * Create a filling from the given compound of contours. - * \param theShape the compound of contours - * \param theMinDeg a minimal degree - * \param theMaxDeg a maximal degree - * \param theTol2D a 2d tolerance - * \param theTol3D a 3d tolerance - * \param theNbIter a number of iteration - * \return New GEOM_Object, containing the created filling surface. - - * Example: see GEOM_TestAll.py - """ - anObj = PrimOp.MakeFilling(theShape, theMinDeg, theMaxDeg, theTol2D, theTol3D, theNbIter) - if PrimOp.IsDone() == 0: - print "MakeFilling : ", PrimOp.GetErrorCode() - return anObj - -def MakeGlueFaces(theShape, theTolerance): - """ - * Replace coincident faces in theShape by one face. - * \param theShape Initial shape. - * \param theTolerance Maximum distance between faces, which can be considered as coincident. - * \return New GEOM_Object, containing a copy of theShape without coincident faces. - - * Example: see GEOM_Spanner.py - """ - anObj = ShapesOp.MakeGlueFaces(theShape, theTolerance) - if ShapesOp.IsDone() == 0: - print "MakeGlueFaces : ", ShapesOp.GetErrorCode() - return anObj - -# ----------------------------------------------------------------------------- -# Boolean (Common, Cut, Fuse, Section) -# ----------------------------------------------------------------------------- - -def MakeBoolean(theShape1, theShape2, theOperation): - """ - * Perform one of boolean operations on two given shapes. - * \param theShape1 First argument for boolean operation. - * \param theShape2 Second argument for boolean operation. - * \param theOperation Indicates the operation to be done: - * 1 - Common, 2 - Cut, 3 - Fuse, 4 - Section. - * \return New GEOM_Object, containing the result shape. - - * Example: see GEOM_TestAll.py - """ - anObj = BoolOp.MakeBoolean(theShape1, theShape2, theOperation) - if BoolOp.IsDone() == 0: - print "MakeBoolean : ", BoolOp.GetErrorCode() - return anObj - -def MakeCommon(s1, s2): - """ - * Shortcut to MakeBoolean(s1, s2, 1) - - * Example: see GEOM_TestOthers.py - """ - return MakeBoolean(s1, s2, 1) - -def MakeCut(s1, s2): - """ - * Shortcut to MakeBoolean(s1, s2, 2) - - * Example: see GEOM_TestOthers.py - """ - return MakeBoolean(s1, s2, 2) - -def MakeFuse(s1, s2): - """ - * Shortcut to MakeBoolean(s1, s2, 3) - - * Example: see GEOM_TestOthers.py - """ - return MakeBoolean(s1, s2, 3) - -def MakeSection(s1, s2): - """ - * Shortcut to MakeBoolean(s1, s2, 4) - - * Example: see GEOM_TestOthers.py - """ - return MakeBoolean(s1, s2, 4) - -def MakePartition(ListShapes, ListTools=[], ListKeepInside=[], ListRemoveInside=[], - Limit=ShapeType["SHAPE"], RemoveWebs=0, ListMaterials=[]): - """ - * Perform partition operation. - * \param ListShapes Shapes to be intersected. - * \param ListTools Shapes to intersect theShapes. - * \param ListKeepInside Shapes, outside which the results will be deleted. - * Each shape from theKeepInside must belong to theShapes also. - * \param ListRemoveInside Shapes, inside which the results will be deleted. - * Each shape from theRemoveInside must belong to theShapes also. - * \param Limit Type of resulting shapes (corresponding to TopAbs_ShapeEnum). - * \param RemoveWebs If TRUE, perform Glue 3D algorithm. - * \param ListMaterials Material indices for each shape. Make sence, only if theRemoveWebs is TRUE. - * \return New GEOM_Object, containing the result shapes. - - * Example: see GEOM_TestAll.py - """ - anObj = BoolOp.MakePartition(ListShapes, ListTools, - ListKeepInside, ListRemoveInside, - Limit, RemoveWebs, ListMaterials); - if BoolOp.IsDone() == 0: - print "MakePartition : ", BoolOp.GetErrorCode() - return anObj - -def Partition(ListShapes, ListTools=[], ListKeepInside=[], ListRemoveInside=[], - Limit=ShapeType["SHAPE"], RemoveWebs=0, ListMaterials=[]): - """ - * Shortcut to MakePartition() - - * Example: see GEOM_TestOthers.py - """ - anObj = MakePartition(ListShapes, ListTools, - ListKeepInside, ListRemoveInside, - Limit, RemoveWebs, ListMaterials); - return anObj - -def MakeHalfPartition(theShape, thePlane): - """ - * Perform partition of the Shape with the Plane - * \param theShape Shape to be intersected. - * \param thePlane Tool shape, to intersect theShape. - * \return New GEOM_Object, containing the result shape. - - * Example: see GEOM_TestAll.py - """ - anObj = BoolOp.MakeHalfPartition(theShape, thePlane) - if BoolOp.IsDone() == 0: - print "MakeHalfPartition : ", BoolOp.GetErrorCode() - return anObj - -# ----------------------------------------------------------------------------- -# Transform objects -# ----------------------------------------------------------------------------- - -def MakeTranslationTwoPoints(theObject, thePoint1, thePoint2): - """ - * Translate the given object along the vector, specified - * by its end points, creating its copy before the translation. - * \param theObject The object to be translated. - * \param thePoint1 Start point of translation vector. - * \param thePoint2 End point of translation vector. - * \return New GEOM_Object, containing the translated object. - - * Example: see GEOM_TestAll.py - """ - anObj = TrsfOp.TranslateTwoPointsCopy(theObject, thePoint1, thePoint2) - if TrsfOp.IsDone() == 0: - print "TranslateTwoPointsCopy : ", TrsfOp.GetErrorCode() - return anObj - -def MakeTranslation(theObject, theDX, theDY, theDZ): - """ - * Translate the given object along the vector, specified - * by its components, creating its copy before the translation. - * \param theObject The object to be translated. - * \param theDX,theDY,theDZ Components of translation vector. - * \return New GEOM_Object, containing the translated object. - - * Example: see GEOM_TestAll.py - """ - anObj = TrsfOp.TranslateDXDYDZCopy(theObject, theDX, theDY, theDZ) - if TrsfOp.IsDone() == 0: - print "TranslateDXDYDZCopy : ", TrsfOp.GetErrorCode() - return anObj - -def MakeTranslationVector(theObject, theVector): - """ - * Translate the given object along the given vector, - * creating its copy before the translation. - * \param theObject The object to be translated. - * \param theVector The translation vector. - * \return New GEOM_Object, containing the translated object. - - * Example: see GEOM_TestAll.py - """ - anObj = TrsfOp.TranslateVectorCopy(theObject, theVector) - if TrsfOp.IsDone() == 0: - print "TranslateVectorCopy : ", TrsfOp.GetErrorCode() - return anObj - -def MakeRotation(theObject, theAxis, theAngle): - """ - * Rotate the given object around the given axis - * on the given angle, creating its copy before the rotatation. - * \param theObject The object to be rotated. - * \param theAxis Rotation axis. - * \param theAngle Rotation angle in radians. - * \return New GEOM_Object, containing the rotated object. - - * Example: see GEOM_TestAll.py - """ - anObj = TrsfOp.RotateCopy(theObject, theAxis, theAngle) - if TrsfOp.IsDone() == 0: - print "RotateCopy : ", TrsfOp.GetErrorCode() - return anObj - -def MakeScaleTransform(theObject, thePoint, theFactor): - """ - * Scale the given object by the factor, creating its copy before the scaling. - * \param theObject The object to be scaled. - * \param thePoint Center point for scaling. - * \param theFactor Scaling factor value. - * \return New GEOM_Object, containing the scaled shape. - - * Example: see GEOM_TestAll.py - """ - anObj = TrsfOp.ScaleShapeCopy(theObject, thePoint, theFactor) - if TrsfOp.IsDone() == 0: - print "ScaleShapeCopy : ", TrsfOp.GetErrorCode() - return anObj - -def MakeMirrorByPlane(theObject, thePlane): - """ - * Create an object, symmetrical - * to the given one relatively the given plane. - * \param theObject The object to be mirrored. - * \param thePlane Plane of symmetry. - * \return New GEOM_Object, containing the mirrored shape. - - * Example: see GEOM_TestAll.py - """ - anObj = TrsfOp.MirrorPlaneCopy(theObject, thePlane) - if TrsfOp.IsDone() == 0: - print "MirrorPlaneCopy : ", TrsfOp.GetErrorCode() - return anObj - -def MakeMirrorByAxis(theObject, theAxis): - """ - * Create an object, symmetrical - * to the given one relatively the given axis. - * \param theObject The object to be mirrored. - * \param theAxis Axis of symmetry. - * \return New GEOM_Object, containing the mirrored shape. - - * Example: see GEOM_TestAll.py - """ - anObj = TrsfOp.MirrorAxisCopy(theObject, theAxis) - if TrsfOp.IsDone() == 0: - print "MirrorAxisCopy : ", TrsfOp.GetErrorCode() - return anObj - -def MakeMirrorByPoint(theObject, thePoint): - """ - * Create an object, symmetrical - * to the given one relatively the given point. - * \param theObject The object to be mirrored. - * \param thePoint Point of symmetry. - * \return New GEOM_Object, containing the mirrored shape. - - * Example: see GEOM_TestAll.py - """ - anObj = TrsfOp.MirrorPointCopy(theObject, thePoint) - if TrsfOp.IsDone() == 0: - print "MirrorPointCopy : ", TrsfOp.GetErrorCode() - return anObj - -def MakePosition(theObject, theStartLCS, theEndLCS): - """ - * Modify the Location of the given object by LCS - * creating its copy before the setting - - * Example: see GEOM_TestAll.py - """ - anObj = TrsfOp.PositionShapeCopy(theObject, theStartLCS, theEndLCS) - if TrsfOp.IsDone() == 0: - print "PositionShapeCopy : ", TrsfOp.GetErrorCode() - return anObj - -def MakeOffset(theObject, theOffset): - """ - * Create new object as offset of the given one. - * \param theObject The base object for the offset. - * \param theOffset Offset value. - * \return New GEOM_Object, containing the offset object. - - * Example: see GEOM_TestAll.py - """ - anObj = TrsfOp.OffsetShapeCopy(theObject, theOffset) - if TrsfOp.IsDone() == 0: - print "OffsetShapeCopy : ", TrsfOp.GetErrorCode() - return anObj - -# ----------------------------------------------------------------------------- -# Patterns -# ----------------------------------------------------------------------------- - -def MakeMultiTranslation1D(theObject, theVector, theStep, theNbTimes): - """ - * Translate the given object along the given vector a given number times - * \param theObject The object to be translated. - * \param theVector Direction of the translation. - * \param theStep Distance to translate on. - * \param theNbTimes Quantity of translations to be done. - * \return New GEOM_Object, containing compound of all - * the shapes, obtained after each translation. - - * Example: see GEOM_TestAll.py - """ - anObj = TrsfOp.MultiTranslate1D(theObject, theVector, theStep, theNbTimes) - if TrsfOp.IsDone() == 0: - print "MultiTranslate1D : ", TrsfOp.GetErrorCode() - return anObj - -def MakeMultiTranslation2D(theObject, theVector1, theStep1, theNbTimes1, - theVector2, theStep2, theNbTimes2): - """ - * Conseqently apply two specified translations to theObject specified number of times. - * \param theObject The object to be translated. - * \param theVector1 Direction of the first translation. - * \param theStep1 Step of the first translation. - * \param theNbTimes1 Quantity of translations to be done along theVector1. - * \param theVector2 Direction of the second translation. - * \param theStep2 Step of the second translation. - * \param theNbTimes2 Quantity of translations to be done along theVector2. - * \return New GEOM_Object, containing compound of all - * the shapes, obtained after each translation. - - * Example: see GEOM_TestAll.py - """ - anObj = TrsfOp.MultiTranslate2D(theObject, theVector1, theStep1, theNbTimes1, - theVector2, theStep2, theNbTimes2) - if TrsfOp.IsDone() == 0: - print "MultiTranslate2D : ", TrsfOp.GetErrorCode() - return anObj - -def MultiRotate1D(theObject, theAxis, theNbTimes): - """ - * Rotate the given object around the given axis a given number times. - * Rotation angle will be 2*PI/theNbTimes. - * \param theObject The object to be rotated. - * \param theAxis The rotation axis. - * \param theNbTimes Quantity of rotations to be done. - * \return New GEOM_Object, containing compound of all the - * shapes, obtained after each rotation. - - * Example: see GEOM_TestAll.py - """ - anObj = TrsfOp.MultiRotate1D(theObject, theAxis, theNbTimes) - if TrsfOp.IsDone() == 0: - print "MultiRotate1D : ", TrsfOp.GetErrorCode() - return anObj - -def MultiRotate2D(theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2): - """ - * Rotate the given object around the - * given axis on the given angle a given number - * times and multi-translate each rotation result. - * Translation direction passes through center of gravity - * of rotated shape and its projection on the rotation axis. - * \param theObject The object to be rotated. - * \param theAxis Rotation axis. - * \param theAngle Rotation angle in graduces. - * \param theNbTimes1 Quantity of rotations to be done. - * \param theStep Translation distance. - * \param theNbTimes2 Quantity of translations to be done. - * \return New GEOM_Object, containing compound of all the - * shapes, obtained after each transformation. - - * Example: see GEOM_TestAll.py - """ - anObj = TrsfOp.MultiRotate2D(theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2) - if TrsfOp.IsDone() == 0: - print "MultiRotate2D : ", TrsfOp.GetErrorCode() - return anObj - -def MakeMultiRotation1D(aShape,aDir,aPoint,aNbTimes): - """ - * The same, as MultiRotate1D(), but axis is given by direction and point - - * Example: see GEOM_TestOthers.py - """ - aVec = MakeLine(aPoint,aDir) - anObj = MultiRotate1D(aShape,aVec,aNbTimes) - return anObj - -def MakeMultiRotation2D(aShape,aDir,aPoint,anAngle,nbtimes1,aStep,nbtimes2): - """ - * The same, as MultiRotate2D(), but axis is given by direction and point - - * Example: see GEOM_TestOthers.py - """ - aVec = MakeLine(aPoint,aDir) - anObj = MultiRotate2D(aShape,aVec,anAngle,nbtimes1,aStep,nbtimes2) - return anObj - -# ----------------------------------------------------------------------------- -# Local operations -# ----------------------------------------------------------------------------- - -def MakeFilletAll(theShape, theR): - """ - * Perform a fillet on all edges of the given shape. - * \param theShape Shape, to perform fillet on. - * \param theR Fillet radius. - * \return New GEOM_Object, containing the result shape. - - * Example: see GEOM_TestOthers.py - """ - anObj = LocalOp.MakeFilletAll(theShape, theR) - if LocalOp.IsDone() == 0: - print "MakeFilletAll : ", LocalOp.GetErrorCode() - return anObj - -def MakeFillet(theShape, theR, theShapeType, theListShapes): - """ - * Perform a fillet on the specified edges/faces of the given shape - * \param theShape Shape, to perform fillet on. - * \param theR Fillet radius. - * \param theShapeType Type of shapes in . - * \param theListShapes Global indices of edges/faces to perform fillet on. - * \note Global index of sub-shape can be obtained, using method geompy.GetSubShapeID(). - * \return New GEOM_Object, containing the result shape. - - * Example: see GEOM_TestAll.py - """ - anObj = None - if theShapeType == ShapeType["EDGE"]: - anObj = LocalOp.MakeFilletEdges(theShape, theR, theListShapes) - else: - anObj = LocalOp.MakeFilletFaces(theShape, theR, theListShapes) - if LocalOp.IsDone() == 0: - print "MakeFillet : ", LocalOp.GetErrorCode() - return anObj - -def MakeChamferAll(theShape, theD): - """ - * Perform a symmetric chamfer on all edges of the given shape. - * \param theShape Shape, to perform chamfer on. - * \param theD Chamfer size along each face. - * \return New GEOM_Object, containing the result shape. - - * Example: see GEOM_TestOthers.py - """ - anObj = LocalOp.MakeChamferAll(theShape, theD) - if LocalOp.IsDone() == 0: - print "MakeChamferAll : ", LocalOp.GetErrorCode() - return anObj - -def MakeChamferEdge(theShape, theD1, theD2, theFace1, theFace2): - """ - * Perform a chamfer on edges, common to the specified faces, - * with distance D1 on the Face1 - * \param theShape Shape, to perform chamfer on. - * \param theD1 Chamfer size along \a theFace1. - * \param theD2 Chamfer size along \a theFace2. - * \param theFace1,theFace2 Global indices of two faces of \a theShape. - * \note Global index of sub-shape can be obtained, using method geompy.GetSubShapeID(). - * \return New GEOM_Object, containing the result shape. - - * Example: see GEOM_TestAll.py - """ - anObj = LocalOp.MakeChamferEdge(theShape, theD1, theD2, theFace1, theFace2) - if LocalOp.IsDone() == 0: - print "MakeChamferEdge : ", LocalOp.GetErrorCode() - return anObj - -def MakeChamferFaces(theShape, theD1, theD2, theFaces): - """ - * Perform a chamfer on all edges of the specified faces, - * with distance D1 on the first specified face (if several for one edge) - * \param theShape Shape, to perform chamfer on. - * \param theD1 Chamfer size along face from \a theFaces. If both faces, - * connected to the edge, are in \a theFaces, \a theD1 - * will be get along face, which is nearer to \a theFaces beginning. - * \param theD2 Chamfer size along another of two faces, connected to the edge. - * \param theFaces Sequence of global indices of faces of \a theShape. - * \note Global index of sub-shape can be obtained, using method geompy.GetSubShapeID(). - * \return New GEOM_Object, containing the result shape. - - * Example: see GEOM_TestAll.py - """ - anObj = LocalOp.MakeChamferFaces(theShape, theD1, theD2, theFaces) - if LocalOp.IsDone() == 0: - print "MakeChamferFaces : ", LocalOp.GetErrorCode() - return anObj - -def MakeChamfer(aShape,d1,d2,aShapeType,ListShape): - """ - * Shortcut to MakeChamferEdge() and MakeChamferFaces() - - * Example: see GEOM_TestOthers.py - """ - anObj = None - if aShapeType == ShapeType["EDGE"]: - anObj = MakeChamferEdge(aShape,d1,d2,ListShape[0],ListShape[1]) - else: - anObj = MakeChamferFaces(aShape,d1,d2,ListShape) - return anObj - -def Archimede(theShape, theWeight, theWaterDensity, theMeshDeflection): - """ - * Perform an Archimde operation on the given shape with given parameters. - * The object presenting the resulting face is returned - * \param theShape Shape to be put in water. - * \param theWeight Weight og the shape. - * \param theWaterDensity Density of the water. - * \param theMeshDeflection Deflection of the mesh, using to compute the section. - * \return New GEOM_Object, containing a section of \a theShape - * by a plane, corresponding to water level. - - * Example: see GEOM_TestAll.py - """ - anObj = LocalOp.MakeArchimede(theShape, theWeight, theWaterDensity, theMeshDeflection) - if LocalOp.IsDone() == 0: - print "MakeArchimede : ", LocalOp.GetErrorCode() - return anObj - -# ----------------------------------------------------------------------------- -# Information objects -# ----------------------------------------------------------------------------- - -def PointCoordinates(Point): - """ - * Get point coordinates - * \return [x, y, z] - - * Example: see GEOM_TestMeasures.py - """ - aTuple = MeasuOp.PointCoordinates(Point) - if MeasuOp.IsDone() == 0: - print "PointCoordinates : ", MeasuOp.GetErrorCode() - return aTuple - -def BasicProperties(theShape): - """ - * Get summarized length of all wires, - * area of surface and volume of the given shape. - * \param theShape Shape to define properties of. - * \return [theLength, theSurfArea, theVolume] - * theLength: Summarized length of all wires of the given shape. - * theSurfArea: Area of surface of the given shape. - * theVolume: Volume of the given shape. - - * Example: see GEOM_TestMeasures.py - """ - aTuple = MeasuOp.GetBasicProperties(theShape) - if MeasuOp.IsDone() == 0: - print "BasicProperties : ", MeasuOp.GetErrorCode() - return aTuple - -def BoundingBox(theShape): - """ - * Get parameters of bounding box of the given shape - * \param theShape Shape to obtain bounding box of. - * \return [Xmin,Xmax, Ymin,Ymax, Zmin,Zmax] - * Xmin,Xmax: Limits of shape along OX axis. - * Ymin,Ymax: Limits of shape along OY axis. - * Zmin,Zmax: Limits of shape along OZ axis. - - * Example: see GEOM_TestMeasures.py - """ - aTuple = MeasuOp.GetBoundingBox(theShape) - if MeasuOp.IsDone() == 0: - print "BoundingBox : ", MeasuOp.GetErrorCode() - return aTuple - -def Inertia(theShape): - """ - * Get inertia matrix and moments of inertia of theShape. - * \param theShape Shape to calculate inertia of. - * \return [I11,I12,I13, I21,I22,I23, I31,I32,I33, Ix,Iy,Iz] - * I(1-3)(1-3): Components of the inertia matrix of the given shape. - * Ix,Iy,Iz: Moments of inertia of the given shape. - - * Example: see GEOM_TestMeasures.py - """ - aTuple = MeasuOp.GetInertia(theShape) - if MeasuOp.IsDone() == 0: - print "Inertia : ", MeasuOp.GetErrorCode() - return aTuple - -def MinDistance(theShape1, theShape2): - """ - * Get minimal distance between the given shapes. - * \param theShape1,theShape2 Shapes to find minimal distance between. - * \return Value of the minimal distance between the given shapes. - - * Example: see GEOM_TestMeasures.py - """ - aTuple = MeasuOp.GetMinDistance(theShape1, theShape2) - if MeasuOp.IsDone() == 0: - print "MinDistance : ", MeasuOp.GetErrorCode() - return aTuple[0] - -def Tolerance(theShape): - """ - * Get min and max tolerances of sub-shapes of theShape - * \param theShape Shape, to get tolerances of. - * \return [FaceMin,FaceMax, EdgeMin,EdgeMax, VertMin,VertMax] - * FaceMin,FaceMax: Min and max tolerances of the faces. - * EdgeMin,EdgeMax: Min and max tolerances of the edges. - * VertMin,VertMax: Min and max tolerances of the vertices. - - * Example: see GEOM_TestMeasures.py - """ - aTuple = MeasuOp.GetTolerance(theShape) - if MeasuOp.IsDone() == 0: - print "Tolerance : ", MeasuOp.GetErrorCode() - return aTuple - -def WhatIs(theShape): - """ - * Obtain description of the given shape (number of sub-shapes of each type) - * \param theShape Shape to be described. - * \return Description of the given shape. - - * Example: see GEOM_TestMeasures.py - """ - aDescr = MeasuOp.WhatIs(theShape) - if MeasuOp.IsDone() == 0: - print "WhatIs : ", MeasuOp.GetErrorCode() - return aDescr - -def MakeCDG(theShape): - """ - * Get a point, situated at the centre of mass of theShape. - * \param theShape Shape to define centre of mass of. - * \return New GEOM_Object, containing the created point. - - * Example: see GEOM_TestMeasures.py - """ - anObj = MeasuOp.GetCentreOfMass(theShape) - if MeasuOp.IsDone() == 0: - print "GetCentreOfMass : ", MeasuOp.GetErrorCode() - return anObj - -def CheckShape(theShape): - """ - * Check a topology of the given shape. - * \param theShape Shape to check validity of. - * \return TRUE, if the shape "seems to be valid" from the topological point of view. - * If theShape is invalid, prints a description of problem. - - * Example: see GEOM_TestMeasures.py - """ - (IsValid, Status) = MeasuOp.CheckShape(theShape) - if MeasuOp.IsDone() == 0: - print "CheckShape : ", MeasuOp.GetErrorCode() - else: - if IsValid == 0: - print Status - return IsValid - -# ----------------------------------------------------------------------------- -# Import/Export objects -# ----------------------------------------------------------------------------- - -def Import(theFileName, theFormatName): - """ - * Import a shape from the BREP or IGES or STEP file - * (depends on given format) with given name. - * \param theFileName The file, containing the shape. - * \param theFormatName Specify format for the file reading. - * Available formats can be obtained with InsertOp.ImportTranslators() method. - * \return New GEOM_Object, containing the imported shape. - - * Example: see GEOM_TestOthers.py - """ - anObj = InsertOp.Import(theFileName, theFormatName) - if InsertOp.IsDone() == 0: - print "Import : ", InsertOp.GetErrorCode() - return anObj - -def ImportBREP(theFileName): - """ - * Shortcut to Import() for BREP format - - * Example: see GEOM_TestOthers.py - """ - return Import(theFileName, "BREP") - -def ImportIGES(theFileName): - """ - * Shortcut to Import() for IGES format - - * Example: see GEOM_TestOthers.py - """ - return Import(theFileName, "IGES") - -def ImportSTEP(theFileName): - """ - * Shortcut to Import() for STEP format - - * Example: see GEOM_TestOthers.py - """ - return Import(theFileName, "STEP") - -def Export(theObject, theFileName, theFormatName): - """ - * Export the given shape into a file with given name. - * \param theObject Shape to be stored in the file. - * \param theFileName Name of the file to store the given shape in. - * \param theFormatName Specify format for the shape storage. - * Available formats can be obtained with InsertOp.ImportTranslators() method. - - * Example: see GEOM_TestOthers.py - """ - InsertOp.Export(theObject, theFileName, theFormatName) - if InsertOp.IsDone() == 0: - print "Export : ", InsertOp.GetErrorCode() - -def ExportBREP(theObject, theFileName): - """ - * Shortcut to Export() for BREP format - - * Example: see GEOM_TestOthers.py - """ - return Export(theObject, theFileName, "BREP") - -def ExportIGES(theObject, theFileName): - """ - * Shortcut to Export() for IGES format - - * Example: see GEOM_TestOthers.py - """ - return Export(theObject, theFileName, "IGES") - -def ExportSTEP(theObject, theFileName): - """ - * Shortcut to Export() for STEP format - - * Example: see GEOM_TestOthers.py - """ - return Export(theObject, theFileName, "STEP") - -# ----------------------------------------------------------------------------- -# Block operations -# ----------------------------------------------------------------------------- - -def MakeQuad(E1, E2, E3, E4): - """ - * Create a quadrangle face from four edges. Order of Edges is not - * important. It is not necessary that edges share the same vertex. - * \param E1,E2,E3,E4 Edges for the face bound. - * \return New GEOM_Object, containing the created face. - - * Example: see GEOM_Spanner.py - """ - anObj = BlocksOp.MakeQuad(E1, E2, E3, E4) - if BlocksOp.IsDone() == 0: - print "MakeQuad : ", BlocksOp.GetErrorCode() - return anObj - -def MakeQuad2Edges(E1, E2): - """ - * Create a quadrangle face on two edges. - * The missing edges will be built by creating the shortest ones. - * \param E1,E2 Two opposite edges for the face. - * \return New GEOM_Object, containing the created face. - - * Example: see GEOM_Spanner.py - """ - anObj = BlocksOp.MakeQuad2Edges(E1, E2) - if BlocksOp.IsDone() == 0: - print "MakeQuad2Edges : ", BlocksOp.GetErrorCode() - return anObj - -def MakeQuad4Vertices(V1, V2, V3, V4): - """ - * Create a quadrangle face with specified corners. - * The missing edges will be built by creating the shortest ones. - * \param V1,V2,V3,V4 Corner vertices for the face. - * \return New GEOM_Object, containing the created face. - - * Example: see GEOM_Spanner.py - """ - anObj = BlocksOp.MakeQuad4Vertices(V1, V2, V3, V4) - if BlocksOp.IsDone() == 0: - print "MakeQuad4Vertices : ", BlocksOp.GetErrorCode() - return anObj - -def MakeHexa(F1, F2, F3, F4, F5, F6): - """ - * Create a hexahedral solid, bounded by the six given faces. Order of - * faces is not important. It is not necessary that Faces share the same edge. - * \param F1,F2,F3,F4,F5,F6 Faces for the hexahedral solid. - * \return New GEOM_Object, containing the created solid. - - * Example: see GEOM_Spanner.py - """ - anObj = BlocksOp.MakeHexa(F1, F2, F3, F4, F5, F6) - if BlocksOp.IsDone() == 0: - print "MakeHexa : ", BlocksOp.GetErrorCode() - return anObj - -def MakeHexa2Faces(F1, F2): - """ - * Create a hexahedral solid between two given faces. - * The missing faces will be built by creating the smallest ones. - * \param F1,F2 Two opposite faces for the hexahedral solid. - * \return New GEOM_Object, containing the created solid. - - * Example: see GEOM_Spanner.py - """ - anObj = BlocksOp.MakeHexa2Faces(F1, F2) - if BlocksOp.IsDone() == 0: - print "MakeHexa2Faces : ", BlocksOp.GetErrorCode() - return anObj - -def GetPoint(theShape, theX, theY, theZ, theEpsilon): - """ - * Get a vertex, found in the given shape by its coordinates. - * \param theShape Block or a compound of blocks. - * \param theX,theY,theZ Coordinates of the sought vertex. - * \param theEpsilon Maximum allowed distance between the resulting - * vertex and point with the given coordinates. - * \return New GEOM_Object, containing the found vertex. - - * Example: see GEOM_TestOthers.py - """ - anObj = BlocksOp.GetPoint(theShape, theX, theY, theZ, theEpsilon) - if BlocksOp.IsDone() == 0: - print "GetPoint : ", BlocksOp.GetErrorCode() - return anObj - -def GetEdge(theShape, thePoint1, thePoint2): - """ - * Get an edge, found in the given shape by two given vertices. - * \param theShape Block or a compound of blocks. - * \param thePoint1,thePoint2 Points, close to the ends of the desired edge. - * \return New GEOM_Object, containing the found edge. - - * Example: see GEOM_Spanner.py - """ - anObj = BlocksOp.GetEdge(theShape, thePoint1, thePoint2) - if BlocksOp.IsDone() == 0: - print "GetEdge : ", BlocksOp.GetErrorCode() - return anObj - -def GetEdgeNearPoint(theShape, thePoint): - """ - * Find an edge of the given shape, which has minimal distance to the given point. - * \param theShape Block or a compound of blocks. - * \param thePoint Point, close to the desired edge. - * \return New GEOM_Object, containing the found edge. - - * Example: see GEOM_TestOthers.py - """ - anObj = BlocksOp.GetEdgeNearPoint(theShape, thePoint) - if BlocksOp.IsDone() == 0: - print "GetEdgeNearPoint : ", BlocksOp.GetErrorCode() - return anObj - -def GetFaceByPoints(theShape, thePoint1, thePoint2, thePoint3, thePoint4): - """ - * Returns a face, found in the given shape by four given corner vertices. - * \param theShape Block or a compound of blocks. - * \param thePoint1-thePoint4 Points, close to the corners of the desired face. - * \return New GEOM_Object, containing the found face. - - * Example: see GEOM_Spanner.py - """ - anObj = BlocksOp.GetFaceByPoints(theShape, thePoint1, thePoint2, thePoint3, thePoint4) - if BlocksOp.IsDone() == 0: - print "GetFaceByPoints : ", BlocksOp.GetErrorCode() - return anObj - -def GetFaceByEdges(theShape, theEdge1, theEdge2): - """ - * Get a face of block, found in the given shape by two given edges. - * \param theShape Block or a compound of blocks. - * \param theEdge1,theEdge2 Edges, close to the edges of the desired face. - * \return New GEOM_Object, containing the found face. - - * Example: see GEOM_Spanner.py - """ - anObj = BlocksOp.GetFaceByEdges(theShape, theEdge1, theEdge2) - if BlocksOp.IsDone() == 0: - print "GetFaceByEdges : ", BlocksOp.GetErrorCode() - return anObj - -def GetOppositeFace(theBlock, theFace): - """ - * Find a face, opposite to the given one in the given block. - * \param theBlock Must be a hexahedral solid. - * \param theFace Face of \a theBlock, opposite to the desired face. - * \return New GEOM_Object, containing the found face. - - * Example: see GEOM_Spanner.py - """ - anObj = BlocksOp.GetOppositeFace(theBlock, theFace) - if BlocksOp.IsDone() == 0: - print "GetOppositeFace : ", BlocksOp.GetErrorCode() - return anObj - -def GetFaceNearPoint(theShape, thePoint): - """ - * Find a face of the given shape, which has minimal distance to the given point. - * \param theShape Block or a compound of blocks. - * \param thePoint Point, close to the desired face. - * \return New GEOM_Object, containing the found face. - - * Example: see GEOM_Spanner.py - """ - anObj = BlocksOp.GetFaceNearPoint(theShape, thePoint) - if BlocksOp.IsDone() == 0: - print "GetFaceNearPoint : ", BlocksOp.GetErrorCode() - return anObj - -def GetFaceByNormale(theBlock, theVector): - """ - * Find a face of block, whose outside normale has minimal angle with the given vector. - * \param theShape Block or a compound of blocks. - * \param theVector Vector, close to the normale of the desired face. - * \return New GEOM_Object, containing the found face. - - * Example: see GEOM_Spanner.py - """ - anObj = BlocksOp.GetFaceByNormale(theBlock, theVector) - if BlocksOp.IsDone() == 0: - print "GetFaceByNormale : ", BlocksOp.GetErrorCode() - return anObj - -def CheckCompoundOfBlocks(theCompound): - """ - * Check, if the compound of blocks is given. - * To be considered as a compound of blocks, the - * given shape must satisfy the following conditions: - * - Each element of the compound should be a Block (6 faces and 12 edges). - * - A connection between two Blocks should be an entire quadrangle face or an entire edge. - * - The compound should be connexe. - * - The glue between two quadrangle faces should be applied. - * \param theCompound The compound to check. - * \return TRUE, if the given shape is a compound of blocks. - * If theCompound is not valid, prints all discovered errors. - - * Example: see GEOM_Spanner.py - """ - (IsValid, BCErrors) = BlocksOp.CheckCompoundOfBlocks(theCompound) - if BlocksOp.IsDone() == 0: - print "CheckCompoundOfBlocks : ", BlocksOp.GetErrorCode() - else: - if IsValid == 0: - Descr = BlocksOp.PrintBCErrors(theCompound, BCErrors) - print Descr - return IsValid - -def RemoveExtraEdges(theShape): - """ - * Remove all seam and degenerated edges from \a theShape. - * Unite faces and edges, sharing one surface. - * \param theShape The compound or single solid to remove irregular edges from. - * \return Improved shape. - - * Example: see GEOM_TestOthers.py - """ - anObj = BlocksOp.RemoveExtraEdges(theShape) - if BlocksOp.IsDone() == 0: - print "RemoveExtraEdges : ", BlocksOp.GetErrorCode() - return anObj - -def CheckAndImprove(theShape): - """ - * Check, if the given shape is a blocks compound. - * Fix all detected errors. - * \note Single block can be also fixed by this method. - * \param theCompound The compound to check and improve. - * \return Improved compound. - - * Example: see GEOM_TestOthers.py - """ - anObj = BlocksOp.CheckAndImprove(theShape) - if BlocksOp.IsDone() == 0: - print "CheckAndImprove : ", BlocksOp.GetErrorCode() - return anObj - -def MakeBlockExplode(theCompound, theMinNbFaces, theMaxNbFaces): - """ - * Get all the blocks, contained in the given compound. - * \param theCompound The compound to explode. - * \param theMinNbFaces If solid has lower number of faces, it is not a block. - * \param theMaxNbFaces If solid has higher number of faces, it is not a block. - * \note If theMaxNbFaces = 0, the maximum number of faces is not restricted. - * \return List of GEOM_Objects, containing the retrieved blocks. - - * Example: see GEOM_TestOthers.py - """ - aList = BlocksOp.ExplodeCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces) - if BlocksOp.IsDone() == 0: - print "MakeBlockExplode : ", BlocksOp.GetErrorCode() - return aList - -def GetBlockNearPoint(theCompound, thePoint): - """ - * Find block, containing the given point inside its volume or on boundary. - * \param theCompound Compound, to find block in. - * \param thePoint Point, close to the desired block. If the point lays on - * boundary between some blocks, we return block with nearest center. - * \return New GEOM_Object, containing the found block. - - * Example: see GEOM_Spanner.py - """ - anObj = BlocksOp.GetBlockNearPoint(theCompound, thePoint) - if BlocksOp.IsDone() == 0: - print "GetBlockNearPoint : ", BlocksOp.GetErrorCode() - return anObj - -def GetBlockByParts(theCompound, theParts): - """ - * Find block, containing all the elements, passed as the parts, or maximum quantity of them. - * \param theCompound Compound, to find block in. - * \param theParts List of faces and/or edges and/or vertices to be parts of the found block. - * \return New GEOM_Object, containing the found block. - - * Example: see GEOM_TestOthers.py - """ - anObj = BlocksOp.GetBlockByParts(theCompound, theParts) - if BlocksOp.IsDone() == 0: - print "GetBlockByParts : ", BlocksOp.GetErrorCode() - return anObj - -def GetBlocksByParts(theCompound, theParts): - """ - * Return all blocks, containing all the elements, passed as the parts. - * \param theCompound Compound, to find blocks in. - * \param theParts List of faces and/or edges and/or vertices to be parts of the found blocks. - * \return List of GEOM_Objects, containing the found blocks. - - * Example: see GEOM_Spanner.py - """ - aList = BlocksOp.GetBlocksByParts(theCompound, theParts) - if BlocksOp.IsDone() == 0: - print "GetBlocksByParts : ", BlocksOp.GetErrorCode() - return aList - -def MakeMultiTransformation1D(Block, DirFace1, DirFace2, NbTimes): - """ - * Multi-transformate block and glue the result. - * Transformation is defined so, as to superpose direction faces. - * \param Block Hexahedral solid to be multi-transformed. - * \param DirFace1 ID of First direction face. - * \param DirFace2 ID of Second direction face. - * \param NbTimes Quantity of transformations to be done. - * \note Unique ID of sub-shape can be obtained, using method GetSubShapeID(). - * \return New GEOM_Object, containing the result shape. - - * Example: see GEOM_Spanner.py - """ - anObj = BlocksOp.MakeMultiTransformation1D(Block, DirFace1, DirFace2, NbTimes) - if BlocksOp.IsDone() == 0: - print "MakeMultiTransformation1D : ", BlocksOp.GetErrorCode() - return anObj - -def MakeMultiTransformation2D(Block, DirFace1U, DirFace2U, NbTimesU, - DirFace1V, DirFace2V, NbTimesV): - """ - * Multi-transformate block and glue the result. - * \param Block Hexahedral solid to be multi-transformed. - * \param DirFace1U,DirFace2U IDs of Direction faces for the first transformation. - * \param DirFace1V,DirFace2V IDs of Direction faces for the second transformation. - * \param NbTimesU,NbTimesV Quantity of transformations to be done. - * \return New GEOM_Object, containing the result shape. - - * Example: see GEOM_Spanner.py - """ - anObj = BlocksOp.MakeMultiTransformation2D(Block, DirFace1U, DirFace2U, NbTimesU, - DirFace1V, DirFace2V, NbTimesV) - if BlocksOp.IsDone() == 0: - print "MakeMultiTransformation2D : ", BlocksOp.GetErrorCode() - return anObj - -def Propagate(theShape): - """ - * Build all possible propagation groups. - * Propagation group is a set of all edges, opposite to one (main) - * edge of this group directly or through other opposite edges. - * Notion of Opposite Edge make sence only on quadrangle face. - * \param theShape Shape to build propagation groups on. - * \return List of GEOM_Objects, each of them is a propagation group. - - * Example: see GEOM_TestOthers.py - """ - listChains = BlocksOp.Propagate(theShape) - if BlocksOp.IsDone() == 0: - print "Propagate : ", BlocksOp.GetErrorCode() - return listChains - -# ----------------------------------------------------------------------------- -# Group operations -# ----------------------------------------------------------------------------- - -def CreateGroup(theMainShape, theShapeType): - """ - * Creates a new group which will store sub shapes of theMainShape - * \param theMainShape is a GEOM object on which the group is selected - * \param theShapeType defines a shape type of the group - * \return a newly created GEOM group - - * Example: see GEOM_TestOthers.py - """ - anObj = GroupOp.CreateGroup(theMainShape, theShapeType) - if GroupOp.IsDone() == 0: - print "CreateGroup : ", GroupOp.GetErrorCode() - return anObj - -def AddObject(theGroup, theSubShapeID): - """ - * Adds a sub object with ID theSubShapeId to the group - * \param theGroup is a GEOM group to which the new sub shape is added - * \param theSubShapeID is a sub shape ID in the main object. - * \note Use method GetSubShapeID() to get an unique ID of the sub shape - - * Example: see GEOM_TestOthers.py - """ - GroupOp.AddObject(theGroup, theSubShapeID) - if GroupOp.IsDone() == 0: - print "AddObject : ", GroupOp.GetErrorCode() - -def RemoveObject(theGroup, theSubShapeID): - """ - * Removes a sub object with ID \a theSubShapeId from the group - * \param theGroup is a GEOM group from which the new sub shape is removed - * \param theSubShapeID is a sub shape ID in the main object. - * \note Use method GetSubShapeID() to get an unique ID of the sub shape - - * Example: see GEOM_TestOthers.py - """ - GroupOp.RemoveObject(theGroup, theSubShapeID) - if GroupOp.IsDone() == 0: - print "RemoveObject : ", GroupOp.GetErrorCode() - -def UnionList (theGroup, theSubShapes): - """ - * Adds to the group all the given shapes. No errors, if some shapes are alredy included. - * \param theGroup is a GEOM group to which the new sub shapes are added. - * \param theSubShapes is a list of sub shapes to be added. - - * Example: see GEOM_TestOthers.py - """ - GroupOp.UnionList(theGroup, theSubShapes) - if GroupOp.IsDone() == 0: - print "UnionList : ", GroupOp.GetErrorCode() - -def DifferenceList (theGroup, theSubShapes): - """ - * Removes from the group all the given shapes. No errors, if some shapes are not included. - * \param theGroup is a GEOM group from which the sub-shapes are removed. - * \param theSubShapes is a list of sub-shapes to be removed. - - * Example: see GEOM_TestOthers.py - """ - GroupOp.DifferenceList(theGroup, theSubShapes) - if GroupOp.IsDone() == 0: - print "DifferenceList : ", GroupOp.GetErrorCode() - -def GetObjectIDs(theGroup): - """ - * Returns a list of sub objects ID stored in the group - * \param theGroup is a GEOM group for which a list of IDs is requested - - * Example: see GEOM_TestOthers.py - """ - ListIDs = GroupOp.GetObjects(theGroup) - if GroupOp.IsDone() == 0: - print "GetObjectIDs : ", GroupOp.GetErrorCode() - return ListIDs - -def GetType(theGroup): - """ - * Returns a type of sub objects stored in the group - * \param theGroup is a GEOM group which type is returned. - - * Example: see GEOM_TestOthers.py - """ - aType = GroupOp.GetType(theGroup) - if GroupOp.IsDone() == 0: - print "GetType : ", GroupOp.GetErrorCode() - return aType - -def GetMainShape(theGroup): - """ - * Returns a main shape associated with the group - * \param theGroup is a GEOM group for which a main shape object is requested - * \return a GEOM object which is a main shape for theGroup - - * Example: see GEOM_TestOthers.py - """ - anObj = GroupOp.GetMainShape(theGroup) - if GroupOp.IsDone() == 0: - print "GetMainShape : ", GroupOp.GetErrorCode() - return anObj - -def GetEdgesByLength (theShape, min_length, max_length, include_min = 1, include_max = 1): - """ - Create group of edges of theShape, whose length is in range [min_length, max_length]. - If include_min/max == 0, edges with length == min/max_length will not be included in result. - """ - - edges = SubShapeAll(theShape, ShapeType["EDGE"]) - edges_in_range = [] - for edge in edges: - Props = BasicProperties(edge) - if min_length <= Props[0] and Props[0] <= max_length: - if (not include_min) and (min_length == Props[0]): - skip = 1 - else: - if (not include_max) and (Props[0] == max_length): - skip = 1 - else: - edges_in_range.append(edge) - - if len(edges_in_range) <= 0: - print "No edges found by given criteria" - return 0 - - group_edges = CreateGroup(theShape, ShapeType["EDGE"]) - UnionList(group_edges, edges_in_range) - - return group_edges - -def SelectEdges (min_length, max_length, include_min = 1, include_max = 1): - """ - Create group of edges of selected shape, whose length is in range [min_length, max_length]. - If include_min/max == 0, edges with length == min/max_length will not be included in result. - """ - - nb_selected = sg.SelectedCount() - if nb_selected < 1: - print "Select a shape before calling this function, please." - return 0 - if nb_selected > 1: - print "Only one shape must be selected" - return 0 - - id_shape = sg.getSelected(0) - shape = IDToObject( id_shape ) - - group_edges = GetEdgesByLength(shape, min_length, max_length, include_min, include_max) - - left_str = " < " - right_str = " < " - if include_min: left_str = " <= " - if include_max: right_str = " <= " - - addToStudyInFather(shape, group_edges, "Group of edges with " + `min_length` - + left_str + "length" + right_str + `max_length`) - - sg.updateObjBrowser(1) - - return group_edges - -def addPath(Path): - """ - * Add Path to load python scripts from - """ - if (sys.path.count(Path) < 1): - sys.path.append(Path) diff --git a/src/GEOM_SWIG/libGEOM_Swig.i b/src/GEOM_SWIG/libGEOM_Swig.i deleted file mode 100644 index 319010cd3..000000000 --- a/src/GEOM_SWIG/libGEOM_Swig.i +++ /dev/null @@ -1,12 +0,0 @@ -// File : libGeometry_Swig.i -// Created : Tue Mar 26 15:04:48 2002 -// Author : Nicolas REJNERI, Paul RASCLE -// Project : SALOME -// Module : GEOM -// Copyright : Open CASCADE, EDF 2002 -// $Header$ - -%module libGEOM_Swig - -%include "GeometryGUI_Swig.i" - diff --git a/src/GenerationGUI/GenerationGUI.cxx b/src/GenerationGUI/GenerationGUI.cxx deleted file mode 100644 index 4d52198f5..000000000 --- a/src/GenerationGUI/GenerationGUI.cxx +++ /dev/null @@ -1,112 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GenerationGUI.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header$ - -#include "GenerationGUI.h" - -#include "SUIT_Session.h" -#include "SUIT_Desktop.h" - -#include "GenerationGUI_PrismDlg.h" // Method PRISM -#include "GenerationGUI_RevolDlg.h" // Method REVOL -#include "GenerationGUI_FillingDlg.h" // Method FILLING -#include "GenerationGUI_PipeDlg.h" // Method PIPE - -using namespace std; - -GenerationGUI* GenerationGUI::myGUIObject = 0; - -//======================================================================= -// function : GetGenerationGUI() -// purpose : Get the only GenerationGUI object [ static ] -//======================================================================= -GenerationGUI* GenerationGUI::GetGenerationGUI(GeometryGUI* parent) -{ - if ( myGUIObject == 0 ) - myGUIObject = new GenerationGUI(parent); - - return myGUIObject; -} - -//======================================================================= -// function : GenerationGUI() -// purpose : Constructor -//======================================================================= -GenerationGUI::GenerationGUI(GeometryGUI* parent) : GEOMGUI(parent) -{ -} - - -//======================================================================= -// function : ~GenerationGUI() -// purpose : Destructor -//======================================================================= -GenerationGUI::~GenerationGUI() -{ -} - - -//======================================================================= -// function : OnGUIEvent() -// purpose : -//======================================================================= -bool GenerationGUI::OnGUIEvent( int theCommandID, SUIT_Desktop* parent ) -{ - getGeometryGUI()->EmitSignalDeactivateDialog(); - - QDialog* aDlg = NULL; - - switch ( theCommandID ) - { - case 4031: aDlg = new GenerationGUI_PrismDlg ( getGeometryGUI(), parent, ""); break; - case 4032: aDlg = new GenerationGUI_RevolDlg ( getGeometryGUI(), parent, ""); break; - case 4033: aDlg = new GenerationGUI_FillingDlg ( getGeometryGUI(), parent, ""); break; - case 4034: aDlg = new GenerationGUI_PipeDlg ( parent, ""); break; - - default: SUIT_Session::session()->activeApplication()->putInfo( tr( "GEOM_PRP_COMMAND" ).arg( theCommandID ) ); break; - } - - if ( aDlg != NULL ) - aDlg->show(); - - return true; -} - - -//===================================================================================== -// EXPORTED METHODS -//===================================================================================== -extern "C" -{ -#ifdef WNT - __declspec( dllexport ) -#endif - GEOMGUI* GetLibGUI(GeometryGUI* parent) - { - return GenerationGUI::GetGenerationGUI(parent); - } -} diff --git a/src/GenerationGUI/GenerationGUI.h b/src/GenerationGUI/GenerationGUI.h deleted file mode 100644 index eb5562848..000000000 --- a/src/GenerationGUI/GenerationGUI.h +++ /dev/null @@ -1,55 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GenerationGUI.h -// Author : Damien COQUERET -// Module : GEOM -// $Header$ - -#ifndef GENERATIONGUI_H -#define GENERATIONGUI_H - -#include "GEOMGUI.h" - -//================================================================================= -// class : GenerationGUI -// purpose : -//================================================================================= -class GenerationGUI : public GEOMGUI -{ -protected: - GenerationGUI(GeometryGUI* parent); // hide constructor to avoid direct creation - -public : - ~GenerationGUI(); - - // Get the only GenerationGUI object - static GenerationGUI* GetGenerationGUI(GeometryGUI* parent); - - bool OnGUIEvent( int theCommandID, SUIT_Desktop* parent ); - -private: - static GenerationGUI* myGUIObject; // the only GenerationGUI object -}; - -#endif diff --git a/src/GenerationGUI/GenerationGUI_FillingDlg.cxx b/src/GenerationGUI/GenerationGUI_FillingDlg.cxx deleted file mode 100644 index 6987ad088..000000000 --- a/src/GenerationGUI/GenerationGUI_FillingDlg.cxx +++ /dev/null @@ -1,345 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GenerationGUI_FillingDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "GenerationGUI_FillingDlg.h" - -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "GEOMImpl_Types.hxx" - -#include - -#include "utilities.h" - -//================================================================================= -// class : GenerationGUI_FillingDlg() -// purpose : Constructs a GenerationGUI_FillingDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -GenerationGUI_FillingDlg::GenerationGUI_FillingDlg(GeometryGUI* theGeometryGUI, QWidget* parent, - const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, - WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu), - myGeometryGUI(theGeometryGUI) -{ - QPixmap image0 (SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM", tr("ICON_DLG_FILLING"))); - QPixmap image1 (SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM", tr("ICON_SELECT"))); - - setCaption(tr("GEOM_FILLING_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_FILLING")); - RadioButton1->setPixmap(image0); - RadioButton2->close(TRUE); - RadioButton3->close(TRUE); - - GroupPoints = new DlgRef_1Sel5Spin(this, "GroupPoints"); - GroupPoints->GroupBox1->setTitle(tr("GEOM_ARGUMENTS")); - GroupPoints->TextLabel1->setText(tr("GEOM_FILLING_COMPOUND")); - GroupPoints->TextLabel2->setText(tr("GEOM_FILLING_MIN_DEG")); - GroupPoints->TextLabel3->setText(tr("GEOM_FILLING_TOL_2D")); - GroupPoints->TextLabel4->setText(tr("GEOM_FILLING_NB_ITER")); - GroupPoints->TextLabel5->setText(tr("GEOM_FILLING_MAX_DEG")); - GroupPoints->TextLabel6->setText(tr("GEOM_FILLING_TOL_3D")); - GroupPoints->PushButton1->setPixmap(image1); - GroupPoints->LineEdit1->setReadOnly( true ); - - Layout1->addWidget(GroupPoints, 2, 0); - /***************************************************************/ - - /* Initialisations */ - Init(); -} - -//================================================================================= -// function : ~GenerationGUI_FillingDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -GenerationGUI_FillingDlg::~GenerationGUI_FillingDlg() -{ - // no need to delete child widgets, Qt does it all for us -} - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void GenerationGUI_FillingDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = GroupPoints->LineEdit1; - GroupPoints->LineEdit1->setReadOnly( true ); - - myMinDeg = 2; - myMaxDeg = 5; - myTol3D = 0.0001; - myTol2D = 0.0001; - myNbIter = 5; - myOkCompound = false; - - globalSelection( GEOM_COMPOUND ); - - double SpecificStep1 = 1; - double SpecificStep2 = 0.0001; - /* min, max, step and decimals for spin boxes & initial values */ - GroupPoints->SpinBox_1->RangeStepAndValidator(2.0, 999.999, SpecificStep1, 3); - GroupPoints->SpinBox_2->RangeStepAndValidator(0.00001, 10000.0, SpecificStep2, 5); - GroupPoints->SpinBox_3->RangeStepAndValidator(1.0, 999.999, SpecificStep1, 3); - GroupPoints->SpinBox_4->RangeStepAndValidator(1.0, 999.999, SpecificStep1, 3); - GroupPoints->SpinBox_5->RangeStepAndValidator(0.00001, 10000.0, SpecificStep2, 5); - - GroupPoints->SpinBox_1->SetValue(myMinDeg); - GroupPoints->SpinBox_2->SetValue(myTol2D); - GroupPoints->SpinBox_3->SetValue(myNbIter); - GroupPoints->SpinBox_4->SetValue(myMaxDeg); - GroupPoints->SpinBox_5->SetValue(myTol3D); - - /* signals and slots connections */ - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - - connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect(GroupPoints->SpinBox_1, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - connect(GroupPoints->SpinBox_2, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - connect(GroupPoints->SpinBox_3, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - connect(GroupPoints->SpinBox_4, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - connect(GroupPoints->SpinBox_5, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupPoints->SpinBox_1, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupPoints->SpinBox_2, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupPoints->SpinBox_3, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupPoints->SpinBox_4, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupPoints->SpinBox_5, SLOT(SetStep(double))); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - - initName(tr("GEOM_FILLING")); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void GenerationGUI_FillingDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool GenerationGUI_FillingDlg::ClickOnApply() -{ - if ( !onAccept() ) - return false; - - initName(); - return true; -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection as changed or other case -//================================================================================= -void GenerationGUI_FillingDlg::SelectionIntoArgument() -{ - erasePreview(); - myEditCurrentArgument->setText(""); - - if(IObjectCount() != 1) { - if(myEditCurrentArgument == GroupPoints->LineEdit1) - myOkCompound = false; - return; - } - - // nbSel == 1 - Standard_Boolean testResult = Standard_False; - GEOM::GEOM_Object_ptr aSelectedObject = GEOMBase::ConvertIOinGEOMObject(firstIObject(), testResult ); - - if (!testResult) - return; - - if(myEditCurrentArgument == GroupPoints->LineEdit1) { - TopoDS_Shape S; - myOkCompound = false; - - if ( GEOMBase::GetShape(aSelectedObject, S) && - S.ShapeType() == TopAbs_COMPOUND) - { - // myCompound should be a compound of edges - for ( TopoDS_Iterator it( S ); it.More(); it.Next() ) - if ( it.Value().ShapeType() != TopAbs_EDGE ) - return; - myCompound = aSelectedObject; - myOkCompound = true; - } - } - - myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) ); - displayPreview(); -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void GenerationGUI_FillingDlg::SetEditCurrentArgument() -{ - QPushButton* send = (QPushButton*)sender(); - globalSelection( GEOM_ALLSHAPES ); - - if(send == GroupPoints->PushButton1) { - GroupPoints->LineEdit1->setFocus(); - myEditCurrentArgument = GroupPoints->LineEdit1; - globalSelection( GEOM_COMPOUND ); - this->SelectionIntoArgument(); - } -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void GenerationGUI_FillingDlg::LineEditReturnPressed() -{ - QLineEdit* send = (QLineEdit*)sender(); - if(send == GroupPoints->LineEdit1) - { - myEditCurrentArgument = send; - GEOMBase_Skeleton::LineEditReturnPressed(); - } -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void GenerationGUI_FillingDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - globalSelection( GEOM_COMPOUND ); - displayPreview(); -} - - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void GenerationGUI_FillingDlg::enterEvent(QEvent* e) -{ - if ( !GroupConstructors->isEnabled() ) - ActivateThisDialog(); -} - - -//================================================================================= -// function : ValueChangedInSpinBox() -// purpose : -//================================================================================= -void GenerationGUI_FillingDlg::ValueChangedInSpinBox(double newValue) -{ - QObject* send = (QObject*)sender(); - - if(send == GroupPoints->SpinBox_1) - myMinDeg = int(newValue); - else if(send == GroupPoints->SpinBox_2) - myTol2D = newValue; - else if(send == GroupPoints->SpinBox_3) - myNbIter = int(newValue); - else if(send == GroupPoints->SpinBox_4) - myMaxDeg = int(newValue); - else if(send == GroupPoints->SpinBox_5) - myTol3D = newValue; - - displayPreview(); -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr GenerationGUI_FillingDlg::createOperation() -{ - return getGeomEngine()->GetI3DPrimOperations( getStudyId() ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool GenerationGUI_FillingDlg::isValid( QString& ) -{ - return myOkCompound > 0; -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool GenerationGUI_FillingDlg::execute( ObjectList& objects ) -{ - GEOM::GEOM_Object_var anObj; - - anObj = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation() )->MakeFilling( - myCompound, myMinDeg, myMaxDeg, myTol2D, myTol3D, myNbIter ); - - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - - return true; -} diff --git a/src/GenerationGUI/GenerationGUI_FillingDlg.h b/src/GenerationGUI/GenerationGUI_FillingDlg.h deleted file mode 100644 index d562c5275..000000000 --- a/src/GenerationGUI/GenerationGUI_FillingDlg.h +++ /dev/null @@ -1,80 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GenerationGUI_FillingDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_FILLING_H -#define DIALOGBOX_FILLING_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_1Sel5Spin.h" - -//================================================================================= -// class : GenerationGUI_FillingDlg -// purpose : -//================================================================================= -class GenerationGUI_FillingDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - GenerationGUI_FillingDlg(GeometryGUI* theGeometryGUI, QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~GenerationGUI_FillingDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& msg ); - virtual bool execute( ObjectList& objects ); - -private: - void Init(); - void enterEvent(QEvent* e); - - GeometryGUI* myGeometryGUI; - - GEOM::GEOM_Object_var myCompound; /* compound of curves */ - Standard_Integer myMinDeg; - Standard_Integer myMaxDeg; - Standard_Real myTol3D; - Standard_Real myTol2D; - Standard_Integer myNbIter; - bool myOkCompound; /* to check when curv. compound is defined */ - - DlgRef_1Sel5Spin* GroupPoints; - -private slots: - void ClickOnOk(); - bool ClickOnApply(); - void ActivateThisDialog(); - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - void ValueChangedInSpinBox(double newValue); - -}; - -#endif // DIALOGBOX_FILLING_H diff --git a/src/GenerationGUI/GenerationGUI_PipeDlg.cxx b/src/GenerationGUI/GenerationGUI_PipeDlg.cxx deleted file mode 100644 index 9a59cda5e..000000000 --- a/src/GenerationGUI/GenerationGUI_PipeDlg.cxx +++ /dev/null @@ -1,308 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GenerationGUI_PipeDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "GenerationGUI_PipeDlg.h" - -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include - -#include -#include -#include -#if OCC_VERSION_MAJOR >= 5 -#include -#else -#include -#endif - -#include "GEOMImpl_Types.hxx" - -#include "utilities.h" - -//================================================================================= -// class : GenerationGUI_PipeDlg() -// purpose : Constructs a GenerationGUI_PipeDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -GenerationGUI_PipeDlg::GenerationGUI_PipeDlg(QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_PIPE"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_PIPE_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_PIPE")); - RadioButton1->setPixmap(image0); - RadioButton2->close(TRUE); - RadioButton3->close(TRUE); - - GroupPoints = new DlgRef_2Sel_QTD(this, "GroupPoints"); - GroupPoints->GroupBox1->setTitle(tr("GEOM_ARGUMENTS")); - GroupPoints->TextLabel1->setText(tr("GEOM_BASE_OBJECT")); - GroupPoints->TextLabel2->setText(tr("GEOM_PATH_OBJECT")); - GroupPoints->PushButton1->setPixmap(image1); - GroupPoints->PushButton2->setPixmap(image1); - GroupPoints->LineEdit1->setReadOnly( true ); - GroupPoints->LineEdit2->setReadOnly( true ); - - Layout1->addWidget(GroupPoints, 2, 0); - /***************************************************************/ - - /* Initialisations */ - Init(); -} - - -//================================================================================= -// function : ~GenerationGUI_PipeDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -GenerationGUI_PipeDlg::~GenerationGUI_PipeDlg() -{ - /* no need to delete child widgets, Qt does it all for us */ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void GenerationGUI_PipeDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = GroupPoints->LineEdit1; - GroupPoints->LineEdit1->setReadOnly( true ); - GroupPoints->LineEdit2->setReadOnly( true ); - - myOkBase = myOkPath = false; - - /* signals and slots connections */ - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - - connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupPoints->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - - connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(GroupPoints->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - initName(tr("GEOM_PIPE")); - - globalSelection( GEOM_ALLSHAPES ); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void GenerationGUI_PipeDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - -//================================================================================= -// function : ClickOnAply() -// purpose : -//================================================================================= -bool GenerationGUI_PipeDlg::ClickOnApply() -{ - if ( !onAccept() ) - return false; - - initName(); - return true; -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection has changed -//================================================================================= -void GenerationGUI_PipeDlg::SelectionIntoArgument() -{ - erasePreview(); - myEditCurrentArgument->setText(""); - - if(IObjectCount() != 1) { - if(myEditCurrentArgument == GroupPoints->LineEdit1) - myOkBase = false; - else if(myEditCurrentArgument == GroupPoints->LineEdit2) - myOkPath = false; - return; - } - - // nbSel == 1 - Standard_Boolean testResult = Standard_False; - GEOM::GEOM_Object_ptr aSelectedObject = GEOMBase::ConvertIOinGEOMObject(firstIObject(), testResult ); - - if (!testResult) - return; - - TopoDS_Shape S; - - if(myEditCurrentArgument == GroupPoints->LineEdit1) { - myOkBase = false; - - if(!GEOMBase::GetShape(aSelectedObject, S) || - S.ShapeType() == TopAbs_COMPSOLID || - S.ShapeType() == TopAbs_COMPOUND || - S.ShapeType() == TopAbs_SOLID || - S.ShapeType() == TopAbs_SHAPE) - return; - - myBase = aSelectedObject; - myOkBase = true; - } - else if(myEditCurrentArgument == GroupPoints->LineEdit2) { - myOkPath = false; - - if(!GEOMBase::GetShape(aSelectedObject, S) || - !(S.ShapeType() == TopAbs_WIRE || S.ShapeType() == TopAbs_EDGE) ) - return; - - myPath = aSelectedObject; - myOkPath = true; - } - myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) ); - - displayPreview(); -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void GenerationGUI_PipeDlg::SetEditCurrentArgument() -{ - QPushButton* send = (QPushButton*)sender(); - - if(send == GroupPoints->PushButton1) { - GroupPoints->LineEdit1->setFocus(); - myEditCurrentArgument = GroupPoints->LineEdit1; - } - else if(send == GroupPoints->PushButton2) { - GroupPoints->LineEdit2->setFocus(); - myEditCurrentArgument = GroupPoints->LineEdit2; - } - SelectionIntoArgument(); -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void GenerationGUI_PipeDlg::LineEditReturnPressed() -{ - QLineEdit* send = (QLineEdit*)sender(); - if(send == GroupPoints->LineEdit1 || - send == GroupPoints->LineEdit2) - { - myEditCurrentArgument = send; - GEOMBase_Skeleton::LineEditReturnPressed(); - } -} - - -//================================================================================= -// function : enterEvent() -// purpose : when mouse enter onto the QWidget -//================================================================================= -void GenerationGUI_PipeDlg::enterEvent(QEvent* e) -{ - if ( !GroupConstructors->isEnabled() ) - ActivateThisDialog(); -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void GenerationGUI_PipeDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - globalSelection( GEOM_ALLSHAPES ); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - displayPreview(); -} - - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr GenerationGUI_PipeDlg::createOperation() -{ - return getGeomEngine()->GetI3DPrimOperations( getStudyId() ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool GenerationGUI_PipeDlg::isValid( QString& ) -{ - return myOkBase && myOkPath; -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool GenerationGUI_PipeDlg::execute( ObjectList& objects ) -{ - GEOM::GEOM_Object_var anObj; - - anObj = GEOM::GEOM_I3DPrimOperations::_narrow( - getOperation() )->MakePipe( myBase, myPath ); - - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - - return true; -} - - - diff --git a/src/GenerationGUI/GenerationGUI_PipeDlg.h b/src/GenerationGUI/GenerationGUI_PipeDlg.h deleted file mode 100644 index 4f525f343..000000000 --- a/src/GenerationGUI/GenerationGUI_PipeDlg.h +++ /dev/null @@ -1,74 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GenerationGUI_PipeDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_PIPE_H -#define DIALOGBOX_PIPE_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_2Sel_QTD.h" - -//================================================================================= -// class : GenerationGUI_PipeDlg -// purpose : -//================================================================================= -class GenerationGUI_PipeDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - GenerationGUI_PipeDlg(QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~GenerationGUI_PipeDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& msg ); - virtual bool execute( ObjectList& objects ); - -private: - void Init(); - void enterEvent(QEvent* e); - - GEOM::GEOM_Object_var myBase; /* Base shape */ - GEOM::GEOM_Object_var myPath; /* Shape, defining the path */ - bool myOkBase; - bool myOkPath ; /* to check when arguments are defined */ - - DlgRef_2Sel_QTD* GroupPoints; - -private slots: - void ClickOnOk(); - bool ClickOnApply(); - void ActivateThisDialog(); - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - -}; - -#endif // DIALOGBOX_PIPE_H diff --git a/src/GenerationGUI/GenerationGUI_PrismDlg.cxx b/src/GenerationGUI/GenerationGUI_PrismDlg.cxx deleted file mode 100644 index 7ab104b48..000000000 --- a/src/GenerationGUI/GenerationGUI_PrismDlg.cxx +++ /dev/null @@ -1,343 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GenerationGUI_PrismDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "GenerationGUI_PrismDlg.h" - -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include -#include -#include -#include "GEOMImpl_Types.hxx" - -#include -#include - -#include "utilities.h" - -//================================================================================= -// class : GenerationGUI_PrismDlg() -// purpose : Constructs a GenerationGUI_PrismDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -GenerationGUI_PrismDlg::GenerationGUI_PrismDlg(GeometryGUI* theGeometryGUI, QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu), myGeometryGUI(theGeometryGUI) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_PRISM"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_PRISM_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_PRISM")); - RadioButton1->setPixmap(image0); - RadioButton2->close(TRUE); - RadioButton3->close(TRUE); - - GroupPoints = new DlgRef_2Sel1Spin2Check(this, "GroupPoints"); - GroupPoints->CheckButton1->hide(); - GroupPoints->GroupBox1->setTitle(tr("GEOM_PRISM_BSV")); - GroupPoints->TextLabel1->setText(tr("GEOM_BASE")); - GroupPoints->TextLabel2->setText(tr("GEOM_VECTOR")); - GroupPoints->TextLabel3->setText(tr("GEOM_HEIGHT")); - GroupPoints->PushButton1->setPixmap(image1); - GroupPoints->PushButton2->setPixmap(image1); - GroupPoints->LineEdit1->setReadOnly( true ); - GroupPoints->LineEdit2->setReadOnly( true ); - GroupPoints->CheckButton2->setText(tr("GEOM_REVERSE")); - - Layout1->addWidget(GroupPoints, 2, 0); - /***************************************************************/ - - /* Initialisations */ - Init(); -} - - -//================================================================================= -// function : ~GenerationGUI_PrismDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -GenerationGUI_PrismDlg::~GenerationGUI_PrismDlg() -{ - /* no need to delete child widgets, Qt does it all for us */ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void GenerationGUI_PrismDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = GroupPoints->LineEdit1; - GroupPoints->LineEdit1->setReadOnly( true ); - GroupPoints->LineEdit2->setReadOnly( true ); - - myOkBase = myOkVec = false; - - /* Get setting of step value from file configuration */ - SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); - double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100); - - /* min, max, step and decimals for spin boxes & initial values */ - GroupPoints->SpinBox_DX->RangeStepAndValidator(-999.999, +999.999, step, 3); - GroupPoints->SpinBox_DX->SetValue(100.0); - - /* signals and slots connections */ - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - - connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupPoints->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - - connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(GroupPoints->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect(GroupPoints->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox())); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupPoints->SpinBox_DX, SLOT(SetStep(double))); - - connect(GroupPoints->CheckButton2, SIGNAL(toggled(bool)), this, SLOT(onReverse())); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - - initName(tr("GEOM_PRISM")); - - globalSelection( GEOM_ALLSHAPES ); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void GenerationGUI_PrismDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool GenerationGUI_PrismDlg::ClickOnApply() -{ - if ( !onAccept() ) - return false; - - initName(); - return true; -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection has changed -//================================================================================= -void GenerationGUI_PrismDlg::SelectionIntoArgument() -{ - erasePreview(); - myEditCurrentArgument->setText(""); - - if(IObjectCount() != 1) - { - if(myEditCurrentArgument == GroupPoints->LineEdit1) - myOkBase = false; - else if(myEditCurrentArgument == GroupPoints->LineEdit2) - myOkVec = false; - return; - } - - // nbSel == 1 - Standard_Boolean testResult = Standard_False; - GEOM::GEOM_Object_ptr aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); - - if (!testResult) - return; - - if(myEditCurrentArgument == GroupPoints->LineEdit1) { - myOkBase = false; - TopoDS_Shape S; - - if ( !GEOMBase::GetShape(aSelectedObject, S) || - S.ShapeType() <= 2) - return; - - myBase = aSelectedObject; - myOkBase = true; - } - else if(myEditCurrentArgument == GroupPoints->LineEdit2) { - myVec = aSelectedObject; - myOkVec = true; - } - myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) ); - - displayPreview(); -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void GenerationGUI_PrismDlg::SetEditCurrentArgument() -{ - QPushButton* send = (QPushButton*)sender(); - globalSelection( GEOM_ALLSHAPES ); - - if(send == GroupPoints->PushButton1) { - GroupPoints->LineEdit1->setFocus(); - myEditCurrentArgument = GroupPoints->LineEdit1; - } - else if(send == GroupPoints->PushButton2) { - GroupPoints->LineEdit2->setFocus(); - myEditCurrentArgument = GroupPoints->LineEdit2; - globalSelection( GEOM_LINE ); - } - SelectionIntoArgument(); -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void GenerationGUI_PrismDlg::LineEditReturnPressed() -{ - QLineEdit* send = (QLineEdit*)sender(); - if(send == GroupPoints->LineEdit1 || - send == GroupPoints->LineEdit2) - { - myEditCurrentArgument = send; - GEOMBase_Skeleton::LineEditReturnPressed(); - } -} - -//================================================================================= -// function : enterEvent() -// purpose : when mouse enter onto the QWidget -//================================================================================= -void GenerationGUI_PrismDlg::enterEvent(QEvent * e) -{ - if ( !GroupConstructors->isEnabled() ) - ActivateThisDialog(); -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void GenerationGUI_PrismDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - globalSelection( GEOM_ALLSHAPES ); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - GroupPoints->LineEdit1->setFocus(); - myEditCurrentArgument = GroupPoints->LineEdit1; - displayPreview(); -} - - -//================================================================================= -// function : ValueChangedInSpinBox() -// purpose : -//================================================================================= -void GenerationGUI_PrismDlg::ValueChangedInSpinBox() -{ - displayPreview(); -} - - - -//================================================================================= -// function : getHeight() -// purpose : -//================================================================================= -double GenerationGUI_PrismDlg::getHeight() const -{ - return GroupPoints->SpinBox_DX->GetValue(); -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr GenerationGUI_PrismDlg::createOperation() -{ - return getGeomEngine()->GetI3DPrimOperations( getStudyId() ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool GenerationGUI_PrismDlg::isValid( QString& ) -{ - return myOkBase && myOkVec; -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool GenerationGUI_PrismDlg::execute( ObjectList& objects ) -{ - GEOM::GEOM_Object_var anObj; - - anObj = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation() )->MakePrismVecH ( myBase, myVec, getHeight() ); - - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - - return true; -} - - -//================================================================================= -// function : onReverse() -// purpose : -//================================================================================= -void GenerationGUI_PrismDlg::onReverse() -{ - double anOldValue = GroupPoints->SpinBox_DX->GetValue(); - GroupPoints->SpinBox_DX->SetValue( -anOldValue ); -} - - - diff --git a/src/GenerationGUI/GenerationGUI_PrismDlg.h b/src/GenerationGUI/GenerationGUI_PrismDlg.h deleted file mode 100644 index ee946ae77..000000000 --- a/src/GenerationGUI/GenerationGUI_PrismDlg.h +++ /dev/null @@ -1,79 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GenerationGUI_PrismDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_PRISM_H -#define DIALOGBOX_PRISM_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_2Sel1Spin2Check.h" - -//================================================================================= -// class : GenerationGUI_PrismDlg -// purpose : -//================================================================================= -class GenerationGUI_PrismDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - GenerationGUI_PrismDlg(GeometryGUI* theGeometryGUI, QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~GenerationGUI_PrismDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& msg ); - virtual bool execute( ObjectList& objects ); - -private : - void Init(); - void enterEvent(QEvent* e); - double getHeight() const; - - GeometryGUI* myGeometryGUI; - - GEOM::GEOM_Object_var myBase; /* Base shape */ - GEOM::GEOM_Object_var myVec; /* Vector, defining the direction */ - - bool myOkBase; - bool myOkVec; - - DlgRef_2Sel1Spin2Check* GroupPoints; - -private slots: - void ClickOnOk(); - bool ClickOnApply(); - void ActivateThisDialog(); - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - void ValueChangedInSpinBox(); - void onReverse(); -}; - -#endif // DIALOGBOX_PRISM_H diff --git a/src/GenerationGUI/GenerationGUI_RevolDlg.cxx b/src/GenerationGUI/GenerationGUI_RevolDlg.cxx deleted file mode 100644 index 6856a9f48..000000000 --- a/src/GenerationGUI/GenerationGUI_RevolDlg.cxx +++ /dev/null @@ -1,363 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GenerationGUI_RevolDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "GenerationGUI_RevolDlg.h" - -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include -#include -#include -#include -#include -#include "GEOMImpl_Types.hxx" - -#include -#include - -#include "utilities.h" - -//================================================================================= -// class : GenerationGUI_RevolDlg() -// purpose : Constructs a GenerationGUI_RevolDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -GenerationGUI_RevolDlg::GenerationGUI_RevolDlg(GeometryGUI* theGeometryGUI, QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu), myGeometryGUI(theGeometryGUI) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_REVOL"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_REVOLUTION_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_REVOLUTION")); - RadioButton1->setPixmap(image0); - RadioButton2->close(TRUE); - RadioButton3->close(TRUE); - - GroupPoints = new DlgRef_2Sel1Spin2Check(this, "GroupPoints"); - GroupPoints->CheckButton1->hide(); - GroupPoints->GroupBox1->setTitle(tr("GEOM_ARGUMENTS")); - GroupPoints->TextLabel1->setText(tr("GEOM_OBJECT")); - GroupPoints->TextLabel2->setText(tr("GEOM_AXIS")); - GroupPoints->TextLabel3->setText(tr("GEOM_ANGLE")); - GroupPoints->PushButton1->setPixmap(image1); - GroupPoints->PushButton2->setPixmap(image1); - GroupPoints->LineEdit1->setReadOnly( true ); - GroupPoints->LineEdit2->setReadOnly( true ); - GroupPoints->CheckButton2->setText(tr("GEOM_REVERSE")); - - Layout1->addWidget(GroupPoints, 2, 0); - /***************************************************************/ - - /* Initialisations */ - Init(); -} - - -//================================================================================= -// function : ~GenerationGUI_RevolDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -GenerationGUI_RevolDlg::~GenerationGUI_RevolDlg() -{ - // no need to delete child widgets, Qt does it all for us -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void GenerationGUI_RevolDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = GroupPoints->LineEdit1; - GroupPoints->LineEdit1->setReadOnly( true ); - GroupPoints->LineEdit2->setReadOnly( true ); - - myOkBase = myOkAxis = false; - - double SpecificStep = 5; - /* min, max, step and decimals for spin boxes & initial values */ - GroupPoints->SpinBox_DX->RangeStepAndValidator(-999.999, 999.999, SpecificStep, 3); - GroupPoints->SpinBox_DX->SetValue(45.0); - - /* signals and slots connections */ - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - - connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupPoints->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - - connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(GroupPoints->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect(GroupPoints->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox())); - connect(GroupPoints->CheckButton2, SIGNAL(toggled(bool)), this, SLOT(onReverse())); - - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupPoints->SpinBox_DX, SLOT(SetStep(double))); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - - initName(tr("GEOM_REVOLUTION")); - - globalSelection( GEOM_ALLSHAPES ); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void GenerationGUI_RevolDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool GenerationGUI_RevolDlg::ClickOnApply() -{ - if ( !onAccept() ) - return false; - - initName(); - return true; -} - -//======================================================================= -//function : isAcceptableBase -//purpose : return true if theBase can be used as algo argument -//======================================================================= - -static bool isAcceptableBase(const TopoDS_Shape& theBase) -{ - switch ( theBase.ShapeType() ) { - case TopAbs_VERTEX: - case TopAbs_EDGE: - case TopAbs_WIRE: - case TopAbs_FACE: - case TopAbs_SHELL: - return true; - case TopAbs_SOLID: - case TopAbs_COMPSOLID: - return false; - case TopAbs_COMPOUND: { - TopExp_Explorer exp( theBase, TopAbs_SOLID); - return !exp.More(); - } - default: - return false; - } - return false; -} - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection as changed or other case -//================================================================================= -void GenerationGUI_RevolDlg::SelectionIntoArgument() -{ - erasePreview(); - myEditCurrentArgument->setText(""); - - if(IObjectCount() != 1) { - if(myEditCurrentArgument == GroupPoints->LineEdit1) - myOkBase = false; - else if(myEditCurrentArgument == GroupPoints->LineEdit2) - myOkAxis = false; - return; - } - - // nbSel == 1 - Standard_Boolean testResult = Standard_False; - GEOM::GEOM_Object_ptr aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); - - if (!testResult) - return; - - if(myEditCurrentArgument == GroupPoints->LineEdit1) { - TopoDS_Shape S; - myOkBase = false; - - if ( !GEOMBase::GetShape(aSelectedObject, S) || !isAcceptableBase( S ) ) - return; - - myBase = aSelectedObject; - myOkBase = true; - } - else if(myEditCurrentArgument == GroupPoints->LineEdit2) { - myAxis = aSelectedObject; - myOkAxis = true; - } - myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) ); - - displayPreview(); -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void GenerationGUI_RevolDlg::SetEditCurrentArgument() -{ - QPushButton* send = (QPushButton*)sender(); - globalSelection( GEOM_ALLSHAPES ); - - if(send == GroupPoints->PushButton1) { - GroupPoints->LineEdit1->setFocus(); - myEditCurrentArgument = GroupPoints->LineEdit1; - } - else if(send == GroupPoints->PushButton2) { - GroupPoints->LineEdit2->setFocus(); - myEditCurrentArgument = GroupPoints->LineEdit2; - globalSelection( GEOM_LINE ); - } - SelectionIntoArgument(); -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void GenerationGUI_RevolDlg::LineEditReturnPressed() -{ - QLineEdit* send = (QLineEdit*)sender(); - if(send == GroupPoints->LineEdit1 || - send == GroupPoints->LineEdit2) - { - myEditCurrentArgument = send; - GEOMBase_Skeleton::LineEditReturnPressed(); - } -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void GenerationGUI_RevolDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - globalSelection( GEOM_ALLSHAPES ); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - GroupPoints->LineEdit1->setFocus(); - myEditCurrentArgument = GroupPoints->LineEdit1; - displayPreview(); -} - - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void GenerationGUI_RevolDlg::enterEvent(QEvent* e) -{ - if ( !GroupConstructors->isEnabled() ) - ActivateThisDialog(); -} - - -//================================================================================= -// function : ValueChangedInSpinBox() -// purpose : -//================================================================================= -void GenerationGUI_RevolDlg::ValueChangedInSpinBox() -{ - displayPreview(); -} - - -//================================================================================= -// function : getAngle() -// purpose : -//================================================================================= -double GenerationGUI_RevolDlg::getAngle() const -{ - return GroupPoints->SpinBox_DX->GetValue(); -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr GenerationGUI_RevolDlg::createOperation() -{ - return getGeomEngine()->GetI3DPrimOperations( getStudyId() ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool GenerationGUI_RevolDlg::isValid( QString& ) -{ - return myOkBase && myOkAxis; -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool GenerationGUI_RevolDlg::execute( ObjectList& objects ) -{ - GEOM::GEOM_Object_var anObj; - - anObj = GEOM::GEOM_I3DPrimOperations::_narrow( - getOperation() )->MakeRevolutionAxisAngle( myBase, myAxis, getAngle() * PI180 ); - - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - - return true; -} - - -//================================================================================= -// function : onReverse() -// purpose : -//================================================================================= -void GenerationGUI_RevolDlg::onReverse() -{ - double anOldValue = GroupPoints->SpinBox_DX->GetValue(); - GroupPoints->SpinBox_DX->SetValue( -anOldValue ); -} diff --git a/src/GenerationGUI/GenerationGUI_RevolDlg.h b/src/GenerationGUI/GenerationGUI_RevolDlg.h deleted file mode 100644 index f5d7637f3..000000000 --- a/src/GenerationGUI/GenerationGUI_RevolDlg.h +++ /dev/null @@ -1,81 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GenerationGUI_RevolDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_REVOLUTION_H -#define DIALOGBOX_REVOLUTION_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_2Sel1Spin2Check.h" - -#include - -//================================================================================= -// class : GenerationGUI_RevolDlg -// purpose : -//================================================================================= -class GenerationGUI_RevolDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - GenerationGUI_RevolDlg(GeometryGUI* theGeometryGUI, QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~GenerationGUI_RevolDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& msg ); - virtual bool execute( ObjectList& objects ); - -private : - void Init(); - void enterEvent(QEvent* e); - double getAngle() const; - - GeometryGUI* myGeometryGUI; - - GEOM::GEOM_Object_var myBase; /* Base shape */ - GEOM::GEOM_Object_var myAxis; /* Axis of the revolution */ - bool myOkBase; - bool myOkAxis; - - DlgRef_2Sel1Spin2Check* GroupPoints; - -private slots: - void ClickOnOk(); - bool ClickOnApply(); - void ActivateThisDialog(); - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - void ValueChangedInSpinBox(); - void onReverse(); - -}; - -#endif // DIALOGBOX_REVOLUTION_H diff --git a/src/GenerationGUI/Makefile.in b/src/GenerationGUI/Makefile.in deleted file mode 100644 index 3ce50cd87..000000000 --- a/src/GenerationGUI/Makefile.in +++ /dev/null @@ -1,66 +0,0 @@ -# GEOM GENERATIONGUI : -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Author : Damien COQUERET (OCC) -# Module : GEOM -# $Header: - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -# header files -EXPORT_HEADERS= - -# Libraries targets -LIB = libGenerationGUI.la - -LIB_SRC = GenerationGUI.cxx \ - GenerationGUI_PrismDlg.cxx \ - GenerationGUI_RevolDlg.cxx \ - GenerationGUI_FillingDlg.cxx \ - GenerationGUI_PipeDlg.cxx - -LIB_MOC = \ - GenerationGUI_PrismDlg.h \ - GenerationGUI_RevolDlg.h \ - GenerationGUI_FillingDlg.h \ - GenerationGUI_PipeDlg.h - -LIB_CLIENT_IDL = SALOME_GenericObj.idl SALOME_Component.idl SALOME_Exception.idl - -LIB_SERVER_IDL = - -# additionnal information to compil and link file - -CPPFLAGS += $(QT_INCLUDES) $(VTK_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES) $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome -CXXFLAGS += -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome - -LDFLAGS += -lGEOMFiltersSelection -lGEOMBase $(CAS_LDPATH) -lTKOffset - -@CONCLUDE@ diff --git a/src/GroupGUI/GroupGUI.cxx b/src/GroupGUI/GroupGUI.cxx deleted file mode 100644 index e7a489013..000000000 --- a/src/GroupGUI/GroupGUI.cxx +++ /dev/null @@ -1,152 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.org -// -// -// -// File : GroupGUI.cxx -// Author : Sergey ANIKIN -// Module : GEOM -// $Header$ - -#include "GroupGUI.h" -#include "GroupGUI_GroupDlg.h" - -#include "GEOMImpl_Types.hxx" - -#include "SUIT_Session.h" -#include "SUIT_Desktop.h" -#include "SUIT_MessageBox.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_Study.h" -#include "SalomeApp_SelectionMgr.h" - -GroupGUI* GroupGUI::myGUIObject = 0; - -//======================================================================= -// function : GetGroupGUI() -// purpose : Get the only GroupGUI object [ static ] -//======================================================================= -GroupGUI* GroupGUI::GetGroupGUI(GeometryGUI* parent) -{ - if ( myGUIObject == 0 ) - myGUIObject = new GroupGUI(parent); - - return myGUIObject; -} - -//======================================================================= -// function : GroupGUI() -// purpose : Constructor -//======================================================================= -GroupGUI::GroupGUI(GeometryGUI* parent) -: GEOMGUI(parent) -{ -} - - -//======================================================================= -// function : ~GroupGUI() -// purpose : Destructor -//======================================================================= -GroupGUI::~GroupGUI() -{ -} - - -//======================================================================= -// function : OnGUIEvent() -// purpose : -//======================================================================= -bool GroupGUI::OnGUIEvent( int theCommandID, SUIT_Desktop* parent ) -{ - getGeometryGUI()->EmitSignalDeactivateDialog(); - - QDialog* aDlg = NULL; - - SalomeApp_Study* appStudy = dynamic_cast( SUIT_Session::session()->activeApplication()->activeStudy() ); - if ( !appStudy ) return false; - _PTR(Study) aStudy = appStudy->studyDS(); - - if ( aStudy->GetProperties()->IsLocked() ) { - SUIT_MessageBox::warn1 ( parent, - QObject::tr("WRN_WARNING"), - QObject::tr("WRN_STUDY_LOCKED"), - QObject::tr("BUT_OK") ); - return false; - } - - switch ( theCommandID ) { - case 800: - case 8001: - aDlg = new GroupGUI_GroupDlg( GroupGUI_GroupDlg::CreateGroup, parent, ""); - break; - case 801: - { - SALOME_ListIO aList; - aList.Clear(); - - SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() ); - if ( app ) { - SalomeApp_SelectionMgr* aSelMgr = app->selectionMgr(); - if ( aSelMgr ) - aSelMgr->selectedObjects( aList ); - } - - if ( aList.Extent() == 1 ) { - Standard_Boolean aResult = Standard_False; - GEOM::GEOM_Object_var anObj = - GEOMBase::ConvertIOinGEOMObject( aList.First(), aResult ); - - if ( aResult && !CORBA::is_nil( anObj ) && anObj->GetType() == GEOM_GROUP ) { - aDlg = new GroupGUI_GroupDlg( GroupGUI_GroupDlg::EditGroup, parent, "" ); - break; - } - } - SUIT_MessageBox::warn1 ( parent, - tr("WRN_WARNING"), - tr("NO_GROUP"), - tr("BUT_OK") ); - break; - } - default: - SUIT_Session::session()->activeApplication()->putInfo( tr( "GEOM_PRP_COMMAND" ).arg( theCommandID ) ); - break; - } - - if ( aDlg != NULL ) - aDlg->show(); - - return true; -} - -//===================================================================================== -// EXPORTED METHODS -//===================================================================================== -extern "C" -{ -#ifdef WNT - __declspec( dllexport ) -#endif - GEOMGUI* GetLibGUI(GeometryGUI* p) - { - return GroupGUI::GetGroupGUI(p); - } -} diff --git a/src/GroupGUI/GroupGUI.h b/src/GroupGUI/GroupGUI.h deleted file mode 100644 index cfe3191a3..000000000 --- a/src/GroupGUI/GroupGUI.h +++ /dev/null @@ -1,57 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2004 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.org -// -// -// -// File : GroupGUI.h -// Author : Sergey ANIKIN -// Module : GEOM -// $Header$ - -#ifndef GROUPGUI_H -#define GROUPGUI_H - -#include "GEOMGUI.h" - -//================================================================================= -// class : GroupGUI -// purpose : -//================================================================================= -class GroupGUI : public GEOMGUI -{ - Q_OBJECT - -protected: - GroupGUI(GeometryGUI* parent); // hide constructor to avoid direct creation - -public : - ~GroupGUI(); - - // Get the only GroupGUI object - static GroupGUI* GetGroupGUI(GeometryGUI* parent); - - bool OnGUIEvent( int theCommandID, SUIT_Desktop* parent ); - -private: - static GroupGUI* myGUIObject; // the only GroupGUI object -}; - -#endif diff --git a/src/GroupGUI/GroupGUI_GroupDlg.cxx b/src/GroupGUI/GroupGUI_GroupDlg.cxx deleted file mode 100644 index 15b7b03d9..000000000 --- a/src/GroupGUI/GroupGUI_GroupDlg.cxx +++ /dev/null @@ -1,655 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2004 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.org -// -// -// -// File : GroupGUI_GroupDlg.cxx -// Author : Sergey ANIKIN -// Module : GEOM -// $Header$ - -#include "GroupGUI_GroupDlg.h" - -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_Study.h" -#include "SalomeApp_SelectionMgr.h" - -#include "GEOMBase.h" - -#include "GEOMImpl_Types.hxx" - -#include -#include -#include -#include - -#include -#include - - - - -GroupGUI_GroupDlg::GroupGUI_GroupDlg(Mode mode, - QWidget* parent, - const char* name, - bool modal, - WFlags fl) - :GEOMBase_Skeleton( parent, "GroupGUI_GroupDlg", false, - WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu), - myMode( mode ), - myBusy( false ) -{ - QPixmap image0( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_OBJBROWSER_VERTEX" ) ) ); - QPixmap image1( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_OBJBROWSER_EDGE" ) ) ); - QPixmap image2( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_OBJBROWSER_FACE" ) ) ); - QPixmap image3( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_OBJBROWSER_SOLID" ) ) ); - - QPixmap iconSelect( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_SELECT" ) ) ); - - setCaption( myMode == CreateGroup ? tr( "CREATE_GROUP_TITLE" ) : tr( "EDIT_GROUP_TITLE" ) ); - - // Shape type button group - GroupConstructors->setEnabled( myMode == CreateGroup ); - GroupConstructors->setTitle( tr( "SHAPE_TYPE" ) ); - RadioButton1->setPixmap( image0 ); - RadioButton2->setPixmap( image1 ); - RadioButton3->setPixmap( image2 ); - RadioButton4->setPixmap( image3 ); - RadioButton4->show(); - - // Group name - GroupBoxName->setTitle( tr( "GROUP_NAME" ) ); - - // Main shape and sub-shapes - GroupMedium = new QGroupBox( 1, Qt::Vertical, tr( "MAIN_SUB_SHAPES" ), this ); - GroupMedium->setInsideMargin( 10 ); - Layout1->addWidget( GroupMedium, 2, 0 ); - - QWidget* aFrame = new QWidget( GroupMedium ); - QGridLayout* aMedLayout = new QGridLayout( aFrame, 4, 4, 0, 6 ); - - QLabel* aMainLabel = new QLabel( tr( "MAIN_SHAPE" ), aFrame ); - - mySelBtn = new QPushButton( aFrame ); - mySelBtn->setPixmap( iconSelect ); - mySelBtn->setEnabled( myMode == CreateGroup ); - - myMainName = new QLineEdit( aFrame ); - myMainName->setReadOnly( true ); - myMainName->setEnabled( myMode == CreateGroup ); - - mySelSubBtn = new QPushButton( tr( "SELECT_SUB_SHAPES" ), aFrame ); - mySelAllBtn = new QPushButton( tr( "SELECT_ALL" ), aFrame ); - myAddBtn = new QPushButton( tr( "ADD" ), aFrame ); - myRemBtn = new QPushButton( tr( "REMOVE" ), aFrame ); - myIdList = new QListBox( aFrame ); - - myIdList->setSelectionMode( QListBox::Extended ); - myIdList->setRowMode( QListBox::FitToWidth ); - - aMedLayout->addWidget( aMainLabel, 0, 0 ); - aMedLayout->addWidget( mySelBtn, 0, 1 ); - aMedLayout->addMultiCellWidget( myMainName, 0, 0, 2, 3 ); - aMedLayout->addMultiCellWidget( mySelSubBtn, 1, 1, 0, 2 ); - aMedLayout->addWidget( mySelAllBtn, 1, 3 ); - aMedLayout->addMultiCellWidget( myIdList, 2, 3, 0, 2 ); - aMedLayout->addWidget( myAddBtn, 2, 3 ); - aMedLayout->addWidget( myRemBtn, 3, 3 ); - - Init(); -} - -GroupGUI_GroupDlg::~GroupGUI_GroupDlg() -{ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void GroupGUI_GroupDlg::Init() -{ - // san -- TODO: clear selected sub-shapes... - - if ( myMode == CreateGroup ) { - initName( tr( "GROUP_PREFIX" ) ); - - // Get ready for main shape selection - myEditCurrentArgument = myMainName; - - connect( GroupConstructors, SIGNAL( clicked( int ) ), this, SLOT( ConstructorsClicked( int ) ) ); - connect( mySelBtn, SIGNAL( clicked() ), this, SLOT(SetEditCurrentArgument())); - } - else if ( myMode == EditGroup && IObjectCount() ) { - Standard_Boolean aResult = Standard_False; - GEOM::GEOM_Object_var anObj = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), aResult ); - - if ( aResult && !CORBA::is_nil( anObj ) && anObj->GetType() == GEOM_GROUP ) { - myGroup = anObj; - - ResultName->setText( GEOMBase::GetName( myGroup ) ); - - GEOM::GEOM_IGroupOperations_var anOp = GEOM::GEOM_IGroupOperations::_narrow( getOperation() ); - myMainObj = anOp->GetMainShape( myGroup ); - if ( !CORBA::is_nil( myMainObj ) ) - myMainName->setText( GEOMBase::GetName( myMainObj ) ); - - setShapeType( (TopAbs_ShapeEnum)anOp->GetType( myGroup ) ); - - GEOM::ListOfLong_var aCurrList = anOp->GetObjects( myGroup ); - QListBoxItem* anItem; - for ( int i = 0, n = aCurrList->length(); i < n; i++ ) { - anItem = new QListBoxText( QString( "%1" ).arg(aCurrList[i] ) ); - myIdList->insertItem( anItem ); - } - - myEditCurrentArgument = 0; - } - } - - connect( buttonOk , SIGNAL( clicked() ), this, SLOT( ClickOnOk() ) ); - connect( buttonApply, SIGNAL( clicked() ), this, SLOT( ClickOnApply() ) ); - - connect( mySelSubBtn, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) ); - connect( mySelAllBtn, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) ); - connect( ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) ); - connect( mySelAllBtn, SIGNAL( clicked() ), this, SLOT( selectAllSubShapes() ) ); - connect( myAddBtn, SIGNAL( clicked() ), this, SLOT( add() ) ); - connect( myRemBtn, SIGNAL( clicked() ), this, SLOT( remove() ) ); - connect( myIdList, SIGNAL( selectionChanged() ), this, SLOT( selectionChanged() ) ); - - activateSelection(); -} - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void GroupGUI_GroupDlg::enterEvent( QEvent* e ) -{ - if ( !buttonCancel->isEnabled() ) - this->ActivateThisDialog(); -} - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void GroupGUI_GroupDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool GroupGUI_GroupDlg::ClickOnApply() -{ - if ( !onAccept( myMode == CreateGroup, true ) ) - return false; - - if ( myMode == CreateGroup ) - initName(); - return true; -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void GroupGUI_GroupDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - - connect( ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) ); - - activateSelection(); -} - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void GroupGUI_GroupDlg::LineEditReturnPressed() -{ - QLineEdit* send = ( QLineEdit* )sender(); - - if ( send == myMainName && !myEditCurrentArgument ) { - myEditCurrentArgument = myMainName; - activateSelection(); - } - else - GEOMBase_Skeleton::LineEditReturnPressed(); - - updateState(); -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void GroupGUI_GroupDlg::SetEditCurrentArgument() -{ - QPushButton* send = (QPushButton*)sender(); - - if ( send == mySelBtn ) - myEditCurrentArgument = myMainName; - else if ( send == mySelSubBtn || send == mySelAllBtn ) - myEditCurrentArgument = 0; - - activateSelection(); - updateState(); -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection has changed -//================================================================================= -void GroupGUI_GroupDlg::SelectionIntoArgument() -{ - if ( myEditCurrentArgument ) { // Selection of a main shape is active - myEditCurrentArgument->setText( "" ); - - if ( IObjectCount() == 1 ) { - Standard_Boolean aResult = Standard_False; - GEOM::GEOM_Object_var anObj = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), aResult ); - - if ( aResult && !anObj->_is_nil() && GEOMBase::IsShape( anObj ) ) { - myMainObj = anObj; - myEditCurrentArgument->setText( GEOMBase::GetName( anObj ) ); - updateState(); - return; - } - } - - myMainObj = GEOM::GEOM_Object::_nil(); - } - else { // an attempt to synchronize list box selection with 3d viewer - if ( myBusy ) - return; - - bool isBlocked = myIdList->signalsBlocked(); - myIdList->blockSignals( true ); - myIdList->clearSelection(); - - if ( IObjectCount() == 1 ) { - Standard_Boolean aResult = Standard_False; - GEOM::GEOM_Object_var anObj = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), aResult ); - - if ( aResult && !anObj->_is_nil() ) { - QMap aMap; - for ( int i = 0, n = myIdList->count(); i < n; i++ ) - aMap.insert( myIdList->item( i )->text().toInt(), i ); - - TColStd_IndexedMapOfInteger aMapIndex; - ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr()->GetIndexes( firstIObject(), aMapIndex ); - for ( int ii = 1, nn = aMapIndex.Extent(); ii <= nn; ii++ ) { - if ( aMap.contains( aMapIndex( ii ) ) ) - myIdList->setSelected( aMap[aMapIndex( ii )], true ); - } - } - } - - myIdList->blockSignals( isBlocked ); - } - - updateState(); -} - -//================================================================================= -// function : ConstructorsClicked() -// purpose : Radio button management -//================================================================================= -void GroupGUI_GroupDlg::ConstructorsClicked( int constructorId ) -{ - myIdList->clear(); - activateSelection(); - updateState(); -} - -//================================================================================= -// function : selectAllSubShapes -// purpose : -//================================================================================= -void GroupGUI_GroupDlg::selectAllSubShapes() -{ - if ( CORBA::is_nil( myMainObj ) ) - return; - - GEOM::GEOM_IShapesOperations_var aShOp = getGeomEngine()->GetIShapesOperations( getStudyId() ); - GEOM::GEOM_ILocalOperations_var aLocOp = getGeomEngine()->GetILocalOperations( getStudyId() ); - - GEOM::ListOfGO_var aSubShapes = aShOp->MakeExplode( myMainObj, getShapeType(), false ); - if ( !aShOp->IsDone() ) - return; - - bool isBlocked = myIdList->signalsBlocked(); - myIdList->blockSignals( true ); - myIdList->clear(); - - QListBoxItem* anItem; - for ( int i = 0, n = aSubShapes->length(); i < n; i++ ) { - CORBA::Long anIndex = aLocOp->GetSubShapeIndex( myMainObj, aSubShapes[i] ); - if ( anIndex < 0 ) - continue; - - anItem = new QListBoxText( QString( "%1" ).arg( anIndex ) ); - myIdList->insertItem( anItem ); - myIdList->setSelected( anItem, true ); - } - - myIdList->blockSignals( isBlocked ); - highlightSubShapes(); - updateState(); -} - -//================================================================================= -// function : add -// purpose : -//================================================================================= -void GroupGUI_GroupDlg::add() -{ - TColStd_MapOfInteger aMap; - for ( int i = 0, n = myIdList->count(); i < n; i++ ) - aMap.Add( myIdList->item( i )->text().toInt() ); - - if ( IObjectCount() == 1 ) { - Standard_Boolean aResult = Standard_False; - GEOM::GEOM_Object_var anObj = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), aResult ); - - if ( aResult && !anObj->_is_nil() ) { - TColStd_IndexedMapOfInteger aMapIndex; - ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr()->GetIndexes( firstIObject(), aMapIndex ); - QListBoxItem* anItem; - bool isBlocked = myIdList->signalsBlocked(); - myIdList->blockSignals( true ); - - for ( int i = 1, n = aMapIndex.Extent(); i <= n; i++ ) { - if ( aMap.Contains( aMapIndex( i ) ) ) - continue; - - anItem = new QListBoxText( QString( "%1" ).arg( aMapIndex( i ) ) ); - myIdList->insertItem( anItem ); - myIdList->setSelected( anItem, true ); - } - - myIdList->blockSignals( isBlocked ); - } - } - updateState(); -} - -//================================================================================= -// function : remove -// purpose : -//================================================================================= -void GroupGUI_GroupDlg::remove() -{ - for ( int i = myIdList->count() - 1; i >= 0; i-- ) { - if ( myIdList->isSelected( i ) ) - myIdList->removeItem( i ); - } - updateState(); -} - - -//================================================================================= -// function : getConstructorId() -// purpose : -//================================================================================= -int GroupGUI_GroupDlg::getConstructorId() const -{ - return GroupConstructors->id( GroupConstructors->selected() ); -} - -//================================================================================= -// function : getShapeType() -// purpose : -//================================================================================= -TopAbs_ShapeEnum GroupGUI_GroupDlg::getShapeType() const -{ - switch ( getConstructorId() ) { - case 0: return TopAbs_VERTEX; - case 1: return TopAbs_EDGE; - case 2: return TopAbs_FACE; - case 3: return TopAbs_SOLID; - default: return TopAbs_SHAPE; - } -} - -//================================================================================= -// function : setShapeType() -// purpose : -//================================================================================= -void GroupGUI_GroupDlg::setShapeType( const TopAbs_ShapeEnum theType ) -{ - int anId = 0; - switch ( theType ) { - case TopAbs_VERTEX: anId = 0; break; - case TopAbs_EDGE: anId = 1; break; - case TopAbs_FACE: anId = 2; break; - case TopAbs_SOLID: anId = 3; break; - } - GroupConstructors->setButton( anId ); -} - - -//================================================================================= -// function : activateSelection -// purpose : Activate selection in accordance with myEditCurrentArgument -//================================================================================= -void GroupGUI_GroupDlg::activateSelection() -{ - globalSelection( GEOM_ALLSHAPES ); - - if ( !myMainObj->_is_nil() && !myEditCurrentArgument ) { - localSelection( myMainObj, getShapeType() ); - } - - SelectionIntoArgument(); -} - -//================================================================================= -// function : updateState -// purpose : -//================================================================================= -void GroupGUI_GroupDlg::updateState() -{ - bool isAdd = false; - if ( IObjectCount() == 1 ) { - Standard_Boolean aResult = Standard_False; - GEOM::GEOM_Object_var anObj = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), aResult ); - - if ( aResult && !anObj->_is_nil() ) { - TColStd_IndexedMapOfInteger aMapIndex; - ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr()->GetIndexes( firstIObject(), aMapIndex ); - isAdd = aMapIndex.Extent() > 0; - } - } - myAddBtn->setEnabled( !myEditCurrentArgument && !CORBA::is_nil( myMainObj ) && isAdd ); - bool hasSel = false; - for ( int ii = 0, nn = myIdList->count(); !hasSel && ii < nn; ii++ ) - hasSel = myIdList->isSelected( ii ); - myRemBtn->setEnabled( hasSel ); - mySelSubBtn->setEnabled( !CORBA::is_nil( myMainObj ) ); - mySelAllBtn->setEnabled( !CORBA::is_nil( myMainObj ) ); -} - -//================================================================================= -// function : selectionChanged -// purpose : -//================================================================================= -void GroupGUI_GroupDlg::selectionChanged() -{ - highlightSubShapes(); -} - -//================================================================================= -// function : highlightSubShapes -// purpose : -//================================================================================= -void GroupGUI_GroupDlg::highlightSubShapes() -{ - if ( CORBA::is_nil( myMainObj ) ) - return; - - Standard_Boolean isOk; - Handle(GEOM_AISShape) aSh = - GEOMBase::ConvertIORinGEOMAISShape( GEOMBase::GetIORFromObject( myMainObj ), isOk, true ); - if ( !isOk || aSh.IsNull() ) - return; - - TColStd_MapOfInteger anIds; - - myBusy = true; - - for ( int ii = 0, nn = myIdList->count(); ii < nn; ii++ ) - if ( myIdList->isSelected( ii ) ) - anIds.Add( myIdList->item( ii )->text().toInt() ); - - SalomeApp_SelectionMgr* aSelMgr = ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(); - aSelMgr->clearSelected(); - aSelMgr->AddOrRemoveIndex( aSh->getIO(), anIds, false ); - - myBusy = false; - - updateState(); -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr GroupGUI_GroupDlg::createOperation() -{ - return getGeomEngine()->GetIGroupOperations( getStudyId() ); -} - -#define RETURN_WITH_MSG(a, b) \ - if ( !(a) ) { \ - theMessage += (b); \ - return false; \ - } - -//================================================================================= -// function : isValid() -// purpose : Verify validity of input data -//================================================================================= -bool GroupGUI_GroupDlg::isValid( QString& theMessage ) -{ - SalomeApp_Study* study = getStudy(); - ASSERT(study); - RETURN_WITH_MSG ( !study->studyDS()->GetProperties()->IsLocked(), tr( "GEOM_STUDY_LOCKED" ) ) - - if ( myMode == CreateGroup ) { - RETURN_WITH_MSG( !CORBA::is_nil( myMainObj ), tr( "NO_MAIN_OBJ" ) ) - } - else { - RETURN_WITH_MSG( !CORBA::is_nil( myMainObj ), tr( "NO_GROUP" ) ) - } - - const char* aName = getNewObjectName(); - RETURN_WITH_MSG ( aName && strlen( aName ), tr( "EMPTY_NAME" ) ) - - RETURN_WITH_MSG ( myIdList->count(), tr( "EMPTY_LIST" ) ) - return true; -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool GroupGUI_GroupDlg::execute( ObjectList& objects ) -{ - GEOM::GEOM_IGroupOperations_var anOp = GEOM::GEOM_IGroupOperations::_narrow( getOperation() ); - - GEOM::GEOM_Object_var aGroup; - if ( myMode == CreateGroup ) - aGroup = anOp->CreateGroup( myMainObj, getShapeType() ); - else if ( myMode == EditGroup ) - aGroup = myGroup; - - if ( CORBA::is_nil( aGroup ) || ( myMode == CreateGroup && !anOp->IsDone() ) ) - return false; - - GEOM::ListOfLong_var aCurrList = anOp->GetObjects( aGroup ); - if ( !anOp->IsDone() ) - return false; - - for ( int i = 0, n = aCurrList->length(); i < n; i++ ) { - anOp->RemoveObject( aGroup, aCurrList[i] ); - if ( !anOp->IsDone() ) - return false; - } - - for ( int ii = 0, nn = myIdList->count(); ii < nn; ii++ ) { - anOp->AddObject( aGroup, myIdList->item( ii )->text().toInt() ); - if ( !anOp->IsDone() ) - return false; - } - - SalomeApp_Study* study = getStudy(); - if ( study ) { - string IOR = GEOMBase::GetIORFromObject( aGroup ); - if ( IOR != "" ) { - _PTR(SObject) SO ( study->studyDS()->FindObjectIOR( IOR ) ); - if ( SO ) { - _PTR(StudyBuilder) aBuilder (study->studyDS()->NewBuilder()); - aBuilder->SetName( SO, getNewObjectName() ); - } - } - } - - objects.push_back( aGroup._retn() ); - - return true; -} - -//================================================================ -// Function : getFather -// Purpose : Get father object for object to be added in study -// ( called with addInStudy method ) -//================================================================ -GEOM::GEOM_Object_ptr GroupGUI_GroupDlg::getFather( GEOM::GEOM_Object_ptr theObj ) -{ - GEOM::GEOM_Object_var aFatherObj; - if ( theObj->GetType() == GEOM_GROUP ) { - GEOM::GEOM_IGroupOperations_var anOp = GEOM::GEOM_IGroupOperations::_narrow( getOperation() ); - aFatherObj = anOp->GetMainShape( theObj ); - } - return aFatherObj._retn(); -} diff --git a/src/GroupGUI/GroupGUI_GroupDlg.h b/src/GroupGUI/GroupGUI_GroupDlg.h deleted file mode 100644 index 75879c54d..000000000 --- a/src/GroupGUI/GroupGUI_GroupDlg.h +++ /dev/null @@ -1,103 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2004 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.org -// -// -// -// File : GroupGUI_GroupDlg.h -// Author : Sergey ANIKIN -// Module : GEOM -// $Header$ - -#ifndef GROUPGUI_GROUPDLG_H -#define GROUPGUI_GROUPDLG_H - -#include "GEOMBase_Skeleton.h" - -#include - -class QLineEdit; -class QListBox; - -//================================================================================= -// class : GroupGUI_GroupDlg -// purpose : -//================================================================================= -class GroupGUI_GroupDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - typedef enum { - CreateGroup, - EditGroup - } Mode; - - GroupGUI_GroupDlg(Mode mode, QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~GroupGUI_GroupDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& msg ); - virtual bool execute( ObjectList& objects ); - virtual GEOM::GEOM_Object_ptr getFather( GEOM::GEOM_Object_ptr theObj ); - - -private slots: - void ClickOnOk(); - bool ClickOnApply(); - void ActivateThisDialog(); - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - void ConstructorsClicked( int constructorId ); - - void selectAllSubShapes(); - void add(); - void remove(); - void selectionChanged(); - -private: - void Init(); - void enterEvent( QEvent* e ); - int getConstructorId() const; - TopAbs_ShapeEnum getShapeType() const; - void setShapeType( const TopAbs_ShapeEnum ); - void activateSelection(); - void updateState(); - void highlightSubShapes(); - -private: - Mode myMode; - bool myBusy; - GEOM::GEOM_Object_var myMainObj; - GEOM::GEOM_Object_var myGroup; - - QPushButton* mySelBtn; - QLineEdit* myMainName; - QPushButton* mySelSubBtn; - QPushButton* mySelAllBtn; - QPushButton* myAddBtn; - QPushButton* myRemBtn; - QListBox* myIdList; -}; - -#endif diff --git a/src/GroupGUI/Makefile.in b/src/GroupGUI/Makefile.in deleted file mode 100755 index 26a351ad4..000000000 --- a/src/GroupGUI/Makefile.in +++ /dev/null @@ -1,60 +0,0 @@ -# GEOM BUILDGUI : -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.org -# -# -# -# File : Makefile.in -# Author : Sergey ANIKIN (OCC) -# Module : GEOM -# $Header: - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -# header files -EXPORT_HEADERS= - -# Libraries targets -LIB = libGroupGUI.la - -LIB_SRC = GroupGUI.cxx \ - GroupGUI_GroupDlg.cxx - -LIB_MOC = GroupGUI.h \ - GroupGUI_GroupDlg.h - -LIB_CLIENT_IDL = SALOME_GenericObj.idl SALOME_Component.idl SALOME_Exception.idl - -LIB_SERVER_IDL = - -# additionnal information to compil and link file - -CPPFLAGS += $(QT_INCLUDES) $(VTK_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES) $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome -CXXFLAGS += -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome - -LDFLAGS += -lGEOMFiltersSelection -lGEOMBase - -@CONCLUDE@ diff --git a/src/IGESExport/IGESExport.cxx b/src/IGESExport/IGESExport.cxx deleted file mode 100644 index 463f31c96..000000000 --- a/src/IGESExport/IGESExport.cxx +++ /dev/null @@ -1,52 +0,0 @@ -// File: IGESExport.cxx -// Created: Wed May 19 14:49:45 2004 -// Author: Pavel TELKOV -// - -#include "utilities.h" - -#include -#include -#include - -#include -#include - -#ifdef WNT -#include -#else -#define SALOME_WNT_EXPORT -#endif - -//============================================================================= -/*! - * - */ -//============================================================================= - -extern "C" -{ -SALOME_WNT_EXPORT - int Export(const TopoDS_Shape& theShape, const TCollection_AsciiString& theFileName) - { - MESSAGE("Export IGES into file " << theFileName.ToCString()); - try - { - //VRV: OCC 4.0 migration - IGESControl_Controller::Init(); - IGESControl_Writer ICW (Interface_Static::CVal("XSTEP.iges.unit"), - Interface_Static::IVal("XSTEP.iges.writebrep.mode")); - //VRV: OCC 4.0 migration - - ICW.AddShape( theShape ); - ICW.ComputeModel(); - if ( ICW.Write( theFileName.ToCString() ) ) - return 1; - } - catch(Standard_Failure) - { - //THROW_SALOME_CORBA_EXCEPTION("Exception catched in IGESExport", SALOME::BAD_PARAM); - } - return 0; - } -} diff --git a/src/IGESExport/Makefile.in b/src/IGESExport/Makefile.in deleted file mode 100644 index d9abe4c34..000000000 --- a/src/IGESExport/Makefile.in +++ /dev/null @@ -1,45 +0,0 @@ -# Copyright (C) 2003 CEA -# -# 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. -# -# 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.org -# -# -# -# File : Makefile.in -# Author : Pavel TELKOV -# Module : GEOM -# $Header$ - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - -@COMMENCE@ - -# Libraries targets - -LIB= libIGESExport.la - -LIB_SRC = IGESExport.cxx - -# additionnal information to compil and link file -CPPFLAGS+= $(OCC_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome -CXXFLAGS+= $(OCC_CXXFLAGS) -I${KERNEL_ROOT_DIR}/include/salome - -LDFLAGS+= $(CAS_LDPATH) -lTKIGES -L${KERNEL_ROOT_DIR}/lib/salome - -@CONCLUDE@ diff --git a/src/IGESImport/IGESImport.cxx b/src/IGESImport/IGESImport.cxx deleted file mode 100644 index 840f25835..000000000 --- a/src/IGESImport/IGESImport.cxx +++ /dev/null @@ -1,76 +0,0 @@ -// File: IGESImport.cxx -// Created: Wed May 19 14:36:35 2004 -// Author: Pavel TELKOV -// - -#include "utilities.h" - -#include -#include - -#include -#include - -#ifdef WNT -#include -#else -#define SALOME_WNT_EXPORT -#endif - -//============================================================================= -/*! - * - */ -//============================================================================= - -extern "C" -{ -SALOME_WNT_EXPORT - TopoDS_Shape Import (const TCollection_AsciiString& theFileName, - TCollection_AsciiString& theError) - { - IGESControl_Reader aReader; - TopoDS_Shape aResShape; - try { - IFSelect_ReturnStatus status = aReader.ReadFile(theFileName.ToCString()); - - if (status == IFSelect_RetDone) { - MESSAGE("ImportIGES : all Geometry Transfer"); - //OCC 5.1.2 porting - // aReader.Clear(); - // aReader.TransferRoots(false); - aReader.ClearShapes(); - aReader.TransferRoots(); - - MESSAGE("ImportIGES : count of shapes produced = " << aReader.NbShapes()); - aResShape = aReader.OneShape(); - - } else { -// switch (status) { -// case IFSelect_RetVoid: -// theError = "Nothing created or No data to process"; -// break; -// case IFSelect_RetError: -// theError = "Error in command or input data"; -// break; -// case IFSelect_RetFail: -// theError = "Execution was run, but has failed"; -// break; -// case IFSelect_RetStop: -// theError = "Execution has been stopped. Quite possible, an exception was raised"; -// break; -// default: -// break; -// } - theError = "Wrong format of the imported file. Can't import file."; - aResShape.Nullify(); - } - } - catch(Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - theError = aFail->GetMessageString(); - aResShape.Nullify(); - } - return aResShape; - } -} diff --git a/src/IGESImport/Makefile.in b/src/IGESImport/Makefile.in deleted file mode 100644 index e9aaaa840..000000000 --- a/src/IGESImport/Makefile.in +++ /dev/null @@ -1,45 +0,0 @@ -# Copyright (C) 2003 CEA -# -# 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. -# -# 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.org -# -# -# -# File : Makefile.in -# Author : Pavel TELKOV -# Module : GEOM -# $Header$ - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - -@COMMENCE@ - -# Libraries targets - -LIB= libIGESImport.la - -LIB_SRC = IGESImport.cxx - -# additionnal information to compil and link file -CPPFLAGS+= $(OCC_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome -CXXFLAGS+= $(OCC_CXXFLAGS) -I${KERNEL_ROOT_DIR}/include/salome - -LDFLAGS+= $(CAS_LDPATH) -lTKIGES -L${KERNEL_ROOT_DIR}/lib/salome - -@CONCLUDE@ diff --git a/src/Makefile.in b/src/Makefile.in deleted file mode 100644 index fe15b01b1..000000000 --- a/src/Makefile.in +++ /dev/null @@ -1,37 +0,0 @@ -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Author : Patrick GOLDBRONN (CEA) -# Module : GEOM -# $Header$ - -top_srcdir=@top_srcdir@ -top_builddir=.. -srcdir=@srcdir@ -VPATH=.:@srcdir@ - - -@COMMENCE@ - -SUBDIRS = OBJECT ARCHIMEDE NMTDS NMTTools NMTAlgo GEOMAlgo SKETCHER GEOM BREPExport BREPImport IGESExport IGESImport STEPExport STEPImport ShHealOper GEOMImpl GEOM_I GEOMClient DlgRef GEOMFiltersSelection GEOMGUI GEOMBase GEOMToolsGUI DisplayGUI BasicGUI PrimitiveGUI GenerationGUI EntityGUI BuildGUI BooleanGUI TransformationGUI OperationGUI RepairGUI MeasureGUI GroupGUI BlocksGUI GEOM_I_Superv GEOM_SWIG - -@MODULE@ diff --git a/src/MeasureGUI/Makefile.in b/src/MeasureGUI/Makefile.in deleted file mode 100644 index 7bb4af629..000000000 --- a/src/MeasureGUI/Makefile.in +++ /dev/null @@ -1,92 +0,0 @@ -# GEOM MEASUREGUI : -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Author : Damien COQUERET (OCC) -# Module : GEOM -# $Header: - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -# header files -EXPORT_HEADERS= - -# Libraries targets -LIB = libMeasureGUI.la - -LIB_SRC = MeasureGUI.cxx \ - MeasureGUI_Skeleton_QTD.cxx \ - MeasureGUI_1Sel3LineEdit_QTD.cxx \ - MeasureGUI_1Sel6LineEdit_QTD.cxx \ - MeasureGUI_1Sel12LineEdit_QTD.cxx \ - MeasureGUI_1Sel1TextView_QTD.cxx \ - MeasureGUI_2Sel1LineEdit_QTD.cxx \ - MeasureGUI_Skeleton.cxx \ - MeasureGUI_PropertiesDlg.cxx \ - MeasureGUI_CenterMassDlg.cxx \ - MeasureGUI_InertiaDlg.cxx \ - MeasureGUI_BndBoxDlg.cxx \ - MeasureGUI_DistanceDlg.cxx \ - MeasureGUI_MaxToleranceDlg.cxx \ - MeasureGUI_WhatisDlg.cxx \ - MeasureGUI_CheckShapeDlg.cxx \ - MeasureGUI_CheckCompoundOfBlocksDlg.cxx \ - MeasureGUI_PointDlg.cxx - -LIB_MOC = \ - MeasureGUI_Skeleton_QTD.h \ - MeasureGUI_1Sel3LineEdit_QTD.h \ - MeasureGUI_1Sel6LineEdit_QTD.h \ - MeasureGUI_1Sel12LineEdit_QTD.h \ - MeasureGUI_1Sel1TextView_QTD.h \ - MeasureGUI_2Sel1LineEdit_QTD.h \ - MeasureGUI_Skeleton.h \ - MeasureGUI_PropertiesDlg.h \ - MeasureGUI_CenterMassDlg.h \ - MeasureGUI_InertiaDlg.h \ - MeasureGUI_BndBoxDlg.h \ - MeasureGUI_DistanceDlg.h \ - MeasureGUI_MaxToleranceDlg.h \ - MeasureGUI_WhatisDlg.h \ - MeasureGUI_CheckShapeDlg.h \ - MeasureGUI_CheckCompoundOfBlocksDlg.h \ - MeasureGUI_PointDlg.h - -LIB_CLIENT_IDL = SALOME_Exception.idl SALOME_GenericObj.idl SALOME_Component.idl - -LIB_SERVER_IDL = - -# additionnal information to compil and link file - -CPPFLAGS += $(QT_INCLUDES) $(VTK_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES) $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome -CXXFLAGS += -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome - -LDFLAGS += -lGEOMBase - -@CONCLUDE@ diff --git a/src/MeasureGUI/MeasureGUI.cxx b/src/MeasureGUI/MeasureGUI.cxx deleted file mode 100644 index b49f9eed5..000000000 --- a/src/MeasureGUI/MeasureGUI.cxx +++ /dev/null @@ -1,148 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : MeasureGUI.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header$ - -#include "MeasureGUI.h" -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" - -#include "SalomeApp_Tools.h" - -#include "MeasureGUI_PropertiesDlg.h" // Method PROPERTIES -#include "MeasureGUI_CenterMassDlg.h" // Method CENTER MASS -#include "MeasureGUI_InertiaDlg.h" // Method INERTIA -#include "MeasureGUI_BndBoxDlg.h" // Method BNDBOX -#include "MeasureGUI_DistanceDlg.h" // Method DISTANCE -#include "MeasureGUI_MaxToleranceDlg.h" // Method MAXTOLERANCE -#include "MeasureGUI_WhatisDlg.h" // Method WHATIS -#include "MeasureGUI_CheckShapeDlg.h" // Method CHECKSHAPE -#include "MeasureGUI_CheckCompoundOfBlocksDlg.h" // Method CHECKCOMPOUND -#include "MeasureGUI_PointDlg.h" // Method POINTCOORDINATES - -MeasureGUI* MeasureGUI::myGUIObject = 0; - -//======================================================================= -// function : GetMeasureGUI() -// purpose : Get the only MeasureGUI object [ static ] -//======================================================================= -MeasureGUI* MeasureGUI::GetMeasureGUI( GeometryGUI* parent ) -{ - if ( myGUIObject == 0 ) { - // init MeasureGUI only once - myGUIObject = new MeasureGUI( parent ); - } - return myGUIObject; -} - -//======================================================================= -// function : MeasureGUI() -// purpose : Constructor -//======================================================================= -MeasureGUI::MeasureGUI( GeometryGUI* parent ) : GEOMGUI( parent ) -{ -} - - -//======================================================================= -// function : ~MeasureGUI() -// purpose : Destructor -//======================================================================= -MeasureGUI::~MeasureGUI() -{ -} - - -//======================================================================= -// function : OnGUIEvent() -// purpose : -//======================================================================= -bool MeasureGUI::OnGUIEvent( int theCommandID, SUIT_Desktop* parent ) -{ - MeasureGUI* myMeasureGUI = GetMeasureGUI( getGeometryGUI() ); - getGeometryGUI()->EmitSignalDeactivateDialog(); - - switch ( theCommandID ) - { - case 701 : new MeasureGUI_PropertiesDlg ( getGeometryGUI(), parent ); break; // LENGTH, AREA AND VOLUME - case 702 : new MeasureGUI_CenterMassDlg ( parent ); break; // CENTER MASS - case 703 : new MeasureGUI_InertiaDlg ( getGeometryGUI(), parent ); break; // INERTIA - case 7041 : new MeasureGUI_BndBoxDlg ( getGeometryGUI(), parent ); break; // BOUNDING BOX - case 7042 : new MeasureGUI_DistanceDlg ( getGeometryGUI(), parent ); break; // MIN DISTANCE - case 705 : new MeasureGUI_MaxToleranceDlg( getGeometryGUI(), parent ); break; // MAXTOLERANCE - case 706 : new MeasureGUI_WhatisDlg ( getGeometryGUI(), parent ); break; // WHATIS - case 707 : new MeasureGUI_CheckShapeDlg ( getGeometryGUI(), parent ); break; // CHECKSHAPE - case 7072 : new MeasureGUI_CheckCompoundOfBlocksDlg ( getGeometryGUI(), parent ); break; // CHECKCOMPOUND - case 708 : new MeasureGUI_PointDlg ( getGeometryGUI(), parent ); break; // POINT COORDINATES - - default: - SUIT_Session::session()->activeApplication()->putInfo( tr( "GEOM_PRP_COMMAND" ).arg( theCommandID ) ); - break; - } - return true; -} - - -//===================================================================================== -// function : MakeCDGAndDisplay() -// purpose : -//===================================================================================== -/*void MeasureGUI::MakeCDGAndDisplay(GEOM::GEOM_Shape_ptr Shape) -{ - QAD_Application::getDesktop()->putInfo("MakeCDGAndDisplay method from MeasureGUI should be reimplemented ..."); - - try { - GEOM::GEOM_Shape_var result = myGeom->MakeCDG(Shape); - if(result->_is_nil()) { - QAD_Application::getDesktop()->putInfo(tr("GEOM_PRP_ABORT")); - return; - } - result->NameType(tr("GEOM_POINT")); - if(myGeomBase->Display(result)) - QAD_Application::getDesktop()->putInfo(tr("GEOM_PRP_DONE")); - } - catch(const SALOME::SALOME_Exception& S_ex) { - SalomeApp_Tools::QtCatchCorbaException(S_ex); - } - - return; -} -*/ - - -//===================================================================================== -// EXPORTED METHODS -//===================================================================================== -extern "C" -{ -#ifdef WNT - __declspec( dllexport ) -#endif - GEOMGUI* GetLibGUI( GeometryGUI* parent ) - { - return MeasureGUI::GetMeasureGUI( parent ); - } -} diff --git a/src/MeasureGUI/MeasureGUI.h b/src/MeasureGUI/MeasureGUI.h deleted file mode 100644 index 2a34e5e7a..000000000 --- a/src/MeasureGUI/MeasureGUI.h +++ /dev/null @@ -1,52 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : MeasureGUI.h -// Author : Damien COQUERET -// Module : GEOM -// $Header$ - -#ifndef MEASUREGUI_H -#define MEASUREGUI_H - -#include "GEOMGUI.h" - -//================================================================================= -// class : MeasureGUI -// purpose : -//================================================================================= -class MeasureGUI : public GEOMGUI -{ -protected: - MeasureGUI( GeometryGUI* parent ); - -public : - ~MeasureGUI(); - static MeasureGUI* GetMeasureGUI( GeometryGUI* parent ); - bool OnGUIEvent( int , SUIT_Desktop* ); - -private: - static MeasureGUI* myGUIObject; -}; - -#endif diff --git a/src/MeasureGUI/MeasureGUI_1Sel12LineEdit_QTD.cxx b/src/MeasureGUI/MeasureGUI_1Sel12LineEdit_QTD.cxx deleted file mode 100644 index a83fbe4a5..000000000 --- a/src/MeasureGUI/MeasureGUI_1Sel12LineEdit_QTD.cxx +++ /dev/null @@ -1,150 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'MeasureGUI_1Sel12LineEdit_QTD.ui' -** -** Created: mar oct 28 16:11:14 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "MeasureGUI_1Sel12LineEdit_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a MeasureGUI_1Sel12LineEdit_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -MeasureGUI_1Sel12LineEdit_QTD::MeasureGUI_1Sel12LineEdit_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "MeasureGUI_1Sel12LineEdit_QTD" ); - resize( 131, 171 ); - setCaption( trUtf8( "MeasureGUI_1Sel12LineEdit_QTD" ) ); - MeasureGUI_1Sel12LineEdit_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "MeasureGUI_1Sel12LineEdit_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)7, 0, 0, GroupBox1->sizePolicy().hasHeightForWidth() ) ); - GroupBox1->setTitle( trUtf8( "" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - - Layout2 = new QGridLayout( 0, 1, 1, 0, 6, "Layout2"); - - LineEdit12 = new QLineEdit( GroupBox1, "LineEdit12" ); - - Layout2->addWidget( LineEdit12, 0, 2 ); - - LineEdit11 = new QLineEdit( GroupBox1, "LineEdit11" ); - - Layout2->addWidget( LineEdit11, 0, 1 ); - - LineEdit42 = new QLineEdit( GroupBox1, "LineEdit42" ); - - Layout2->addWidget( LineEdit42, 3, 2 ); - - TextLabel5 = new QLabel( GroupBox1, "TextLabel5" ); - TextLabel5->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel5->sizePolicy().hasHeightForWidth() ) ); - TextLabel5->setText( trUtf8( "TL5" ) ); - - Layout2->addWidget( TextLabel5, 3, 0 ); - - LineEdit31 = new QLineEdit( GroupBox1, "LineEdit31" ); - - Layout2->addWidget( LineEdit31, 2, 1 ); - - LineEdit41 = new QLineEdit( GroupBox1, "LineEdit41" ); - - Layout2->addWidget( LineEdit41, 3, 1 ); - - LineEdit23 = new QLineEdit( GroupBox1, "LineEdit23" ); - - Layout2->addWidget( LineEdit23, 1, 3 ); - - LineEdit33 = new QLineEdit( GroupBox1, "LineEdit33" ); - - Layout2->addWidget( LineEdit33, 2, 3 ); - - LineEdit43 = new QLineEdit( GroupBox1, "LineEdit43" ); - - Layout2->addWidget( LineEdit43, 3, 3 ); - - LineEdit22 = new QLineEdit( GroupBox1, "LineEdit22" ); - - Layout2->addWidget( LineEdit22, 1, 2 ); - - TextLabel2 = new QLabel( GroupBox1, "TextLabel2" ); - TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) ); - TextLabel2->setText( trUtf8( "TL2" ) ); - - Layout2->addWidget( TextLabel2, 0, 0 ); - - TextLabel4 = new QLabel( GroupBox1, "TextLabel4" ); - TextLabel4->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel4->sizePolicy().hasHeightForWidth() ) ); - TextLabel4->setText( trUtf8( "TL4" ) ); - - Layout2->addWidget( TextLabel4, 2, 0 ); - - LineEdit13 = new QLineEdit( GroupBox1, "LineEdit13" ); - - Layout2->addWidget( LineEdit13, 0, 3 ); - - LineEdit32 = new QLineEdit( GroupBox1, "LineEdit32" ); - - Layout2->addWidget( LineEdit32, 2, 2 ); - - LineEdit21 = new QLineEdit( GroupBox1, "LineEdit21" ); - - Layout2->addWidget( LineEdit21, 1, 1 ); - - TextLabel3 = new QLabel( GroupBox1, "TextLabel3" ); - TextLabel3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel3->sizePolicy().hasHeightForWidth() ) ); - TextLabel3->setText( trUtf8( "TL3" ) ); - - Layout2->addWidget( TextLabel3, 1, 0 ); - - Layout1->addMultiCellLayout( Layout2, 1, 1, 0, 2 ); - - LineEdit1 = new QLineEdit( GroupBox1, "LineEdit1" ); - - Layout1->addWidget( LineEdit1, 0, 2 ); - QSpacerItem* spacer = new QSpacerItem( 0, 40, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout1->addItem( spacer, 2, 2 ); - - PushButton1 = new QPushButton( GroupBox1, "PushButton1" ); - PushButton1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton1->sizePolicy().hasHeightForWidth() ) ); - PushButton1->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton1, 0, 1 ); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - Layout1->addWidget( TextLabel1, 0, 0 ); - - GroupBox1Layout->addLayout( Layout1, 0, 0 ); - - MeasureGUI_1Sel12LineEdit_QTDLayout->addWidget( GroupBox1, 0, 0 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -MeasureGUI_1Sel12LineEdit_QTD::~MeasureGUI_1Sel12LineEdit_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/MeasureGUI/MeasureGUI_1Sel12LineEdit_QTD.h b/src/MeasureGUI/MeasureGUI_1Sel12LineEdit_QTD.h deleted file mode 100644 index 6d63c89e9..000000000 --- a/src/MeasureGUI/MeasureGUI_1Sel12LineEdit_QTD.h +++ /dev/null @@ -1,59 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'MeasureGUI_1Sel12LineEdit_QTD.ui' -** -** Created: mar oct 28 16:11:14 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef MEASUREGUI_1SEL12LINEEDIT_QTD_H -#define MEASUREGUI_1SEL12LINEEDIT_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QGroupBox; -class QLabel; -class QLineEdit; -class QPushButton; - -class MeasureGUI_1Sel12LineEdit_QTD : public QWidget -{ - Q_OBJECT - -public: - MeasureGUI_1Sel12LineEdit_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~MeasureGUI_1Sel12LineEdit_QTD(); - - QGroupBox* GroupBox1; - QLineEdit* LineEdit12; - QLineEdit* LineEdit11; - QLineEdit* LineEdit42; - QLabel* TextLabel5; - QLineEdit* LineEdit31; - QLineEdit* LineEdit41; - QLineEdit* LineEdit23; - QLineEdit* LineEdit33; - QLineEdit* LineEdit43; - QLineEdit* LineEdit22; - QLabel* TextLabel2; - QLabel* TextLabel4; - QLineEdit* LineEdit13; - QLineEdit* LineEdit32; - QLineEdit* LineEdit21; - QLabel* TextLabel3; - QLineEdit* LineEdit1; - QPushButton* PushButton1; - QLabel* TextLabel1; - - -protected: - QGridLayout* MeasureGUI_1Sel12LineEdit_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* Layout1; - QGridLayout* Layout2; -}; - -#endif // MEASUREGUI_1SEL12LINEEDIT_QTD_H diff --git a/src/MeasureGUI/MeasureGUI_1Sel1TextView_QTD.cxx b/src/MeasureGUI/MeasureGUI_1Sel1TextView_QTD.cxx deleted file mode 100644 index c5c2263da..000000000 --- a/src/MeasureGUI/MeasureGUI_1Sel1TextView_QTD.cxx +++ /dev/null @@ -1,77 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'MeasureGUI_1Sel1TextView_QTD.ui' -** -** Created: mar oct 28 14:01:15 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "MeasureGUI_1Sel1TextView_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a MeasureGUI_1Sel1TextView_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -MeasureGUI_1Sel1TextView_QTD::MeasureGUI_1Sel1TextView_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "MeasureGUI_1Sel1TextView_QTD" ); - resize( 130, 160 ); - setCaption( trUtf8( "MeasureGUI_1Sel1TextView_QTD" ) ); - MeasureGUI_1Sel1TextView_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "MeasureGUI_1Sel1TextView_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)7, 0, 0, GroupBox1->sizePolicy().hasHeightForWidth() ) ); - GroupBox1->setTitle( trUtf8( "" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - Layout1->addWidget( TextLabel1, 0, 0 ); - - TextEdit1 = new QTextEdit( GroupBox1, "TextEdit1" ); - - Layout1->addMultiCellWidget( TextEdit1, 1, 1, 0, 2 ); - - LineEdit1 = new QLineEdit( GroupBox1, "LineEdit1" ); - - Layout1->addWidget( LineEdit1, 0, 2 ); - - PushButton1 = new QPushButton( GroupBox1, "PushButton1" ); - PushButton1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton1->sizePolicy().hasHeightForWidth() ) ); - PushButton1->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton1, 0, 1 ); - - GroupBox1Layout->addLayout( Layout1, 0, 0 ); - - MeasureGUI_1Sel1TextView_QTDLayout->addWidget( GroupBox1, 0, 0 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -MeasureGUI_1Sel1TextView_QTD::~MeasureGUI_1Sel1TextView_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/MeasureGUI/MeasureGUI_1Sel1TextView_QTD.h b/src/MeasureGUI/MeasureGUI_1Sel1TextView_QTD.h deleted file mode 100644 index baa5b7872..000000000 --- a/src/MeasureGUI/MeasureGUI_1Sel1TextView_QTD.h +++ /dev/null @@ -1,44 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'MeasureGUI_1Sel1TextView_QTD.ui' -** -** Created: mar oct 28 14:01:14 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef MEASUREGUI_1SEL1TEXTVIEW_QTD_H -#define MEASUREGUI_1SEL1TEXTVIEW_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QGroupBox; -class QLabel; -class QLineEdit; -class QPushButton; -class QTextEdit; - -class MeasureGUI_1Sel1TextView_QTD : public QWidget -{ - Q_OBJECT - -public: - MeasureGUI_1Sel1TextView_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~MeasureGUI_1Sel1TextView_QTD(); - - QGroupBox* GroupBox1; - QLabel* TextLabel1; - QTextEdit* TextEdit1; - QLineEdit* LineEdit1; - QPushButton* PushButton1; - - -protected: - QGridLayout* MeasureGUI_1Sel1TextView_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* Layout1; -}; - -#endif // MEASUREGUI_1SEL1TEXTVIEW_QTD_H diff --git a/src/MeasureGUI/MeasureGUI_1Sel3LineEdit_QTD.cxx b/src/MeasureGUI/MeasureGUI_1Sel3LineEdit_QTD.cxx deleted file mode 100644 index af0be4fe4..000000000 --- a/src/MeasureGUI/MeasureGUI_1Sel3LineEdit_QTD.cxx +++ /dev/null @@ -1,104 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'MeasureGUI_1Sel3LineEdit_QTD.ui' -** -** Created: mar oct 28 16:11:13 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "MeasureGUI_1Sel3LineEdit_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a MeasureGUI_1Sel3LineEdit_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -MeasureGUI_1Sel3LineEdit_QTD::MeasureGUI_1Sel3LineEdit_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "MeasureGUI_1Sel3LineEdit_QTD" ); - resize( 129, 141 ); - setCaption( trUtf8( "MeasureGUI_1Sel3LineEdit_QTD" ) ); - MeasureGUI_1Sel3LineEdit_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "MeasureGUI_1Sel3LineEdit_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)7, 0, 0, GroupBox1->sizePolicy().hasHeightForWidth() ) ); - GroupBox1->setTitle( trUtf8( "" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout2 = new QGridLayout( 0, 1, 1, 0, 6, "Layout2"); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - Layout2->addWidget( TextLabel1, 0, 0 ); - - LineEdit4 = new QLineEdit( GroupBox1, "LineEdit4" ); - - Layout2->addMultiCellWidget( LineEdit4, 3, 3, 1, 2 ); - - TextLabel3 = new QLabel( GroupBox1, "TextLabel3" ); - TextLabel3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel3->sizePolicy().hasHeightForWidth() ) ); - TextLabel3->setText( trUtf8( "TL3" ) ); - - Layout2->addWidget( TextLabel3, 2, 0 ); - - LineEdit2 = new QLineEdit( GroupBox1, "LineEdit2" ); - - Layout2->addMultiCellWidget( LineEdit2, 1, 1, 1, 2 ); - QSpacerItem* spacer = new QSpacerItem( 0, 80, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout2->addItem( spacer, 4, 2 ); - - LineEdit3 = new QLineEdit( GroupBox1, "LineEdit3" ); - - Layout2->addMultiCellWidget( LineEdit3, 2, 2, 1, 2 ); - - LineEdit1 = new QLineEdit( GroupBox1, "LineEdit1" ); - - Layout2->addWidget( LineEdit1, 0, 2 ); - - TextLabel4 = new QLabel( GroupBox1, "TextLabel4" ); - TextLabel4->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel4->sizePolicy().hasHeightForWidth() ) ); - TextLabel4->setText( trUtf8( "TL4" ) ); - - Layout2->addWidget( TextLabel4, 3, 0 ); - - TextLabel2 = new QLabel( GroupBox1, "TextLabel2" ); - TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) ); - TextLabel2->setText( trUtf8( "TL2" ) ); - - Layout2->addWidget( TextLabel2, 1, 0 ); - - PushButton1 = new QPushButton( GroupBox1, "PushButton1" ); - PushButton1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton1->sizePolicy().hasHeightForWidth() ) ); - PushButton1->setText( trUtf8( "" ) ); - - Layout2->addWidget( PushButton1, 0, 1 ); - - GroupBox1Layout->addLayout( Layout2, 0, 0 ); - - MeasureGUI_1Sel3LineEdit_QTDLayout->addWidget( GroupBox1, 0, 0 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -MeasureGUI_1Sel3LineEdit_QTD::~MeasureGUI_1Sel3LineEdit_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/MeasureGUI/MeasureGUI_1Sel3LineEdit_QTD.h b/src/MeasureGUI/MeasureGUI_1Sel3LineEdit_QTD.h deleted file mode 100644 index 1312639c7..000000000 --- a/src/MeasureGUI/MeasureGUI_1Sel3LineEdit_QTD.h +++ /dev/null @@ -1,48 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'MeasureGUI_1Sel3LineEdit_QTD.ui' -** -** Created: mar oct 28 16:11:13 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef MEASUREGUI_1SEL3LINEEDIT_QTD_H -#define MEASUREGUI_1SEL3LINEEDIT_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QGroupBox; -class QLabel; -class QLineEdit; -class QPushButton; - -class MeasureGUI_1Sel3LineEdit_QTD : public QWidget -{ - Q_OBJECT - -public: - MeasureGUI_1Sel3LineEdit_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~MeasureGUI_1Sel3LineEdit_QTD(); - - QGroupBox* GroupBox1; - QLabel* TextLabel1; - QLineEdit* LineEdit4; - QLabel* TextLabel3; - QLineEdit* LineEdit2; - QLineEdit* LineEdit3; - QLineEdit* LineEdit1; - QLabel* TextLabel4; - QLabel* TextLabel2; - QPushButton* PushButton1; - - -protected: - QGridLayout* MeasureGUI_1Sel3LineEdit_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* Layout2; -}; - -#endif // MEASUREGUI_1SEL3LINEEDIT_QTD_H diff --git a/src/MeasureGUI/MeasureGUI_1Sel6LineEdit_QTD.cxx b/src/MeasureGUI/MeasureGUI_1Sel6LineEdit_QTD.cxx deleted file mode 100644 index 9883295a2..000000000 --- a/src/MeasureGUI/MeasureGUI_1Sel6LineEdit_QTD.cxx +++ /dev/null @@ -1,132 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'MeasureGUI_1Sel6LineEdit_QTD.ui' -** -** Created: mar oct 28 16:11:14 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "MeasureGUI_1Sel6LineEdit_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a MeasureGUI_1Sel6LineEdit_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -MeasureGUI_1Sel6LineEdit_QTD::MeasureGUI_1Sel6LineEdit_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "MeasureGUI_1Sel6LineEdit_QTD" ); - resize( 129, 163 ); - setCaption( trUtf8( "MeasureGUI_1Sel6LineEdit_QTD" ) ); - MeasureGUI_1Sel6LineEdit_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "MeasureGUI_1Sel6LineEdit_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)7, 0, 0, GroupBox1->sizePolicy().hasHeightForWidth() ) ); - GroupBox1->setTitle( trUtf8( "" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - QSpacerItem* spacer = new QSpacerItem( 0, 50, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout1->addItem( spacer, 2, 2 ); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - Layout1->addWidget( TextLabel1, 0, 0 ); - - Layout2 = new QGridLayout( 0, 1, 1, 0, 6, "Layout2"); - - LineEdit22 = new QLineEdit( GroupBox1, "LineEdit22" ); - - Layout2->addWidget( LineEdit22, 2, 2 ); - - LineEdit32 = new QLineEdit( GroupBox1, "LineEdit32" ); - - Layout2->addWidget( LineEdit32, 3, 2 ); - - TextLabel4 = new QLabel( GroupBox1, "TextLabel4" ); - TextLabel4->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel4->sizePolicy().hasHeightForWidth() ) ); - TextLabel4->setText( trUtf8( "TL4" ) ); - - Layout2->addWidget( TextLabel4, 1, 0 ); - - LineEdit31 = new QLineEdit( GroupBox1, "LineEdit31" ); - - Layout2->addWidget( LineEdit31, 3, 1 ); - - TextLabel5 = new QLabel( GroupBox1, "TextLabel5" ); - TextLabel5->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel5->sizePolicy().hasHeightForWidth() ) ); - TextLabel5->setText( trUtf8( "TL5" ) ); - - Layout2->addWidget( TextLabel5, 2, 0 ); - - LineEdit11 = new QLineEdit( GroupBox1, "LineEdit11" ); - - Layout2->addWidget( LineEdit11, 1, 1 ); - - TextLabel6 = new QLabel( GroupBox1, "TextLabel6" ); - TextLabel6->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel6->sizePolicy().hasHeightForWidth() ) ); - TextLabel6->setText( trUtf8( "TL6" ) ); - - Layout2->addWidget( TextLabel6, 3, 0 ); - - LineEdit12 = new QLineEdit( GroupBox1, "LineEdit12" ); - - Layout2->addWidget( LineEdit12, 1, 2 ); - - TextLabel2 = new QLabel( GroupBox1, "TextLabel2" ); - TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) ); - TextLabel2->setText( trUtf8( "TL2" ) ); - - Layout2->addWidget( TextLabel2, 0, 1 ); - - LineEdit21 = new QLineEdit( GroupBox1, "LineEdit21" ); - - Layout2->addWidget( LineEdit21, 2, 1 ); - - TextLabel3 = new QLabel( GroupBox1, "TextLabel3" ); - TextLabel3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel3->sizePolicy().hasHeightForWidth() ) ); - TextLabel3->setText( trUtf8( "TL3" ) ); - - Layout2->addWidget( TextLabel3, 0, 2 ); - - Layout1->addMultiCellLayout( Layout2, 1, 1, 0, 2 ); - - PushButton1 = new QPushButton( GroupBox1, "PushButton1" ); - PushButton1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton1->sizePolicy().hasHeightForWidth() ) ); - PushButton1->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton1, 0, 1 ); - - LineEdit1 = new QLineEdit( GroupBox1, "LineEdit1" ); - - Layout1->addWidget( LineEdit1, 0, 2 ); - - GroupBox1Layout->addLayout( Layout1, 0, 0 ); - - MeasureGUI_1Sel6LineEdit_QTDLayout->addWidget( GroupBox1, 0, 0 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -MeasureGUI_1Sel6LineEdit_QTD::~MeasureGUI_1Sel6LineEdit_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/MeasureGUI/MeasureGUI_1Sel6LineEdit_QTD.h b/src/MeasureGUI/MeasureGUI_1Sel6LineEdit_QTD.h deleted file mode 100644 index cc8157a84..000000000 --- a/src/MeasureGUI/MeasureGUI_1Sel6LineEdit_QTD.h +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'MeasureGUI_1Sel6LineEdit_QTD.ui' -** -** Created: mar oct 28 16:11:13 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef MEASUREGUI_1SEL6LINEEDIT_QTD_H -#define MEASUREGUI_1SEL6LINEEDIT_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QGroupBox; -class QLabel; -class QLineEdit; -class QPushButton; - -class MeasureGUI_1Sel6LineEdit_QTD : public QWidget -{ - Q_OBJECT - -public: - MeasureGUI_1Sel6LineEdit_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~MeasureGUI_1Sel6LineEdit_QTD(); - - QGroupBox* GroupBox1; - QLabel* TextLabel1; - QLineEdit* LineEdit22; - QLineEdit* LineEdit32; - QLabel* TextLabel4; - QLineEdit* LineEdit31; - QLabel* TextLabel5; - QLineEdit* LineEdit11; - QLabel* TextLabel6; - QLineEdit* LineEdit12; - QLabel* TextLabel2; - QLineEdit* LineEdit21; - QLabel* TextLabel3; - QPushButton* PushButton1; - QLineEdit* LineEdit1; - - -protected: - QGridLayout* MeasureGUI_1Sel6LineEdit_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* Layout1; - QGridLayout* Layout2; -}; - -#endif // MEASUREGUI_1SEL6LINEEDIT_QTD_H diff --git a/src/MeasureGUI/MeasureGUI_2Sel1LineEdit_QTD.cxx b/src/MeasureGUI/MeasureGUI_2Sel1LineEdit_QTD.cxx deleted file mode 100644 index 0efb7a261..000000000 --- a/src/MeasureGUI/MeasureGUI_2Sel1LineEdit_QTD.cxx +++ /dev/null @@ -1,100 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'MeasureGUI_2Sel1LineEdit_QTD.ui' -** -** Created: mar oct 28 16:11:14 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "MeasureGUI_2Sel1LineEdit_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a MeasureGUI_2Sel1LineEdit_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - */ -MeasureGUI_2Sel1LineEdit_QTD::MeasureGUI_2Sel1LineEdit_QTD( QWidget* parent, const char* name, WFlags fl ) - : QWidget( parent, name, fl ) -{ - if ( !name ) - setName( "MeasureGUI_2Sel1LineEdit_QTD" ); - resize( 129, 115 ); - setCaption( trUtf8( "MeasureGUI_2Sel1LineEdit_QTD" ) ); - MeasureGUI_2Sel1LineEdit_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "MeasureGUI_2Sel1LineEdit_QTDLayout"); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)7, 0, 0, GroupBox1->sizePolicy().hasHeightForWidth() ) ); - GroupBox1->setTitle( trUtf8( "" ) ); - GroupBox1->setColumnLayout(0, Qt::Vertical ); - GroupBox1->layout()->setSpacing( 6 ); - GroupBox1->layout()->setMargin( 11 ); - GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); - GroupBox1Layout->setAlignment( Qt::AlignTop ); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - QSpacerItem* spacer = new QSpacerItem( 0, 60, QSizePolicy::Minimum, QSizePolicy::Expanding ); - Layout1->addItem( spacer, 3, 2 ); - - TextLabel3 = new QLabel( GroupBox1, "TextLabel3" ); - TextLabel3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel3->sizePolicy().hasHeightForWidth() ) ); - TextLabel3->setText( trUtf8( "TL3" ) ); - - Layout1->addWidget( TextLabel3, 2, 0 ); - - LineEdit3 = new QLineEdit( GroupBox1, "LineEdit3" ); - - Layout1->addMultiCellWidget( LineEdit3, 2, 2, 1, 2 ); - - LineEdit2 = new QLineEdit( GroupBox1, "LineEdit2" ); - - Layout1->addWidget( LineEdit2, 1, 2 ); - - TextLabel2 = new QLabel( GroupBox1, "TextLabel2" ); - TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) ); - TextLabel2->setText( trUtf8( "TL2" ) ); - - Layout1->addWidget( TextLabel2, 1, 0 ); - - TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); - TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); - TextLabel1->setText( trUtf8( "TL1" ) ); - - Layout1->addWidget( TextLabel1, 0, 0 ); - - PushButton1 = new QPushButton( GroupBox1, "PushButton1" ); - PushButton1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton1->sizePolicy().hasHeightForWidth() ) ); - PushButton1->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton1, 0, 1 ); - - LineEdit1 = new QLineEdit( GroupBox1, "LineEdit1" ); - - Layout1->addWidget( LineEdit1, 0, 2 ); - - PushButton2 = new QPushButton( GroupBox1, "PushButton2" ); - PushButton2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton2->sizePolicy().hasHeightForWidth() ) ); - PushButton2->setText( trUtf8( "" ) ); - - Layout1->addWidget( PushButton2, 1, 1 ); - - GroupBox1Layout->addLayout( Layout1, 0, 0 ); - - MeasureGUI_2Sel1LineEdit_QTDLayout->addWidget( GroupBox1, 0, 0 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -MeasureGUI_2Sel1LineEdit_QTD::~MeasureGUI_2Sel1LineEdit_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/MeasureGUI/MeasureGUI_2Sel1LineEdit_QTD.h b/src/MeasureGUI/MeasureGUI_2Sel1LineEdit_QTD.h deleted file mode 100644 index 192f6ef33..000000000 --- a/src/MeasureGUI/MeasureGUI_2Sel1LineEdit_QTD.h +++ /dev/null @@ -1,47 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'MeasureGUI_2Sel1LineEdit_QTD.ui' -** -** Created: mar oct 28 16:11:14 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef MEASUREGUI_2SEL1LINEEDIT_QTD_H -#define MEASUREGUI_2SEL1LINEEDIT_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QGroupBox; -class QLabel; -class QLineEdit; -class QPushButton; - -class MeasureGUI_2Sel1LineEdit_QTD : public QWidget -{ - Q_OBJECT - -public: - MeasureGUI_2Sel1LineEdit_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~MeasureGUI_2Sel1LineEdit_QTD(); - - QGroupBox* GroupBox1; - QLabel* TextLabel3; - QLineEdit* LineEdit3; - QLineEdit* LineEdit2; - QLabel* TextLabel2; - QLabel* TextLabel1; - QPushButton* PushButton1; - QLineEdit* LineEdit1; - QPushButton* PushButton2; - - -protected: - QGridLayout* MeasureGUI_2Sel1LineEdit_QTDLayout; - QGridLayout* GroupBox1Layout; - QGridLayout* Layout1; -}; - -#endif // MEASUREGUI_2SEL1LINEEDIT_QTD_H diff --git a/src/MeasureGUI/MeasureGUI_BndBoxDlg.cxx b/src/MeasureGUI/MeasureGUI_BndBoxDlg.cxx deleted file mode 100644 index b1e133cfc..000000000 --- a/src/MeasureGUI/MeasureGUI_BndBoxDlg.cxx +++ /dev/null @@ -1,210 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : MeasureGUI_BndBoxDlg.cxx -// Author : Nicolas REJNERI -// Module : GEOM -// $Header$ - -#include "MeasureGUI_BndBoxDlg.h" -#include "MeasureGUI_1Sel6LineEdit_QTD.h" - -#include "GEOMBase.h" -#include "GEOM_Displayer.h" - -#include - -#include "utilities.h" -#include "SUIT_Session.h" -#include "SalomeApp_Tools.h" - -#include -#include -#include -#include -#include -#include - -//================================================================================= -// class : MeasureGUI_BndBoxDlg() -// purpose : Constructs a MeasureGUI_BndBoxDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -MeasureGUI_BndBoxDlg::MeasureGUI_BndBoxDlg( GeometryGUI* GUI, QWidget* parent ) -: MeasureGUI_Skeleton( GUI, parent, "MeasureGUI_PropertiesDlg" ) -{ - QPixmap image0( SUIT_Session::session()->resourceMgr()->loadPixmap( - "GEOM",tr( "ICON_DLG_BOUNDING_BOX" ) ) ); - QPixmap image1( SUIT_Session::session()->resourceMgr()->loadPixmap( - "GEOM",tr( "ICON_SELECT" ) ) ); - - setCaption( tr( "GEOM_BNDBOX_TITLE" ) ); - - /***************************************************************/ - - GroupConstructors->setTitle( tr( "GEOM_BNDBOX" ) ); - RadioButton1->setPixmap( image0 ); - - myGrp = new MeasureGUI_1Sel6LineEdit_QTD( this, "myGrp" ); - myGrp->GroupBox1->setTitle( tr( "GEOM_BNDBOX_OBJDIM" ) ); - myGrp->TextLabel1->setText( tr( "GEOM_OBJECT" ) ); - myGrp->TextLabel2->setText( tr( "GEOM_MIN" ) ); - myGrp->TextLabel3->setText( tr( "GEOM_MAX" ) ); - myGrp->TextLabel4->setText( tr( "GEOM_X" ) ); - myGrp->TextLabel5->setText( tr( "GEOM_Y" ) ); - myGrp->TextLabel6->setText( tr( "GEOM_Z" ) ); - myGrp->LineEdit11->setReadOnly( TRUE ); - myGrp->LineEdit12->setReadOnly( TRUE ); - myGrp->LineEdit21->setReadOnly( TRUE ); - myGrp->LineEdit22->setReadOnly( TRUE ); - myGrp->LineEdit31->setReadOnly( TRUE ); - myGrp->LineEdit32->setReadOnly( TRUE ); - myGrp->PushButton1->setPixmap( image1 ); - myGrp->LineEdit1->setReadOnly( true ); - - Layout1->addWidget( myGrp, 1, 0 ); - - /***************************************************************/ - - /* Initialisation */ - Init(); -} - - -//================================================================================= -// function : ~MeasureGUI_BndBoxDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -MeasureGUI_BndBoxDlg::~MeasureGUI_BndBoxDlg() -{ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void MeasureGUI_BndBoxDlg::Init() -{ - mySelBtn = myGrp->PushButton1; - mySelEdit = myGrp->LineEdit1; - MeasureGUI_Skeleton::Init(); -} - -//================================================================================= -// function : processObject -// purpose : -//================================================================================= -void MeasureGUI_BndBoxDlg::processObject() -{ - double aXMin, aXMax, aYMin, aYMax, aZMin, aZMax; - - if ( !getParameters( aXMin, aXMax, aYMin, aYMax, aZMin, aZMax ) ) - { - mySelEdit->setText( "" ); - myGrp->LineEdit11->setText( "" ); - myGrp->LineEdit12->setText( "" ); - myGrp->LineEdit21->setText( "" ); - myGrp->LineEdit22->setText( "" ); - myGrp->LineEdit31->setText( "" ); - myGrp->LineEdit32->setText( "" ); - } - else - { - - myGrp->LineEdit11->setText( tr( "%1" ).arg( aXMin, 12, 'f', 6 ) ); - myGrp->LineEdit12->setText( tr( "%1" ).arg( aXMax, 12, 'f', 6 ) ); - - myGrp->LineEdit21->setText( tr( "%1" ).arg( aYMin, 12, 'f', 6 ) ); - myGrp->LineEdit22->setText( tr( "%1" ).arg( aYMax, 12, 'f', 6 ) ); - - myGrp->LineEdit31->setText( tr( "%1" ).arg( aZMin, 12, 'f', 6 ) ); - myGrp->LineEdit32->setText( tr( "%1" ).arg( aZMax, 12, 'f', 6 ) ); - } -} - -//================================================================================= -// function : getParameters -// purpose : -//================================================================================= -bool MeasureGUI_BndBoxDlg::getParameters( double& theXmin, double& theXmax, - double& theYmin, double& theYmax, - double& theZmin, double& theZmax ) -{ - if ( myObj->_is_nil() ) - return false; - else - { - try - { - GEOM::GEOM_IMeasureOperations::_narrow( getOperation() )->GetBoundingBox( - myObj, theXmin, theXmax, theYmin, theYmax, theZmin, theZmax ); - } - catch( const SALOME::SALOME_Exception& e ) - { - SalomeApp_Tools::QtCatchCorbaException( e ); - return false; - } - - return getOperation()->IsDone(); - } -} - -//================================================================================= -// function : buildPrs -// purpose : -//================================================================================= -SALOME_Prs* MeasureGUI_BndBoxDlg::buildPrs() -{ - double aXMin, aYMin, aZMin, aXMax, aYMax, aZMax; - - if ( myObj->_is_nil() || !getParameters( aXMin, aXMax, aYMin, aYMax, aZMin, aZMax ) ) - return 0; - - TopoDS_Shape aShape = BRepPrimAPI_MakeBox( gp_Pnt( aXMin, aYMin, aZMin ), - gp_Pnt( aXMax, aYMax, aZMax ) ).Shape(); - - return !aShape.IsNull() ? getDisplayer()->BuildPrs( aShape ) : 0; - -} - - - - - - - - - - - - - - - - - - - diff --git a/src/MeasureGUI/MeasureGUI_BndBoxDlg.h b/src/MeasureGUI/MeasureGUI_BndBoxDlg.h deleted file mode 100644 index a4da9046c..000000000 --- a/src/MeasureGUI/MeasureGUI_BndBoxDlg.h +++ /dev/null @@ -1,86 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : MeasureGUI_BndBoxDlg.h -// Author : Nicolas REJNERI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_BNDBOX_H -#define DIALOGBOX_BNDBOX_H - -#include "MeasureGUI_Skeleton.h" - -class MeasureGUI_1Sel6LineEdit_QTD; - -#if defined WNT && defined MEASUREGUI_EXPORTS -#define MEASUREGUI_EXPORT __declspec( dllexport ) -#else -#define MEASUREGUI_EXPORT -#endif - -//================================================================================= -// class : DialogBox_PROPERTIES -// purpose : -//================================================================================= -class MEASUREGUI_EXPORT MeasureGUI_BndBoxDlg : public MeasureGUI_Skeleton -{ - Q_OBJECT - -public: - MeasureGUI_BndBoxDlg( GeometryGUI* GUI, - QWidget* parent ); - ~MeasureGUI_BndBoxDlg(); -protected: - - // redefined from GEOMBase_Helper and MeasureGUI_Skeleton - virtual void processObject(); - virtual SALOME_Prs* buildPrs(); - -private: - - void Init(); - bool getParameters( double& Xmin, double& Xmax, - double& Ymin, double& Ymax, - double& Zmin, double& Zmax ); - -private: - - MeasureGUI_1Sel6LineEdit_QTD* myGrp; -}; - -#endif // DIALOGBOX_BNDBOX_H - - - - - - - - - - - - - - diff --git a/src/MeasureGUI/MeasureGUI_CenterMassDlg.cxx b/src/MeasureGUI/MeasureGUI_CenterMassDlg.cxx deleted file mode 100644 index 9c1a927e9..000000000 --- a/src/MeasureGUI/MeasureGUI_CenterMassDlg.cxx +++ /dev/null @@ -1,341 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : MeasureGUI_CenterMassDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "MeasureGUI_CenterMassDlg.h" -#include "MeasureGUI_1Sel3LineEdit_QTD.h" - -#include "utilities.h" -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" -#include "SalomeApp_Tools.h" - -#include -#include -#include -#include - -#include - -//================================================================================= -// class : MeasureGUI_CenterMassDlg() -// purpose : Constructs a MeasureGUI_CenterMassDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -MeasureGUI_CenterMassDlg::MeasureGUI_CenterMassDlg( QWidget* parent ) -: GEOMBase_Skeleton( parent, "MeasureGUI_CenterMassDlg", false, - WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) -{ - QPixmap image0( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM",tr( "ICON_DLG_CENTERMASS" ) ) ); - QPixmap image1( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM",tr( "ICON_SELECT" ) ) ); - - setCaption( tr( "GEOM_CMASS_TITLE" ) ); - - /***************************************************************/ - - GroupConstructors->setTitle( tr( "GEOM_CMASS" ) ); - RadioButton1->setPixmap( image0 ); - RadioButton2->close( TRUE ); - RadioButton3->close( TRUE ); - - myGrp = new MeasureGUI_1Sel3LineEdit_QTD( this, "myGrp" ); - myGrp->GroupBox1->setTitle( tr( "GEOM_CENTER" ) ); - myGrp->TextLabel1->setText( tr( "GEOM_OBJECT" ) ); - myGrp->TextLabel2->setText( tr( "GEOM_X" ) ); - myGrp->TextLabel3->setText( tr( "GEOM_Y" ) ); - myGrp->TextLabel4->setText( tr( "GEOM_Z" ) ); - myGrp->LineEdit2->setReadOnly( TRUE ); - myGrp->LineEdit3->setReadOnly( TRUE ); - myGrp->LineEdit4->setReadOnly( TRUE ); - myGrp->PushButton1->setPixmap( image1 ); - myGrp->LineEdit1->setReadOnly( true ); - - Layout1->addWidget( myGrp, 2, 0 ); - /***************************************************************/ - - /* Initialisation */ - Init(); -} - - -//================================================================================= -// function : ~MeasureGUI_CenterMassDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -MeasureGUI_CenterMassDlg::~MeasureGUI_CenterMassDlg() -{ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void MeasureGUI_CenterMassDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = myGrp->LineEdit1; - - /* signals and slots connections */ - connect( buttonOk, SIGNAL( clicked() ), this, SLOT( ClickOnOk() ) ); - connect( buttonApply, SIGNAL( clicked() ), this, SLOT( ClickOnApply() ) ); - - connect( myGrp->LineEdit1, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) ); - connect( myGrp->PushButton1, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) ); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - - initName( tr( "GEOM_POINT") ); - globalSelection(); - SelectionIntoArgument(); - - /* displays Dialog */ - myGrp->show(); - this->show(); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void MeasureGUI_CenterMassDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool MeasureGUI_CenterMassDlg::ClickOnApply() -{ - if ( !onAccept() ) - return false; - - initName(); - return true; - -// myMeasureGUI->MakeCDGAndDisplay( myGeomShape ); -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection as changed or other case -//================================================================================= -void MeasureGUI_CenterMassDlg::SelectionIntoArgument() -{ - erasePreview(); - myObj = GEOM::GEOM_Object::_nil(); - - if ( IObjectCount() != 1 ) - { - processObject(); - return; - } - - Standard_Boolean testResult = Standard_False; - GEOM::GEOM_Object_var aSelectedObject = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); - - if ( !testResult || aSelectedObject->_is_nil() ) - { - processObject(); - return; - } - - myObj = aSelectedObject; - processObject(); - displayPreview(); -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void MeasureGUI_CenterMassDlg::SetEditCurrentArgument() -{ - myGrp->LineEdit1->setFocus(); - myEditCurrentArgument = myGrp->LineEdit1; - SelectionIntoArgument(); -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void MeasureGUI_CenterMassDlg::LineEditReturnPressed() -{ - QLineEdit* send = ( QLineEdit* )sender(); - if ( send == myGrp->LineEdit1 ) - { - myEditCurrentArgument = myGrp->LineEdit1; - GEOMBase_Skeleton::LineEditReturnPressed(); - } -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void MeasureGUI_CenterMassDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - - globalSelection(); - displayPreview(); -} - -//================================================================================= -// function : processObject() -// purpose : Fill dialog fields in accordance with myObj -//================================================================================= -void MeasureGUI_CenterMassDlg::processObject() -{ - if ( myObj->_is_nil() ) - { - myGrp->LineEdit1->setText( "" ); - myGrp->LineEdit2->setText( "" ); - myGrp->LineEdit3->setText( "" ); - myGrp->LineEdit4->setText( "" ); - erasePreview(); - } - else - { - double x = 0, y = 0, z = 0; - - getParameters( x, y, z ); - - myGrp->LineEdit1->setText( GEOMBase::GetName( myObj ) ); - myGrp->LineEdit2->setText( QString( "%1" ).arg( x ) ); - myGrp->LineEdit3->setText( QString( "%1" ).arg( y ) ); - myGrp->LineEdit4->setText( QString( "%1" ).arg( z ) ); - - displayPreview(); - } -} - - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void MeasureGUI_CenterMassDlg::enterEvent( QEvent* e ) -{ - if ( !GroupConstructors->isEnabled() ) - ActivateThisDialog(); -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr MeasureGUI_CenterMassDlg::createOperation() -{ - return getGeomEngine()->GetIMeasureOperations( getStudyId() ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool MeasureGUI_CenterMassDlg::isValid( QString& ) -{ - return !myObj->_is_nil(); -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool MeasureGUI_CenterMassDlg::getParameters( double& theX, double& theY, double& theZ ) -{ - if ( myObj->_is_nil() ) - return false; - else - { - try - { - GEOM::GEOM_Object_var anObj; - anObj = GEOM::GEOM_IMeasureOperations::_narrow( getOperation() )->GetCentreOfMass( myObj ); - if ( !getOperation()->IsDone() ) - return false; - - TopoDS_Shape aShape; - if ( !GEOMBase::GetShape( anObj, aShape ) || - aShape.IsNull() || - aShape.ShapeType() != TopAbs_VERTEX ) - return false; - - TopoDS_Vertex aVertex = TopoDS::Vertex( aShape ); - - gp_Pnt aPnt = BRep_Tool::Pnt( aVertex ); - - theX = aPnt.X(); - theY = aPnt.Y(); - theZ = aPnt.Z(); - - return true; - } - catch( const SALOME::SALOME_Exception& e ) - { - SalomeApp_Tools::QtCatchCorbaException( e ); - return false; - } - } -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool MeasureGUI_CenterMassDlg::execute( ObjectList& objects ) -{ - GEOM::GEOM_Object_var anObj; - - anObj = GEOM::GEOM_IMeasureOperations::_narrow( getOperation() )->GetCentreOfMass( myObj ); - - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - - return true; -} - - diff --git a/src/MeasureGUI/MeasureGUI_CenterMassDlg.h b/src/MeasureGUI/MeasureGUI_CenterMassDlg.h deleted file mode 100644 index 1cee7d357..000000000 --- a/src/MeasureGUI/MeasureGUI_CenterMassDlg.h +++ /dev/null @@ -1,81 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : MeasureGUI_CenterMassDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM - -#ifndef DIALOGBOX_CMASS_H -#define DIALOGBOX_CMASS_H - -#include "GEOMBase_Skeleton.h" - -class MeasureGUI_1Sel3LineEdit_QTD; - -#if defined WNT && defined MEASUREGUI_EXPORTS -#define MEASUREGUI_EXPORT __declspec( dllexport ) -#else -#define MEASUREGUI_EXPORT -#endif - -//================================================================================= -// class : MeasureGUI_CenterMassDlg -// purpose : -//================================================================================= -class MEASUREGUI_EXPORT MeasureGUI_CenterMassDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - MeasureGUI_CenterMassDlg( QWidget* parent ); - ~MeasureGUI_CenterMassDlg(); - -protected: - - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& msg ); - virtual bool execute( ObjectList& objects ); - -private slots: - void ClickOnOk(); - bool ClickOnApply(); - void ActivateThisDialog(); - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - -private: - - void Init( ); - void enterEvent( QEvent* e ); - void processObject(); - bool getParameters( double&, double&, double& ); - -private: - - GEOM::GEOM_Object_var myObj; - MeasureGUI_1Sel3LineEdit_QTD* myGrp; -}; - -#endif // DIALOGBOX_CMASS_H diff --git a/src/MeasureGUI/MeasureGUI_CheckCompoundOfBlocksDlg.cxx b/src/MeasureGUI/MeasureGUI_CheckCompoundOfBlocksDlg.cxx deleted file mode 100644 index 5941b95e2..000000000 --- a/src/MeasureGUI/MeasureGUI_CheckCompoundOfBlocksDlg.cxx +++ /dev/null @@ -1,371 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : MeasureGUI_CheckCompoundOfBlocksDlg.cxx -// Author : VKN -// Module : GEOM -// $Header$ - -#include "MeasureGUI_CheckCompoundOfBlocksDlg.h" -#include "MeasureGUI_1Sel1TextView_QTD.h" - -#include "utilities.h" -#include "SUIT_Session.h" -#include "SalomeApp_Tools.h" - -#include -#include -#include -#include "GEOMBase.h" -#include "GEOMImpl_Types.hxx" - -#include -#include -#include -#include -#include -#include -// QT Includes -#include -#include -#include - -//VRV: porting on Qt 3.0.5 -#if QT_VERSION >= 0x030005 -#include -#endif -//VRV: porting on Qt 3.0.5 - -#define TEXTEDIT_FONT_FAMILY "Courier" -#define TEXTEDIT_FONT_SIZE 11 - -//================================================================================= -// class : MeasureGUI_CheckCompoundOfBlocksDlg() -// purpose : Constructs a MeasureGUI_CheckCompoundOfBlocksDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -MeasureGUI_CheckCompoundOfBlocksDlg::MeasureGUI_CheckCompoundOfBlocksDlg( GeometryGUI* GUI, QWidget* parent ) -: MeasureGUI_Skeleton( GUI, parent, "MeasureGUI_CheckCompoundOfBlocksDlg" ) -{ - QPixmap image0( SUIT_Session::session()->resourceMgr()->loadPixmap( - "GEOM",tr( "ICON_DLG_CHECK_COMPOUND_OF_BLOCKS" ) ) ); - QPixmap image1( SUIT_Session::session()->resourceMgr()->loadPixmap( - "GEOM",tr( "ICON_SELECT" ) ) ); - - setCaption( tr( "GEOM_CHECK_BLOCKS_COMPOUND" ) ); - - /***************************************************************/ - - GroupConstructors->setTitle( tr( "GEOM_CHECK_BLOCKS_COMPOUND" ) ); - RadioButton1->setPixmap( image0 ); - - myGrp = new MeasureGUI_1Sel1TextView_QTD( this, "myGrp" ); - myGrp->GroupBox1->setTitle( tr( "GEOM_CHECK_INFOS" ) ); - myGrp->TextLabel1->setText( tr( "GEOM_OBJECT" ) ); - myGrp->TextEdit1->setReadOnly( TRUE ); - - QFont aFont( TEXTEDIT_FONT_FAMILY, TEXTEDIT_FONT_SIZE ); - aFont.setStyleHint( QFont::TypeWriter, QFont::PreferAntialias ); - myGrp->TextEdit1->setFont( aFont ); - myGrp->PushButton1->setPixmap( image1 ); - myGrp->LineEdit1->setReadOnly( true ); - - - /***************************************************************/ - QGridLayout* aGBLayout = new QGridLayout( myGrp->GroupBox1->layout() ); - aGBLayout->setAlignment( Qt::AlignTop ); - QGridLayout* Layout2 = new QGridLayout( 0, 1, 1, 0, 6, "Layout2"); - myErrorsLbl = new QLabel( tr( "GEOM_CHECK_BLOCKS_COMPOUND_ERRORS" ), myGrp, "Errors" ); - Layout2->addWidget( myErrorsLbl, 0, 0 ); - - myErrorsLBox = new QListBox( myGrp, "ListBlockCompoundErrors" ); - myErrorsLBox->setMinimumSize( 100, 100 ); - Layout2->addWidget( myErrorsLBox, 1, 0 ); - - - mySubShapesLbl = new QLabel( tr( "GEOM_CHECK_BLOCKS_COMPOUND_SUBSHAPES" ), myGrp, "BlockCompoundSubShapes" ); - Layout2->addWidget( mySubShapesLbl, 0, 1 ); - - mySubShapesLBox = new QListBox( myGrp, "ListSubShapes" ); - mySubShapesLBox->setMinimumSize( 100, 100 ); - mySubShapesLBox->setSelectionMode(QListBox::Extended); - Layout2->addWidget( mySubShapesLBox, 1, 1 ); - aGBLayout->addLayout( Layout2, 1, 0 ); - - Layout1->addWidget( myGrp, 1, 0 ); - connect( myErrorsLBox, SIGNAL( selectionChanged() ), SLOT( onErrorsListSelectionChanged() ) ); - connect( mySubShapesLBox, SIGNAL( selectionChanged() ), SLOT( onSubShapesListSelectionChanged() ) ); - /* Initialisation */ - Init(); -} - - -//================================================================================= -// function : ~MeasureGUI_CheckCompoundOfBlocksDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -MeasureGUI_CheckCompoundOfBlocksDlg::~MeasureGUI_CheckCompoundOfBlocksDlg() -{ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void MeasureGUI_CheckCompoundOfBlocksDlg::Init() -{ - activateSelection(); - mySelBtn = myGrp->PushButton1; - mySelEdit = myGrp->LineEdit1; - MeasureGUI_Skeleton::Init(); -} - -//================================================================================= -// function : getBCErrors -// purpose : -//================================================================================= -bool MeasureGUI_CheckCompoundOfBlocksDlg::getBCErrors( bool& theIsCompoundOfBlocks, - GEOM::GEOM_IBlocksOperations::BCErrors& theErrors) -{ - if ( myObj->_is_nil() ) - return false; - else - { - try - { - GEOM::GEOM_IBlocksOperations::BCErrors_var aErrs; - theIsCompoundOfBlocks = - GEOM::GEOM_IBlocksOperations::_narrow( getOperation() )->CheckCompoundOfBlocks( myObj, aErrs ); - theErrors = aErrs; - } - catch( const SALOME::SALOME_Exception& e ) - { - SalomeApp_Tools::QtCatchCorbaException( e ); - return false; - } - - return getOperation()->IsDone(); - } -} - -//================================================================================= -// function : processObject -// purpose : -//================================================================================= -void MeasureGUI_CheckCompoundOfBlocksDlg::processObject() -{ - QString aMsg (""); - bool isCompoundOfBlocks; - GEOM::GEOM_IBlocksOperations::BCErrors aErrs; - if ( !getBCErrors( isCompoundOfBlocks, aErrs ) ) - { - myGrp->TextEdit1->setText( aMsg ); - myErrorsLBox->clear(); - mySubShapesLBox->clear(); - erasePreview(); - return; - } - - if (isCompoundOfBlocks) { - aMsg += tr( "GEOM_CHECK_BLOCKS_COMPOUND_HAS_NO_ERRORS" ); - } else { - aMsg += tr( "GEOM_CHECK_BLOCKS_COMPOUND_HAS_ERRORS" ); - } - myGrp->TextEdit1->setText(aMsg); - QStringList aErrList; - QString aErrStr( "" ); - QString aConSfx( " # " ); - QString aGluedSfx( " # " ); - int aConNum = 1; - int aGluedNum = 1; - for ( int i = 0, n = aErrs.length(); i < n; i++ ) - { - aErrStr = ""; - switch ( aErrs[i].error ) - { - case GEOM::GEOM_IBlocksOperations::NOT_BLOCK : - aErrStr = "Not a Block"; - break; - case GEOM::GEOM_IBlocksOperations::EXTRA_EDGE : - aErrStr = "Extra Edge"; - break; - case GEOM::GEOM_IBlocksOperations::INVALID_CONNECTION : - aErrStr = "Invalid Connection"; - aErrStr += aConSfx; - aErrStr += QString::number(aConNum); - aConNum++; - break; - case GEOM::GEOM_IBlocksOperations::NOT_CONNECTED : - aErrStr = "Not Connected"; - break; - case GEOM::GEOM_IBlocksOperations::NOT_GLUED : - aErrStr = "Not Glued"; - aErrStr += aGluedSfx; - aErrStr += QString::number(aGluedNum); - aGluedNum++; - break; - default : - aErrStr = ""; - break; - } - if ( !aErrStr.isEmpty() ) - aErrList.append(aErrStr); - } - myErrorsLBox->clear(); - mySubShapesLBox->clear(); - myErrorsLBox->insertStringList(aErrList); - return; -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr MeasureGUI_CheckCompoundOfBlocksDlg::createOperation() -{ - return getGeomEngine()->GetIBlocksOperations(getStudyId()); -} - -//================================================================================= -// function : onErrorsListSelectionChanged -// purpose : -//================================================================================= -void MeasureGUI_CheckCompoundOfBlocksDlg::onErrorsListSelectionChanged() -{ - erasePreview(); - int aCurItem = myErrorsLBox->currentItem(); - if ( aCurItem < 0 ) - return; - bool isCompoundOfBlocks; - GEOM::GEOM_IBlocksOperations::BCErrors aErrs; - if ( !getBCErrors( isCompoundOfBlocks, aErrs ) ) - { - myGrp->TextEdit1->setText( "" ); - myErrorsLBox->clear(); - mySubShapesLBox->clear(); - return; - } - - GEOM::GEOM_IBlocksOperations::BCError aErr = aErrs[aCurItem]; - GEOM::ListOfLong aObjLst = aErr.incriminated; - TopoDS_Shape aSelShape; - TopoDS_Shape aSubShape; - TopTools_IndexedMapOfShape anIndices; - QStringList aSubShapeList; - QString aSubShapeName(""); - Standard_CString aTypeString; - if ( !myObj->_is_nil() && GEOMBase::GetShape( myObj, aSelShape ) ) - { - TopExp::MapShapes( aSelShape, anIndices); - for ( int i = 0, n = aObjLst.length(); i < n; i++ ) - { - aSubShapeName = ""; - aSubShape = anIndices.FindKey(aObjLst[i]); - if ( GEOMBase::GetShapeTypeString( aSubShape, aTypeString ) ) - aSubShapeName = QString(aTypeString) + QString("_") + QString::number(aObjLst[i]); - if ( !aSubShapeName.isEmpty() ) - aSubShapeList.append(aSubShapeName); - } - } - mySubShapesLBox->clear(); - mySubShapesLBox->insertStringList(aSubShapeList); - return; -} - -//================================================================================= -// function : onSubShapesListSelectionChanged -// purpose : -//================================================================================= -void MeasureGUI_CheckCompoundOfBlocksDlg::onSubShapesListSelectionChanged() -{ - erasePreview(); - int aErrCurItem = myErrorsLBox->currentItem(); - if ( aErrCurItem < 0 ) - return; - QValueList aIds; - for ( int i = 0, n = mySubShapesLBox->count(); i < n; i++ ) - { - if ( mySubShapesLBox->isSelected( i ) ) - aIds.append( i ); - } - if ( aIds.count() < 1 ) - return; - bool isCompoundOfBlocks; - GEOM::GEOM_IBlocksOperations::BCErrors aErrs; - if ( !getBCErrors( isCompoundOfBlocks, aErrs ) ) - { - myGrp->TextEdit1->setText( "" ); - myErrorsLBox->clear(); - mySubShapesLBox->clear(); - return; - } - - GEOM::GEOM_IBlocksOperations::BCError aErr = aErrs[aErrCurItem]; - GEOM::ListOfLong aObjLst = aErr.incriminated; - TopoDS_Shape aSelShape; - TopoDS_Shape aSubShape; - TopTools_IndexedMapOfShape anIndices; - if ( !myObj->_is_nil() && GEOMBase::GetShape( myObj, aSelShape ) ) - { - QString aMess; - if ( !isValid( aMess ) ) - { - return; - } - SALOME_Prs* aPrs = 0; - TopExp::MapShapes( aSelShape, anIndices); - QValueList::iterator it; - for ( it = aIds.begin(); it != aIds.end(); ++it ) - { - aSubShape = anIndices.FindKey(aObjLst[(*it)]); - try - { - getDisplayer()->SetColor( Quantity_NOC_RED ); - getDisplayer()->SetToActivate( false ); - aPrs = !aSubShape.IsNull() ? getDisplayer()->BuildPrs( aSubShape ) : 0; - if ( aPrs ) - displayPreview( aPrs, true ); - } - catch( const SALOME::SALOME_Exception& e ) - { - SalomeApp_Tools::QtCatchCorbaException( e ); - } - } - } - return; -} - -//================================================================================= -// function : activateSelection -// purpose : activate selection of faces, shells, and solids -//================================================================================= -void MeasureGUI_CheckCompoundOfBlocksDlg::activateSelection() -{ - TColStd_MapOfInteger aMap; - aMap.Add( GEOM_SOLID ); - aMap.Add( GEOM_COMPOUND ); - globalSelection( aMap ); -} diff --git a/src/MeasureGUI/MeasureGUI_CheckCompoundOfBlocksDlg.h b/src/MeasureGUI/MeasureGUI_CheckCompoundOfBlocksDlg.h deleted file mode 100644 index 0038dcb4e..000000000 --- a/src/MeasureGUI/MeasureGUI_CheckCompoundOfBlocksDlg.h +++ /dev/null @@ -1,84 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : MeasureGUI_CheckCompoundOfBlocksDlg.h -// Author : VKN -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_CHECKCOMPOUNDOFBLOCKSDLG_H -#define DIALOGBOX_CHECKCOMPOUNDOFBLOCKSDLG_H - -#include "MeasureGUI_Skeleton.h" - -class MeasureGUI_1Sel1TextView_QTD; -class QListBox; -class QLabel; - -#if defined WNT && defined MEASUREGUI_EXPORTS -#define MEASUREGUI_EXPORT __declspec( dllexport ) -#else -#define MEASUREGUI_EXPORT -#endif - -//================================================================================= -// class : MeasureGUI_CheckCompoundOfBlocksDlg -// purpose : -//================================================================================= -class MEASUREGUI_EXPORT MeasureGUI_CheckCompoundOfBlocksDlg : public MeasureGUI_Skeleton -{ - Q_OBJECT - -public: - MeasureGUI_CheckCompoundOfBlocksDlg( GeometryGUI* GUI, - QWidget* theParent ); - ~MeasureGUI_CheckCompoundOfBlocksDlg(); -protected: - - // redefined from GEOMBase_Helper and MeasureGUI_Skeleton - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual void processObject(); - -private slots: - - void onErrorsListSelectionChanged(); - void onSubShapesListSelectionChanged(); - -private: - - void Init(); - bool getBCErrors( bool& theIsCompoundOfBlocks, - GEOM::GEOM_IBlocksOperations::BCErrors& theErrors); - void activateSelection(); - -private: - - MeasureGUI_1Sel1TextView_QTD* myGrp; - QLabel* myErrorsLbl; - QListBox* myErrorsLBox; - QLabel* mySubShapesLbl; - QListBox* mySubShapesLBox; - -}; - -#endif // DIALOGBOX_CHECKCOMPOUNDOFBLOCKSDLG_H diff --git a/src/MeasureGUI/MeasureGUI_CheckShapeDlg.cxx b/src/MeasureGUI/MeasureGUI_CheckShapeDlg.cxx deleted file mode 100644 index d63de1040..000000000 --- a/src/MeasureGUI/MeasureGUI_CheckShapeDlg.cxx +++ /dev/null @@ -1,158 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : MeasureGUI_CheckShapeDlg.cxx -// Author : Nicolas REJNERI -// Module : GEOM -// $Header$ - -#include "MeasureGUI_CheckShapeDlg.h" -#include "MeasureGUI_1Sel1TextView_QTD.h" - -#include "utilities.h" -#include "SUIT_Session.h" -#include "SalomeApp_Tools.h" - -#include -#include -#include -#include -#include -#include -#include - -#define TEXTEDIT_FONT_FAMILY "Courier" -#define TEXTEDIT_FONT_SIZE 11 - -//================================================================================= -// class : MeasureGUI_CheckShapeDlg() -// purpose : Constructs a MeasureGUI_CheckShapeDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -MeasureGUI_CheckShapeDlg::MeasureGUI_CheckShapeDlg( GeometryGUI* GUI, QWidget* parent ) -: MeasureGUI_Skeleton( GUI, parent, "MeasureGUI_CheckShapeDlg" ) -{ - QPixmap image0( SUIT_Session::session()->resourceMgr()->loadPixmap( - "GEOM",tr( "ICON_DLG_CHECKSHAPE" ) ) ); - QPixmap image1( SUIT_Session::session()->resourceMgr()->loadPixmap( - "GEOM",tr( "ICON_SELECT" ) ) ); - - setCaption( tr( "GEOM_CHECK_TITLE" ) ); - - /***************************************************************/ - - GroupConstructors->setTitle( tr( "GEOM_CHECK_SHAPE" ) ); - RadioButton1->setPixmap( image0 ); - - myGrp = new MeasureGUI_1Sel1TextView_QTD( this, "myGrp" ); - myGrp->GroupBox1->setTitle( tr( "GEOM_CHECK_INFOS" ) ); - myGrp->TextLabel1->setText( tr( "GEOM_OBJECT" ) ); - myGrp->TextEdit1->setReadOnly( TRUE ); - - QFont aFont( TEXTEDIT_FONT_FAMILY, TEXTEDIT_FONT_SIZE ); - aFont.setStyleHint( QFont::TypeWriter, QFont::PreferAntialias ); - myGrp->TextEdit1->setFont( aFont ); - myGrp->PushButton1->setPixmap( image1 ); - myGrp->LineEdit1->setReadOnly( true ); - - Layout1->addWidget( myGrp, 1, 0 ); - - /***************************************************************/ - - /* Initialisation */ - Init(); -} - - -//================================================================================= -// function : ~MeasureGUI_CheckShapeDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -MeasureGUI_CheckShapeDlg::~MeasureGUI_CheckShapeDlg() -{ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void MeasureGUI_CheckShapeDlg::Init() -{ - mySelBtn = myGrp->PushButton1; - mySelEdit = myGrp->LineEdit1; - MeasureGUI_Skeleton::Init(); -} - -//================================================================================= -// function : getParameters -// purpose : -//================================================================================= -bool MeasureGUI_CheckShapeDlg::getParameters ( bool& theIsValid, QString& theMsg ) -{ - if ( myObj->_is_nil() ) - return false; - else - { - try - { - char* aMsg; - theIsValid = GEOM::GEOM_IMeasureOperations::_narrow( getOperation() )->CheckShape( myObj, aMsg ); - theMsg = aMsg; - } - catch( const SALOME::SALOME_Exception& e ) - { - SalomeApp_Tools::QtCatchCorbaException( e ); - return false; - } - - return getOperation()->IsDone(); - } -} - - -//================================================================================= -// function : processObject -// purpose : -//================================================================================= -void MeasureGUI_CheckShapeDlg::processObject() -{ - bool isShapeValid; - QString aMsg; - if ( !getParameters( isShapeValid, aMsg ) ) - { - myGrp->TextEdit1->setText( "" ); - return; - } - - if (isShapeValid) { - myGrp->TextEdit1->setText("This Shape seems to be valid."); - } else { - QString aDescr ("This Shape is not valid.\n"); - aDescr += aMsg; - myGrp->TextEdit1->setText(aDescr); -// myGrp->TextEdit1->setText("This Shape is not valid."); - } -} diff --git a/src/MeasureGUI/MeasureGUI_CheckShapeDlg.h b/src/MeasureGUI/MeasureGUI_CheckShapeDlg.h deleted file mode 100644 index 60eb49538..000000000 --- a/src/MeasureGUI/MeasureGUI_CheckShapeDlg.h +++ /dev/null @@ -1,71 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : MeasureGUI_CheckShapeDlg.h -// Author : Nicolas REJNERI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_CHECKSHAPEDLG_H -#define DIALOGBOX_CHECKSHAPEDLG_H - -#include "MeasureGUI_Skeleton.h" - -class MeasureGUI_1Sel1TextView_QTD; - -#if defined WNT && defined MEASUREGUI_EXPORTS -#define MEASUREGUI_EXPORT __declspec( dllexport ) -#else -#define MEASUREGUI_EXPORT -#endif - -//================================================================================= -// class : MeasureGUI_CheckShapeDlg -// purpose : -//================================================================================= -class MEASUREGUI_EXPORT MeasureGUI_CheckShapeDlg : public MeasureGUI_Skeleton -{ - Q_OBJECT - -public: - MeasureGUI_CheckShapeDlg( GeometryGUI* GUI, - QWidget* parent ); - ~MeasureGUI_CheckShapeDlg(); -protected: - - // redefined from GEOMBase_Helper and MeasureGUI_Skeleton - virtual void processObject(); - -private: - - void Init(); - bool getParameters( bool& theIsValid, - QString& theMsg); - -private: - - MeasureGUI_1Sel1TextView_QTD* myGrp; - -}; - -#endif // DIALOGBOX_CHECKSHAPEDLG_H diff --git a/src/MeasureGUI/MeasureGUI_DistanceDlg.cxx b/src/MeasureGUI/MeasureGUI_DistanceDlg.cxx deleted file mode 100644 index 5762c0606..000000000 --- a/src/MeasureGUI/MeasureGUI_DistanceDlg.cxx +++ /dev/null @@ -1,338 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : MeasureGUI_DistanceDlg.cxx -// Author : Nicolas REJNERI -// Module : GEOM -// $Header$ - -#include "MeasureGUI_DistanceDlg.h" -#include "MeasureGUI_2Sel1LineEdit_QTD.h" -#include "GEOMBase.h" -#include "GEOM_Displayer.h" - -#include "SUIT_Session.h" -#include "SUIT_ViewWindow.h" -#include "SOCC_Prs.h" -#include "SOCC_ViewModel.h" -#include "SalomeApp_Tools.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "utilities.h" - -#include -#include -#include -#include -#include -#include - -//================================================================================= -// class : MeasureGUI_DistanceDlg() -// purpose : Constructs a MeasureGUI_DistanceDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -MeasureGUI_DistanceDlg::MeasureGUI_DistanceDlg( GeometryGUI* GUI, QWidget* parent ) -: MeasureGUI_Skeleton( GUI, parent, "MeasureGUI_DistanceDlg" ) -{ - QPixmap image0( SUIT_Session::session()->resourceMgr()->loadPixmap( - "GEOM",tr( "ICON_DLG_MINDIST" ) ) ); - QPixmap image1( SUIT_Session::session()->resourceMgr()->loadPixmap( - "GEOM",tr( "ICON_SELECT" ) ) ); - - setCaption( tr( "GEOM_MINDIST_TITLE" ) ); - - /***************************************************************/ - - GroupConstructors->setTitle( tr( "GEOM_DISTANCE" ) ); - RadioButton1->setPixmap( image0 ); - - myGrp = new MeasureGUI_2Sel1LineEdit_QTD( this, "myGrp" ); - myGrp->GroupBox1->setTitle( tr( "GEOM_MINDIST_OBJ" ) ); - myGrp->TextLabel1->setText( tr( "GEOM_OBJECT_I" ).arg( "1" ) ); - myGrp->TextLabel2->setText( tr( "GEOM_OBJECT_I" ).arg( "2" ) ); - myGrp->TextLabel3->setText( tr( "GEOM_LENGTH" ) ); - myGrp->LineEdit3->setReadOnly( TRUE ); - myGrp->PushButton1->setPixmap( image1 ); - myGrp->PushButton2->setPixmap( image1 ); - myGrp->LineEdit1->setReadOnly( true ); - myGrp->LineEdit2->setReadOnly( true ); - - Layout1->addWidget( myGrp, 1, 0 ); - - /***************************************************************/ - - /* Initialisation */ - Init(); -} - - -//================================================================================= -// function : ~MeasureGUI_DistanceDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -MeasureGUI_DistanceDlg::~MeasureGUI_DistanceDlg() -{ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void MeasureGUI_DistanceDlg::Init() -{ - mySelBtn = myGrp->PushButton1; - mySelEdit = myGrp->LineEdit1; - mySelBtn2 = myGrp->PushButton2; - mySelEdit2 = myGrp->LineEdit2; - - myEditCurrentArgument = mySelEdit; - - connect( mySelEdit2, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) ); - connect( mySelBtn2, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) ); - - MeasureGUI_Skeleton::Init(); - -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection has changed -//================================================================================= -void MeasureGUI_DistanceDlg::SelectionIntoArgument() -{ - Standard_Boolean testResult = Standard_False; - GEOM::GEOM_Object_var aSelectedObject = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); - - if ( !testResult ) - aSelectedObject = GEOM::GEOM_Object::_nil(); - - if ( myEditCurrentArgument == mySelEdit ) - myObj = aSelectedObject; - else - myObj2 = aSelectedObject; - - processObject(); -} - -//================================================================================= -// function : processObject() -// purpose : Fill dialogs fileds in accordance with myObj and myObj2 -//================================================================================= -void MeasureGUI_DistanceDlg::processObject() -{ - myGrp->LineEdit1->setText( !myObj->_is_nil() ? GEOMBase::GetName( myObj ) : "" ); - myGrp->LineEdit2->setText( !myObj2->_is_nil() ? GEOMBase::GetName( myObj2 ) : "" ); - - gp_Pnt aPnt1, aPnt2; - double aDist = 0.; - if ( getParameters( aDist, aPnt1, aPnt2 ) ) - { - myGrp->LineEdit3->setText( QString( "%1" ).arg( aDist ) ); - redisplayPreview(); - } - else - { - myGrp->LineEdit3->setText( "" ); - erasePreview(); - } - -} - -//================================================================================= -// function : getParameters() -// purpose : Get distance between objects -//================================================================================= -bool MeasureGUI_DistanceDlg::getParameters( double& theDistance, - gp_Pnt& thePnt1, - gp_Pnt& thePnt2 ) -{ - QString msg; - if ( !isValid( msg ) ) - return false; - else - { - try - { - double x1, y1, z1, x2, y2, z2; - theDistance = GEOM::GEOM_IMeasureOperations::_narrow( getOperation() )->GetMinDistance( - myObj, myObj2, x1, y1, z1, x2, y2, z2 ); - - thePnt1.SetCoord( x1, y1, z1 ); - thePnt2.SetCoord( x2, y2, z2 ); - } - catch( const SALOME::SALOME_Exception& e ) - { - SalomeApp_Tools::QtCatchCorbaException( e ); - return false; - } - - return getOperation()->IsDone(); - } -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void MeasureGUI_DistanceDlg::SetEditCurrentArgument() -{ - QPushButton* send = ( QPushButton* )sender(); - - if( send == mySelBtn ) - { - mySelEdit->setFocus(); - myEditCurrentArgument = mySelEdit; - } - else - { - mySelEdit2->setFocus(); - myEditCurrentArgument = mySelEdit2; - } - - SelectionIntoArgument(); -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void MeasureGUI_DistanceDlg::LineEditReturnPressed() -{ - QLineEdit* send = ( QLineEdit* )sender(); - - if( send == mySelEdit ) - myEditCurrentArgument = mySelEdit; - else - myEditCurrentArgument = mySelEdit2; - - if ( GEOMBase::SelectionByNameInDialogs( this, mySelEdit->text(), selectedIO() ) ) - mySelEdit->setText( mySelEdit->text() ); -} - - -//================================================================================= -// function : buildPrs() -// purpose : -//================================================================================= -SALOME_Prs* MeasureGUI_DistanceDlg::buildPrs() -{ - double aDist = 0.; - gp_Pnt aPnt1( 0, 0, 0 ), aPnt2( 0, 0, 0 ); - - if ( myObj->_is_nil() || myObj2->_is_nil() || !getParameters( aDist, aPnt1, aPnt2 ) || - SUIT_Session::session()->activeApplication()->desktop()->activeWindow()->getViewManager()->getType() - != OCCViewer_Viewer::Type() ) - return 0; - - try - { - if( aDist <= 1.e-9 ) - { - BRepBuilderAPI_MakeVertex aMaker( aPnt1 ); - return getDisplayer()->BuildPrs( aMaker.Vertex() ); - } - else - { - BRepBuilderAPI_MakeEdge MakeEdge( aPnt1, aPnt2 ); - TopoDS_Vertex aVert1 = BRepBuilderAPI_MakeVertex( aPnt1 ); - TopoDS_Vertex aVert2 = BRepBuilderAPI_MakeVertex( aPnt2 ); - - QString aLabel; - aLabel.sprintf( "%.1f", aDist ); - - gp_Pnt aPnt3( ( aPnt1.X() + aPnt2.X() ) / 2, - ( aPnt1.Y() + aPnt2.Y() ) / 2, - ( aPnt1.Z() + aPnt2.Z() ) / 2 + 100 ); - - - gp_Vec va( aPnt3, aPnt1 ); - gp_Vec vb( aPnt3, aPnt2 ); - - if ( va.IsParallel( vb, Precision::Angular() ) ) - { - aPnt3.SetY( ( aPnt1.Y() + aPnt2.Y() ) / 2 + 100 ); - aPnt3.SetZ( ( aPnt1.Z() + aPnt2.Z() ) / 2 ); - } - - gce_MakePln gce_MP( aPnt1, aPnt2, aPnt3 ); - Handle( Geom_Plane ) P = new Geom_Plane( gce_MP.Value() ); - - Handle( AIS_LengthDimension ) anIO = new AIS_LengthDimension( - aVert1, aVert2, P, aDist, TCollection_ExtendedString( (Standard_CString)aLabel.latin1() ) ); - - SUIT_ViewWindow* vw = SUIT_Session::session()->activeApplication()->desktop()->activeWindow(); - SOCC_Prs* aPrs = dynamic_cast( ((SOCC_Viewer*)(vw->getViewManager()->getViewModel()))->CreatePrs( 0 ) ); - - //QAD_ViewFrame* vf = GEOM_Displayer::GetActiveView(); - //OCCViewer_Prs* aPrs = dynamic_cast( vf->CreatePrs( 0 ) ); - - if ( aPrs ) - aPrs->AddObject( anIO ); - - return aPrs; - } - } - catch( Standard_Failure ) - { - return 0; - } -} - -//================================================================================= -// function : isValid() -// purpose : -//================================================================================= -bool MeasureGUI_DistanceDlg::isValid( QString& msg ) -{ - return MeasureGUI_Skeleton::isValid( msg ) && !myObj2->_is_nil(); -} - - - - - - - - - - - - - - diff --git a/src/MeasureGUI/MeasureGUI_DistanceDlg.h b/src/MeasureGUI/MeasureGUI_DistanceDlg.h deleted file mode 100644 index 98d382f6f..000000000 --- a/src/MeasureGUI/MeasureGUI_DistanceDlg.h +++ /dev/null @@ -1,82 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : MeasureGUI_DistanceDlg.h -// Author : Nicolas REJNERI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_DISTANCE_H -#define DIALOGBOX_DISTANCE_H - -#include "MeasureGUI_Skeleton.h" - -class MeasureGUI_2Sel1LineEdit_QTD; -class gp_Pnt; - -#if defined WNT && defined MEASUREGUI_EXPORTS -#define MEASUREGUI_EXPORT __declspec( dllexport ) -#else -#define MEASUREGUI_EXPORT -#endif - -//================================================================================= -// class : MeasureGUI_DistanceDlg -// purpose : -//================================================================================= -class MEASUREGUI_EXPORT MeasureGUI_DistanceDlg : public MeasureGUI_Skeleton -{ - Q_OBJECT - -public: - MeasureGUI_DistanceDlg( GeometryGUI* GUI, - QWidget* parent ); - ~MeasureGUI_DistanceDlg(); -protected: - - // redefined from GEOMBase_Helper and MeasureGUI_Skeleton - virtual void processObject(); - virtual SALOME_Prs* buildPrs(); - virtual void SelectionIntoArgument(); - virtual void LineEditReturnPressed(); - virtual void SetEditCurrentArgument(); - virtual bool isValid( QString& msg ); - -private: - - void Init(); - bool getParameters( double& theDistance, - gp_Pnt& thePnt1, - gp_Pnt& thePnt2 ); -private: - - QLineEdit* myEditCurrentArgument; - QLineEdit* mySelEdit2; - QPushButton* mySelBtn2; - - MeasureGUI_2Sel1LineEdit_QTD* myGrp; - GEOM::GEOM_Object_var myObj2; - -}; - -#endif // DIALOGBOX_DISTANCE_H diff --git a/src/MeasureGUI/MeasureGUI_InertiaDlg.cxx b/src/MeasureGUI/MeasureGUI_InertiaDlg.cxx deleted file mode 100644 index 2c36eacac..000000000 --- a/src/MeasureGUI/MeasureGUI_InertiaDlg.cxx +++ /dev/null @@ -1,204 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : MeasureGUI_InertiaDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM - -#include "MeasureGUI_InertiaDlg.h" -#include "MeasureGUI_1Sel12LineEdit_QTD.h" - -#include "GEOMBase.h" - -#include -#include -#include -#include -#include - -#include "utilities.h" -#include "SUIT_Session.h" -#include "SalomeApp_Tools.h" - -#include -#include -#include -#include -#include -#include - -//================================================================================= -// class : MeasureGUI_InertiaDlg() -// purpose : Constructs a MeasureGUI_InertiaDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= - -MeasureGUI_InertiaDlg::MeasureGUI_InertiaDlg( GeometryGUI* GUI, QWidget* parent ) -: MeasureGUI_Skeleton( GUI, parent, "MeasureGUI_InertiaDlg" ) -{ - QPixmap image0( SUIT_Session::session()->resourceMgr()->loadPixmap( - "GEOM",tr( "ICON_DLG_INERTIA" ) ) ); - QPixmap image1( SUIT_Session::session()->resourceMgr()->loadPixmap( - "GEOM",tr( "ICON_SELECT" ) ) ); - - setCaption( tr( "GEOM_INERTIA_TITLE" ) ); - - /***************************************************************/ - - GroupConstructors->setTitle( tr( "GEOM_INERTIA_CONSTR" ) ); - RadioButton1->setPixmap( image0 ); - - myGrp = new MeasureGUI_1Sel12LineEdit_QTD( this, "myGrp" ); - myGrp->GroupBox1->setTitle( tr( "GEOM_MATRIX" ) ); - myGrp->TextLabel1->setText( tr( "GEOM_OBJECT" ) ); - myGrp->TextLabel2->setText( tr( "GEOM_INERTIA_I" ).arg( "1" ) ); - myGrp->TextLabel3->setText( tr( "GEOM_INERTIA_I" ).arg( "2" ) ); - myGrp->TextLabel4->setText( tr( "GEOM_INERTIA_I" ).arg( "3" ) ); - myGrp->TextLabel5->setText( tr( "GEOM_INERTIA_IXYZ" ) ); - myGrp->LineEdit11->setReadOnly( TRUE ); - myGrp->LineEdit12->setReadOnly( TRUE ); - myGrp->LineEdit13->setReadOnly( TRUE ); - myGrp->LineEdit21->setReadOnly( TRUE ); - myGrp->LineEdit22->setReadOnly( TRUE ); - myGrp->LineEdit23->setReadOnly( TRUE ); - myGrp->LineEdit31->setReadOnly( TRUE ); - myGrp->LineEdit32->setReadOnly( TRUE ); - myGrp->LineEdit33->setReadOnly( TRUE ); - myGrp->LineEdit41->setReadOnly( TRUE ); - myGrp->LineEdit42->setReadOnly( TRUE ); - myGrp->LineEdit43->setReadOnly( TRUE ); - myGrp->PushButton1->setPixmap( image1 ); - myGrp->LineEdit1->setReadOnly( true ); - - Layout1->addWidget( myGrp, 1, 0 ); - - /***************************************************************/ - - /* Initialisation */ - Init(); -} - - -//================================================================================= -// function : ~MeasureGUI_InertiaDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -MeasureGUI_InertiaDlg::~MeasureGUI_InertiaDlg() -{ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void MeasureGUI_InertiaDlg::Init() -{ - mySelBtn = myGrp->PushButton1; - mySelEdit = myGrp->LineEdit1; - MeasureGUI_Skeleton::Init(); -} - -//================================================================================= -// function : processObject -// purpose : -//================================================================================= -void MeasureGUI_InertiaDlg::processObject() -{ - gp_XYZ anIXYZ; - gp_Mat aMat; - - if ( !getParameters( aMat, anIXYZ ) ) - { - mySelEdit->setText( "" ); - - myGrp->LineEdit11->setText( "" ); - myGrp->LineEdit12->setText( "" ); - myGrp->LineEdit13->setText( "" ); - - myGrp->LineEdit21->setText( "" ); - myGrp->LineEdit22->setText( "" ); - myGrp->LineEdit23->setText( "" ); - - myGrp->LineEdit31->setText( "" ); - myGrp->LineEdit32->setText( "" ); - myGrp->LineEdit33->setText( "" ); - - myGrp->LineEdit41->setText( "" ); - myGrp->LineEdit42->setText( "" ); - myGrp->LineEdit43->setText( "" ); - } - else - { - myGrp->LineEdit11->setText( QString( "%1" ).arg( aMat( 1, 1 ), 12, 'e', 4 ) ); - myGrp->LineEdit12->setText( QString( "%1" ).arg( aMat( 1, 2 ), 12, 'e', 4 ) ); - myGrp->LineEdit13->setText( QString( "%1" ).arg( aMat( 1, 3 ), 12, 'e', 4 ) ); - - myGrp->LineEdit21->setText( QString( "%1" ).arg( aMat( 2, 1 ), 12, 'e', 4 ) ); - myGrp->LineEdit22->setText( QString( "%1" ).arg( aMat( 2, 2 ), 12, 'e', 4 ) ); - myGrp->LineEdit23->setText( QString( "%1" ).arg( aMat( 2, 3 ), 12, 'e', 4 ) ); - - myGrp->LineEdit31->setText( QString( "%1" ).arg( aMat( 3, 1 ), 12, 'e', 4 ) ); - myGrp->LineEdit32->setText( QString( "%1" ).arg( aMat( 3, 2 ), 12, 'e', 4 ) ); - myGrp->LineEdit33->setText( QString( "%1" ).arg( aMat( 3, 3 ), 12, 'e', 4 ) ); - - myGrp->LineEdit41->setText( QString( "%1" ).arg( anIXYZ.X(), 12, 'e', 4 ) ); - myGrp->LineEdit42->setText( QString( "%1" ).arg( anIXYZ.Y(), 12, 'e', 4 ) ); - myGrp->LineEdit43->setText( QString( "%1" ).arg( anIXYZ.Z(), 12, 'e', 4 ) ); - } -} - -//================================================================================= -// function : getParameters -// purpose : -//================================================================================= -bool MeasureGUI_InertiaDlg::getParameters( gp_Mat& I, - gp_XYZ& theIXYZ ) -{ - if ( myObj->_is_nil() ) - return false; - else - { - try - { - double x, y, z; - GEOM::GEOM_IMeasureOperations::_narrow( getOperation() )->GetInertia( myObj, - I( 1, 1 ), I( 1, 2 ), I( 1, 3 ), - I( 2, 1 ), I( 2, 2 ), I( 2, 3 ), - I( 3, 1 ), I( 3, 2 ), I( 3, 3 ), - x, y, z ); - - theIXYZ.SetCoord( x, y, z ); - } - catch( const SALOME::SALOME_Exception& e ) - { - SalomeApp_Tools::QtCatchCorbaException( e ); - return false; - } - - return getOperation()->IsDone(); - } -} - diff --git a/src/MeasureGUI/MeasureGUI_InertiaDlg.h b/src/MeasureGUI/MeasureGUI_InertiaDlg.h deleted file mode 100644 index 2ccf83203..000000000 --- a/src/MeasureGUI/MeasureGUI_InertiaDlg.h +++ /dev/null @@ -1,73 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : MeasureGUI_InertiaDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_INERTIA_H -#define DIALOGBOX_INERTIA_H - -#include "MeasureGUI_Skeleton.h" - -class MeasureGUI_1Sel12LineEdit_QTD; -class gp_XYZ; -class gp_Mat; - -#if defined WNT && defined MEASUREGUI_EXPORTS -#define MEASUREGUI_EXPORT __declspec( dllexport ) -#else -#define MEASUREGUI_EXPORT -#endif - -//================================================================================= -// class : MeasureGUI_InertiaDlg -// purpose : Dialog for displaying moment of inertia -//================================================================================= - -class MEASUREGUI_EXPORT MeasureGUI_InertiaDlg : public MeasureGUI_Skeleton -{ - Q_OBJECT - -public: - MeasureGUI_InertiaDlg( GeometryGUI* GUI, - QWidget* parent ); - ~MeasureGUI_InertiaDlg(); -protected: - - // redefined from GEOMBase_Helper and MeasureGUI_Skeleton - virtual void processObject(); - -private: - - void Init(); - bool getParameters( gp_Mat& theMatrix, - gp_XYZ& theMoment ); - -private: - - MeasureGUI_1Sel12LineEdit_QTD* myGrp; -}; - -#endif // DIALOGBOX_INERTIA_H diff --git a/src/MeasureGUI/MeasureGUI_MaxToleranceDlg.cxx b/src/MeasureGUI/MeasureGUI_MaxToleranceDlg.cxx deleted file mode 100644 index 75be01ef7..000000000 --- a/src/MeasureGUI/MeasureGUI_MaxToleranceDlg.cxx +++ /dev/null @@ -1,202 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : MeasureGUI_MaxToleranceDlg.cxx -// Author : Nicolas REJNERI -// Module : GEOM -// $Header$ - -#include "MeasureGUI_MaxToleranceDlg.h" -#include "MeasureGUI_1Sel6LineEdit_QTD.h" - -#include "utilities.h" -#include "SUIT_Session.h" -#include "SalomeApp_Tools.h" - -#include -#include -#include -#include -#include -#include - -//================================================================================= -// class : MeasureGUI_MaxToleranceDlg() -// purpose : Constructs a MeasureGUI_MaxToleranceDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -MeasureGUI_MaxToleranceDlg::MeasureGUI_MaxToleranceDlg( GeometryGUI* GUI, QWidget* parent ) -: MeasureGUI_Skeleton( GUI, parent, "MeasureGUI_MaxToleranceDlg" ) -{ - QPixmap image0( SUIT_Session::session()->resourceMgr()->loadPixmap( - "GEOM",tr( "ICON_DLG_TOLERANCE" ) ) ); - QPixmap image1( SUIT_Session::session()->resourceMgr()->loadPixmap( - "GEOM",tr( "ICON_SELECT" ) ) ); - - setCaption( tr( "GEOM_TOLERANCE_TITLE" ) ); - - /***************************************************************/ - - GroupConstructors->setTitle( tr( "GEOM_TOLERANCE" ) ); - RadioButton1->setPixmap( image0 ); - - myGrp = new MeasureGUI_1Sel6LineEdit_QTD( this, "myGrp" ); - myGrp->GroupBox1->setTitle( tr( "GEOM_TOLERANCE_CONSTR" ) ); - myGrp->TextLabel1->setText( tr( "GEOM_OBJECT" ) ); - myGrp->TextLabel2->setText( tr( "GEOM_MIN" ) ); - myGrp->TextLabel3->setText( tr( "GEOM_MAX" ) ); - myGrp->TextLabel4->setText( tr( "GEOM_TOLERANCE_FACE" ) ); - myGrp->TextLabel5->setText( tr( "GEOM_TOLERANCE_EDGE" ) ); - myGrp->TextLabel6->setText( tr( "GEOM_TOLERANCE_VERTEX" ) ); - myGrp->LineEdit11->setReadOnly( TRUE ); - myGrp->LineEdit12->setReadOnly( TRUE ); - myGrp->LineEdit21->setReadOnly( TRUE ); - myGrp->LineEdit22->setReadOnly( TRUE ); - myGrp->LineEdit31->setReadOnly( TRUE ); - myGrp->LineEdit32->setReadOnly( TRUE ); - myGrp->PushButton1->setPixmap( image1 ); - myGrp->LineEdit1->setReadOnly( true ); - - Layout1->addWidget( myGrp, 1, 0 ); - - /***************************************************************/ - - /* Initialisation */ - Init(); -} - - -//================================================================================= -// function : ~MeasureGUI_MaxToleranceDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -MeasureGUI_MaxToleranceDlg::~MeasureGUI_MaxToleranceDlg() -{ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void MeasureGUI_MaxToleranceDlg::Init() -{ - mySelBtn = myGrp->PushButton1; - mySelEdit = myGrp->LineEdit1; - MeasureGUI_Skeleton::Init(); -} - -//================================================================================= -// function : processObject -// purpose : -//================================================================================= -void MeasureGUI_MaxToleranceDlg::processObject() -{ - double aMinFaceToler, aMaxFaceToler; - double aMinEdgeToler, aMaxEdgeToler; - double aMinVertexToler, aMaxVertexToler; - - if ( !getParameters( aMinFaceToler, aMaxFaceToler, - aMinEdgeToler, aMaxEdgeToler, - aMinVertexToler, aMaxVertexToler ) ) - { - myGrp->LineEdit11->setText( "" ); - myGrp->LineEdit12->setText( "" ); - - myGrp->LineEdit21->setText( "" ); - myGrp->LineEdit22->setText( "" ); - - myGrp->LineEdit31->setText( "" ); - myGrp->LineEdit32->setText( "" ); - - return; - } - - double invalidMin = RealLast(); - double invalidMax = -RealLast(); - - myGrp->LineEdit11->setText( aMinFaceToler != invalidMin ? QString( "%1" ).arg( aMinFaceToler, 5, 'e', 8 ) : QString("") ); - myGrp->LineEdit12->setText( aMaxFaceToler != invalidMax ? QString( "%1" ).arg( aMaxFaceToler, 5, 'e', 8 ) : QString("") ); - - myGrp->LineEdit21->setText( aMinEdgeToler != invalidMin ? QString( "%1" ).arg( aMinEdgeToler, 5, 'e', 8 ) : QString("") ); - myGrp->LineEdit22->setText( aMaxEdgeToler != invalidMax ? QString( "%1" ).arg( aMaxEdgeToler, 5, 'e', 8 ) : QString("") ); - - myGrp->LineEdit31->setText( aMinVertexToler != invalidMin ? QString( "%1" ).arg( aMinVertexToler, 5, 'e', 8 ) : QString("") ); - myGrp->LineEdit32->setText( aMaxVertexToler != invalidMax ? QString( "%1" ).arg( aMaxVertexToler, 5, 'e', 8 ) : QString("") ); -} - -//================================================================================= -// function : getParameters -// purpose : Get tolerances. Returns false is myObj is nill. If there is no a -// type of entity ( face, edge or vertex ) in selected object then corresponding -// tolerances is less than 0 -//================================================================================= -bool MeasureGUI_MaxToleranceDlg::getParameters( double& theMinFaceToler, - double& theMaxFaceToler, - double& theMinEdgeToler, - double& theMaxEdgeToler, - double& theMinVertexToler, - double& theMaxVertexToler ) -{ - if ( myObj->_is_nil() ) - return false; - else - { - try - { - GEOM::GEOM_IMeasureOperations::_narrow( getOperation() )->GetTolerance( myObj, - theMinFaceToler, theMaxFaceToler, theMinEdgeToler, - theMaxEdgeToler, theMinVertexToler, theMaxVertexToler ); - } - catch( const SALOME::SALOME_Exception& e ) - { - SalomeApp_Tools::QtCatchCorbaException( e ); - return false; - } - - return getOperation()->IsDone(); - } -} - - - - - - - - - - - - - - - - - - - - - diff --git a/src/MeasureGUI/MeasureGUI_MaxToleranceDlg.h b/src/MeasureGUI/MeasureGUI_MaxToleranceDlg.h deleted file mode 100644 index 13c0733e1..000000000 --- a/src/MeasureGUI/MeasureGUI_MaxToleranceDlg.h +++ /dev/null @@ -1,87 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : MeasureGUI_MaxToleranceDlg.h -// Author : Nicolas REJNERI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_MAXTOLERANCE_H -#define DIALOGBOX_MAXTOLERANCE_H - -#include "MeasureGUI_Skeleton.h" - -class MeasureGUI_1Sel6LineEdit_QTD; - -#if defined WNT && defined MEASUREGUI_EXPORTS -#define MEASUREGUI_EXPORT __declspec( dllexport ) -#else -#define MEASUREGUI_EXPORT -#endif - -//================================================================================= -// class : DialogBox_PROPERTIES -// purpose : -//================================================================================= -class MEASUREGUI_EXPORT MeasureGUI_MaxToleranceDlg : public MeasureGUI_Skeleton -{ - Q_OBJECT - -public: - MeasureGUI_MaxToleranceDlg( GeometryGUI* GUI, - QWidget* parent ); - ~MeasureGUI_MaxToleranceDlg(); - -protected: - - // redefined from GEOMBase_Helper and MeasureGUI_Skeleton - virtual void processObject(); - -private: - - void Init(); - bool getParameters( double& theMinFaceToler, - double& theMaxFaceToler, - double& theMinEdgeToler, - double& theMaxEdgeToler, - double& theMinVertexToler, - double& theMaxVertexToler ); - - - -private: - - MeasureGUI_1Sel6LineEdit_QTD* myGrp; -}; - -#endif // DIALOGBOX_MAXTOLERANCE_H - - - - - - - - - - diff --git a/src/MeasureGUI/MeasureGUI_PointDlg.cxx b/src/MeasureGUI/MeasureGUI_PointDlg.cxx deleted file mode 100644 index d5aab6ed4..000000000 --- a/src/MeasureGUI/MeasureGUI_PointDlg.cxx +++ /dev/null @@ -1,223 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : MeasureGUI_PointDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "MeasureGUI_PointDlg.h" -#include "GEOMBase.h" - -#include "utilities.h" -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -//================================================================================= -// class : MeasureGUI_PointDlg() -// purpose : Constructs a MeasureGUI_PointDlg which is a child of 'parent' -// -//================================================================================= -MeasureGUI_PointDlg::MeasureGUI_PointDlg( GeometryGUI* GUI, QWidget* parent ) -: MeasureGUI_Skeleton( GUI, parent, "MeasureGUI_PointDlg" ) -{ - QPixmap iconPnt( SUIT_Session::session()->resourceMgr()->loadPixmap( - "GEOM",tr( "ICON_DLG_POINT" ) ) ); - - QPixmap iconSelect( SUIT_Session::session()->resourceMgr()->loadPixmap( - "GEOM",tr( "ICON_SELECT" ) ) ); - - setCaption( tr( "CAPTION" ) ); - - GroupConstructors->setTitle( tr( "CAPTION" ) ); - RadioButton1->setPixmap( iconPnt ); - - QGroupBox* aGrp = new QGroupBox( 2, Qt::Horizontal, tr( "COORDINATES" ), this ); - - new QLabel( tr( "POINT" ), aGrp ); - QFrame* aFrame = new QFrame( aGrp ); - mySelBtn = new QPushButton( aFrame ); - mySelBtn->setPixmap( iconSelect ); - mySelEdit = new QLineEdit( aFrame ); - QHBoxLayout* aLay = new QHBoxLayout( aFrame, 0, 10 ); - aLay->addWidget( mySelBtn ); - aLay->addWidget( mySelEdit ); - - new QLabel( tr( "X" ), aGrp ); - myX = new QLineEdit( aGrp ); - new QLabel( tr( "Y" ), aGrp ); - myY = new QLineEdit( aGrp ); - new QLabel( tr( "Z" ), aGrp ); - myZ = new QLineEdit( aGrp ); - - mySelEdit->setReadOnly( true ); - myX->setReadOnly( true ); - myY->setReadOnly( true ); - myZ->setReadOnly( true ); - - Layout1->addWidget( aGrp, 1, 0 ); - - Init(); -} - - -//================================================================================= -// function : ~MeasureGUI_PointDlg() -// purpose : Destroys the object and frees any allocated resources -//======================myX->setReadOnly( true );=========================================================== -MeasureGUI_PointDlg::~MeasureGUI_PointDlg() -{ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void MeasureGUI_PointDlg::Init() -{ - QSize aSize( size() ); - resize( (int)(aSize.width() *0.75 ), aSize.height() ); - MeasureGUI_Skeleton::Init(); -} - -//================================================================================= -// function : activateSelection -// purpose : -//================================================================================= -void MeasureGUI_PointDlg::activateSelection() -{ - localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX ); -} - -//================================================================================= -// function : SelectionIntoArgument -// purpose : -//================================================================================= -void MeasureGUI_PointDlg::SelectionIntoArgument() -{ - try - { - myObj = GEOM::GEOM_Object::_nil(); - mySelEdit->setText( "" ); - myX->setText( "" ); - myY->setText( "" ); - myZ->setText( "" ); - - Standard_Boolean testResult = Standard_False; - GEOM::GEOM_Object_var aSelectedObject = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); - - if( !testResult || aSelectedObject->_is_nil() ) - return; - - myObj = aSelectedObject; - - TColStd_IndexedMapOfInteger anIndexes; - ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))-> - selectionMgr()->GetIndexes( firstIObject(), anIndexes ); - - TopoDS_Shape aShape; - if ( anIndexes.Extent() > 1 || !GEOMBase::GetShape( myObj, aShape ) || aShape.IsNull() ) - return; - - TopoDS_Vertex aPoint; - QString aName = GEOMBase::GetName( myObj ); - if ( anIndexes.Extent() == 0 ) - { - if ( aShape.ShapeType() == TopAbs_VERTEX ) - aPoint = TopoDS::Vertex( aShape ); - } - else - { - int i = anIndexes( 1 ); - - TopTools_IndexedMapOfShape aShapes; - TopExp::MapShapes( aShape, aShapes ); - - if ( aShape != aShapes( i ) ) - aName += QString( ":%1" ).arg( i ); - - aPoint = TopoDS::Vertex( aShapes( i ) ); - } - - if ( !aPoint.IsNull() ) - { - gp_Pnt aPnt = BRep_Tool::Pnt( aPoint ); - mySelEdit->setText( aName ); - myX->setText( QString( "%1" ).arg( aPnt.X() ) ); - myY->setText( QString( "%1" ).arg( aPnt.Y() ) ); - myZ->setText( QString( "%1" ).arg( aPnt.Z() ) ); - } - } - catch( ... ) - { - myObj = GEOM::GEOM_Object::_nil(); - mySelEdit->setText( "" ); - myX->setText( "" ); - myY->setText( "" ); - myZ->setText( "" ); - } -} - - - - - - - - - - - - - - - - - - - - diff --git a/src/MeasureGUI/MeasureGUI_PointDlg.h b/src/MeasureGUI/MeasureGUI_PointDlg.h deleted file mode 100644 index f26853b9a..000000000 --- a/src/MeasureGUI/MeasureGUI_PointDlg.h +++ /dev/null @@ -1,85 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : MeasureGUI_PointDlg.h -// Author : Sergey LITONIN -// Module : GEOM - -#ifndef MEASUREGUI_POINTDLG_H -#define MEASUREGUI_POINTDLG_H - -#include "MeasureGUI_Skeleton.h" - -class QLineEdit; - -#if defined WNT && defined MEASUREGUI_EXPORTS -#define MEASUREGUI_EXPORT __declspec( dllexport ) -#else -#define MEASUREGUI_EXPORT -#endif - -//================================================================================= -// class : MeasureGUI_PointDlg -// purpose : Dialog for displaying point coordinates -//================================================================================= - -class MEASUREGUI_EXPORT MeasureGUI_PointDlg : public MeasureGUI_Skeleton -{ - Q_OBJECT - -public: - MeasureGUI_PointDlg( GeometryGUI* GUI, - QWidget* parent ); - ~MeasureGUI_PointDlg(); - -protected: - - // redefined from GEOMBase_Helper and MeasureGUI_Skeleton - virtual void activateSelection(); - virtual void SelectionIntoArgument(); - -private: - - void Init(); -private: - QLineEdit* myX; - QLineEdit* myY; - QLineEdit* myZ; - -}; - -#endif // DIALOGBOX_PROPERTIES_H - - - - - - - - - - - - - - diff --git a/src/MeasureGUI/MeasureGUI_PropertiesDlg.cxx b/src/MeasureGUI/MeasureGUI_PropertiesDlg.cxx deleted file mode 100644 index 596cddd4f..000000000 --- a/src/MeasureGUI/MeasureGUI_PropertiesDlg.cxx +++ /dev/null @@ -1,221 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : MeasureGUI_PropertiesDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "MeasureGUI_PropertiesDlg.h" -#include "MeasureGUI_1Sel3LineEdit_QTD.h" -#include "GEOM_Displayer.h" -#include "GEOMImpl_Types.hxx" -#include "GEOMBase.h" - -#include "SalomeApp_Tools.h" -#include "utilities.h" -#include "SUIT_Session.h" - -#include - -#include -#include -#include -#include -#include -#include - -//================================================================================= -// class : MeasureGUI_PropertiesDlg() -// purpose : Constructs a MeasureGUI_PropertiesDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -MeasureGUI_PropertiesDlg::MeasureGUI_PropertiesDlg( GeometryGUI* GUI, QWidget* parent ) -: MeasureGUI_Skeleton( GUI, parent, "MeasureGUI_PropertiesDlg" ) -{ - QPixmap image0( SUIT_Session::session()->resourceMgr()->loadPixmap( - "GEOM",tr( "ICON_DLG_BASICPROPERTIES" ) ) ); - QPixmap image1( SUIT_Session::session()->resourceMgr()->loadPixmap( - "GEOM",tr( "ICON_SELECT" ) ) ); - - setCaption( tr( "GEOM_PROPERTIES_TITLE" ) ); - - /***************************************************************/ - - GroupConstructors->setTitle( tr( "GEOM_PROPERTIES" ) ); - RadioButton1->setPixmap( image0 ); - - myGrp = new MeasureGUI_1Sel3LineEdit_QTD( this, "myGrp" ); - myGrp->GroupBox1->setTitle( tr( "GEOM_PROPERTIES_CONSTR" ) ); - myGrp->TextLabel1->setText( tr( "GEOM_OBJECT" ) ); - myGrp->TextLabel2->setText( tr( "GEOM_LENGTH" ) ); - myGrp->TextLabel3->setText( tr( "GEOM_PROPERTIES_SURFACE" ) ); - myGrp->TextLabel4->setText( tr( "GEOM_PROPERTIES_VOLUME" ) ); - myGrp->LineEdit2->setReadOnly( TRUE ); - myGrp->LineEdit3->setReadOnly( TRUE ); - myGrp->LineEdit4->setReadOnly( TRUE ); - myGrp->PushButton1->setPixmap( image1 ); - myGrp->LineEdit1->setReadOnly( true ); - - Layout1->addWidget( myGrp, 1, 0 ); - - /***************************************************************/ - - /* Initialisation */ - Init(); -} - - -//================================================================================= -// function : ~MeasureGUI_PropertiesDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -MeasureGUI_PropertiesDlg::~MeasureGUI_PropertiesDlg() -{ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void MeasureGUI_PropertiesDlg::Init() -{ - mySelBtn = myGrp->PushButton1; - mySelEdit = myGrp->LineEdit1; - MeasureGUI_Skeleton::Init(); -} - -//================================================================================= -// function : activateSelection -// purpose : -//================================================================================= -void MeasureGUI_PropertiesDlg::activateSelection() -{ - static TColStd_MapOfInteger aTypes; - if ( aTypes.IsEmpty() ) - { - aTypes.Add( GEOM_COMPOUND ); -// aTypes.Add( TopAbs_COMPSOLID ); - aTypes.Add( GEOM_SOLID ); - aTypes.Add( GEOM_SHELL ); - aTypes.Add( GEOM_FACE ); - aTypes.Add( GEOM_WIRE ); - aTypes.Add( GEOM_EDGE ); - } - - globalSelection( aTypes ); -} - -//================================================================================= -// function : processObject -// purpose : -//================================================================================= -void MeasureGUI_PropertiesDlg::processObject() -{ - double aLength, anArea, aVolume; - - if ( !getParameters( aLength, anArea, aVolume ) ) - { - mySelEdit->setText( "" ); - myGrp->LineEdit2->setText( "" ); - myGrp->LineEdit3->setText( "" ); - myGrp->LineEdit4->setText( "" ); - } - else - { - myGrp->LineEdit2->setText( QString( "%1" ).arg( aLength ) ); - myGrp->LineEdit3->setText( QString( "%1" ).arg( anArea ) ); - myGrp->LineEdit4->setText( QString( "%1" ).arg( aVolume ) ); - } -} - -//================================================================================= -// function : getParameters -// purpose : -//================================================================================= -bool MeasureGUI_PropertiesDlg::getParameters( double& theLength, - double& theArea, - double& theVolume ) -{ - if ( myObj->_is_nil() ) - return false; - else - { - try - { - GEOM::GEOM_IMeasureOperations::_narrow( getOperation() )->GetBasicProperties( - myObj, theLength, theArea, theVolume ); - } - catch( const SALOME::SALOME_Exception& e ) - { - SalomeApp_Tools::QtCatchCorbaException( e ); - return false; - } - - return getOperation()->IsDone(); - } -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -SALOME_Prs* MeasureGUI_PropertiesDlg::buildPrs() -{ - TopoDS_Shape aShape, aResult; - - if ( myObj->_is_nil() || - !GEOMBase::GetShape( myObj, aShape )|| - aShape.IsNull() || - aShape.ShapeType() != TopAbs_EDGE || - !GEOMBase::CreateArrowForLinearEdge( aShape, aResult ) || - aResult.IsNull() ) - return 0; - - return getDisplayer()->BuildPrs( aResult ); - -} - - - - - - - - - - - - - - - - - - - - - diff --git a/src/MeasureGUI/MeasureGUI_PropertiesDlg.h b/src/MeasureGUI/MeasureGUI_PropertiesDlg.h deleted file mode 100644 index e63a0ef56..000000000 --- a/src/MeasureGUI/MeasureGUI_PropertiesDlg.h +++ /dev/null @@ -1,87 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : MeasureGUI_PropertiesDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM - -#ifndef DIALOGBOX_PROPERTIES_H -#define DIALOGBOX_PROPERTIES_H - -#include "MeasureGUI_Skeleton.h" -class MeasureGUI_1Sel3LineEdit_QTD; - -#if defined WNT && defined MEASUREGUI_EXPORTS -#define MEASUREGUI_EXPORT __declspec( dllexport ) -#else -#define MEASUREGUI_EXPORT -#endif - -//================================================================================= -// class : MeasureGUI_PropertiesDlg -// purpose : Dialog for displaying length, area and volume -//================================================================================= - -class MEASUREGUI_EXPORT MeasureGUI_PropertiesDlg : public MeasureGUI_Skeleton -{ - Q_OBJECT - -public: - MeasureGUI_PropertiesDlg( GeometryGUI* GUI, - QWidget* parent ); - ~MeasureGUI_PropertiesDlg(); - -protected: - - // redefined from GEOMBase_Helper and MeasureGUI_Skeleton - virtual void processObject(); - virtual void activateSelection(); - virtual SALOME_Prs* buildPrs(); - -private: - - void Init(); - bool getParameters( double& theLength, - double& theArea, - double& theVolume ); - -private: - - MeasureGUI_1Sel3LineEdit_QTD* myGrp; -}; - -#endif // DIALOGBOX_PROPERTIES_H - - - - - - - - - - - - - - diff --git a/src/MeasureGUI/MeasureGUI_Skeleton.cxx b/src/MeasureGUI/MeasureGUI_Skeleton.cxx deleted file mode 100644 index 4e89cddc8..000000000 --- a/src/MeasureGUI/MeasureGUI_Skeleton.cxx +++ /dev/null @@ -1,344 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : MeasureGUI_Skeleton.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header$ - -#include "MeasureGUI_Skeleton.h" -#include "GEOMBase.h" -#include "GEOM_Displayer.h" -#include "GeometryGUI.h" - -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" -#include "SalomeApp_Tools.h" -#include "SUIT_Session.h" -#include "SUIT_OverrideCursor.h" - -#include -#include -#include -#include -#include -#include - -//================================================================================= -// class : MeasureGUI_Skeleton() -// purpose : Constructs a MeasureGUI_Skeleton which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -MeasureGUI_Skeleton::MeasureGUI_Skeleton( GeometryGUI* GUI, - QWidget* parent, - const char* name ) -: MeasureGUI_Skeleton_QTD( parent, name, false, - WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu | WDestructiveClose ), - GEOMBase_Helper( dynamic_cast( parent ) ), - myGeomGUI( GUI ) -{ - - mySelBtn = 0; - mySelEdit = 0; - myDisplayer = 0; - - if ( !name ) - setName( "MeasureGUI_Skeleton" ); - - buttonClose->setText( tr( "GEOM_BUT_CLOSE" ) ); - - buttonClose->setAutoDefault( false ); - - GroupMedium->close( TRUE ); - resize( 350, 0 ); -} - - -//================================================================================= -// function : ~MeasureGUI_Skeleton() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -MeasureGUI_Skeleton::~MeasureGUI_Skeleton() -{ - myGeomGUI->SetActiveDialogBox( 0 ); - delete myDisplayer; -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void MeasureGUI_Skeleton::Init() -{ - /* init variables */ - myGeomGUI->SetActiveDialogBox((QDialog*)this); - - /* signals and slots connections */ - - connect( buttonClose, SIGNAL( clicked() ), - this, SLOT( ClickOnCancel() ) ); - - connect( myGeomGUI, SIGNAL( SignalDeactivateActiveDialog() ), - this, SLOT ( DeactivateActiveDialog() ) ); - - connect( myGeomGUI, SIGNAL( SignalCloseAllDialogs() ), - this, SLOT ( ClickOnCancel() ) ); - - connect( mySelEdit, SIGNAL( returnPressed() ), - this, SLOT( LineEditReturnPressed() ) ); - - connect( mySelBtn, SIGNAL( clicked() ), - this, SLOT ( SetEditCurrentArgument() ) ); - - SalomeApp_SelectionMgr* aSel = ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(); - if ( aSel ) - connect( aSel, SIGNAL( currentSelectionChanged() ), - this, SLOT ( SelectionIntoArgument() ) ) ; - - /* displays Dialog */ - RadioButton1->setChecked( TRUE ); - - activateSelection(); - SelectionIntoArgument(); - show(); -} - - -//================================================================================= -// function : ClickOnCancel() -// purpose : -//================================================================================= -void MeasureGUI_Skeleton::ClickOnCancel() -{ - close(); -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void MeasureGUI_Skeleton::LineEditReturnPressed() -{ - /* User name of object input management */ - /* If successfull the selection is changed and signal emitted... */ - /* so SelectionIntoArgument() is automatically called. */ - - const QString objectUserName = mySelEdit->text(); - QWidget* thisWidget = ( QWidget* )this; - - if ( GEOMBase::SelectionByNameInDialogs( thisWidget, objectUserName, selectedIO() ) ) - mySelEdit->setText( objectUserName ); -} - - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : -//================================================================================= -void MeasureGUI_Skeleton::DeactivateActiveDialog() -{ - setEnabled( false ); - - SalomeApp_SelectionMgr* aSel = ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(); - if ( aSel ) - disconnect( aSel, 0, this, 0 ); - - myGeomGUI->SetActiveDialogBox( 0 ); - - globalSelection(); -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void MeasureGUI_Skeleton::ActivateThisDialog() -{ - myGeomGUI->EmitSignalDeactivateDialog(); - - setEnabled( true ); - - myGeomGUI->SetActiveDialogBox( ( QDialog* )this ); - - SalomeApp_SelectionMgr* aSel = ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(); - if ( aSel ) - connect( aSel, SIGNAL( currentSelectionChanged() ), - this, SLOT ( SelectionIntoArgument() ) ) ; - - redisplayPreview(); - activateSelection(); -} - -//================================================================================= -// function : SetEditCurrentArgument -// purpose : -//================================================================================= -void MeasureGUI_Skeleton::SetEditCurrentArgument() -{ - mySelEdit->setFocus(); - SelectionIntoArgument(); -} - -//================================================================================= -// function : SelectionIntoArgument -// purpose : -//================================================================================= -void MeasureGUI_Skeleton::SelectionIntoArgument() -{ - myObj = GEOM::GEOM_Object::_nil(); - - Standard_Boolean testResult = Standard_False; - GEOM::GEOM_Object_var aSelectedObject = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); - - if( !testResult || aSelectedObject->_is_nil() ) - { - mySelEdit->setText( "" ); - processObject(); - erasePreview(); - return; - } - - myObj = aSelectedObject; - mySelEdit->setText( GEOMBase::GetName( myObj ) ); - processObject(); - redisplayPreview(); -} - -//================================================================================= -// function : processObject -// purpose : -//================================================================================= -void MeasureGUI_Skeleton::processObject() -{ -} - - -//================================================================================= -// function : closeEvent -// purpose : -//================================================================================= -void MeasureGUI_Skeleton::closeEvent( QCloseEvent* e ) -{ - SalomeApp_SelectionMgr* aSel = ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(); - if ( aSel ) - disconnect( aSel, 0, this, 0 ); - QDialog::closeEvent( e ); -} - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void MeasureGUI_Skeleton::enterEvent(QEvent* e) -{ - if ( GroupConstructors->isEnabled() ) - return; - - ActivateThisDialog(); -} - -//================================================================================= -// function : buildPrs -// purpose : Build presentation for "preview" -//================================================================================= -SALOME_Prs* MeasureGUI_Skeleton::buildPrs() -{ - return 0; -} - -//================================================================================= -// function : closeEvent() -// purpose : Build presentation for "preview" -//================================================================================= -void MeasureGUI_Skeleton::redisplayPreview() -{ - QString aMess; - if ( !isValid( aMess ) ) - { - erasePreview( true ); - return; - } - - erasePreview( false ); - - try - { - SUIT_OverrideCursor(); - - getDisplayer()->SetColor( Quantity_NOC_VIOLET ); - getDisplayer()->SetToActivate( false ); - - if ( SALOME_Prs* aPrs = buildPrs() ) - displayPreview( aPrs ); - } - catch( const SALOME::SALOME_Exception& e ) - { - SalomeApp_Tools::QtCatchCorbaException( e ); - } - -} - -//================================================================================= -// function : activateSelection -// purpose : -//================================================================================= -void MeasureGUI_Skeleton::activateSelection() -{ - globalSelection( GEOM_ALLSHAPES ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool MeasureGUI_Skeleton::isValid( QString& ) -{ - return !myObj->_is_nil(); -} - -//================================================================ -// Function : getDisplayer -// Purpose : -//================================================================ -GEOM_Displayer* MeasureGUI_Skeleton::getDisplayer() -{ - if ( !myDisplayer ) - myDisplayer = new GEOM_Displayer( getStudy() ); - return myDisplayer; -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr MeasureGUI_Skeleton::createOperation() -{ - return getGeomEngine()->GetIMeasureOperations( getStudyId() ); -} - diff --git a/src/MeasureGUI/MeasureGUI_Skeleton.h b/src/MeasureGUI/MeasureGUI_Skeleton.h deleted file mode 100644 index bcf601a1e..000000000 --- a/src/MeasureGUI/MeasureGUI_Skeleton.h +++ /dev/null @@ -1,98 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : MeasureGUI_Skeleton.h -// Author : Damine COQUERET -// Module : GEOM -// $Header: - -#ifndef MEASUREGUI_SKELETON_H -#define MEASUREGUI_SKELETON_H - -#include "MeasureGUI_Skeleton_QTD.h" -#include "GEOMBase_Helper.h" - -class GeometryGUI; -class QWidget; -class QLineEdit; -class QPushButton; -class GEOM_Displayer; - -class MeasureGUI_Skeleton : public MeasureGUI_Skeleton_QTD, - public GEOMBase_Helper -{ - Q_OBJECT - -public: - MeasureGUI_Skeleton( GeometryGUI* GUI, - QWidget* parent, - const char* name ); - ~MeasureGUI_Skeleton(); - -protected slots: - - virtual void ClickOnCancel(); - virtual void DeactivateActiveDialog(); - virtual void ActivateThisDialog(); - virtual void SelectionIntoArgument(); - virtual void LineEditReturnPressed(); - virtual void SetEditCurrentArgument(); - -protected: - - void Init(); - - void enterEvent( QEvent* e ); - void closeEvent( QCloseEvent* e ); - void redisplayPreview(); - GEOM_Displayer* getDisplayer(); - - virtual bool isValid( QString& msg ); - virtual SALOME_Prs* buildPrs(); - virtual void processObject(); - virtual void activateSelection(); - - virtual GEOM::GEOM_IOperations_ptr createOperation(); - -protected: - - QPushButton* mySelBtn; - QLineEdit* mySelEdit; - GEOM::GEOM_Object_var myObj; - - GeometryGUI* myGeomGUI; - GEOM_Displayer* myDisplayer; -}; - -#endif // MEASUREGUI_SKELETON_H - - - - - - - - - - - diff --git a/src/MeasureGUI/MeasureGUI_Skeleton_QTD.cxx b/src/MeasureGUI/MeasureGUI_Skeleton_QTD.cxx deleted file mode 100644 index 5022ad561..000000000 --- a/src/MeasureGUI/MeasureGUI_Skeleton_QTD.cxx +++ /dev/null @@ -1,99 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'MeasureGUI_Skeleton_QTD.ui' -** -** Created: lun oct 27 11:23:09 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#include "MeasureGUI_Skeleton_QTD.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a MeasureGUI_Skeleton_QTD which is a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - * - * The dialog will by default be modeless, unless you set 'modal' to - * TRUE to construct a modal dialog. - */ -MeasureGUI_Skeleton_QTD::MeasureGUI_Skeleton_QTD( QWidget* parent, const char* name, bool modal, WFlags fl ) - : QDialog( parent, name, modal, fl ) -{ - if ( !name ) - setName( "MeasureGUI_Skeleton_QTD" ); - resize( 228, 266 ); - setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)7, 0, 0, sizePolicy().hasHeightForWidth() ) ); - setCaption( trUtf8( "MeasureGUI_Skeleton_QTD" ) ); - setSizeGripEnabled( TRUE ); - MeasureGUI_Skeleton_QTDLayout = new QGridLayout( this, 1, 1, 11, 6, "MeasureGUI_Skeleton_QTDLayout"); - - Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); - - GroupButtons = new QGroupBox( this, "GroupButtons" ); - GroupButtons->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, GroupButtons->sizePolicy().hasHeightForWidth() ) ); - GroupButtons->setTitle( trUtf8( "" ) ); - GroupButtons->setColumnLayout(0, Qt::Vertical ); - GroupButtons->layout()->setSpacing( 6 ); - GroupButtons->layout()->setMargin( 11 ); - GroupButtonsLayout = new QGridLayout( GroupButtons->layout() ); - GroupButtonsLayout->setAlignment( Qt::AlignTop ); - - Layout3 = new QGridLayout( 0, 1, 1, 0, 6, "Layout3"); - QSpacerItem* spacer = new QSpacerItem( 120, 0, QSizePolicy::Expanding, QSizePolicy::Minimum ); - Layout3->addItem( spacer, 0, 2 ); - QSpacerItem* spacer_2 = new QSpacerItem( 120, 0, QSizePolicy::Expanding, QSizePolicy::Minimum ); - Layout3->addItem( spacer_2, 0, 0 ); - - buttonClose = new QPushButton( GroupButtons, "buttonClose" ); - buttonClose->setText( trUtf8( "&Close" ) ); - - Layout3->addWidget( buttonClose, 0, 1 ); - - GroupButtonsLayout->addLayout( Layout3, 0, 0 ); - - Layout1->addWidget( GroupButtons, 2, 0 ); - - GroupConstructors = new QButtonGroup( this, "GroupConstructors" ); - GroupConstructors->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)0, 0, 0, GroupConstructors->sizePolicy().hasHeightForWidth() ) ); - GroupConstructors->setTitle( trUtf8( "" ) ); - GroupConstructors->setColumnLayout(0, Qt::Vertical ); - GroupConstructors->layout()->setSpacing( 6 ); - GroupConstructors->layout()->setMargin( 11 ); - GroupConstructorsLayout = new QGridLayout( GroupConstructors->layout() ); - GroupConstructorsLayout->setAlignment( Qt::AlignTop ); - - Layout2 = new QHBoxLayout( 0, 0, 6, "Layout2"); - - RadioButton1 = new QRadioButton( GroupConstructors, "RadioButton1" ); - RadioButton1->setText( trUtf8( "" ) ); - Layout2->addWidget( RadioButton1 ); - - GroupConstructorsLayout->addLayout( Layout2, 0, 0 ); - - Layout1->addWidget( GroupConstructors, 0, 0 ); - - GroupMedium = new QGroupBox( this, "GroupMedium" ); - GroupMedium->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)7, 0, 0, GroupMedium->sizePolicy().hasHeightForWidth() ) ); - GroupMedium->setTitle( trUtf8( "" ) ); - - Layout1->addWidget( GroupMedium, 1, 0 ); - - MeasureGUI_Skeleton_QTDLayout->addLayout( Layout1, 0, 0 ); -} - -/* - * Destroys the object and frees any allocated resources - */ -MeasureGUI_Skeleton_QTD::~MeasureGUI_Skeleton_QTD() -{ - // no need to delete child widgets, Qt does it all for us -} - diff --git a/src/MeasureGUI/MeasureGUI_Skeleton_QTD.h b/src/MeasureGUI/MeasureGUI_Skeleton_QTD.h deleted file mode 100644 index 39564b036..000000000 --- a/src/MeasureGUI/MeasureGUI_Skeleton_QTD.h +++ /dev/null @@ -1,46 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'MeasureGUI_Skeleton_QTD.ui' -** -** Created: lun oct 27 11:23:09 2003 -** by: The User Interface Compiler (uic) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ -#ifndef MEASUREGUI_SKELETON_QTD_H -#define MEASUREGUI_SKELETON_QTD_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QButtonGroup; -class QGroupBox; -class QPushButton; -class QRadioButton; - -class MeasureGUI_Skeleton_QTD : public QDialog -{ - Q_OBJECT - -public: - MeasureGUI_Skeleton_QTD( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); - ~MeasureGUI_Skeleton_QTD(); - - QGroupBox* GroupButtons; - QPushButton* buttonClose; - QButtonGroup* GroupConstructors; - QRadioButton* RadioButton1; - QGroupBox* GroupMedium; - - -protected: - QGridLayout* MeasureGUI_Skeleton_QTDLayout; - QGridLayout* Layout1; - QGridLayout* GroupButtonsLayout; - QGridLayout* Layout3; - QGridLayout* GroupConstructorsLayout; - QHBoxLayout* Layout2; -}; - -#endif // MEASUREGUI_SKELETON_QTD_H diff --git a/src/MeasureGUI/MeasureGUI_WhatisDlg.cxx b/src/MeasureGUI/MeasureGUI_WhatisDlg.cxx deleted file mode 100644 index 7bd5a6a81..000000000 --- a/src/MeasureGUI/MeasureGUI_WhatisDlg.cxx +++ /dev/null @@ -1,148 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : MeasureGUI_WhatisDlg.cxx -// Author : Nicolas REJNERI -// Module : GEOM -// $Header$ - -#include "MeasureGUI_WhatisDlg.h" -#include "MeasureGUI_1Sel1TextView_QTD.h" -#include "GEOMBase.h" - -#include -#include -#include -#include -#include -#include - -#include - -#include "utilities.h" -#include "SUIT_Session.h" -#include "SalomeApp_Tools.h" - -#include -#include -#include -#include -#include -#include -#include - -//================================================================================= -// class : MeasureGUI_WhatisDlg( ) -// purpose : Constructs a MeasureGUI_WhatisDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -MeasureGUI_WhatisDlg::MeasureGUI_WhatisDlg( GeometryGUI* GUI, QWidget* parent ) -: MeasureGUI_Skeleton( GUI, parent, "MeasureGUI_WhatisDlg" ) -{ - QPixmap image0( SUIT_Session::session()->resourceMgr()->loadPixmap( - "GEOM",tr( "ICON_DLG_WHATIS" ) ) ); - QPixmap image1( SUIT_Session::session()->resourceMgr()->loadPixmap( - "GEOM",tr( "ICON_SELECT" ) ) ); - - setCaption( tr( "GEOM_WHATIS_TITLE" ) ); - - /***************************************************************/ - - GroupConstructors->setTitle( tr( "GEOM_WHATIS" ) ); - RadioButton1->setPixmap( image0 ); - - myGrp = new MeasureGUI_1Sel1TextView_QTD( this, "myGrp" ); - myGrp->GroupBox1->setTitle( tr( "GEOM_WHATIS_OBJECT" ) ); - myGrp->TextLabel1->setText( tr( "GEOM_OBJECT" ) ); - myGrp->TextEdit1->setReadOnly( TRUE ); - myGrp->PushButton1->setPixmap( image1 ); - myGrp->LineEdit1->setReadOnly( true ); - - Layout1->addWidget( myGrp, 1, 0 ); - - /***************************************************************/ - - /* Initialisation */ - Init(); -} - - -//================================================================================= -// function : ~MeasureGUI_WhatisDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -MeasureGUI_WhatisDlg::~MeasureGUI_WhatisDlg() -{ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void MeasureGUI_WhatisDlg::Init() -{ - mySelBtn = myGrp->PushButton1; - mySelEdit = myGrp->LineEdit1; - MeasureGUI_Skeleton::Init(); -} - -//================================================================================= -// function : processObject -// purpose : -//================================================================================= -void MeasureGUI_WhatisDlg::processObject() -{ - QString aText; - myGrp->TextEdit1->setText( getParameters( aText ) ? aText : QString("") ); -} - - -//================================================================================= -// function : getParameters -// purpose : -//================================================================================= -bool MeasureGUI_WhatisDlg::getParameters( QString& theText ) -{ - if ( myObj->_is_nil() ) - return false; - else - { - try - { - theText = GEOM::GEOM_IMeasureOperations::_narrow( getOperation() )->WhatIs( myObj ); - } - catch( const SALOME::SALOME_Exception& e ) - { - SalomeApp_Tools::QtCatchCorbaException( e ); - return false; - } - - return getOperation()->IsDone(); - } -} - - - diff --git a/src/MeasureGUI/MeasureGUI_WhatisDlg.h b/src/MeasureGUI/MeasureGUI_WhatisDlg.h deleted file mode 100644 index ebdf84be1..000000000 --- a/src/MeasureGUI/MeasureGUI_WhatisDlg.h +++ /dev/null @@ -1,71 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : MeasureGUI_WhatisDlg.h -// Author : Nicolas REJNERI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_WHATIS_H -#define DIALOGBOX_WHATIS_H - -#include "MeasureGUI_Skeleton.h" - -class MeasureGUI_1Sel1TextView_QTD; - -#if defined WNT && defined MEASUREGUI_EXPORTS -#define MEASUREGUI_EXPORT __declspec( dllexport ) -#else -#define MEASUREGUI_EXPORT -#endif - -//================================================================================= -// class : DialogBox_PROPERTIES -// purpose : -//================================================================================= -class MEASUREGUI_EXPORT MeasureGUI_WhatisDlg : public MeasureGUI_Skeleton -{ - Q_OBJECT - -public: - MeasureGUI_WhatisDlg( GeometryGUI* GUI, - QWidget* parent ); - ~MeasureGUI_WhatisDlg(); - -protected: - - // redefined from GEOMBase_Helper and MeasureGUI_Skeleton - virtual void processObject(); - -private: - - void Init(); - bool getParameters( QString& ); - -private: - - MeasureGUI_1Sel1TextView_QTD* myGrp; - -}; - -#endif // DIALOGBOX_WHATIS_H diff --git a/src/MeasureGUI/UIFiles/MeasureGUI_1Sel12LineEdit_QTD.ui b/src/MeasureGUI/UIFiles/MeasureGUI_1Sel12LineEdit_QTD.ui deleted file mode 100644 index 505b87b68..000000000 --- a/src/MeasureGUI/UIFiles/MeasureGUI_1Sel12LineEdit_QTD.ui +++ /dev/null @@ -1,268 +0,0 @@ - -MeasureGUI_1Sel12LineEdit_QTD - - - MeasureGUI_1Sel12LineEdit_QTD - - - - 0 - 0 - 131 - 171 - - - - MeasureGUI_1Sel12LineEdit_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - - 7 - 7 - 0 - 0 - - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - Layout2 - - - - unnamed - - - 0 - - - 6 - - - - LineEdit12 - - - - - LineEdit11 - - - - - LineEdit42 - - - - - TextLabel5 - - - - 0 - 0 - 0 - 0 - - - - TL5 - - - - - LineEdit31 - - - - - LineEdit41 - - - - - LineEdit23 - - - - - LineEdit33 - - - - - LineEdit43 - - - - - LineEdit22 - - - - - TextLabel2 - - - - 0 - 0 - 0 - 0 - - - - TL2 - - - - - TextLabel4 - - - - 0 - 0 - 0 - 0 - - - - TL4 - - - - - LineEdit13 - - - - - LineEdit32 - - - - - LineEdit21 - - - - - TextLabel3 - - - - 0 - 0 - 0 - 0 - - - - TL3 - - - - - - - LineEdit1 - - - - - Spacer8 - - - Vertical - - - Expanding - - - - 0 - 40 - - - - - - PushButton1 - - - - 0 - 0 - 0 - 0 - - - - - - - - - TextLabel1 - - - - 0 - 0 - 0 - 0 - - - - TL1 - - - - - - - - - - diff --git a/src/MeasureGUI/UIFiles/MeasureGUI_1Sel1TextView_QTD.ui b/src/MeasureGUI/UIFiles/MeasureGUI_1Sel1TextView_QTD.ui deleted file mode 100644 index d8e24583e..000000000 --- a/src/MeasureGUI/UIFiles/MeasureGUI_1Sel1TextView_QTD.ui +++ /dev/null @@ -1,116 +0,0 @@ - -MeasureGUI_1Sel1TextView_QTD - - - MeasureGUI_1Sel1TextView_QTD - - - - 0 - 0 - 130 - 160 - - - - MeasureGUI_1Sel1TextView_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - - 7 - 7 - 0 - 0 - - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - TextLabel1 - - - - 0 - 0 - 0 - 0 - - - - TL1 - - - - - TextEdit1 - - - - - LineEdit1 - - - - - PushButton1 - - - - 0 - 0 - 0 - 0 - - - - - - - - - - - - - - diff --git a/src/MeasureGUI/UIFiles/MeasureGUI_1Sel3LineEdit_QTD.ui b/src/MeasureGUI/UIFiles/MeasureGUI_1Sel3LineEdit_QTD.ui deleted file mode 100644 index 07db7bfb0..000000000 --- a/src/MeasureGUI/UIFiles/MeasureGUI_1Sel3LineEdit_QTD.ui +++ /dev/null @@ -1,191 +0,0 @@ - -MeasureGUI_1Sel3LineEdit_QTD - - - MeasureGUI_1Sel3LineEdit_QTD - - - - 0 - 0 - 129 - 141 - - - - MeasureGUI_1Sel3LineEdit_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - - 7 - 7 - 0 - 0 - - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout2 - - - - unnamed - - - 0 - - - 6 - - - - TextLabel1 - - - - 0 - 0 - 0 - 0 - - - - TL1 - - - - - LineEdit4 - - - - - TextLabel3 - - - - 0 - 0 - 0 - 0 - - - - TL3 - - - - - LineEdit2 - - - - - Spacer8 - - - Vertical - - - Expanding - - - - 0 - 80 - - - - - - LineEdit3 - - - - - LineEdit1 - - - - - TextLabel4 - - - - 0 - 0 - 0 - 0 - - - - TL4 - - - - - TextLabel2 - - - - 0 - 0 - 0 - 0 - - - - TL2 - - - - - PushButton1 - - - - 0 - 0 - 0 - 0 - - - - - - - - - - - - - - diff --git a/src/MeasureGUI/UIFiles/MeasureGUI_1Sel6LineEdit_QTD.ui b/src/MeasureGUI/UIFiles/MeasureGUI_1Sel6LineEdit_QTD.ui deleted file mode 100644 index b439a76de..000000000 --- a/src/MeasureGUI/UIFiles/MeasureGUI_1Sel6LineEdit_QTD.ui +++ /dev/null @@ -1,254 +0,0 @@ - -MeasureGUI_1Sel6LineEdit_QTD - - - MeasureGUI_1Sel6LineEdit_QTD - - - - 0 - 0 - 129 - 163 - - - - MeasureGUI_1Sel6LineEdit_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - - 7 - 7 - 0 - 0 - - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - Spacer8 - - - Vertical - - - Expanding - - - - 0 - 50 - - - - - - TextLabel1 - - - - 0 - 0 - 0 - 0 - - - - TL1 - - - - - Layout2 - - - - unnamed - - - 0 - - - 6 - - - - LineEdit22 - - - - - LineEdit32 - - - - - TextLabel4 - - - - 0 - 0 - 0 - 0 - - - - TL4 - - - - - LineEdit31 - - - - - TextLabel5 - - - - 0 - 0 - 0 - 0 - - - - TL5 - - - - - LineEdit11 - - - - - TextLabel6 - - - - 0 - 0 - 0 - 0 - - - - TL6 - - - - - LineEdit12 - - - - - TextLabel2 - - - - 0 - 0 - 0 - 0 - - - - TL2 - - - - - LineEdit21 - - - - - TextLabel3 - - - - 0 - 0 - 0 - 0 - - - - TL3 - - - - - - - PushButton1 - - - - 0 - 0 - 0 - 0 - - - - - - - - - LineEdit1 - - - - - - - - - - diff --git a/src/MeasureGUI/UIFiles/MeasureGUI_2Sel1LineEdit_QTD.ui b/src/MeasureGUI/UIFiles/MeasureGUI_2Sel1LineEdit_QTD.ui deleted file mode 100644 index e68cca900..000000000 --- a/src/MeasureGUI/UIFiles/MeasureGUI_2Sel1LineEdit_QTD.ui +++ /dev/null @@ -1,186 +0,0 @@ - -MeasureGUI_2Sel1LineEdit_QTD - - - MeasureGUI_2Sel1LineEdit_QTD - - - - 0 - 0 - 129 - 115 - - - - MeasureGUI_2Sel1LineEdit_QTD - - - - unnamed - - - 0 - - - 6 - - - - GroupBox1 - - - - 7 - 7 - 0 - 0 - - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - Spacer8 - - - Vertical - - - Expanding - - - - 0 - 60 - - - - - - TextLabel3 - - - - 0 - 0 - 0 - 0 - - - - TL3 - - - - - LineEdit3 - - - - - LineEdit2 - - - - - TextLabel2 - - - - 0 - 0 - 0 - 0 - - - - TL2 - - - - - TextLabel1 - - - - 0 - 0 - 0 - 0 - - - - TL1 - - - - - PushButton1 - - - - 0 - 0 - 0 - 0 - - - - - - - - - LineEdit1 - - - - - PushButton2 - - - - 0 - 0 - 0 - 0 - - - - - - - - - - - - - - diff --git a/src/MeasureGUI/UIFiles/MeasureGUI_Skeleton_QTD.ui b/src/MeasureGUI/UIFiles/MeasureGUI_Skeleton_QTD.ui deleted file mode 100644 index d759fb401..000000000 --- a/src/MeasureGUI/UIFiles/MeasureGUI_Skeleton_QTD.ui +++ /dev/null @@ -1,210 +0,0 @@ - -MeasureGUI_Skeleton_QTD - - - MeasureGUI_Skeleton_QTD - - - - 0 - 0 - 228 - 266 - - - - - 5 - 7 - 0 - 0 - - - - MeasureGUI_Skeleton_QTD - - - true - - - - unnamed - - - 11 - - - 6 - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - GroupButtons - - - - 7 - 0 - 0 - 0 - - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout3 - - - - unnamed - - - 0 - - - 6 - - - - Spacer2 - - - Horizontal - - - Expanding - - - - 120 - 0 - - - - - - Spacer1 - - - Horizontal - - - Expanding - - - - 120 - 0 - - - - - - buttonClose - - - &Close - - - - - - - - - GroupConstructors - - - - 5 - 0 - 0 - 0 - - - - - - - - unnamed - - - 11 - - - 6 - - - - Layout2 - - - - unnamed - - - 0 - - - 6 - - - - RadioButton1 - - - - - - - - - - - - GroupMedium - - - - 7 - 7 - 0 - 0 - - - - - - - - - - - - diff --git a/src/MeasureGUI/UIFiles/ui_to_cxx b/src/MeasureGUI/UIFiles/ui_to_cxx deleted file mode 100755 index a0a350391..000000000 --- a/src/MeasureGUI/UIFiles/ui_to_cxx +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh - -#uic -o MeasureGUI_Skeleton_QTD.h MeasureGUI_Skeleton_QTD.ui -#uic -o MeasureGUI_Skeleton_QTD.cxx -impl MeasureGUI_Skeleton_QTD.h MeasureGUI_Skeleton_QTD.ui - -uic -o MeasureGUI_1Sel3LineEdit_QTD.h MeasureGUI_1Sel3LineEdit_QTD.ui -uic -o MeasureGUI_1Sel3LineEdit_QTD.cxx -impl MeasureGUI_1Sel3LineEdit_QTD.h MeasureGUI_1Sel3LineEdit_QTD.ui - -uic -o MeasureGUI_1Sel6LineEdit_QTD.h MeasureGUI_1Sel6LineEdit_QTD.ui -uic -o MeasureGUI_1Sel6LineEdit_QTD.cxx -impl MeasureGUI_1Sel6LineEdit_QTD.h MeasureGUI_1Sel6LineEdit_QTD.ui - -uic -o MeasureGUI_1Sel12LineEdit_QTD.h MeasureGUI_1Sel12LineEdit_QTD.ui -uic -o MeasureGUI_1Sel12LineEdit_QTD.cxx -impl MeasureGUI_1Sel12LineEdit_QTD.h MeasureGUI_1Sel12LineEdit_QTD.ui - -uic -o MeasureGUI_2Sel1LineEdit_QTD.h MeasureGUI_2Sel1LineEdit_QTD.ui -uic -o MeasureGUI_2Sel1LineEdit_QTD.cxx -impl MeasureGUI_2Sel1LineEdit_QTD.h MeasureGUI_2Sel1LineEdit_QTD.ui - -#uic -o MeasureGUI_1Sel1TextView_QTD.h MeasureGUI_1Sel1TextView_QTD.ui -#uic -o MeasureGUI_1Sel1TextView_QTD.cxx -impl MeasureGUI_1Sel1TextView_QTD.h MeasureGUI_1Sel1TextView_QTD.ui diff --git a/src/NMTAlgo/Makefile.in b/src/NMTAlgo/Makefile.in deleted file mode 100644 index 1dac5fc5f..000000000 --- a/src/NMTAlgo/Makefile.in +++ /dev/null @@ -1,70 +0,0 @@ -# GEOM NMTAlgo : partition algorithm -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.org -# -# -# -# File : Makefile.in -# Author : Julia DOROVSKIKH -# Module : GEOM -# $Header$ - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@ - - -@COMMENCE@ - -# Libraries targets -LIB = libNMTAlgo.la -LIB_SRC = \ - NMTAlgo_Algo.cxx \ - NMTAlgo_Builder.cxx \ - NMTAlgo_Loop3d.cxx \ - NMTAlgo_Splitter.cxx \ - NMTAlgo_Splitter1.cxx \ - NMTAlgo_Splitter_1.cxx \ - NMTAlgo_Splitter_2.cxx \ - NMTAlgo_Tools.cxx - -LIB_CLIENT_IDL = -LIB_SERVER_IDL = - -# header files -EXPORT_HEADERS = \ - NMTAlgo_Splitter1.hxx \ - NMTAlgo_Splitter.hxx \ - NMTAlgo_Builder.hxx \ - NMTAlgo_Algo.hxx - -# idl files -EXPORT_IDLS= - - -CPPFLAGS += $(OCC_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome -CXXFLAGS += $(OCC_CXXFLAGS) -I${KERNEL_ROOT_DIR}/include/salome -LDFLAGS += $(CAS_LDPATH) -lNMTTools -lTKBool -lTKBO -L${KERNEL_ROOT_DIR}/lib/salome - -%_moc.cxx: %.h - $(MOC) $< -o $@ - -@CONCLUDE@ diff --git a/src/NMTAlgo/NMTAlgo.cdl b/src/NMTAlgo/NMTAlgo.cdl deleted file mode 100644 index 19f52dad4..000000000 --- a/src/NMTAlgo/NMTAlgo.cdl +++ /dev/null @@ -1,40 +0,0 @@ --- File: NMTAlgo.cdl --- Created: Tue Jan 27 14:39:05 2004 --- Author: Peter KURNEV --- ----Copyright: Matra Datavision 2004 - - -package NMTAlgo - - ---Purpose: - -uses - TCollection, - TColStd, - gp, - TopAbs, - TopoDS, - TopTools, - - BooleanOperations, - BOPTColStd, - IntTools, - BOPTools, - BOP, - - NMTDS, - NMTTools, - - BRep, - BRepAlgo - -is - deferred class Algo; - class Splitter; - class Splitter1; --modified by NIZNHY-PKV Wed Feb 11 14:28:50 2004 - class Builder; - class Tools; - class Loop3d; - -end NMTAlgo; diff --git a/src/NMTAlgo/NMTAlgo_Algo.cdl b/src/NMTAlgo/NMTAlgo_Algo.cdl deleted file mode 100644 index cad765560..000000000 --- a/src/NMTAlgo/NMTAlgo_Algo.cdl +++ /dev/null @@ -1,59 +0,0 @@ --- File: NMTAlgo_Algo.cdl --- Created: Tue Jan 27 14:41:04 2004 --- Author: Peter KURNEV --- ----Copyright: Matra Datavision 2004 - - -deferred class Algo from NMTAlgo - - ---Purpose: - -uses - Shape from TopoDS, - - DSFiller from NMTTools, - PDSFiller from NMTTools - ---raises - -is - Initialize - returns Algo from NMTAlgo; - ---C++: alias "Standard_EXPORT virtual ~NMTAlgo_Algo();" - - - SetFiller(me:out; - aDSF: DSFiller from NMTTools); - - Filler(me) - returns DSFiller from NMTTools; - ---C++: return const & - - ComputeWithFiller(me:out; - aDSF: DSFiller from NMTTools) - is virtual; - - Clear (me:out) - is virtual; - - Shape (me) - returns Shape from TopoDS; - ---C++: return const & - - IsDone(me) - returns Boolean from Standard; - - ErrorStatus (me) - returns Integer from Standard; - -fields - myDSFiller : PDSFiller from NMTTools is protected; - myShape : Shape from TopoDS is protected; - -- - myIsDone : Boolean from Standard is protected; - myIsComputed : Boolean from Standard is protected; - myErrorStatus : Integer from Standard is protected; - myDraw : Integer from Standard is protected; - -end Algo; diff --git a/src/NMTAlgo/NMTAlgo_Algo.cxx b/src/NMTAlgo/NMTAlgo_Algo.cxx deleted file mode 100644 index 1b77cbceb..000000000 --- a/src/NMTAlgo/NMTAlgo_Algo.cxx +++ /dev/null @@ -1,119 +0,0 @@ -// File: NMTAlgo_Algo.cxx -// Created: Tue Jan 27 14:58:21 2004 -// Author: Peter KURNEV -// - - -#include -#include -//======================================================================= -// function: NMTAlgo_Algo::NMTAlgo_Algo -// purpose: -//======================================================================= - NMTAlgo_Algo::NMTAlgo_Algo() -: - myDSFiller(NULL), - myIsDone(Standard_False), - myIsComputed(Standard_False), - myErrorStatus(1) -{ - myDraw=0; - // - char* xr=getenv("MDISP"); - if (xr!=NULL) { - if (!strcmp (xr, "yes")) { - myDraw=1; - } - } -} -//======================================================================= -// function: NMTAlgo_Algo -// purpose: -//======================================================================= - NMTAlgo_Algo::~NMTAlgo_Algo() -{ - Clear(); -} -//======================================================================= -// function: Clear -// purpose: -//======================================================================= - void NMTAlgo_Algo::Clear() -{ - myIsDone=Standard_False; - myIsComputed=Standard_False; - myErrorStatus=1; -} -//======================================================================= -// function: SetFiller -// purpose: -//======================================================================= - void NMTAlgo_Algo::SetFiller(const NMTTools_DSFiller& aDSF) -{ - myDSFiller=(NMTTools_DSFiller *)&aDSF; -} -//======================================================================= -// function: Filler -// purpose: -//======================================================================= - const NMTTools_DSFiller& NMTAlgo_Algo::Filler()const -{ - return *myDSFiller; -} -//======================================================================= -// function: ComputeWithFiller -// purpose: -//======================================================================= - void NMTAlgo_Algo::ComputeWithFiller(const NMTTools_DSFiller& aDSF) -{ - SetFiller(aDSF); -} -//======================================================================= -// function: Shape -// purpose: -//======================================================================= - const TopoDS_Shape& NMTAlgo_Algo::Shape()const -{ - return myShape; -} -//======================================================================= -// function: IsDone -// purpose: -//======================================================================= - Standard_Boolean NMTAlgo_Algo::IsDone()const -{ - return myIsDone; -} -//======================================================================= -// function: ErrorStatus -// purpose: -//======================================================================= - Standard_Integer NMTAlgo_Algo::ErrorStatus()const -{ - return myErrorStatus; -} -/* -//======================================================================= -// function: Compute -// purpose: -//======================================================================= - void NMTAlgo_Algo::Compute() -{ -} -//======================================================================= -// function: SetCompositeShape -// purpose: -//======================================================================= - void NMTAlgo_Algo::SetCompositeShape(const TopoDS_Shape& aS) -{ - myCompositeShape=aS; -} -//======================================================================= -// function: CompositeShape -// purpose: -//======================================================================= - const TopoDS_Shape& NMTAlgo_Algo::CompositeShape()const -{ - return myCompositeShape; -} -*/ diff --git a/src/NMTAlgo/NMTAlgo_Algo.hxx b/src/NMTAlgo/NMTAlgo_Algo.hxx deleted file mode 100644 index afa9726cd..000000000 --- a/src/NMTAlgo/NMTAlgo_Algo.hxx +++ /dev/null @@ -1,109 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. - -#ifndef _NMTAlgo_Algo_HeaderFile -#define _NMTAlgo_Algo_HeaderFile - -#ifndef _NMTTools_PDSFiller_HeaderFile -#include -#endif -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -class NMTTools_DSFiller; -class TopoDS_Shape; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class NMTAlgo_Algo { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT void SetFiller(const NMTTools_DSFiller& aDSF) ; -Standard_EXPORT const NMTTools_DSFiller& Filler() const; -Standard_EXPORT virtual void ComputeWithFiller(const NMTTools_DSFiller& aDSF) ; -Standard_EXPORT virtual void Clear() ; -Standard_EXPORT const TopoDS_Shape& Shape() const; -Standard_EXPORT Standard_Boolean IsDone() const; -Standard_EXPORT Standard_Integer ErrorStatus() const; - - - - - -protected: - - // Methods PROTECTED - // -Standard_EXPORT NMTAlgo_Algo(); -Standard_EXPORT virtual ~NMTAlgo_Algo(); - - - // Fields PROTECTED - // -NMTTools_PDSFiller myDSFiller; -TopoDS_Shape myShape; -Standard_Boolean myIsDone; -Standard_Boolean myIsComputed; -Standard_Integer myErrorStatus; -Standard_Integer myDraw; - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTAlgo/NMTAlgo_Algo.ixx b/src/NMTAlgo/NMTAlgo_Algo.ixx deleted file mode 100644 index 0d5a23360..000000000 --- a/src/NMTAlgo/NMTAlgo_Algo.ixx +++ /dev/null @@ -1,19 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#include - - - - diff --git a/src/NMTAlgo/NMTAlgo_Algo.jxx b/src/NMTAlgo/NMTAlgo_Algo.jxx deleted file mode 100644 index a31f1b55c..000000000 --- a/src/NMTAlgo/NMTAlgo_Algo.jxx +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef _NMTTools_DSFiller_HeaderFile -#include -#endif -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _NMTAlgo_Algo_HeaderFile -#include -#endif diff --git a/src/NMTAlgo/NMTAlgo_Builder.cdl b/src/NMTAlgo/NMTAlgo_Builder.cdl deleted file mode 100644 index 8587477fe..000000000 --- a/src/NMTAlgo/NMTAlgo_Builder.cdl +++ /dev/null @@ -1,79 +0,0 @@ --- File: NMTAlgo_Builder.cdl --- Created: Tue Jan 27 15:09:45 2004 --- Author: Peter KURNEV --- ----Copyright: Matra Datavision 2004 - - -class Builder from NMTAlgo - inherits Algo from NMTAlgo - - ---Purpose: - -uses - Shape from TopoDS, - Face from TopoDS, - Edge from TopoDS, - IndexedMapOfShape from TopTools, - IndexedDataMapOfShapeListOfShape from TopTools, - IndexedDataMapOfShapeShape from TopTools, - Image from BRepAlgo, - DSFiller from NMTTools ---raises - -is - Create - returns Builder from NMTAlgo; - ---C++: alias "Standard_EXPORT virtual ~NMTAlgo_Builder();" - - Clear (me:out) - is redefined; - - ComputeWithFiller(me:out; - aDSF: DSFiller from NMTTools) - is redefined; - - FillImagesEdges (me:out) - is protected; - - FillIn2DParts (me:out) - is protected; - - FillImagesFaces (me:out) - is protected; - - FillSDFaces (me:out) - is protected; - - --- Queries - SplitVertices (me:out) - is protected; - - IsSectionEdge (me; - E : Edge from TopoDS) - returns Boolean from Standard - is protected; - - HasSameDomainF(me; - F : Face from TopoDS) - returns Boolean from Standard - is protected; - - IsSameDomainF(me; - F1 : Face from TopoDS; - F2 : Face from TopoDS) - returns Boolean from Standard - is protected; - -fields - - myImagesEdges : Image from BRepAlgo is protected; - myImagesFaces : Image from BRepAlgo is protected; - - myQueryShapes : IndexedMapOfShape from TopTools is protected; - -- - myIn2DParts : IndexedDataMapOfShapeListOfShape from TopTools is protected; - mySectionParts : IndexedDataMapOfShapeListOfShape from TopTools is protected; - mySDFaces : IndexedDataMapOfShapeShape from TopTools is protected; - -- -end Builder; diff --git a/src/NMTAlgo/NMTAlgo_Builder.cxx b/src/NMTAlgo/NMTAlgo_Builder.cxx deleted file mode 100644 index 315b36b68..000000000 --- a/src/NMTAlgo/NMTAlgo_Builder.cxx +++ /dev/null @@ -1,649 +0,0 @@ -// File: NMTAlgo_Inter3d.cxx -// Created: Tue Jan 27 15:14:13 2004 -// Author: Peter KURNEV -// - - -#include - -#include - -#include -#include -#include -#include -#include - -#include -#include - -#include -#include - -#include -#include -#include - -#include -#include - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -//======================================================================= -// function: NMTAlgo_Inter3d::NMTAlgo_Inter3d() -// purpose: -//======================================================================= - NMTAlgo_Builder::NMTAlgo_Builder() -: - NMTAlgo_Algo() -{ -} -//======================================================================= -// function: ~NMTAlgo_Builder -// purpose: -//======================================================================= - NMTAlgo_Builder::~NMTAlgo_Builder() -{ - Clear(); -} -//======================================================================= -// function: Clear -// purpose: -//======================================================================= - void NMTAlgo_Builder::Clear() -{ - NMTAlgo_Algo::Clear(); - // - myImagesEdges.Clear(); - myImagesFaces.Clear(); - myIn2DParts.Clear(); - mySectionParts.Clear(); - mySDFaces.Clear(); -} -//======================================================================= -// function: ComputeWithFiller -// purpose: -//======================================================================= - void NMTAlgo_Builder::ComputeWithFiller(const NMTTools_DSFiller& aDSF) -{ - myErrorStatus=0; - myIsDone=Standard_False; - // - SetFiller(aDSF); - // edges - FillImagesEdges(); - // faces - FillIn2DParts(); - FillImagesFaces(); - FillSDFaces(); -} - -//======================================================================= -// function: FillSDFaces -// purpose: -//======================================================================= - void NMTAlgo_Builder::FillSDFaces() -{ - const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS(); - NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller()); - BOPTools_InterferencePool* pIP=(BOPTools_InterferencePool*)&myDSFiller->InterfPool(); - BOPTools_CArray1OfSSInterference& aFFs=pIP->SSInterferences(); - IntTools_Context& aCtx= pPF->ChangeContext(); - // - Standard_Boolean bIsSDF; - Standard_Integer i, j, aNbFF, nF1, nF2, aNbPBInOn, aNbC; - TopTools_ListIteratorOfListOfShape aItF1, aItF2; - NMTTools_ListOfCoupleOfShape aLCS; - // - mySDFaces.Clear(); - // - // 1. For each FF find among images of faces - // all pairs of same domain faces (SDF) [=> aLCS] - aNbFF=aFFs.Extent(); - for (i=1; i<=aNbFF; ++i) { - BOPTools_SSInterference& aFF=aFFs(i); - aFF.Indices(nF1, nF2); - // - const TopoDS_Face& aF1=TopoDS::Face(aDS.Shape(nF1)); - const TopoDS_Face& aF2=TopoDS::Face(aDS.Shape(nF2)); - // - // if there are no in/on 2D split parts the faces nF1, nF2 - // can not be SDF - const BOPTools_ListOfPaveBlock& aLPBInOn=aFF.PaveBlocks(); - aNbPBInOn=aLPBInOn.Extent(); - if (!aNbPBInOn) { - continue; - } - // - // if there is at least one section edge between faces nF1, nF2 - // they can not be SDF - BOPTools_SequenceOfCurves& aSC=aFF.Curves(); - aNbC=aSC.Length(); - if (aNbC) { - continue; - } - // - // the faces are suspected to be SDF. - // Try to find SDF among images of nF1, nF2 - const TopTools_ListOfShape& aLF1=myImagesFaces.Image(aF1); - const TopTools_ListOfShape& aLF2=myImagesFaces.Image(aF2); - // - aItF1.Initialize(aLF1); - for (; aItF1.More(); aItF1.Next()) { - const TopoDS_Face& aF1x=TopoDS::Face(aItF1.Value()); - // - aItF2.Initialize(aLF2); - for (; aItF2.More(); aItF2.Next()) { - const TopoDS_Face& aF2y=TopoDS::Face(aItF2.Value()); - bIsSDF=NMTTools_Tools::AreFacesSameDomain(aF1x, aF2y, aCtx); - if (bIsSDF) { - NMTTools_CoupleOfShape aCS; - // - aCS.SetShape1(aF1x); - aCS.SetShape2(aF2y); - aLCS.Append(aCS); - } - } - } - }//for (i=1; i<=aNbFF; ++i) - // - aNbC=aLCS.Extent(); - if (!aNbC) { - return; - } - // - // 2. Find Chains - NMTTools_IndexedDataMapOfShapeIndexedMapOfShape aMC; - // - NMTTools_Tools::FindChains(aLCS, aMC); - // - // 3. Fill the map of SDF mySDFaces - aNbC=aMC.Extent(); - for (i=1; i<=aNbC; ++i) { - const TopoDS_Shape& aF=aMC.FindKey(i); - const TopTools_IndexedMapOfShape& aMSDF=aMC(i); - // - aNbFF=aMSDF.Extent(); - for (j=1; j<=aNbFF; ++j) { - const TopoDS_Shape& aFSD=aMSDF(j); - mySDFaces.Add(aFSD, aF); - } - } - // -} -//======================================================================= -// function: FillImagesFaces -// purpose: -//======================================================================= - void NMTAlgo_Builder::FillImagesFaces() -{ - const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS(); - NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller()); - IntTools_Context& aCtx= pPF->ChangeContext(); - // - Standard_Integer i, j, aNb, aNbE; - TopTools_IndexedMapOfShape aMFence, aME; - TColStd_IndexedMapOfInteger aMFP; - // - // 1. Select Faces to process (MFP) - aNb=aDS.NumberOfShapesOfTheObject(); - for (i=1; i<=aNb; ++i) { - const TopoDS_Shape& aF=aDS.Shape(i); - if (aF.ShapeType()!=TopAbs_FACE) { - continue; - } - if (aMFence.Contains(aF)) { - continue; - } - aMFence.Add(aF); - // - if (myIn2DParts.Contains(aF)) { - aMFP.Add(i); - continue; - } - // - if (mySectionParts.Contains(aF)) { - aMFP.Add(i); - continue; - } - // - aME.Clear(); - TopExp::MapShapes(aF, TopAbs_EDGE, aME); - // - aNbE=aME.Extent(); - for(j=1; j<=aNbE; ++j) { - const TopoDS_Shape& aE=aME(j); - // - if (myImagesEdges.HasImage(aE)) { - aMFP.Add(i); - break; - } - } - }// for (i=1; i<=aNb; ++i) - // - // 2. ProcessFaces - Standard_Boolean bToReverse, bIsClosed, bIsDegenerated; - Standard_Integer aNbF, nF; - TopoDS_Face aFF; - TopoDS_Edge aSp; - TopExp_Explorer anExp; - TopTools_ListIteratorOfListOfShape aIt; - BRepAlgo_Image aImagesFaces; - TopAbs_Orientation anOriF; - // - aNbF=aMFP.Extent(); - for (i=1; i<=aNbF; ++i) { - nF=aMFP(i); - const TopoDS_Face& aF=TopoDS::Face(aDS.Shape(nF)); - anOriF=aF.Orientation(); - aFF=aF; - aFF.Orientation(TopAbs_FORWARD); - // - aMFence.Clear(); - // - // 2.1. Fill WES - BOP_WireEdgeSet aWES; - aWES.Initialize(aFF); - // - // 2.1.1. Add Split parts - anExp.Init(aFF, TopAbs_EDGE); - for (; anExp.More(); anExp.Next()) { - const TopoDS_Edge& aE=TopoDS::Edge(anExp.Current()); - // - if (!myImagesEdges.HasImage(aE)) { - aWES.AddStartElement(aE); - continue; - } - // - bIsDegenerated=BRep_Tool::Degenerated(aE); - bIsClosed=BRep_Tool::IsClosed(aE, aF); - // - const TopTools_ListOfShape& aLIE=myImagesEdges.Image(aE); - aIt.Initialize(aLIE); - for (; aIt.More(); aIt.Next()) { - aSp=TopoDS::Edge(aIt.Value()); - // - if (bIsDegenerated) { - aSp.Orientation(aE.Orientation()); - aWES.AddStartElement(aSp); - continue; - } - // - if (bIsClosed){ - if (!aMFence.Contains(aSp)){ - aMFence.Add(aSp); - // - if (!BRep_Tool::IsClosed(aSp, aF)){ - BOPTools_Tools3D::DoSplitSEAMOnFace(aSp, aF); - } - // - aSp.Orientation(TopAbs_FORWARD); - aWES.AddStartElement(aSp); - // - aSp.Orientation(TopAbs_REVERSED); - aWES.AddStartElement(aSp); - continue; - } - } - // - bToReverse=BOPTools_Tools3D::IsSplitToReverse1(aSp, aE, aCtx); - if (bToReverse) { - aSp.Reverse(); - } - aWES.AddStartElement(aSp); - } - } - // - // 2.1.2. Add In2D Parts - if (myIn2DParts.Contains(aF)) { - const TopTools_ListOfShape& aLE=myIn2DParts.FindFromKey(aF); - aIt.Initialize(aLE); - for (; aIt.More(); aIt.Next()) { - aSp=TopoDS::Edge(aIt.Value()); - // - aSp.Orientation(TopAbs_FORWARD); - aWES.AddStartElement(aSp); - // - aSp.Orientation(TopAbs_REVERSED); - aWES.AddStartElement(aSp); - } - } - // - // 2.1.3. Add Section Parts - if (mySectionParts.Contains(aF)) { - const TopTools_ListOfShape& aLE=mySectionParts.FindFromKey(aF); - aIt.Initialize(aLE); - for (; aIt.More(); aIt.Next()) { - aSp=TopoDS::Edge(aIt.Value()); - // - aSp.Orientation(TopAbs_FORWARD); - aWES.AddStartElement(aSp); - // - aSp.Orientation(TopAbs_REVERSED); - aWES.AddStartElement(aSp); - } - } - // - // 2.2. Build images Faces - BOP_FaceBuilder aFB; - // - aFB.SetTreatment(0); // 0-Do Internal Edges - aFB.SetTreatSDScales(0); // what is 0 ?? - // - aFB.Do(aWES); - // - TopTools_ListOfShape aLFR; - // - const TopTools_ListOfShape& aLF=aFB.NewFaces(); - - aIt.Initialize(aLF); - for (; aIt.More(); aIt.Next()) { - TopoDS_Shape& aFR=aIt.Value(); - if (anOriF==TopAbs_REVERSED) { - aFR.Orientation(TopAbs_REVERSED); - } - aLFR.Append(aFR); - } - - // - // 2.3. Collect images Faces - myImagesFaces.Bind(aF, aLFR); - }//for (i=1; i<=aNbF; ++i) -} -//======================================================================= -// function: FillIn2DParts -// purpose: -//======================================================================= - void NMTAlgo_Builder::FillIn2DParts() -{ - const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS(); - NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller()); - BOPTools_InterferencePool* pIP=(BOPTools_InterferencePool*)&myDSFiller->InterfPool(); - BOPTools_CArray1OfSSInterference& aFFs=pIP->SSInterferences(); - // - Standard_Integer i, j, aNb, nF1, nF2, aNbFF, iFF, nSpIn, nSpSc, aNbCurves; - BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger aFFMap; - BOPTools_ListOfPaveBlock aLPBIn, aLPBSc; - BOPTools_ListIteratorOfListOfPaveBlock aItPBIn, aItPBSc; - TopTools_IndexedMapOfShape aMF, aMFence; - TopTools_ListOfShape aLSpIn, aLSpSc; - // - BOP_BuilderTools::DoMap(aFFs, aFFMap); - // - // 1. Collect Splits In 2D (myIn2DParts) and - // Section Edges (mySectionParts) - // for each source face that involved in FF - aNb=aFFMap.Extent(); - for (i=1; i<=aNb; ++i) { - nF1=aFFMap.FindKey(i); - const TopoDS_Shape& aF=aDS.Shape(nF1); - // - if (aMF.Contains(aF)) { - continue; - } - aMF.Add(aF); - // - aLPBIn.Clear(); - aLPBSc.Clear(); - // - const TColStd_IndexedMapOfInteger& aFFIndicesMap=aFFMap.FindFromIndex(i); - // - aNbFF=aFFIndicesMap.Extent(); - for (j=1; j<=aNbFF; ++j) { - iFF=aFFIndicesMap(j); - BOPTools_SSInterference& aFF=aFFs(iFF); - nF2=aFF.OppositeIndex(nF1); - // - // In 2D - pPF->RealSplitsInFace(0, nF2, nF1, aLPBIn); - // - // Sections - BOPTools_SequenceOfCurves& aSC=aFF.Curves(); - aNbCurves=aSC.Length(); - if (!aNbCurves) { - continue; - } - // - const BOPTools_Curve& aBC=aSC(1); - const BOPTools_ListOfPaveBlock& aLPB=aBC.NewPaveBlocks(); - // - aItPBSc.Initialize(aLPB); - for (; aItPBSc.More(); aItPBSc.Next()) { - const BOPTools_PaveBlock& aPBSc=aItPBSc.Value(); - aLPBSc.Append(aPBSc); - } - }// for (j=1; j<=aNbFF; ++j) - // - // In 2D Parts - aMFence.Clear(); - // - aLSpIn.Clear(); - aItPBIn.Initialize(aLPBIn); - for (; aItPBIn.More(); aItPBIn.Next()) { - const BOPTools_PaveBlock& aPBR=aItPBIn.Value(); - nSpIn=aPBR.Edge(); - const TopoDS_Shape& aSpIn=aDS.Shape(nSpIn); - if (!aMFence.Contains(aSpIn)){ - aMFence.Add(aSpIn); - aLSpIn.Append(aSpIn); - } - } - myIn2DParts.Add(aF, aLSpIn); - // - // Section Parts - aLSpSc.Clear(); - aItPBSc.Initialize(aLPBSc); - for (; aItPBSc.More(); aItPBSc.Next()) { - const BOPTools_PaveBlock& aPBSc=aItPBSc.Value(); - nSpSc=aPBSc.Edge(); - const TopoDS_Shape& aSpSc=aDS.Shape(nSpSc); - if (!aMFence.Contains(aSpSc)){ - aMFence.Add(aSpSc); - aLSpSc.Append(aSpSc); - } - } - mySectionParts.Add(aF, aLSpSc); - } //for (i=1; i<=aNb; ++i) -} - -//======================================================================= -// function: FillImagesEdges -// purpose: -//======================================================================= - void NMTAlgo_Builder::FillImagesEdges() -{ - const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS(); - NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller()); - const BOPTools_SplitShapesPool& aSSP=pPF->SplitShapesPool(); - // - Standard_Integer nE, aNb, aNbSp, nSp; - BOPTools_ListIteratorOfListOfPaveBlock aIt; - TopTools_IndexedMapOfShape aMFence; - TopTools_ListOfShape aLSp; - // - aNb=aDS.NumberOfShapesOfTheObject(); - for (nE=1; nE<=aNb; ++nE) { - const TopoDS_Shape& aE=aDS.Shape(nE); - if (aE.ShapeType()!=TopAbs_EDGE) { - continue; - } - if (aMFence.Contains(aE)) { - continue; - } - aMFence.Add(aE); - // - const BOPTools_ListOfPaveBlock& aLPB=aSSP(aDS.RefEdge(nE)); - aNbSp=aLPB.Extent(); - // - if (!aNbSp) {// no splits - //myImagesEdges.Bind(aE, aE); - continue; - } - // - //modified by NIZNHY-PKV Fri Jan 21 17:01:10 2005 f - if (aNbSp==1) { - const BOPTools_PaveBlock& aPB1=aLPB.First(); - const BOPTools_PaveBlock& aPBR1=pPF->RealPaveBlock(aPB1); - nSp=aPBR1.Edge(); - const TopoDS_Shape& aSp1=aDS.Shape(nSp); - if (aSp1.IsSame(aE)) { - continue; - } - } - //modified by NIZNHY-PKV Fri Jan 21 17:01:14 2005 t - // - aLSp.Clear(); - aIt.Initialize(aLPB); - for (; aIt.More(); aIt.Next()) { - const BOPTools_PaveBlock& aPB=aIt.Value(); - const BOPTools_PaveBlock& aPBR=pPF->RealPaveBlock(aPB); - nSp=aPBR.Edge(); - const TopoDS_Shape& aSp=aDS.Shape(nSp); - aLSp.Append(aSp); - } - myImagesEdges.Bind(aE, aLSp); - } -} -//======================================================================= -// function: SplitVertices -// purpose: -//======================================================================= - void NMTAlgo_Builder::SplitVertices() -{ - const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS(); - NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller()); - const BOPTools_SplitShapesPool& aSSP=pPF->SplitShapesPool(); - // - Standard_Integer nE, aNb, aNbSp, nV1, nV2; - BOPTools_ListIteratorOfListOfPaveBlock aIt; - // - myQueryShapes.Clear(); - // - aNb=aDS.NumberOfShapesOfTheObject(); - for (nE=1; nE<=aNb; ++nE) { - const TopoDS_Shape& aE=aDS.Shape(nE); - if (aE.ShapeType()!=TopAbs_EDGE) { - continue; - } - // - const BOPTools_ListOfPaveBlock& aLPB=aSSP(aDS.RefEdge(nE)); - aNbSp=aLPB.Extent(); - // - if (!aNbSp) {// no splits - continue; - } - // - aIt.Initialize(aLPB); - for (; aIt.More(); aIt.Next()) { - const BOPTools_PaveBlock& aPB=aIt.Value(); - const BOPTools_PaveBlock& aPBR=pPF->RealPaveBlock(aPB); - // - nV1=aPBR.Pave1().Index(); - if (aDS.IsNewShape(nV1)) { - const TopoDS_Shape& aV1=aDS.Shape(nV1); - myQueryShapes.Add(aV1); - } - // - nV2=aPBR.Pave2().Index(); - if (aDS.IsNewShape(nV2)) { - const TopoDS_Shape& aV2=aDS.Shape(nV2); - myQueryShapes.Add(aV2); - } - } - } -} -//======================================================================= -// function: IsSectionEdge -// purpose: -//======================================================================= - Standard_Boolean NMTAlgo_Builder::IsSectionEdge(const TopoDS_Edge& aE)const -{ - return myImagesEdges.HasImage(aE); -} -//======================================================================= -// function: IsSameDomainF -// purpose: -//======================================================================= - Standard_Boolean NMTAlgo_Builder::HasSameDomainF(const TopoDS_Face& aF1)const -{ - Standard_Boolean bFlag=Standard_False; - TopTools_ListIteratorOfListOfShape aItF1; - // - const TopTools_ListOfShape& aLF1=myImagesFaces.Image(aF1); - aItF1.Initialize(aLF1); - for (; aItF1.More(); aItF1.Next()) { - const TopoDS_Shape& aF1x=aItF1.Value(); - // - if (mySDFaces.Contains(aF1x)){ - return !bFlag; - } - } - return bFlag; -} -//======================================================================= -// function: IsSameDomainF -// purpose: -//======================================================================= - Standard_Boolean NMTAlgo_Builder::IsSameDomainF(const TopoDS_Face& aF1, - const TopoDS_Face& aF2)const -{ - Standard_Boolean bFlag=Standard_False; - TopTools_ListIteratorOfListOfShape aItF1, aItF2; - // - const TopTools_ListOfShape& aLF1=myImagesFaces.Image(aF1); - const TopTools_ListOfShape& aLF2=myImagesFaces.Image(aF2); - // - aItF1.Initialize(aLF1); - for (; aItF1.More(); aItF1.Next()) { - const TopoDS_Shape& aF1x=aItF1.Value(); - // - if (!mySDFaces.Contains(aF1x)){ - continue; - } - const TopoDS_Shape& aFSD1x=mySDFaces.FindFromKey(aF1x); - // - aItF2.Initialize(aLF2); - for (; aItF2.More(); aItF2.Next()) { - const TopoDS_Shape& aF2y=aItF2.Value(); - if (!mySDFaces.Contains(aF2y)){ - continue; - } - const TopoDS_Shape& aFSD2y=mySDFaces.FindFromKey(aF2y); - if (aFSD1x.IsSame(aFSD2y)) { - return !bFlag; - } - } - } - return bFlag; -} diff --git a/src/NMTAlgo/NMTAlgo_Builder.hxx b/src/NMTAlgo/NMTAlgo_Builder.hxx deleted file mode 100644 index a39a1c505..000000000 --- a/src/NMTAlgo/NMTAlgo_Builder.hxx +++ /dev/null @@ -1,119 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. - -#ifndef _NMTAlgo_Builder_HeaderFile -#define _NMTAlgo_Builder_HeaderFile - -#ifndef _BRepAlgo_Image_HeaderFile -#include -#endif -#ifndef _TopTools_IndexedMapOfShape_HeaderFile -#include -#endif -#ifndef _TopTools_IndexedDataMapOfShapeListOfShape_HeaderFile -#include -#endif -#ifndef _TopTools_IndexedDataMapOfShapeShape_HeaderFile -#include -#endif -#ifndef _NMTAlgo_Algo_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class NMTTools_DSFiller; -class TopoDS_Edge; -class TopoDS_Face; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class NMTAlgo_Builder : public NMTAlgo_Algo { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT NMTAlgo_Builder(); -Standard_EXPORT virtual ~NMTAlgo_Builder(); -Standard_EXPORT virtual void Clear() ; -Standard_EXPORT virtual void ComputeWithFiller(const NMTTools_DSFiller& aDSF) ; - - - - - -protected: - - // Methods PROTECTED - // -Standard_EXPORT void FillImagesEdges() ; -Standard_EXPORT void FillIn2DParts() ; -Standard_EXPORT void FillImagesFaces() ; -Standard_EXPORT void FillSDFaces() ; -Standard_EXPORT void SplitVertices() ; -Standard_EXPORT Standard_Boolean IsSectionEdge(const TopoDS_Edge& E) const; -Standard_EXPORT Standard_Boolean HasSameDomainF(const TopoDS_Face& F) const; -Standard_EXPORT Standard_Boolean IsSameDomainF(const TopoDS_Face& F1,const TopoDS_Face& F2) const; - - - // Fields PROTECTED - // -BRepAlgo_Image myImagesEdges; -BRepAlgo_Image myImagesFaces; -TopTools_IndexedMapOfShape myQueryShapes; -TopTools_IndexedDataMapOfShapeListOfShape myIn2DParts; -TopTools_IndexedDataMapOfShapeListOfShape mySectionParts; -TopTools_IndexedDataMapOfShapeShape mySDFaces; - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTAlgo/NMTAlgo_Builder.ixx b/src/NMTAlgo/NMTAlgo_Builder.ixx deleted file mode 100644 index 09480b40e..000000000 --- a/src/NMTAlgo/NMTAlgo_Builder.ixx +++ /dev/null @@ -1,19 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#include - - - - diff --git a/src/NMTAlgo/NMTAlgo_Builder.jxx b/src/NMTAlgo/NMTAlgo_Builder.jxx deleted file mode 100644 index 00dfa436e..000000000 --- a/src/NMTAlgo/NMTAlgo_Builder.jxx +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef _NMTTools_DSFiller_HeaderFile -#include -#endif -#ifndef _TopoDS_Edge_HeaderFile -#include -#endif -#ifndef _TopoDS_Face_HeaderFile -#include -#endif -#ifndef _NMTAlgo_Builder_HeaderFile -#include -#endif diff --git a/src/NMTAlgo/NMTAlgo_Loop3d.cdl b/src/NMTAlgo/NMTAlgo_Loop3d.cdl deleted file mode 100644 index f029d889b..000000000 --- a/src/NMTAlgo/NMTAlgo_Loop3d.cdl +++ /dev/null @@ -1,66 +0,0 @@ - -class Loop3d from NMTAlgo - - ---Purpose: Builds the shells from a set of faces. - -- Provides methods for comparing faces mutual - -- location. - -uses - Vec from gp, - MapOfOrientedShape from TopTools, - IndexedDataMapOfShapeListOfShape from TopTools, - Face from TopoDS, - Edge from TopoDS, - ListOfShape from TopTools, - Shape from TopoDS - -is - - Create - returns Loop3d from NMTAlgo ; - - AddConstFaces (me:out; - S : Shape from TopoDS) - ---Purpose: Add faces of as unique faces in the result. - is static; - - AddSectionFaces (me:out; - S : Shape from TopoDS) - ---Purpose: Add faces of as double faces in the result. - is static; - - MakeShells (me:out; - AvoidFacesMap : MapOfOrientedShape from TopTools) - returns ListOfShape from TopTools is static; - ---Purpose: Make and return shells. - -- can contain faces that must not be - -- added to result shells. - ---C++: return const & - - - ---Category: class methods - - IsInside (myclass; E : Edge from TopoDS; - F1, F2 : Face from TopoDS; - CountDot : Boolean from Standard; - Dot : in out Real from Standard; - GoodOri : in out Boolean from Standard) - returns Boolean from Standard; - ---Purpose: check if is inside by edge . - -- if , compute : scalar production of - -- normalized vectors pointing inside faces, and - -- check if faces are oriented well for sewing - - Normal (myclass; E : Edge from TopoDS; - F : Face from TopoDS) - returns Vec from gp; - - -fields - - myNewShells : ListOfShape from TopTools; -- result - - myFaces : ListOfShape from TopTools; - myEFMap : IndexedDataMapOfShapeListOfShape from TopTools; - -end Loop3d; diff --git a/src/NMTAlgo/NMTAlgo_Loop3d.cxx b/src/NMTAlgo/NMTAlgo_Loop3d.cxx deleted file mode 100644 index 5731b8d82..000000000 --- a/src/NMTAlgo/NMTAlgo_Loop3d.cxx +++ /dev/null @@ -1,330 +0,0 @@ - -//using namespace std; - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -static - TopoDS_Edge FindEinF(const TopoDS_Edge&, const TopoDS_Face&); -static - gp_Vec NextNormal(const TopoDS_Edge&, const TopoDS_Face&); - -//======================================================================= -//function : -//purpose : -//======================================================================= - NMTAlgo_Loop3d::NMTAlgo_Loop3d() -{ -} - -//======================================================================= -//function : AddConstFaces -//purpose : Add faces of as unique faces in the result. -//======================================================================= - void NMTAlgo_Loop3d::AddConstFaces(const TopoDS_Shape& S) -{ - TopExp_Explorer FaceExp(S, TopAbs_FACE); - for (; FaceExp.More(); FaceExp.Next()){ - myFaces.Append( FaceExp.Current() ); - } - TopExp::MapShapesAndAncestors(S, TopAbs_EDGE, TopAbs_FACE, myEFMap); -} - -//======================================================================= -//function : AddSectionFaces -//purpose : Add faces of as double faces in the result. -//======================================================================= - void NMTAlgo_Loop3d::AddSectionFaces(const TopoDS_Shape& S) -{ - AddConstFaces( S ); - AddConstFaces( S.Reversed() ); -} - -//======================================================================= -//function : MakeShells -//purpose : Make and return shells. -// can contain faces that must not be -// added to result shells. -//======================================================================= - const TopTools_ListOfShape& NMTAlgo_Loop3d::MakeShells - (const TopTools_MapOfOrientedShape& AvoidFacesMap) -{ - myNewShells.Clear(); - - BRep_Builder Builder; - TopTools_MapOfShape CheckedEdgesMap; - TopTools_MapOfOrientedShape AddedFacesMap; - - TopTools_ListIteratorOfListOfShape itF (myFaces); - for (; itF.More(); itF.Next()) { - const TopoDS_Shape& FF = itF.Value(); - if (AvoidFacesMap.Contains( FF ) || - ! AddedFacesMap.Add( FF ) ) - continue; - - // make a new shell - TopoDS_Shell Shell; - Builder.MakeShell(Shell); - Builder.Add(Shell,FF); - - // clear the maps from shapes added to previous Shell - TopTools_MapIteratorOfMapOfShape itEM (CheckedEdgesMap); - for (; itEM.More(); itEM.Next()) { - TopTools_ListOfShape& FL = myEFMap.ChangeFromKey( itEM.Key()); - TopTools_ListIteratorOfListOfShape it (FL); - while ( it.More()) { - if (AddedFacesMap.Contains( it.Value())) - FL.Remove( it ); - else - it.Next(); - } - } - CheckedEdgesMap.Clear(); - - - // loop on faces added to Shell; add their neighbor faces to Shell and so on - TopoDS_Iterator itAddedF (Shell); - for (; itAddedF.More(); itAddedF.Next()){ - const TopoDS_Face& F = TopoDS::Face (itAddedF.Value()); - - // loop on edges of F; find a good neighbor face of F by E - TopExp_Explorer EdgeExp(F, TopAbs_EDGE); - for (; EdgeExp.More(); EdgeExp.Next()){ - const TopoDS_Edge& E = TopoDS::Edge( EdgeExp.Current()); - if (! CheckedEdgesMap.Add( E )) - continue; - - // candidate faces list - const TopTools_ListOfShape& FL = myEFMap.ChangeFromKey(E); - if (FL.IsEmpty()) - continue; - // select one of neighbors - TopoDS_Face SelF; - if (FL.Extent() == 2) { - if (! F.IsSame( FL.First() )) - SelF = TopoDS::Face( FL.First() ); - else if (!F.IsSame( FL.Last() )) - SelF = TopoDS::Face( FL.Last() ); - } - else { - // check if a face already added to Shell shares E - TopTools_ListIteratorOfListOfShape it (FL); - Standard_Boolean found = Standard_False; - for (; !found && it.More(); it.Next()) - if (F != it.Value()) - found = AddedFacesMap.Contains( it.Value() ); - if (found) - continue; - // select basing on geometrical check - Standard_Boolean GoodOri, inside; - Standard_Real dot, MaxDot = -100; - TopTools_ListOfShape TangFL; // tangent faces - for ( it.Initialize( FL ) ; it.More(); it.Next()) { - const TopoDS_Face& NeighborF = TopoDS::Face( it.Value()); - if (NeighborF.IsSame( F )) - continue; - inside = NMTAlgo_Loop3d::IsInside( E, F, NeighborF, 1, dot, GoodOri); - if (!GoodOri) - continue; - if (!inside) - dot = -dot - 3; - if (dot < MaxDot) - continue; - if ( IsEqual( dot, MaxDot)) - TangFL.Append(SelF); - else - TangFL.Clear(); - MaxDot = dot; - SelF = NeighborF; - } - if (!TangFL.IsEmpty()) { - for (it.Initialize( TangFL ); it.More(); it.Next()) { - const TopoDS_Face& NeighborF = TopoDS::Face( it.Value()); - if (NMTAlgo_Loop3d:: IsInside( E, SelF , NeighborF, 0, dot, GoodOri)) - SelF = NeighborF; - } - } - } - if (!SelF.IsNull() && - AddedFacesMap.Add( SelF ) && - !AvoidFacesMap.Contains( SelF )) - Builder.Add( Shell, SelF); - - } // loop on edges of F - - } // loop on the faces added to Shell - - // Shell is complete - myNewShells.Append( Shell ); - - } // loop on myFaces - - - // prepare to the next call - myFaces.Clear(); - myEFMap.Clear(); - - return myNewShells; -} -//======================================================================= -//function : Normal -//purpose : -//======================================================================= - gp_Vec NMTAlgo_Loop3d::Normal(const TopoDS_Edge& E, - const TopoDS_Face& F) -{ - gp_Vec Norm, V1, V2; - Standard_Real First, Last; - gp_Pnt Ps; - - Handle(Geom2d_Curve) C2d = BRep_Tool::CurveOnSurface (E, F, First, Last); - Handle(Geom_Surface) Sf = BRep_Tool::Surface(F); - - gp_Pnt2d p = C2d->Value( 0.5*(First+Last) ); - Sf->D1(p.X(), p.Y(), Ps, V1, V2); - Norm = V1.Crossed(V2); - - if (F.Orientation() == TopAbs_REVERSED ) - Norm.Reverse(); - - return Norm; -} -//======================================================================= -//function : IsInside -//purpose : check if is inside by edge . -// if , compute : scalar production of -// normalized vectors pointing inside faces, and -// check if faces are oriented well for sewing -//======================================================================= - Standard_Boolean NMTAlgo_Loop3d::IsInside(const TopoDS_Edge& E, - const TopoDS_Face& F1, - const TopoDS_Face& F2, - const Standard_Boolean CountDot, - Standard_Real& Dot, - Standard_Boolean& GoodOri) -{ - Standard_Real f, l; - gp_Pnt P; - gp_Vec Vc1, Vc2, Vin1, Vin2, Nf1, Nf2; - Handle(Geom_Curve) Curve = BRep_Tool::Curve(E,f,l); - Curve->D1( 0.5*(f + l), P, Vc2); - TopoDS_Edge E1, E2 = FindEinF (E, F2); - if (E2.Orientation() == TopAbs_REVERSED ) Vc2.Reverse(); - - Nf1 = Normal(E,F1); - Nf2 = Normal(E,F2); - - Standard_Real sin = - Nf1.CrossSquareMagnitude(Nf2) / Nf1.SquareMagnitude() / Nf2.SquareMagnitude(); - Standard_Boolean tangent = sin < 0.001; - - Standard_Boolean inside = 0; - if (tangent) { - E1 = FindEinF (E, F1); - gp_Vec NNf1 = NextNormal(E1,F1); - gp_Vec NNf2 = NextNormal(E2,F2); - Vin2 = NNf2.Crossed(Vc2); - inside = Vin2 * NNf1 < 0; - } - else { - Vin2 = Nf2.Crossed(Vc2); - inside = Vin2 * Nf1 < 0; - } - - if (!CountDot) return inside; - - if (tangent) - Vin2 = Nf2.Crossed(Vc2); - else - E1 = FindEinF (E, F1); - - Vc1 = Vc2; - if (E1.Orientation() != E2.Orientation()) - Vc1.Reverse(); - Vin1 = Nf1.Crossed(Vc1); - - if (tangent) { - Standard_Real N1N2 = Nf1 * Nf2; - GoodOri = (Vin2 * Vin1 < 0) ? N1N2 > 0 : N1N2 < 0; - } - else { - Standard_Real V1N2 = Vin1 * Nf2; - GoodOri = ( inside ? V1N2 <= 0 : V1N2 >= 0); - } - - Vin1.Normalize(); - Vin2.Normalize(); - - Dot = Vin2 * Vin1; - - return inside; -} -//======================================================================= -//function : NextNormal -//purpose : find normal to F at point a little inside F near the middle of E -//warning : E must be properly oriented in F. -//======================================================================= -gp_Vec NextNormal(const TopoDS_Edge& E, - const TopoDS_Face& F) -{ - Standard_Real First, Last; - - Handle(Geom2d_Curve) C2d = BRep_Tool::CurveOnSurface (E, F, First, Last); - Handle(Geom_Surface) Sf = BRep_Tool::Surface(F); - - gp_Pnt2d p; - gp_Vec2d v; - C2d->D1( 0.5*(First+Last), p, v); - if (E.Orientation() != F.Orientation()) - v.Reverse(); - gp_Dir2d dir( -v.Y(), v.X() ); // dir inside F - - Standard_Real duv = 1e-6; // this is not Ok and may give incorrect result if - // resolutionUV of compared faces is very different. To have a good result, - //it is necessary to get normal to faces at points equidistant from E in 3D - - p.SetX( p.X() + dir.X()*duv ); - p.SetY( p.Y() + dir.Y()*duv ); - - gp_Pnt Ps; - gp_Vec Norm, V1, V2; - Sf->D1( p.X(), p.Y(), Ps, V1, V2); - Norm = V1.Crossed(V2); - - if (F.Orientation() == TopAbs_REVERSED ) - Norm.Reverse(); - - return Norm; -} -//======================================================================= -//function : FindEinF -//purpose : find E in F -//======================================================================= -TopoDS_Edge FindEinF(const TopoDS_Edge& E, - const TopoDS_Face& F) -{ - TopExp_Explorer expl (F, TopAbs_EDGE); - for (; expl.More(); expl.Next()) - if( E.IsSame( expl.Current() )) - return TopoDS::Edge(expl.Current()); - TopoDS_Edge nullE; - return nullE; -} diff --git a/src/NMTAlgo/NMTAlgo_Loop3d.hxx b/src/NMTAlgo/NMTAlgo_Loop3d.hxx deleted file mode 100644 index 707b3aec4..000000000 --- a/src/NMTAlgo/NMTAlgo_Loop3d.hxx +++ /dev/null @@ -1,107 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. - -#ifndef _NMTAlgo_Loop3d_HeaderFile -#define _NMTAlgo_Loop3d_HeaderFile - -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _TopTools_IndexedDataMapOfShapeListOfShape_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -#ifndef _Standard_Real_HeaderFile -#include -#endif -class TopoDS_Shape; -class TopTools_ListOfShape; -class TopTools_MapOfOrientedShape; -class TopoDS_Edge; -class TopoDS_Face; -class gp_Vec; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class NMTAlgo_Loop3d { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT NMTAlgo_Loop3d(); -Standard_EXPORT void AddConstFaces(const TopoDS_Shape& S) ; -Standard_EXPORT void AddSectionFaces(const TopoDS_Shape& S) ; -Standard_EXPORT const TopTools_ListOfShape& MakeShells(const TopTools_MapOfOrientedShape& AvoidFacesMap) ; -Standard_EXPORT static Standard_Boolean IsInside(const TopoDS_Edge& E,const TopoDS_Face& F1,const TopoDS_Face& F2,const Standard_Boolean CountDot,Standard_Real& Dot,Standard_Boolean& GoodOri) ; -Standard_EXPORT static gp_Vec Normal(const TopoDS_Edge& E,const TopoDS_Face& F) ; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -TopTools_ListOfShape myNewShells; -TopTools_ListOfShape myFaces; -TopTools_IndexedDataMapOfShapeListOfShape myEFMap; - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTAlgo/NMTAlgo_Loop3d.ixx b/src/NMTAlgo/NMTAlgo_Loop3d.ixx deleted file mode 100644 index e546fd196..000000000 --- a/src/NMTAlgo/NMTAlgo_Loop3d.ixx +++ /dev/null @@ -1,19 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#include - - - - diff --git a/src/NMTAlgo/NMTAlgo_Loop3d.jxx b/src/NMTAlgo/NMTAlgo_Loop3d.jxx deleted file mode 100644 index f63b0450a..000000000 --- a/src/NMTAlgo/NMTAlgo_Loop3d.jxx +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _TopTools_MapOfOrientedShape_HeaderFile -#include -#endif -#ifndef _TopoDS_Edge_HeaderFile -#include -#endif -#ifndef _TopoDS_Face_HeaderFile -#include -#endif -#ifndef _gp_Vec_HeaderFile -#include -#endif -#ifndef _NMTAlgo_Loop3d_HeaderFile -#include -#endif diff --git a/src/NMTAlgo/NMTAlgo_Splitter.cdl b/src/NMTAlgo/NMTAlgo_Splitter.cdl deleted file mode 100644 index 5d416bd9e..000000000 --- a/src/NMTAlgo/NMTAlgo_Splitter.cdl +++ /dev/null @@ -1,181 +0,0 @@ --- File: NMTAlgo_Splitter.cdl --- Created: Tue Jan 27 15:09:45 2004 --- Author: Peter KURNEV --- ----Copyright: Matra Datavision 2004 - - -class Splitter from NMTAlgo - inherits Builder from NMTAlgo - - ---Purpose: - -uses - Builder from BRep, - ShapeEnum from TopAbs, - Compound from TopoDS, - Face from TopoDS, - Edge from TopoDS, - Shape from TopoDS, - MapOfOrientedShape from TopTools, - IndexedMapOfShape from TopTools, - DataMapOfShapeShape from TopTools, - DataMapOfShapeListOfShape from TopTools, - ListOfShape from TopTools, - MapOfShape from TopTools, - AsDes from BRepAlgo, - Image from BRepAlgo, - - DSFiller from NMTTools - ---raises - -is - Create - returns Splitter from NMTAlgo; - ---C++: alias "Standard_EXPORT virtual ~NMTAlgo_Splitter();" - - AddShape (me:out; - S : Shape from TopoDS) - is virtual; - - AddTool (me:out; - S : Shape from TopoDS) - is virtual; - - Compute(me:out) - is virtual; - - Build (me:out; - aLimit:ShapeEnum from TopAbs=TopAbs_SHAPE) - is virtual; - - ComputeWithFiller(me:out; - aDSF: DSFiller from NMTTools) - is redefined; - -----vv - KeepShapesInside (me:out; - S : Shape from TopoDS); - ---Purpose: remove shapes that are outside of S from result. - -- S should be an object shape. - ---Warning: call it after Build() - - RemoveShapesInside (me:out; - S : Shape from TopoDS); - ---Purpose: remove shapes that are inside S from result. - -- S should be an object shape. - ---Warning: call it after Build() - - Modified(me:out; - S : Shape from TopoDS) - returns ListOfShape from TopTools; - ---Purpose: Returns the list of shapes modified from the shape . - ---C++: return const & - ---Level: Public - - Generated(me:out; - S : Shape from TopoDS) - returns ListOfShape from TopTools; - ---Purpose: Returns the list of shapes generated from the shape . - ---C++: return const & - ---Level: Public - - IsDeleted (me:out; - S : Shape from TopoDS) - returns Boolean from Standard; -----^^ - - Clear (me:out) - is redefined; - - SourceShapes(me) - returns ListOfShape from TopTools; - ---C++: return const & - - FillResult(me:out) - is protected; - - FillImageShape(me:out) - is protected; - - SplittedFaces (me:out) - is protected; - - SplittedWires (me:out) - is protected; - - SplitsAndSections (me:out) - is protected; - - ShellsAndSolids(me:out) - is protected; - - MakeShells(me:out; - aS :Shape from TopoDS; - aLNS:out ListOfShape from TopTools) - is protected; - - MakeSolids (me:out; - Solid : Shape from TopoDS; - Shells: out ListOfShape from TopTools) - is protected; - - FindFacesInside (me:out; - S : Shape from TopoDS; - CheckClosed : Boolean from Standard= Standard_False; - All : Boolean from Standard= Standard_False) - returns Shape from TopoDS - is protected; - - IsInside (myclass; - S1,S2 : Shape from TopoDS) - returns Boolean from Standard is protected; - ---Purpose: Return True if the first vertex of S1 inside S2. - -- If S1.IsNull(), check infinite point against S2. - - GetOriginalShape(me; - aShape : Shape from TopoDS) - returns Shape from TopoDS - is protected; - ---modified by NIZNHY-PKV Tue Feb 1 10:24:39 2005f - FindImage(me:out; - aS : Shape from TopoDS; - aLIms: out ListOfShape from TopTools) - is protected; ---modified by NIZNHY-PKV Tue Feb 1 10:24:47 2005t - -fields - myDoneStep : ShapeEnum from TopAbs is protected; -- rebuilt level - myBuilder : Builder from BRep is protected; - - myListShapes : ListOfShape from TopTools is protected; -- object shapes - myMapFaces : MapOfShape from TopTools is protected; -- object faces - myMapTools : MapOfShape from TopTools is protected; -- tool faces - myEqualEdges : MapOfShape from TopTools is protected; -- equal splits - myNewSection : MapOfShape from TopTools is protected; -- new secton edges - myClosedShapes : MapOfShape from TopTools is protected; - myWrappingSolid: MapOfShape from TopTools is protected; -- solids having other shapes inside - myFaceShapeMap : DataMapOfShapeShape from TopTools is protected; -- to find a shape by face - - myInternalFaces: DataMapOfShapeShape from TopTools is protected; -- shape and its internal faces - myIntNotClFaces: DataMapOfShapeShape from TopTools is protected; -- internal but not closed - - myImageShape : Image from BRepAlgo is protected; - - -- avoid rebuilding twice commont part of solids - myAddedFacesMap: MapOfOrientedShape from TopTools is protected; - --***-- - mySourceShapes : ListOfShape from TopTools is protected; - myLimit : ShapeEnum from TopAbs is protected; - myToolShapes : MapOfShape from TopTools is protected; - myObjShapes : MapOfShape from TopTools is protected; - myMapSIFC : DataMapOfShapeShape from TopTools is protected; -----vv - myGenerated : ListOfShape from TopTools is protected; - --modified by NIZNHY-PKV Mon Jan 24 09:45:10 2005f - myModifiedFaces: DataMapOfShapeListOfShape from TopTools is protected; - --modified by NIZNHY-PKV Mon Jan 24 09:45:14 2005t -----^^ -end Splitter; diff --git a/src/NMTAlgo/NMTAlgo_Splitter.cxx b/src/NMTAlgo/NMTAlgo_Splitter.cxx deleted file mode 100644 index 9b85beebc..000000000 --- a/src/NMTAlgo/NMTAlgo_Splitter.cxx +++ /dev/null @@ -1,605 +0,0 @@ -// File: NMTAlgo_Splitter.cxx -// Created: Thu Jan 29 17:13:03 2004 -// Author: Peter KURNEV -// - - -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -// -#include -#include -#include -#include - - -static - Standard_Boolean isClosed(const TopoDS_Shape& theShape); - -//======================================================================= -//function : NMTAlgo_Spliter::NMTAlgo_Splitter -//purpose : -//======================================================================= - NMTAlgo_Splitter::NMTAlgo_Splitter() -: - NMTAlgo_Builder() -{ - myErrorStatus=0; -} -//======================================================================= -// function: ~NMTAlgo_Splitter -// purpose: -//======================================================================= - NMTAlgo_Splitter::~NMTAlgo_Splitter() -{ - Clear(); - - if (myDSFiller){ - delete myDSFiller; - } -} -//======================================================================= -// function: SourceShapes -// purpose: -//======================================================================= - const TopTools_ListOfShape& NMTAlgo_Splitter::SourceShapes()const -{ - return mySourceShapes; -} -//======================================================================= -//function : Clear -//purpose : -//======================================================================= - void NMTAlgo_Splitter::Clear() -{ - NMTAlgo_Builder::Clear(); - // - myListShapes.Clear(); - myMapFaces.Clear(); - myMapTools.Clear(); - myClosedShapes.Clear(); - myEqualEdges.Clear(); - myNewSection.Clear(); - myWrappingSolid.Clear(); - myFaceShapeMap.Clear(); - myInternalFaces.Clear(); - myIntNotClFaces.Clear(); - // - myImageShape.Clear(); - myAddedFacesMap.Clear(); - // - myDoneStep = TopAbs_SHAPE; - myIsComputed=Standard_False; - mySourceShapes.Clear(); - myObjShapes.Clear(); - myToolShapes.Clear(); - myMapSIFC.Clear(); - //modified by NIZNHY-PKV Mon Jan 24 09:47:37 2005f - myModifiedFaces.Clear(); - //modified by NIZNHY-PKV Mon Jan 24 09:47:41 2005t - myErrorStatus=0; -} -//======================================================================= -//function : AddShape -//purpose : add object Shape to be splited -//======================================================================= - void NMTAlgo_Splitter::AddShape(const TopoDS_Shape& aS) -{ - myErrorStatus=0; - if (myIsComputed) { - // DS is already computed - myErrorStatus=100; - return; - } - // - if (aS.IsNull()){ - // Null shape is not allowed here - myErrorStatus=101; - return; - } - // - TopAbs_ShapeEnum aType=aS.ShapeType(); - // - if (aType < TopAbs_SOLID) { - // compound or compsolid - TopoDS_Iterator it (aS); - for (; it.More(); it.Next()) { - const TopoDS_Shape& aSS=it.Value(); - AddShape(aSS); - // to know compound by shape - myFaceShapeMap.Bind(aSS, aS); - } - return; - } - //--- - myObjShapes.Add(aS); - mySourceShapes.Append(aS); - //--- - // - TopExp_Explorer exp(aS, TopAbs_FACE); - if (!exp.More()) { - // do not split edges and vertices - return; - } - // not to add twice the same S - Standard_Integer nbFacesBefore = myMapFaces.Extent(); - // - for (; exp.More(); exp.Next()) { - const TopoDS_Shape& aFace = exp.Current(); - if (!myFaceShapeMap.IsBound(aFace)) { - // keep shape of tool face added as object - myFaceShapeMap.Bind(aFace, aS); - } - if (myMapFaces.Add(aFace)){ - myImagesFaces.SetRoot(aFace); - } - } - // - if (nbFacesBefore == myMapFaces.Extent()){ - return; - } - // solids must be processed before all - if (aType==TopAbs_SOLID){ - myListShapes.Prepend(aS); - } - else{ - myListShapes.Append(aS); - } - if (isClosed(aS)){ - myClosedShapes.Add(aS); - } -} -//======================================================================= -//function : AddTool -//purpose : add cutting tool that will _NOT_ be in result -//======================================================================= - void NMTAlgo_Splitter::AddTool(const TopoDS_Shape& aS) -{ - myErrorStatus=0; - if (myIsComputed) { - // DS is already computed - myErrorStatus=100; - return; - } - // - if (aS.IsNull()){ - // Null shape is not allowed here - myErrorStatus=101; - return; - } - // - TopAbs_ShapeEnum aType=aS.ShapeType(); - - if (aType < TopAbs_SOLID) { // compound or compsolid - TopoDS_Iterator it (aS); - for (; it.More(); it.Next()) { - const TopoDS_Shape& aSS=it.Value(); - AddTool(aSS); - myFaceShapeMap.Bind(aSS, aS); // to know compound by shape - } - return; - } - //--- - myToolShapes.Add(aS); - mySourceShapes.Append(aS); - //--- - // - TopExp_Explorer exp(aS, TopAbs_FACE); - for (; exp.More(); exp.Next()) { - const TopoDS_Shape& aFace = exp.Current(); - myMapTools.Add(aFace); - myFaceShapeMap.Bind(aFace, aS); - } - // - // solids must be processed before all - if (aType==TopAbs_SOLID){ - myListShapes.Prepend(aS); - } - else{ - myListShapes.Append(aS); - } - // - if (isClosed(aS)) { - myClosedShapes.Add(aS); - } -} -//======================================================================= -// function: Compute -// purpose: -//======================================================================= - void NMTAlgo_Splitter::Compute() -{ - if (!mySourceShapes.Extent()){ - // No source shapes to treat - myErrorStatus=103; - return; - } - // - BRep_Builder aBB; - TopoDS_Compound aCS; - TopTools_ListIteratorOfListOfShape aIt; - // - aBB.MakeCompound(aCS); - // - aIt.Initialize(mySourceShapes); - for (; aIt.More(); aIt.Next()) { - const TopoDS_Shape& aS=aIt.Value(); - aBB.Add(aCS, aS); - } - // - NMTTools_DSFiller* pDSF=new NMTTools_DSFiller; - // - pDSF->SetCompositeShape(aCS); - pDSF->Perform(); - // - myIsComputed=Standard_False; - // - NMTAlgo_Splitter::ComputeWithFiller(*pDSF); -} -//======================================================================= -// function: ComputeWithFiller -// purpose: -//======================================================================= - void NMTAlgo_Splitter::ComputeWithFiller(const NMTTools_DSFiller& aDSF) -{ - myErrorStatus=0; - // - if (myIsComputed) { - // DS is already computed - myErrorStatus=100; - return; - } - // - if (!mySourceShapes.Extent()){ - // No source shapes to treat - myErrorStatus=103; - return; - } - // - NMTAlgo_Builder::ComputeWithFiller(aDSF); - // - myIsComputed=Standard_True; -} -//======================================================================= -//function : Build -//purpose : -//======================================================================= - void NMTAlgo_Splitter::Build(const TopAbs_ShapeEnum aLimit) -{ - myErrorStatus=0; - myLimit=aLimit; - // - if (!myIsComputed){ - myErrorStatus=102;// DS is not computed - return; - } - // - TopoDS_Compound aCShape; - // - myBuilder.MakeCompound(aCShape); - myShape=aCShape; - // - // 1. VERTEX - // - if (myLimit==TopAbs_VERTEX) { - SplitVertices(); - FillResult(); - return; - } - // - // 2. EDGE - if (myLimit==TopAbs_EDGE) { - SplitsAndSections(); - FillResult(); - return; - } - // - // 3. WIRE - FillImageShape(); - // - if (myLimit==TopAbs_WIRE) { - SplittedWires(); - FillResult(); - return; - } - // - // 4. FACE - // - if (myLimit==TopAbs_FACE) { - SplittedFaces(); - FillResult(); - return; - } - // - // 5.6. SHELL / SOLID - ShellsAndSolids(); - BOP_CorrectTolerances::CorrectTolerances(myShape, 0.01); -} -//======================================================================= -// function: SplitsAndSections -// purpose: -//======================================================================= - void NMTAlgo_Splitter::SplitsAndSections() -{ - Standard_Integer i, aNbE, aNbF; - TopTools_ListIteratorOfListOfShape aItLS, aIt; - TopTools_IndexedMapOfShape aME, aMF; - // - myQueryShapes.Clear(); - // - // 1. Splits / no splits - aItLS.Initialize(myListShapes); - for ( ;aItLS.More(); aItLS.Next()) { - const TopoDS_Shape& aS=aItLS.Value(); - // - if (myToolShapes.Contains(aS)) { - continue; // skip tool Shapes - } - // - TopExp::MapShapes(aS, TopAbs_EDGE, aME); - TopExp::MapShapes(aS, TopAbs_FACE, aMF); - } - // - // 1. Splits / no splits - aNbE=aME.Extent(); - for (i=1; i<=aNbE; ++i) { - const TopoDS_Shape& aE=aME(i); - // - if (!myImagesEdges.HasImage(aE)) { - myQueryShapes.Add(aE); - } - else { - const TopTools_ListOfShape& aLSp=myImagesEdges.Image(aE); - // - aIt.Initialize(aLSp); - for (; aIt.More(); aIt.Next()) { - const TopoDS_Shape& aSp=aIt.Value(); - myQueryShapes.Add(aSp); - } - } - } - // - // 2. Sections - aNbF=aMF.Extent(); - for (i=1; i<=aNbF; ++i) { - const TopoDS_Shape& aF=aMF(i); - if (mySectionParts.Contains(aF)) { - const TopTools_ListOfShape& aLSc=mySectionParts.FindFromKey(aF); - aIt.Initialize(aLSc); - for (; aIt.More(); aIt.Next()) { - const TopoDS_Shape& aSc=aIt.Value(); - myQueryShapes.Add(aSc); - } - } - } -} -//======================================================================= -// function: SplittedWires -// purpose: -//======================================================================= - void NMTAlgo_Splitter::SplittedWires() -{ - Standard_Integer i, aNbF; - TopoDS_Iterator aIt; - TopTools_IndexedMapOfShape aMF; - // - SplittedFaces(); - // - aMF=myQueryShapes; - myQueryShapes.Clear(); - // - aNbF=aMF.Extent(); - for (i=1; i<=aNbF; ++i) { - const TopoDS_Shape& aF=aMF(i); - aIt.Initialize(aF); - for (; aIt.More(); aIt.Next()) { - const TopoDS_Shape& aW=aIt.Value(); - myQueryShapes.Add(aW); - } - } -} -//======================================================================= -// function: SplittedFaces -// purpose: -//======================================================================= - void NMTAlgo_Splitter::SplittedFaces() -{ - TopTools_ListIteratorOfListOfShape aIt; - TopoDS_Iterator aItF; - // - myQueryShapes.Clear(); - // - aIt.Initialize(myListShapes); - for (; aIt.More(); aIt.Next()) { - const TopoDS_Shape& aS=aIt.Value(); - // - if (myToolShapes.Contains(aS)) { - continue; - } - // - const TopoDS_Shape& aFC = myImageShape.Image(aS).First(); - aItF.Initialize(aFC); - for (; aItF.More(); aItF.Next()) { - const TopoDS_Shape& aF=aItF.Value(); - myQueryShapes.Add(aF); - } - } -} -//======================================================================= -//function : FillImageShape -//purpose : -//======================================================================= - void NMTAlgo_Splitter::FillImageShape() -{ - Standard_Integer i, aNbF, iSense; - TopTools_ListIteratorOfListOfShape aItS, aItFI; - TopExp_Explorer aExp; - TopAbs_Orientation aOriFS; - TopoDS_Face aFIx, aFIy; - BRep_Builder aBB; - // - myImageShape.Clear(); - //modified by NIZNHY-PKV Mon Jan 24 09:48:15 2005f - myModifiedFaces.Clear(); - //modified by NIZNHY-PKV Mon Jan 24 09:48:18 2005t - // - aItS.Initialize(myListShapes); - for ( ;aItS.More(); aItS.Next()) { - const TopoDS_Shape& aS=aItS.Value(); - // - myQueryShapes.Clear(); - // - aExp.Init(aS, TopAbs_FACE); - for (; aExp.More(); aExp.Next()) { - const TopoDS_Face& aFS=TopoDS::Face(aExp.Current()); - aOriFS= aFS.Orientation(); - // - if (!myImagesFaces.HasImage(aFS)) { - myQueryShapes.Add(aFS); - //modified by NIZNHY-PKV Mon Jan 24 09:50:42 2005 f - if (!myModifiedFaces.IsBound(aFS)) { - TopTools_ListOfShape aLS; - // - aLS.Append(aFS); - myModifiedFaces.Bind(aFS, aLS); - } - //modified by NIZNHY-PKV Mon Jan 24 09:50:44 2005 t - continue; - } - // - const TopTools_ListOfShape& aLFI=myImagesFaces.Image(aFS); - aItFI.Initialize(aLFI); - for (; aItFI.More(); aItFI.Next()) { - const TopoDS_Face& aFI=TopoDS::Face(aItFI.Value()); - aFIx=aFI; - aFIx.Orientation(aOriFS); - // - if (mySDFaces.Contains(aFIx)) { - const TopoDS_Face& aFSDI=TopoDS::Face(mySDFaces.FindFromKey(aFIx)); - TopoDS_Face aFSDIx=aFSDI; - // - iSense=NMTAlgo_Tools::Sense(aFIx, aFSDIx); - // - if (iSense < 0) { - aFSDIx.Reverse(); - } - myQueryShapes.Add(aFSDIx); - //modified by NIZNHY-PKV Mon Jan 24 09:56:06 2005f - aFIy=aFSDIx; - //modified by NIZNHY-PKV Mon Jan 24 09:56:09 2005t - } - else { - myQueryShapes.Add(aFIx); - //modified by NIZNHY-PKV Mon Jan 24 09:56:06 2005f - aFIy=aFIx; - //modified by NIZNHY-PKV Mon Jan 24 09:56:09 2005t - } - //modified by NIZNHY-PKV Mon Jan 24 09:53:38 2005f - if (!myModifiedFaces.IsBound(aFS)) { - TopTools_ListOfShape aLS; - // - aLS.Append(aFIy); - myModifiedFaces.Bind(aFS, aLS); - } - else { - TopTools_ListOfShape& aLS=myModifiedFaces.ChangeFind(aFS); - aLS.Append(aFIy); - } - //modified by NIZNHY-PKV Mon Jan 24 09:53:43 2005t - } - }//for (; aExp.More(); aExp.Next()) { - // - TopoDS_Compound aCompound; - // - aBB.MakeCompound(aCompound); - // - aNbF=myQueryShapes.Extent(); - for (i=1; i<=aNbF; ++i) { - const TopoDS_Shape& aF=myQueryShapes(i); - aBB.Add(aCompound, aF); - } - // - myImageShape.Bind(aS, aCompound); - }// for ( ;aItS.More(); aItS.Next()) - // - myQueryShapes.Clear(); -} -//======================================================================= -//function : FillResult -//purpose : -//======================================================================= - void NMTAlgo_Splitter::FillResult() -{ - Standard_Integer i, aNb; - // - aNb=myQueryShapes.Extent(); - for (i=1; i<=aNb; ++i) { - const TopoDS_Shape& aS=myQueryShapes(i); - myBuilder.Add (myShape, aS); - } - BOP_CorrectTolerances::CorrectTolerances(myShape, 0.01); -} -//======================================================================= -//function : isClosed -//purpose : check id a shape is closed, ie is a solid or a closed shell -//======================================================================= - Standard_Boolean isClosed(const TopoDS_Shape& theShape) -{ - Standard_Boolean isClosed = (theShape.ShapeType() == TopAbs_SOLID); - // - if (!isClosed && theShape.ShapeType() == TopAbs_SHELL) { - TopTools_IndexedDataMapOfShapeListOfShape MEF; - TopExp::MapShapesAndAncestors(theShape, TopAbs_EDGE, TopAbs_FACE, MEF); - for (Standard_Integer i=1; isClosed && i<=MEF.Extent(); ++i) - isClosed = ( MEF(i).Extent() != 1 ); - } - // - return isClosed; -} -// -// myErrorStatus -// -// 100 - DS is already computed -// 101 - Null shape is not allowed here -// 102 - DS is not computed -// 103 - No source shapes to treat diff --git a/src/NMTAlgo/NMTAlgo_Splitter.hxx b/src/NMTAlgo/NMTAlgo_Splitter.hxx deleted file mode 100644 index 205ecb654..000000000 --- a/src/NMTAlgo/NMTAlgo_Splitter.hxx +++ /dev/null @@ -1,167 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _NMTAlgo_Splitter_HeaderFile -#define _NMTAlgo_Splitter_HeaderFile - -#ifndef _TopAbs_ShapeEnum_HeaderFile -#include -#endif -#ifndef _BRep_Builder_HeaderFile -#include -#endif -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _TopTools_MapOfShape_HeaderFile -#include -#endif -#ifndef _TopTools_DataMapOfShapeShape_HeaderFile -#include -#endif -#ifndef _BRepAlgo_Image_HeaderFile -#include -#endif -#ifndef _TopTools_MapOfOrientedShape_HeaderFile -#include -#endif -#ifndef _TopTools_DataMapOfShapeListOfShape_HeaderFile -#include -#endif -#ifndef _NMTAlgo_Builder_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class TopoDS_Shape; -class NMTTools_DSFiller; -class TopTools_ListOfShape; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class NMTAlgo_Splitter : public NMTAlgo_Builder { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT NMTAlgo_Splitter(); -Standard_EXPORT virtual ~NMTAlgo_Splitter(); -Standard_EXPORT virtual void AddShape(const TopoDS_Shape& S) ; -Standard_EXPORT virtual void AddTool(const TopoDS_Shape& S) ; -Standard_EXPORT virtual void Compute() ; -Standard_EXPORT virtual void Build(const TopAbs_ShapeEnum aLimit = TopAbs_SHAPE) ; -Standard_EXPORT virtual void ComputeWithFiller(const NMTTools_DSFiller& aDSF) ; -Standard_EXPORT void KeepShapesInside(const TopoDS_Shape& S) ; -Standard_EXPORT void RemoveShapesInside(const TopoDS_Shape& S) ; -Standard_EXPORT const TopTools_ListOfShape& Modified(const TopoDS_Shape& S) ; -Standard_EXPORT const TopTools_ListOfShape& Generated(const TopoDS_Shape& S) ; -Standard_EXPORT Standard_Boolean IsDeleted(const TopoDS_Shape& S) ; -Standard_EXPORT virtual void Clear() ; -Standard_EXPORT const TopTools_ListOfShape& SourceShapes() const; - - - - - -protected: - - // Methods PROTECTED - // -Standard_EXPORT void FillResult() ; -Standard_EXPORT void FillImageShape() ; -Standard_EXPORT void SplittedFaces() ; -Standard_EXPORT void SplittedWires() ; -Standard_EXPORT void SplitsAndSections() ; -Standard_EXPORT void ShellsAndSolids() ; -Standard_EXPORT void MakeShells(const TopoDS_Shape& aS,TopTools_ListOfShape& aLNS) ; -Standard_EXPORT void MakeSolids(const TopoDS_Shape& Solid,TopTools_ListOfShape& Shells) ; -Standard_EXPORT TopoDS_Shape FindFacesInside(const TopoDS_Shape& S,const Standard_Boolean CheckClosed = Standard_False,const Standard_Boolean All = Standard_False) ; -Standard_EXPORT static Standard_Boolean IsInside(const TopoDS_Shape& S1,const TopoDS_Shape& S2) ; -Standard_EXPORT TopoDS_Shape GetOriginalShape(const TopoDS_Shape& aShape) const; -Standard_EXPORT void FindImage(const TopoDS_Shape& aS,TopTools_ListOfShape& aLIms) ; - - - // Fields PROTECTED - // -TopAbs_ShapeEnum myDoneStep; -BRep_Builder myBuilder; -TopTools_ListOfShape myListShapes; -TopTools_MapOfShape myMapFaces; -TopTools_MapOfShape myMapTools; -TopTools_MapOfShape myEqualEdges; -TopTools_MapOfShape myNewSection; -TopTools_MapOfShape myClosedShapes; -TopTools_MapOfShape myWrappingSolid; -TopTools_DataMapOfShapeShape myFaceShapeMap; -TopTools_DataMapOfShapeShape myInternalFaces; -TopTools_DataMapOfShapeShape myIntNotClFaces; -BRepAlgo_Image myImageShape; -TopTools_MapOfOrientedShape myAddedFacesMap; -TopTools_ListOfShape mySourceShapes; -TopAbs_ShapeEnum myLimit; -TopTools_MapOfShape myToolShapes; -TopTools_MapOfShape myObjShapes; -TopTools_DataMapOfShapeShape myMapSIFC; -TopTools_ListOfShape myGenerated; -TopTools_DataMapOfShapeListOfShape myModifiedFaces; - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTAlgo/NMTAlgo_Splitter.ixx b/src/NMTAlgo/NMTAlgo_Splitter.ixx deleted file mode 100644 index fdec89e46..000000000 --- a/src/NMTAlgo/NMTAlgo_Splitter.ixx +++ /dev/null @@ -1,19 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#include - - - - diff --git a/src/NMTAlgo/NMTAlgo_Splitter.jxx b/src/NMTAlgo/NMTAlgo_Splitter.jxx deleted file mode 100644 index e27984c18..000000000 --- a/src/NMTAlgo/NMTAlgo_Splitter.jxx +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _NMTTools_DSFiller_HeaderFile -#include -#endif -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _NMTAlgo_Splitter_HeaderFile -#include -#endif diff --git a/src/NMTAlgo/NMTAlgo_Splitter1.cdl b/src/NMTAlgo/NMTAlgo_Splitter1.cdl deleted file mode 100644 index eafb3127c..000000000 --- a/src/NMTAlgo/NMTAlgo_Splitter1.cdl +++ /dev/null @@ -1,73 +0,0 @@ --- File: NMTAlgo_Splitter1.cdl --- Created: Wed Feb 11 14:23:25 2004 --- Author: Peter KURNEV --- ----Copyright: Matra Datavision 2004 - - -class Splitter1 from NMTAlgo - inherits Splitter from NMTAlgo - - ---Purpose: - -uses - ShapeEnum from TopAbs, - Shape from TopoDS, - DataMapOfShapeInteger from TopTools - ---raises - -is - Create - returns Splitter1 from NMTAlgo; - ---C++: alias "Standard_EXPORT virtual ~NMTAlgo_Splitter1();" - - Clear (me:out) - is redefined; - - AddShape (me:out; - aS : Shape from TopoDS) - is redefined; - - - AddTool(me:out; - aS : Shape from TopoDS) - is redefined; - - - SetMaterial (me:out; - aS : Shape from TopoDS; - aM : Integer from Standard=0); - - SetRemoveWebs(me:out; - bFlag:Boolean from Standard); - - RemoveWebs(me) - returns Boolean from Standard; - - GetMaterialTable(me) - returns DataMapOfShapeInteger from TopTools; - ---C++: return const & - - Build (me:out; - Limit:ShapeEnum from TopAbs=TopAbs_SHAPE) - is redefined; - - -- protected block - TreatSolids (me:out) - is protected; - - TreatWebs (me:out) - is protected; - - RestParts (me:out) - is protected; - - -fields - myRemoveWebs : Boolean from Standard is protected; - myMapSWM : DataMapOfShapeInteger from TopTools is protected; - myMapSWMOut : DataMapOfShapeInteger from TopTools is protected; - myRestParts : Shape from TopoDS is protected; - -end Splitter1; diff --git a/src/NMTAlgo/NMTAlgo_Splitter1.cxx b/src/NMTAlgo/NMTAlgo_Splitter1.cxx deleted file mode 100644 index 36d711377..000000000 --- a/src/NMTAlgo/NMTAlgo_Splitter1.cxx +++ /dev/null @@ -1,356 +0,0 @@ -// File: NMTAlgo_Splitter1.cxx -// Created: Wed Feb 11 14:26:27 2004 -// Author: Peter KURNEV -// - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//======================================================================= -//function : NMTAlgo_Spliter1::NMTAlgo_Splitter1 -//purpose : -//======================================================================= - NMTAlgo_Splitter1::NMTAlgo_Splitter1() -: - NMTAlgo_Splitter() -{ - myRemoveWebs=Standard_False; -} -//======================================================================= -// function: ~NMTAlgo_Splitter1 -// purpose: -//======================================================================= - NMTAlgo_Splitter1::~NMTAlgo_Splitter1() -{ - Clear(); -} -//======================================================================= -//function : Clear -//purpose : -//======================================================================= - void NMTAlgo_Splitter1::Clear() -{ - NMTAlgo_Splitter::Clear(); - // - myRemoveWebs=Standard_False; - myMapSWM.Clear(); - myMapSWMOut.Clear(); -} -//======================================================================= -//function : SetRemoveWebs -//purpose : -//======================================================================= - void NMTAlgo_Splitter1::SetRemoveWebs(const Standard_Boolean bFlag) -{ - myRemoveWebs=bFlag; -} -//======================================================================= -//function : RemoveWebs -//purpose : -//======================================================================= - Standard_Boolean NMTAlgo_Splitter1::RemoveWebs()const -{ - return myRemoveWebs; -} -//======================================================================= -//function : GetMaterialTable -//purpose : -//======================================================================= - const TopTools_DataMapOfShapeInteger& NMTAlgo_Splitter1::GetMaterialTable()const -{ - return myMapSWMOut; -} -//======================================================================= -//function : SetMaterial -//purpose : -//======================================================================= - void NMTAlgo_Splitter1::SetMaterial(const TopoDS_Shape& aS, - const Standard_Integer iMt) -{ - TopExp_Explorer aExp; - // - aExp.Init(aS, TopAbs_SOLID); - for(; aExp.More(); aExp.Next()) { - const TopoDS_Shape& aSd=aExp.Current(); - myMapSWM.Bind(aSd, iMt); - } -} -//======================================================================= -//function : AddShape -//purpose : -//======================================================================= - void NMTAlgo_Splitter1::AddShape(const TopoDS_Shape& aS) -{ - SetMaterial(aS, 0); - NMTAlgo_Splitter::AddShape(aS); -} -//======================================================================= -//function : AddToolWithMaterial -//purpose : -//======================================================================= - void NMTAlgo_Splitter1::AddTool(const TopoDS_Shape& aS) - -{ - SetMaterial(aS, 0); - NMTAlgo_Splitter::AddTool(aS); -} -//======================================================================= -//function : Build -//purpose : -//======================================================================= - void NMTAlgo_Splitter1::Build(const TopAbs_ShapeEnum aLimit) -{ - NMTAlgo_Splitter::Build(aLimit); - // - myMapSWMOut.Clear(); - // - TreatSolids(); - // - if (myRemoveWebs && myMapSWMOut.Extent()) { - RestParts(); - TreatWebs(); - } -} -//======================================================================= -//function : TreatWebs -//purpose : -//======================================================================= - void NMTAlgo_Splitter1::TreatWebs() -{ - Standard_Integer nMt; - TopTools_DataMapOfIntegerListOfShape aMMLS; - TopoDS_Iterator aIt; - TopTools_DataMapIteratorOfDataMapOfShapeInteger aIt2; - TopTools_DataMapIteratorOfDataMapOfIntegerListOfShape aIt1; - TopTools_ListIteratorOfListOfShape aItS; - TopoDS_Compound aCx; - TopoDS_Shape aCSR; - // - aIt2.Initialize(myMapSWMOut); - for (; aIt2.More(); aIt2.Next()) { - const TopoDS_Shape& aS=aIt2.Key(); - nMt=aIt2.Value(); - // - if (aMMLS.IsBound(nMt)){ - TopTools_ListOfShape& aLS=aMMLS.ChangeFind(nMt); - aLS.Append(aS); - } - else { - TopTools_ListOfShape aLS; - aLS.Append(aS); - aMMLS.Bind(nMt, aLS); - } - } - // - myMapSWMOut.Clear(); - myBuilder.MakeCompound(aCx); - // - aIt1.Initialize(aMMLS); - for (; aIt1.More(); aIt1.Next()) { - nMt=aIt1.Key(); - // - TopoDS_Compound aCS; - myBuilder.MakeCompound(aCS); - const TopTools_ListOfShape& aLS=aIt1.Value(); - aItS.Initialize(aLS); - for (; aItS.More(); aItS.Next()) { - const TopoDS_Shape& aS=aItS.Value(); - myBuilder.Add(aCS, aS); - } - // - NMTAlgo_Tools::BreakWebs(aCS, aCSR); - // - aIt.Initialize(aCSR); - for(; aIt.More(); aIt.Next()) { - const TopoDS_Shape& aS=aIt.Value(); - myBuilder.Add(aCx, aS); - // - myMapSWMOut.Bind(aS, nMt); - } - } - // - aIt.Initialize(myRestParts); - for(; aIt.More(); aIt.Next()) { - const TopoDS_Shape& aS=aIt.Value(); - myBuilder.Add(aCx, aS); - } - // - myShape=aCx; -} - -//======================================================================= -//function : RestParts -//purpose : -//======================================================================= - void NMTAlgo_Splitter1::RestParts() -{ - TopoDS_Iterator aIt; - TopoDS_Compound aR; - // - myBuilder.MakeCompound(aR); - // - aIt.Initialize(myShape); - for(; aIt.More(); aIt.Next()) { - const TopoDS_Shape& aS=aIt.Value(); - if (aS.ShapeType()==TopAbs_SOLID){ - if (myMapSWMOut.IsBound(aS)) { - continue; - } - } - myBuilder.Add(aR, aS); - } - myRestParts=aR; -} -//======================================================================= -//function : TreatSolids -//purpose : -//======================================================================= - void NMTAlgo_Splitter1::TreatSolids() -{ - Standard_Integer i, j, aNbSd, aNbSdx, nMtMax, nMt; - TopAbs_ShapeEnum aType; - TopoDS_Iterator aIt; - TopTools_IndexedMapOfShape aMSo, aMSd; - TopTools_IndexedDataMapOfShapeListOfShape aMFS; - TopTools_ListIteratorOfListOfShape aItS, aItLS; - NMTTools_IndexedDataMapOfShapeIndexedMapOfShape aMCS; - // - TopExp::MapShapesAndAncestors(myShape, TopAbs_FACE, TopAbs_SOLID, aMFS); - TopExp::MapShapes(myShape, TopAbs_SOLID, aMSo); - // - aNbSd=aMSo.Extent(); - if (!aNbSd) { - return; - } - // - aItS.Initialize(myListShapes); - for ( ;aItS.More(); aItS.Next()) { - const TopoDS_Shape& aS=aItS.Value(); - // - aType=aS.ShapeType(); - if (aType != TopAbs_SOLID) { - continue; - } - // - if (myToolShapes.Contains(aS)) { - continue; - } - // - if (!myMapSIFC.IsBound(aS)){ - continue; - } - // - aMSd.Clear(); - // - const TopoDS_Shape& aIFC=myMapSIFC.Find(aS); - // - aIt.Initialize(aIFC); - for (; aIt.More(); aIt.Next()) { - const TopoDS_Shape& aIF=aIt.Value(); - if (aMFS.Contains(aIF)) { - const TopTools_ListOfShape& aLS=aMFS.FindFromKey(aIF); - aItLS.Initialize(aLS); - for ( ;aItLS.More(); aItLS.Next()) { - const TopoDS_Shape& aSd=aItLS.Value(); - if (!aMSd.Contains(aSd)) { - aMSd.Add(aSd); - } - } - } - } - // - aNbSd=aMSd.Extent(); - if (!aNbSd) { - //modified by NIZNHY-PKV Thu Dec 23 15:07:46 2004 f - Standard_Boolean bFound; - //modified by NIZNHY-PKV Thu Dec 23 15:07:49 2004 t - TopoDS_Shape aSd; - // - const TopoDS_Shape& aFC=myImageShape.Image(aS).First(); - //modified by NIZNHY-PKV Thu Dec 23 15:08:17 2004 f - //NMTAlgo_Tools::FindImageSolid(aFC, aMSo, aSd); - //aMSd.Add(aSd); - bFound=NMTAlgo_Tools::FindImageSolid(aFC, aMSo, aSd); - if (!aSd.IsNull()) { - aMSd.Add(aSd); - } - //modified by NIZNHY-PKV Thu Dec 23 15:09:02 2004 t - } - aMCS.Add(aS, aMSd); - } //for ( ;aItS.More(); aItS.Next()) - // - aMFS.Clear(); - // - aNbSd=aMCS.Extent(); - for (i=1; i<=aNbSd; ++i) { - const TopoDS_Shape& aSd=aMCS.FindKey(i); - const TopTools_IndexedMapOfShape& aMSdx=aMCS(i); - aNbSdx=aMSdx.Extent(); - for (j=1; j<=aNbSdx; ++j) { - const TopoDS_Shape& aSdx=aMSdx(j); - // - if (aMFS.Contains(aSdx)) { - TopTools_ListOfShape& aLS=aMFS.ChangeFromKey(aSdx); - aLS.Append(aSd); - } - else { - TopTools_ListOfShape aLS; - aLS.Append(aSd); - aMFS.Add(aSdx, aLS); - } - } - } - // - // Assign materials values to subsolids - // - myMapSWMOut.Clear(); - // - aNbSdx=aMFS.Extent(); - for (i=1; i<=aNbSdx; ++i) { - const TopoDS_Shape& aSdx=aMFS.FindKey(i); - const TopTools_ListOfShape& aLS=aMFS(i); - aItLS.Initialize(aLS); - for (j=0; aItLS.More(); aItLS.Next(), ++j) { - const TopoDS_Shape& aSd=aItLS.Value(); - // - if (!myMapSWM.IsBound(aSd)){ - continue; - } - // - nMt=myMapSWM.Find(aSd); - if (!j) { - nMtMax=nMt; - continue; - } - if (nMt>nMtMax) { - nMtMax=nMt; - } - } - myMapSWMOut.Bind(aSdx, nMtMax); - } - // -} diff --git a/src/NMTAlgo/NMTAlgo_Splitter1.hxx b/src/NMTAlgo/NMTAlgo_Splitter1.hxx deleted file mode 100644 index 1948d3508..000000000 --- a/src/NMTAlgo/NMTAlgo_Splitter1.hxx +++ /dev/null @@ -1,117 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. - -#ifndef _NMTAlgo_Splitter1_HeaderFile -#define _NMTAlgo_Splitter1_HeaderFile - -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -#ifndef _TopTools_DataMapOfShapeInteger_HeaderFile -#include -#endif -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _NMTAlgo_Splitter_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _TopAbs_ShapeEnum_HeaderFile -#include -#endif -class TopoDS_Shape; -class TopTools_DataMapOfShapeInteger; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class NMTAlgo_Splitter1 : public NMTAlgo_Splitter { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT NMTAlgo_Splitter1(); -Standard_EXPORT virtual ~NMTAlgo_Splitter1(); -Standard_EXPORT virtual void Clear() ; -Standard_EXPORT virtual void AddShape(const TopoDS_Shape& aS) ; -Standard_EXPORT virtual void AddTool(const TopoDS_Shape& aS) ; -Standard_EXPORT void SetMaterial(const TopoDS_Shape& aS,const Standard_Integer aM = 0) ; -Standard_EXPORT void SetRemoveWebs(const Standard_Boolean bFlag) ; -Standard_EXPORT Standard_Boolean RemoveWebs() const; -Standard_EXPORT const TopTools_DataMapOfShapeInteger& GetMaterialTable() const; -Standard_EXPORT virtual void Build(const TopAbs_ShapeEnum Limit = TopAbs_SHAPE) ; - - - - - -protected: - - // Methods PROTECTED - // -Standard_EXPORT void TreatSolids() ; -Standard_EXPORT void TreatWebs() ; -Standard_EXPORT void RestParts() ; - - - // Fields PROTECTED - // -Standard_Boolean myRemoveWebs; -TopTools_DataMapOfShapeInteger myMapSWM; -TopTools_DataMapOfShapeInteger myMapSWMOut; -TopoDS_Shape myRestParts; - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTAlgo/NMTAlgo_Splitter1.ixx b/src/NMTAlgo/NMTAlgo_Splitter1.ixx deleted file mode 100644 index c036c0734..000000000 --- a/src/NMTAlgo/NMTAlgo_Splitter1.ixx +++ /dev/null @@ -1,19 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#include - - - - diff --git a/src/NMTAlgo/NMTAlgo_Splitter1.jxx b/src/NMTAlgo/NMTAlgo_Splitter1.jxx deleted file mode 100644 index b589b4d38..000000000 --- a/src/NMTAlgo/NMTAlgo_Splitter1.jxx +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _TopTools_DataMapOfShapeInteger_HeaderFile -#include -#endif -#ifndef _NMTAlgo_Splitter1_HeaderFile -#include -#endif diff --git a/src/NMTAlgo/NMTAlgo_Splitter_1.cxx b/src/NMTAlgo/NMTAlgo_Splitter_1.cxx deleted file mode 100644 index 6bdd934d5..000000000 --- a/src/NMTAlgo/NMTAlgo_Splitter_1.cxx +++ /dev/null @@ -1,916 +0,0 @@ -// File: NMTAlgo_Splitter_1.cxx -// Created: Mon Feb 2 14:58:54 2004 -// Author: Peter KURNEV -// - - -#include - -#include - -#include - -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -// -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// -static - void RefineShells(const TopoDS_Shape& , - TopTools_ListOfShape&); -static - void RefineSolids(const TopoDS_Shape& , - TopTools_ListOfShape&); - -//modified by NIZNHY-PKV Fri Feb 25 17:19:39 2005f XX -static - void GetPlanes (const TopoDS_Edge& anEx, - const TopTools_IndexedDataMapOfShapeListOfShape& anEFMapx, - const TopoDS_Face& aF1, - TopAbs_State& aStPF1); -//modified by NIZNHY-PKV Fri Feb 25 17:19:44 2005t XX - -//======================================================================= -//function : ShellsAndSolids -//purpose : -//======================================================================= - void NMTAlgo_Splitter::ShellsAndSolids() -{ - Standard_Boolean bMakeSolids; - TopAbs_ShapeEnum aType; - TopTools_ListIteratorOfListOfShape aItS; - TopTools_ListOfShape aLNS; - // - myAddedFacesMap.Clear(); - bMakeSolids=(myLimit==TopAbs_SHAPE || myLimit TopAbs_SHELL) { - continue;//face,wire,... - } - // - aLNS.Clear(); - // - MakeShells (aS, aLNS); - // - if (bMakeSolids && aType==TopAbs_SOLID) { - MakeSolids(aS, aLNS); - } - // - TopTools_ListIteratorOfListOfShape it (aLNS); - for (; it.More(); it.Next()) { - myBuilder.Add (myShape, it.Value()); - } - } - // - // add split faces - aItS.Initialize(myListShapes); - for ( ;aItS.More(); aItS.Next()) { - const TopoDS_Shape& aS=aItS.Value(); - // - aType=aS.ShapeType(); - if (aType!=TopAbs_FACE || myMapTools.Contains(aS)) { - continue; - } - // - const TopoDS_Shape& aCSF=myImageShape.Image(aS).First(); - TopoDS_Iterator itS(aCSF); - for (; itS.More(); itS.Next()){ - const TopoDS_Shape& aF=itS.Value(); - if (!myAddedFacesMap.Contains(aF)){ - myBuilder.Add (myShape, aF); - } - } - } -} -//======================================================================= -//function : MakeShells -//purpose : split S into compound of shells -//======================================================================= -void NMTAlgo_Splitter::MakeShells(const TopoDS_Shape& aS, - TopTools_ListOfShape& aLNS) -{ - NMTAlgo_Loop3d aShellMaker; - // - // get compound of split faces of aS - const TopoDS_Shape& aFC=myImageShape.Image(aS).First(); - aShellMaker.AddConstFaces(aFC); - // - // add split faces inside aS - if (myClosedShapes.Contains(aS)) { - // - // internal faces compound - TopoDS_Shape aIFC=FindFacesInside(aS, Standard_True); - aShellMaker.AddSectionFaces(aIFC); - } - // - aLNS=aShellMaker.MakeShells(myAddedFacesMap); - // - RefineShells(aS, aLNS); - // - // Add faces added to new shell to myAddedFacesMap: - // avoid rebuilding twice common part of 2 solids. - - TopTools_ListIteratorOfListOfShape itS(aLNS); - TopExp_Explorer expF; - for (; itS.More(); itS.Next()) { - const TopoDS_Shape& aSh=itS.Value(); - expF.Init (aSh, TopAbs_FACE); - for (; expF.More(); expF.Next()){ - myAddedFacesMap.Add (expF.Current()); - } - } - -} -//======================================================================= -//function : MakeSolids -//purpose : make solids out of Shells -//======================================================================= -void NMTAlgo_Splitter::MakeSolids(const TopoDS_Shape& theSolid, - TopTools_ListOfShape& theShellList) -{ - // for a solid wrapping other shells or solids without intersection, - // it is necessary to find shells making holes in it - Standard_Boolean isWrapping; - TopTools_ListOfShape aNewSolids; // result - TopTools_ListOfShape aHoleShells; - TopoDS_Shape anInfinitePointShape; - TopTools_DataMapOfShapeShape aInOutMap; - TopTools_ListIteratorOfListOfShape aShellIt, aSolisIt; - // - isWrapping = myWrappingSolid.Contains(theSolid); - if (!isWrapping && !theShellList.IsEmpty()) { - // check if theSolid initially has internal shells - TopoDS_Iterator aShellExp (theSolid); - aShellExp.Next(); - isWrapping = aShellExp.More(); - } - // - aShellIt.Initialize(theShellList); - for ( ; aShellIt.More(); aShellIt.Next()) { - const TopoDS_Shape & aShell = aShellIt.Value(); - // check if a shell is a hole of theSolid - if (isWrapping && IsInside(anInfinitePointShape, aShell)){ - aHoleShells.Append(aShell); - } - else { - // make a solid from a shell - TopoDS_Solid Solid; - myBuilder.MakeSolid( Solid ); - myBuilder.Add (Solid, aShell); - - aNewSolids.Append (Solid); - } - } - // - // find outer a shell most close to each hole shell - aShellIt.Initialize(aHoleShells); - for (; aShellIt.More(); aShellIt.Next()){ - const TopoDS_Shape & aHole = aShellIt.Value(); - // - aSolisIt.Initialize(aNewSolids); - for ( ; aSolisIt.More(); aSolisIt.Next()) { - const TopoDS_Shape & aSolid = aSolisIt.Value(); - // - if (! IsInside(aHole, aSolid)){ - continue; - } - // - if ( aInOutMap.IsBound (aHole)){ - const TopoDS_Shape & aSolid2 = aInOutMap( aHole ); - if ( IsInside( aSolid, aSolid2 )) { - aInOutMap.UnBind( aHole ); - aInOutMap.Bind ( aHole, aSolid ); - } - } - else{ - aInOutMap.Bind (aHole, aSolid); - } - } - // - // add aHole to a solid - if (aInOutMap.IsBound( aHole )){ - TopoDS_Shape & aSolid=aInOutMap(aHole); - myBuilder.Add (aSolid, aHole); - } - } - // - theShellList.Clear(); - // - RefineSolids(theSolid, aNewSolids); - // - theShellList.Append(aNewSolids); -} - -//======================================================================= -//function : FindFacesInside -//purpose : return compound of faces of other shapes that are -// inside . -// is an object shape. -// makes avoid faces that do not form a -// closed shell -// makes return already added faces -//======================================================================= - TopoDS_Shape NMTAlgo_Splitter::FindFacesInside(const TopoDS_Shape& theShape, - const Standard_Boolean CheckClosed, - const Standard_Boolean All) -{ - TopExp_Explorer expl; - TopAbs_State aState; - // - // ================================================ - // check if internal faces have been already found - // ================================================ - if (myInternalFaces.IsBound(theShape)) { - TopoDS_Shape aIntFComp = myInternalFaces.Find (theShape); - TopoDS_Shape aIntRemFComp = myIntNotClFaces.Find (theShape); - - expl.Init( aIntRemFComp, TopAbs_FACE); - if (CheckClosed || !expl.More()){ - return aIntFComp; - } - // - TopoDS_Compound C; - myBuilder.MakeCompound( C ); - // add removed faces - for (; expl.More(); expl.Next()){ - myBuilder.Add( C, expl.Current() ); - } - // add good internal faces - expl.Init( aIntFComp, TopAbs_FACE); - for (; expl.More(); expl.Next()) { - myBuilder.Add( C, expl.Current() ); - } - // - return C; - } - - // =================================== - // get data for internal faces search - // =================================== - // - // compound of split faces of theShape - const TopoDS_Shape& CSF = myImageShape.Image(theShape).First(); - // - TopTools_MapOfShape MSE, MFP; - TopTools_DataMapOfShapeListOfShape DMSEFP; - TopTools_MapIteratorOfMapOfShape itm; - TopTools_ListOfShape EmptyL; - TopTools_ListIteratorOfListOfShape itl; - - // MSE filling: map of new section edges of CSF - expl.Init(CSF, TopAbs_EDGE); - for (; expl.More(); expl.Next()) { - const TopoDS_Shape& aE = expl.Current() ; - MSE.Add(aE); - } - // - // DMEF: map edge of CSF - faces of CSF - TopTools_IndexedDataMapOfShapeListOfShape DMEF; - TopExp::MapShapesAndAncestors(CSF, TopAbs_EDGE, TopAbs_FACE, DMEF); - // - // Fill - // 1. MFP - a map of faces to process: map of resulting faces except - // those of theShape; we`ll add to C those of them which are inside CSF - // 2. DMSEFP - edge of MSE => faces of MFP - // - itl.Initialize(myListShapes); - for (;itl.More(); itl.Next()) { - const TopoDS_Shape& aShape = itl.Value(); - // - if ( theShape.IsSame(aShape)) { - continue; - } - // fill maps - // iterate on split faces of aShape - const TopoDS_Shape& CSF1 = myImageShape.Image(aShape).First(); - TopoDS_Iterator itF (CSF1); - for ( ; itF.More(); itF.Next()) { - const TopoDS_Shape& aF1 = itF.Value(); - MFP.Add(aF1); - // iterate on edges of split faces of aShape, - // add to DMSEFP edges that are new - expl.Init(aF1, TopAbs_EDGE); - for (; expl.More(); expl.Next()) { - TopoDS_Shape aE1 = expl.Current(); - if ( MSE.Contains(aE1)) {// section edge - if (!DMSEFP.IsBound(aE1)) { - DMSEFP.Bind(aE1, EmptyL); - } - DMSEFP(aE1).Append(aF1); - } - } - } - }//for (;itl.More(); itl.Next()) - // - // add tool faces... (is absent) - // - // =========================== - // find faces inside theShape - // =========================== - Standard_Boolean sameDom1, sameDom2; - Standard_Boolean skipAlreadyAdded = Standard_False; - Standard_Boolean GoodOri, inside; - Standard_Real dot; - TopTools_ListOfShape KeepFaces; - TopTools_DataMapIteratorOfDataMapOfShapeListOfShape Mapit; - - // iterate on section edges, check faces of other shapes - // sharing section edges and put internal faces to KeepFaces - Mapit.Initialize(DMSEFP); - for (; Mapit.More() ; Mapit.Next()) { - // a new edge of theShape - const TopoDS_Edge& E = TopoDS::Edge (Mapit.Key()); - // - //Standard_Boolean isSectionE=IsSectionEdge(E);//(OrigE); - // - // split faces of other shapes sharing E - TopTools_ListOfShape& LSF = DMSEFP.ChangeFind(E); - // - itl.Initialize( LSF ); - while (itl.More()) { - // a split faces of other shape - TopoDS_Face aFace1 = TopoDS::Face(itl.Value()); - // remove aFace1 form DMSEFP and MFP - LSF.Remove( itl ); // == itl.Next(); - if (!MFP.Remove(aFace1)) - continue; // was not is MFP (i.e already checked) - // - // check if aFace1 was already added to 2 shells - if (!All && - myAddedFacesMap.Contains(aFace1) && - myAddedFacesMap.Contains(aFace1.Reversed())) { - skipAlreadyAdded = Standard_True; - } - // - TopoDS_Shape anOrigFace = aFace1; - if (myImagesFaces.IsImage(aFace1)){ - anOrigFace = myImagesFaces.Root(aFace1); - } - // - // <- A was here - // - // check that anOrigFace is not same domain with CSF faces it intersects - // - const TopTools_ListOfShape& FL = DMEF.FindFromKey(E); //faces of CSF sharing E - // - const TopoDS_Shape& origF1 = myImagesFaces.IsImage(FL.First()) ? - myImagesFaces.Root(FL.First()) : FL.First(); - // - const TopoDS_Shape& origF2 = myImagesFaces.IsImage(FL.Last()) ? - myImagesFaces.Root(FL.Last()) : FL.Last(); - // - sameDom1 = anOrigFace.IsSame( origF1 ); - sameDom2 = anOrigFace.IsSame( origF2 ); - // - if (!(sameDom1 || sameDom2) && HasSameDomainF( TopoDS::Face(anOrigFace) )) { - sameDom1 = IsSameDomainF( TopoDS::Face(anOrigFace), TopoDS::Face(origF1)); - if (origF1 == origF2) { - sameDom2 = sameDom1; - } - } - if (sameDom1 && sameDom2){ - continue; - } - // - if (sameDom1 || sameDom2) { - inside = NMTAlgo_Loop3d::IsInside (E, - TopoDS::Face(FL.First()), - TopoDS::Face(FL.Last()), - 1, dot, GoodOri); - if (inside || (dot + Precision::Angular() >= 1.0)) { - continue; // E is convex between origF1 and origF2 or they are tangent - } - } - // - GetPlanes(E, DMEF, aFace1, aState); - if (aState==TopAbs_IN) { - KeepFaces.Append(aFace1); - } - } //while (itl.More()) { - } //for (; Mapit.More() ; Mapit.Next() ) - - // =================================================== - // add not distributed faces connected with KeepFaces - // =================================================== - - // ultimate list of internal faces - TopTools_ListOfShape KeptFaces; - // - // add to MFP not split tool faces as well, they may be connected with - // tool faces interfering with theShape - /* - itm.Initialize(myMapTools); - for (; itm.More(); itm.Next() ) { - const TopoDS_Shape& aToolFace = itm.Key(); - if (!myImageShape.HasImage(aToolFace)){ - MFP.Add (aToolFace); - } - } - */ - // - if (MFP.IsEmpty()) - KeptFaces.Append (KeepFaces); - // - while (!KeepFaces.IsEmpty()) { - // KeepEdges : map of edges of faces kept last time - TopTools_IndexedMapOfShape KeepEdges; - for ( itl.Initialize(KeepFaces); itl.More(); itl.Next() ) { - TopExp::MapShapes( itl.Value(), TopAbs_EDGE, KeepEdges); - KeptFaces.Append( itl.Value() ); - } - // - KeepFaces.Clear(); - // - // keep faces connected with already kept faces by KeepEdges - for ( itm.Initialize(MFP); itm.More(); itm.Next() ) { - const TopoDS_Shape& FP = itm.Key(); - for (expl.Init(FP,TopAbs_EDGE); expl.More(); expl.Next()) { - const TopoDS_Shape& se = expl.Current(); - if (!MSE.Contains(se) && KeepEdges.Contains(se) ) { - KeepFaces.Append(FP); - MFP.Remove(FP); - break; - } - } - } - } - - // =============================================================== - // here MFP contains faces outer of theShape and those of shapes - // which do not interfere with theShape at all and between which - // there may be those wrapped by theShape and whose faces may be - // needed to be returned as well - // =============================================================== - - Standard_Boolean isSolid = (theShape.ShapeType() == TopAbs_SOLID); - if (All || isSolid) // All is for sub-result removal - { - for ( itm.Initialize( MFP ); itm.More(); itm.Next() ) { - TopoDS_Shape aFace = itm.Key(); - - // find a shape aFace originates from - TopoDS_Shape anOrigShape = GetOriginalShape( aFace ); - - // find out if all faces of anOrigShape are not in MFP - // and by the way remove them from MFP - Standard_Boolean isAllOut = Standard_True; - TopoDS_Shape aSplitFaces = anOrigShape; - if (myImageShape.HasImage(anOrigShape)) - aSplitFaces = myImageShape.Image(anOrigShape).First(); - - TopTools_ListOfShape aSplitFaceL; - for (expl.Init( aSplitFaces, TopAbs_FACE ); expl.More(); expl.Next()) - { - const TopoDS_Shape & aSpFace = expl.Current(); - // a tool face which become object has image but the whole tool shape has not - if (myImageShape.HasImage( aSpFace )) - { - TopExp_Explorer exF (myImageShape.Image( aSpFace ).First(), TopAbs_FACE ); - for ( ; exF.More(); exF.Next() ) - { - aSplitFaceL.Append( exF.Current() ); - if ( ! MFP.Remove( exF.Current() )) - isAllOut = Standard_False; - } - } - else - { - aSplitFaceL.Append( aSpFace ); - if ( ! MFP.Remove( aSpFace )) - isAllOut = Standard_False; - } - } - itm.Initialize( MFP ); - if ( !isAllOut ) - continue; - - // classify anOrigShape against theShape - if (IsInside (anOrigShape, theShape)) { - if (isSolid && myClosedShapes.Contains(anOrigShape)) { - // to make a special care at solid reconstruction - myWrappingSolid.Add ( theShape ); - } - // keep faces of an internal shape anOrigShape - KeptFaces.Append( aSplitFaceL ); - } - } - } - - // ==================================================== - // check if kept faces form a shell without free edges - // ==================================================== - - DMEF.Clear(); // edge - kept faces - MFP.Clear(); // reuse it for wrong faces - if (CheckClosed) { - for (itl.Initialize(KeptFaces); itl.More(); itl.Next() ) - TopExp::MapShapesAndAncestors(itl.Value(), TopAbs_EDGE, TopAbs_FACE, DMEF); - - Standard_Integer i, nb = DMEF.Extent(); - Standard_Boolean isClosed = Standard_False; - while (!isClosed) { - isClosed = Standard_True; - for (i=1; isClosed && i<=nb; ++i) { - const TopoDS_Shape& E = DMEF.FindKey( i ); - if (! BRep_Tool::Degenerated( TopoDS::Edge( E )) && - ! MSE.Contains( E )) - isClosed = ( DMEF(i).Extent() != 1 ); - } - if (!isClosed) { - const TopoDS_Shape& F = DMEF.FindFromIndex( i-1 ).First(); // bad face - MFP.Add( F ); - // remove bad face from DMEF - for (expl.Init( F, TopAbs_EDGE); expl.More(); expl.Next()) { - const TopoDS_Shape& E = expl.Current(); - TopTools_ListOfShape& FL = DMEF.ChangeFromKey( E ); - for (itl.Initialize( FL ); itl.More(); itl.Next() ) { - if ( F.IsSame( itl.Value() )) { - FL.Remove( itl ); - break; - } - } - } - } - } - } - - // ============== - // make a result - // ============== - - TopoDS_Compound C; - // compound of removed internal faces - TopoDS_Compound CNotCl; - - myBuilder.MakeCompound(C); - myBuilder.MakeCompound(CNotCl); - - // add to compounds - itl.Initialize(KeptFaces); - for (; itl.More(); itl.Next() ) { - TopoDS_Shape & aIntFace = itl.Value(); - // - if (!All && - myAddedFacesMap.Contains(aIntFace) && - myAddedFacesMap.Contains(aIntFace.Reversed())) { - continue; - } - // - if (! MFP.Contains( aIntFace )){ - myBuilder.Add(C, aIntFace); - } - else{ - myBuilder.Add(CNotCl, aIntFace); - } - } - // - if (!skipAlreadyAdded && CheckClosed) { - myInternalFaces.Bind(theShape, C); - myIntNotClFaces.Bind(theShape, CNotCl); - } - // - // - if (!myMapSIFC.IsBound(theShape)) { - TopoDS_Compound aCIF; - myBuilder.MakeCompound(aCIF); - // - itl.Initialize(KeptFaces); - for (; itl.More(); itl.Next() ) { - TopoDS_Shape & aIntFace = itl.Value(); - if (! MFP.Contains(aIntFace )){ - myBuilder.Add(aCIF, aIntFace); - } - } - myMapSIFC.Bind(theShape, aCIF); - } - // - return C; -} -//======================================================================= -//function : IsInside -//purpose : Return True if the first vertex of S1 inside S2. -// If S1.IsNull(), check infinite point against S2. -//======================================================================= -Standard_Boolean NMTAlgo_Splitter::IsInside (const TopoDS_Shape& theS1, - const TopoDS_Shape& theS2) -{ - BRepClass3d_SolidClassifier aClassifier( theS2 ); - // - TopExp_Explorer expl(theS1, TopAbs_VERTEX); - // - if (!expl.More()){ - aClassifier.PerformInfinitePoint( ::RealSmall()); - } - else { - const TopoDS_Vertex & aVertex = TopoDS::Vertex( expl.Current() ); - aClassifier.Perform (BRep_Tool::Pnt( aVertex ), - BRep_Tool::Tolerance( aVertex )); - } - // - return ( aClassifier.State() == TopAbs_IN ); -} -//======================================================================= -//function : GetOriginalShape -//purpose : Return the shape aShape originates from. aShape -// should be a face or more complex result shape -//======================================================================= -TopoDS_Shape NMTAlgo_Splitter::GetOriginalShape(const TopoDS_Shape& theShape) const -{ - TopoDS_Shape anOrigShape; - - TopExp_Explorer expl( theShape, TopAbs_FACE); - if (expl.More()) { - TopoDS_Shape aFace = expl.Current(); - if (myImagesFaces.IsImage( aFace )) - aFace = myImagesFaces.Root( aFace ); - anOrigShape = myFaceShapeMap.Find( aFace ); - } - return anOrigShape; -} -//======================================================================= -//function :RefineShells -//purpose : -//======================================================================= -void RefineShells(const TopoDS_Shape& aS, - TopTools_ListOfShape& aLNS) -{ - Standard_Boolean bFound; - Standard_Integer iS, jS, aNbSOrs, aNbSIms, aNbFOrs, aNbFIms, kFOrs, aNb; - TopTools_ListIteratorOfListOfShape aIt; - TopTools_IndexedMapOfShape aMSOrs, aMSIms, aMFOrs, aMFIms; - TopTools_IndexedDataMapOfShapeShape aMImOr; - TopTools_ListOfShape aLS; - // - TopExp::MapShapes(aS, TopAbs_SHELL, aMSOrs); - aIt.Initialize(aLNS); - for (;aIt.More(); aIt.Next()) { - const TopoDS_Shape& aSh=aIt.Value(); - aMSIms.Add(aSh); - } - // - aNbSOrs=aMSOrs.Extent(); - aNbSIms=aMSIms.Extent(); - // - for (iS=1; iS<=aNbSOrs; ++iS) { - const TopoDS_Shape& aSOr=aMSOrs(iS); - aMFOrs.Clear(); - TopExp::MapShapes(aSOr, TopAbs_FACE, aMFOrs); - aNbFOrs=aMFOrs.Extent(); - // - for (jS=1; jS<=aNbSIms; ++jS) { - const TopoDS_Shape& aSIm=aMSIms(jS); - if (aMImOr.Contains(aSIm)) { - continue; - } - // - aMFIms.Clear(); - TopExp::MapShapes(aSIm, TopAbs_FACE, aMFIms); - aNbFIms=aMFIms.Extent(); - // - if (aNbFIms==aNbFOrs) { - bFound=Standard_True; - for (kFOrs=1; kFOrs<=aNbFOrs; ++kFOrs) { - const TopoDS_Shape& aFOr=aMFOrs(kFOrs); - if (!aMFIms.Contains(aFOr)) { - bFound=Standard_False; - break; //next aSIm - } - } - if (bFound){ - aMImOr.Add(aSIm, aSOr); - break; //next aSOr - } - } //if (aNbFIms==aNbFOrs) - } - } - // - aNb=aMImOr.Extent(); - aIt.Initialize(aLNS); - for (;aIt.More(); aIt.Next()) { - const TopoDS_Shape& aSh=aIt.Value(); - if (aMImOr.Contains(aSh)) { - const TopoDS_Shape& aSOr=aMImOr.FindFromKey(aSh); - aLS.Append(aSOr); - } - else { - aLS.Append(aSh); - } - } - // - aLNS.Clear(); - aLNS.Append(aLS); -} - -//======================================================================= -//function :RefineSolids -//purpose : -//======================================================================= -void RefineSolids(const TopoDS_Shape& aSolidOr, - TopTools_ListOfShape& aLNS) -{ - Standard_Integer aNb, iS, aNbSOrs, aNbSIms; - TopoDS_Shape aSolidIm; - TopTools_IndexedMapOfShape aMSOrs, aMSIms; - // - aNb=aLNS.Extent(); - if (aNb!=1) { - return; - } - // - aSolidIm=aLNS.First(); - - TopExp::MapShapes(aSolidOr, TopAbs_SHELL, aMSOrs); - TopExp::MapShapes(aSolidIm, TopAbs_SHELL, aMSIms); - aNbSOrs=aMSOrs.Extent(); - aNbSIms=aMSIms.Extent(); - if (aNbSOrs!=aNbSIms) { - return; - } - // - for (iS=1; iS<=aNbSOrs; ++iS) { - const TopoDS_Shape& aSOr=aMSOrs(iS); - if (!aMSIms.Contains(aSOr)) { - return; - } - } - // - aLNS.Clear(); - aLNS.Append(aSolidOr); -} -//modified by NIZNHY-PKV Fri Feb 25 16:59:57 2005f XX -//======================================================================= -//function : GetPlanes -//purpose : -//======================================================================= -void GetPlanes (const TopoDS_Edge& anEx, - const TopTools_IndexedDataMapOfShapeListOfShape& anEFMapx, - const TopoDS_Face& aF1, - TopAbs_State& aStPF1) - -{ - Standard_Boolean bIsAdjExists; - Standard_Real aT, aT1, aT2; - TopAbs_Orientation anOrEx, anOr; - gp_Dir aDNFx1, aDNFx2, aDNF1; - gp_Pnt aPx, aPx1, aPx2, aPF1; - TopoDS_Edge aERight, aSpxSimm; - TopoDS_Face aFx1, aFx2, aFF1; - TopTools_ListIteratorOfListOfShape anIt; - // - // Point on Edge - Handle(Geom_Curve)aC3D =BRep_Tool::Curve(anEx, aT1, aT2); - aT=BOPTools_Tools2D::IntermediatePoint(aT1, aT2); - - aC3D->D0(aT, aPx); - // - anOrEx=anEx.Orientation(); - - aSpxSimm=anEx; - if (anOrEx==TopAbs_FORWARD) { - aSpxSimm.Orientation(TopAbs_REVERSED); - } - else if (anOrEx==TopAbs_REVERSED){ - aSpxSimm.Orientation(TopAbs_FORWARD); - } - // - const TopTools_ListOfShape& aLF=anEFMapx.FindFromKey(anEx); - anIt.Initialize(aLF); - for (; anIt.More(); anIt.Next()) { - const TopoDS_Shape& aFE=anIt.Value(); - aFx1=TopoDS::Face(aFE); - anOr=BOPTools_Tools3D::Orientation(anEx, aFx1); - if (anOr==anOrEx){ - break; - } - } - // - BOPTools_Tools3D::GetApproxNormalToFaceOnEdge (anEx, aFx1, aT, aPx1, aDNFx1); - // - bIsAdjExists=BOPTools_Tools3D::GetAdjacentFace (aFx1, anEx, anEFMapx, aFx2); - if (!bIsAdjExists) { - BOPTools_Tools3D::GetApproxNormalToFaceOnEdge (aSpxSimm, aFx1, aT, aPx2, aDNFx2); - } - else { - BOPTools_Tools3D::GetApproxNormalToFaceOnEdge (aSpxSimm, aFx2, aT, aPx2, aDNFx2); - } - // - aFF1=aF1; - aFF1.Orientation(TopAbs_FORWARD); - BOPTools_Tools3D::OrientEdgeOnFace (anEx, aFF1, aERight); - BOPTools_Tools3D::GetApproxNormalToFaceOnEdge (aERight, aFF1, aT, aPF1, aDNF1); - // - { - Standard_Real d12, d1, anAlfa12, anAlfa1, aTwoPI; - - aTwoPI=Standard_PI+Standard_PI; - - gp_Vec aVx1(aPx, aPx1); - gp_Dir aDBx1 (aVx1); - gp_Pln aPlnToCompare (aPx, aDNFx1); - - gp_Vec aVx2(aPx, aPx2); - gp_Dir aDBx2 (aVx2); - - anAlfa12=aDBx1.Angle(aDBx2); - d12=BOPTools_Tools3D::SignDistance(aPx2, aPlnToCompare); - if (d12 < 0.) { - anAlfa12=aTwoPI-anAlfa12; - } - - gp_Vec aVF1(aPx, aPF1); - gp_Dir aDBF1 (aVF1); - anAlfa1=aDBx1.Angle(aDBF1); - d1=BOPTools_Tools3D::SignDistance(aPF1, aPlnToCompare); - if (d1 < 0.) { - anAlfa1=aTwoPI-anAlfa1; - } - - aStPF1=TopAbs_OUT; - if (anAlfa1 > anAlfa12) { - aStPF1=TopAbs_IN; - } - } -} -//modified by NIZNHY-PKV Fri Feb 25 17:00:03 2005t XX -/* - A - // - TopoDS_Shape aFace2; - if ( !isSectionE ) { - while (itl.More()) { - aFace2 = itl.Value(); - // - TopoDS_Shape anOrigFace2 = aFace2; - if (myImagesFaces.IsImage(aFace2)) { - anOrigFace2 = myImagesFaces.Root(aFace2); - } - // - if (!MFP.Contains( aFace2 )) { - LSF.Remove( itl ); - continue; - } - //if (anOrigFace.IsSame( myImagesFaces.Root( aFace2 ))) - if (anOrigFace.IsSame(anOrigFace2)) { - break; - } - itl.Next(); - } - if (itl.More()) { // aFace2 found, remove it from maps - LSF.Remove( itl ); - MFP.Remove(aFace2); - } - else{ - aFace2.Nullify(); - } - itl.Initialize( LSF ); - } - */ diff --git a/src/NMTAlgo/NMTAlgo_Splitter_2.cxx b/src/NMTAlgo/NMTAlgo_Splitter_2.cxx deleted file mode 100644 index 8229af154..000000000 --- a/src/NMTAlgo/NMTAlgo_Splitter_2.cxx +++ /dev/null @@ -1,660 +0,0 @@ -// File: NMTAlgo_Splitter_2.cxx -// Created: Mon Feb 9 15:07:51 2004 -// Author: Igor FEOKTISTOV -// - - -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -//======================================================================= -//function : KeepShapesInside -//purpose : remove shapes that are outside of S from result -//======================================================================= - void NMTAlgo_Splitter::KeepShapesInside (const TopoDS_Shape& S) -{ - TopoDS_Iterator it; - if (S.ShapeType() < TopAbs_SOLID) { // compound or compsolid - for (it.Initialize( S ); it.More(); it.Next()) - KeepShapesInside( it.Value()); - return; - } - - Standard_Boolean isTool = Standard_False; - if (!myImageShape.HasImage( S )) { - //isTool = CheckTool( S ); - //if (!isTool) return; - return; - } - - // build map of internal faces - TopTools_IndexedMapOfShape MIF; - TopoDS_Shape IntFacesComp = FindFacesInside( S, Standard_False, Standard_True); - TopExp::MapShapes( IntFacesComp, TopAbs_FACE, MIF ); - - TopoDS_Compound C; - myBuilder.MakeCompound(C); - - TopAbs_ShapeEnum anInternalShapeType = TopAbs_SHAPE; - if (!MIF.IsEmpty()) - { - // leave in the result only those shapes having a face in MIF - for (it.Initialize( myShape ); it.More(); it.Next()) { - const TopoDS_Shape & aResShape = it.Value(); - TopExp_Explorer expResF( aResShape, TopAbs_FACE ); - for (; expResF.More(); expResF.Next()) { - if ( MIF.Contains( expResF.Current())) { - myBuilder.Add( C, aResShape ); - if (aResShape.ShapeType() < anInternalShapeType) - anInternalShapeType = aResShape.ShapeType(); - break; - } - } - } - } - - // may be S was not split by internal faces then it is missing - // in myShape, add it - if (!isTool && - (anInternalShapeType > TopAbs_SOLID || S.ShapeType() > TopAbs_SOLID)) - { - TopTools_IndexedMapOfShape MSF; // map of split faces of S - TopExp::MapShapes( myImageShape.Image(S).First(), TopAbs_FACE, MSF); - - // find a shape having all faces in MSF - for (it.Initialize( myShape ); it.More(); it.Next()) { - TopExp_Explorer expResF( it.Value(), TopAbs_FACE ); - for (; expResF.More(); expResF.Next()) { - if (! MSF.Contains( expResF.Current())) - break; - } - if (! expResF.More()) { - myBuilder.Add( C, it.Value() ); - break; - } - } - } - - myShape = C; -} - -//======================================================================= -//function : RemoveShapesInside -//purpose : remove shapes that are inside S from result -//======================================================================= - void NMTAlgo_Splitter::RemoveShapesInside (const TopoDS_Shape& S) -{ - TopoDS_Iterator it; - if (S.ShapeType() < TopAbs_SOLID) { // compound or compsolid - it.Initialize( S ); - for (; it.More(); it.Next()) { - RemoveShapesInside( it.Value()); - } - return; - } - // - Standard_Boolean isTool; - TopoDS_Shape IntFacesComp; - TopoDS_Compound C; - TopTools_IndexedMapOfShape MIF; // map of internal faces - TopTools_MapOfShape RFM; - TopTools_MapIteratorOfMapOfShape itF; - // - isTool=myToolShapes.Contains(S); - //isTool = Standard_False; - if (!myImageShape.HasImage( S )) { - return; - } - // - IntFacesComp = FindFacesInside( S, Standard_False, Standard_True); - // - TopExp::MapShapes( IntFacesComp, TopAbs_FACE, MIF); - if (MIF.IsEmpty()) { - return; - } - // add to MIF split faces of S - const TopoDS_Shape& aSIm=myImageShape.Image(S).First(); - TopExp::MapShapes(aSIm, TopAbs_FACE, MIF); - // - // leave in the result only those shapes not having all face in MIF - myBuilder.MakeCompound(C); - // - // RFM : faces of removed shapes that encounter once - it.Initialize(myShape); - for (; it.More(); it.Next()) { - TopExp_Explorer expResF; - // - const TopoDS_Shape& aSR=it.Value(); - // - expResF.Init(aSR, TopAbs_FACE); - for (; expResF.More(); expResF.Next()) { - const TopoDS_Shape& aFR=expResF.Current(); - if (!MIF.Contains(aFR)) { - break; - } - } - // - if (expResF.More()) { - // add shape to result - myBuilder.Add(C, aSR); - } - else { - // add faces of a removed shape to RFM - for (expResF.ReInit(); expResF.More(); expResF.Next()) { - const TopoDS_Shape& aF = expResF.Current(); - if (!RFM.Remove(aF)) { - RFM.Add(aF); - } - } - } - }// for (; it.More(); it.Next()) - // - // - TopoDS_Compound aCx; - // - myBuilder.MakeCompound(aCx); - itF.Initialize (RFM); - for (; itF.More(); itF.Next()) { - const TopoDS_Shape& aF=itF.Key(); - myBuilder.Add(aCx, aF); - } - // - if (!isTool) { - // rebuild S, it must remain in the result - Standard_Boolean isClosed = Standard_False; - switch (S.ShapeType()) { - case TopAbs_SOLID : - isClosed = Standard_True; break; - case TopAbs_SHELL: { - TopTools_IndexedDataMapOfShapeListOfShape MEF; - TopExp::MapShapesAndAncestors(S, TopAbs_EDGE, TopAbs_FACE, MEF); - Standard_Integer i; - for (i=1; isClosed && i<=MEF.Extent(); ++i) { - isClosed = ( MEF(i).Extent() != 1 ); - } - break; - } - default: - isClosed = Standard_False; - } - // - if (isClosed) { - // add to a new shape external faces of removed shapes, ie those in RFM - TopoDS_Shell Shell; - myBuilder.MakeShell(Shell); - // exclude redundant internal face with edges encounterd only once - TopTools_IndexedDataMapOfShapeListOfShape MEF; - // - itF.Initialize (RFM); - for ( ; itF.More(); itF.Next()) { - const TopoDS_Shape& aF=itF.Key(); - TopExp::MapShapesAndAncestors(aF, TopAbs_EDGE, TopAbs_FACE, MEF); - } - // add only faces forming a closed shell - for (itF.Reset() ; itF.More(); itF.Next()) { - const TopoDS_Shape& aF=itF.Key(); - TopExp_Explorer expE (aF, TopAbs_EDGE); - for (; expE.More(); expE.Next()) { - if (MEF.FindFromKey(expE.Current()).Extent() == 1) { - break; - } - } - if (!expE.More()) { - myBuilder.Add( Shell, aF); - } - else { - //int a=0; - } - } - - if (S.ShapeType() == TopAbs_SOLID) { - TopoDS_Solid Solid; - myBuilder.MakeSolid( Solid ); - myBuilder.Add (Solid, Shell); - myBuilder.Add (C, Solid); - } - else { - myBuilder.Add (C, Shell); - } - } // if (isClosed) { - else { - it.Initialize(aSIm); - for (; it.More(); it.Next()) { - myBuilder.Add (C, it.Value()); - } - } - } - // - myShape = C; -} -// -//modified by NIZNHY-PKV Tue Feb 1 16:02:29 2005 f -//======================================================================= -//function : Modified -//purpose : -//======================================================================= -const TopTools_ListOfShape& NMTAlgo_Splitter::Modified (const TopoDS_Shape& S) - -{ - TopAbs_ShapeEnum aType; - // - myGenerated.Clear(); - // - aType=S.ShapeType(); - // - switch (aType) { - case TopAbs_SOLID: - case TopAbs_FACE: - case TopAbs_EDGE: - case TopAbs_VERTEX: - FindImage(S, myGenerated); - break; - - case TopAbs_SHELL: - break; - - case TopAbs_WIRE: - break; - - default: - break; - } - // - return myGenerated; -} -//modified by NIZNHY-PKV Tue Feb 1 16:02:33 2005 t -//======================================================================= -//function : IsDeleted -//purpose : -//======================================================================= -Standard_Boolean NMTAlgo_Splitter::IsDeleted (const TopoDS_Shape& S) - -{ - const TopTools_ListOfShape& aL = Modified(S); - if(aL.Extent() != 0) return Standard_False; - - TopTools_MapOfShape aMap; - TopExp_Explorer anExp; - - TopAbs_ShapeEnum aType = S.ShapeType(); - - if(aType == TopAbs_VERTEX || - aType == TopAbs_EDGE || - aType == TopAbs_FACE ) { - - anExp.Init(myShape, aType); - for(; anExp.More(); anExp.Next()) { - if(S.IsSame(anExp.Current())) return Standard_False; - } - - } - - return Standard_True; -} -//======================================================================= -//function : Generated -//purpose : -//======================================================================= -const TopTools_ListOfShape& NMTAlgo_Splitter::Generated(const TopoDS_Shape& S) -{ - myGenerated.Clear(); - TopTools_ListIteratorOfListOfShape it; - TopTools_MapOfShape aMap; - TopExp_Explorer anExp; - Standard_Boolean bCheckVert = Standard_False; - - if(S.ShapeType() == TopAbs_FACE) { - if (mySectionParts.Contains(S)) { - it.Initialize(mySectionParts.FindFromKey(S)); - anExp.Init(myShape, TopAbs_EDGE); - - for(; anExp.More(); anExp.Next()) { - aMap.Add(anExp.Current()); - } - - for (; it.More(); it.Next()) { - if(aMap.Contains(it.Value())) { - myGenerated.Append(it.Value()); - } - } - } - - NMTTools_PaveFiller& aPF = myDSFiller->ChangePaveFiller(); - const NMTDS_ShapesDataStructure& aDS = myDSFiller->DS(); - const BOPTools_PInterferencePool& anIP = aPF.InterfPool(); - - Standard_Integer aNbS = aDS.NumberOfSourceShapes(); - Standard_Integer anIndex = 0, i; - - for(i = 1; i <= aNbS; ++i) { - - const TopoDS_Shape& aS = aDS.Shape(i); - if(S.IsSame(aS)) { - anIndex = i; - break; - } - - } - - if(anIndex == 0) return myGenerated; - if(!anIP->HasInterference(anIndex)) return myGenerated; - - const BOPTools_CArray1OfESInterference& aESs = anIP->ESInterferences(); - Standard_Integer aNbI = aESs.Extent(); - - if(aNbI == 0) return myGenerated; - - for(i = 1; i <= aNbI; ++i) { - - const BOPTools_ESInterference& aES = aESs(i); - Standard_Integer ind1, ind2; - aES.Indices(ind1, ind2); - - if(ind1 == anIndex || ind2 == anIndex) { - - Standard_Integer aNSI = aES.NewShape(); - if(aDS.GetShapeType(aNSI) == TopAbs_VERTEX) { - myGenerated.Append(aDS.Shape(aNSI)); - bCheckVert = Standard_True; - } - - } - - } - - if(bCheckVert) { - aMap.Clear(); - anExp.Init(myShape, TopAbs_VERTEX); - - for(; anExp.More(); anExp.Next()) { - aMap.Add(anExp.Current()); - } - - it.Initialize(myGenerated); - for (; it.More(); it.Next()) { - - if(it.Value().ShapeType() != TopAbs_VERTEX) continue; - - if(!aMap.Contains(it.Value())) { - myGenerated.Remove(it); - } - - } - } - - return myGenerated; - } - - if(S.ShapeType() == TopAbs_EDGE) { - - NMTTools_PaveFiller& aPF = myDSFiller->ChangePaveFiller(); - const NMTDS_ShapesDataStructure& aDS = myDSFiller->DS(); - const BOPTools_PInterferencePool& anIP = aPF.InterfPool(); - - Standard_Integer aNbS = aDS.NumberOfSourceShapes(); - Standard_Integer anIndex = 0, i; - - for(i = 1; i <= aNbS; ++i) { - - const TopoDS_Shape& aS = aDS.Shape(i); - if(S.IsSame(aS)) { - anIndex = i; - break; - } - - } - - if(anIndex == 0) return myGenerated; - if(!anIP->HasInterference(anIndex)) return myGenerated; - - const BOPTools_CArray1OfEEInterference& aEEs = anIP->EEInterferences(); - Standard_Integer aNbI = aEEs.Extent(); - - for(i = 1; i <= aNbI; ++i) { - - const BOPTools_EEInterference& aEE = aEEs(i); - Standard_Integer ind1, ind2; - aEE.Indices(ind1, ind2); - - if(ind1 == anIndex || ind2 == anIndex) { - - Standard_Integer aNSI = aEE.NewShape(); - if(aDS.GetShapeType(aNSI) == TopAbs_VERTEX) { - myGenerated.Append(aDS.Shape(aNSI)); - bCheckVert = Standard_True; - } - - } - - } - - const BOPTools_CArray1OfESInterference& aESs = anIP->ESInterferences(); - aNbI = aESs.Extent(); - - for(i = 1; i <= aNbI; ++i) { - - const BOPTools_ESInterference& aES = aESs(i); - Standard_Integer ind1, ind2; - aES.Indices(ind1, ind2); - - if(ind1 == anIndex || ind2 == anIndex) { - - Standard_Integer aNSI = aES.NewShape(); - if(aDS.GetShapeType(aNSI) == TopAbs_VERTEX) { - myGenerated.Append(aDS.Shape(aNSI)); - bCheckVert = Standard_True; - } - - } - - } - - if(bCheckVert) { - aMap.Clear(); - anExp.Init(myShape, TopAbs_VERTEX); - - for(; anExp.More(); anExp.Next()) { - aMap.Add(anExp.Current()); - } - - it.Initialize(myGenerated); - for (; it.More(); it.Next()) { - - if(!aMap.Contains(it.Value())) { - myGenerated.Remove(it); - } - } - } - return myGenerated; - } - return myGenerated; -} -//modified by NIZNHY-PKV Tue Feb 1 10:26:18 2005f -//======================================================================= -//function : FindImage -//purpose : -//======================================================================= -void NMTAlgo_Splitter::FindImage(const TopoDS_Shape& aS, - TopTools_ListOfShape& aLIms) -{ - TopAbs_ShapeEnum aType; - // - aType=aS.ShapeType(); - // - if (aType==TopAbs_SOLID) { - Standard_Boolean bHasImage, bHasInternalFaces; - Standard_Integer i, aNbSd; - TopTools_IndexedMapOfShape aMSo, aMSd; - TopoDS_Iterator aIt; - TopTools_IndexedDataMapOfShapeListOfShape aMFS; - TopTools_ListIteratorOfListOfShape aItLS; - // - bHasInternalFaces=myMapSIFC.IsBound(aS); - if (bHasInternalFaces){ - TopExp::MapShapesAndAncestors(myShape, TopAbs_FACE, TopAbs_SOLID, aMFS); - // - const TopoDS_Shape& aIFC=myMapSIFC.Find(aS); - // - aIt.Initialize(aIFC); - for (; aIt.More(); aIt.Next()) { - const TopoDS_Shape& aIF=aIt.Value(); - if (aMFS.Contains(aIF)) { - const TopTools_ListOfShape& aLS=aMFS.FindFromKey(aIF); - // - aItLS.Initialize(aLS); - for (; aItLS.More(); aItLS.Next()) { - const TopoDS_Shape& aSx=aItLS.Value(); - aMSd.Add(aSx); - } - } - } - // - aNbSd=aMSd.Extent(); - if (aNbSd) { - for (i=1; i<=aNbSd; ++i) { - const TopoDS_Shape& aSx=aMSd(i); - if (!aSx.IsSame(aS)) { - aLIms.Append(aSx); - } - } - return; - } - } - // - bHasImage=myImageShape.HasImage(aS); - if (!bHasImage) { - return; - } - // - TopoDS_Shape aSd; - // - TopExp::MapShapes(myShape, TopAbs_SOLID, aMSo); - // - const TopoDS_Shape& aFC=myImageShape.Image(aS).First(); - bHasImage=NMTAlgo_Tools::FindImageSolid(aFC, aMSo, aSd); - if (bHasImage) { - if (!aSd.IsSame(aS)) { - aLIms.Append(aSd); - } - } - } //if (aType==TopAbs_SOLID) { - //== - else if (aType==TopAbs_FACE) { - TopTools_MapOfShape aMap; - TopTools_ListIteratorOfListOfShape aIt; - TopExp_Explorer anExp; - // - if (myModifiedFaces.IsBound(aS)) { - anExp.Init(myShape, aType); - for(; anExp.More(); anExp.Next()) { - aMap.Add(anExp.Current()); - } - // - const TopTools_ListOfShape& aLS=myModifiedFaces.Find(aS); - aIt.Initialize(aLS); - for (; aIt.More(); aIt.Next()) { - const TopoDS_Shape& aFx=aIt.Value(); - if (!aFx.IsSame(aS)) { - if (aMap.Contains(aFx)) { - aLIms.Append(aFx); - } - } - } - } - } // else if (aType==TopAbs_FACE) - //== - else if (aType==TopAbs_EDGE) { - TopTools_MapOfShape aMap; - TopTools_ListIteratorOfListOfShape aIt; - TopExp_Explorer anExp; - // - if (myImagesEdges.HasImage(aS)) { - anExp.Init(myShape, aType); - for(; anExp.More(); anExp.Next()) { - aMap.Add(anExp.Current()); - } - // - const TopTools_ListOfShape& aLE=myImagesEdges.Image(aS); - aIt.Initialize(aLE); - for (; aIt.More(); aIt.Next()) { - const TopoDS_Shape& aEx=aIt.Value(); - if (!aEx.IsSame(aS)) { - if(aMap.Contains(aEx)) { - aLIms.Append(aEx); - } - } - } - } - }// else if (aType==TopAbs_EDGE) - //== - else if (aType==TopAbs_VERTEX) { - Standard_Integer aNbS, anIndex, i, aSDVInd; - TopExp_Explorer anExp; - // - const NMTTools_DSFiller& aDSF = Filler(); - const NMTTools_PaveFiller& aPF = aDSF.PaveFiller(); - const NMTDS_ShapesDataStructure& aDS = aDSF.DS(); - // - aNbS = aDS.NumberOfSourceShapes(); - anIndex = 0; - // - for(i=1; i<=aNbS; ++i) { - const TopoDS_Shape& aSx = aDS.Shape(i); - if(aS.IsSame(aSx)) { - anIndex = i; - break; - } - } - // - if(!anIndex) { - return; - } - // - aSDVInd=aPF.FindSDVertex(anIndex); - if(!aSDVInd) { - return; - } - // - const TopoDS_Shape& aSDV=aDS.Shape(aSDVInd); - // - anExp.Init(myShape, aType); - for(; anExp.More(); anExp.Next()) { - const TopoDS_Shape& aVx=anExp.Current(); - if(aSDV.IsSame(aVx)) { - aLIms.Append(aSDV); - break; - } - } - }// else if (aType==TopAbs_VERTEX) -} -//modified by NIZNHY-PKV Tue Feb 1 10:26:22 2005t - diff --git a/src/NMTAlgo/NMTAlgo_Tools.cdl b/src/NMTAlgo/NMTAlgo_Tools.cdl deleted file mode 100644 index 9b067fdad..000000000 --- a/src/NMTAlgo/NMTAlgo_Tools.cdl +++ /dev/null @@ -1,71 +0,0 @@ --- File: NMTAlgo_Tools.cdl --- Created: Fri Jan 30 16:29:14 2004 --- Author: Peter KURNEV --- ----Copyright: Matra Datavision 2004 - - -class Tools from NMTAlgo - - ---Purpose: - -uses - Orientation from TopAbs, - - Shape from TopoDS, - Edge from TopoDS, - Face from TopoDS, - Shell from TopoDS, - - ListOfShape from TopTools, - IndexedMapOfShape from TopTools ---raises - -is - OrientFacesOnShell (myclass; - aShell: Shell from TopoDS; - aShellNew: out Shell from TopoDS); - - OrientFacesOnShell (myclass; - aF : Face from TopoDS; - aSh : out Shell from TopoDS); - - Orientation(myclass; - aE: Edge from TopoDS; - aF: Face from TopoDS) - returns Orientation from TopAbs; - - Sense (myclass; - aF1: Face from TopoDS; - aF2: Face from TopoDS) - returns Integer from Standard; - - IsInside (myclass; - aS1: Shape from TopoDS; - aS2: Shape from TopoDS) - returns Boolean from Standard; - - MakeShells(myclass; - aFC:Shape from TopoDS; - aLS:out ListOfShape from TopTools); - - MakeSolids(myclass; - aLS:out ListOfShape from TopTools); - - MakeSolids(myclass; - aFC:Shape from TopoDS; - aLS:out ListOfShape from TopTools); - - BreakWebs (myclass; - aS1: Shape from TopoDS; - aS2:out Shape from TopoDS); - - FindImageSolid (myclass; - aFC : Shape from TopoDS; - aMSo : IndexedMapOfShape from TopTools; - aSo : out Shape from TopoDS) - returns Boolean from Standard; - ---fields - -end Tools; diff --git a/src/NMTAlgo/NMTAlgo_Tools.cxx b/src/NMTAlgo/NMTAlgo_Tools.cxx deleted file mode 100644 index 409b748dc..000000000 --- a/src/NMTAlgo/NMTAlgo_Tools.cxx +++ /dev/null @@ -1,499 +0,0 @@ -// File: NMTAlgo_Tools.cxx -// Created: Fri Jan 30 16:30:45 2004 -// Author: Peter KURNEV -// - - -#include - -#include - -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - -#include - -#include -#include - - -//======================================================================= -// function: Sense -// purpose: -//======================================================================= - Standard_Integer NMTAlgo_Tools::Sense (const TopoDS_Face& aF1, - const TopoDS_Face& aF2) -{ - Standard_Integer iSense=0; - gp_Dir aDNF1, aDNF2; - TopoDS_Edge aE1, aE2; - TopExp_Explorer anExp; - // - anExp.Init(aF1, TopAbs_EDGE); - for (; anExp.More(); anExp.Next()) { - aE1=TopoDS::Edge(anExp.Current()); - if (!BRep_Tool::Degenerated(aE1)) { - if (!BRep_Tool::IsClosed(aE1, aF1)) { - break; - } - } - } - // - anExp.Init(aF2, TopAbs_EDGE); - for (; anExp.More(); anExp.Next()) { - aE2=TopoDS::Edge(anExp.Current()); - if (!BRep_Tool::Degenerated(aE2)) { - if (!BRep_Tool::IsClosed(aE2, aF2)) { - if (aE2.IsSame(aE1)) { - iSense=1; - break; - } - } - } - } - // - if (!iSense) { - return iSense; - } - // - BOPTools_Tools3D::GetNormalToFaceOnEdge(aE1, aF1, aDNF1); - BOPTools_Tools3D::GetNormalToFaceOnEdge(aE2, aF2, aDNF2); - // - iSense=BOPTools_Tools3D::SenseFlag(aDNF1, aDNF2); - // - return iSense; -} - -//======================================================================= -// function: OrientFacesOnShell -// purpose: -//======================================================================= - void NMTAlgo_Tools::OrientFacesOnShell (const TopoDS_Face& aF1, - TopoDS_Shell& aSh) -{ - Standard_Integer aNbFSh, iSenseFlag; - gp_Dir aDNF1, aDNF2; - TopExp_Explorer anExp; - TopoDS_Edge aE1, aESh; - TopTools_IndexedDataMapOfShapeListOfShape aMEFSh; - // - anExp.Init(aF1, TopAbs_EDGE); - for (; anExp.More(); anExp.Next()) { - aE1=TopoDS::Edge(anExp.Current()); - if (!BRep_Tool::Degenerated(aE1)) { - break; - } - } - // - BOPTools_Tools3D::GetNormalToFaceOnEdge(aE1, aF1, aDNF1); - // - TopExp::MapShapesAndAncestors(aSh, TopAbs_EDGE, TopAbs_FACE, aMEFSh); - if (aMEFSh.Contains(aE1)) { - const TopTools_ListOfShape& aLFSh=aMEFSh.FindFromKey(aE1); - aNbFSh=aLFSh.Extent(); - if (aNbFSh==1) { - const TopoDS_Face& aFSh=TopoDS::Face(aLFSh.First()); - // - BOPTools_Tools3D::OrientEdgeOnFace(aE1, aFSh, aESh); - BOPTools_Tools3D::GetNormalToFaceOnEdge(aESh, aFSh, aDNF2); - // - iSenseFlag=BOPTools_Tools3D::SenseFlag(aDNF1, aDNF2); - if (iSenseFlag==1) { - return; - } - // - anExp.Init(aSh, TopAbs_FACE); - for (; anExp.More(); anExp.Next()) { - const TopoDS_Shape& aFx=anExp.Current(); - TopoDS_Shape *pFx=(TopoDS_Shape *)&aFx; - pFx->Reverse(); - } - } - } -} -//======================================================================= -// function: OrientFacesOnShell -// purpose: -//======================================================================= - void NMTAlgo_Tools::OrientFacesOnShell (const TopoDS_Shell& aShell, - TopoDS_Shell& aShellNew) -{ - Standard_Boolean bIsProcessed1, bIsProcessed2; - Standard_Integer i, aNbE, aNbF, j; - TopAbs_Orientation anOrE1, anOrE2; - - TopTools_IndexedDataMapOfShapeListOfShape aEFMap; - TopTools_IndexedMapOfShape aProcessedFaces; - BRep_Builder aBB; - - aBB.MakeShell(aShellNew); - - TopExp::MapShapesAndAncestors(aShell, TopAbs_EDGE, TopAbs_FACE, aEFMap); - - aNbE=aEFMap.Extent(); - // - // One seam edge in aEFMap contains 2 equivalent faces. - for (i=1; i<=aNbE; i++) { - TopTools_ListOfShape& aLF=aEFMap.ChangeFromIndex(i); - - if (aLF.Extent()>1) { - TopTools_ListOfShape aLFTmp; - TopTools_IndexedMapOfShape aFM; - - TopTools_ListIteratorOfListOfShape anIt(aLF); - for (; anIt.More(); anIt.Next()) { - const TopoDS_Shape& aF=anIt.Value(); - if (!aFM.Contains(aF)) { - aFM.Add(aF); - aLFTmp.Append(aF); - } - } - aLF.Clear(); - aLF=aLFTmp; - } - } - // - // Do - for (i=1; i<=aNbE; i++) { - const TopoDS_Edge& aE=TopoDS::Edge(aEFMap.FindKey(i)); - - if (BRep_Tool::Degenerated(aE)) { - continue; - } - - const TopTools_ListOfShape& aLF=aEFMap.FindFromIndex(i); - aNbF=aLF.Extent(); - - if (aNbF==2) { - TopoDS_Face& aF1=TopoDS::Face(aLF.First()); - TopoDS_Face& aF2=TopoDS::Face(aLF.Last() ); - - - bIsProcessed1=aProcessedFaces.Contains(aF1); - bIsProcessed2=aProcessedFaces.Contains(aF2); - - if (bIsProcessed1 && bIsProcessed2) { - continue; - } - - if (!bIsProcessed1 && !bIsProcessed2) { - aProcessedFaces.Add(aF1); - aBB.Add(aShellNew, aF1); - - bIsProcessed1=!bIsProcessed1; - } - - // - TopoDS_Face aF1x, aF2x; - - aF1x=aF1; - if (bIsProcessed1) { - j=aProcessedFaces.FindIndex(aF1); - aF1x=TopoDS::Face(aProcessedFaces.FindKey(j)); - } - - aF2x=aF2; - if (bIsProcessed2) { - j=aProcessedFaces.FindIndex(aF2); - aF2x=TopoDS::Face(aProcessedFaces.FindKey(j)); - } - // - - anOrE1=NMTAlgo_Tools::Orientation(aE, aF1x); - anOrE2=NMTAlgo_Tools::Orientation(aE, aF2x); - - if (bIsProcessed1 && !bIsProcessed2) { - - if (anOrE1==anOrE2) { - if (!BRep_Tool::IsClosed(aE, aF1) && - !BRep_Tool::IsClosed(aE, aF2)) { - aF2.Reverse(); - } - } - aProcessedFaces.Add(aF2); - aBB.Add(aShellNew, aF2); - } - - else if (!bIsProcessed1 && bIsProcessed2) { - if (anOrE1==anOrE2) { - if (!BRep_Tool::IsClosed(aE, aF1) && - !BRep_Tool::IsClosed(aE, aF2)) { - aF1.Reverse(); - } - } - aProcessedFaces.Add(aF1); - aBB.Add(aShellNew, aF1); - } - } - } - // - // - for (i=1; i<=aNbE; i++) { - const TopoDS_Edge& aE=TopoDS::Edge(aEFMap.FindKey(i)); - - if (BRep_Tool::Degenerated(aE)) { - continue; - } - - const TopTools_ListOfShape& aLF=aEFMap.FindFromIndex(i); - aNbF=aLF.Extent(); - if (aNbF!=2) { - TopTools_ListIteratorOfListOfShape anIt(aLF); - for(; anIt.More(); anIt.Next()) { - const TopoDS_Face& aF=TopoDS::Face(anIt.Value()); - if (!aProcessedFaces.Contains(aF)) { - aProcessedFaces.Add(aF); - aBB.Add(aShellNew, aF); - } - } - } - } -} -//======================================================================= -//function : Orientation -//purpose : -//======================================================================= - TopAbs_Orientation NMTAlgo_Tools::Orientation(const TopoDS_Edge& anE, - const TopoDS_Face& aF) -{ - TopAbs_Orientation anOr=TopAbs_INTERNAL; - - TopExp_Explorer anExp; - anExp.Init(aF, TopAbs_EDGE); - for (; anExp.More(); anExp.Next()) { - const TopoDS_Edge& anEF1=TopoDS::Edge(anExp.Current()); - if (anEF1.IsSame(anE)) { - anOr=anEF1.Orientation(); - break; - } - } - return anOr; -} -//======================================================================= -//function : IsInside -//purpose : Return True if the first vertex of S1 inside S2. -// If S1.IsNull(), check infinite point against S2. -//======================================================================= - Standard_Boolean NMTAlgo_Tools::IsInside (const TopoDS_Shape& theS1, - const TopoDS_Shape& theS2) -{ - BRepClass3d_SolidClassifier aClassifier( theS2 ); - // - TopExp_Explorer expl(theS1, TopAbs_VERTEX); - // - if (!expl.More()){ - aClassifier.PerformInfinitePoint( ::RealSmall()); - } - else { - const TopoDS_Vertex & aVertex = TopoDS::Vertex( expl.Current() ); - aClassifier.Perform (BRep_Tool::Pnt( aVertex ), - BRep_Tool::Tolerance( aVertex )); - } - // - return ( aClassifier.State() == TopAbs_IN ); -} -//======================================================================= -//function : MakeShells -//purpose : -//======================================================================= - void NMTAlgo_Tools::MakeShells (const TopoDS_Shape& aFC, - TopTools_ListOfShape& aLNS) -{ - NMTAlgo_Loop3d aShellMaker; - TopTools_MapOfOrientedShape aMTmp; - // - aShellMaker.AddConstFaces(aFC); - aLNS=aShellMaker.MakeShells(aMTmp); -} -//======================================================================= -//function : MakeSolids -//purpose : -//======================================================================= - void NMTAlgo_Tools::MakeSolids(const TopoDS_Shape& aFC, - TopTools_ListOfShape& theShellList) -{ - NMTAlgo_Tools::MakeShells(aFC, theShellList); - NMTAlgo_Tools::MakeSolids(theShellList); -} -//======================================================================= -//function : MakeSolids -//purpose : -//======================================================================= - void NMTAlgo_Tools::MakeSolids(TopTools_ListOfShape& theShellList) -{ - TopTools_ListOfShape aHoleShells, aNewSolids; - TopoDS_Shape anInfinitePointShape; - TopTools_DataMapOfShapeShape aInOutMap; - TopTools_ListIteratorOfListOfShape aShellIt, aSolisIt; - BRep_Builder aBB; - // - aShellIt.Initialize(theShellList); - for ( ; aShellIt.More(); aShellIt.Next()) { - const TopoDS_Shape & aShell = aShellIt.Value(); - // check if a shell is a hole of theSolid - if (NMTAlgo_Tools::IsInside(anInfinitePointShape, aShell)){ - aHoleShells.Append(aShell); - } - else { - // make a solid from a shell - TopoDS_Solid Solid; - aBB.MakeSolid( Solid ); - aBB.Add (Solid, aShell); - aNewSolids.Append (Solid); - } - } - // - // find outer a shell most close to each hole shell - aShellIt.Initialize(aHoleShells); - for (; aShellIt.More(); aShellIt.Next()){ - const TopoDS_Shape & aHole = aShellIt.Value(); - // - aSolisIt.Initialize(aNewSolids); - for ( ; aSolisIt.More(); aSolisIt.Next()) { - const TopoDS_Shape & aSolid = aSolisIt.Value(); - // - if (! NMTAlgo_Tools::IsInside(aHole, aSolid)){ - continue; - } - // - if ( aInOutMap.IsBound (aHole)){ - const TopoDS_Shape & aSolid2 = aInOutMap( aHole ); - if ( IsInside( aSolid, aSolid2 )) { - aInOutMap.UnBind( aHole ); - aInOutMap.Bind ( aHole, aSolid ); - } - } - else{ - aInOutMap.Bind (aHole, aSolid); - } - } - // - // add aHole to a solid - if (aInOutMap.IsBound( aHole )){ - TopoDS_Shape & aSolid=aInOutMap(aHole); - aBB.Add (aSolid, aHole); - } - } - theShellList.Clear(); - theShellList.Append( aNewSolids ); -} -//======================================================================= -//function : BreakWebs -//purpose : -//======================================================================= - void NMTAlgo_Tools::BreakWebs(const TopoDS_Shape& aCS, - TopoDS_Shape& aCSR) -{ - Standard_Integer i, aNbF, aNbS; - TopTools_IndexedDataMapOfShapeListOfShape aMFS; - TopTools_MapOfShape aMF; - - TopoDS_Compound aFC, aCR; - BRep_Builder aBB; - // - aBB.MakeCompound(aFC); - TopExp::MapShapesAndAncestors(aCS, TopAbs_FACE, TopAbs_SOLID, aMFS); - // - aNbF=aMFS.Extent(); - for (i=1; i<=aNbF; ++i) { - const TopoDS_Shape& aF=aMFS.FindKey(i); - const TopTools_ListOfShape& aLS=aMFS(i); - aNbS=aLS.Extent(); - if (aNbS==2) { - aMF.Add(aF); - } - else { - aBB.Add(aFC, aF); - } - } - // - if (!aMF.Extent()) { - aCSR=aCS; - return; - } - // - TopTools_ListOfShape aLNS; - TopTools_ListIteratorOfListOfShape aItS; - // - NMTAlgo_Tools::MakeShells(aFC, aLNS); - NMTAlgo_Tools::MakeSolids(aLNS); - // - aBB.MakeCompound(aCR); - aItS.Initialize(aLNS); - for ( ;aItS.More(); aItS.Next()) { - const TopoDS_Shape& aS=aItS.Value(); - aBB.Add(aCR, aS); - } - aCSR=aCR; -} -//======================================================================= -//function : FindImageSolid -//purpose : -//======================================================================= - Standard_Boolean NMTAlgo_Tools::FindImageSolid(const TopoDS_Shape& aFC, - const TopTools_IndexedMapOfShape& aMSo, - TopoDS_Shape& aSox) -{ - Standard_Boolean bFound=Standard_False; - Standard_Integer i, j, aNbSo, aNbF, aNbFSo; - TopoDS_Iterator aIt; - TopTools_IndexedMapOfShape aMFC, aMFSo; - // - aIt.Initialize(aFC); - for (; aIt.More(); aIt.Next()) { - const TopoDS_Shape& aF=aIt.Value(); - aMFC.Add(aF); - } - // - aNbF=aMFC.Extent(); - aNbSo=aMSo.Extent(); - for (i=1; i<=aNbSo; ++i) { - const TopoDS_Shape& aSo=aMSo(i); - // - bFound=Standard_True; - aMFSo.Clear(); - TopExp::MapShapes(aSo, TopAbs_FACE, aMFSo); - // - aNbFSo=aMFSo.Extent(); - if (aNbFSo!=aNbF) { - bFound=Standard_False; - continue; - } - // - for (j=1; j<=aNbFSo; ++j) { - const TopoDS_Shape& aFSo=aMFSo(j); - if (!aMFC.Contains(aFSo)) { - bFound=Standard_False; - break; - } - } - if (bFound) { - aSox=aSo; - return bFound; - } - } - return bFound; -} diff --git a/src/NMTAlgo/NMTAlgo_Tools.hxx b/src/NMTAlgo/NMTAlgo_Tools.hxx deleted file mode 100644 index 78e211eb0..000000000 --- a/src/NMTAlgo/NMTAlgo_Tools.hxx +++ /dev/null @@ -1,105 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. - -#ifndef _NMTAlgo_Tools_HeaderFile -#define _NMTAlgo_Tools_HeaderFile - -#ifndef _TopAbs_Orientation_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class TopoDS_Shell; -class TopoDS_Face; -class TopoDS_Edge; -class TopoDS_Shape; -class TopTools_ListOfShape; -class TopTools_IndexedMapOfShape; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class NMTAlgo_Tools { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT static void OrientFacesOnShell(const TopoDS_Shell& aShell,TopoDS_Shell& aShellNew) ; -Standard_EXPORT static void OrientFacesOnShell(const TopoDS_Face& aF,TopoDS_Shell& aSh) ; -Standard_EXPORT static TopAbs_Orientation Orientation(const TopoDS_Edge& aE,const TopoDS_Face& aF) ; -Standard_EXPORT static Standard_Integer Sense(const TopoDS_Face& aF1,const TopoDS_Face& aF2) ; -Standard_EXPORT static Standard_Boolean IsInside(const TopoDS_Shape& aS1,const TopoDS_Shape& aS2) ; -Standard_EXPORT static void MakeShells(const TopoDS_Shape& aFC,TopTools_ListOfShape& aLS) ; -Standard_EXPORT static void MakeSolids(TopTools_ListOfShape& aLS) ; -Standard_EXPORT static void MakeSolids(const TopoDS_Shape& aFC,TopTools_ListOfShape& aLS) ; -Standard_EXPORT static void BreakWebs(const TopoDS_Shape& aS1,TopoDS_Shape& aS2) ; -Standard_EXPORT static Standard_Boolean FindImageSolid(const TopoDS_Shape& aFC,const TopTools_IndexedMapOfShape& aMSo,TopoDS_Shape& aSo) ; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTAlgo/NMTAlgo_Tools.ixx b/src/NMTAlgo/NMTAlgo_Tools.ixx deleted file mode 100644 index 63e0dbaca..000000000 --- a/src/NMTAlgo/NMTAlgo_Tools.ixx +++ /dev/null @@ -1,19 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#include - - - - diff --git a/src/NMTAlgo/NMTAlgo_Tools.jxx b/src/NMTAlgo/NMTAlgo_Tools.jxx deleted file mode 100644 index ce06e1a68..000000000 --- a/src/NMTAlgo/NMTAlgo_Tools.jxx +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef _TopoDS_Shell_HeaderFile -#include -#endif -#ifndef _TopoDS_Face_HeaderFile -#include -#endif -#ifndef _TopoDS_Edge_HeaderFile -#include -#endif -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _TopTools_IndexedMapOfShape_HeaderFile -#include -#endif -#ifndef _NMTAlgo_Tools_HeaderFile -#include -#endif diff --git a/src/NMTDS/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx b/src/NMTDS/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx deleted file mode 100644 index b97122941..000000000 --- a/src/NMTDS/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx +++ /dev/null @@ -1,85 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. - -#ifndef _Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_HeaderFile -#define _Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger); - -class Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger) : public Handle(TCollection_MapNode) { - public: - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)():Handle(TCollection_MapNode)() {} - Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)(const Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)(const NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)& operator=(const Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)& operator=(const NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger* operator->() - { - return (NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger *)ControlAccess(); - } - - NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger* operator->() const - { - return (NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger *)ControlAccess(); - } - - Standard_EXPORT ~Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)(); - - Standard_EXPORT static const Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/NMTDS/Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx b/src/NMTDS/Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx deleted file mode 100644 index 7ea8762ea..000000000 --- a/src/NMTDS/Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx +++ /dev/null @@ -1,85 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. - -#ifndef _Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#define _Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors); - -class Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors) : public Handle(TCollection_MapNode) { - public: - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)():Handle(TCollection_MapNode)() {} - Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)(const Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)(const NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)& operator=(const Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)& operator=(const NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors* operator->() - { - return (NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors *)ControlAccess(); - } - - NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors* operator->() const - { - return (NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors *)ControlAccess(); - } - - Standard_EXPORT ~Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)(); - - Standard_EXPORT static const Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/NMTDS/Makefile.in b/src/NMTDS/Makefile.in deleted file mode 100644 index 7bba78233..000000000 --- a/src/NMTDS/Makefile.in +++ /dev/null @@ -1,72 +0,0 @@ -# GEOM NMTAlgo : partition algorithm -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.org -# -# -# -# File : Makefile.in -# Author : Julia DOROVSKIKH -# Module : GEOM -# $Header$ - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@ - - -@COMMENCE@ - -# Libraries targets -LIB = libNMTDS.la - -LIB_SRC = \ - NMTDS_CArray1OfIndexRange_0.cxx \ - NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_0.cxx \ - NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_0.cxx \ - NMTDS_IndexRange.cxx \ - NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx \ - NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx \ - NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx \ - NMTDS_ShapesDataStructure.cxx - -LIB_CLIENT_IDL = -LIB_SERVER_IDL = - -# header files -EXPORT_HEADERS = \ - NMTDS_ShapesDataStructure.hxx \ - NMTDS_PShapesDataStructure.hxx \ - NMTDS_CArray1OfIndexRange.hxx \ - NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx \ - Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx - -# idl files -EXPORT_IDLS= - - -CPPFLAGS += $(OCC_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome -CXXFLAGS += $(OCC_CXXFLAGS) -I${KERNEL_ROOT_DIR}/include/salome -LDFLAGS += $(CAS_LDPATH) -lTKBool -lTKBO -L${KERNEL_ROOT_DIR}/lib/salome - -%_moc.cxx: %.h - $(MOC) $< -o $@ - -@CONCLUDE@ diff --git a/src/NMTDS/NMTDS.cdl b/src/NMTDS/NMTDS.cdl deleted file mode 100644 index 19f4c097f..000000000 --- a/src/NMTDS/NMTDS.cdl +++ /dev/null @@ -1,39 +0,0 @@ --- File: NMTDS.cdl --- Created: Fri Nov 28 10:13:19 2003 --- Author: Peter KURNEV --- ----Copyright: Matra Datavision 2003 - - -package NMTDS - - ---Purpose: - -uses - - TCollection, - TColStd, - Bnd, - TopoDS, - TopAbs, - TopTools, - BooleanOperations, - BOPTColStd -is - class ShapesDataStructure; - class IndexRange; - - pointer PShapesDataStructure to ShapesDataStructure from NMTDS; - - class CArray1OfIndexRange instantiates - CArray1 from BOPTColStd(IndexRange from NMTDS); - - class ListOfIndexedDataMapOfShapeAncestorsSuccessors instantiates - List from TCollection(IndexedDataMapOfShapeAncestorsSuccessors from BooleanOperations); - - class IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger instantiates - IndexedDataMap from TCollection(Integer from Standard, - IndexedDataMapOfShapeInteger from BooleanOperations, - MapIntegerHasher from TColStd); - -end NMTDS; diff --git a/src/NMTDS/NMTDS_CArray1OfIndexRange.hxx b/src/NMTDS/NMTDS_CArray1OfIndexRange.hxx deleted file mode 100644 index ad5d74299..000000000 --- a/src/NMTDS/NMTDS_CArray1OfIndexRange.hxx +++ /dev/null @@ -1,132 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. - -#ifndef _NMTDS_CArray1OfIndexRange_HeaderFile -#define _NMTDS_CArray1OfIndexRange_HeaderFile - -#ifndef _Standard_Address_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_OutOfRange; -class Standard_OutOfMemory; -class NMTDS_IndexRange; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class NMTDS_CArray1OfIndexRange { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT NMTDS_CArray1OfIndexRange(const Standard_Integer Length = 0,const Standard_Integer BlockLength = 5); -Standard_EXPORT void Resize(const Standard_Integer theNewLength) ; -Standard_EXPORT void Destroy() ; -~NMTDS_CArray1OfIndexRange() -{ - Destroy(); -} - -Standard_EXPORT Standard_Integer Length() const; -Standard_EXPORT Standard_Integer Extent() const; -Standard_EXPORT Standard_Integer FactLength() const; -Standard_EXPORT Standard_Integer Append(const NMTDS_IndexRange& Value) ; -Standard_EXPORT void Remove(const Standard_Integer Index) ; -Standard_EXPORT const NMTDS_IndexRange& Value(const Standard_Integer Index) const; - const NMTDS_IndexRange& operator ()(const Standard_Integer Index) const -{ - return Value(Index); -} - -Standard_EXPORT NMTDS_IndexRange& ChangeValue(const Standard_Integer Index) ; - NMTDS_IndexRange& operator ()(const Standard_Integer Index) -{ - return ChangeValue(Index); -} - -Standard_EXPORT void SetBlockLength(const Standard_Integer aBL) ; -Standard_EXPORT Standard_Integer BlockLength() const; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // -Standard_EXPORT NMTDS_CArray1OfIndexRange(const NMTDS_CArray1OfIndexRange& AnArray); -Standard_EXPORT NMTDS_CArray1OfIndexRange& Assign(const NMTDS_CArray1OfIndexRange& Other) ; - NMTDS_CArray1OfIndexRange& operator =(const NMTDS_CArray1OfIndexRange& Other) -{ - return Assign(Other); -} - -Standard_EXPORT Standard_Boolean IsInvalidIndex(const Standard_Integer Index) const; - - - // Fields PRIVATE - // -Standard_Address myStart; -Standard_Integer myLength; -Standard_Integer myFactLength; -Standard_Integer myBlockLength; -Standard_Boolean myIsAllocated; - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTDS/NMTDS_CArray1OfIndexRange_0.cxx b/src/NMTDS/NMTDS_CArray1OfIndexRange_0.cxx deleted file mode 100644 index c6bf6ef6e..000000000 --- a/src/NMTDS/NMTDS_CArray1OfIndexRange_0.cxx +++ /dev/null @@ -1,33 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#include - -#ifndef _Standard_OutOfRange_HeaderFile -#include -#endif -#ifndef _Standard_OutOfMemory_HeaderFile -#include -#endif -#ifndef _NMTDS_IndexRange_HeaderFile -#include -#endif - - -#define Array1Item NMTDS_IndexRange -#define Array1Item_hxx -#define BOPTColStd_CArray1 NMTDS_CArray1OfIndexRange -#define BOPTColStd_CArray1_hxx -#include - diff --git a/src/NMTDS/NMTDS_IndexRange.cdl b/src/NMTDS/NMTDS_IndexRange.cdl deleted file mode 100644 index 6ffa3b86b..000000000 --- a/src/NMTDS/NMTDS_IndexRange.cdl +++ /dev/null @@ -1,39 +0,0 @@ --- File: NMTDS_IndexRange.cdl --- Created: Fri Nov 28 10:31:05 2003 --- Author: Peter KURNEV --- ----Copyright: Matra Datavision 2003 - - -class IndexRange from NMTDS - - ---Purpose: - ---uses ---raises - -is - Create - returns IndexRange from NMTDS; - - SetFirst(me:out; - aFirst:Integer from Standard); - - SetLast(me:out; - aLast:Integer from Standard); - - First(me) - returns Integer from Standard; - - Last(me) - returns Integer from Standard; - - IsInRange(me; - aIndex:Integer from Standard) - returns Boolean from Standard; - -fields - myFirst : Integer from Standard is protected; - myLast : Integer from Standard is protected; - -end IndexRange; diff --git a/src/NMTDS/NMTDS_IndexRange.cxx b/src/NMTDS/NMTDS_IndexRange.cxx deleted file mode 100644 index fc406ac30..000000000 --- a/src/NMTDS/NMTDS_IndexRange.cxx +++ /dev/null @@ -1,57 +0,0 @@ -// File: NMTDS_IndexRange.cxx -// Created: Fri Nov 28 10:34:59 2003 -// Author: Peter KURNEV -// - - -#include -//======================================================================= -//function :NMTDS_IndexRange::NMTDS_IndexRange -//purpose : -//======================================================================= - NMTDS_IndexRange::NMTDS_IndexRange() -: - myFirst(0), - myLast(0) -{ -} -//======================================================================= -//function :SetFirst -//purpose : -//======================================================================= - void NMTDS_IndexRange::SetFirst(const Standard_Integer aFirst) -{ - myFirst=aFirst; -} -//======================================================================= -//function :First -//purpose : -//======================================================================= - Standard_Integer NMTDS_IndexRange::First()const -{ - return myFirst; -} -//======================================================================= -//function :SetLast -//purpose : -//======================================================================= - void NMTDS_IndexRange::SetLast(const Standard_Integer aLast) -{ - myLast=aLast; -} -//======================================================================= -//function :Last -//purpose : -//======================================================================= - Standard_Integer NMTDS_IndexRange::Last()const -{ - return myLast; -} -//======================================================================= -//function :IsInRange -//purpose : -//======================================================================= - Standard_Boolean NMTDS_IndexRange::IsInRange(const Standard_Integer aIndex)const -{ - return (Standard_Boolean)(aIndex>=myFirst && aIndex<=myLast); -} diff --git a/src/NMTDS/NMTDS_IndexRange.hxx b/src/NMTDS/NMTDS_IndexRange.hxx deleted file mode 100644 index 76984233d..000000000 --- a/src/NMTDS/NMTDS_IndexRange.hxx +++ /dev/null @@ -1,94 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. - -#ifndef _NMTDS_IndexRange_HeaderFile -#define _NMTDS_IndexRange_HeaderFile - -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class NMTDS_IndexRange { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT NMTDS_IndexRange(); -Standard_EXPORT void SetFirst(const Standard_Integer aFirst) ; -Standard_EXPORT void SetLast(const Standard_Integer aLast) ; -Standard_EXPORT Standard_Integer First() const; -Standard_EXPORT Standard_Integer Last() const; -Standard_EXPORT Standard_Boolean IsInRange(const Standard_Integer aIndex) const; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // -Standard_Integer myFirst; -Standard_Integer myLast; - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTDS/NMTDS_IndexRange.ixx b/src/NMTDS/NMTDS_IndexRange.ixx deleted file mode 100644 index 0f8218223..000000000 --- a/src/NMTDS/NMTDS_IndexRange.ixx +++ /dev/null @@ -1,19 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#include - - - - diff --git a/src/NMTDS/NMTDS_IndexRange.jxx b/src/NMTDS/NMTDS_IndexRange.jxx deleted file mode 100644 index 6c8407321..000000000 --- a/src/NMTDS/NMTDS_IndexRange.jxx +++ /dev/null @@ -1,3 +0,0 @@ -#ifndef _NMTDS_IndexRange_HeaderFile -#include -#endif diff --git a/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx b/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx deleted file mode 100644 index 18d90fc36..000000000 --- a/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx +++ /dev/null @@ -1,136 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#ifndef _NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_HeaderFile -#define _NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_HeaderFile -#include -#endif - -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _BooleanOperations_IndexedDataMapOfShapeInteger_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -class BooleanOperations_IndexedDataMapOfShapeInteger; -class TColStd_MapIntegerHasher; -class NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger; - - -class NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger : public TCollection_MapNode { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger(const Standard_Integer& K1,const Standard_Integer K2,const BooleanOperations_IndexedDataMapOfShapeInteger& I,const TCollection_MapNodePtr& n1,const TCollection_MapNodePtr& n2); - Standard_Integer& Key1() const; - Standard_Integer& Key2() const; - TCollection_MapNodePtr& Next2() const; - BooleanOperations_IndexedDataMapOfShapeInteger& Value() const; -Standard_EXPORT ~NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger(); - - - - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -Standard_Integer myKey1; -Standard_Integer myKey2; -BooleanOperations_IndexedDataMapOfShapeInteger myValue; -TCollection_MapNodePtr myNext2; - - -}; - -#define TheKey Standard_Integer -#define TheKey_hxx -#define TheItem BooleanOperations_IndexedDataMapOfShapeInteger -#define TheItem_hxx -#define Hasher TColStd_MapIntegerHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger -#define TCollection_IndexedDataMapNode_Type_() NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_Type_() -#define TCollection_IndexedDataMap NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger -#define TCollection_IndexedDataMap_hxx - -#include - -#undef TheKey -#undef TheKey_hxx -#undef TheItem -#undef TheItem_hxx -#undef Hasher -#undef Hasher_hxx -#undef TCollection_IndexedDataMapNode -#undef TCollection_IndexedDataMapNode_hxx -#undef Handle_TCollection_IndexedDataMapNode -#undef TCollection_IndexedDataMapNode_Type_ -#undef TCollection_IndexedDataMap -#undef TCollection_IndexedDataMap_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_0.cxx b/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_0.cxx deleted file mode 100644 index a69179f00..000000000 --- a/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_0.cxx +++ /dev/null @@ -1,93 +0,0 @@ -// File generated by CPPExt (Transient) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _BooleanOperations_IndexedDataMapOfShapeInteger_HeaderFile -#include -#endif -#ifndef _TColStd_MapIntegerHasher_HeaderFile -#include -#endif -#ifndef _NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_HeaderFile -#include -#endif -NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger::~NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger() {} - - - -Standard_EXPORT Handle_Standard_Type& NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger", - sizeof(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger) Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger))) { - _anOtherObject = Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)((Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger::DynamicType() const -{ - return STANDARD_TYPE(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger) ; -} -Standard_Boolean NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger) == AType || TCollection_MapNode::IsKind(AType)); -} -Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger::~Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger() {} -#define TheKey Standard_Integer -#define TheKey_hxx -#define TheItem BooleanOperations_IndexedDataMapOfShapeInteger -#define TheItem_hxx -#define Hasher TColStd_MapIntegerHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger -#define TCollection_IndexedDataMapNode_Type_() NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_Type_() -#define TCollection_IndexedDataMap NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger -#define TCollection_IndexedDataMap_hxx -#include - diff --git a/src/NMTDS/NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx b/src/NMTDS/NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx deleted file mode 100644 index 94e036470..000000000 --- a/src/NMTDS/NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx +++ /dev/null @@ -1,133 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. - -#ifndef _NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_HeaderFile -#define _NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_HeaderFile - -#ifndef _TCollection_BasicMap_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_DomainError; -class Standard_OutOfRange; -class Standard_NoSuchObject; -class BooleanOperations_IndexedDataMapOfShapeInteger; -class TColStd_MapIntegerHasher; -class NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger : public TCollection_BasicMap { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger(const Standard_Integer NbBuckets = 1); -Standard_EXPORT NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger& Assign(const NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger& Other) ; - NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger& operator =(const NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger& Other) -{ - return Assign(Other); -} - -Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; -Standard_EXPORT void Clear() ; -~NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger() -{ - Clear(); -} - -Standard_EXPORT Standard_Integer Add(const Standard_Integer& K,const BooleanOperations_IndexedDataMapOfShapeInteger& I) ; -Standard_EXPORT void Substitute(const Standard_Integer I,const Standard_Integer& K,const BooleanOperations_IndexedDataMapOfShapeInteger& T) ; -Standard_EXPORT void RemoveLast() ; -Standard_EXPORT Standard_Boolean Contains(const Standard_Integer& K) const; -Standard_EXPORT const Standard_Integer& FindKey(const Standard_Integer I) const; -Standard_EXPORT const BooleanOperations_IndexedDataMapOfShapeInteger& FindFromIndex(const Standard_Integer I) const; - const BooleanOperations_IndexedDataMapOfShapeInteger& operator ()(const Standard_Integer I) const -{ - return FindFromIndex(I); -} - -Standard_EXPORT BooleanOperations_IndexedDataMapOfShapeInteger& ChangeFromIndex(const Standard_Integer I) ; - BooleanOperations_IndexedDataMapOfShapeInteger& operator ()(const Standard_Integer I) -{ - return ChangeFromIndex(I); -} - -Standard_EXPORT Standard_Integer FindIndex(const Standard_Integer& K) const; -Standard_EXPORT const BooleanOperations_IndexedDataMapOfShapeInteger& FindFromKey(const Standard_Integer& K) const; -Standard_EXPORT BooleanOperations_IndexedDataMapOfShapeInteger& ChangeFromKey(const Standard_Integer& K) ; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // -Standard_EXPORT NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger(const NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger& Other); - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTDS/NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_0.cxx b/src/NMTDS/NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_0.cxx deleted file mode 100644 index f3a1280e0..000000000 --- a/src/NMTDS/NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_0.cxx +++ /dev/null @@ -1,50 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#include - -#ifndef _Standard_DomainError_HeaderFile -#include -#endif -#ifndef _Standard_OutOfRange_HeaderFile -#include -#endif -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _BooleanOperations_IndexedDataMapOfShapeInteger_HeaderFile -#include -#endif -#ifndef _TColStd_MapIntegerHasher_HeaderFile -#include -#endif -#ifndef _NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_HeaderFile -#include -#endif - - -#define TheKey Standard_Integer -#define TheKey_hxx -#define TheItem BooleanOperations_IndexedDataMapOfShapeInteger -#define TheItem_hxx -#define Hasher TColStd_MapIntegerHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger -#define TCollection_IndexedDataMapNode_Type_() NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_Type_() -#define TCollection_IndexedDataMap NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger -#define TCollection_IndexedDataMap_hxx -#include - diff --git a/src/NMTDS/NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx b/src/NMTDS/NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx deleted file mode 100644 index 9994af005..000000000 --- a/src/NMTDS/NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx +++ /dev/null @@ -1,124 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. - -#ifndef _NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#define _NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile - -#ifndef _Standard_Address_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_NoMoreObject; -class Standard_NoSuchObject; -class NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors; -class BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors; -class NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors(); -Standard_EXPORT NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors(const NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors& L); -Standard_EXPORT void Initialize(const NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors& L) ; - Standard_Boolean More() const; -Standard_EXPORT void Next() ; -Standard_EXPORT BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& Value() const; - - -friend class NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors; - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -Standard_Address current; -Standard_Address previous; - - -}; - -#define Item BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors -#define Item_hxx -#define TCollection_ListNode NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_Type_() -#define TCollection_List NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_List_hxx - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTDS/NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx b/src/NMTDS/NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx deleted file mode 100644 index bca4ea7df..000000000 --- a/src/NMTDS/NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx +++ /dev/null @@ -1,45 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#include - -#ifndef _Standard_NoMoreObject_HeaderFile -#include -#endif -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#include -#endif -#ifndef _BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#include -#endif -#ifndef _NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#include -#endif - - -#define Item BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors -#define Item_hxx -#define TCollection_ListNode NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_Type_() -#define TCollection_List NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_List_hxx -#include - diff --git a/src/NMTDS/NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx b/src/NMTDS/NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx deleted file mode 100644 index 5de01f304..000000000 --- a/src/NMTDS/NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx +++ /dev/null @@ -1,123 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#ifndef _NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#define _NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#include -#endif - -#ifndef _BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -class BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors; -class NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors; -class NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors; - - -class NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors : public TCollection_MapNode { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors(const BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& I,const TCollection_MapNodePtr& n); - BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& Value() const; -Standard_EXPORT ~NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors(); - - - - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors myValue; - - -}; - -#define Item BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors -#define Item_hxx -#define TCollection_ListNode NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_Type_() -#define TCollection_List NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_List_hxx - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTDS/NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx b/src/NMTDS/NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx deleted file mode 100644 index f7566ef5f..000000000 --- a/src/NMTDS/NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx +++ /dev/null @@ -1,91 +0,0 @@ -// File generated by CPPExt (Transient) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#include -#endif -#ifndef _NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#include -#endif -#ifndef _NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#include -#endif -NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors::~NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors() {} - - - -Standard_EXPORT Handle_Standard_Type& NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors", - sizeof(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors) Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors))) { - _anOtherObject = Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)((Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors::DynamicType() const -{ - return STANDARD_TYPE(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors) ; -} -Standard_Boolean NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors) == AType || TCollection_MapNode::IsKind(AType)); -} -Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors::~Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors() {} -#define Item BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors -#define Item_hxx -#define TCollection_ListNode NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_Type_() -#define TCollection_List NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_List_hxx -#include - diff --git a/src/NMTDS/NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx b/src/NMTDS/NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx deleted file mode 100644 index 600531c53..000000000 --- a/src/NMTDS/NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx +++ /dev/null @@ -1,150 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. - -#ifndef _NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#define _NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile - -#ifndef _Standard_Address_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_NoSuchObject; -class NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors; -class BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors; -class NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors(); -Standard_EXPORT void Assign(const NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors& Other) ; - void operator=(const NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors& Other) -{ - Assign(Other); -} - -Standard_EXPORT Standard_Integer Extent() const; -Standard_EXPORT void Clear() ; -~NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors() -{ - Clear(); -} - - Standard_Boolean IsEmpty() const; -Standard_EXPORT void Prepend(const BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& I) ; -Standard_EXPORT void Prepend(const BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& I,NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors& theIt) ; -Standard_EXPORT void Prepend(NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors& Other) ; -Standard_EXPORT void Append(const BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& I) ; -Standard_EXPORT void Append(const BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& I,NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors& theIt) ; -Standard_EXPORT void Append(NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors& Other) ; -Standard_EXPORT BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& First() const; -Standard_EXPORT BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& Last() const; -Standard_EXPORT void RemoveFirst() ; -Standard_EXPORT void Remove(NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors& It) ; -Standard_EXPORT void InsertBefore(const BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& I,NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors& It) ; -Standard_EXPORT void InsertBefore(NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors& Other,NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors& It) ; -Standard_EXPORT void InsertAfter(const BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& I,NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors& It) ; -Standard_EXPORT void InsertAfter(NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors& Other,NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors& It) ; - - -friend class NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors; - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // -Standard_EXPORT NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors(const NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors& Other); - - - // Fields PRIVATE - // -Standard_Address myFirst; -Standard_Address myLast; - - -}; - -#define Item BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors -#define Item_hxx -#define TCollection_ListNode NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_Type_() -#define TCollection_List NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_List_hxx - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTDS/NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx b/src/NMTDS/NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx deleted file mode 100644 index f4bdab6ef..000000000 --- a/src/NMTDS/NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx +++ /dev/null @@ -1,42 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#include - -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#include -#endif -#ifndef _BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#include -#endif -#ifndef _NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#include -#endif - - -#define Item BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors -#define Item_hxx -#define TCollection_ListNode NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_Type_() -#define TCollection_List NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_List_hxx -#include - diff --git a/src/NMTDS/NMTDS_PShapesDataStructure.hxx b/src/NMTDS/NMTDS_PShapesDataStructure.hxx deleted file mode 100644 index 11b37cb09..000000000 --- a/src/NMTDS/NMTDS_PShapesDataStructure.hxx +++ /dev/null @@ -1,22 +0,0 @@ -// File generated by CPPExt (Pointer) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#ifndef _NMTDS_PShapesDataStructure_HeaderFile -#define _NMTDS_PShapesDataStructure_HeaderFile - -class NMTDS_ShapesDataStructure; - -typedef NMTDS_ShapesDataStructure* NMTDS_PShapesDataStructure; - -#endif diff --git a/src/NMTDS/NMTDS_ShapesDataStructure.cdl b/src/NMTDS/NMTDS_ShapesDataStructure.cdl deleted file mode 100644 index 23391971c..000000000 --- a/src/NMTDS/NMTDS_ShapesDataStructure.cdl +++ /dev/null @@ -1,56 +0,0 @@ --- File: NMTDS_ShapesDataStructure.cdl --- Created: Mon Dec 1 10:17:05 2003 --- Author: Peter KURNEV --- ----Copyright: Matra Datavision 2003 - - -class ShapesDataStructure from NMTDS - inherits ShapesDataStructure from BooleanOperations - - ---Purpose: - -uses - Shape from TopoDS, - CArray1OfIndexRange from NMTDS, - IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger from NMTDS ---raises - -is - Create - returns ShapesDataStructure from NMTDS; - - SetCompositeShape(me:out; - aS:Shape from TopoDS); - - Init(me:out); - - Ranges(me) - returns CArray1OfIndexRange from NMTDS; - ---C++: return const & - - CompositeShape(me) - returns Shape from TopoDS; - ---C++: return const & - - ShapeRangeIndex(me; - aId:Integer from Standard) - returns Integer from Standard; - - Rank (me; - anIndex:Integer from Standard) - returns Integer from Standard - is redefined; - - ShapeIndex (me; - aS:Shape from TopoDS; - iRank:Integer from Standard) - returns Integer from Standard - is redefined; -fields - myCompositeShape: Shape from TopoDS is protected; - myRanges : CArray1OfIndexRange from NMTDS is protected; - myShapeIndexMap : IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger from NMTDS is protected; - -end ShapesDataStructure; - diff --git a/src/NMTDS/NMTDS_ShapesDataStructure.cxx b/src/NMTDS/NMTDS_ShapesDataStructure.cxx deleted file mode 100644 index 6388a1655..000000000 --- a/src/NMTDS/NMTDS_ShapesDataStructure.cxx +++ /dev/null @@ -1,226 +0,0 @@ -// File: NMTDS_ShapesDataStructure.cxx -// Created: Mon Dec 1 10:21:04 2003 -// Author: Peter KURNEV -// - - -#include -#include -#include -#include -#include -#include -#include -#include - -//=========================================================================== -//function : NMTDS_ShapesDataStructure::NMTDS_ShapesDataStructure -//purpose : -//=========================================================================== - NMTDS_ShapesDataStructure::NMTDS_ShapesDataStructure() -: - BooleanOperations_ShapesDataStructure() -{} -//=========================================================================== -//function : SetCompositeShape -//purpose : -//=========================================================================== - void NMTDS_ShapesDataStructure::SetCompositeShape(const TopoDS_Shape& aS) -{ - myCompositeShape=aS; -} -//=========================================================================== -//function : CompositeShape -//purpose : -//=========================================================================== - const TopoDS_Shape& NMTDS_ShapesDataStructure::CompositeShape()const -{ - return myCompositeShape; -} -//=========================================================================== -//function : Ranges -//purpose : -//=========================================================================== - const NMTDS_CArray1OfIndexRange& NMTDS_ShapesDataStructure::Ranges()const -{ - return myRanges; -} -//=========================================================================== -//function : Init -//purpose : -//=========================================================================== - void NMTDS_ShapesDataStructure::Init() -{ - Standard_Integer i, j, aNbSx, aNbS, aShift, aNbRanges; - Standard_Integer iFirst, iLast; - NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors aLx; - NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors aLit; - TopoDS_Iterator anIt; - // - aNbS=0; - anIt.Initialize(myCompositeShape); - for (i=0; anIt.More(); anIt.Next(), ++i) { - const TopoDS_Shape& aSx=anIt.Value(); - BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors aIndDatMapShape; - FillIndexedMapOfShapesAncestorsAndSuccessors(aSx, aIndDatMapShape); - aNbSx=aIndDatMapShape.Extent(); - aNbS+=aNbSx; - aLx.Append(aIndDatMapShape); - } - // - // Fill myRanges - myRanges.Resize(i); - aLit.Initialize(aLx); - for (i=1; aLit.More(); aLit.Next(), ++i) { - const BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aM=aLit.Value(); - aNbSx=aM.Extent(); - if (i==1) { - iFirst=1; - iLast=aNbSx; - myRanges(i).SetFirst(iFirst); - myRanges(i).SetLast(iLast); - continue; - } - iFirst=myRanges(i-1).Last()+1; - iLast=iFirst+aNbSx-1; - myRanges(i).SetFirst(iFirst); - myRanges(i).SetLast(iLast); - } - // - myNumberOfShapesOfTheObject=aNbS; - myNumberOfShapesOfTheTool=aNbS; - myLength=3*aNbS; - // - // Allocate the whole Table - myListOfShapeAndInterferences = (BooleanOperations_PShapeAndInterferences) - Standard::Allocate(myLength*sizeof(BooleanOperations_ShapeAndInterferences)); - // - // Fill the table - for (i=0; i<2; ++i) { - aShift=0; - if (i) { - aShift=myNumberOfShapesOfTheObject; - } - aLit.Initialize(aLx); - for (; aLit.More(); aLit.Next()) { - const BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aM=aLit.Value(); - aNbSx=aM.Extent(); - for (j=1; j<=aNbSx; ++j) { - const TopoDS_Shape& aSx=aM.FindKey(j); - const BooleanOperations_AncestorsSeqAndSuccessorsSeq& aASx=aM.FindFromIndex(j); - InsertShapeAndAncestorsSuccessors(aSx, aASx, aShift); - } - aShift+=aNbSx; - } - } - // - // myShapeIndexMap - myShapeIndexMap.Clear(); - // - aNbRanges=myRanges.Extent(); - for (i=1; i<=aNbRanges; ++i){ - BooleanOperations_IndexedDataMapOfShapeInteger aSIM; - // - const NMTDS_IndexRange& aR=myRanges(i); - iFirst=aR.First(); - iLast =aR.Last(); - for (j=iFirst; j<=iLast; ++j) { - const TopoDS_Shape& aS=GetShape(j); - aSIM.Add(aS, j); - } - myShapeIndexMap.Add(i, aSIM); - } - // - // myRefEdges - iLast=myNumberOfShapesOfTheObject+myNumberOfShapesOfTheTool; - myRefEdges.Resize(iLast); - - for (i=1; i<=iLast; ++i) { - const TopoDS_Shape& aS=Shape(i); - myRefEdges(i)=0; - if (aS.ShapeType()==TopAbs_EDGE) { - myNbEdges++; - myRefEdges(i)=myNbEdges; - } - } -} -//=========================================================================== -//function : ShapeRangeIndex -//purpose : -//=========================================================================== - Standard_Integer NMTDS_ShapesDataStructure::ShapeRangeIndex(const Standard_Integer aId)const -{ - Standard_Boolean bFound; - Standard_Integer i, aNbR, aIdx, aNbS, aZero=0; - // - aNbS=myNumberOfShapesOfTheObject+myNumberOfShapesOfTheTool; - - aIdx=aId; - if (aIdx > aNbS || aIdx < 1){ - return aZero; - } - // - if (aIdx > myNumberOfShapesOfTheObject) { - aIdx-=myNumberOfShapesOfTheObject; - } - // - aNbR=myRanges.Extent(); - for (i=1; i<=aNbR; ++i) { - const NMTDS_IndexRange& aRange=myRanges(i); - bFound=aRange.IsInRange(aIdx); - if (bFound) { - return i; - } - } - return aZero; -} -//=========================================================================== -//function : Rank -//purpose : -//=========================================================================== - Standard_Integer NMTDS_ShapesDataStructure::Rank(const Standard_Integer aId)const -{ - Standard_Boolean bFound; - Standard_Integer i, aNbR, aNbS, aZero=0; - // - aNbS=myNumberOfShapesOfTheObject; - - if (aId > aNbS || aId < 1){ - return aZero; - } - // - aNbR=myRanges.Extent(); - for (i=1; i<=aNbR; ++i) { - const NMTDS_IndexRange& aRange=myRanges(i); - bFound=aRange.IsInRange(aId); - if (bFound) { - return i; - } - } - return aZero; -} -//=========================================================================== -//function : ShapeIndex -//purpose : -//=========================================================================== - Standard_Integer NMTDS_ShapesDataStructure::ShapeIndex(const TopoDS_Shape& aS, - const Standard_Integer aRank)const -{ - Standard_Boolean bFound; - Standard_Integer aIndex=0; - // - bFound=myShapeIndexMap.Contains(aRank); - if (!bFound) { - return aIndex; - } - // - const BooleanOperations_IndexedDataMapOfShapeInteger& aSIM=myShapeIndexMap.FindFromKey(aRank); - // - bFound=aSIM.Contains(aS); - if (!bFound) { - return aIndex; - } - // - aIndex=aSIM.FindFromKey(aS); - return aIndex; -} diff --git a/src/NMTDS/NMTDS_ShapesDataStructure.hxx b/src/NMTDS/NMTDS_ShapesDataStructure.hxx deleted file mode 100644 index 167ccc337..000000000 --- a/src/NMTDS/NMTDS_ShapesDataStructure.hxx +++ /dev/null @@ -1,108 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. - -#ifndef _NMTDS_ShapesDataStructure_HeaderFile -#define _NMTDS_ShapesDataStructure_HeaderFile - -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _NMTDS_CArray1OfIndexRange_HeaderFile -#include -#endif -#ifndef _NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_HeaderFile -#include -#endif -#ifndef _BooleanOperations_ShapesDataStructure_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -class TopoDS_Shape; -class NMTDS_CArray1OfIndexRange; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class NMTDS_ShapesDataStructure : public BooleanOperations_ShapesDataStructure { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT NMTDS_ShapesDataStructure(); -Standard_EXPORT void SetCompositeShape(const TopoDS_Shape& aS) ; -Standard_EXPORT void Init() ; -Standard_EXPORT const NMTDS_CArray1OfIndexRange& Ranges() const; -Standard_EXPORT const TopoDS_Shape& CompositeShape() const; -Standard_EXPORT Standard_Integer ShapeRangeIndex(const Standard_Integer aId) const; -Standard_EXPORT virtual Standard_Integer Rank(const Standard_Integer anIndex) const; -Standard_EXPORT virtual Standard_Integer ShapeIndex(const TopoDS_Shape& aS,const Standard_Integer iRank) const; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // -TopoDS_Shape myCompositeShape; -NMTDS_CArray1OfIndexRange myRanges; -NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger myShapeIndexMap; - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTDS/NMTDS_ShapesDataStructure.ixx b/src/NMTDS/NMTDS_ShapesDataStructure.ixx deleted file mode 100644 index 755a41624..000000000 --- a/src/NMTDS/NMTDS_ShapesDataStructure.ixx +++ /dev/null @@ -1,19 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#include - - - - diff --git a/src/NMTDS/NMTDS_ShapesDataStructure.jxx b/src/NMTDS/NMTDS_ShapesDataStructure.jxx deleted file mode 100644 index fc29ab68f..000000000 --- a/src/NMTDS/NMTDS_ShapesDataStructure.jxx +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _NMTDS_CArray1OfIndexRange_HeaderFile -#include -#endif -#ifndef _NMTDS_ShapesDataStructure_HeaderFile -#include -#endif diff --git a/src/NMTTools/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx b/src/NMTTools/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx deleted file mode 100644 index b97122941..000000000 --- a/src/NMTTools/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx +++ /dev/null @@ -1,85 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. - -#ifndef _Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_HeaderFile -#define _Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger); - -class Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger) : public Handle(TCollection_MapNode) { - public: - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)():Handle(TCollection_MapNode)() {} - Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)(const Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)(const NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)& operator=(const Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)& operator=(const NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger* operator->() - { - return (NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger *)ControlAccess(); - } - - NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger* operator->() const - { - return (NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger *)ControlAccess(); - } - - Standard_EXPORT ~Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)(); - - Standard_EXPORT static const Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/NMTTools/Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx b/src/NMTTools/Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx deleted file mode 100644 index 7ea8762ea..000000000 --- a/src/NMTTools/Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx +++ /dev/null @@ -1,85 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. - -#ifndef _Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#define _Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors); - -class Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors) : public Handle(TCollection_MapNode) { - public: - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)():Handle(TCollection_MapNode)() {} - Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)(const Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)(const NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)& operator=(const Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)& operator=(const NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors* operator->() - { - return (NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors *)ControlAccess(); - } - - NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors* operator->() const - { - return (NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors *)ControlAccess(); - } - - Standard_EXPORT ~Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)(); - - Standard_EXPORT static const Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger.hxx b/src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger.hxx deleted file mode 100644 index 17949ac4a..000000000 --- a/src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger.hxx +++ /dev/null @@ -1,85 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. - -#ifndef _Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_HeaderFile -#define _Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger); - -class Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger) : public Handle(TCollection_MapNode) { - public: - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger)():Handle(TCollection_MapNode)() {} - Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger)(const Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger)(const NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger)& operator=(const Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger)& operator=(const NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger* operator->() - { - return (NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger *)ControlAccess(); - } - - NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger* operator->() const - { - return (NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger *)ControlAccess(); - } - - Standard_EXPORT ~Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger)(); - - Standard_EXPORT static const Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape.hxx b/src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape.hxx deleted file mode 100644 index cbcf4a002..000000000 --- a/src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape.hxx +++ /dev/null @@ -1,85 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. - -#ifndef _Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_HeaderFile -#define _Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape); - -class Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape) : public Handle(TCollection_MapNode) { - public: - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape)():Handle(TCollection_MapNode)() {} - Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape)(const Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape)(const NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape)& operator=(const Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape)& operator=(const NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape* operator->() - { - return (NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape *)ControlAccess(); - } - - NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape* operator->() const - { - return (NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape *)ControlAccess(); - } - - Standard_EXPORT ~Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape)(); - - Standard_EXPORT static const Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock.hxx b/src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock.hxx deleted file mode 100644 index 8dfb499b2..000000000 --- a/src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock.hxx +++ /dev/null @@ -1,85 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. - -#ifndef _Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_HeaderFile -#define _Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock); - -class Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock) : public Handle(TCollection_MapNode) { - public: - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock)():Handle(TCollection_MapNode)() {} - Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock)(const Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock)(const NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock)& operator=(const Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock)& operator=(const NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock* operator->() - { - return (NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock *)ControlAccess(); - } - - NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock* operator->() const - { - return (NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock *)ControlAccess(); - } - - Standard_EXPORT ~Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock)(); - - Standard_EXPORT static const Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/NMTTools/Handle_NMTTools_ListNodeOfListOfCommonBlock.hxx b/src/NMTTools/Handle_NMTTools_ListNodeOfListOfCommonBlock.hxx deleted file mode 100644 index a77311063..000000000 --- a/src/NMTTools/Handle_NMTTools_ListNodeOfListOfCommonBlock.hxx +++ /dev/null @@ -1,85 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. - -#ifndef _Handle_NMTTools_ListNodeOfListOfCommonBlock_HeaderFile -#define _Handle_NMTTools_ListNodeOfListOfCommonBlock_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class NMTTools_ListNodeOfListOfCommonBlock; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTTools_ListNodeOfListOfCommonBlock); - -class Handle(NMTTools_ListNodeOfListOfCommonBlock) : public Handle(TCollection_MapNode) { - public: - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - Handle(NMTTools_ListNodeOfListOfCommonBlock)():Handle(TCollection_MapNode)() {} - Handle(NMTTools_ListNodeOfListOfCommonBlock)(const Handle(NMTTools_ListNodeOfListOfCommonBlock)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(NMTTools_ListNodeOfListOfCommonBlock)(const NMTTools_ListNodeOfListOfCommonBlock* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(NMTTools_ListNodeOfListOfCommonBlock)& operator=(const Handle(NMTTools_ListNodeOfListOfCommonBlock)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(NMTTools_ListNodeOfListOfCommonBlock)& operator=(const NMTTools_ListNodeOfListOfCommonBlock* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - NMTTools_ListNodeOfListOfCommonBlock* operator->() - { - return (NMTTools_ListNodeOfListOfCommonBlock *)ControlAccess(); - } - - NMTTools_ListNodeOfListOfCommonBlock* operator->() const - { - return (NMTTools_ListNodeOfListOfCommonBlock *)ControlAccess(); - } - - Standard_EXPORT ~Handle(NMTTools_ListNodeOfListOfCommonBlock)(); - - Standard_EXPORT static const Handle(NMTTools_ListNodeOfListOfCommonBlock) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/NMTTools/Handle_NMTTools_ListNodeOfListOfCoupleOfShape.hxx b/src/NMTTools/Handle_NMTTools_ListNodeOfListOfCoupleOfShape.hxx deleted file mode 100644 index 66f885016..000000000 --- a/src/NMTTools/Handle_NMTTools_ListNodeOfListOfCoupleOfShape.hxx +++ /dev/null @@ -1,85 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. - -#ifndef _Handle_NMTTools_ListNodeOfListOfCoupleOfShape_HeaderFile -#define _Handle_NMTTools_ListNodeOfListOfCoupleOfShape_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class NMTTools_ListNodeOfListOfCoupleOfShape; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTTools_ListNodeOfListOfCoupleOfShape); - -class Handle(NMTTools_ListNodeOfListOfCoupleOfShape) : public Handle(TCollection_MapNode) { - public: - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - Handle(NMTTools_ListNodeOfListOfCoupleOfShape)():Handle(TCollection_MapNode)() {} - Handle(NMTTools_ListNodeOfListOfCoupleOfShape)(const Handle(NMTTools_ListNodeOfListOfCoupleOfShape)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(NMTTools_ListNodeOfListOfCoupleOfShape)(const NMTTools_ListNodeOfListOfCoupleOfShape* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(NMTTools_ListNodeOfListOfCoupleOfShape)& operator=(const Handle(NMTTools_ListNodeOfListOfCoupleOfShape)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(NMTTools_ListNodeOfListOfCoupleOfShape)& operator=(const NMTTools_ListNodeOfListOfCoupleOfShape* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - NMTTools_ListNodeOfListOfCoupleOfShape* operator->() - { - return (NMTTools_ListNodeOfListOfCoupleOfShape *)ControlAccess(); - } - - NMTTools_ListNodeOfListOfCoupleOfShape* operator->() const - { - return (NMTTools_ListNodeOfListOfCoupleOfShape *)ControlAccess(); - } - - Standard_EXPORT ~Handle(NMTTools_ListNodeOfListOfCoupleOfShape)(); - - Standard_EXPORT static const Handle(NMTTools_ListNodeOfListOfCoupleOfShape) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/NMTTools/Makefile.in b/src/NMTTools/Makefile.in deleted file mode 100644 index 9d5cbe8c2..000000000 --- a/src/NMTTools/Makefile.in +++ /dev/null @@ -1,103 +0,0 @@ -# GEOM NMTTools : partition algorithm -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.org -# -# -# -# File : Makefile.in -# Author : Julia DOROVSKIKH -# Module : GEOM -# $Header$ - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@ - - -@COMMENCE@ - -# Libraries targets -LIB = libNMTTools.la -LIB_SRC = \ - NMTTools_CommonBlock.cxx \ - NMTTools_CommonBlockAPI.cxx \ - NMTTools_CommonBlockPool_0.cxx \ - NMTTools_CoupleOfShape.cxx \ - NMTTools_DEProcessor.cxx \ - NMTTools_DSFiller.cxx \ - NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_0.cxx \ - NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_0.cxx \ - NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_0.cxx \ - NMTTools_IndexedDataMapOfIndexedMapOfInteger_0.cxx \ - NMTTools_IndexedDataMapOfShapeIndexedMapOfShape_0.cxx \ - NMTTools_IndexedDataMapOfShapePaveBlock_0.cxx \ - NMTTools_IteratorOfCoupleOfShape.cxx \ - NMTTools_ListIteratorOfListOfCommonBlock_0.cxx \ - NMTTools_ListIteratorOfListOfCoupleOfShape_0.cxx \ - NMTTools_ListNodeOfListOfCommonBlock_0.cxx \ - NMTTools_ListNodeOfListOfCoupleOfShape_0.cxx \ - NMTTools_ListOfCommonBlock_0.cxx \ - NMTTools_ListOfCoupleOfShape_0.cxx \ - NMTTools_PaveFiller.cxx \ - NMTTools_PaveFiller_0.cxx \ - NMTTools_PaveFiller_1.cxx \ - NMTTools_PaveFiller_2.cxx \ - NMTTools_PaveFiller_3.cxx \ - NMTTools_PaveFiller_4.cxx \ - NMTTools_PaveFiller_5.cxx \ - NMTTools_PaveFiller_6.cxx \ - NMTTools_PaveFiller_7.cxx \ - NMTTools_PaveFiller_8.cxx \ - NMTTools_PaveFiller_9.cxx \ - NMTTools_PCurveMaker.cxx \ - NMTTools_Tools.cxx - -LIB_CLIENT_IDL = -LIB_SERVER_IDL = - -# header files -EXPORT_HEADERS = \ - NMTTools_PDSFiller.hxx \ - NMTTools_DSFiller.hxx \ - NMTTools_PPaveFiller.hxx \ - NMTTools_PaveFiller.hxx \ - NMTTools_ListOfCoupleOfShape.hxx \ - NMTTools_Tools.hxx \ - NMTTools_CoupleOfShape.hxx \ - NMTTools_ListIteratorOfListOfCoupleOfShape.hxx \ - NMTTools_IndexedDataMapOfShapeIndexedMapOfShape.hxx \ - NMTTools_IteratorOfCoupleOfShape.hxx \ - NMTTools_CommonBlockPool.hxx \ - Handle_NMTTools_ListNodeOfListOfCoupleOfShape.hxx \ - Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape.hxx - -# idl files -EXPORT_IDLS= - - -CPPFLAGS += $(OCC_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome -CXXFLAGS += $(OCC_CXXFLAGS) -I${KERNEL_ROOT_DIR}/include/salome -LDFLAGS += $(CAS_LDPATH) -lNMTDS -lTKBool -lTKBO -L${KERNEL_ROOT_DIR}/lib/salome - -%_moc.cxx: %.h - $(MOC) $< -o $@ - -@CONCLUDE@ diff --git a/src/NMTTools/NMTTools.cdl b/src/NMTTools/NMTTools.cdl deleted file mode 100644 index 78ba75d76..000000000 --- a/src/NMTTools/NMTTools.cdl +++ /dev/null @@ -1,66 +0,0 @@ --- File: NMTTools.cdl --- Created: Thu Dec 4 16:55:49 2003 --- Author: Peter KURNEV --- ----Copyright: Matra Datavision 2003 - - -package NMTTools - - ---Purpose: - -uses - - TCollection, - TColStd, - gp, - TopAbs, - TopoDS, - TopTools, - Geom2d, - BooleanOperations, - BOPTColStd, - IntTools, - BOPTools, - - NMTDS - -is - class IteratorOfCoupleOfShape; - class DSFiller; - class PaveFiller; - class Tools; - class CommonBlock; - class CommonBlockAPI; - class PCurveMaker; - class DEProcessor; - class CoupleOfShape; - - pointer PPaveFiller to PaveFiller from NMTTools; - pointer PDSFiller to DSFiller from NMTTools; - - class ListOfCommonBlock instantiates - List from TCollection(CommonBlock from NMTTools); - - class CommonBlockPool instantiates - CArray1 from BOPTColStd (ListOfCommonBlock from NMTTools); - - class IndexedDataMapOfIndexedMapOfInteger instantiates - IndexedDataMap from TCollection (Integer from Standard, - IndexedMapOfInteger from TColStd, - MapIntegerHasher from TColStd); - - class IndexedDataMapOfShapePaveBlock instantiates - IndexedDataMap from TCollection (Shape from TopoDS, - PaveBlock from BOPTools, - ShapeMapHasher from TopTools); - - class IndexedDataMapOfShapeIndexedMapOfShape instantiates - IndexedDataMap from TCollection (Shape from TopoDS, - IndexedMapOfShape from TopTools, - ShapeMapHasher from TopTools); - - class ListOfCoupleOfShape instantiates - List from TCollection(CoupleOfShape from NMTTools); - -end NMTTools; diff --git a/src/NMTTools/NMTTools_CommonBlock.cdl b/src/NMTTools/NMTTools_CommonBlock.cdl deleted file mode 100644 index 5971991f6..000000000 --- a/src/NMTTools/NMTTools_CommonBlock.cdl +++ /dev/null @@ -1,88 +0,0 @@ --- File: NMTTools_CommonBlock.cdl --- Created: Tue Dec 9 12:11:48 2003 --- Author: Peter KURNEV --- ----Copyright: Matra Datavision 2003 - - -class CommonBlock from NMTTools - - ---Purpose: - -uses - ListOfInteger from TColStd, - PaveBlock from BOPTools, - ListOfPaveBlock from BOPTools - ---raises - -is - Create - returns CommonBlock from NMTTools; - - AddPaveBlock(me:out; - aPB : PaveBlock from BOPTools); - - AddFace(me:out; - aF : Integer from Standard); - - AddFaces(me:out; - aLF: ListOfInteger from TColStd); - - PaveBlocks(me) - returns ListOfPaveBlock from BOPTools; - ---C++: return const & - - Faces (me) - returns ListOfInteger from TColStd; - ---C++: return const & - - PaveBlock1 (me) - returns PaveBlock from BOPTools; - ---C++: return const & - - PaveBlock1 (me:out; - anIx: Integer from Standard) - returns PaveBlock from BOPTools; - ---C++: return & - - PaveBlockOnEdge (me:out; - anIndex: Integer from Standard) - returns PaveBlock from BOPTools; - ---C++: return & - - IsPaveBlockOnFace (me; - anIndex: Integer from Standard) - returns Boolean from Standard; - - IsPaveBlockOnEdge (me; - anIndex: Integer from Standard) - returns Boolean from Standard; - - IsEqual (me; - aCB:CommonBlock from NMTTools) - returns Boolean from Standard; - - Contains(me; - aPB:PaveBlock from BOPTools) - returns Boolean from Standard; - --- SetEdge (me:out; --- anEdge:Integer from Standard); - --- Edge (me) --- returns Integer from Standard; - -fields - myPaveBlocks: ListOfPaveBlock from BOPTools is protected; - myFaces : ListOfInteger from TColStd is protected; - -end CommonBlock; - - - - - - - - diff --git a/src/NMTTools/NMTTools_CommonBlock.cxx b/src/NMTTools/NMTTools_CommonBlock.cxx deleted file mode 100644 index 80ab56142..000000000 --- a/src/NMTTools/NMTTools_CommonBlock.cxx +++ /dev/null @@ -1,227 +0,0 @@ -// File: NMTTools_CommonBlock.cxx -// Created: Tue Dec 9 12:23:29 2003 -// Author: Peter KURNEV -// - - -#include - -#include -#include - -//======================================================================= -// function: NMTTools_CommonBlock::NMTTools_CommonBlock() -// purpose: -//======================================================================= - NMTTools_CommonBlock::NMTTools_CommonBlock() -{ -} -//======================================================================= -// function: AddPaveBlock -// purpose: -//======================================================================= - void NMTTools_CommonBlock::AddPaveBlock(const BOPTools_PaveBlock& aPB) -{ - myPaveBlocks.Append(aPB); -} -//======================================================================= -// function: AddFace -// purpose: -//======================================================================= - void NMTTools_CommonBlock::AddFace(const Standard_Integer aF) -{ - myFaces.Append(aF); -} -//======================================================================= -// function: AddFaces -// purpose: -//======================================================================= - void NMTTools_CommonBlock::AddFaces(const TColStd_ListOfInteger& aLF) -{ - TColStd_ListIteratorOfListOfInteger aIt(aLF); - // - for (; aIt.More(); aIt.Next()) { - myFaces.Append(aIt.Value()); - } -} -//======================================================================= -// function: PaveBlocks -// purpose: -//======================================================================= - const BOPTools_ListOfPaveBlock& NMTTools_CommonBlock::PaveBlocks()const -{ - return myPaveBlocks; -} -//======================================================================= -// function: Faces -// purpose: -//======================================================================= - const TColStd_ListOfInteger& NMTTools_CommonBlock::Faces()const -{ - return myFaces; -} -//======================================================================= -// function: PaveBlock1 -// purpose: -//======================================================================= - const BOPTools_PaveBlock& NMTTools_CommonBlock::PaveBlock1()const -{ - return myPaveBlocks.First(); -} -//======================================================================= -// function: PaveBlock1 -// purpose: -//======================================================================= - BOPTools_PaveBlock& NMTTools_CommonBlock::PaveBlock1(const Standard_Integer aIx) -{ - return PaveBlockOnEdge(aIx); -} -//======================================================================= -// function: PaveBlockOnEdge -// purpose: -//======================================================================= - BOPTools_PaveBlock& NMTTools_CommonBlock::PaveBlockOnEdge(const Standard_Integer aIx) -{ - static BOPTools_PaveBlock aPBs; - Standard_Integer aIOr; - BOPTools_ListIteratorOfListOfPaveBlock anIt(myPaveBlocks); - // - for (; anIt.More(); anIt.Next()) { - BOPTools_PaveBlock& aPB=anIt.Value(); - aIOr=aPB.OriginalEdge(); - if (aIOr==aIx){ - return aPB; - } - } - return aPBs; -} -//======================================================================= -// function: IsPaveBlockOnFace -// purpose: -//======================================================================= - Standard_Boolean NMTTools_CommonBlock::IsPaveBlockOnFace(const Standard_Integer aIx)const -{ - Standard_Boolean bFound=Standard_False; - Standard_Integer nF; - TColStd_ListIteratorOfListOfInteger anIt(myFaces); - // - for (; anIt.More(); anIt.Next()) { - nF=anIt.Value(); - if (nF==aIx){ - return !bFound; - } - } - return bFound; -} -//======================================================================= -// function: IsPaveBlockOnEdge -// purpose: -//======================================================================= - Standard_Boolean NMTTools_CommonBlock::IsPaveBlockOnEdge(const Standard_Integer aIx)const -{ - Standard_Boolean bFound=Standard_False; - Standard_Integer aIOr; - BOPTools_ListIteratorOfListOfPaveBlock anIt(myPaveBlocks); - // - for (; anIt.More(); anIt.Next()) { - const BOPTools_PaveBlock& aPB=anIt.Value(); - aIOr=aPB.OriginalEdge(); - if (aIOr==aIx){ - return !bFound; - } - } - return bFound; -} -//======================================================================= -// function: IsEqual -// purpose: -//======================================================================= - Standard_Boolean NMTTools_CommonBlock::IsEqual(const NMTTools_CommonBlock& aOther)const -{ - Standard_Boolean bFound=Standard_True; - Standard_Integer aNb1, aNb2; - BOPTools_ListIteratorOfListOfPaveBlock anIt; - // - aNb1=myPaveBlocks.Extent(); - aNb2=aOther.myPaveBlocks.Extent(); - // - if (!aNb1 && !aNb2) { - return bFound; - } - if (!aNb1) { - return !bFound; - } - if (!aNb2) { - return !bFound; - } - // - const BOPTools_PaveBlock& aPB=PaveBlock1(); - // - anIt.Initialize(aOther.myPaveBlocks); - for (; anIt.More(); anIt.Next()) { - const BOPTools_PaveBlock& aPBOther=anIt.Value(); - if (aPB.IsEqual(aPBOther)){ - return bFound; - } - } - return !bFound; -} -//======================================================================= -// function: Contains -// purpose: -//======================================================================= - Standard_Boolean NMTTools_CommonBlock::Contains(const BOPTools_PaveBlock& aPBx)const -{ - Standard_Boolean bFound=Standard_False; - Standard_Integer aNb1; - BOPTools_ListIteratorOfListOfPaveBlock anIt; - // - aNb1=myPaveBlocks.Extent(); - // - if (!aNb1) { - return bFound; - } - // - anIt.Initialize(myPaveBlocks); - for (; anIt.More(); anIt.Next()) { - const BOPTools_PaveBlock& aPB=anIt.Value(); - if (aPB.IsEqual(aPBx)) { - return !bFound; - } - } - return bFound; -} -/* -//======================================================================= -// function: SetEdge -// purpose: -//======================================================================= - void NMTTools_CommonBlock::SetEdge(const Standard_Integer anEdge) -{ - BOPTools_ListIteratorOfListOfPaveBlock anIt; - // - anIt.Initialize(myPaveBlocks); - for (; anIt.More(); anIt.Next()) { - BOPTools_PaveBlock& aPB=anIt.Value(); - aPB.SetEdge(anEdge); - } -} -//======================================================================= -// function: Edge -// purpose: -//======================================================================= - Standard_Integer NMTTools_CommonBlock::Edge()const -{ - Standard_Integer aNb; - // - aNb=myPaveBlocks.Extent(); - // - if (!aNb) { - return aNb; - } - // - const BOPTools_PaveBlock& aPB=PaveBlock1(); - aNb=aPB.Edge(); - return aNb; -} -*/ diff --git a/src/NMTTools/NMTTools_CommonBlock.hxx b/src/NMTTools/NMTTools_CommonBlock.hxx deleted file mode 100644 index 4964ae8ea..000000000 --- a/src/NMTTools/NMTTools_CommonBlock.hxx +++ /dev/null @@ -1,110 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. - -#ifndef _NMTTools_CommonBlock_HeaderFile -#define _NMTTools_CommonBlock_HeaderFile - -#ifndef _BOPTools_ListOfPaveBlock_HeaderFile -#include -#endif -#ifndef _TColStd_ListOfInteger_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class BOPTools_PaveBlock; -class TColStd_ListOfInteger; -class BOPTools_ListOfPaveBlock; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class NMTTools_CommonBlock { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT NMTTools_CommonBlock(); -Standard_EXPORT void AddPaveBlock(const BOPTools_PaveBlock& aPB) ; -Standard_EXPORT void AddFace(const Standard_Integer aF) ; -Standard_EXPORT void AddFaces(const TColStd_ListOfInteger& aLF) ; -Standard_EXPORT const BOPTools_ListOfPaveBlock& PaveBlocks() const; -Standard_EXPORT const TColStd_ListOfInteger& Faces() const; -Standard_EXPORT const BOPTools_PaveBlock& PaveBlock1() const; -Standard_EXPORT BOPTools_PaveBlock& PaveBlock1(const Standard_Integer anIx) ; -Standard_EXPORT BOPTools_PaveBlock& PaveBlockOnEdge(const Standard_Integer anIndex) ; -Standard_EXPORT Standard_Boolean IsPaveBlockOnFace(const Standard_Integer anIndex) const; -Standard_EXPORT Standard_Boolean IsPaveBlockOnEdge(const Standard_Integer anIndex) const; -Standard_EXPORT Standard_Boolean IsEqual(const NMTTools_CommonBlock& aCB) const; -Standard_EXPORT Standard_Boolean Contains(const BOPTools_PaveBlock& aPB) const; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // -BOPTools_ListOfPaveBlock myPaveBlocks; -TColStd_ListOfInteger myFaces; - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTTools/NMTTools_CommonBlock.ixx b/src/NMTTools/NMTTools_CommonBlock.ixx deleted file mode 100644 index 334b58a7d..000000000 --- a/src/NMTTools/NMTTools_CommonBlock.ixx +++ /dev/null @@ -1,19 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#include - - - - diff --git a/src/NMTTools/NMTTools_CommonBlock.jxx b/src/NMTTools/NMTTools_CommonBlock.jxx deleted file mode 100644 index dc32fca23..000000000 --- a/src/NMTTools/NMTTools_CommonBlock.jxx +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef _BOPTools_PaveBlock_HeaderFile -#include -#endif -#ifndef _TColStd_ListOfInteger_HeaderFile -#include -#endif -#ifndef _BOPTools_ListOfPaveBlock_HeaderFile -#include -#endif -#ifndef _NMTTools_CommonBlock_HeaderFile -#include -#endif diff --git a/src/NMTTools/NMTTools_CommonBlockAPI.cdl b/src/NMTTools/NMTTools_CommonBlockAPI.cdl deleted file mode 100644 index 63d08dc71..000000000 --- a/src/NMTTools/NMTTools_CommonBlockAPI.cdl +++ /dev/null @@ -1,54 +0,0 @@ --- File: NMTTools_CommonBlockAPI.cdl --- Created: Mon Dec 15 11:35:46 2003 --- Author: Peter KURNEV --- ----Copyright: Matra Datavision 2003 - - -class CommonBlockAPI from NMTTools - - ---Purpose: - -uses - ListOfCommonBlock from NMTTools, - ListOfPaveBlock from BOPTools, - PaveBlock from BOPTools, - CommonBlock from NMTTools - ---raises - -is - Create (aList:ListOfCommonBlock from NMTTools) - returns CommonBlockAPI from NMTTools; - - List(me) - returns ListOfCommonBlock from NMTTools; - ---C++: return const & - ---Purpose: - --- Selector - --- - CommonPaveBlocks(me; - anE:Integer from Standard) - returns ListOfPaveBlock from BOPTools; - ---C++: return const & - ---Purpose: - --- Returns all PaveBlock-s (from the list) that are - --- common for the given edge with DS-index - --- - IsCommonBlock (me; - aPB: PaveBlock from BOPTools) - returns Boolean from Standard; - ---Purpose: - --- Returns TRUE if given PaveBlock is - --- common for the Blocks from the list - - CommonBlock(me; - aPB: PaveBlock from BOPTools) - returns CommonBlock from NMTTools; - ---C++: return & - -fields - myListOfCommonBlock :Address from Standard; - myListOfPaveBlock :ListOfPaveBlock from BOPTools; - -end CommonBlockAPI; diff --git a/src/NMTTools/NMTTools_CommonBlockAPI.cxx b/src/NMTTools/NMTTools_CommonBlockAPI.cxx deleted file mode 100644 index ceb097361..000000000 --- a/src/NMTTools/NMTTools_CommonBlockAPI.cxx +++ /dev/null @@ -1,114 +0,0 @@ -// File: NMTTools_CommonBlockAPI.cxx -// Created: Mon Dec 15 11:38:04 2003 -// Author: Peter KURNEV -// - - -#include - -#include -#include -#include - -#include -#include -#include - -//======================================================================= -// function: NMTTools_CommonBlockAPI::NMTTools_CommonBlockAPI -// purpose: -//======================================================================= - NMTTools_CommonBlockAPI::NMTTools_CommonBlockAPI (const NMTTools_ListOfCommonBlock& aLCB) -{ - myListOfCommonBlock=(void *)&aLCB; -} -//======================================================================= -// function: List -// purpose: -//======================================================================= - const NMTTools_ListOfCommonBlock& NMTTools_CommonBlockAPI::List () const -{ - NMTTools_ListOfCommonBlock* pListOfCommonBlock=(NMTTools_ListOfCommonBlock*)myListOfCommonBlock; - return *pListOfCommonBlock; -} -//======================================================================= -// function: CommonPaveBlocks -// purpose: get all CommonPaveBlocks -//======================================================================= - const BOPTools_ListOfPaveBlock& NMTTools_CommonBlockAPI::CommonPaveBlocks(const Standard_Integer anE) const -{ - Standard_Integer anECurrent; - BOPTools_ListIteratorOfListOfPaveBlock anItPB; - // - BOPTools_ListOfPaveBlock* pmyListOfPaveBlock=(BOPTools_ListOfPaveBlock*) &myListOfPaveBlock; - pmyListOfPaveBlock->Clear(); - - NMTTools_ListOfCommonBlock* pListOfCommonBlock=(NMTTools_ListOfCommonBlock*)myListOfCommonBlock; - - NMTTools_ListIteratorOfListOfCommonBlock anIt(*pListOfCommonBlock); - for (; anIt.More(); anIt.Next()) { - const NMTTools_CommonBlock& aCB=anIt.Value(); - // - const BOPTools_ListOfPaveBlock& aLPB=aCB.PaveBlocks(); - anItPB.Initialize(aLPB); - for (; anItPB.More(); anItPB.Next()) { - const BOPTools_PaveBlock& aPB=anItPB.Value(); - anECurrent=aPB.OriginalEdge(); - if (anECurrent==anE) { - pmyListOfPaveBlock->Append(aPB); - break; - } - } - } - return myListOfPaveBlock; -} -//======================================================================= -// function: IsCommonBlock -// purpose: -//======================================================================= - Standard_Boolean NMTTools_CommonBlockAPI::IsCommonBlock(const BOPTools_PaveBlock& aPB) const -{ - Standard_Integer anE; - // - anE=aPB.OriginalEdge(); - // - CommonPaveBlocks(anE); - // - BOPTools_ListIteratorOfListOfPaveBlock anIt(myListOfPaveBlock); - for (; anIt.More(); anIt.Next()) { - const BOPTools_PaveBlock& aPB1=anIt.Value(); - if (aPB1.IsEqual(aPB)) { - return Standard_True; - } - } - return Standard_False; -} - -//======================================================================= -// function: CommonBlock -// purpose: -//======================================================================= - NMTTools_CommonBlock& NMTTools_CommonBlockAPI::CommonBlock(const BOPTools_PaveBlock& aPB)const -{ - static NMTTools_CommonBlock aCBTMP; - // - NMTTools_ListIteratorOfListOfCommonBlock anItCB; - BOPTools_ListIteratorOfListOfPaveBlock anItPB; - // - NMTTools_ListOfCommonBlock* pLCB=(NMTTools_ListOfCommonBlock*)myListOfCommonBlock; - // - anItCB.Initialize(*pLCB); - for (; anItCB.More(); anItCB.Next()) { - NMTTools_CommonBlock& aCB=anItCB.Value(); - // - const BOPTools_ListOfPaveBlock& aLPB=aCB.PaveBlocks(); - anItPB.Initialize(aLPB); - for (; anItPB.More(); anItPB.Next()) { - const BOPTools_PaveBlock& aPBx=anItPB.Value(); - if (aPBx.IsEqual(aPB)) { - return aCB; - } - } - } - return aCBTMP; -} diff --git a/src/NMTTools/NMTTools_CommonBlockAPI.hxx b/src/NMTTools/NMTTools_CommonBlockAPI.hxx deleted file mode 100644 index 37e84f4b7..000000000 --- a/src/NMTTools/NMTTools_CommonBlockAPI.hxx +++ /dev/null @@ -1,103 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. - -#ifndef _NMTTools_CommonBlockAPI_HeaderFile -#define _NMTTools_CommonBlockAPI_HeaderFile - -#ifndef _Standard_Address_HeaderFile -#include -#endif -#ifndef _BOPTools_ListOfPaveBlock_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class NMTTools_ListOfCommonBlock; -class BOPTools_ListOfPaveBlock; -class BOPTools_PaveBlock; -class NMTTools_CommonBlock; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class NMTTools_CommonBlockAPI { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT NMTTools_CommonBlockAPI(const NMTTools_ListOfCommonBlock& aList); -Standard_EXPORT const NMTTools_ListOfCommonBlock& List() const; -Standard_EXPORT const BOPTools_ListOfPaveBlock& CommonPaveBlocks(const Standard_Integer anE) const; -Standard_EXPORT Standard_Boolean IsCommonBlock(const BOPTools_PaveBlock& aPB) const; -Standard_EXPORT NMTTools_CommonBlock& CommonBlock(const BOPTools_PaveBlock& aPB) const; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -Standard_Address myListOfCommonBlock; -BOPTools_ListOfPaveBlock myListOfPaveBlock; - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTTools/NMTTools_CommonBlockAPI.ixx b/src/NMTTools/NMTTools_CommonBlockAPI.ixx deleted file mode 100644 index 983092a69..000000000 --- a/src/NMTTools/NMTTools_CommonBlockAPI.ixx +++ /dev/null @@ -1,19 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#include - - - - diff --git a/src/NMTTools/NMTTools_CommonBlockAPI.jxx b/src/NMTTools/NMTTools_CommonBlockAPI.jxx deleted file mode 100644 index 49570db30..000000000 --- a/src/NMTTools/NMTTools_CommonBlockAPI.jxx +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef _NMTTools_ListOfCommonBlock_HeaderFile -#include -#endif -#ifndef _BOPTools_ListOfPaveBlock_HeaderFile -#include -#endif -#ifndef _BOPTools_PaveBlock_HeaderFile -#include -#endif -#ifndef _NMTTools_CommonBlock_HeaderFile -#include -#endif -#ifndef _NMTTools_CommonBlockAPI_HeaderFile -#include -#endif diff --git a/src/NMTTools/NMTTools_CommonBlockPool.hxx b/src/NMTTools/NMTTools_CommonBlockPool.hxx deleted file mode 100644 index 01e53c6dd..000000000 --- a/src/NMTTools/NMTTools_CommonBlockPool.hxx +++ /dev/null @@ -1,132 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. - -#ifndef _NMTTools_CommonBlockPool_HeaderFile -#define _NMTTools_CommonBlockPool_HeaderFile - -#ifndef _Standard_Address_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_OutOfRange; -class Standard_OutOfMemory; -class NMTTools_ListOfCommonBlock; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class NMTTools_CommonBlockPool { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT NMTTools_CommonBlockPool(const Standard_Integer Length = 0,const Standard_Integer BlockLength = 5); -Standard_EXPORT void Resize(const Standard_Integer theNewLength) ; -Standard_EXPORT void Destroy() ; -~NMTTools_CommonBlockPool() -{ - Destroy(); -} - -Standard_EXPORT Standard_Integer Length() const; -Standard_EXPORT Standard_Integer Extent() const; -Standard_EXPORT Standard_Integer FactLength() const; -Standard_EXPORT Standard_Integer Append(const NMTTools_ListOfCommonBlock& Value) ; -Standard_EXPORT void Remove(const Standard_Integer Index) ; -Standard_EXPORT const NMTTools_ListOfCommonBlock& Value(const Standard_Integer Index) const; - const NMTTools_ListOfCommonBlock& operator ()(const Standard_Integer Index) const -{ - return Value(Index); -} - -Standard_EXPORT NMTTools_ListOfCommonBlock& ChangeValue(const Standard_Integer Index) ; - NMTTools_ListOfCommonBlock& operator ()(const Standard_Integer Index) -{ - return ChangeValue(Index); -} - -Standard_EXPORT void SetBlockLength(const Standard_Integer aBL) ; -Standard_EXPORT Standard_Integer BlockLength() const; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // -Standard_EXPORT NMTTools_CommonBlockPool(const NMTTools_CommonBlockPool& AnArray); -Standard_EXPORT NMTTools_CommonBlockPool& Assign(const NMTTools_CommonBlockPool& Other) ; - NMTTools_CommonBlockPool& operator =(const NMTTools_CommonBlockPool& Other) -{ - return Assign(Other); -} - -Standard_EXPORT Standard_Boolean IsInvalidIndex(const Standard_Integer Index) const; - - - // Fields PRIVATE - // -Standard_Address myStart; -Standard_Integer myLength; -Standard_Integer myFactLength; -Standard_Integer myBlockLength; -Standard_Boolean myIsAllocated; - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTTools/NMTTools_CommonBlockPool_0.cxx b/src/NMTTools/NMTTools_CommonBlockPool_0.cxx deleted file mode 100644 index 33f0f2541..000000000 --- a/src/NMTTools/NMTTools_CommonBlockPool_0.cxx +++ /dev/null @@ -1,33 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#include - -#ifndef _Standard_OutOfRange_HeaderFile -#include -#endif -#ifndef _Standard_OutOfMemory_HeaderFile -#include -#endif -#ifndef _NMTTools_ListOfCommonBlock_HeaderFile -#include -#endif - - -#define Array1Item NMTTools_ListOfCommonBlock -#define Array1Item_hxx -#define BOPTColStd_CArray1 NMTTools_CommonBlockPool -#define BOPTColStd_CArray1_hxx -#include - diff --git a/src/NMTTools/NMTTools_CoupleOfShape.cdl b/src/NMTTools/NMTTools_CoupleOfShape.cdl deleted file mode 100644 index cf3e0839b..000000000 --- a/src/NMTTools/NMTTools_CoupleOfShape.cdl +++ /dev/null @@ -1,39 +0,0 @@ --- File: NMTTools_CoupleOfShape.cdl --- Created: Wed Jan 28 15:03:39 2004 --- Author: Peter KURNEV --- ----Copyright: Matra Datavision 2004 - - -class CoupleOfShape from NMTTools - - ---Purpose: - -uses - Shape from TopoDS - ---raises - -is - Create - returns CoupleOfShape from NMTTools; - - SetShape1(me:out; - aS: Shape from TopoDS); - - SetShape2(me:out; - aS: Shape from TopoDS); - - Shape1(me) - returns Shape from TopoDS; - ---C++: return const & - - Shape2(me) - returns Shape from TopoDS; - ---C++: return const & - -fields - myShape1:Shape from TopoDS is protected; - myShape2:Shape from TopoDS is protected; - -end CoupleOfShape; diff --git a/src/NMTTools/NMTTools_CoupleOfShape.cxx b/src/NMTTools/NMTTools_CoupleOfShape.cxx deleted file mode 100644 index 91847f60c..000000000 --- a/src/NMTTools/NMTTools_CoupleOfShape.cxx +++ /dev/null @@ -1,45 +0,0 @@ -// File: NMTTools_CoupleOfShape.cxx -// Created: Wed Jan 28 15:06:11 2004 -// Author: Peter KURNEV -// - -#include - -//======================================================================= -// function: NMTTools_CoupleOfShape::NMTTools_CoupleOfShape -// purpose: -//======================================================================= - NMTTools_CoupleOfShape::NMTTools_CoupleOfShape() -{} -//======================================================================= -// function: SetShape1 -// purpose: -//======================================================================= - void NMTTools_CoupleOfShape::SetShape1(const TopoDS_Shape& aS) -{ - myShape1=aS; -} -//======================================================================= -// function: SetShape2 -// purpose: -//======================================================================= - void NMTTools_CoupleOfShape::SetShape2(const TopoDS_Shape& aS) -{ - myShape2=aS; -} -//======================================================================= -// function: Shape1 -// purpose: -//======================================================================= - const TopoDS_Shape& NMTTools_CoupleOfShape::Shape1()const -{ - return myShape1; -} -//======================================================================= -// function: Shape2 -// purpose: -//======================================================================= - const TopoDS_Shape& NMTTools_CoupleOfShape::Shape2()const -{ - return myShape2; -} diff --git a/src/NMTTools/NMTTools_CoupleOfShape.hxx b/src/NMTTools/NMTTools_CoupleOfShape.hxx deleted file mode 100644 index 9a140f7b5..000000000 --- a/src/NMTTools/NMTTools_CoupleOfShape.hxx +++ /dev/null @@ -1,91 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. - -#ifndef _NMTTools_CoupleOfShape_HeaderFile -#define _NMTTools_CoupleOfShape_HeaderFile - -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -class TopoDS_Shape; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class NMTTools_CoupleOfShape { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT NMTTools_CoupleOfShape(); -Standard_EXPORT void SetShape1(const TopoDS_Shape& aS) ; -Standard_EXPORT void SetShape2(const TopoDS_Shape& aS) ; -Standard_EXPORT const TopoDS_Shape& Shape1() const; -Standard_EXPORT const TopoDS_Shape& Shape2() const; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // -TopoDS_Shape myShape1; -TopoDS_Shape myShape2; - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTTools/NMTTools_CoupleOfShape.ixx b/src/NMTTools/NMTTools_CoupleOfShape.ixx deleted file mode 100644 index 1895c6b5a..000000000 --- a/src/NMTTools/NMTTools_CoupleOfShape.ixx +++ /dev/null @@ -1,19 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#include - - - - diff --git a/src/NMTTools/NMTTools_CoupleOfShape.jxx b/src/NMTTools/NMTTools_CoupleOfShape.jxx deleted file mode 100644 index 9acf2b8d7..000000000 --- a/src/NMTTools/NMTTools_CoupleOfShape.jxx +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _NMTTools_CoupleOfShape_HeaderFile -#include -#endif diff --git a/src/NMTTools/NMTTools_DEProcessor.cdl b/src/NMTTools/NMTTools_DEProcessor.cdl deleted file mode 100644 index 8d286d50f..000000000 --- a/src/NMTTools/NMTTools_DEProcessor.cdl +++ /dev/null @@ -1,105 +0,0 @@ --- File: NMTTools_DEProcessor.cdl --- Created: Wed Sep 12 12:08:37 2001 --- Author: Peter KURNEV --- ----Copyright: Matra Datavision 2001 - - -class DEProcessor from NMTTools - - ---Purpose: - -- - -- The Algorithm to compute and store in interferences' pool - --- and in the Data Structure the following values - --- for degenerated edges - --- 1. Paves/Pave set(s) - --- 2. Split parts - --- 3. States (3D) for split parts - --- - -uses - - Vertex from TopoDS, - Edge from TopoDS, - Face from TopoDS, - - PPaveFiller from NMTTools, - PaveFiller from NMTTools, - --PDSFiller from NMTTools, - ListOfPaveBlock from BOPTools, - PShapesDataStructure from NMTDS, - IndexedDataMapOfIntegerDEInfo from BOPTools - - -is - --Create (aFiller:out PDSFiller from NMTTools) - -- returns DEProcessor from NMTTools; - ---Purpose: - --- Constructor - --- - Create (aFiller:out PaveFiller from NMTTools) - returns DEProcessor from NMTTools; - ---Purpose: - --- Constructor - --- - Do(me:out); - ---Purpose: - --- Launches the processor - --- - IsDone(me) - returns Boolean from Standard; - ---Purpose: - --- Returns TRUE if it is Ok - --- - --- - --- Private block - --- - --- - FindDegeneratedEdges (me:out) - is protected; - - DoPaves (me:out) - is protected; - - FindPaveBlocks (me:out; - nED:Integer from Standard; - nVD:Integer from Standard; - nFD:Integer from Standard; - aLPB:out ListOfPaveBlock from BOPTools) - is protected; - - FillPaveSet (me:out; - nED:Integer from Standard; - nVD:Integer from Standard; - nFD:Integer from Standard; - aLPB: ListOfPaveBlock from BOPTools) - is protected; - - FillSplitEdgesPool(me:out; - nED:Integer from Standard) - is protected; - - MakeSplitEdges(me:out; - nED:Integer from Standard; - nFD:Integer from Standard) - is protected; - - MakeSplitEdge (me:out; - aS1: Edge from TopoDS; - aF : Face from TopoDS; - aV1: Vertex from TopoDS; - aP1: Real from Standard; - aV2: Vertex from TopoDS; - aP2: Real from Standard; - aNewEdge:out Edge from TopoDS) - is protected; - -fields - - --myDSFiller: PDSFiller from NMTTools is protected; - myFiller : PPaveFiller from NMTTools is protected; - myDS : PShapesDataStructure from NMTDS is protected; - myIsDone : Boolean from Standard is protected; - myDEMap : IndexedDataMapOfIntegerDEInfo from BOPTools is protected; - -end DEProcessor; diff --git a/src/NMTTools/NMTTools_DEProcessor.cxx b/src/NMTTools/NMTTools_DEProcessor.cxx deleted file mode 100644 index 1c6ea3068..000000000 --- a/src/NMTTools/NMTTools_DEProcessor.cxx +++ /dev/null @@ -1,492 +0,0 @@ -// File: BOPTools_DEProcessor.cxx -// Created: Wed Sep 12 12:10:52 2001 -// Author: Peter KURNEV -// - -#include - -#include - -#include -#include - -#include -#include -#include - -#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include - -#include - -#include - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -//#include -#include -// -#include -#include - - - -//======================================================================= -// function: NMTTools_DEProcessor::NMTTools_DEProcessor -// purpose: -//======================================================================= - NMTTools_DEProcessor::NMTTools_DEProcessor(NMTTools_PaveFiller& aPaveFiller) -: - myIsDone(Standard_False) -{ - myFiller=(NMTTools_PaveFiller*) &aPaveFiller; - myDS=myFiller->DS(); -} -//======================================================================= -// function: IsDone -// purpose: -//======================================================================= - Standard_Boolean NMTTools_DEProcessor::IsDone() const -{ - return myIsDone; -} -//======================================================================= -// function: Do -// purpose: -//======================================================================= - void NMTTools_DEProcessor::Do() -{ - Standard_Integer aNbE; - myIsDone=Standard_False; - - FindDegeneratedEdges(); - aNbE=myDEMap.Extent(); - - if (!aNbE) { - myIsDone=Standard_True; - return; - } - DoPaves(); -} -//======================================================================= -// function: FindDegeneratedEdges -// purpose: -//======================================================================= - void NMTTools_DEProcessor::FindDegeneratedEdges() -{ - Standard_Integer i, aNb, nV, nF, nVx, ip, iRankE; - TopTools_IndexedDataMapOfShapeListOfShape aMEF; - // - aNb=myDS->NumberOfShapesOfTheObject(); - // - for (i=1; i<=aNb; i++) { - const TopoDS_Shape& aF=myDS->Shape(i); - if (aF.ShapeType()==TopAbs_FACE) { - TopExp::MapShapesAndAncestors (aF, TopAbs_EDGE, TopAbs_FACE, aMEF); - } - } - // - for (i=1; i<=aNb; i++) { - const TopoDS_Shape& aS=myDS->Shape(i); - if (aS.ShapeType()==TopAbs_EDGE) { - const TopoDS_Edge& aE=TopoDS::Edge(aS); - - if (BRep_Tool::Degenerated(aE)) { - iRankE=myDS->Rank(i); - - TopoDS_Vertex aV=TopExp::FirstVertex(aE); - - nVx=myDS->ShapeIndex(aV, iRankE); - // - nV=nVx; - ip=myFiller->FindSDVertex(nV); - if (ip) { - nV=ip; - } - // - TColStd_ListOfInteger aLFn; - const TopTools_ListOfShape& aLF=aMEF.FindFromKey(aE); - TopTools_ListIteratorOfListOfShape anIt(aLF); - for (; anIt.More(); anIt.Next()) { - const TopoDS_Shape& aF=anIt.Value(); - nF=myDS->ShapeIndex(aF, iRankE); - aLFn.Append(nF); - } - BOPTools_DEInfo aDEInfo; - aDEInfo.SetVertex(nV); - aDEInfo.SetFaces(aLFn); - - myDEMap.Add (i, aDEInfo); - } - } - } -} -//======================================================================= -// function: DoPaves -// purpose: -//======================================================================= - void NMTTools_DEProcessor::DoPaves() -{ - - Standard_Integer i, aNbE, nED, nVD, nFD=0; - // - aNbE=myDEMap.Extent(); - for (i=1; i<=aNbE; i++) { - nED=myDEMap.FindKey(i); - - const BOPTools_DEInfo& aDEInfo=myDEMap(i); - nVD=aDEInfo.Vertex(); - // Fill PaveSet for the edge nED - const TColStd_ListOfInteger& nLF=aDEInfo.Faces(); - TColStd_ListIteratorOfListOfInteger anIt(nLF); - for (; anIt.More(); anIt.Next()) { - nFD=anIt.Value(); - - BOPTools_ListOfPaveBlock aLPB; - FindPaveBlocks(nED, nVD, nFD, aLPB); - FillPaveSet (nED, nVD, nFD, aLPB); - } - // - // Fill aSplitEdges for the edge nED - FillSplitEdgesPool(nED); - // - // MakeSplitEdges - MakeSplitEdges(nED, nFD); - // - }// next nED -} -//======================================================================= -// function: FindPaveBlocks -// purpose: -//======================================================================= - void NMTTools_DEProcessor::FindPaveBlocks(const Standard_Integer , - const Standard_Integer nVD, - const Standard_Integer nFD, - BOPTools_ListOfPaveBlock& aLPBOut) -{ - BOPTools_ListIteratorOfListOfPaveBlock anIt; - Standard_Integer i, aNb, nF2, nV; - // - BOPTools_CArray1OfSSInterference& aFFs=(myFiller->InterfPool())->SSInterferences(); - // - aNb=aFFs.Extent(); - for (i=1; i<=aNb; ++i) { - BOPTools_SSInterference& aFF=aFFs(i); - // - nF2=aFF.OppositeIndex(nFD); - if (!nF2) { - continue; - } - // - // Split Parts - const BOPTools_ListOfPaveBlock& aLPBSplits=aFF.PaveBlocks(); - anIt.Initialize(aLPBSplits); - for (; anIt.More(); anIt.Next()) { - const BOPTools_PaveBlock& aPBSp=anIt.Value(); - // - const BOPTools_Pave& aPave1=aPBSp.Pave1(); - nV=aPave1.Index(); - if (nV==nVD) { - aLPBOut.Append(aPBSp); - continue; - } - // - const BOPTools_Pave& aPave2=aPBSp.Pave2(); - nV=aPave2.Index(); - if (nV==nVD) { - aLPBOut.Append(aPBSp); - continue; - } - } - // - // Section Parts - Standard_Integer j, aNbCurves; - BOPTools_SequenceOfCurves& aSC=aFF.Curves(); - aNbCurves=aSC.Length(); - - for (j=1; j<=aNbCurves; j++) { - const BOPTools_Curve& aBC=aSC(j); - const BOPTools_ListOfPaveBlock& aLPBSe=aBC.NewPaveBlocks(); - - anIt.Initialize(aLPBSe); - for (; anIt.More(); anIt.Next()) { - const BOPTools_PaveBlock& aPBSe=anIt.Value(); - - const BOPTools_Pave& aPv1=aPBSe.Pave1(); - nV=aPv1.Index(); - if (nV==nVD) { - aLPBOut.Append(aPBSe); - continue; - } - - const BOPTools_Pave& aPv2=aPBSe.Pave2(); - nV=aPv2.Index(); - if (nV==nVD) { - aLPBOut.Append(aPBSe); - continue; - } - } - } - } -} -//======================================================================= -// function: FillPaveSet -// purpose: -//======================================================================= - void NMTTools_DEProcessor::FillPaveSet (const Standard_Integer nED, - const Standard_Integer nVD, - const Standard_Integer nFD, - const BOPTools_ListOfPaveBlock& aLPB) -{ - Standard_Boolean bIsDone, bXDir, bRejectFlag; - Standard_Integer nE, aNbPoints, j; - Standard_Real aTD1, aTD2, aT1, aT2, aTolInter, aX, aDT; - // - aDT=Precision::PConfusion(); - // - BOPTools_PaveSet& aPaveSet= (myFiller->ChangePavePool()).ChangeValue(myDS->RefEdge(nED)); - // - // Clear aPaveSet, aSplitEdges - aPaveSet.ChangeSet().Clear(); - // - const TopoDS_Edge& aDE=TopoDS::Edge(myDS->Shape(nED)); - const TopoDS_Face& aDF=TopoDS::Face(myDS->Shape(nFD)); - // - // 2D Curve of degenerated edge on the face aDF - Handle(Geom2d_Curve) aC2DDE=BRep_Tool::CurveOnSurface(aDE, aDF, aTD1, aTD2); - // - // Choose direction for Degenerated Edge - gp_Pnt2d aP2d1, aP2d2; - aC2DDE->D0(aTD1, aP2d1); - aC2DDE->D0(aTD2, aP2d2); - - bXDir=Standard_False; - if (fabs(aP2d1.Y()-aP2d2.Y()) < aDT){ - bXDir=!bXDir; - } - // - // Prepare bounding Paves - BOPTools_Pave aPave1 (nVD, aTD1, BooleanOperations_UnknownInterference); - aPaveSet.Append(aPave1); - BOPTools_Pave aPave2 (nVD, aTD2, BooleanOperations_UnknownInterference); - aPaveSet.Append(aPave2); - // - // Fill other paves - BOPTools_ListIteratorOfListOfPaveBlock anIt(aLPB); - for (; anIt.More(); anIt.Next()) { - const BOPTools_PaveBlock& aPB=anIt.Value(); - nE=aPB.Edge(); - const TopoDS_Edge& aE=TopoDS::Edge(myDS->Shape(nE)); - - Handle(Geom2d_Curve) aC2D=BRep_Tool::CurveOnSurface(aE, aDF, aT1, aT2); - // - // Intersection - aTolInter=0.001; - - Geom2dAdaptor_Curve aGAC1, aGAC2; - - aGAC1.Load(aC2DDE, aTD1, aTD2); - Handle(Geom2d_Line) aL2D= Handle(Geom2d_Line)::DownCast(aC2D); - if (!aL2D.IsNull()) { - aGAC2.Load(aC2D); - } - else { - aGAC2.Load(aC2D, aT1, aT2); - } - - Geom2dInt_GInter aGInter(aGAC1, aGAC2, aTolInter, aTolInter); - - bIsDone=aGInter.IsDone(); - if(bIsDone) { - aNbPoints=aGInter.NbPoints(); - if (aNbPoints) { - for (j=1; j<=aNbPoints; ++j) { - gp_Pnt2d aP2D=aGInter.Point(j).Value(); - // - aX=(bXDir) ? aP2D.X(): aP2D.Y(); - // - if (fabs (aX-aTD1) < aDT || fabs (aX-aTD2) < aDT) { - continue; - } - if (aX < aTD1 || aX > aTD2) { - continue; - } - // - bRejectFlag=Standard_False; - const BOPTools_ListOfPave& aListOfPave=aPaveSet.Set(); - BOPTools_ListIteratorOfListOfPave aPaveIt(aListOfPave); - for (; aPaveIt.More(); aPaveIt.Next()) { - const BOPTools_Pave& aPavex=aPaveIt.Value(); - Standard_Real aXx=aPavex.Param(); - if (fabs (aX-aXx) < aDT) { - bRejectFlag=Standard_True; - break; - } - } - if (bRejectFlag) { - continue; - } - // - BOPTools_Pave aPave(nVD, aX, BooleanOperations_UnknownInterference); - aPaveSet.Append(aPave); - } - } - } - } -} -//======================================================================= -// function: FillSplitEdgesPool -// purpose: -//======================================================================= - void NMTTools_DEProcessor::FillSplitEdgesPool (const Standard_Integer nED) -{ - BOPTools_SplitShapesPool& aSplitShapesPool=myFiller->ChangeSplitShapesPool(); - BOPTools_ListOfPaveBlock& aSplitEdges=aSplitShapesPool.ChangeValue(myDS->RefEdge(nED)); - // - aSplitEdges.Clear(); - // - const BOPTools_PavePool& aPavePool=myFiller->PavePool(); - BOPTools_PavePool* pPavePool=(BOPTools_PavePool*) &aPavePool; - BOPTools_PaveSet& aPaveSet= pPavePool->ChangeValue(myDS->RefEdge(nED)); - - BOPTools_PaveBlockIterator aPBIt(nED, aPaveSet); - for (; aPBIt.More(); aPBIt.Next()) { - BOPTools_PaveBlock& aPB=aPBIt.Value(); - aSplitEdges.Append(aPB); - } -} -//======================================================================= -// function: MakeSplitEdges -// purpose: -//======================================================================= - void NMTTools_DEProcessor::MakeSplitEdges (const Standard_Integer nED, - const Standard_Integer nFD) -{ - const BOPTools_SplitShapesPool& aSplitShapesPool=myFiller->SplitShapesPool(); - const BOPTools_ListOfPaveBlock& aSplitEdges=aSplitShapesPool(myDS->RefEdge(nED)); - - Standard_Integer nV1, nV2, aNewShapeIndex; - Standard_Real t1, t2; - TopoDS_Edge aE, aESplit; - TopoDS_Vertex aV1, aV2; - - const TopoDS_Edge& aDE=TopoDS::Edge(myDS->Shape(nED)); - const TopoDS_Face& aDF=TopoDS::Face(myDS->Shape(nFD)); - - BOPTools_ListIteratorOfListOfPaveBlock aPBIt(aSplitEdges); - - for (; aPBIt.More(); aPBIt.Next()) { - BOPTools_PaveBlock& aPB=aPBIt.Value(); - - const BOPTools_Pave& aPave1=aPB.Pave1(); - nV1=aPave1.Index(); - t1=aPave1.Param(); - aV1=TopoDS::Vertex(myDS->GetShape(nV1)); - aV1.Orientation(TopAbs_FORWARD); - - const BOPTools_Pave& aPave2=aPB.Pave2(); - nV2=aPave2.Index(); - t2=aPave2.Param(); - aV2=TopoDS::Vertex(myDS->GetShape(nV2)); - aV2.Orientation(TopAbs_REVERSED); - - MakeSplitEdge(aDE, aDF, aV1, t1, aV2, t2, aESplit); - // - // Add Split Part of the Original Edge to the DS - BooleanOperations_AncestorsSeqAndSuccessorsSeq anASSeq; - - anASSeq.SetNewSuccessor(nV1); - anASSeq.SetNewOrientation(aV1.Orientation()); - - anASSeq.SetNewSuccessor(nV2); - anASSeq.SetNewOrientation(aV2.Orientation()); - - myDS->InsertShapeAndAncestorsSuccessors(aESplit, anASSeq); - aNewShapeIndex=myDS->NumberOfInsertedShapes(); - myDS->SetState(aNewShapeIndex, BooleanOperations_UNKNOWN); - // - // Fill Split Set for the Original Edge - aPB.SetEdge(aNewShapeIndex); - // - } -} -//======================================================================= -// function: MakeSplitEdge -// purpose: -//======================================================================= - void NMTTools_DEProcessor::MakeSplitEdge (const TopoDS_Edge& aE, - const TopoDS_Face& aF, - const TopoDS_Vertex& aV1, - const Standard_Real aP1, - const TopoDS_Vertex& aV2, - const Standard_Real aP2, - TopoDS_Edge& aNewEdge) -{ - Standard_Real aTol=1.e-7; - - TopoDS_Edge E=aE; - - E.EmptyCopy(); - BRep_Builder BB; - BB.Add (E, aV1); - BB.Add (E, aV2); - - BB.Range(E, aF, aP1, aP2); - - BB.Degenerated(E, Standard_True); - - BB.UpdateEdge(E, aTol); - aNewEdge=E; -} -/* -//======================================================================= -// function: NMTTools_DEProcessor::NMTTools_DEProcessor -// purpose: -//======================================================================= - NMTTools_DEProcessor::NMTTools_DEProcessor(NMTTools_PDSFiller& pDSFiller) -: - myIsDone(Standard_False) -{ - myDSFiller=pDSFiller; - myFiller=(NMTTools_PaveFiller*) &(myDSFiller->PaveFiller()); - myDS=myFiller->DS(); -} -*/ diff --git a/src/NMTTools/NMTTools_DEProcessor.hxx b/src/NMTTools/NMTTools_DEProcessor.hxx deleted file mode 100644 index fb3ccbb37..000000000 --- a/src/NMTTools/NMTTools_DEProcessor.hxx +++ /dev/null @@ -1,117 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. - -#ifndef _NMTTools_DEProcessor_HeaderFile -#define _NMTTools_DEProcessor_HeaderFile - -#ifndef _NMTTools_PPaveFiller_HeaderFile -#include -#endif -#ifndef _NMTDS_PShapesDataStructure_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -#ifndef _BOPTools_IndexedDataMapOfIntegerDEInfo_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Real_HeaderFile -#include -#endif -class NMTTools_PaveFiller; -class BOPTools_ListOfPaveBlock; -class TopoDS_Edge; -class TopoDS_Face; -class TopoDS_Vertex; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class NMTTools_DEProcessor { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT NMTTools_DEProcessor(NMTTools_PaveFiller& aFiller); -Standard_EXPORT void Do() ; -Standard_EXPORT Standard_Boolean IsDone() const; - - - - - -protected: - - // Methods PROTECTED - // -Standard_EXPORT void FindDegeneratedEdges() ; -Standard_EXPORT void DoPaves() ; -Standard_EXPORT void FindPaveBlocks(const Standard_Integer nED,const Standard_Integer nVD,const Standard_Integer nFD,BOPTools_ListOfPaveBlock& aLPB) ; -Standard_EXPORT void FillPaveSet(const Standard_Integer nED,const Standard_Integer nVD,const Standard_Integer nFD,const BOPTools_ListOfPaveBlock& aLPB) ; -Standard_EXPORT void FillSplitEdgesPool(const Standard_Integer nED) ; -Standard_EXPORT void MakeSplitEdges(const Standard_Integer nED,const Standard_Integer nFD) ; -Standard_EXPORT void MakeSplitEdge(const TopoDS_Edge& aS1,const TopoDS_Face& aF,const TopoDS_Vertex& aV1,const Standard_Real aP1,const TopoDS_Vertex& aV2,const Standard_Real aP2,TopoDS_Edge& aNewEdge) ; - - - // Fields PROTECTED - // -NMTTools_PPaveFiller myFiller; -NMTDS_PShapesDataStructure myDS; -Standard_Boolean myIsDone; -BOPTools_IndexedDataMapOfIntegerDEInfo myDEMap; - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTTools/NMTTools_DEProcessor.ixx b/src/NMTTools/NMTTools_DEProcessor.ixx deleted file mode 100644 index 68448380c..000000000 --- a/src/NMTTools/NMTTools_DEProcessor.ixx +++ /dev/null @@ -1,19 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#include - - - - diff --git a/src/NMTTools/NMTTools_DEProcessor.jxx b/src/NMTTools/NMTTools_DEProcessor.jxx deleted file mode 100644 index a8c418d4e..000000000 --- a/src/NMTTools/NMTTools_DEProcessor.jxx +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef _NMTTools_PaveFiller_HeaderFile -#include -#endif -#ifndef _BOPTools_ListOfPaveBlock_HeaderFile -#include -#endif -#ifndef _TopoDS_Edge_HeaderFile -#include -#endif -#ifndef _TopoDS_Face_HeaderFile -#include -#endif -#ifndef _TopoDS_Vertex_HeaderFile -#include -#endif -#ifndef _NMTTools_DEProcessor_HeaderFile -#include -#endif diff --git a/src/NMTTools/NMTTools_DSFiller.cdl b/src/NMTTools/NMTTools_DSFiller.cdl deleted file mode 100644 index 069e82c7c..000000000 --- a/src/NMTTools/NMTTools_DSFiller.cdl +++ /dev/null @@ -1,80 +0,0 @@ --- File: NMTTools_DSFiller.cdl --- Created: Fri Dec 5 13:57:03 2003 --- Author: Peter KURNEV --- ----Copyright: Matra Datavision 2003 - - -class DSFiller from NMTTools - - ---Purpose: - -uses - Shape from TopoDS, - InterferencePool from BOPTools, - PInterferencePool from BOPTools, - ShapesDataStructure from NMTDS, - PShapesDataStructure from NMTDS, - PPaveFiller from NMTTools, - PaveFiller from NMTTools ---raises - -is - Create - returns DSFiller from NMTTools; - - Destroy (me:out); - ---C++: alias ~ - ---Purpose: Destructor - -- - -- Selectors/Modifiers - SetCompositeShape (me:out; - aS: Shape from TopoDS); - - CompositeShape(me) - returns Shape from TopoDS; - ---C++: return const& - - SetNewFiller(me; - aFlag:Boolean from Standard); - - IsNewFiller(me) - returns Boolean from Standard; - -- - -- Perform the algo - Perform (me:out); - -- - -- Protected section - Clear (me:out) - is protected; - -- - -- Query section - DS (me) - returns ShapesDataStructure from NMTDS; - ---C++: return const & - - InterfPool (me) - returns InterferencePool from BOPTools; - ---C++: return const & - - IsDone(me) - returns Boolean from Standard; - - PaveFiller(me) - returns PaveFiller from NMTTools; - ---C++: return const & - - ChangePaveFiller (me:out) - returns PaveFiller from NMTTools; - ---C++: return & - -fields - myCompositeShape : Shape from TopoDS is protected; - myDS : PShapesDataStructure from NMTDS is protected; - myInterfPool : PInterferencePool from BOPTools is protected; - myPaveFiller : PPaveFiller from NMTTools is protected; - - myIsDone : Boolean from Standard is protected; - myIsNewFiller : Boolean from Standard is protected; - -end DSFiller; diff --git a/src/NMTTools/NMTTools_DSFiller.cxx b/src/NMTTools/NMTTools_DSFiller.cxx deleted file mode 100644 index d0e53b50c..000000000 --- a/src/NMTTools/NMTTools_DSFiller.cxx +++ /dev/null @@ -1,149 +0,0 @@ -// File: NMTTools_DSFiller.cxx -// Created: Fri Dec 5 14:06:34 2003 -// Author: Peter KURNEV -// - - -#include -#include - -//======================================================================= -// function: NMTTools_DSFiller::NMTTools_DSFiller -// purpose: -//======================================================================= - NMTTools_DSFiller::NMTTools_DSFiller() -{ - myPaveFiller=NULL; - myInterfPool=NULL; - myDS=NULL; - myIsNewFiller=Standard_True; - myIsDone=Standard_False; -} -//======================================================================= -// function:Destroy -// purpose: -//======================================================================= - void NMTTools_DSFiller::Destroy() -{ - Clear(); -} -//======================================================================= -// function: Clear -// purpose: -//======================================================================= - void NMTTools_DSFiller::Clear() -{ - if (myPaveFiller!=NULL) { - delete myPaveFiller; - } - if (myInterfPool!=NULL) { - delete myInterfPool; - } - if (myDS!=NULL) { - delete myDS; - } - myPaveFiller=NULL; - myInterfPool=NULL; - myDS=NULL; -} -//======================================================================= -// function: SetCompositeShape -// purpose: -//======================================================================= - void NMTTools_DSFiller::SetCompositeShape(const TopoDS_Shape& aS) -{ - myCompositeShape=aS; -} -//======================================================================= -// function: CompositeShape -// purpose: -//======================================================================= - const TopoDS_Shape& NMTTools_DSFiller::CompositeShape()const -{ - return myCompositeShape; -} -//======================================================================= -// function: SetNewFiller -// purpose: -//======================================================================= - void NMTTools_DSFiller::SetNewFiller(const Standard_Boolean aFlag) const -{ - NMTTools_DSFiller* pDSFiller=(NMTTools_DSFiller*)this; - pDSFiller->myIsNewFiller=aFlag; -} -//======================================================================= -// function: IsNewFiller -// purpose: -//======================================================================= - Standard_Boolean NMTTools_DSFiller::IsNewFiller() const -{ - return myIsNewFiller; -} -//======================================================================= -// function: DS -// purpose: -//======================================================================= - const NMTDS_ShapesDataStructure& NMTTools_DSFiller::DS () const -{ - return *myDS; -} -//======================================================================= -// function: InterfPool -// purpose: -//======================================================================= - const BOPTools_InterferencePool& NMTTools_DSFiller::InterfPool () const -{ - return *myInterfPool; -} -//======================================================================= -// function: IsDone -// purpose: -//======================================================================= - Standard_Boolean NMTTools_DSFiller::IsDone()const -{ - return myIsDone; -} -//======================================================================= -// function: PaveFiller -// purpose: -//======================================================================= - const NMTTools_PaveFiller& NMTTools_DSFiller::PaveFiller()const -{ - return *myPaveFiller; -} -//======================================================================= -// function: ChangePaveFiller -// purpose: -//======================================================================= - NMTTools_PaveFiller& NMTTools_DSFiller::ChangePaveFiller() -{ - return *myPaveFiller; -} -//======================================================================= -// function: Perform -// purpose: -//======================================================================= - void NMTTools_DSFiller::Perform() -{ - myIsDone=Standard_False; - // - if (myCompositeShape.IsNull()) { - return; - } - // - // - // Clear contents of the DS if it was before - Clear(); - // - myIsNewFiller=Standard_True; - // - myDS = new NMTDS_ShapesDataStructure; - myDS->SetCompositeShape(myCompositeShape); - myDS->Init(); - // - myInterfPool= new BOPTools_InterferencePool (*myDS); - // - myPaveFiller = new NMTTools_PaveFiller(*myInterfPool); - myPaveFiller->Perform(); - myIsDone=myPaveFiller->IsDone(); -} diff --git a/src/NMTTools/NMTTools_DSFiller.hxx b/src/NMTTools/NMTTools_DSFiller.hxx deleted file mode 100644 index 09c398e8e..000000000 --- a/src/NMTTools/NMTTools_DSFiller.hxx +++ /dev/null @@ -1,123 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. - -#ifndef _NMTTools_DSFiller_HeaderFile -#define _NMTTools_DSFiller_HeaderFile - -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _NMTDS_PShapesDataStructure_HeaderFile -#include -#endif -#ifndef _BOPTools_PInterferencePool_HeaderFile -#include -#endif -#ifndef _NMTTools_PPaveFiller_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class TopoDS_Shape; -class NMTDS_ShapesDataStructure; -class BOPTools_InterferencePool; -class NMTTools_PaveFiller; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class NMTTools_DSFiller { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT NMTTools_DSFiller(); -Standard_EXPORT void Destroy() ; -~NMTTools_DSFiller() -{ - Destroy(); -} - -Standard_EXPORT void SetCompositeShape(const TopoDS_Shape& aS) ; -Standard_EXPORT const TopoDS_Shape& CompositeShape() const; -Standard_EXPORT void SetNewFiller(const Standard_Boolean aFlag) const; -Standard_EXPORT Standard_Boolean IsNewFiller() const; -Standard_EXPORT void Perform() ; -Standard_EXPORT const NMTDS_ShapesDataStructure& DS() const; -Standard_EXPORT const BOPTools_InterferencePool& InterfPool() const; -Standard_EXPORT Standard_Boolean IsDone() const; -Standard_EXPORT const NMTTools_PaveFiller& PaveFiller() const; -Standard_EXPORT NMTTools_PaveFiller& ChangePaveFiller() ; - - - - - -protected: - - // Methods PROTECTED - // -Standard_EXPORT void Clear() ; - - - // Fields PROTECTED - // -TopoDS_Shape myCompositeShape; -NMTDS_PShapesDataStructure myDS; -BOPTools_PInterferencePool myInterfPool; -NMTTools_PPaveFiller myPaveFiller; -Standard_Boolean myIsDone; -Standard_Boolean myIsNewFiller; - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTTools/NMTTools_DSFiller.ixx b/src/NMTTools/NMTTools_DSFiller.ixx deleted file mode 100644 index e55cf6738..000000000 --- a/src/NMTTools/NMTTools_DSFiller.ixx +++ /dev/null @@ -1,19 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#include - - - - diff --git a/src/NMTTools/NMTTools_DSFiller.jxx b/src/NMTTools/NMTTools_DSFiller.jxx deleted file mode 100644 index 078fd15ab..000000000 --- a/src/NMTTools/NMTTools_DSFiller.jxx +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _NMTDS_ShapesDataStructure_HeaderFile -#include -#endif -#ifndef _BOPTools_InterferencePool_HeaderFile -#include -#endif -#ifndef _NMTTools_PaveFiller_HeaderFile -#include -#endif -#ifndef _NMTTools_DSFiller_HeaderFile -#include -#endif diff --git a/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger.hxx b/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger.hxx deleted file mode 100644 index cf09e4f59..000000000 --- a/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger.hxx +++ /dev/null @@ -1,136 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#ifndef _NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_HeaderFile -#define _NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_HeaderFile -#include -#endif - -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _TColStd_IndexedMapOfInteger_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -class TColStd_IndexedMapOfInteger; -class TColStd_MapIntegerHasher; -class NMTTools_IndexedDataMapOfIndexedMapOfInteger; - - -class NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger : public TCollection_MapNode { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger(const Standard_Integer& K1,const Standard_Integer K2,const TColStd_IndexedMapOfInteger& I,const TCollection_MapNodePtr& n1,const TCollection_MapNodePtr& n2); - Standard_Integer& Key1() const; - Standard_Integer& Key2() const; - TCollection_MapNodePtr& Next2() const; - TColStd_IndexedMapOfInteger& Value() const; -Standard_EXPORT ~NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger(); - - - - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -Standard_Integer myKey1; -Standard_Integer myKey2; -TColStd_IndexedMapOfInteger myValue; -TCollection_MapNodePtr myNext2; - - -}; - -#define TheKey Standard_Integer -#define TheKey_hxx -#define TheItem TColStd_IndexedMapOfInteger -#define TheItem_hxx -#define Hasher TColStd_MapIntegerHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger -#define TCollection_IndexedDataMapNode_Type_() NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_Type_() -#define TCollection_IndexedDataMap NMTTools_IndexedDataMapOfIndexedMapOfInteger -#define TCollection_IndexedDataMap_hxx - -#include - -#undef TheKey -#undef TheKey_hxx -#undef TheItem -#undef TheItem_hxx -#undef Hasher -#undef Hasher_hxx -#undef TCollection_IndexedDataMapNode -#undef TCollection_IndexedDataMapNode_hxx -#undef Handle_TCollection_IndexedDataMapNode -#undef TCollection_IndexedDataMapNode_Type_ -#undef TCollection_IndexedDataMap -#undef TCollection_IndexedDataMap_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_0.cxx b/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_0.cxx deleted file mode 100644 index 1d989956b..000000000 --- a/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_0.cxx +++ /dev/null @@ -1,93 +0,0 @@ -// File generated by CPPExt (Transient) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _TColStd_IndexedMapOfInteger_HeaderFile -#include -#endif -#ifndef _TColStd_MapIntegerHasher_HeaderFile -#include -#endif -#ifndef _NMTTools_IndexedDataMapOfIndexedMapOfInteger_HeaderFile -#include -#endif -NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger::~NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger() {} - - - -Standard_EXPORT Handle_Standard_Type& NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger", - sizeof(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger) Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger))) { - _anOtherObject = Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger)((Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger::DynamicType() const -{ - return STANDARD_TYPE(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger) ; -} -Standard_Boolean NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger) == AType || TCollection_MapNode::IsKind(AType)); -} -Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger::~Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger() {} -#define TheKey Standard_Integer -#define TheKey_hxx -#define TheItem TColStd_IndexedMapOfInteger -#define TheItem_hxx -#define Hasher TColStd_MapIntegerHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger -#define TCollection_IndexedDataMapNode_Type_() NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_Type_() -#define TCollection_IndexedDataMap NMTTools_IndexedDataMapOfIndexedMapOfInteger -#define TCollection_IndexedDataMap_hxx -#include - diff --git a/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape.hxx b/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape.hxx deleted file mode 100644 index 7721dd936..000000000 --- a/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape.hxx +++ /dev/null @@ -1,140 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#ifndef _NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_HeaderFile -#define _NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_HeaderFile -#include -#endif - -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _TopTools_IndexedMapOfShape_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -class TopoDS_Shape; -class TopTools_IndexedMapOfShape; -class TopTools_ShapeMapHasher; -class NMTTools_IndexedDataMapOfShapeIndexedMapOfShape; - - -class NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape : public TCollection_MapNode { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape(const TopoDS_Shape& K1,const Standard_Integer K2,const TopTools_IndexedMapOfShape& I,const TCollection_MapNodePtr& n1,const TCollection_MapNodePtr& n2); - TopoDS_Shape& Key1() const; - Standard_Integer& Key2() const; - TCollection_MapNodePtr& Next2() const; - TopTools_IndexedMapOfShape& Value() const; -Standard_EXPORT ~NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape(); - - - - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -TopoDS_Shape myKey1; -Standard_Integer myKey2; -TopTools_IndexedMapOfShape myValue; -TCollection_MapNodePtr myNext2; - - -}; - -#define TheKey TopoDS_Shape -#define TheKey_hxx -#define TheItem TopTools_IndexedMapOfShape -#define TheItem_hxx -#define Hasher TopTools_ShapeMapHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape -#define TCollection_IndexedDataMapNode_Type_() NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_Type_() -#define TCollection_IndexedDataMap NMTTools_IndexedDataMapOfShapeIndexedMapOfShape -#define TCollection_IndexedDataMap_hxx - -#include - -#undef TheKey -#undef TheKey_hxx -#undef TheItem -#undef TheItem_hxx -#undef Hasher -#undef Hasher_hxx -#undef TCollection_IndexedDataMapNode -#undef TCollection_IndexedDataMapNode_hxx -#undef Handle_TCollection_IndexedDataMapNode -#undef TCollection_IndexedDataMapNode_Type_ -#undef TCollection_IndexedDataMap -#undef TCollection_IndexedDataMap_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_0.cxx b/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_0.cxx deleted file mode 100644 index beaae44e7..000000000 --- a/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_0.cxx +++ /dev/null @@ -1,96 +0,0 @@ -// File generated by CPPExt (Transient) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _TopTools_IndexedMapOfShape_HeaderFile -#include -#endif -#ifndef _TopTools_ShapeMapHasher_HeaderFile -#include -#endif -#ifndef _NMTTools_IndexedDataMapOfShapeIndexedMapOfShape_HeaderFile -#include -#endif -NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape::~NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape() {} - - - -Standard_EXPORT Handle_Standard_Type& NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape", - sizeof(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape) Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape))) { - _anOtherObject = Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape)((Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape::DynamicType() const -{ - return STANDARD_TYPE(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape) ; -} -Standard_Boolean NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape) == AType || TCollection_MapNode::IsKind(AType)); -} -Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape::~Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape() {} -#define TheKey TopoDS_Shape -#define TheKey_hxx -#define TheItem TopTools_IndexedMapOfShape -#define TheItem_hxx -#define Hasher TopTools_ShapeMapHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape -#define TCollection_IndexedDataMapNode_Type_() NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_Type_() -#define TCollection_IndexedDataMap NMTTools_IndexedDataMapOfShapeIndexedMapOfShape -#define TCollection_IndexedDataMap_hxx -#include - diff --git a/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock.hxx b/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock.hxx deleted file mode 100644 index 453715207..000000000 --- a/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock.hxx +++ /dev/null @@ -1,140 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#ifndef _NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_HeaderFile -#define _NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_HeaderFile -#include -#endif - -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _BOPTools_PaveBlock_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -class TopoDS_Shape; -class BOPTools_PaveBlock; -class TopTools_ShapeMapHasher; -class NMTTools_IndexedDataMapOfShapePaveBlock; - - -class NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock : public TCollection_MapNode { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock(const TopoDS_Shape& K1,const Standard_Integer K2,const BOPTools_PaveBlock& I,const TCollection_MapNodePtr& n1,const TCollection_MapNodePtr& n2); - TopoDS_Shape& Key1() const; - Standard_Integer& Key2() const; - TCollection_MapNodePtr& Next2() const; - BOPTools_PaveBlock& Value() const; -Standard_EXPORT ~NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock(); - - - - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -TopoDS_Shape myKey1; -Standard_Integer myKey2; -BOPTools_PaveBlock myValue; -TCollection_MapNodePtr myNext2; - - -}; - -#define TheKey TopoDS_Shape -#define TheKey_hxx -#define TheItem BOPTools_PaveBlock -#define TheItem_hxx -#define Hasher TopTools_ShapeMapHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock -#define TCollection_IndexedDataMapNode_Type_() NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_Type_() -#define TCollection_IndexedDataMap NMTTools_IndexedDataMapOfShapePaveBlock -#define TCollection_IndexedDataMap_hxx - -#include - -#undef TheKey -#undef TheKey_hxx -#undef TheItem -#undef TheItem_hxx -#undef Hasher -#undef Hasher_hxx -#undef TCollection_IndexedDataMapNode -#undef TCollection_IndexedDataMapNode_hxx -#undef Handle_TCollection_IndexedDataMapNode -#undef TCollection_IndexedDataMapNode_Type_ -#undef TCollection_IndexedDataMap -#undef TCollection_IndexedDataMap_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_0.cxx b/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_0.cxx deleted file mode 100644 index fe39f5347..000000000 --- a/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_0.cxx +++ /dev/null @@ -1,96 +0,0 @@ -// File generated by CPPExt (Transient) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _BOPTools_PaveBlock_HeaderFile -#include -#endif -#ifndef _TopTools_ShapeMapHasher_HeaderFile -#include -#endif -#ifndef _NMTTools_IndexedDataMapOfShapePaveBlock_HeaderFile -#include -#endif -NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock::~NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock() {} - - - -Standard_EXPORT Handle_Standard_Type& NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock", - sizeof(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock) Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock))) { - _anOtherObject = Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock)((Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock::DynamicType() const -{ - return STANDARD_TYPE(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock) ; -} -Standard_Boolean NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock) == AType || TCollection_MapNode::IsKind(AType)); -} -Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock::~Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock() {} -#define TheKey TopoDS_Shape -#define TheKey_hxx -#define TheItem BOPTools_PaveBlock -#define TheItem_hxx -#define Hasher TopTools_ShapeMapHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock -#define TCollection_IndexedDataMapNode_Type_() NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_Type_() -#define TCollection_IndexedDataMap NMTTools_IndexedDataMapOfShapePaveBlock -#define TCollection_IndexedDataMap_hxx -#include - diff --git a/src/NMTTools/NMTTools_IndexedDataMapOfIndexedMapOfInteger.hxx b/src/NMTTools/NMTTools_IndexedDataMapOfIndexedMapOfInteger.hxx deleted file mode 100644 index f7e220d8e..000000000 --- a/src/NMTTools/NMTTools_IndexedDataMapOfIndexedMapOfInteger.hxx +++ /dev/null @@ -1,133 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. - -#ifndef _NMTTools_IndexedDataMapOfIndexedMapOfInteger_HeaderFile -#define _NMTTools_IndexedDataMapOfIndexedMapOfInteger_HeaderFile - -#ifndef _TCollection_BasicMap_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_DomainError; -class Standard_OutOfRange; -class Standard_NoSuchObject; -class TColStd_IndexedMapOfInteger; -class TColStd_MapIntegerHasher; -class NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class NMTTools_IndexedDataMapOfIndexedMapOfInteger : public TCollection_BasicMap { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT NMTTools_IndexedDataMapOfIndexedMapOfInteger(const Standard_Integer NbBuckets = 1); -Standard_EXPORT NMTTools_IndexedDataMapOfIndexedMapOfInteger& Assign(const NMTTools_IndexedDataMapOfIndexedMapOfInteger& Other) ; - NMTTools_IndexedDataMapOfIndexedMapOfInteger& operator =(const NMTTools_IndexedDataMapOfIndexedMapOfInteger& Other) -{ - return Assign(Other); -} - -Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; -Standard_EXPORT void Clear() ; -~NMTTools_IndexedDataMapOfIndexedMapOfInteger() -{ - Clear(); -} - -Standard_EXPORT Standard_Integer Add(const Standard_Integer& K,const TColStd_IndexedMapOfInteger& I) ; -Standard_EXPORT void Substitute(const Standard_Integer I,const Standard_Integer& K,const TColStd_IndexedMapOfInteger& T) ; -Standard_EXPORT void RemoveLast() ; -Standard_EXPORT Standard_Boolean Contains(const Standard_Integer& K) const; -Standard_EXPORT const Standard_Integer& FindKey(const Standard_Integer I) const; -Standard_EXPORT const TColStd_IndexedMapOfInteger& FindFromIndex(const Standard_Integer I) const; - const TColStd_IndexedMapOfInteger& operator ()(const Standard_Integer I) const -{ - return FindFromIndex(I); -} - -Standard_EXPORT TColStd_IndexedMapOfInteger& ChangeFromIndex(const Standard_Integer I) ; - TColStd_IndexedMapOfInteger& operator ()(const Standard_Integer I) -{ - return ChangeFromIndex(I); -} - -Standard_EXPORT Standard_Integer FindIndex(const Standard_Integer& K) const; -Standard_EXPORT const TColStd_IndexedMapOfInteger& FindFromKey(const Standard_Integer& K) const; -Standard_EXPORT TColStd_IndexedMapOfInteger& ChangeFromKey(const Standard_Integer& K) ; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // -Standard_EXPORT NMTTools_IndexedDataMapOfIndexedMapOfInteger(const NMTTools_IndexedDataMapOfIndexedMapOfInteger& Other); - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTTools/NMTTools_IndexedDataMapOfIndexedMapOfInteger_0.cxx b/src/NMTTools/NMTTools_IndexedDataMapOfIndexedMapOfInteger_0.cxx deleted file mode 100644 index 0c4124fbc..000000000 --- a/src/NMTTools/NMTTools_IndexedDataMapOfIndexedMapOfInteger_0.cxx +++ /dev/null @@ -1,50 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#include - -#ifndef _Standard_DomainError_HeaderFile -#include -#endif -#ifndef _Standard_OutOfRange_HeaderFile -#include -#endif -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _TColStd_IndexedMapOfInteger_HeaderFile -#include -#endif -#ifndef _TColStd_MapIntegerHasher_HeaderFile -#include -#endif -#ifndef _NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_HeaderFile -#include -#endif - - -#define TheKey Standard_Integer -#define TheKey_hxx -#define TheItem TColStd_IndexedMapOfInteger -#define TheItem_hxx -#define Hasher TColStd_MapIntegerHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger -#define TCollection_IndexedDataMapNode_Type_() NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_Type_() -#define TCollection_IndexedDataMap NMTTools_IndexedDataMapOfIndexedMapOfInteger -#define TCollection_IndexedDataMap_hxx -#include - diff --git a/src/NMTTools/NMTTools_IndexedDataMapOfShapeIndexedMapOfShape.hxx b/src/NMTTools/NMTTools_IndexedDataMapOfShapeIndexedMapOfShape.hxx deleted file mode 100644 index 9a7265cde..000000000 --- a/src/NMTTools/NMTTools_IndexedDataMapOfShapeIndexedMapOfShape.hxx +++ /dev/null @@ -1,134 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. - -#ifndef _NMTTools_IndexedDataMapOfShapeIndexedMapOfShape_HeaderFile -#define _NMTTools_IndexedDataMapOfShapeIndexedMapOfShape_HeaderFile - -#ifndef _TCollection_BasicMap_HeaderFile -#include -#endif -#ifndef _Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_DomainError; -class Standard_OutOfRange; -class Standard_NoSuchObject; -class TopoDS_Shape; -class TopTools_IndexedMapOfShape; -class TopTools_ShapeMapHasher; -class NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class NMTTools_IndexedDataMapOfShapeIndexedMapOfShape : public TCollection_BasicMap { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT NMTTools_IndexedDataMapOfShapeIndexedMapOfShape(const Standard_Integer NbBuckets = 1); -Standard_EXPORT NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& Assign(const NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& Other) ; - NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& operator =(const NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& Other) -{ - return Assign(Other); -} - -Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; -Standard_EXPORT void Clear() ; -~NMTTools_IndexedDataMapOfShapeIndexedMapOfShape() -{ - Clear(); -} - -Standard_EXPORT Standard_Integer Add(const TopoDS_Shape& K,const TopTools_IndexedMapOfShape& I) ; -Standard_EXPORT void Substitute(const Standard_Integer I,const TopoDS_Shape& K,const TopTools_IndexedMapOfShape& T) ; -Standard_EXPORT void RemoveLast() ; -Standard_EXPORT Standard_Boolean Contains(const TopoDS_Shape& K) const; -Standard_EXPORT const TopoDS_Shape& FindKey(const Standard_Integer I) const; -Standard_EXPORT const TopTools_IndexedMapOfShape& FindFromIndex(const Standard_Integer I) const; - const TopTools_IndexedMapOfShape& operator ()(const Standard_Integer I) const -{ - return FindFromIndex(I); -} - -Standard_EXPORT TopTools_IndexedMapOfShape& ChangeFromIndex(const Standard_Integer I) ; - TopTools_IndexedMapOfShape& operator ()(const Standard_Integer I) -{ - return ChangeFromIndex(I); -} - -Standard_EXPORT Standard_Integer FindIndex(const TopoDS_Shape& K) const; -Standard_EXPORT const TopTools_IndexedMapOfShape& FindFromKey(const TopoDS_Shape& K) const; -Standard_EXPORT TopTools_IndexedMapOfShape& ChangeFromKey(const TopoDS_Shape& K) ; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // -Standard_EXPORT NMTTools_IndexedDataMapOfShapeIndexedMapOfShape(const NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& Other); - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTTools/NMTTools_IndexedDataMapOfShapeIndexedMapOfShape_0.cxx b/src/NMTTools/NMTTools_IndexedDataMapOfShapeIndexedMapOfShape_0.cxx deleted file mode 100644 index 44fb79552..000000000 --- a/src/NMTTools/NMTTools_IndexedDataMapOfShapeIndexedMapOfShape_0.cxx +++ /dev/null @@ -1,53 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#include - -#ifndef _Standard_DomainError_HeaderFile -#include -#endif -#ifndef _Standard_OutOfRange_HeaderFile -#include -#endif -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _TopTools_IndexedMapOfShape_HeaderFile -#include -#endif -#ifndef _TopTools_ShapeMapHasher_HeaderFile -#include -#endif -#ifndef _NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_HeaderFile -#include -#endif - - -#define TheKey TopoDS_Shape -#define TheKey_hxx -#define TheItem TopTools_IndexedMapOfShape -#define TheItem_hxx -#define Hasher TopTools_ShapeMapHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape -#define TCollection_IndexedDataMapNode_Type_() NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_Type_() -#define TCollection_IndexedDataMap NMTTools_IndexedDataMapOfShapeIndexedMapOfShape -#define TCollection_IndexedDataMap_hxx -#include - diff --git a/src/NMTTools/NMTTools_IndexedDataMapOfShapePaveBlock.hxx b/src/NMTTools/NMTTools_IndexedDataMapOfShapePaveBlock.hxx deleted file mode 100644 index 7880c6c78..000000000 --- a/src/NMTTools/NMTTools_IndexedDataMapOfShapePaveBlock.hxx +++ /dev/null @@ -1,134 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. - -#ifndef _NMTTools_IndexedDataMapOfShapePaveBlock_HeaderFile -#define _NMTTools_IndexedDataMapOfShapePaveBlock_HeaderFile - -#ifndef _TCollection_BasicMap_HeaderFile -#include -#endif -#ifndef _Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_DomainError; -class Standard_OutOfRange; -class Standard_NoSuchObject; -class TopoDS_Shape; -class BOPTools_PaveBlock; -class TopTools_ShapeMapHasher; -class NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class NMTTools_IndexedDataMapOfShapePaveBlock : public TCollection_BasicMap { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT NMTTools_IndexedDataMapOfShapePaveBlock(const Standard_Integer NbBuckets = 1); -Standard_EXPORT NMTTools_IndexedDataMapOfShapePaveBlock& Assign(const NMTTools_IndexedDataMapOfShapePaveBlock& Other) ; - NMTTools_IndexedDataMapOfShapePaveBlock& operator =(const NMTTools_IndexedDataMapOfShapePaveBlock& Other) -{ - return Assign(Other); -} - -Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; -Standard_EXPORT void Clear() ; -~NMTTools_IndexedDataMapOfShapePaveBlock() -{ - Clear(); -} - -Standard_EXPORT Standard_Integer Add(const TopoDS_Shape& K,const BOPTools_PaveBlock& I) ; -Standard_EXPORT void Substitute(const Standard_Integer I,const TopoDS_Shape& K,const BOPTools_PaveBlock& T) ; -Standard_EXPORT void RemoveLast() ; -Standard_EXPORT Standard_Boolean Contains(const TopoDS_Shape& K) const; -Standard_EXPORT const TopoDS_Shape& FindKey(const Standard_Integer I) const; -Standard_EXPORT const BOPTools_PaveBlock& FindFromIndex(const Standard_Integer I) const; - const BOPTools_PaveBlock& operator ()(const Standard_Integer I) const -{ - return FindFromIndex(I); -} - -Standard_EXPORT BOPTools_PaveBlock& ChangeFromIndex(const Standard_Integer I) ; - BOPTools_PaveBlock& operator ()(const Standard_Integer I) -{ - return ChangeFromIndex(I); -} - -Standard_EXPORT Standard_Integer FindIndex(const TopoDS_Shape& K) const; -Standard_EXPORT const BOPTools_PaveBlock& FindFromKey(const TopoDS_Shape& K) const; -Standard_EXPORT BOPTools_PaveBlock& ChangeFromKey(const TopoDS_Shape& K) ; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // -Standard_EXPORT NMTTools_IndexedDataMapOfShapePaveBlock(const NMTTools_IndexedDataMapOfShapePaveBlock& Other); - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTTools/NMTTools_IndexedDataMapOfShapePaveBlock_0.cxx b/src/NMTTools/NMTTools_IndexedDataMapOfShapePaveBlock_0.cxx deleted file mode 100644 index 4f55cebf3..000000000 --- a/src/NMTTools/NMTTools_IndexedDataMapOfShapePaveBlock_0.cxx +++ /dev/null @@ -1,53 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#include - -#ifndef _Standard_DomainError_HeaderFile -#include -#endif -#ifndef _Standard_OutOfRange_HeaderFile -#include -#endif -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _BOPTools_PaveBlock_HeaderFile -#include -#endif -#ifndef _TopTools_ShapeMapHasher_HeaderFile -#include -#endif -#ifndef _NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_HeaderFile -#include -#endif - - -#define TheKey TopoDS_Shape -#define TheKey_hxx -#define TheItem BOPTools_PaveBlock -#define TheItem_hxx -#define Hasher TopTools_ShapeMapHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock -#define TCollection_IndexedDataMapNode_Type_() NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_Type_() -#define TCollection_IndexedDataMap NMTTools_IndexedDataMapOfShapePaveBlock -#define TCollection_IndexedDataMap_hxx -#include - diff --git a/src/NMTTools/NMTTools_IteratorOfCoupleOfShape.cdl b/src/NMTTools/NMTTools_IteratorOfCoupleOfShape.cdl deleted file mode 100644 index 1d59d74b8..000000000 --- a/src/NMTTools/NMTTools_IteratorOfCoupleOfShape.cdl +++ /dev/null @@ -1,55 +0,0 @@ --- File: NMTTools_IteratorOfCoupleOfShape.cdl --- Created: Thu Dec 4 16:57:48 2003 --- Author: Peter KURNEV --- ----Copyright: Matra Datavision 2003 - - -class IteratorOfCoupleOfShape from NMTTools - inherits IteratorOfCoupleOfShape from BOPTools - - ---Purpose: - -uses - ShapeEnum from TopAbs, - IndexedMapOfCoupleOfInteger from BOPTools, - PShapesDataStructure from NMTDS, - ShapesDataStructure from NMTDS - -raises - NoSuchObject from Standard - -is - Create - returns IteratorOfCoupleOfShape from NMTTools; - - SetDS(me:out; - pDS:PShapesDataStructure from NMTDS); - - Initialize(me: in out; - Type1: ShapeEnum from TopAbs; - Type2: ShapeEnum from TopAbs) - raises NoSuchObject from Standard - is redefined; - - Current(me; Index1: in out Integer from Standard; - Index2: in out Integer from Standard; - WithSubShape: out Boolean from Standard) - is redefined; - - More(me) - returns Boolean from Standard - is redefined; - - DS(me) - returns ShapesDataStructure from NMTDS; - ---C++:return const & - -fields - myPNMTPS : PShapesDataStructure from NMTDS is protected; - myMap : IndexedMapOfCoupleOfInteger from BOPTools is protected; - myIndex1 : Integer from Standard is protected; - myIndex2 : Integer from Standard is protected; - myWithSubShapeFlag: Boolean from Standard is protected; - -end IteratorOfCoupleOfShape; diff --git a/src/NMTTools/NMTTools_IteratorOfCoupleOfShape.cxx b/src/NMTTools/NMTTools_IteratorOfCoupleOfShape.cxx deleted file mode 100644 index 155b9b843..000000000 --- a/src/NMTTools/NMTTools_IteratorOfCoupleOfShape.cxx +++ /dev/null @@ -1,140 +0,0 @@ -// File: NMTTools_IteratorOfCoupleOfShape.cxx -// Created: Thu Dec 4 17:00:03 2003 -// Author: Peter KURNEV -// - - -#include -#include -#include -#include -#include -#include - -//======================================================================= -// function: -// purpose: -//======================================================================= - NMTTools_IteratorOfCoupleOfShape::NMTTools_IteratorOfCoupleOfShape() -: - BOPTools_IteratorOfCoupleOfShape() -{ - myIndex1=0; - myIndex2=0; - myWithSubShapeFlag=Standard_False; -} -//======================================================================= -// function: SetDS -// purpose: -//======================================================================= - void NMTTools_IteratorOfCoupleOfShape::SetDS(const NMTDS_PShapesDataStructure& PDS) -{ - myPNMTPS=PDS; - SetDataStructure(myPNMTPS); -} -//======================================================================= -// function: Initialize -// purpose: -//======================================================================= - void NMTTools_IteratorOfCoupleOfShape::Initialize(const TopAbs_ShapeEnum Type1, - const TopAbs_ShapeEnum Type2) -{ - if(myPDS==NULL) { - Standard_NoSuchObject::Raise("NMTTools_IteratorOfCoupleOfShape::Initialize: myPDS==NULL"); - } - // - myType1 = Type1; - myType2 = Type2; - myCurrentIndex1 = -1; - myCurrentIndex2 = -1; - // - myFirstLowerIndex=1; - myFirstUpperIndex=myPNMTPS->NumberOfShapesOfTheObject(); - mySecondLowerIndex=myFirstUpperIndex+1; - mySecondUpperIndex=myFirstUpperIndex+myPNMTPS->NumberOfShapesOfTheTool(); - // - Standard_Integer n1, n2, aIR1, aIR2;//, aN1, aN2, aNS; - // - const NMTDS_CArray1OfIndexRange& aRanges=myPNMTPS->Ranges(); - // - //aNS=myPNMTPS->NumberOfShapesOfTheObject(); - myIndex1=0; - myIndex2=0; - myWithSubShapeFlag=Standard_False; - // - myListOfCouple.Clear(); - myMap.Clear(); - // - NextP(); - for (; MoreP(); NextP()) { - CurrentP(n1, n2); - // - aIR1=myPNMTPS->ShapeRangeIndex(n1); - aIR2=myPNMTPS->ShapeRangeIndex(n2); - if (aIR1==aIR2){ - continue; - } - // - BOPTools_CoupleOfInteger aCouple(n1, n2); - myListOfCouple.Append(aCouple); - // - /* - aN1=(n1>aNS)? n1-aNS : n1; - aN2=(n2>aNS)? n2-aNS : n2; - BOPTools_CoupleOfInteger aCoupleX(aN1, aN2); - myMap.Add(aCoupleX); - */ - } - myIterator.Initialize(myListOfCouple); -} -//======================================================================= -// function: Current -// purpose: -//======================================================================= - void NMTTools_IteratorOfCoupleOfShape::Current(Standard_Integer& aIndex1, - Standard_Integer& aIndex2, - Standard_Boolean& aWithSubShape) const -{ - aIndex1=myIndex1; - aIndex2=myIndex2; - aWithSubShape=myWithSubShapeFlag; -} -//======================================================================= -// function: More -// purpose: -//======================================================================= - Standard_Boolean NMTTools_IteratorOfCoupleOfShape::More()const -{ - Standard_Boolean bMore, bWithSubShape; - Standard_Integer n1, n2, aNS, aN1, aN2; - BOPTools_CoupleOfInteger aCoupleX; - NMTTools_IteratorOfCoupleOfShape* pIt=(NMTTools_IteratorOfCoupleOfShape*)this; - // - aNS=myPNMTPS->NumberOfShapesOfTheObject(); - pIt->myIndex1=0; - pIt->myIndex2=0; - pIt->myWithSubShapeFlag=Standard_False; - // - while (1) { - bMore=myIterator.More(); - if (!bMore) { - break; - } - // - BOPTools_IteratorOfCoupleOfShape::Current(n1, n2, bWithSubShape); - aN1=(n1>aNS)? n1-aNS : n1; - aN2=(n2>aNS)? n2-aNS : n2; - aCoupleX.SetCouple(aN1, aN2); - if (!myMap.Contains(aCoupleX)) { - pIt->myMap.Add(aCoupleX); - // - pIt->myIndex1=aN1; - pIt->myIndex2=aN2; - pIt->myWithSubShapeFlag=bWithSubShape; - break; - } - // - pIt->Next(); - } - return bMore; -} diff --git a/src/NMTTools/NMTTools_IteratorOfCoupleOfShape.hxx b/src/NMTTools/NMTTools_IteratorOfCoupleOfShape.hxx deleted file mode 100644 index bcd6d0ef0..000000000 --- a/src/NMTTools/NMTTools_IteratorOfCoupleOfShape.hxx +++ /dev/null @@ -1,111 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. - -#ifndef _NMTTools_IteratorOfCoupleOfShape_HeaderFile -#define _NMTTools_IteratorOfCoupleOfShape_HeaderFile - -#ifndef _NMTDS_PShapesDataStructure_HeaderFile -#include -#endif -#ifndef _BOPTools_IndexedMapOfCoupleOfInteger_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -#ifndef _BOPTools_IteratorOfCoupleOfShape_HeaderFile -#include -#endif -#ifndef _TopAbs_ShapeEnum_HeaderFile -#include -#endif -class Standard_NoSuchObject; -class NMTDS_ShapesDataStructure; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class NMTTools_IteratorOfCoupleOfShape : public BOPTools_IteratorOfCoupleOfShape { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT NMTTools_IteratorOfCoupleOfShape(); -Standard_EXPORT void SetDS(const NMTDS_PShapesDataStructure& pDS) ; -Standard_EXPORT virtual void Initialize(const TopAbs_ShapeEnum Type1,const TopAbs_ShapeEnum Type2) ; -Standard_EXPORT virtual void Current(Standard_Integer& Index1,Standard_Integer& Index2,Standard_Boolean& WithSubShape) const; -Standard_EXPORT virtual Standard_Boolean More() const; -Standard_EXPORT const NMTDS_ShapesDataStructure& DS() const; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // -NMTDS_PShapesDataStructure myPNMTPS; -BOPTools_IndexedMapOfCoupleOfInteger myMap; -Standard_Integer myIndex1; -Standard_Integer myIndex2; -Standard_Boolean myWithSubShapeFlag; - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTTools/NMTTools_IteratorOfCoupleOfShape.ixx b/src/NMTTools/NMTTools_IteratorOfCoupleOfShape.ixx deleted file mode 100644 index f83e9fb6a..000000000 --- a/src/NMTTools/NMTTools_IteratorOfCoupleOfShape.ixx +++ /dev/null @@ -1,19 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#include - - - - diff --git a/src/NMTTools/NMTTools_IteratorOfCoupleOfShape.jxx b/src/NMTTools/NMTTools_IteratorOfCoupleOfShape.jxx deleted file mode 100644 index de093960b..000000000 --- a/src/NMTTools/NMTTools_IteratorOfCoupleOfShape.jxx +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _NMTDS_ShapesDataStructure_HeaderFile -#include -#endif -#ifndef _NMTTools_IteratorOfCoupleOfShape_HeaderFile -#include -#endif diff --git a/src/NMTTools/NMTTools_ListIteratorOfListOfCommonBlock.hxx b/src/NMTTools/NMTTools_ListIteratorOfListOfCommonBlock.hxx deleted file mode 100644 index 362033001..000000000 --- a/src/NMTTools/NMTTools_ListIteratorOfListOfCommonBlock.hxx +++ /dev/null @@ -1,124 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. - -#ifndef _NMTTools_ListIteratorOfListOfCommonBlock_HeaderFile -#define _NMTTools_ListIteratorOfListOfCommonBlock_HeaderFile - -#ifndef _Standard_Address_HeaderFile -#include -#endif -#ifndef _Handle_NMTTools_ListNodeOfListOfCommonBlock_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_NoMoreObject; -class Standard_NoSuchObject; -class NMTTools_ListOfCommonBlock; -class NMTTools_CommonBlock; -class NMTTools_ListNodeOfListOfCommonBlock; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class NMTTools_ListIteratorOfListOfCommonBlock { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT NMTTools_ListIteratorOfListOfCommonBlock(); -Standard_EXPORT NMTTools_ListIteratorOfListOfCommonBlock(const NMTTools_ListOfCommonBlock& L); -Standard_EXPORT void Initialize(const NMTTools_ListOfCommonBlock& L) ; - Standard_Boolean More() const; -Standard_EXPORT void Next() ; -Standard_EXPORT NMTTools_CommonBlock& Value() const; - - -friend class NMTTools_ListOfCommonBlock; - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -Standard_Address current; -Standard_Address previous; - - -}; - -#define Item NMTTools_CommonBlock -#define Item_hxx -#define TCollection_ListNode NMTTools_ListNodeOfListOfCommonBlock -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTTools_ListIteratorOfListOfCommonBlock -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTTools_ListNodeOfListOfCommonBlock -#define TCollection_ListNode_Type_() NMTTools_ListNodeOfListOfCommonBlock_Type_() -#define TCollection_List NMTTools_ListOfCommonBlock -#define TCollection_List_hxx - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTTools/NMTTools_ListIteratorOfListOfCommonBlock_0.cxx b/src/NMTTools/NMTTools_ListIteratorOfListOfCommonBlock_0.cxx deleted file mode 100644 index 10f53977d..000000000 --- a/src/NMTTools/NMTTools_ListIteratorOfListOfCommonBlock_0.cxx +++ /dev/null @@ -1,45 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#include - -#ifndef _Standard_NoMoreObject_HeaderFile -#include -#endif -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _NMTTools_ListOfCommonBlock_HeaderFile -#include -#endif -#ifndef _NMTTools_CommonBlock_HeaderFile -#include -#endif -#ifndef _NMTTools_ListNodeOfListOfCommonBlock_HeaderFile -#include -#endif - - -#define Item NMTTools_CommonBlock -#define Item_hxx -#define TCollection_ListNode NMTTools_ListNodeOfListOfCommonBlock -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTTools_ListIteratorOfListOfCommonBlock -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTTools_ListNodeOfListOfCommonBlock -#define TCollection_ListNode_Type_() NMTTools_ListNodeOfListOfCommonBlock_Type_() -#define TCollection_List NMTTools_ListOfCommonBlock -#define TCollection_List_hxx -#include - diff --git a/src/NMTTools/NMTTools_ListIteratorOfListOfCoupleOfShape.hxx b/src/NMTTools/NMTTools_ListIteratorOfListOfCoupleOfShape.hxx deleted file mode 100644 index 3430c79f8..000000000 --- a/src/NMTTools/NMTTools_ListIteratorOfListOfCoupleOfShape.hxx +++ /dev/null @@ -1,124 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. - -#ifndef _NMTTools_ListIteratorOfListOfCoupleOfShape_HeaderFile -#define _NMTTools_ListIteratorOfListOfCoupleOfShape_HeaderFile - -#ifndef _Standard_Address_HeaderFile -#include -#endif -#ifndef _Handle_NMTTools_ListNodeOfListOfCoupleOfShape_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_NoMoreObject; -class Standard_NoSuchObject; -class NMTTools_ListOfCoupleOfShape; -class NMTTools_CoupleOfShape; -class NMTTools_ListNodeOfListOfCoupleOfShape; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class NMTTools_ListIteratorOfListOfCoupleOfShape { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT NMTTools_ListIteratorOfListOfCoupleOfShape(); -Standard_EXPORT NMTTools_ListIteratorOfListOfCoupleOfShape(const NMTTools_ListOfCoupleOfShape& L); -Standard_EXPORT void Initialize(const NMTTools_ListOfCoupleOfShape& L) ; - Standard_Boolean More() const; -Standard_EXPORT void Next() ; -Standard_EXPORT NMTTools_CoupleOfShape& Value() const; - - -friend class NMTTools_ListOfCoupleOfShape; - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -Standard_Address current; -Standard_Address previous; - - -}; - -#define Item NMTTools_CoupleOfShape -#define Item_hxx -#define TCollection_ListNode NMTTools_ListNodeOfListOfCoupleOfShape -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTTools_ListIteratorOfListOfCoupleOfShape -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTTools_ListNodeOfListOfCoupleOfShape -#define TCollection_ListNode_Type_() NMTTools_ListNodeOfListOfCoupleOfShape_Type_() -#define TCollection_List NMTTools_ListOfCoupleOfShape -#define TCollection_List_hxx - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTTools/NMTTools_ListIteratorOfListOfCoupleOfShape_0.cxx b/src/NMTTools/NMTTools_ListIteratorOfListOfCoupleOfShape_0.cxx deleted file mode 100644 index 9cba93370..000000000 --- a/src/NMTTools/NMTTools_ListIteratorOfListOfCoupleOfShape_0.cxx +++ /dev/null @@ -1,45 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#include - -#ifndef _Standard_NoMoreObject_HeaderFile -#include -#endif -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _NMTTools_ListOfCoupleOfShape_HeaderFile -#include -#endif -#ifndef _NMTTools_CoupleOfShape_HeaderFile -#include -#endif -#ifndef _NMTTools_ListNodeOfListOfCoupleOfShape_HeaderFile -#include -#endif - - -#define Item NMTTools_CoupleOfShape -#define Item_hxx -#define TCollection_ListNode NMTTools_ListNodeOfListOfCoupleOfShape -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTTools_ListIteratorOfListOfCoupleOfShape -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTTools_ListNodeOfListOfCoupleOfShape -#define TCollection_ListNode_Type_() NMTTools_ListNodeOfListOfCoupleOfShape_Type_() -#define TCollection_List NMTTools_ListOfCoupleOfShape -#define TCollection_List_hxx -#include - diff --git a/src/NMTTools/NMTTools_ListNodeOfListOfCommonBlock.hxx b/src/NMTTools/NMTTools_ListNodeOfListOfCommonBlock.hxx deleted file mode 100644 index 88cf5854a..000000000 --- a/src/NMTTools/NMTTools_ListNodeOfListOfCommonBlock.hxx +++ /dev/null @@ -1,123 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#ifndef _NMTTools_ListNodeOfListOfCommonBlock_HeaderFile -#define _NMTTools_ListNodeOfListOfCommonBlock_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_NMTTools_ListNodeOfListOfCommonBlock_HeaderFile -#include -#endif - -#ifndef _NMTTools_CommonBlock_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -class NMTTools_CommonBlock; -class NMTTools_ListOfCommonBlock; -class NMTTools_ListIteratorOfListOfCommonBlock; - - -class NMTTools_ListNodeOfListOfCommonBlock : public TCollection_MapNode { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -NMTTools_ListNodeOfListOfCommonBlock(const NMTTools_CommonBlock& I,const TCollection_MapNodePtr& n); - NMTTools_CommonBlock& Value() const; -Standard_EXPORT ~NMTTools_ListNodeOfListOfCommonBlock(); - - - - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& NMTTools_ListNodeOfListOfCommonBlock_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -NMTTools_CommonBlock myValue; - - -}; - -#define Item NMTTools_CommonBlock -#define Item_hxx -#define TCollection_ListNode NMTTools_ListNodeOfListOfCommonBlock -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTTools_ListIteratorOfListOfCommonBlock -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTTools_ListNodeOfListOfCommonBlock -#define TCollection_ListNode_Type_() NMTTools_ListNodeOfListOfCommonBlock_Type_() -#define TCollection_List NMTTools_ListOfCommonBlock -#define TCollection_List_hxx - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTTools/NMTTools_ListNodeOfListOfCommonBlock_0.cxx b/src/NMTTools/NMTTools_ListNodeOfListOfCommonBlock_0.cxx deleted file mode 100644 index ad488952f..000000000 --- a/src/NMTTools/NMTTools_ListNodeOfListOfCommonBlock_0.cxx +++ /dev/null @@ -1,91 +0,0 @@ -// File generated by CPPExt (Transient) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _NMTTools_CommonBlock_HeaderFile -#include -#endif -#ifndef _NMTTools_ListOfCommonBlock_HeaderFile -#include -#endif -#ifndef _NMTTools_ListIteratorOfListOfCommonBlock_HeaderFile -#include -#endif -NMTTools_ListNodeOfListOfCommonBlock::~NMTTools_ListNodeOfListOfCommonBlock() {} - - - -Standard_EXPORT Handle_Standard_Type& NMTTools_ListNodeOfListOfCommonBlock_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("NMTTools_ListNodeOfListOfCommonBlock", - sizeof(NMTTools_ListNodeOfListOfCommonBlock), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(NMTTools_ListNodeOfListOfCommonBlock) Handle(NMTTools_ListNodeOfListOfCommonBlock)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(NMTTools_ListNodeOfListOfCommonBlock) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(NMTTools_ListNodeOfListOfCommonBlock))) { - _anOtherObject = Handle(NMTTools_ListNodeOfListOfCommonBlock)((Handle(NMTTools_ListNodeOfListOfCommonBlock)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& NMTTools_ListNodeOfListOfCommonBlock::DynamicType() const -{ - return STANDARD_TYPE(NMTTools_ListNodeOfListOfCommonBlock) ; -} -Standard_Boolean NMTTools_ListNodeOfListOfCommonBlock::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(NMTTools_ListNodeOfListOfCommonBlock) == AType || TCollection_MapNode::IsKind(AType)); -} -Handle_NMTTools_ListNodeOfListOfCommonBlock::~Handle_NMTTools_ListNodeOfListOfCommonBlock() {} -#define Item NMTTools_CommonBlock -#define Item_hxx -#define TCollection_ListNode NMTTools_ListNodeOfListOfCommonBlock -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTTools_ListIteratorOfListOfCommonBlock -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTTools_ListNodeOfListOfCommonBlock -#define TCollection_ListNode_Type_() NMTTools_ListNodeOfListOfCommonBlock_Type_() -#define TCollection_List NMTTools_ListOfCommonBlock -#define TCollection_List_hxx -#include - diff --git a/src/NMTTools/NMTTools_ListNodeOfListOfCoupleOfShape.hxx b/src/NMTTools/NMTTools_ListNodeOfListOfCoupleOfShape.hxx deleted file mode 100644 index cde01ee9b..000000000 --- a/src/NMTTools/NMTTools_ListNodeOfListOfCoupleOfShape.hxx +++ /dev/null @@ -1,123 +0,0 @@ -// File generated by CPPExt (Transient) -// -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#ifndef _NMTTools_ListNodeOfListOfCoupleOfShape_HeaderFile -#define _NMTTools_ListNodeOfListOfCoupleOfShape_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_NMTTools_ListNodeOfListOfCoupleOfShape_HeaderFile -#include -#endif - -#ifndef _NMTTools_CoupleOfShape_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -class NMTTools_CoupleOfShape; -class NMTTools_ListOfCoupleOfShape; -class NMTTools_ListIteratorOfListOfCoupleOfShape; - - -class NMTTools_ListNodeOfListOfCoupleOfShape : public TCollection_MapNode { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -NMTTools_ListNodeOfListOfCoupleOfShape(const NMTTools_CoupleOfShape& I,const TCollection_MapNodePtr& n); - NMTTools_CoupleOfShape& Value() const; -Standard_EXPORT ~NMTTools_ListNodeOfListOfCoupleOfShape(); - - - - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& NMTTools_ListNodeOfListOfCoupleOfShape_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -NMTTools_CoupleOfShape myValue; - - -}; - -#define Item NMTTools_CoupleOfShape -#define Item_hxx -#define TCollection_ListNode NMTTools_ListNodeOfListOfCoupleOfShape -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTTools_ListIteratorOfListOfCoupleOfShape -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTTools_ListNodeOfListOfCoupleOfShape -#define TCollection_ListNode_Type_() NMTTools_ListNodeOfListOfCoupleOfShape_Type_() -#define TCollection_List NMTTools_ListOfCoupleOfShape -#define TCollection_List_hxx - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTTools/NMTTools_ListNodeOfListOfCoupleOfShape_0.cxx b/src/NMTTools/NMTTools_ListNodeOfListOfCoupleOfShape_0.cxx deleted file mode 100644 index 296236fcb..000000000 --- a/src/NMTTools/NMTTools_ListNodeOfListOfCoupleOfShape_0.cxx +++ /dev/null @@ -1,91 +0,0 @@ -// File generated by CPPExt (Transient) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _NMTTools_CoupleOfShape_HeaderFile -#include -#endif -#ifndef _NMTTools_ListOfCoupleOfShape_HeaderFile -#include -#endif -#ifndef _NMTTools_ListIteratorOfListOfCoupleOfShape_HeaderFile -#include -#endif -NMTTools_ListNodeOfListOfCoupleOfShape::~NMTTools_ListNodeOfListOfCoupleOfShape() {} - - - -Standard_EXPORT Handle_Standard_Type& NMTTools_ListNodeOfListOfCoupleOfShape_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("NMTTools_ListNodeOfListOfCoupleOfShape", - sizeof(NMTTools_ListNodeOfListOfCoupleOfShape), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(NMTTools_ListNodeOfListOfCoupleOfShape) Handle(NMTTools_ListNodeOfListOfCoupleOfShape)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(NMTTools_ListNodeOfListOfCoupleOfShape) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(NMTTools_ListNodeOfListOfCoupleOfShape))) { - _anOtherObject = Handle(NMTTools_ListNodeOfListOfCoupleOfShape)((Handle(NMTTools_ListNodeOfListOfCoupleOfShape)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& NMTTools_ListNodeOfListOfCoupleOfShape::DynamicType() const -{ - return STANDARD_TYPE(NMTTools_ListNodeOfListOfCoupleOfShape) ; -} -Standard_Boolean NMTTools_ListNodeOfListOfCoupleOfShape::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(NMTTools_ListNodeOfListOfCoupleOfShape) == AType || TCollection_MapNode::IsKind(AType)); -} -Handle_NMTTools_ListNodeOfListOfCoupleOfShape::~Handle_NMTTools_ListNodeOfListOfCoupleOfShape() {} -#define Item NMTTools_CoupleOfShape -#define Item_hxx -#define TCollection_ListNode NMTTools_ListNodeOfListOfCoupleOfShape -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTTools_ListIteratorOfListOfCoupleOfShape -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTTools_ListNodeOfListOfCoupleOfShape -#define TCollection_ListNode_Type_() NMTTools_ListNodeOfListOfCoupleOfShape_Type_() -#define TCollection_List NMTTools_ListOfCoupleOfShape -#define TCollection_List_hxx -#include - diff --git a/src/NMTTools/NMTTools_ListOfCommonBlock.hxx b/src/NMTTools/NMTTools_ListOfCommonBlock.hxx deleted file mode 100644 index 372139c0a..000000000 --- a/src/NMTTools/NMTTools_ListOfCommonBlock.hxx +++ /dev/null @@ -1,150 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. - -#ifndef _NMTTools_ListOfCommonBlock_HeaderFile -#define _NMTTools_ListOfCommonBlock_HeaderFile - -#ifndef _Standard_Address_HeaderFile -#include -#endif -#ifndef _Handle_NMTTools_ListNodeOfListOfCommonBlock_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_NoSuchObject; -class NMTTools_ListIteratorOfListOfCommonBlock; -class NMTTools_CommonBlock; -class NMTTools_ListNodeOfListOfCommonBlock; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class NMTTools_ListOfCommonBlock { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT NMTTools_ListOfCommonBlock(); -Standard_EXPORT void Assign(const NMTTools_ListOfCommonBlock& Other) ; - void operator=(const NMTTools_ListOfCommonBlock& Other) -{ - Assign(Other); -} - -Standard_EXPORT Standard_Integer Extent() const; -Standard_EXPORT void Clear() ; -~NMTTools_ListOfCommonBlock() -{ - Clear(); -} - - Standard_Boolean IsEmpty() const; -Standard_EXPORT void Prepend(const NMTTools_CommonBlock& I) ; -Standard_EXPORT void Prepend(const NMTTools_CommonBlock& I,NMTTools_ListIteratorOfListOfCommonBlock& theIt) ; -Standard_EXPORT void Prepend(NMTTools_ListOfCommonBlock& Other) ; -Standard_EXPORT void Append(const NMTTools_CommonBlock& I) ; -Standard_EXPORT void Append(const NMTTools_CommonBlock& I,NMTTools_ListIteratorOfListOfCommonBlock& theIt) ; -Standard_EXPORT void Append(NMTTools_ListOfCommonBlock& Other) ; -Standard_EXPORT NMTTools_CommonBlock& First() const; -Standard_EXPORT NMTTools_CommonBlock& Last() const; -Standard_EXPORT void RemoveFirst() ; -Standard_EXPORT void Remove(NMTTools_ListIteratorOfListOfCommonBlock& It) ; -Standard_EXPORT void InsertBefore(const NMTTools_CommonBlock& I,NMTTools_ListIteratorOfListOfCommonBlock& It) ; -Standard_EXPORT void InsertBefore(NMTTools_ListOfCommonBlock& Other,NMTTools_ListIteratorOfListOfCommonBlock& It) ; -Standard_EXPORT void InsertAfter(const NMTTools_CommonBlock& I,NMTTools_ListIteratorOfListOfCommonBlock& It) ; -Standard_EXPORT void InsertAfter(NMTTools_ListOfCommonBlock& Other,NMTTools_ListIteratorOfListOfCommonBlock& It) ; - - -friend class NMTTools_ListIteratorOfListOfCommonBlock; - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // -Standard_EXPORT NMTTools_ListOfCommonBlock(const NMTTools_ListOfCommonBlock& Other); - - - // Fields PRIVATE - // -Standard_Address myFirst; -Standard_Address myLast; - - -}; - -#define Item NMTTools_CommonBlock -#define Item_hxx -#define TCollection_ListNode NMTTools_ListNodeOfListOfCommonBlock -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTTools_ListIteratorOfListOfCommonBlock -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTTools_ListNodeOfListOfCommonBlock -#define TCollection_ListNode_Type_() NMTTools_ListNodeOfListOfCommonBlock_Type_() -#define TCollection_List NMTTools_ListOfCommonBlock -#define TCollection_List_hxx - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTTools/NMTTools_ListOfCommonBlock_0.cxx b/src/NMTTools/NMTTools_ListOfCommonBlock_0.cxx deleted file mode 100644 index d90f47b4c..000000000 --- a/src/NMTTools/NMTTools_ListOfCommonBlock_0.cxx +++ /dev/null @@ -1,42 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#include - -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _NMTTools_ListIteratorOfListOfCommonBlock_HeaderFile -#include -#endif -#ifndef _NMTTools_CommonBlock_HeaderFile -#include -#endif -#ifndef _NMTTools_ListNodeOfListOfCommonBlock_HeaderFile -#include -#endif - - -#define Item NMTTools_CommonBlock -#define Item_hxx -#define TCollection_ListNode NMTTools_ListNodeOfListOfCommonBlock -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTTools_ListIteratorOfListOfCommonBlock -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTTools_ListNodeOfListOfCommonBlock -#define TCollection_ListNode_Type_() NMTTools_ListNodeOfListOfCommonBlock_Type_() -#define TCollection_List NMTTools_ListOfCommonBlock -#define TCollection_List_hxx -#include - diff --git a/src/NMTTools/NMTTools_ListOfCoupleOfShape.hxx b/src/NMTTools/NMTTools_ListOfCoupleOfShape.hxx deleted file mode 100644 index f92f99443..000000000 --- a/src/NMTTools/NMTTools_ListOfCoupleOfShape.hxx +++ /dev/null @@ -1,150 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. - -#ifndef _NMTTools_ListOfCoupleOfShape_HeaderFile -#define _NMTTools_ListOfCoupleOfShape_HeaderFile - -#ifndef _Standard_Address_HeaderFile -#include -#endif -#ifndef _Handle_NMTTools_ListNodeOfListOfCoupleOfShape_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_NoSuchObject; -class NMTTools_ListIteratorOfListOfCoupleOfShape; -class NMTTools_CoupleOfShape; -class NMTTools_ListNodeOfListOfCoupleOfShape; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class NMTTools_ListOfCoupleOfShape { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT NMTTools_ListOfCoupleOfShape(); -Standard_EXPORT void Assign(const NMTTools_ListOfCoupleOfShape& Other) ; - void operator=(const NMTTools_ListOfCoupleOfShape& Other) -{ - Assign(Other); -} - -Standard_EXPORT Standard_Integer Extent() const; -Standard_EXPORT void Clear() ; -~NMTTools_ListOfCoupleOfShape() -{ - Clear(); -} - - Standard_Boolean IsEmpty() const; -Standard_EXPORT void Prepend(const NMTTools_CoupleOfShape& I) ; -Standard_EXPORT void Prepend(const NMTTools_CoupleOfShape& I,NMTTools_ListIteratorOfListOfCoupleOfShape& theIt) ; -Standard_EXPORT void Prepend(NMTTools_ListOfCoupleOfShape& Other) ; -Standard_EXPORT void Append(const NMTTools_CoupleOfShape& I) ; -Standard_EXPORT void Append(const NMTTools_CoupleOfShape& I,NMTTools_ListIteratorOfListOfCoupleOfShape& theIt) ; -Standard_EXPORT void Append(NMTTools_ListOfCoupleOfShape& Other) ; -Standard_EXPORT NMTTools_CoupleOfShape& First() const; -Standard_EXPORT NMTTools_CoupleOfShape& Last() const; -Standard_EXPORT void RemoveFirst() ; -Standard_EXPORT void Remove(NMTTools_ListIteratorOfListOfCoupleOfShape& It) ; -Standard_EXPORT void InsertBefore(const NMTTools_CoupleOfShape& I,NMTTools_ListIteratorOfListOfCoupleOfShape& It) ; -Standard_EXPORT void InsertBefore(NMTTools_ListOfCoupleOfShape& Other,NMTTools_ListIteratorOfListOfCoupleOfShape& It) ; -Standard_EXPORT void InsertAfter(const NMTTools_CoupleOfShape& I,NMTTools_ListIteratorOfListOfCoupleOfShape& It) ; -Standard_EXPORT void InsertAfter(NMTTools_ListOfCoupleOfShape& Other,NMTTools_ListIteratorOfListOfCoupleOfShape& It) ; - - -friend class NMTTools_ListIteratorOfListOfCoupleOfShape; - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // -Standard_EXPORT NMTTools_ListOfCoupleOfShape(const NMTTools_ListOfCoupleOfShape& Other); - - - // Fields PRIVATE - // -Standard_Address myFirst; -Standard_Address myLast; - - -}; - -#define Item NMTTools_CoupleOfShape -#define Item_hxx -#define TCollection_ListNode NMTTools_ListNodeOfListOfCoupleOfShape -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTTools_ListIteratorOfListOfCoupleOfShape -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTTools_ListNodeOfListOfCoupleOfShape -#define TCollection_ListNode_Type_() NMTTools_ListNodeOfListOfCoupleOfShape_Type_() -#define TCollection_List NMTTools_ListOfCoupleOfShape -#define TCollection_List_hxx - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTTools/NMTTools_ListOfCoupleOfShape_0.cxx b/src/NMTTools/NMTTools_ListOfCoupleOfShape_0.cxx deleted file mode 100644 index 047fbfa59..000000000 --- a/src/NMTTools/NMTTools_ListOfCoupleOfShape_0.cxx +++ /dev/null @@ -1,42 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#include - -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _NMTTools_ListIteratorOfListOfCoupleOfShape_HeaderFile -#include -#endif -#ifndef _NMTTools_CoupleOfShape_HeaderFile -#include -#endif -#ifndef _NMTTools_ListNodeOfListOfCoupleOfShape_HeaderFile -#include -#endif - - -#define Item NMTTools_CoupleOfShape -#define Item_hxx -#define TCollection_ListNode NMTTools_ListNodeOfListOfCoupleOfShape -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTTools_ListIteratorOfListOfCoupleOfShape -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTTools_ListNodeOfListOfCoupleOfShape -#define TCollection_ListNode_Type_() NMTTools_ListNodeOfListOfCoupleOfShape_Type_() -#define TCollection_List NMTTools_ListOfCoupleOfShape -#define TCollection_List_hxx -#include - diff --git a/src/NMTTools/NMTTools_PCurveMaker.cdl b/src/NMTTools/NMTTools_PCurveMaker.cdl deleted file mode 100644 index 0211e9d6e..000000000 --- a/src/NMTTools/NMTTools_PCurveMaker.cdl +++ /dev/null @@ -1,35 +0,0 @@ --- File: NMTTools_PCurveMaker.cdl --- Created: --- Author: Peter KURNEV --- - -class PCurveMaker from NMTTools - - ---Purpose: - -- Class provides computation p-curves for the edges and theirs - --- split parts - -uses - PDSFiller from NMTTools - -is - Create (aFiller:out PDSFiller from NMTTools) - returns PCurveMaker from NMTTools; - ---Purpose: - --- Constructor - --- - Do(me:out); - ---Purpose: - --- Launch the processor - --- - IsDone(me) - returns Boolean from Standard; - ---Purpose: - --- Returns TRUE if Ok - --- - -fields - myDSFiller: PDSFiller from NMTTools is protected; - myIsDone : Boolean from Standard is protected; - -end PCurveMaker; diff --git a/src/NMTTools/NMTTools_PCurveMaker.cxx b/src/NMTTools/NMTTools_PCurveMaker.cxx deleted file mode 100644 index aa85b1fec..000000000 --- a/src/NMTTools/NMTTools_PCurveMaker.cxx +++ /dev/null @@ -1,109 +0,0 @@ -// File: NMTTools_PCurveMaker.cxx -// Created: -// Author: Peter KURNEV -// - - -#include - -#include - -#include - -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include - -#include -#include -#include - -#include -#include - -#include - -#include -#include -#include -#include -#include -#include -#include -#include - - -//======================================================================= -// function: NMTTools_PCurveMaker -// purpose: -//======================================================================= - NMTTools_PCurveMaker::NMTTools_PCurveMaker(NMTTools_PDSFiller& pDSFiller) -: - myIsDone(Standard_False) -{ - myDSFiller=pDSFiller; -} -//======================================================================= -// function: IsDone -// purpose: -//======================================================================= - Standard_Boolean NMTTools_PCurveMaker::IsDone() const -{ - return myIsDone; -} -//======================================================================= -// function: Do -// purpose: -//======================================================================= - void NMTTools_PCurveMaker::Do() -{ - Standard_Integer i, aNb, nF1, nF2, nE; - BOPTools_ListIteratorOfListOfPaveBlock anIt; - TopoDS_Face aF1FWD, aF2FWD; - // - NMTTools_PaveFiller *pFiller=(NMTTools_PaveFiller*) &(myDSFiller->PaveFiller()); - NMTDS_ShapesDataStructure *pDS=pFiller->DS(); - // - BOPTools_CArray1OfSSInterference& aFFs=(pFiller->InterfPool())->SSInterferences(); - // - aNb=aFFs.Extent(); - for (i=1; i<=aNb; ++i) { - BOPTools_SSInterference& aFF=aFFs(i); - // Faces - aFF.Indices(nF1, nF2); - const TopoDS_Face& aF1=TopoDS::Face(pDS->Shape(nF1)); - const TopoDS_Face& aF2=TopoDS::Face(pDS->Shape(nF2)); - // - // 1.Forwarding the Faces - aF1FWD=aF1; - aF1FWD.Orientation(TopAbs_FORWARD); - aF2FWD=aF2; - aF2FWD.Orientation(TopAbs_FORWARD); - // - // 2. In, On parts processing - const BOPTools_ListOfPaveBlock& aLPBInOn=aFF.PaveBlocks(); - anIt.Initialize(aLPBInOn); - for (; anIt.More(); anIt.Next()) { - const BOPTools_PaveBlock& aPB=anIt.Value(); - const BOPTools_PaveBlock& aPBInOn=pFiller->RealPaveBlock(aPB); - // - nE=aPBInOn.Edge(); - const TopoDS_Edge& aE=TopoDS::Edge(pDS->Shape(nE)); - - BOPTools_Tools2D::BuildPCurveForEdgeOnFace(aE, aF1FWD); - BOPTools_Tools2D::BuildPCurveForEdgeOnFace(aE, aF2FWD); - } - } // for (i=1; i<=aNb; i++) - myIsDone=Standard_True; -} - diff --git a/src/NMTTools/NMTTools_PCurveMaker.hxx b/src/NMTTools/NMTTools_PCurveMaker.hxx deleted file mode 100644 index 5a5397802..000000000 --- a/src/NMTTools/NMTTools_PCurveMaker.hxx +++ /dev/null @@ -1,91 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. - -#ifndef _NMTTools_PCurveMaker_HeaderFile -#define _NMTTools_PCurveMaker_HeaderFile - -#ifndef _NMTTools_PDSFiller_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class NMTTools_PCurveMaker { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT NMTTools_PCurveMaker(NMTTools_PDSFiller& aFiller); -Standard_EXPORT void Do() ; -Standard_EXPORT Standard_Boolean IsDone() const; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // -NMTTools_PDSFiller myDSFiller; -Standard_Boolean myIsDone; - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTTools/NMTTools_PCurveMaker.ixx b/src/NMTTools/NMTTools_PCurveMaker.ixx deleted file mode 100644 index 28e9ca58d..000000000 --- a/src/NMTTools/NMTTools_PCurveMaker.ixx +++ /dev/null @@ -1,19 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#include - - - - diff --git a/src/NMTTools/NMTTools_PCurveMaker.jxx b/src/NMTTools/NMTTools_PCurveMaker.jxx deleted file mode 100644 index 48e34586c..000000000 --- a/src/NMTTools/NMTTools_PCurveMaker.jxx +++ /dev/null @@ -1,3 +0,0 @@ -#ifndef _NMTTools_PCurveMaker_HeaderFile -#include -#endif diff --git a/src/NMTTools/NMTTools_PDSFiller.hxx b/src/NMTTools/NMTTools_PDSFiller.hxx deleted file mode 100644 index 5cc952848..000000000 --- a/src/NMTTools/NMTTools_PDSFiller.hxx +++ /dev/null @@ -1,22 +0,0 @@ -// File generated by CPPExt (Pointer) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#ifndef _NMTTools_PDSFiller_HeaderFile -#define _NMTTools_PDSFiller_HeaderFile - -class NMTTools_DSFiller; - -typedef NMTTools_DSFiller* NMTTools_PDSFiller; - -#endif diff --git a/src/NMTTools/NMTTools_PPaveFiller.hxx b/src/NMTTools/NMTTools_PPaveFiller.hxx deleted file mode 100644 index eddf3ed10..000000000 --- a/src/NMTTools/NMTTools_PPaveFiller.hxx +++ /dev/null @@ -1,22 +0,0 @@ -// File generated by CPPExt (Pointer) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#ifndef _NMTTools_PPaveFiller_HeaderFile -#define _NMTTools_PPaveFiller_HeaderFile - -class NMTTools_PaveFiller; - -typedef NMTTools_PaveFiller* NMTTools_PPaveFiller; - -#endif diff --git a/src/NMTTools/NMTTools_PaveFiller.cdl b/src/NMTTools/NMTTools_PaveFiller.cdl deleted file mode 100644 index e2a3394b3..000000000 --- a/src/NMTTools/NMTTools_PaveFiller.cdl +++ /dev/null @@ -1,441 +0,0 @@ --- File: NMTTools_PaveFiller.cdl --- Created: Fri Dec 5 14:35:00 2003 --- Author: Peter KURNEV --- ----Copyright: Matra Datavision 2003 - - -class PaveFiller from NMTTools - - ---Purpose: - -uses - ListOfInteger from TColStd, - Pnt from gp, - ShapeEnum from TopAbs, - Vertex from TopoDS, - Face from TopoDS, - - Context from IntTools, - ShrunkRange from IntTools, - - IndexedDataMapOfShapeInteger from BooleanOperations, - - InterferencePool from BOPTools, - PInterferencePool from BOPTools, - PavePool from BOPTools, - PaveBlock from BOPTools, - ListOfPaveBlock from BOPTools, - SplitShapesPool from BOPTools, - Pave from BOPTools, - PaveSet from BOPTools, - Curve from BOPTools, - SSInterference from BOPTools, - - IDMapOfPaveBlockIMapOfPaveBlock from BOPTools, - IDMapOfPaveBlockIMapOfInteger from BOPTools, - SSIntersectionAttribute from BOPTools, - - CommonBlockPool from NMTTools, - CommonBlock from NMTTools, - ListOfCommonBlock from NMTTools, - IteratorOfCoupleOfShape from NMTTools, - - ShapesDataStructure from NMTDS, - PShapesDataStructure from NMTDS - ---raises - -is - Create - returns PaveFiller from NMTTools; - - Create(aIP:InterferencePool from BOPTools) - returns PaveFiller from NMTTools; - - Destroy (me: in out) - is virtual; - ---C++: alias "Standard_EXPORT virtual ~NMTTools_PaveFiller(){Destroy();}" - -- - -- Selectors/Modifiers - SetInterferencePool(me:out; - aIP:InterferencePool from BOPTools); - - InterfPool(me:out) - returns PInterferencePool from BOPTools; - -- - -- Perform the algo - Init (me:out) - is protected; - - Perform (me:out) - is virtual; - - PerformVV (me:out) - is virtual protected; - - PerformVE (me:out) - is virtual protected; - - PerformVF (me:out) - is virtual protected; - - PerformEE (me:out) - is virtual protected; - - PerformEF (me:out) - is virtual protected; - - PerformFF (me:out) - is virtual protected; - - MakeSplitEdges(me:out) - is protected; - - PreparePaveBlocks (me:out; - aType1: ShapeEnum from TopAbs; - aType2: ShapeEnum from TopAbs) - is virtual protected; - - CorrectShrunkRanges(me:out; - aSide: Integer from Standard; - aPave: Pave from BOPTools; - aSR : out ShrunkRange from IntTools) - is protected; - - PreparePaveBlocks (me:out; - anE:Integer from Standard) - is virtual protected; - - PerformNewVertices (me:out) - is virtual protected; - - PrepareEdges (me:out) - is virtual protected; - - SortTypes (me; - anInd1:in out Integer from Standard; - anInd2:in out Integer from Standard) - is protected; - - ExpectedPoolLength(me) - returns Integer from Standard - is protected; - -- - -- Query section - IsDone(me) - returns Boolean from Standard; - - DS(me:out) - returns PShapesDataStructure from NMTDS; - - Context(me) - returns Context from IntTools; - ---C++:return const & - - ChangeContext(me:out) - returns Context from IntTools; - ---C++:return & - - PavePool(me) - returns PavePool from BOPTools; - ---C++:return const & - - ChangePavePool(me:out) - returns PavePool from BOPTools; - ---C++:return & - - CommonBlockPool(me) - returns CommonBlockPool from NMTTools; - ---C++:return const & - - ChangeCommonBlockPool(me:out) - returns CommonBlockPool from NMTTools; - ---C++:return & - - SplitShapesPool(me) - returns SplitShapesPool from BOPTools; - ---C++:return const & - - ChangeSplitShapesPool(me:out) - returns SplitShapesPool from BOPTools; - ---C++:return & - - FindSDVertex (me; - nV: Integer from Standard) - returns Integer from Standard; - - IsSuccesstorsComputed (me; - iF1:Integer from Standard; - iF2:Integer from Standard) - returns Boolean from Standard - is protected; - - IsBlocksCoinside (me; - aPB1:PaveBlock from BOPTools; - aPB2:PaveBlock from BOPTools) - returns Boolean from Standard - is protected; - - RefinePavePool(me:out) - is protected; - - CheckFacePaves(me:out; - aV : Vertex from TopoDS; - nF: Integer from Standard) - returns Integer from Standard - is protected; - - ReplaceCommonBlocks (me:out; - aLCB: ListOfCommonBlock from NMTTools) - is protected; - - RemoveCommonBlocks (me:out; - aLCB: ListOfCommonBlock from NMTTools) - is protected; - - SplitCommonBlocks (me:out; - aLCB: ListOfCommonBlock from NMTTools) - is protected; - - SplitCommonBlock (me:out; - aCB : CommonBlock from NMTTools; - aLCB: out ListOfCommonBlock from NMTTools) - is protected; - - EECommonBlocks(me:out; - aM:IDMapOfPaveBlockIMapOfPaveBlock from BOPTools) - is protected; - - EFCommonBlocks(me:out; - aMapCB:IDMapOfPaveBlockIMapOfInteger from BOPTools) - is protected; - - EENewVertices (me:out; - aM:IndexedDataMapOfShapeInteger from BooleanOperations) - is protected; - - EENewVertices (me:out; - aV:Vertex from TopoDS; - aM:IndexedDataMapOfShapeInteger from BooleanOperations) - is protected; - - EFNewVertices (me:out; - aM:IndexedDataMapOfShapeInteger from BooleanOperations) - is protected; - - EFNewVertices (me:out; - aV:Vertex from TopoDS; - aM:IndexedDataMapOfShapeInteger from BooleanOperations) - is protected; - - UpdateCommonBlocks(me:out) - is protected; - - UpdatePaveBlocks(me:out) - is protected; - - SplitIndex(me; - aPB:PaveBlock from BOPTools) - returns Integer from Standard - is protected; - - MakeBlocks(me:out) - is protected; - - -------------------------------------------------------------- - --- - --- Some API FUNCTIONS - --- - SplitsInFace(me:out; - aBid:Integer from Standard; - nF1 :Integer from Standard; - nF2 :Integer from Standard; - aLs :out ListOfInteger from TColStd) - returns Integer from Standard; - - SplitsInFace(me:out; - nE1 :Integer from Standard; - nF2 :Integer from Standard; - aLs :out ListOfInteger from TColStd) - returns Integer from Standard; - - SplitsOnEdge(me:out; - nE1 :Integer from Standard; - nE2 :Integer from Standard; - aLs :out ListOfInteger from TColStd) - returns Integer from Standard; - - SplitsOnFace(me:out; - nE1 :Integer from Standard; - nF2 :Integer from Standard; - aLs :out ListOfInteger from TColStd) - returns Integer from Standard; - - SplitsOnFace(me:out; - aBid:Integer from Standard; - nF1 :Integer from Standard; - nF2 :Integer from Standard; - aLs :out ListOfInteger from TColStd) - returns Integer from Standard; - - SplitsInFace(me:out; - aBid:Integer from Standard; - nF1 :Integer from Standard; - nF2 :Integer from Standard; - aLs :out ListOfPaveBlock from BOPTools) - returns Integer from Standard; - - SplitsInFace(me:out; - nE1 :Integer from Standard; - nF2 :Integer from Standard; - aLs :out ListOfPaveBlock from BOPTools) - returns Integer from Standard; - - SplitsOnEdge(me:out; - nE1 :Integer from Standard; - nE2 :Integer from Standard; - aLs :out ListOfPaveBlock from BOPTools) - returns Integer from Standard; - - SplitsOnFace(me:out; - nE1 :Integer from Standard; - nF2 :Integer from Standard; - aLs :out ListOfPaveBlock from BOPTools) - returns Integer from Standard; - - SplitsOnFace(me:out; - aBid:Integer from Standard; - nF1 :Integer from Standard; - nF2 :Integer from Standard; - aLs :out ListOfPaveBlock from BOPTools) - returns Integer from Standard; - -- - SplitsFace (me:out; - nF2 :Integer from Standard; - aLs :out ListOfPaveBlock from BOPTools) - returns Integer from Standard; - - SplitsFace (me:out; - nF2 :Integer from Standard; - aLs :out ListOfInteger from TColStd) - returns Integer from Standard; - - CommonBlocksFace (me:out; - nF :Integer from Standard; - aLCB:out ListOfCommonBlock from NMTTools) - returns Integer from Standard; - - PrepareFace(me:out; - nF : Integer from Standard; - aF : out Face from TopoDS); - - -- - RealPaveBlock(me:out; - aPB:PaveBlock from BOPTools) - returns PaveBlock from BOPTools; - ---C++: return const & - -- - RealSplitsFace (me:out; - nF2 :Integer from Standard; - aLs :out ListOfPaveBlock from BOPTools); - - HasRealSplitsInOnFace (me:out; - nF1 :Integer from Standard; - nF2 :Integer from Standard) - returns Boolean from Standard; - - RealSplitsInFace(me:out; - aBid:Integer from Standard; - nF1 :Integer from Standard; - nF2 :Integer from Standard; - aLs :out ListOfPaveBlock from BOPTools); - - RealSplitsInFace(me:out; - nE1 :Integer from Standard; - nF2 :Integer from Standard; - aLs :out ListOfPaveBlock from BOPTools); - - RealSplitsOnEdge(me:out; - nE1 :Integer from Standard; - nE2 :Integer from Standard; - aLs :out ListOfPaveBlock from BOPTools); - - RealSplitsOnFace(me:out; - nE1 :Integer from Standard; - nF2 :Integer from Standard; - aLs :out ListOfPaveBlock from BOPTools); - - RealSplitsOnFace(me:out; - aBid:Integer from Standard; - nF1 :Integer from Standard; - nF2 :Integer from Standard; - aLs :out ListOfPaveBlock from BOPTools); - -- - PrepareSetForFace(me:out; - nF1 :Integer from Standard; - nF2 :Integer from Standard; - --modified by NIZNHY-PKV Fri Apr 1 11:19:15 2005f - aLPB: ListOfPaveBlock from BOPTools; - --modified by NIZNHY-PKV Fri Apr 1 10:54:16 2005t - aPSF:out PaveSet from BOPTools); - - PutPaveOnCurve(me:out; - aPSF: PaveSet from BOPTools; - aTol: Real from Standard; - aBC : out Curve from BOPTools); - - PutBoundPaveOnCurve (me:out; - aBC :out Curve from BOPTools; - aFF :out SSInterference from BOPTools); - - PutBoundPaveOnCurve (me:out; - aP : Pnt from gp; - aT : Real from Standard; - aBC :out Curve from BOPTools; - aFF :out SSInterference from BOPTools); - - FindPave (me:out; - aP : Pnt from gp; - aTpV: Real from Standard; - aPS : PaveSet from BOPTools; - aPV :out Pave from BOPTools) - returns Boolean from Standard; - - CheckIntermediatePoint(me:out; - aPB : PaveBlock from BOPTools; - aPBR: PaveBlock from BOPTools; - aTol: Real from Standard) - returns Integer from Standard; - --- IsExistingPaveBlock (me:out; --- aPB : PaveBlock from BOPTools; --- aFF : SSInterference from BOPTools) --- returns Boolean from Standard; - ---modified by NIZNHY-PKV Fri Apr 1 09:35:34 2005f - IsExistingPaveBlock (me:out; - aPB : PaveBlock from BOPTools; - aLPB: ListOfPaveBlock from BOPTools; - aTol: Real from Standard) - returns Boolean from Standard; ---modified by NIZNHY-PKV Fri Apr 1 09:35:39 2005t - - MakePCurves (me:out); - -fields - myIntrPool : PInterferencePool from BOPTools is protected; - myDS : PShapesDataStructure from NMTDS is protected; - myIsDone : Boolean from Standard is protected; - myNbSources : Integer from Standard is protected; - myNbEdges : Integer from Standard is protected; - myDSIt : IteratorOfCoupleOfShape from NMTTools is protected; - -- - myPavePool : PavePool from BOPTools is protected; - myPavePoolNew : PavePool from BOPTools is protected; - myCommonBlockPool : CommonBlockPool from NMTTools is protected; - mySplitShapesPool : SplitShapesPool from BOPTools is protected; - -- - myContext : Context from IntTools is protected; - mySectionAttribute : SSIntersectionAttribute from BOPTools is protected; -end PaveFiller; diff --git a/src/NMTTools/NMTTools_PaveFiller.cxx b/src/NMTTools/NMTTools_PaveFiller.cxx deleted file mode 100644 index 7e0ded5f8..000000000 --- a/src/NMTTools/NMTTools_PaveFiller.cxx +++ /dev/null @@ -1,212 +0,0 @@ -// File: NMTTools_PaveFiller.cxx -// Created: Fri Dec 5 14:58:54 2003 -// Author: Peter KURNEV -// -// -#include -// -#include -#include -#include -//QQ #include "utilities.h" - -//======================================================================= -// function: NMTTools_PaveFiller::NMTTools_PaveFiller -// purpose: -//======================================================================= - NMTTools_PaveFiller::NMTTools_PaveFiller() -{ - myIntrPool=NULL; - myDS=NULL; - myIsDone=Standard_False; - myNbSources=0; - myNbEdges=0; -} -//======================================================================= -// function:NMTTools_PaveFiller::NMTTools_PaveFiller -// purpose: -//======================================================================= - NMTTools_PaveFiller::NMTTools_PaveFiller(const BOPTools_InterferencePool& aIP) -{ - SetInterferencePool(aIP); -} -//======================================================================= -// function: Destroy -// purpose: -//======================================================================= - void NMTTools_PaveFiller::Destroy() -{ -} -//======================================================================= -// function: SetInterferencePool -// purpose: -//======================================================================= - void NMTTools_PaveFiller::SetInterferencePool(const BOPTools_InterferencePool& aIP) -{ - myIsDone=Standard_False; - // - myIntrPool=(BOPTools_InterferencePool*)&aIP; - myDS=(NMTDS_ShapesDataStructure*)myIntrPool->DS(); - myNbSources=myDS->NumberOfShapesOfTheObject()+myDS->NumberOfShapesOfTheTool(); - myNbEdges=myDS->NbEdges(); -} -//======================================================================= -// function: InterfPool -// purpose: -//======================================================================= - BOPTools_PInterferencePool NMTTools_PaveFiller::InterfPool() -{ - return myIntrPool; -} -//======================================================================= -// function:IsDone -// purpose: -//======================================================================= - Standard_Boolean NMTTools_PaveFiller::IsDone() const -{ - return myIsDone; -} -//======================================================================= -// function: DS -// purpose: -//======================================================================= - NMTDS_PShapesDataStructure NMTTools_PaveFiller::DS() -{ - return myDS; -} -//======================================================================= -// function: Context -// purpose: -//======================================================================= - const IntTools_Context& NMTTools_PaveFiller::Context() const -{ - return myContext; -} -//======================================================================= -// function: ChangeContext -// purpose: -//======================================================================= - IntTools_Context& NMTTools_PaveFiller::ChangeContext() -{ - return myContext; -} -//======================================================================= -// function: PavePool -// purpose: -//======================================================================= - const BOPTools_PavePool& NMTTools_PaveFiller::PavePool() const -{ - return myPavePool; -} -//======================================================================= -// function: ChangePavePool -// purpose: -//======================================================================= - BOPTools_PavePool& NMTTools_PaveFiller::ChangePavePool() -{ - return myPavePool; -} -//======================================================================= -// function: CommonBlockPool -// purpose: -//======================================================================= - const NMTTools_CommonBlockPool& NMTTools_PaveFiller::CommonBlockPool() const -{ - return myCommonBlockPool; -} -//======================================================================= -// function: ChangeCommonBlockPool -// purpose: -//======================================================================= - NMTTools_CommonBlockPool& NMTTools_PaveFiller::ChangeCommonBlockPool() -{ - return myCommonBlockPool; -} -//======================================================================= -// function: SplitShapesPool -// purpose: -//======================================================================= - const BOPTools_SplitShapesPool& NMTTools_PaveFiller::SplitShapesPool() const -{ - return mySplitShapesPool; -} - -//======================================================================= -// function: ChangeSplitShapesPool -// purpose: -//======================================================================= - BOPTools_SplitShapesPool& NMTTools_PaveFiller::ChangeSplitShapesPool() -{ - return mySplitShapesPool; -} -//======================================================================= -// function: Init -// purpose: -//======================================================================= - void NMTTools_PaveFiller::Init() -{ - myDSIt.SetDS(myDS); -} -//======================================================================= -// function: Perform -// purpose: -//======================================================================= - void NMTTools_PaveFiller::Perform() -{ - try { - // 0. - Init();//myDSIt.SetDS(myDS); - // - //1.VV - PerformVV(); - PerformNewVertices(); - // - // 2.VE - myPavePool.Resize (myNbEdges); - PrepareEdges(); - - PerformVE(); - // - // 3.VF - PerformVF(); - // - // 4.EE - myCommonBlockPool.Resize (myNbEdges); - mySplitShapesPool.Resize (myNbEdges); - myPavePoolNew .Resize (myNbEdges); - - PreparePaveBlocks(TopAbs_VERTEX, TopAbs_EDGE); - PreparePaveBlocks(TopAbs_EDGE, TopAbs_EDGE); - // - PerformEE(); - // - RefinePavePool (); - // - myPavePoolNew.Destroy(); - myPavePoolNew.Resize (myNbEdges); - // - // 5.EF - PreparePaveBlocks(TopAbs_EDGE, TopAbs_FACE); - PerformEF(); - RefinePavePool(); - // - myPavePoolNew.Destroy(); - MakeSplitEdges(); - UpdateCommonBlocks(); - // - // 6. FF - PerformFF (); - MakeBlocks(); - MakePCurves(); - // - // 7.Postprocessing - UpdatePaveBlocks(); - // - NMTTools_DEProcessor aDEP(*this); - aDEP.Do(); - // - } - catch (BOPTColStd_Failure& /*x*/) { - //QQ MESSAGE(x.Message() << flush); - } -} diff --git a/src/NMTTools/NMTTools_PaveFiller.hxx b/src/NMTTools/NMTTools_PaveFiller.hxx deleted file mode 100644 index addb7d074..000000000 --- a/src/NMTTools/NMTTools_PaveFiller.hxx +++ /dev/null @@ -1,237 +0,0 @@ -// File generated by CPPExt (Value) -// -// Copyright (C) 1991 - 2000 by -// Matra Datavision SA. All rights reserved. -// -// Copyright (C) 2001 - 2004 by -// Open CASCADE SA. All rights reserved. -// -// This file is part of the Open CASCADE Technology software. -// -// This software may be distributed and/or modified under the terms and -// conditions of the Open CASCADE Public License as defined by Open CASCADE SA -// and appearing in the file LICENSE included in the packaging of this file. -// -// This software is distributed on an "AS IS" basis, without warranty of any -// kind, and Open CASCADE SA hereby disclaims all such warranties, -// including without limitation, any warranties of merchantability, fitness -// for a particular purpose or non-infringement. Please see the License for -// the specific terms and conditions governing rights and limitations under the -// License. - -#ifndef _NMTTools_PaveFiller_HeaderFile -#define _NMTTools_PaveFiller_HeaderFile - -#ifndef _BOPTools_PInterferencePool_HeaderFile -#include -#endif -#ifndef _NMTDS_PShapesDataStructure_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _NMTTools_IteratorOfCoupleOfShape_HeaderFile -#include -#endif -#ifndef _BOPTools_PavePool_HeaderFile -#include -#endif -#ifndef _NMTTools_CommonBlockPool_HeaderFile -#include -#endif -#ifndef _BOPTools_SplitShapesPool_HeaderFile -#include -#endif -#ifndef _IntTools_Context_HeaderFile -#include -#endif -#ifndef _BOPTools_SSIntersectionAttribute_HeaderFile -#include -#endif -#ifndef _TopAbs_ShapeEnum_HeaderFile -#include -#endif -#ifndef _Standard_Real_HeaderFile -#include -#endif -class BOPTools_InterferencePool; -class BOPTools_Pave; -class IntTools_ShrunkRange; -class IntTools_Context; -class BOPTools_PavePool; -class NMTTools_CommonBlockPool; -class BOPTools_SplitShapesPool; -class BOPTools_PaveBlock; -class TopoDS_Vertex; -class NMTTools_ListOfCommonBlock; -class NMTTools_CommonBlock; -class BOPTools_IDMapOfPaveBlockIMapOfPaveBlock; -class BOPTools_IDMapOfPaveBlockIMapOfInteger; -class BooleanOperations_IndexedDataMapOfShapeInteger; -class TColStd_ListOfInteger; -class BOPTools_ListOfPaveBlock; -class TopoDS_Face; -class BOPTools_PaveSet; -class BOPTools_Curve; -class BOPTools_SSInterference; -class gp_Pnt; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class NMTTools_PaveFiller { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT NMTTools_PaveFiller(); -Standard_EXPORT NMTTools_PaveFiller(const BOPTools_InterferencePool& aIP); -Standard_EXPORT virtual void Destroy() ; -Standard_EXPORT virtual ~NMTTools_PaveFiller(){Destroy();} -Standard_EXPORT void SetInterferencePool(const BOPTools_InterferencePool& aIP) ; -Standard_EXPORT BOPTools_PInterferencePool InterfPool() ; -Standard_EXPORT virtual void Perform() ; -Standard_EXPORT Standard_Boolean IsDone() const; -Standard_EXPORT NMTDS_PShapesDataStructure DS() ; -Standard_EXPORT const IntTools_Context& Context() const; -Standard_EXPORT IntTools_Context& ChangeContext() ; -Standard_EXPORT const BOPTools_PavePool& PavePool() const; -Standard_EXPORT BOPTools_PavePool& ChangePavePool() ; -Standard_EXPORT const NMTTools_CommonBlockPool& CommonBlockPool() const; -Standard_EXPORT NMTTools_CommonBlockPool& ChangeCommonBlockPool() ; -Standard_EXPORT const BOPTools_SplitShapesPool& SplitShapesPool() const; -Standard_EXPORT BOPTools_SplitShapesPool& ChangeSplitShapesPool() ; -Standard_EXPORT Standard_Integer FindSDVertex(const Standard_Integer nV) const; -Standard_EXPORT Standard_Integer SplitsInFace(const Standard_Integer aBid,const Standard_Integer nF1,const Standard_Integer nF2,TColStd_ListOfInteger& aLs) ; -Standard_EXPORT Standard_Integer SplitsInFace(const Standard_Integer nE1,const Standard_Integer nF2,TColStd_ListOfInteger& aLs) ; -Standard_EXPORT Standard_Integer SplitsOnEdge(const Standard_Integer nE1,const Standard_Integer nE2,TColStd_ListOfInteger& aLs) ; -Standard_EXPORT Standard_Integer SplitsOnFace(const Standard_Integer nE1,const Standard_Integer nF2,TColStd_ListOfInteger& aLs) ; -Standard_EXPORT Standard_Integer SplitsOnFace(const Standard_Integer aBid,const Standard_Integer nF1,const Standard_Integer nF2,TColStd_ListOfInteger& aLs) ; -Standard_EXPORT Standard_Integer SplitsInFace(const Standard_Integer aBid,const Standard_Integer nF1,const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; -Standard_EXPORT Standard_Integer SplitsInFace(const Standard_Integer nE1,const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; -Standard_EXPORT Standard_Integer SplitsOnEdge(const Standard_Integer nE1,const Standard_Integer nE2,BOPTools_ListOfPaveBlock& aLs) ; -Standard_EXPORT Standard_Integer SplitsOnFace(const Standard_Integer nE1,const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; -Standard_EXPORT Standard_Integer SplitsOnFace(const Standard_Integer aBid,const Standard_Integer nF1,const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; -Standard_EXPORT Standard_Integer SplitsFace(const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; -Standard_EXPORT Standard_Integer SplitsFace(const Standard_Integer nF2,TColStd_ListOfInteger& aLs) ; -Standard_EXPORT Standard_Integer CommonBlocksFace(const Standard_Integer nF,NMTTools_ListOfCommonBlock& aLCB) ; -Standard_EXPORT void PrepareFace(const Standard_Integer nF,TopoDS_Face& aF) ; -Standard_EXPORT const BOPTools_PaveBlock& RealPaveBlock(const BOPTools_PaveBlock& aPB) ; -Standard_EXPORT void RealSplitsFace(const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; -Standard_EXPORT Standard_Boolean HasRealSplitsInOnFace(const Standard_Integer nF1,const Standard_Integer nF2) ; -Standard_EXPORT void RealSplitsInFace(const Standard_Integer aBid,const Standard_Integer nF1,const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; -Standard_EXPORT void RealSplitsInFace(const Standard_Integer nE1,const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; -Standard_EXPORT void RealSplitsOnEdge(const Standard_Integer nE1,const Standard_Integer nE2,BOPTools_ListOfPaveBlock& aLs) ; -Standard_EXPORT void RealSplitsOnFace(const Standard_Integer nE1,const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; -Standard_EXPORT void RealSplitsOnFace(const Standard_Integer aBid,const Standard_Integer nF1,const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; -Standard_EXPORT void PrepareSetForFace(const Standard_Integer nF1,const Standard_Integer nF2,const BOPTools_ListOfPaveBlock& aLPB,BOPTools_PaveSet& aPSF) ; -Standard_EXPORT void PutPaveOnCurve(const BOPTools_PaveSet& aPSF,const Standard_Real aTol,BOPTools_Curve& aBC) ; -Standard_EXPORT void PutBoundPaveOnCurve(BOPTools_Curve& aBC,BOPTools_SSInterference& aFF) ; -Standard_EXPORT void PutBoundPaveOnCurve(const gp_Pnt& aP,const Standard_Real aT,BOPTools_Curve& aBC,BOPTools_SSInterference& aFF) ; -Standard_EXPORT Standard_Boolean FindPave(const gp_Pnt& aP,const Standard_Real aTpV,const BOPTools_PaveSet& aPS,BOPTools_Pave& aPV) ; -Standard_EXPORT Standard_Integer CheckIntermediatePoint(const BOPTools_PaveBlock& aPB,const BOPTools_PaveBlock& aPBR,const Standard_Real aTol) ; -Standard_EXPORT Standard_Boolean IsExistingPaveBlock(const BOPTools_PaveBlock& aPB,const BOPTools_ListOfPaveBlock& aLPB,const Standard_Real aTol) ; -Standard_EXPORT void MakePCurves() ; - - - - - -protected: - - // Methods PROTECTED - // -Standard_EXPORT void Init() ; -Standard_EXPORT virtual void PerformVV() ; -Standard_EXPORT virtual void PerformVE() ; -Standard_EXPORT virtual void PerformVF() ; -Standard_EXPORT virtual void PerformEE() ; -Standard_EXPORT virtual void PerformEF() ; -Standard_EXPORT virtual void PerformFF() ; -Standard_EXPORT void MakeSplitEdges() ; -Standard_EXPORT virtual void PreparePaveBlocks(const TopAbs_ShapeEnum aType1,const TopAbs_ShapeEnum aType2) ; -Standard_EXPORT void CorrectShrunkRanges(const Standard_Integer aSide,const BOPTools_Pave& aPave,IntTools_ShrunkRange& aSR) ; -Standard_EXPORT virtual void PreparePaveBlocks(const Standard_Integer anE) ; -Standard_EXPORT virtual void PerformNewVertices() ; -Standard_EXPORT virtual void PrepareEdges() ; -Standard_EXPORT void SortTypes(Standard_Integer& anInd1,Standard_Integer& anInd2) const; -Standard_EXPORT Standard_Integer ExpectedPoolLength() const; -Standard_EXPORT Standard_Boolean IsSuccesstorsComputed(const Standard_Integer iF1,const Standard_Integer iF2) const; -Standard_EXPORT Standard_Boolean IsBlocksCoinside(const BOPTools_PaveBlock& aPB1,const BOPTools_PaveBlock& aPB2) const; -Standard_EXPORT void RefinePavePool() ; -Standard_EXPORT Standard_Integer CheckFacePaves(const TopoDS_Vertex& aV,const Standard_Integer nF) ; -Standard_EXPORT void ReplaceCommonBlocks(const NMTTools_ListOfCommonBlock& aLCB) ; -Standard_EXPORT void RemoveCommonBlocks(const NMTTools_ListOfCommonBlock& aLCB) ; -Standard_EXPORT void SplitCommonBlocks(const NMTTools_ListOfCommonBlock& aLCB) ; -Standard_EXPORT void SplitCommonBlock(const NMTTools_CommonBlock& aCB,NMTTools_ListOfCommonBlock& aLCB) ; -Standard_EXPORT void EECommonBlocks(const BOPTools_IDMapOfPaveBlockIMapOfPaveBlock& aM) ; -Standard_EXPORT void EFCommonBlocks(const BOPTools_IDMapOfPaveBlockIMapOfInteger& aMapCB) ; -Standard_EXPORT void EENewVertices(const BooleanOperations_IndexedDataMapOfShapeInteger& aM) ; -Standard_EXPORT void EENewVertices(const TopoDS_Vertex& aV,const BooleanOperations_IndexedDataMapOfShapeInteger& aM) ; -Standard_EXPORT void EFNewVertices(const BooleanOperations_IndexedDataMapOfShapeInteger& aM) ; -Standard_EXPORT void EFNewVertices(const TopoDS_Vertex& aV,const BooleanOperations_IndexedDataMapOfShapeInteger& aM) ; -Standard_EXPORT void UpdateCommonBlocks() ; -Standard_EXPORT void UpdatePaveBlocks() ; -Standard_EXPORT Standard_Integer SplitIndex(const BOPTools_PaveBlock& aPB) const; -Standard_EXPORT void MakeBlocks() ; - - - // Fields PROTECTED - // -BOPTools_PInterferencePool myIntrPool; -NMTDS_PShapesDataStructure myDS; -Standard_Boolean myIsDone; -Standard_Integer myNbSources; -Standard_Integer myNbEdges; -NMTTools_IteratorOfCoupleOfShape myDSIt; -BOPTools_PavePool myPavePool; -BOPTools_PavePool myPavePoolNew; -NMTTools_CommonBlockPool myCommonBlockPool; -BOPTools_SplitShapesPool mySplitShapesPool; -IntTools_Context myContext; -BOPTools_SSIntersectionAttribute mySectionAttribute; - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTTools/NMTTools_PaveFiller.ixx b/src/NMTTools/NMTTools_PaveFiller.ixx deleted file mode 100644 index 1ef3b7ab3..000000000 --- a/src/NMTTools/NMTTools_PaveFiller.ixx +++ /dev/null @@ -1,19 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#include - - - - diff --git a/src/NMTTools/NMTTools_PaveFiller.jxx b/src/NMTTools/NMTTools_PaveFiller.jxx deleted file mode 100644 index 9e8e7ce2a..000000000 --- a/src/NMTTools/NMTTools_PaveFiller.jxx +++ /dev/null @@ -1,66 +0,0 @@ -#ifndef _BOPTools_InterferencePool_HeaderFile -#include -#endif -#ifndef _BOPTools_Pave_HeaderFile -#include -#endif -#ifndef _IntTools_ShrunkRange_HeaderFile -#include -#endif -#ifndef _IntTools_Context_HeaderFile -#include -#endif -#ifndef _BOPTools_PavePool_HeaderFile -#include -#endif -#ifndef _NMTTools_CommonBlockPool_HeaderFile -#include -#endif -#ifndef _BOPTools_SplitShapesPool_HeaderFile -#include -#endif -#ifndef _BOPTools_PaveBlock_HeaderFile -#include -#endif -#ifndef _TopoDS_Vertex_HeaderFile -#include -#endif -#ifndef _NMTTools_ListOfCommonBlock_HeaderFile -#include -#endif -#ifndef _NMTTools_CommonBlock_HeaderFile -#include -#endif -#ifndef _BOPTools_IDMapOfPaveBlockIMapOfPaveBlock_HeaderFile -#include -#endif -#ifndef _BOPTools_IDMapOfPaveBlockIMapOfInteger_HeaderFile -#include -#endif -#ifndef _BooleanOperations_IndexedDataMapOfShapeInteger_HeaderFile -#include -#endif -#ifndef _TColStd_ListOfInteger_HeaderFile -#include -#endif -#ifndef _BOPTools_ListOfPaveBlock_HeaderFile -#include -#endif -#ifndef _TopoDS_Face_HeaderFile -#include -#endif -#ifndef _BOPTools_PaveSet_HeaderFile -#include -#endif -#ifndef _BOPTools_Curve_HeaderFile -#include -#endif -#ifndef _BOPTools_SSInterference_HeaderFile -#include -#endif -#ifndef _gp_Pnt_HeaderFile -#include -#endif -#ifndef _NMTTools_PaveFiller_HeaderFile -#include -#endif diff --git a/src/NMTTools/NMTTools_PaveFiller_0.cxx b/src/NMTTools/NMTTools_PaveFiller_0.cxx deleted file mode 100644 index d6b3251a3..000000000 --- a/src/NMTTools/NMTTools_PaveFiller_0.cxx +++ /dev/null @@ -1,118 +0,0 @@ -// File: NMTTools_PaveFiller_0.cxx -// Created: Mon Dec 8 11:45:51 2003 -// Author: Peter KURNEV -// - - -#include - -#include -#include -#include -#include - -//======================================================================= -//function : SortTypes -//purpose : -//======================================================================= - void NMTTools_PaveFiller::SortTypes(Standard_Integer& theWhat, - Standard_Integer& theWith)const -{ - Standard_Boolean aReverseFlag=Standard_True; - - TopAbs_ShapeEnum aType1= myDS->GetShapeType(theWhat), - aType2= myDS->GetShapeType(theWith); - - if (aType1==aType2) - return; - - if (aType1==TopAbs_EDGE && aType2==TopAbs_FACE){ - aReverseFlag=Standard_False; - } - - if (aType1==TopAbs_VERTEX && - (aType2==TopAbs_FACE || aType2==TopAbs_EDGE)) { - aReverseFlag=Standard_False; - } - - Standard_Integer aWhat, aWith; - aWhat=(aReverseFlag) ? theWith : theWhat; - aWith=(aReverseFlag) ? theWhat : theWith; - - theWhat=aWhat; - theWith=aWith; -} -//======================================================================= -// function: ExpectedPoolLength -// purpose: -//======================================================================= - Standard_Integer NMTTools_PaveFiller::ExpectedPoolLength()const -{ - Standard_Integer aNbIIs; - Standard_Real aCfPredict=.5; - - const BOPTools_ListOfCoupleOfInteger& aLC=myDSIt.ListOfCouple(); - aNbIIs=aLC.Extent(); - // - if (aNbIIs==1) { - return aNbIIs; - } - // - aNbIIs=(Standard_Integer) (aCfPredict*(Standard_Real)aNbIIs); - - return aNbIIs; -} -//======================================================================= -// function:IsSuccesstorsComputed -// purpose: -//======================================================================= - Standard_Boolean NMTTools_PaveFiller::IsSuccesstorsComputed(const Standard_Integer aN1, - const Standard_Integer aN2)const -{ - Standard_Integer nSuc, n1, n2; - - BooleanOperations_OnceExplorer aExp(*myDS); - TopAbs_ShapeEnum aType=myDS->GetShapeType(aN1); - - n1=aN1; - n2=aN2; - - if (aType!=TopAbs_VERTEX) { - Standard_Integer ntmp=n1; - n1=n2; - n2=ntmp; - } - - aType=myDS->GetShapeType(n2); - if (aType==TopAbs_EDGE) { - aExp.Init(n2, TopAbs_VERTEX); - for (; aExp.More(); aExp.Next()) { - nSuc=aExp.Current(); - if (myIntrPool->IsComputed(n1, nSuc)) { - return Standard_True; - } - } - return Standard_False; - } - - else if (aType==TopAbs_FACE) { - aExp.Init(n2, TopAbs_VERTEX); - for (; aExp.More(); aExp.Next()) { - nSuc=aExp.Current(); - if (myIntrPool->IsComputed(n1, nSuc)) { - return Standard_True; - } - } - - aExp.Init(n2, TopAbs_EDGE); - for (; aExp.More(); aExp.Next()) { - nSuc=aExp.Current(); - if (myIntrPool->IsComputed(n1, nSuc)) { - return Standard_True; - } - } - return Standard_False; - } - - return Standard_False; -} diff --git a/src/NMTTools/NMTTools_PaveFiller_1.cxx b/src/NMTTools/NMTTools_PaveFiller_1.cxx deleted file mode 100644 index 5d1fa79cc..000000000 --- a/src/NMTTools/NMTTools_PaveFiller_1.cxx +++ /dev/null @@ -1,170 +0,0 @@ -// File: NMTTools_PaveFiller_1.cxx -// Created: Mon Dec 8 11:47:55 2003 -// Author: Peter KURNEV -// - - -#include - -#include - -#include -#include -#include - -#include - -#include -#include -#include -#include -#include -#include - -#include -#include -#include - - - -//======================================================================= -// function: PerformVV -// purpose: -//======================================================================= - void NMTTools_PaveFiller::PerformVV() -{ - myIsDone=Standard_False; - // - Standard_Integer n1, n2,anIndexIn, aFlag, aWhat, aWith, aNbVVs, aBlockLength; - Standard_Boolean bJustAddInterference; - // - BOPTools_CArray1OfVVInterference& aVVs=myIntrPool->VVInterferences(); - // - // BlockLength correction - aNbVVs=ExpectedPoolLength(); - aBlockLength=aVVs.BlockLength(); - if (aNbVVs > aBlockLength) { - aVVs.SetBlockLength(aNbVVs); - } - // - // V/V BooleanOperations_VertexVertex - myDSIt.Initialize(TopAbs_VERTEX, TopAbs_VERTEX); - // - for (; myDSIt.More(); myDSIt.Next()) { - myDSIt.Current(n1, n2, bJustAddInterference); - // - if (!myIntrPool->IsComputed(n1, n2)) { - anIndexIn=0; - aWhat=n1; - aWith=n2; - SortTypes(aWhat, aWith); - if (!bJustAddInterference) { - const TopoDS_Shape& aS1=myDS->GetShape(aWhat); - const TopoDS_Shape& aS2=myDS->GetShape(aWith); - // - const TopoDS_Vertex& aV1=TopoDS::Vertex(aS1); - const TopoDS_Vertex& aV2=TopoDS::Vertex(aS2); - aFlag=IntTools_Tools::ComputeVV (aV1, aV2); - // - if (!aFlag) { - BOPTools_VVInterference anInterf (aWhat, aWith); - anIndexIn=aVVs.Append(anInterf); - } - } - myIntrPool->AddInterference(aWhat, aWith, BooleanOperations_VertexVertex, anIndexIn); - } - } - myIsDone=Standard_True; -} -//======================================================================= -// function: PerformNewVertices -// purpose: -//======================================================================= - void NMTTools_PaveFiller::PerformNewVertices() -{ - myIsDone=Standard_False; - // - Standard_Integer i, aNb, anIndex1, anIndex2, aNewShape; - TopoDS_Vertex aNewVertex; - BooleanOperations_AncestorsSeqAndSuccessorsSeq anASSeq; - // - Standard_Integer aNbChains, j, aNbV, aIdV, aNbL; - TColStd_IndexedMapOfInteger aMapWhole; - BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger aMapChains;//aMCV - TopTools_ListOfShape aLV; - TopTools_IndexedMapOfShape aM; - // - // 1. VV Interferences - BOPTools_CArray1OfVVInterference& VVs=myIntrPool->VVInterferences(); - // - NMTTools_Tools::FindChains(VVs, aMapChains); - // - aNbChains=aMapChains.Extent(); - for (i=1; i<=aNbChains; ++i) { - const TColStd_IndexedMapOfInteger& aChain=aMapChains(i); - // - aM.Clear(); - aLV.Clear(); - aNbV=aChain.Extent(); - for (j=1; j<=aNbV; ++j) { - aIdV=aChain(j); - const TopoDS_Shape& aV=myDS->Shape(aIdV); - if (!aM.Contains(aV)) { - aM.Add(aV); - aLV.Append(aV); - } - } - // - aNbL=aLV.Extent(); - if (aNbL==1){ - aNewShape=aChain(1); - } - else if (aNbL>1) { - // - // Make new Vertex - NMTTools_Tools::MakeNewVertex(aLV, aNewVertex); - // Insert New Vertex in DS; - // aNewShape is # of DS-line, where aNewVertex is kept - myDS->InsertShapeAndAncestorsSuccessors(aNewVertex, anASSeq); - aNewShape=myDS->NumberOfInsertedShapes(); - // - // State of New Vertex is ON - myDS->SetState (aNewShape, BooleanOperations_ON); - } - // - // Insert New Vertex in Interference - aNb=VVs.Extent(); - for (j=1; j<=aNb; ++j) { - BOPTools_VVInterference& VV=VVs(j); - anIndex1=VV.Index1(); - anIndex2=VV.Index2(); - if (aChain.Contains(anIndex1) || aChain.Contains(anIndex2)) { - VV.SetNewShape(aNewShape); - } - } - } - myIsDone=Standard_True; -} - -//======================================================================= -// function: FindSDVertex -// purpose: -//======================================================================= - Standard_Integer NMTTools_PaveFiller::FindSDVertex(const Standard_Integer nV)const -{ - Standard_Integer i, aNb, anIndex1, anIndex2, aNewShape=0; - - BOPTools_CArray1OfVVInterference& VVs=myIntrPool->VVInterferences(); - aNb=VVs.Extent(); - - for (i=1; i<=aNb; i++) { - const BOPTools_VVInterference& VV=VVs(i); - anIndex1=VV.Index1(); - anIndex2=VV.Index2(); - if (nV==anIndex1 || nV==anIndex2) { - aNewShape=VV.NewShape(); - return aNewShape; - } - } - return aNewShape; -} diff --git a/src/NMTTools/NMTTools_PaveFiller_2.cxx b/src/NMTTools/NMTTools_PaveFiller_2.cxx deleted file mode 100644 index 041519246..000000000 --- a/src/NMTTools/NMTTools_PaveFiller_2.cxx +++ /dev/null @@ -1,211 +0,0 @@ -// File: NMTTools_PaveFiller_2.cxx -// Created: Mon Dec 8 12:02:56 2003 -// Author: Peter KURNEV -// - - -#include - -#include - -#include - -#include - -#include - -#include -#include -#include - -#include -#include - -#include -#include -#include -#include - -#include - -#include -// -#include -#include - -//======================================================================= -// function: PrepareEdges -// purpose: -//======================================================================= - void NMTTools_PaveFiller::PrepareEdges() -{ - Standard_Integer i, nV, ii, aNBSuc, ip, aNbShapesObject; - Standard_Real aT; - TopAbs_Orientation anOr; - TopoDS_Edge aE; - TopoDS_Vertex aV; - // - aNbShapesObject=myDS->NumberOfShapesOfTheObject(); - for (i=1; i<=myNbSources; ++i) { - if (myDS->GetShapeType(i)==TopAbs_EDGE) { - aE=TopoDS::Edge(myDS->Shape(i)); - // - if (BRep_Tool::Degenerated(aE)){ - continue; - } - // - BOPTools_PaveSet& aPaveSet=myPavePool(myDS->RefEdge(i)); - // - // A <- - aNBSuc=myDS->NumberOfSuccessors(i); - for (ii=1; ii <=aNBSuc; ii++) { - nV=myDS->GetSuccessor(i, ii); - anOr=myDS->GetOrientation(i, ii); - aV=TopoDS::Vertex(myDS->Shape(nV)); - aV.Orientation(anOr); - aT=BRep_Tool::Parameter(aV, aE); - // - ip=FindSDVertex(nV); - if (ip) { - aV=TopoDS::Vertex(myDS->Shape(ip)); - aV.Orientation(anOr);// XX ? if the edge is closed it'll be amazing result - nV=ip; - } - // - BOPTools_Pave aPave(nV, aT); - aPaveSet.Append (aPave); - } - } - } -} -//======================================================================= -// function: PerformVE -// purpose: -//======================================================================= - void NMTTools_PaveFiller::PerformVE() -{ - myIsDone=Standard_False; - // - Standard_Boolean bJustAddInterference; - Standard_Integer n1, n2, anIndexIn, aFlag, aWhat, aWith, aNbVEs, aBlockLength, iSDV, nV1; - Standard_Real aT; - TopoDS_Vertex aV1; - TopoDS_Edge aE2; - BOPTools_IndexedMapOfCoupleOfInteger aSnareMap; - BOPTools_CoupleOfInteger aCouple; - // - BOPTools_CArray1OfVEInterference& aVEs=myIntrPool->VEInterferences(); - // - myDSIt.Initialize (TopAbs_VERTEX, TopAbs_EDGE); - // - // BlockLength correction - aNbVEs=ExpectedPoolLength(); - aBlockLength=aVEs.BlockLength(); - if (aNbVEs > aBlockLength) { - aVEs.SetBlockLength(aNbVEs); - } - // - for (; myDSIt.More(); myDSIt.Next()) { - myDSIt.Current(n1, n2, bJustAddInterference); - // - if (! myIntrPool->IsComputed(n1, n2)) { - if (! IsSuccesstorsComputed(n1, n2)) { - anIndexIn=0; - aWhat=n1; // Vertex - aWith=n2; // Edge - SortTypes(aWhat, aWith); - // - if(bJustAddInterference) { - myIntrPool->AddInterference(aWhat, aWith, BooleanOperations_VertexEdge, anIndexIn); - continue; - } - // Edge - aE2=TopoDS::Edge(myDS->Shape(aWith)); - // - if (BRep_Tool::Degenerated(aE2)){ - continue; - } - // Vertex - nV1=aWhat; - aV1=TopoDS::Vertex(myDS->Shape(aWhat)); - // - iSDV=FindSDVertex(aWhat); - if (iSDV) { - nV1=iSDV; - aV1=TopoDS::Vertex(myDS->Shape(nV1)); - } - // - aFlag=myContext.ComputeVE (aV1, aE2, aT); - // - if (!aFlag) { - // - // Add Interference to the Pool - BOPTools_VEInterference anInterf (aWhat, aWith, aT); - anIndexIn=aVEs.Append(anInterf); - // - // Add Pave to the Edge's myPavePool - aCouple.SetCouple(nV1, aWith); - if (!aSnareMap.Contains(aCouple)){ - aSnareMap.Add(aCouple); - // - BOPTools_Pave aPave(nV1, aT, BooleanOperations_VertexEdge); - aPave.SetInterference(anIndexIn); - BOPTools_PaveSet& aPaveSet= myPavePool(myDS->RefEdge(aWith)); - aPaveSet.Append(aPave); - } - // - // State for the Vertex in DS; - myDS->SetState (aWhat, BooleanOperations_ON); - // Insert Vertex in Interference Object - BOPTools_VEInterference& aVE=aVEs(anIndexIn); - aVE.SetNewShape(aWhat); - } - myIntrPool->AddInterference(aWhat, aWith, BooleanOperations_VertexEdge, anIndexIn); - } - } - } - myIsDone=Standard_True; -} - -/* -// A -// - // cto900/M2 - // Some of Edges can be [Semi] Infinite. Such Edges have no - // vertices on correspondant INF ends. So we must provide - // these vertices formally (to obtain Shrunk Ranges for e.g). - // In reality this vertex(-es) does not belong to the INF Edge. - // It just has reference in the DS. - // PKV Tue Apr 23 10:21:45 2002 - { - Standard_Real aT1, aT2, aTolE; - Standard_Boolean bInf1, bInf2; - gp_Pnt aPx; - TopoDS_Vertex aVx; - BRep_Builder aBB; - BooleanOperations_AncestorsSeqAndSuccessorsSeq anASSeq; - // - aTolE=BRep_Tool::Tolerance(aE); - Handle(Geom_Curve) aC3D=BRep_Tool::Curve (aE, aT1, aT2); - bInf1=Precision::IsNegativeInfinite(aT1); - bInf2=Precision::IsPositiveInfinite(aT2); - - if (bInf1) { - aC3D->D0(aT1, aPx); - aBB.MakeVertex(aVx, aPx, aTolE); - myDS->InsertShapeAndAncestorsSuccessors(aVx, anASSeq); - nV=myDS->NumberOfInsertedShapes(); - BOPTools_Pave aPave(nV, aT1); - aPaveSet.Append (aPave); - } - - if (bInf2) { - aC3D->D0(aT2, aPx); - aBB.MakeVertex(aVx, aPx, aTolE); - myDS->InsertShapeAndAncestorsSuccessors(aVx, anASSeq); - nV=myDS->NumberOfInsertedShapes(); - BOPTools_Pave aPave(nV, aT2); - aPaveSet.Append (aPave); - } - } -*/ diff --git a/src/NMTTools/NMTTools_PaveFiller_3.cxx b/src/NMTTools/NMTTools_PaveFiller_3.cxx deleted file mode 100644 index 149eed7fc..000000000 --- a/src/NMTTools/NMTTools_PaveFiller_3.cxx +++ /dev/null @@ -1,88 +0,0 @@ -// File: NMTTools_PaveFiller_3.cxx -// Created: Mon Dec 8 16:06:56 2003 -// Author: Peter KURNEV -// - - -#include - -#include -#include -#include -#include - -#include -#include - -#include - -//======================================================================= -// function: PerformVF -// purpose: -//======================================================================= - void NMTTools_PaveFiller::PerformVF() -{ - myIsDone=Standard_False; - // - Standard_Boolean aJustAddInterference; - Standard_Integer n1, n2, anIndexIn, aFlag, aWhat, aWith, aNbVSs, aBlockLength, iSDV; - Standard_Real aU, aV; - TopoDS_Vertex aV1; - TopoDS_Face aF2; - // - BOPTools_CArray1OfVSInterference& aVSs=myIntrPool->VSInterferences(); - // - // V/E Interferences - myDSIt.Initialize(TopAbs_VERTEX, TopAbs_FACE); - // - // BlockLength correction - aNbVSs=ExpectedPoolLength(); - aBlockLength=aVSs.BlockLength(); - if (aNbVSs > aBlockLength) { - aVSs.SetBlockLength(aNbVSs); - } - // - for (; myDSIt.More(); myDSIt.Next()) { - myDSIt.Current(n1, n2, aJustAddInterference); - // - if (! myIntrPool->IsComputed(n1, n2)) { - if (! IsSuccesstorsComputed(n1, n2)) { - anIndexIn=0; - aWhat=n1; // Vertex - aWith=n2; // Face - SortTypes(aWhat, aWith); - // - iSDV=FindSDVertex(aWhat); - // - if(aJustAddInterference) { - myIntrPool->AddInterference(aWhat, aWith, BooleanOperations_VertexSurface, anIndexIn); - continue; - } - // - aV1=TopoDS::Vertex(myDS->Shape(aWhat)); - if (iSDV) { - aV1=TopoDS::Vertex(myDS->Shape(iSDV)); - } - // - aF2=TopoDS::Face(myDS->Shape(aWith)); - // - aFlag=myContext.ComputeVS (aV1, aF2, aU, aV); - // - if (!aFlag) { - // - // Add Interference to the Pool - BOPTools_VSInterference anInterf (aWhat, aWith, aU, aV); - anIndexIn=aVSs.Append(anInterf); - // - // SetState for Vertex in DS; - myDS->SetState (aWhat, BooleanOperations_ON); - // Insert Vertex in Interference Object - BOPTools_VSInterference& aVS=aVSs(anIndexIn); - aVS.SetNewShape(aWhat); - } - myIntrPool->AddInterference(aWhat, aWith, BooleanOperations_VertexSurface, anIndexIn); - } - } - } - myIsDone=Standard_True; -} diff --git a/src/NMTTools/NMTTools_PaveFiller_4.cxx b/src/NMTTools/NMTTools_PaveFiller_4.cxx deleted file mode 100644 index 65baf7b9c..000000000 --- a/src/NMTTools/NMTTools_PaveFiller_4.cxx +++ /dev/null @@ -1,1079 +0,0 @@ -// File: NMTTools_PaveFiller_4.cxx -// Created: Mon Dec 8 17:08:58 2003 -// Author: Peter KURNEV -// - - -#include -// -#include -#include - -#include -#include - -#include -#include -#include -#include - -#include - -#include -#include - -#include - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include - -#include - -#include -#include -#include -#include - -// -static - void VertexParameters(const IntTools_CommonPrt& aCPart, - Standard_Real& aT1, - Standard_Real& aT2); -static - Standard_Boolean IsOnPave(const Standard_Real& aT1, - const IntTools_Range& aRange, - const Standard_Real& aTolerance); -static - void EECommonBlocks(const BOPTools_IDMapOfPaveBlockIMapOfPaveBlock& aMapCB); - -static - void ProcessBlock(const BOPTools_PaveBlock& aPB, - const BOPTools_IDMapOfPaveBlockIMapOfPaveBlock& aMapCB, - BOPTools_IMapOfPaveBlock& aProcessedBlocks, - BOPTools_IMapOfPaveBlock& aChain); -static - void FindChains(const BOPTools_IDMapOfPaveBlockIMapOfPaveBlock& aMapCB, - NMTTools_ListOfCommonBlock& aLCB); - -//======================================================================= -// function: PerformEE -// purpose: -//======================================================================= - void NMTTools_PaveFiller::PerformEE() -{ - myIsDone=Standard_False; - // - Standard_Boolean bJustAdd; - Standard_Integer n1, n2, anIndexIn, nE1, nE2, aNbVEs, aBlockLength; - Standard_Integer aTmp, aWhat, aWith, i, aNbCPrts, aDiscretize=30; - Standard_Real aTolE1, aTolE2, aDeflection=0.01; - BOPTools_ListIteratorOfListOfPaveBlock anIt1, anIt2; - TopoDS_Edge aEWhat, aEWith; - TopoDS_Vertex aNewVertex; - BooleanOperations_IndexedDataMapOfShapeInteger aMapVI; - BOPTools_IDMapOfPaveBlockIMapOfPaveBlock aMapCB; - // - BOPTools_CArray1OfEEInterference& aEEs=myIntrPool->EEInterferences(); - // - // BlockLength correction - aNbVEs=ExpectedPoolLength(); - aBlockLength=aEEs.BlockLength(); - if (aNbVEs > aBlockLength) { - aEEs.SetBlockLength(aNbVEs); - } - // - myDSIt.Initialize(TopAbs_EDGE, TopAbs_EDGE); - // - for (; myDSIt.More(); myDSIt.Next()) { - myDSIt.Current(n1, n2, bJustAdd); - anIndexIn = 0; - // - if (myIntrPool->IsComputed(n1, n2)) { - continue; - } - // - nE1=n1; - nE2=n2; - SortTypes(nE1, nE2); - // - if(bJustAdd) { - myIntrPool->AddInterference (nE1, nE2, BooleanOperations_EdgeEdge, anIndexIn); - continue; - } - // - const TopoDS_Edge& aE1=TopoDS::Edge(myDS->Shape(nE1)); - const TopoDS_Edge& aE2=TopoDS::Edge(myDS->Shape(nE2)); - // - if (BRep_Tool::Degenerated(aE1) || BRep_Tool::Degenerated(aE2)){ - continue; - } - // - aTolE1=BRep_Tool::Tolerance(aE1); - aTolE2=BRep_Tool::Tolerance(aE2); - // - BOPTools_ListOfPaveBlock& aLPB1=mySplitShapesPool(myDS->RefEdge(nE1)); - // - for (anIt1.Initialize(aLPB1); anIt1.More(); anIt1.Next()) { - BOPTools_PaveBlock& aPB1=anIt1.Value(); - const IntTools_ShrunkRange& aShrunkRange1=aPB1.ShrunkRange(); - // - const IntTools_Range& aSR1=aShrunkRange1.ShrunkRange(); - const Bnd_Box& aBB1=aShrunkRange1.BndBox(); - // - BOPTools_ListOfPaveBlock& aLPB2=mySplitShapesPool(myDS->RefEdge(nE2)); - // - for (anIt2.Initialize(aLPB2); anIt2.More(); anIt2.Next()) { - BOPTools_PaveBlock& aPB2=anIt2.Value(); - const IntTools_ShrunkRange& aShrunkRange2=aPB2.ShrunkRange(); - - const IntTools_Range& aSR2=aShrunkRange2.ShrunkRange(); - const Bnd_Box& aBB2=aShrunkRange2.BndBox(); - // - if (aBB1.IsOut (aBB2)) { - continue; - } - // - // EE - IntTools_EdgeEdge aEE; - aEE.SetEdge1 (aE1); - aEE.SetEdge2 (aE2); - aEE.SetTolerance1 (aTolE1); - aEE.SetTolerance2 (aTolE2); - aEE.SetDiscretize (aDiscretize); - aEE.SetDeflection (aDeflection); - // - IntTools_Range anewSR1 = aSR1; - IntTools_Range anewSR2 = aSR2; - // - BOPTools_Tools::CorrectRange (aE1, aE2, aSR1, anewSR1); - BOPTools_Tools::CorrectRange (aE2, aE1, aSR2, anewSR2); - // - aEE.SetRange1(anewSR1); - aEE.SetRange2(anewSR2); - - aEE.Perform(); - // - anIndexIn=0; - // - if (aEE.IsDone()) { - // reverse order if it is necessary - aEWhat=aE1; - aEWith=aE2; - aWhat=nE1; - aWith=nE2; - if (aEE.Order()) { - aTmp=aWhat; - aWhat=aWith; - aWith=aTmp; - aEWhat=aE2; - aEWith=aE1; - } - // - const IntTools_SequenceOfCommonPrts& aCPrts=aEE.CommonParts(); - aNbCPrts=aCPrts.Length(); - for (i=1; i<=aNbCPrts; i++) { - const IntTools_CommonPrt& aCPart=aCPrts(i); - const IntTools_SequenceOfRanges& aRanges2=aCPart.Ranges2(); - // - anIndexIn=0; - // - TopAbs_ShapeEnum aType=aCPart.Type(); - switch (aType) { - case TopAbs_VERTEX: { - Standard_Real aT1, aT2, aTol=Precision::PConfusion(); - Standard_Boolean bIsOnPave1, bIsOnPave2; - IntTools_Range aR1, aR2; - // - VertexParameters(aCPart, aT1, aT2); - // - //decide to keep the pave or not - aR1 = (aEE.Order()) ? anewSR2 : anewSR1; - aR2 = (aEE.Order()) ? anewSR1 : anewSR2; - // - bIsOnPave1=IsOnPave(aT1, aR1, aTol); - bIsOnPave2=IsOnPave(aT2, aR2, aTol); - // - if(bIsOnPave1 || bIsOnPave2) { - myIntrPool->AddInterference (aWhat, aWith, BooleanOperations_EdgeEdge, anIndexIn); - continue; - } - // - BOPTools_Tools::MakeNewVertex(aEWhat, aT1, aEWith, aT2, aNewVertex); - // - // Add Interference to the Pool - BOPTools_EEInterference anInterf (aWhat, aWith, aCPart); - // - anIndexIn=aEEs.Append(anInterf); - myIntrPool->AddInterference (aWhat, aWith, BooleanOperations_EdgeEdge, anIndexIn); - // - // Collect - aMapVI.Add(aNewVertex, anIndexIn); - } - break; - - case TopAbs_EDGE: { - Standard_Integer aNbComPrt2; - Standard_Boolean aCoinsideFlag; - // - aNbComPrt2=aRanges2.Length(); - aCoinsideFlag=IsBlocksCoinside(aPB1, aPB2); - // - if (aNbComPrt2>1 || !aCoinsideFlag) { - myIntrPool->AddInterference (aWhat, aWith, BooleanOperations_EdgeEdge, anIndexIn); - break; - } - // - // Fill aMapCB - if (aMapCB.Contains(aPB1)) { - BOPTools_IMapOfPaveBlock& aMapPB=aMapCB.ChangeFromKey(aPB1); - aMapPB.Add(aPB1); - aMapPB.Add(aPB2); - } - else { - BOPTools_IMapOfPaveBlock aMapPB; - aMapPB.Add(aPB1); - aMapPB.Add(aPB2); - aMapCB.Add(aPB1, aMapPB); - } - // - if (aMapCB.Contains(aPB2)) { - BOPTools_IMapOfPaveBlock& aMapPB=aMapCB.ChangeFromKey(aPB2); - aMapPB.Add(aPB1); - aMapPB.Add(aPB2); - } - else { - BOPTools_IMapOfPaveBlock aMapPB; - aMapPB.Add(aPB1); - aMapPB.Add(aPB2); - aMapCB.Add(aPB2, aMapPB); - } - } - break; - default: - break; - } // switch (aType) - } // for (i=1; i<=aNbCPrts; i++) - }// if (aEE.IsDone()) - } // for (; anIt2.More(); anIt2.Next()) - } // for (; anIt1.More(); anIt1.Next()) - }// for (; myDSIt.More(); myDSIt.Next()) - // - EENewVertices (aMapVI); - EECommonBlocks(aMapCB); - // - myIsDone=Standard_True; -} -//======================================================================= -// function:EECommonBlocks -// purpose: -//======================================================================= - void NMTTools_PaveFiller::EECommonBlocks(const BOPTools_IDMapOfPaveBlockIMapOfPaveBlock& aMapCB) -{ - NMTTools_ListOfCommonBlock aLCB; - // - FindChains(aMapCB, aLCB); - ReplaceCommonBlocks(aLCB); -} -//======================================================================= -// function:EENewVertices -// purpose: -//======================================================================= - void NMTTools_PaveFiller::EENewVertices (const BooleanOperations_IndexedDataMapOfShapeInteger& aMapVI) -{ - Standard_Integer aNb, i, j, aNewShape, aNbEdges, aNbIEE, aNbVV, aNbSimple; - Standard_Integer aWhat, aWith, i1, i2, nE1, nE2, nE, nV, aFlag; - Standard_Real aT; - TopoDS_Compound aCompound; - BRep_Builder aBB; - NMTTools_IndexedDataMapOfIndexedMapOfInteger aMNVE, aMNVIEE; - BooleanOperations_AncestorsSeqAndSuccessorsSeq anASSeq; - BOPTools_Pave aPave; - TopoDS_Vertex aNewVertex; - TopTools_IndexedMapOfShape aMNVComplex, aMNVSimple; - // - BOPTools_CArray1OfEEInterference& aEEs=myIntrPool->EEInterferences(); - // - aNb=aMapVI.Extent(); - // - if (!aNb) { // no new vertices, no new problems - return; - } - // - // 0. - if (aNb==1) { - aNewVertex=TopoDS::Vertex(aMapVI.FindKey(1)); - EENewVertices(aNewVertex, aMapVI); - return; - } - // - // 1. Make compound from new vertices - aBB.MakeCompound(aCompound); - for (i=1; i<=aNb; ++i) { - const TopoDS_Shape& aV=aMapVI.FindKey(i); - aBB.Add(aCompound, aV); - } - // - // 2. VV intersection between these vertices - // using the auxiliary Filler - NMTDS_ShapesDataStructure tDS; - // - tDS.SetCompositeShape(aCompound); - tDS.Init(); - // - BOPTools_InterferencePool tInterfPool(tDS); - NMTTools_PaveFiller tPaveFiller(tInterfPool); - // - tPaveFiller.Init(); - // - tPaveFiller.PerformVV(); - tPaveFiller.PerformNewVertices(); - // - const BOPTools_CArray1OfVVInterference& aVVInterfs=tInterfPool.VVInterfs(); - // - // 3. Separate Comlex and Simple new vertices - aNbVV=aVVInterfs.Extent(); - for (i=1; i<=aNbVV; ++i) { - const BOPTools_VVInterference& aVV=aVVInterfs(i); - aVV.Indices(aWhat, aWith); - const TopoDS_Shape& aV1=tDS.Shape(aWhat); - const TopoDS_Shape& aV2=tDS.Shape(aWith); - aMNVComplex.Add(aV1); - aMNVComplex.Add(aV2); - } - // - for (i=1; i<=aNb; ++i) { - const TopoDS_Shape& aV=aMapVI.FindKey(i); - if (!aMNVComplex.Contains(aV)) { - aMNVSimple.Add(aV); - } - } - // - // 4. Treat Simple new Vertices - aNbSimple=aMNVSimple.Extent(); - for (i=1; i<=aNbSimple; ++i) { - const TopoDS_Vertex& aV=TopoDS::Vertex(aMNVSimple(i)); - EENewVertices(aV, aMapVI); - } - // - // 3. Fill Maps : NewVertex-edges (aMNVE) - // NewVertex-interferences (aMNVIEE) - for (i=1; i<=aNbVV; ++i) { - const BOPTools_VVInterference& aVV=aVVInterfs(i); - aNewShape=aVV.NewShape(); - if (!aNewShape) { - continue; - } - // - if (!aMNVE.Contains(aNewShape)) { - TColStd_IndexedMapOfInteger aMx; - aMNVE.Add(aNewShape, aMx); - } - if (!aMNVIEE.Contains(aNewShape)) { - TColStd_IndexedMapOfInteger aMx; - aMNVIEE.Add(aNewShape, aMx); - } - // - TColStd_IndexedMapOfInteger& aME=aMNVE.ChangeFromKey(aNewShape); - TColStd_IndexedMapOfInteger& aMIEE=aMNVIEE.ChangeFromKey(aNewShape); - // - aVV.Indices(aWhat, aWith); - //aWhat - const TopoDS_Shape& aV1=tDS.Shape(aWhat); - i1=aMapVI.FindFromKey(aV1); - const BOPTools_EEInterference& aEE1=aEEs(i1); - aEE1.Indices(nE1, nE2); - aME.Add(nE1); - aME.Add(nE2); - aMIEE.Add(i1); - //aWith - const TopoDS_Shape& aV2=tDS.Shape(aWith); - i2=aMapVI.FindFromKey(aV2); - const BOPTools_EEInterference& aEE2=aEEs(i2); - aEE2.Indices(nE1, nE2); - aME.Add(nE1); - aME.Add(nE2); - aMIEE.Add(i2); - // - //printf(" VV: (%d, %d) -> %d\n", aWhat, aWith, aNewShape); - } - // - // 4. Process new vertices - aNb=aMNVE.Extent(); - for (i=1; i<=aNb; ++i) { // xx - // - // new Vertex - nV=aMNVE.FindKey(i); - aNewVertex=TopoDS::Vertex(tDS.Shape(nV)); - // - // Insert New Vertex in DS; - myDS->InsertShapeAndAncestorsSuccessors(aNewVertex, anASSeq); - aNewShape=myDS->NumberOfInsertedShapes(); - myDS->SetState (aNewShape, BooleanOperations_ON); - // - // Update index of NewShape in EE interferences - const TColStd_IndexedMapOfInteger& aMIEE=aMNVIEE.FindFromKey(nV);//(i); - aNbIEE=aMIEE.Extent(); - for (j=1; j<=aNbIEE; ++j) { - i1=aMIEE(j); - BOPTools_EEInterference& aEE1=aEEs(i1); - aEE1.SetNewShape(aNewShape); - } - // - // Update Paves on edges - const TColStd_IndexedMapOfInteger& aME=aMNVE(i); - aNbEdges=aME.Extent(); - for (j=1; j<=aNbEdges; ++j) { - nE=aME(j); - const TopoDS_Edge& aE=TopoDS::Edge(myDS->Shape(nE)); - // - aFlag=myContext.ComputeVE (aNewVertex, aE, aT); - // - if (!aFlag) { - aPave.SetInterference(-1); - aPave.SetType (BooleanOperations_EdgeEdge); - aPave.SetIndex(aNewShape); - aPave.SetParam(aT); - // - BOPTools_PaveSet& aPaveSet=myPavePoolNew(myDS->RefEdge(nE)); - aPaveSet.Append(aPave); - } - } - }// for (i=1; i<=aNb; ++i) {// xx -} -//======================================================================= -// function:EENewVertices -// purpose: -//======================================================================= - void NMTTools_PaveFiller::EENewVertices (const TopoDS_Vertex& aNewVertex, - const BooleanOperations_IndexedDataMapOfShapeInteger& aMapVI) -{ - Standard_Integer i, aNewShape, nE1, nE2; - Standard_Real aT1, aT2; - BooleanOperations_AncestorsSeqAndSuccessorsSeq anASSeq; - BOPTools_Pave aPave; - // - BOPTools_CArray1OfEEInterference& aEEs=myIntrPool->EEInterferences(); - // - // one new vertex case is treated in usual way - // - // Insert New Vertex in DS; - myDS->InsertShapeAndAncestorsSuccessors(aNewVertex, anASSeq); - aNewShape=myDS->NumberOfInsertedShapes(); - myDS->SetState (aNewShape, BooleanOperations_ON); - // Insert New Vertex in EE Interference - i=aMapVI.FindFromKey(aNewVertex); - BOPTools_EEInterference& aEEInterf= aEEs(i); - aEEInterf.SetNewShape(aNewShape); - // Extact interference info - aEEInterf.Indices(nE1, nE2); - const IntTools_CommonPrt& aCPart=aEEInterf.CommonPrt(); - VertexParameters(aCPart, aT1, aT2); - // - // Add Paves to the myPavePoolNew - aPave.SetInterference(i); - aPave.SetType (BooleanOperations_EdgeEdge); - aPave.SetIndex(aNewShape); - // Pave for edge nE1 - aPave.SetParam(aT1); - BOPTools_PaveSet& aPaveSet1=myPavePoolNew(myDS->RefEdge(nE1)); - aPaveSet1.Append(aPave); - // Pave for edge nE2 - aPave.SetParam(aT2); - BOPTools_PaveSet& aPaveSet2=myPavePoolNew(myDS->RefEdge(nE2)); - aPaveSet2.Append(aPave); -} -//======================================================================= -// function: RefinePavePool -// purpose: -//======================================================================= - void NMTTools_PaveFiller::RefinePavePool() -{ - Standard_Integer i, aNbNew; - - for (i=1; i<=myNbSources; i++) { - - if ((myDS->GetShape(i)).ShapeType()==TopAbs_EDGE) { - BOPTools_PaveSet& aPS= myPavePool(myDS->RefEdge(i)); - // - BOPTools_PaveSet& aNewPS= myPavePoolNew(myDS->RefEdge(i)); - BOPTools_ListOfPave& aNewLP=aNewPS.ChangeSet(); - // - aNbNew=aNewLP.Extent(); - if (aNbNew) { - BOPTools_ListIteratorOfListOfPave anIt(aNewLP); - for (; anIt.More(); anIt.Next()) { - const BOPTools_Pave& aPave=anIt.Value(); - aPS.Append(aPave); - } - // Clear the ListOfPaveBlock - BOPTools_ListOfPaveBlock& aLPB=mySplitShapesPool(myDS->RefEdge(i)); - aLPB.Clear(); - // Prepare the paveBlocks for that egde again - PreparePaveBlocks(i); - } - aNewLP.Clear(); - } - } -} -//======================================================================= -// function: PreparePaveBlocks -// purpose: -//======================================================================= - void NMTTools_PaveFiller::PreparePaveBlocks(const TopAbs_ShapeEnum aType1, - const TopAbs_ShapeEnum aType2) -{ - myIsDone=Standard_False; - // - Standard_Boolean Ok1, Ok2, Ok3; - Ok1= (aType1==TopAbs_VERTEX) && (aType2==TopAbs_EDGE) ; - Ok2= (aType1==TopAbs_EDGE) && (aType2==TopAbs_EDGE) ; - Ok3= (aType1==TopAbs_EDGE) && (aType2==TopAbs_FACE) ; - if (!Ok1 && !Ok2 && !Ok3) { - // error: Type mismatch - return; - } - // - Standard_Boolean aFlag = Standard_False; - Standard_Integer n1, n2, nE1, nE2, aNbSplits; - TColStd_MapOfInteger aMap; - // - myDSIt.Initialize(aType1, aType2); - // - for (; myDSIt.More(); myDSIt.Next()) { - myDSIt.Current(n1, n2, aFlag); - nE1=n1; - nE2=n2; - SortTypes(nE1, nE2); - // - if (aType1==TopAbs_EDGE) { - BOPTools_ListOfPaveBlock& aLPB1=mySplitShapesPool(myDS->RefEdge(nE1)); - aNbSplits=aLPB1.Extent(); - if (!aNbSplits) { - if (!aMap.Contains(nE1)) { - aMap.Add(nE1); - PreparePaveBlocks(nE1); - // - if (!myIsDone) { - return; - } - } - } - } - // - if (aType2==TopAbs_EDGE) { - BOPTools_ListOfPaveBlock& aLPB2=mySplitShapesPool(myDS->RefEdge(nE2)); - aNbSplits=aLPB2.Extent(); - if (!aNbSplits) { - if (!aMap.Contains(nE2)) { - aMap.Add(nE2); - PreparePaveBlocks(nE2); - // - if (!myIsDone) { - return; - } - } - } - }// if (aType2==TopAbs_EDGE) - }// for (; myDSIt.More(); myDSIt.Next()) - - myIsDone=Standard_True; -} -//======================================================================= -// function: PreparePaveBlocks -// purpose: -//======================================================================= - void NMTTools_PaveFiller::PreparePaveBlocks(const Standard_Integer nE) -{ - myIsDone=Standard_False; - - Standard_Integer nV1, nV2; - - TopoDS_Edge aE; - TopoDS_Vertex aV1, aV2; - - // SplitShapesPool - BOPTools_ListOfPaveBlock& aLPB=mySplitShapesPool(myDS->RefEdge(nE)); - // Edge - aE=TopoDS::Edge(myDS->Shape(nE)); - // - if (!BRep_Tool::Degenerated(aE)){ - // - BOPTools_PaveSet& aPS=myPavePool(myDS->RefEdge(nE)); - - BOPTools_PaveBlockIterator aPBIt(nE, aPS); - for (; aPBIt.More(); aPBIt.Next()) { - BOPTools_PaveBlock& aPB=aPBIt.Value(); - - const IntTools_Range& aRange=aPB.Range(); - - const BOPTools_Pave& aPave1=aPB.Pave1(); - nV1=aPave1.Index(); - aV1=TopoDS::Vertex(myDS->GetShape(nV1)); - - const BOPTools_Pave& aPave2=aPB.Pave2(); - nV2=aPave2.Index(); - aV2=TopoDS::Vertex(myDS->GetShape(nV2)); - // - // ShrunkRange - IntTools_ShrunkRange aSR (aE, aV1, aV2, aRange, myContext); - // - Standard_Integer anErrorStatus; - anErrorStatus=aSR.ErrorStatus(); - - char buf[512]; - if (!aSR.IsDone()) { - sprintf (buf, "Can not obtain ShrunkRange for Edge %d\n", nE); - BOPTColStd_Dump::PrintMessage(buf); - sprintf (buf, "Can not obtain ShrunkRange for Edge %d", nE); - throw - BOPTColStd_Failure(buf) ; - } - // - if (anErrorStatus==6) { - sprintf(buf, - "Warning: [PreparePaveBlocks()] Max.Dummy Shrunk Range for Edge %d\n", nE); - BOPTColStd_Dump::PrintMessage(buf); - } - else { - // Check left paves and correct ShrunkRange if it is necessary - CorrectShrunkRanges (0, aPave1, aSR); - CorrectShrunkRanges (1, aPave2, aSR); - } - // - aPB.SetShrunkRange(aSR); - aLPB.Append(aPB); - } //for (; aPBIt1.More(); aPBIt1.Next()) - } - myIsDone=Standard_True; -} -//======================================================================= -// function: CorrectShrunkRanges -// purpose: -//======================================================================= - void NMTTools_PaveFiller::CorrectShrunkRanges(const Standard_Integer aSide, - const BOPTools_Pave& aPave, - IntTools_ShrunkRange& aShrunkRange) -{ - BooleanOperations_KindOfInterference aType; - Standard_Integer anIndexInterf ; - // - aType=aPave.Type(); - if (aType!=BooleanOperations_EdgeEdge) { - return; - } - // - anIndexInterf=aPave.Interference(); - if (anIndexInterf<0) { - // it can be EE interf between E and (e1,e2,..en) -> vertex - // so we can't decide which aEE.CommonPrt() we should take. - return; - } - - BOPTools_CArray1OfEEInterference& aEEs=myIntrPool->EEInterferences(); - const BOPTools_EEInterference& aEE=aEEs(anIndexInterf); - const IntTools_CommonPrt& aCP=aEE.CommonPrt(); - const TopoDS_Edge& aE1=aCP.Edge1(); - const TopoDS_Edge& aE2=aCP.Edge2(); - - const IntTools_Range& aSR=aShrunkRange.ShrunkRange(); - const TopoDS_Edge& aE=aShrunkRange.Edge(); - - IntTools_Range aNewRange; - IntTools_Range aCPRange; - - if (aE1.IsSame(aE)) { - const IntTools_Range& aR1=aCP.Range1(); - aCPRange=aR1; - } - if (aE2.IsSame(aE)) { - const IntTools_SequenceOfRanges& aSeqR=aCP.Ranges2(); - const IntTools_Range& aR2=aSeqR(1); - aCPRange=aR2; - } - // - Standard_Real aCoeff=1.05, tV, tNV; - tV=aPave.Param(); - if (aSide==0) { // Left - if (aCPRange.Last() > aSR.First()) { - tNV=aCPRange.Last(); - tNV=tV+aCoeff*(tNV-tV); - aNewRange.SetFirst(tNV); - aNewRange.SetLast (aSR.Last()); - - if(aNewRange.First() > aNewRange.Last()) { - aShrunkRange.SetShrunkRange(aNewRange); - } - } - } - else { // Right - if (aCPRange.First() < aSR.Last()) { - tNV=aCPRange.First(); - tNV=tV-aCoeff*(tV-tNV); - aNewRange.SetFirst(aSR.First()); - aNewRange.SetLast (tNV); - - if(aNewRange.First() < aNewRange.Last()) { - aShrunkRange.SetShrunkRange(aNewRange); - } - } - } -} -//======================================================================= -// function: IsBlocksCoinside -// purpose: -//======================================================================= - Standard_Boolean - NMTTools_PaveFiller::IsBlocksCoinside(const BOPTools_PaveBlock& aPB1, - const BOPTools_PaveBlock& aPB2) const -{ - Standard_Boolean bRetFlag=Standard_True; - Standard_Real aTolV11, aTolV12, aTolV21, aTolV22; - Standard_Real d1121, d1122, d1222, d1221, aTolSum, aCoeff=1.05; - gp_Pnt aP11, aP12, aP21, aP22; - - const TopoDS_Vertex& aV11=TopoDS::Vertex(myDS->Shape(aPB1.Pave1().Index())); - const TopoDS_Vertex& aV12=TopoDS::Vertex(myDS->Shape(aPB1.Pave2().Index())); - const TopoDS_Vertex& aV21=TopoDS::Vertex(myDS->Shape(aPB2.Pave1().Index())); - const TopoDS_Vertex& aV22=TopoDS::Vertex(myDS->Shape(aPB2.Pave2().Index())); - - aTolV11=BRep_Tool::Tolerance(aV11); - aTolV12=BRep_Tool::Tolerance(aV12); - aTolV21=BRep_Tool::Tolerance(aV21); - aTolV22=BRep_Tool::Tolerance(aV22); - - aP11=BRep_Tool::Pnt(aV11); - aP12=BRep_Tool::Pnt(aV12); - aP21=BRep_Tool::Pnt(aV21); - aP22=BRep_Tool::Pnt(aV22); - - d1121=aP11.Distance(aP21); - aTolSum=aCoeff*(aTolV11+aTolV21); - if (d1121RefEdge(nE)); - aLCBE.Append(aCBx); - } - } - } -} -//======================================================================= -// function: RemoveCommonBlocks -// purpose: -//======================================================================= - void NMTTools_PaveFiller::RemoveCommonBlocks(const NMTTools_ListOfCommonBlock& aLCB) -{ - Standard_Integer nE; - NMTTools_ListOfCommonBlock aLCBx; - NMTTools_ListIteratorOfListOfCommonBlock anItCB, anItCBE; - BOPTools_ListIteratorOfListOfPaveBlock anItLPB; - // - anItCB.Initialize(aLCB); - for (; anItCB.More(); anItCB.Next()) { - const NMTTools_CommonBlock& aCB=anItCB.Value(); - const BOPTools_ListOfPaveBlock& aLPB=aCB.PaveBlocks(); - // - // Remove aCB from each edge - anItLPB.Initialize(aLPB); - for (; anItLPB.More(); anItLPB.Next()) { - const BOPTools_PaveBlock& aPB=anItLPB.Value(); - nE=aPB.OriginalEdge(); - // - NMTTools_ListOfCommonBlock& aLCBE=myCommonBlockPool(myDS->RefEdge(nE)); - anItCBE.Initialize(aLCBE); - for (; anItCBE.More(); anItCBE.Next()) { - const NMTTools_CommonBlock& aCBE=anItCBE.Value(); - if (aCBE.IsEqual(aCB)) { - aLCBE.Remove(anItCBE); - break; - } - } - } - } -} -//======================================================================= -// function: SplitCommonBlock -// purpose: -//======================================================================= - void NMTTools_PaveFiller::SplitCommonBlock(const NMTTools_CommonBlock& aCB, - NMTTools_ListOfCommonBlock& aLCBx) -{ - Standard_Integer i, j, k, nE, aNbE, aNbSPBx, aNbPB; - BOPTools_SequenceOfPaveBlock aSPBx; - BOPTools_ListIteratorOfListOfPaveBlock anItLPB; - BOPTools_ListIteratorOfListOfPave anIt; - - BOPTools_PaveBlockIterator anPBIt; - // - const BOPTools_ListOfPaveBlock& aLPB=aCB.PaveBlocks(); - aNbE=aLPB.Extent(); - // - // 1. Whether we realy need to split the common block ? - anItLPB.Initialize(aLPB); - for (; anItLPB.More(); anItLPB.Next()) { - const BOPTools_PaveBlock& aPB=anItLPB.Value(); - nE=aPB.OriginalEdge(); - BOPTools_PaveSet& aPSE=myPavePoolNew(myDS->RefEdge(nE)); - aPSE.SortSet(); - // - BOPTools_PaveSet aPSx; - // - const BOPTools_ListOfPave& aLPE=aPSE.Set(); - anIt.Initialize(aLPE); - for (; anIt.More(); anIt.Next()) { - const BOPTools_Pave& aPx=anIt.Value(); - if (aPB.IsInBlock(aPx)) { - aPSx.Append(aPx); - } - } - aNbPB=aPSx.Set().Extent(); - break; - } - // - if (!aNbPB) { - // we need not split it - aLCBx.Append(aCB); - return; - } - // - // 2. Get sequence of pave Blocks containing all new pave blocks - // for each edges's source pave Block - anItLPB.Initialize(aLPB); - for (; anItLPB.More(); anItLPB.Next()) { - const BOPTools_PaveBlock& aPB=anItLPB.Value(); - const BOPTools_Pave& aPave1=aPB.Pave1(); - const BOPTools_Pave& aPave2=aPB.Pave2(); - nE=aPB.OriginalEdge(); - // - BOPTools_PaveSet aPSx; - // - // the set aPsx will contain bounadry paves aPave1, aPave2 and - // all paves of the edge nE that are inside block aPB - aPSx.Append(aPave1); - aPSx.Append(aPave2); - // - BOPTools_PaveSet& aPSE=myPavePoolNew(myDS->RefEdge(nE)); - aPSE.SortSet(); - // - const BOPTools_ListOfPave& aLPE=aPSE.Set(); - anIt.Initialize(aLPE); - for (; anIt.More(); anIt.Next()) { - const BOPTools_Pave& aPx=anIt.Value(); - if (aPB.IsInBlock(aPx)) { - aPSx.Append(aPx); - } - } - // - // Form pave blocks from aPSx and collect them in aSPBx - anPBIt.Initialize(nE, aPSx); - for (; anPBIt.More(); anPBIt.Next()) { - const BOPTools_PaveBlock& aPBx=anPBIt.Value(); - aSPBx.Append(aPBx); - } - } - // - // 3. Do new common blocks - // - const TColStd_ListOfInteger& aLF=aCB.Faces(); - aNbSPBx=aSPBx.Length(); - aNbPB=aNbSPBx/aNbE; - // - for (i=1; i<=aNbPB; ++i) { - NMTTools_CommonBlock aCBx; - // - aCBx.AddFaces(aLF); - // - for (j=1; j<=aNbE; ++j) { - k=i+(j-1)*aNbPB; - const BOPTools_PaveBlock& aPB=aSPBx(k); - aCBx.AddPaveBlock(aPB); - } - aLCBx.Append(aCBx); - } -} - -//======================================================================= -// function: VertexParameters -// purpose: -//======================================================================= -void VertexParameters(const IntTools_CommonPrt& aCPart, - Standard_Real& aT1, - Standard_Real& aT2) -{ - const IntTools_Range& aR1=aCPart.Range1(); - aT1=0.5*(aR1.First()+aR1.Last()); - // - if((aCPart.VertexParameter1() >= aR1.First()) && - (aCPart.VertexParameter1() <= aR1.Last())) { - aT1 = aCPart.VertexParameter1(); - } - // - const IntTools_SequenceOfRanges& aRanges2=aCPart.Ranges2(); - const IntTools_Range& aR2=aRanges2(1); - aT2=0.5*(aR2.First()+aR2.Last()); - // - if((aCPart.VertexParameter2() >= aR2.First()) && - (aCPart.VertexParameter2() <= aR2.Last())) { - aT2 = aCPart.VertexParameter2(); - } -} -//======================================================================= -// function: KeepPave -// purpose: -//======================================================================= -Standard_Boolean IsOnPave(const Standard_Real& aT1, - const IntTools_Range& aRange, - const Standard_Real& aTolerance) -{ - Standard_Boolean firstisonpave1, firstisonpave2, bIsOnPave; - // - firstisonpave1 = (Abs(aRange.First() - aT1) < aTolerance); - firstisonpave2 = (Abs(aRange.Last() - aT1) < aTolerance); - bIsOnPave=(firstisonpave1 || firstisonpave2); - return bIsOnPave; -} - -//======================================================================= -// function:FindChains -// purpose: -//======================================================================= -void FindChains(const BOPTools_IDMapOfPaveBlockIMapOfPaveBlock& aMapCB, - NMTTools_ListOfCommonBlock& aLCB) -{ - Standard_Integer i, j, aNbCB, aNbPB; - BOPTools_IMapOfPaveBlock aProcessedBlocks, aChain; - // - aNbCB=aMapCB.Extent(); - for (i=1; i<=aNbCB; ++i) { - const BOPTools_PaveBlock& aPB=aMapCB.FindKey(i); - if (aProcessedBlocks.Contains(aPB)) { - continue; - } - // - aProcessedBlocks.Add(aPB); - aChain.Add(aPB); - // - const BOPTools_IMapOfPaveBlock& aMapPB=aMapCB(i); - aNbPB=aMapPB.Extent(); - for (j=1; j<=aNbPB; ++j) { - const BOPTools_PaveBlock& aPBx=aMapPB(j); - ProcessBlock(aPBx, aMapCB, aProcessedBlocks, aChain); - } - // - NMTTools_CommonBlock aCB; - // - aNbPB=aChain.Extent(); - for (j=1; j<=aNbPB; ++j) { - const BOPTools_PaveBlock& aPBx=aChain(j); - aCB.AddPaveBlock(aPBx); - } - aLCB.Append(aCB); - aChain.Clear(); - } -} -//======================================================================= -// function:ProcessBlock -// purpose: -//======================================================================= -void ProcessBlock(const BOPTools_PaveBlock& aPB, - const BOPTools_IDMapOfPaveBlockIMapOfPaveBlock& aMapCB, - BOPTools_IMapOfPaveBlock& aProcessedBlocks, - BOPTools_IMapOfPaveBlock& aChain) -{ - Standard_Integer j, aNbPB; - // - if (aProcessedBlocks.Contains(aPB)) { - return; - } - aProcessedBlocks.Add(aPB); - aChain.Add(aPB); - // - const BOPTools_IMapOfPaveBlock& aMapPB=aMapCB.FindFromKey(aPB); - aNbPB=aMapPB.Extent(); - for (j=1; j<=aNbPB; ++j) { - const BOPTools_PaveBlock& aPBx=aMapPB(j); - ProcessBlock(aPBx, aMapCB, aProcessedBlocks, aChain); - } -} diff --git a/src/NMTTools/NMTTools_PaveFiller_5.cxx b/src/NMTTools/NMTTools_PaveFiller_5.cxx deleted file mode 100644 index 392267f3d..000000000 --- a/src/NMTTools/NMTTools_PaveFiller_5.cxx +++ /dev/null @@ -1,605 +0,0 @@ -// File: NMTTools_PaveFiller_5.cxx -// Created: Mon Dec 15 11:28:33 2003 -// Author: Peter KURNEV -// - - -#include - -#include - -#include -#include - -#include - -#include - -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include - -static - void VertexParameter(const IntTools_CommonPrt& aCPart, - Standard_Real& aT); -static - Standard_Boolean IsOnPave(const Standard_Real& aTR, - const IntTools_Range& aCPRange, - const Standard_Real& aTolerance); - -//======================================================================= -// function: PerformEF -// purpose: -//======================================================================= - void NMTTools_PaveFiller::PerformEF() -{ - myIsDone=Standard_False; - - Standard_Integer n1, n2, anIndexIn=0, nE, nF, aNbEFs, aBlockLength; - Standard_Boolean bJustAdd; - Standard_Real aTolE, aTolF, aDeflection=0.01; - Standard_Integer aDiscretize=35; - BooleanOperations_IndexedDataMapOfShapeInteger aMapVI; - BOPTools_IDMapOfPaveBlockIMapOfInteger aMapCB; - BOPTools_IMapOfPaveBlock aIMPBx; - - // - BOPTools_CArray1OfESInterference& aEFs=myIntrPool->ESInterferences(); - // - myDSIt.Initialize(TopAbs_EDGE, TopAbs_FACE); - // - // BlockLength correction - aNbEFs=ExpectedPoolLength(); - aBlockLength=aEFs.BlockLength(); - if (aNbEFs > aBlockLength) { - aEFs.SetBlockLength(aNbEFs); - } - // - for (; myDSIt.More(); myDSIt.Next()) { - myDSIt.Current(n1, n2, bJustAdd); - anIndexIn = 0; - // - if (myIntrPool->IsComputed(n1, n2)) { - continue; - } - // - nE=n1; - nF=n2; - SortTypes(nE, nF); - // - // all Common Blocks for face nF - //XXX - NMTTools_ListOfCommonBlock aLCBF; - CommonBlocksFace(nF, aLCBF); - NMTTools_CommonBlockAPI aCBAPIF(aLCBF); - //XXX - if(bJustAdd) { - myIntrPool->AddInterference (nE, nF, BooleanOperations_EdgeSurface, anIndexIn); - continue; - } - // Edge - const TopoDS_Edge& aE=TopoDS::Edge(myDS->GetShape(nE)); - if (BRep_Tool::Degenerated(aE)){ - continue; - } - aTolE=BRep_Tool::Tolerance(aE); - // Face - const TopoDS_Face& aF=TopoDS::Face(myDS->GetShape(nF)); - aTolF=BRep_Tool::Tolerance(aF); - const Bnd_Box& aBBF=myDS->GetBoundingBox(nF); - // - // Process each PaveBlock on edge nE - BOPTools_ListOfPaveBlock& aLPB=mySplitShapesPool(myDS->RefEdge(nE)); - // - BOPTools_ListIteratorOfListOfPaveBlock anIt(aLPB); - for (; anIt.More(); anIt.Next()) { - BOPTools_PaveBlock& aPB=anIt.Value(); - //XXX - if (aCBAPIF.IsCommonBlock(aPB)) { - continue; - } - //XXX - const IntTools_ShrunkRange& aShrunkRange=aPB.ShrunkRange(); - const IntTools_Range& aSR =aShrunkRange.ShrunkRange(); - const Bnd_Box& aBBE=aShrunkRange.BndBox(); - // - if (aBBF.IsOut (aBBE)) { - continue; - } - // - // EF - IntTools_EdgeFace aEF; - aEF.SetEdge (aE); - aEF.SetFace (aF); - aEF.SetTolE (aTolE); - aEF.SetTolF (aTolF); - aEF.SetDiscretize (aDiscretize); - aEF.SetDeflection (aDeflection); - // - aEF.SetContext((IntTools_PContext)&myContext); - // - IntTools_Range anewSR = aSR; - // - // Correction of the Shrunk Range - BOPTools_Tools::CorrectRange(aE, aF, aSR, anewSR); - aEF.SetRange (anewSR); - // - aEF.Perform(); - // - if (aEF.IsDone()) { - const IntTools_SequenceOfCommonPrts& aCPrts=aEF.CommonParts(); - Standard_Integer i, aNbCPrts; - aNbCPrts=aCPrts.Length(); - for (i=1; i<=aNbCPrts; i++) { - // - anIndexIn=0; - // - const IntTools_CommonPrt& aCPart=aCPrts(i); - TopAbs_ShapeEnum aType=aCPart.Type(); - switch (aType) { - - case TopAbs_VERTEX: { - Standard_Boolean bIsOnPave1, bIsOnPave2; - Standard_Integer nVF; - Standard_Real aT, aTolToDecide; - TopoDS_Vertex aNewVertex; - // - const IntTools_Range& aR=aCPart.Range1(); - // - // New Vertex - VertexParameter(aCPart, aT); - BOPTools_Tools::MakeNewVertex(aE, aT, aF, aNewVertex); - // - //decide to add pave or not - aTolToDecide=5.e-8; - // - bIsOnPave1=IsOnPave(anewSR.First(), aR, aTolToDecide); - bIsOnPave2=IsOnPave(anewSR.Last() , aR, aTolToDecide); - // - if (!bIsOnPave1 && !bIsOnPave2) { - nVF=CheckFacePaves(aNewVertex, nF); - if (!nVF) { - // really new vertex - // Add Interference to the Pool - BOPTools_ESInterference anInterf (nE, nF, aCPart); - anIndexIn=aEFs.Append(anInterf); - anInterf.SetNewShape(0); - // - aMapVI.Add(aNewVertex, anIndexIn); - aIMPBx.Add(aPB); - // - }// if (!nVF) - }// if (!bIsOnPave1 && !bIsOnPave2) - myIntrPool->AddInterference (nE, nF, BooleanOperations_EdgeSurface, anIndexIn); - }// case TopAbs_VERTEX: - break; - // - case TopAbs_EDGE: { - Standard_Boolean aCoinsideFlag; - // - aCoinsideFlag=BOPTools_Tools::IsBlockInOnFace(aPB, aF, myContext); - if (!aCoinsideFlag) { - myIntrPool->AddInterference (nE, nF, BooleanOperations_EdgeSurface, anIndexIn); - break; - } - // - // Fill aMapCB - if (aMapCB.Contains(aPB)) { - TColStd_IndexedMapOfInteger& aMapF=aMapCB.ChangeFromKey(aPB); - aMapF.Add(nF); - } - else { - TColStd_IndexedMapOfInteger aMapF; - aMapF.Add(nF); - aMapCB.Add(aPB, aMapF); - } - //modified by NIZNHY-PKV Fri Jan 23 14:13:08 2004 f - aIMPBx.Add(aPB); - //modified by NIZNHY-PKV Fri Jan 23 14:13:10 2004 t - }// case TopAbs_EDGE: - break; - - default: - break; - } // switch (aType) - } // for (i=1; i<=aNbCPrts; i++) - } //if (aEF.IsDone()) - } // for (; anIt.More(); anIt.Next()) - }// for (; myDSIt.More(); myDSIt.Next()) - // - // Treat New vertices - EFNewVertices(aMapVI); - // - // Add draft Common Blocks of EF type - EFCommonBlocks(aMapCB); - // - // Collect all CB we suspected to split by new vertices - NMTTools_ListOfCommonBlock aLCBx; - { - Standard_Integer i, aNbPBx, nEx; - BOPTools_IMapOfPaveBlock aMx; - // - aNbPBx=aIMPBx.Extent(); - for (i=1; i<=aNbPBx; ++i) { - const BOPTools_PaveBlock& aPBx=aIMPBx(i); - nEx=aPBx.OriginalEdge(); - NMTTools_ListOfCommonBlock& aLCB=myCommonBlockPool(myDS->RefEdge(nEx)); - if (aLCB.Extent()) { - NMTTools_CommonBlockAPI aCBAPIx(aLCB); - if (aCBAPIx.IsCommonBlock(aPBx)) { - NMTTools_CommonBlock& aCBx=aCBAPIx.CommonBlock(aPBx); - const BOPTools_PaveBlock& aPB1=aCBx.PaveBlock1(); - if (!aMx.Contains(aPB1)){ - aMx.Add(aPB1); - aLCBx.Append(aCBx); - } - } - } - } - } - // - // Split the common blocks above - if (aLCBx.Extent()) { - ReplaceCommonBlocks(aLCBx); - } - // - myIsDone=Standard_True; -} -//======================================================================= -// function:EFCommonBlocks -// purpose: -//======================================================================= - void NMTTools_PaveFiller::EFCommonBlocks(const BOPTools_IDMapOfPaveBlockIMapOfInteger& aMapCB) -{ - Standard_Integer i, aNbPB, nE, j, aNbF, nF; - // - aNbPB=aMapCB.Extent(); - // - for (i=1; i<=aNbPB; ++i) { - const BOPTools_PaveBlock& aPB=aMapCB.FindKey(i); - const TColStd_IndexedMapOfInteger& aMapF=aMapCB.FindFromIndex(i); - aNbF=aMapF.Extent(); - // - nE=aPB.OriginalEdge(); - // - NMTTools_ListOfCommonBlock& aLCB=myCommonBlockPool(myDS->RefEdge(nE)); - // - NMTTools_CommonBlockAPI aCBAPI(aLCB); - if (aCBAPI.IsCommonBlock(aPB)) { - NMTTools_CommonBlock& aCB=aCBAPI.CommonBlock(aPB); - for (j=1; j<=aNbF; ++j) { - nF=aMapF(j); - aCB.AddFace(nF); - } - } - else { - NMTTools_CommonBlock aCB; - // - aCB.AddPaveBlock(aPB); - for (j=1; j<=aNbF; ++j) { - nF=aMapF(j); - aCB.AddFace(nF); - } - aLCB.Append(aCB); - } - } -} -//======================================================================= -// function:EFNewVertices -// purpose: -//======================================================================= - void NMTTools_PaveFiller::EFNewVertices (const BooleanOperations_IndexedDataMapOfShapeInteger& aMapVI) -{ - Standard_Integer i, j, aNb, aNewShape, aFlag, iX, aNbVV, aNbSimple; - Standard_Integer aWhat, aWith, nE, nF, nV, aNbIEF, aNbEdges; - Standard_Real aT; - TopoDS_Compound aCompound; - TopoDS_Vertex aNewVertex; - BRep_Builder aBB; - BOPTools_Pave aPave; - NMTTools_IndexedDataMapOfIndexedMapOfInteger aMNVE, aMNVIEF; - BooleanOperations_AncestorsSeqAndSuccessorsSeq anASSeq; - TopTools_IndexedMapOfShape aMNVComplex, aMNVSimple; - // - BOPTools_CArray1OfESInterference& aEFs=myIntrPool->ESInterferences(); - // - aNb=aMapVI.Extent(); - // - if (!aNb) { // no new vertices, no new problems - return; - } - // - // 0. - if (aNb==1) { - aNewVertex=TopoDS::Vertex(aMapVI.FindKey(1)); - EFNewVertices(aNewVertex, aMapVI); - return; - } - // - // 1. Make compound from new vertices - aBB.MakeCompound(aCompound); - for (i=1; i<=aNb; ++i) { - const TopoDS_Shape& aV=aMapVI.FindKey(i); - aBB.Add(aCompound, aV); - } - // - // 2. VV intersection between these vertices - // using the auxiliary Filler - NMTDS_ShapesDataStructure tDS; - // - tDS.SetCompositeShape(aCompound); - tDS.Init(); - // - BOPTools_InterferencePool tInterfPool(tDS); - NMTTools_PaveFiller tPaveFiller(tInterfPool); - // - tPaveFiller.Init(); - // - tPaveFiller.PerformVV(); - tPaveFiller.PerformNewVertices(); - // - const BOPTools_CArray1OfVVInterference& aVVInterfs=tInterfPool.VVInterfs(); - // - // 3. Separate Comlex and Simple new vertices - aNbVV=aVVInterfs.Extent(); - for (i=1; i<=aNbVV; ++i) { - const BOPTools_VVInterference& aVV=aVVInterfs(i); - aVV.Indices(aWhat, aWith); - const TopoDS_Shape& aV1=tDS.Shape(aWhat); - const TopoDS_Shape& aV2=tDS.Shape(aWith); - aMNVComplex.Add(aV1); - aMNVComplex.Add(aV2); - } - // - for (i=1; i<=aNb; ++i) { - const TopoDS_Shape& aV=aMapVI.FindKey(i); - if (!aMNVComplex.Contains(aV)) { - aMNVSimple.Add(aV); - } - } - // - // 4. Treat Simple new Vertices - aNbSimple=aMNVSimple.Extent(); - for (i=1; i<=aNbSimple; ++i) { - const TopoDS_Vertex& aV=TopoDS::Vertex(aMNVSimple(i)); - EFNewVertices(aV, aMapVI); - } - // - // 3. Fill Maps : NewVertex-edges (aMNVE) - // NewVertex-interferences (aMNVIEE) - aNb=aVVInterfs.Extent(); - for (i=1; i<=aNb; ++i) { - const BOPTools_VVInterference& aVV=aVVInterfs(i); - aNewShape=aVV.NewShape(); - if (!aNewShape) { - continue; - } - // - if (!aMNVE.Contains(aNewShape)) { - TColStd_IndexedMapOfInteger aMx; - aMNVE.Add(aNewShape, aMx); - } - if (!aMNVIEF.Contains(aNewShape)) { - TColStd_IndexedMapOfInteger aMx; - aMNVIEF.Add(aNewShape, aMx); - } - // - TColStd_IndexedMapOfInteger& aME=aMNVE.ChangeFromKey(aNewShape); - TColStd_IndexedMapOfInteger& aMIEF=aMNVIEF.ChangeFromKey(aNewShape); - // - aVV.Indices(aWhat, aWith); - //aWhat - const TopoDS_Shape& aV1=tDS.Shape(aWhat); - iX=aMapVI.FindFromKey(aV1); - const BOPTools_ESInterference& aEF1=aEFs(iX); - aEF1.Indices(nE, nF); - SortTypes(nE, nF); - aME.Add(nE); - aMIEF.Add(iX); - //aWith - const TopoDS_Shape& aV2=tDS.Shape(aWith); - iX=aMapVI.FindFromKey(aV2); - const BOPTools_ESInterference& aEF2=aEFs(iX); - aEF2.Indices(nE, nF); - SortTypes(nE, nF); - aME.Add(nE); - aMIEF.Add(iX); - } - // 4. Process new vertices - aNb=aMNVE.Extent(); - for (i=1; i<=aNb; ++i) { // xx - // - // new Vertex - nV=aMNVE.FindKey(i); - aNewVertex=TopoDS::Vertex(tDS.Shape(nV)); - // - // Insert New Vertex in DS; - myDS->InsertShapeAndAncestorsSuccessors(aNewVertex, anASSeq); - aNewShape=myDS->NumberOfInsertedShapes(); - myDS->SetState (aNewShape, BooleanOperations_ON); - // - // Update index of NewShape in EF interferences - const TColStd_IndexedMapOfInteger& aMIEF=aMNVIEF.FindFromKey(nV); - aNbIEF=aMIEF.Extent(); - for (j=1; j<=aNbIEF; ++j) { - iX=aMIEF(j); - BOPTools_ESInterference& aEF=aEFs(iX); - aEF.SetNewShape(aNewShape); - } - // - // Update Paves on all edges - const TColStd_IndexedMapOfInteger& aME=aMNVE(i); - aNbEdges=aME.Extent(); - for (j=1; j<=aNbEdges; ++j) { - nE=aME(j); - const TopoDS_Edge& aE=TopoDS::Edge(myDS->Shape(nE)); - // - aFlag=myContext.ComputeVE (aNewVertex, aE, aT); - // - if (!aFlag) { - aPave.SetInterference(-1); - aPave.SetType (BooleanOperations_EdgeSurface); - aPave.SetIndex(aNewShape); - aPave.SetParam(aT); - // - BOPTools_PaveSet& aPaveSet=myPavePoolNew(myDS->RefEdge(nE)); - aPaveSet.Append(aPave); - } - } - } -} -//======================================================================= -// function:EFNewVertices -// purpose: -//======================================================================= - void NMTTools_PaveFiller::EFNewVertices (const TopoDS_Vertex& aNewVertex, - const BooleanOperations_IndexedDataMapOfShapeInteger& aMapVI) -{ - Standard_Integer i, aNewShape, nE, nF; - Standard_Real aT; - BOPTools_Pave aPave; - BooleanOperations_AncestorsSeqAndSuccessorsSeq anASSeq; - // - BOPTools_CArray1OfESInterference& aEFs=myIntrPool->ESInterferences(); - // - // Insert New Vertex in DS; - myDS->InsertShapeAndAncestorsSuccessors(aNewVertex, anASSeq); - aNewShape=myDS->NumberOfInsertedShapes(); - myDS->SetState (aNewShape, BooleanOperations_ON); - // Insert New Vertex in EFInterference - i=aMapVI.FindFromKey(aNewVertex); - BOPTools_ESInterference& aEFInterf= aEFs(i); - aEFInterf.SetNewShape(aNewShape); - // Extract interference info - aEFInterf.Indices(nE, nF); - SortTypes(nE, nF); - const IntTools_CommonPrt& aCPart=aEFInterf.CommonPrt(); - VertexParameter(aCPart, aT); - // - // Pave for edge nE - aPave.SetInterference(i); - aPave.SetType (BooleanOperations_EdgeSurface); - aPave.SetIndex(aNewShape); - aPave.SetParam(aT); - // Append the Pave to the myPavePoolNew - BOPTools_PaveSet& aPaveSet=myPavePoolNew(myDS->RefEdge(nE)); - aPaveSet.Append(aPave); - // -} -//======================================================================= -// function: CheckFacePaves -// purpose: -//======================================================================= - Standard_Integer NMTTools_PaveFiller::CheckFacePaves (const TopoDS_Vertex& aNewVertex, - const Standard_Integer nF) -{ - Standard_Integer nEF, nVF, iFlag, i, aNbV; - BOPTools_ListIteratorOfListOfPave anIt; - TColStd_IndexedMapOfInteger aMVF; - // - BooleanOperations_OnceExplorer aExp(*myDS); - // - aExp.Init(nF, TopAbs_EDGE); - for (; aExp.More(); aExp.Next()) { - nEF=aExp.Current(); - BOPTools_PaveSet& aPaveSet=myPavePool(myDS->RefEdge(nEF)); - const BOPTools_ListOfPave& aLP=aPaveSet.Set(); - anIt.Initialize(aLP); - for (; anIt.More(); anIt.Next()) { - const BOPTools_Pave& aPave=anIt.Value(); - nVF=aPave.Index(); - aMVF.Add(nVF); - } - } - // - aNbV=aMVF.Extent(); - for (i=1; i<=aNbV; ++i) { - nVF=aMVF(i); - const TopoDS_Vertex& aVF=TopoDS::Vertex(myDS->Shape(nVF)); - iFlag=IntTools_Tools::ComputeVV(aNewVertex, aVF); - if (!iFlag) { - return nVF; - } - } - return 0; -} - -// -//======================================================================= -// function: VertexParameter -// purpose: -//======================================================================= -void VertexParameter(const IntTools_CommonPrt& aCPart, - Standard_Real& aT) -{ - const IntTools_Range& aR=aCPart.Range1(); - aT=0.5*(aR.First()+aR.Last()); - // - if((aCPart.VertexParameter1() >= aR.First()) && - (aCPart.VertexParameter1() <= aR.Last())) { - aT = aCPart.VertexParameter1(); - } -} -//======================================================================= -// function: IsOnPave -// purpose: -//======================================================================= -Standard_Boolean IsOnPave(const Standard_Real& aTR, - const IntTools_Range& aCPRange, - const Standard_Real& aTolerance) -{ - Standard_Boolean bIsOnPave; - Standard_Real aT1, aT2, dT1, dT2; - // - aT1=aCPRange.First(); - aT2=aCPRange.Last(); - bIsOnPave=(aTR>=aT1 && aTR<=aT1); - if (bIsOnPave) { - return bIsOnPave; - } - dT1=Abs(aTR-aT1); - dT2=Abs(aTR-aT2); - bIsOnPave=(dT1<=aTolerance || dT2<=aTolerance); - return bIsOnPave; -} diff --git a/src/NMTTools/NMTTools_PaveFiller_6.cxx b/src/NMTTools/NMTTools_PaveFiller_6.cxx deleted file mode 100644 index 139a6ea8c..000000000 --- a/src/NMTTools/NMTTools_PaveFiller_6.cxx +++ /dev/null @@ -1,1201 +0,0 @@ -// File: NMTTools_PaveFiller_6.cxx -// Created: Fri Dec 19 10:27:31 2003 -// Author: Peter KURNEV -// - -#include - -#include - -#include -#include - -#include -#include - -#include -#include - -#include -#include -#include - -#include - -#include -#include -#include - -#include - -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -static - Standard_Boolean IsPairFound(const Standard_Integer nF1, - const Standard_Integer nF2, - BOPTools_InterferencePool* myIntrPool, - BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMapWhat, - BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMapWith); - -static - void FMapWhat(const Standard_Integer nF, - BOPTools_InterferencePool* myIntrPool, - TColStd_IndexedMapOfInteger& aMapWhat); -static - void FMapWith(const Standard_Integer nF, - BOPTools_InterferencePool* myIntrPool, - TColStd_IndexedMapOfInteger& aMapWith); -static - Standard_Boolean IsFound(const TColStd_IndexedMapOfInteger& aMapWhat, - const TColStd_IndexedMapOfInteger& aMapWith); - - -//======================================================================= -// function: PerformFF -// purpose: -//======================================================================= - void NMTTools_PaveFiller::PerformFF() -{ - myIsDone=Standard_False; - // - Standard_Boolean bIsFound, bJustAdd, bIsComputed; - Standard_Integer n1, n2, anIndexIn, nF1, nF2, aBlockLength, aNbFFs; - Standard_Boolean bToApproxC3d, bToApproxC2dOnS1, bToApproxC2dOnS2, bIsDone; - Standard_Integer aNbCurves, aNbPoints; - Standard_Real anApproxTol, aTolR3D, aTolR2D; - BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger aMapWhat, aMapWith; - IntTools_SequenceOfPntOn2Faces aPnts; - IntTools_SequenceOfCurves aCvs; - BooleanOperations_KindOfInterference aTypeFF=BooleanOperations_SurfaceSurface; - // - BOPTools_CArray1OfSSInterference& aFFs=myIntrPool->SSInterferences(); - // - // F/F Interferences [BooleanOperations_SurfaceSurface] - myDSIt.Initialize(TopAbs_FACE, TopAbs_FACE); - // - // BlockLength correction - aNbFFs=ExpectedPoolLength(); - aBlockLength=aFFs.BlockLength(); - if (aNbFFs > aBlockLength) { - aFFs.SetBlockLength(aNbFFs); - } - // - for (; myDSIt.More(); myDSIt.Next()) { - myDSIt.Current(n1, n2, bJustAdd); - // - bIsComputed=myIntrPool->IsComputed(n1, n2); - if (bIsComputed) { - continue; - } - // - nF1 = n2; - nF2 = n1; - if(n1 < n2) { - nF1 = n1; - nF2 = n2; - } - anIndexIn=0; - aPnts.Clear(); - aCvs.Clear(); - // - bIsFound=IsPairFound(nF1, nF2, myIntrPool, aMapWhat, aMapWith); - // - if (bJustAdd) { - if (!bIsFound) { - myIntrPool->AddInterference (nF1, nF2, aTypeFF, anIndexIn); - } - else{ - BOPTools_SSInterference anInterf (nF1, nF2, 1.e-07, 1.e-07, aCvs, aPnts); - anIndexIn=aFFs.Append(anInterf); - myIntrPool->AddInterference (nF1, nF2, aTypeFF, anIndexIn); - } - continue; - } - // - const TopoDS_Face& aF1=TopoDS::Face(myDS->Shape(nF1)); - const TopoDS_Face& aF2=TopoDS::Face(myDS->Shape(nF2)); - // - // FF - bToApproxC3d = mySectionAttribute.Approximation(); - bToApproxC2dOnS1 = mySectionAttribute.PCurveOnS1(); - bToApproxC2dOnS2 = mySectionAttribute.PCurveOnS2(); - // - anApproxTol=1.e-7; - // - IntTools_FaceFace aFF; - // - aFF.SetParameters (bToApproxC3d, bToApproxC2dOnS1, - bToApproxC2dOnS2, anApproxTol); - // - aFF.Perform(aF1, aF2); - // - bIsDone=aFF.IsDone(); - // - if (!bIsDone) { - if (!bIsFound) { - myIntrPool->AddInterference (nF1, nF2, aTypeFF, anIndexIn); - } - else { - BOPTools_SSInterference anInterf (nF1, nF2, 1.e-07, 1.e-07, aCvs, aPnts); - anIndexIn=aFFs.Append(anInterf); - myIntrPool->AddInterference (nF1, nF2, aTypeFF, anIndexIn); - } - continue; - } - // - aTolR3D=aFF.TolReached3d(); - aTolR2D=aFF.TolReached2d(); - if (aTolR3D < 1.e-7){ - aTolR3D=1.e-7; - } - // - aFF.PrepareLines3D(); - // - const IntTools_SequenceOfCurves& aCvsX=aFF.Lines(); - const IntTools_SequenceOfPntOn2Faces& aPntsX=aFF.Points(); - // - aNbCurves=aCvsX.Length(); - aNbPoints=aPntsX.Length(); - // - if (!aNbCurves && !aNbPoints) { - BOPTools_SSInterference anInterf (nF1, nF2, 1.e-07, 1.e-07, aCvs, aPnts); - anIndexIn=aFFs.Append(anInterf); - myIntrPool->AddInterference (nF1, nF2, aTypeFF, anIndexIn); - continue; - } - // - { - BOPTools_SSInterference anInterf (nF1, nF2, aTolR3D, aTolR2D, aCvsX, aPntsX); - anIndexIn=aFFs.Append(anInterf); - myIntrPool->AddInterference (nF1, nF2, aTypeFF, anIndexIn); - } - // - }// for (; myDSIt.More(); myDSIt.Next()) - // - myIsDone=Standard_True; -} -//======================================================================= -// function: MakeBlocks -// purpose: -//======================================================================= - void NMTTools_PaveFiller::MakeBlocks() -{ - myIsDone=Standard_False; - // - Standard_Boolean bIsExistingPaveBlock, bIsValidIn2D; - Standard_Integer i, aNbFFs, nF1, nF2, aBid=0; - Standard_Integer nV1, nV2, j, aNbCurves; - Standard_Real aTolR3D, aTol2D, aT1, aT2, aTolPPC=Precision::PConfusion(); - NMTTools_IndexedDataMapOfShapePaveBlock aMEPB; - BooleanOperations_IndexedDataMapOfShapeInteger aMapEI; - BOPTools_ListIteratorOfListOfPaveBlock anIt; - // - BOPTools_CArray1OfSSInterference& aFFs=myIntrPool->SSInterferences(); - // - // 1. Produce Section Edges from intersection curves - // between each pair of faces - // - aNbFFs=aFFs.Extent(); - for (i=1; i<=aNbFFs; ++i) { - BOPTools_SSInterference& aFFi=aFFs(i); - // - // Faces - aFFi.Indices(nF1, nF2); - const TopoDS_Face& aF1=TopoDS::Face(myDS->Shape(nF1)); - const TopoDS_Face& aF2=TopoDS::Face(myDS->Shape(nF2)); - // - BOPTools_ListOfPaveBlock aLPB, aLPBC; - // - //modified by NIZNHY-PKV Fri Mar 11 15:43:02 2005 f - { - Standard_Integer nFj1, nFj2, nE; - TColStd_IndexedMapOfInteger aMFence; - BOPTools_ListOfPaveBlock aLPBCx; - // - for (j=1; j<=aNbFFs; ++j) { - BOPTools_SSInterference& aFFj=aFFs(j); - aFFj.Indices(nFj1, nFj2); - // - if ((nF1==nFj1 && nFj2!=nF2) || - (nF1==nFj2 && nFj1!=nF2) || - (nF2==nFj1 && nFj2!=nF1) || - (nF2==nFj2 && nFj1!=nF1)) { - RealSplitsInFace (aBid, nFj1, nFj2, aLPBCx); - RealSplitsInFace (aBid, nFj2, nFj1, aLPBCx); - RealSplitsOnFace (aBid, nFj1, nFj2, aLPBCx); - } - } - // - anIt.Initialize(aLPBCx); - for (; anIt.More(); anIt.Next()) { - const BOPTools_PaveBlock& aPBCx=anIt.Value(); - // - nE=aPBCx.Edge(); - if (!aMFence.Contains(nE)) { - aMFence.Add(nE); - aLPBC.Append(aPBCx); - } - } - } - // - //modified by NIZNHY-PKV Fri Apr 1 09:49:57 2005t - // - RealSplitsInFace (aBid, nF1, nF2, aLPB); - RealSplitsInFace (aBid, nF2, nF1, aLPB); - RealSplitsOnFace (aBid, nF1, nF2, aLPB); - // - anIt.Initialize(aLPB); - for (; anIt.More(); anIt.Next()) { - const BOPTools_PaveBlock& aPB=anIt.Value(); - aFFi.AppendBlock(aPB); - } - // - BOPTools_SequenceOfCurves& aSCvs=aFFi.Curves(); - aNbCurves=aSCvs.Length(); - if (!aNbCurves) { - continue; - } - // - aTolR3D=aFFi.TolR3D(); - aTol2D=(aTolR3D < 1.e-3) ? 1.e-3 : aTolR3D; - // - BOPTools_PaveSet aPSF; - // - //modified by NIZNHY-PKV Fri Apr 1 10:53:09 2005f - PrepareSetForFace (nF1, nF2, aLPBC, aPSF); - //PrepareSetForFace (nF1, nF2, aPSF); - //modified by NIZNHY-PKV Thu Mar 31 16:16:47 2005t - // - // Put Paves On Curves - for (j=1; j<=aNbCurves; ++j) { - BOPTools_Curve& aBC=aSCvs(j); - // DEBUG - const IntTools_Curve& aC=aBC.Curve(); - Handle (Geom_Curve) aC3D= aC.Curve(); - // - PutPaveOnCurve (aPSF, aTolR3D, aBC); - } - // - // Put bounding paves on curves - for (j=1; j<=aNbCurves; ++j) { - BOPTools_Curve& aBC=aSCvs(j); - PutBoundPaveOnCurve (aBC, aFFi); - } - // - // Pave Blocks on Curves - for (j=1; j<=aNbCurves; ++j) { - BOPTools_Curve& aBC=aSCvs(j); - const IntTools_Curve& aIC= aBC.Curve(); - BOPTools_PaveSet& aPaveSet=aBC.Set(); - // - BOPTools_PaveBlockIterator aPBIter(0, aPaveSet); - for (; aPBIter.More(); aPBIter.Next()) { - BOPTools_PaveBlock& aPBNew=aPBIter.Value(); - aPBNew.SetCurve(aIC); - aPBNew.SetFace1(nF1); - aPBNew.SetFace2(nF2); - // - nV1=aPBNew.Pave1().Index(); - nV2=aPBNew.Pave2().Index(); - aT1=aPBNew.Pave1().Param(); - aT2=aPBNew.Pave2().Param(); - // ??? - if((nV1==nV2) && (Abs(aT2 - aT1) < aTolPPC)) { - continue;// mkk ft - } - // - //modified by NIZNHY-PKV Fri Apr 1 09:56:11 2005f - // 1 - const BOPTools_ListOfPaveBlock& aLPBFF=aFFi.PaveBlocks(); - bIsExistingPaveBlock=IsExistingPaveBlock(aPBNew, aLPBFF, aTolR3D); - //bIsExistingPaveBlock=IsExistingPaveBlock(aPBNew, aFFi); - if (bIsExistingPaveBlock) { - continue; - } - // 2 - bIsExistingPaveBlock=IsExistingPaveBlock(aPBNew, aLPBC, aTolR3D); - if (bIsExistingPaveBlock) { - continue; - } - //modified by NIZNHY-PKV Fri Apr 1 09:56:14 2005t - // Checking of validity in 2D - // - bIsValidIn2D=myContext.IsValidBlockForFaces(aT1, aT2, aIC, aF1, aF2, aTol2D); - if (!bIsValidIn2D) { - continue; - } - // - //aBC.AppendNewBlock(aPBNew); - // - // Make Section Edge - TopoDS_Edge aES; - // - const TopoDS_Vertex& aV1=TopoDS::Vertex(myDS->Shape(nV1)); - const TopoDS_Vertex& aV2=TopoDS::Vertex(myDS->Shape(nV2)); - // - BOPTools_Tools::MakeSectEdge (aIC, aV1, aT1, aV2, aT2, aES); - // - { - Standard_Real aTolR2D; - // - aTolR2D=aFFi.TolR2D(); - Handle(Geom2d_Curve) aC2D1=aIC.FirstCurve2d(); - Handle(Geom2d_Curve) aC2D2=aIC.SecondCurve2d(); - // - NMTTools_Tools::MakePCurve(aES, aF1, aC2D1, aTolR2D); - NMTTools_Tools::MakePCurve(aES, aF2, aC2D2, aTolR2D); - } - // - aMEPB.Add(aES, aPBNew); - aMapEI.Add(aES, i); - } - } // end of for (j=1; j<=aNbCurves; ++j) - }// for (i=1; i<=aNbFFs; ++i) - //============================================================= - // - // II. Post treatment - // - // Input data: aMEPB, aMapEI - // Result : section edges in myDS - // - Standard_Integer aNbSE; - // - aNbSE=aMEPB.Extent(); - if (!aNbSE) { - // there is nothing to do here - return; - } - // - BRep_Builder aBB; - TopoDS_Compound aCompound; - // - // 1. Make compound from SE - aBB.MakeCompound(aCompound); - for (i=1; i<=aNbSE; ++i) { - const TopoDS_Shape& aSE=aMEPB.FindKey(i); - aBB.Add(aCompound, aSE); - } - // - // - // 2. Intersect SE using auxiliary Filler - NMTDS_ShapesDataStructure tDS; - // - tDS.SetCompositeShape(aCompound); - tDS.Init(); - // - BOPTools_InterferencePool tIP(tDS); - NMTTools_PaveFiller tPF(tIP); - // - // 2.1.VV - tPF.Init(); - tPF.PerformVV(); - tPF.PerformNewVertices(); - // - // 2.2.VE - tPF.myPavePool.Resize (tPF.myNbEdges); - tPF.PrepareEdges(); - tPF.PerformVE(); - // - // 2.3.VF - tPF.PerformVF(); - // - // 2.4.EE - tPF.myCommonBlockPool.Resize (tPF.myNbEdges); - tPF.mySplitShapesPool.Resize (tPF.myNbEdges); - tPF.myPavePoolNew .Resize (tPF.myNbEdges); - - tPF.PreparePaveBlocks(TopAbs_VERTEX, TopAbs_EDGE); - tPF.PreparePaveBlocks(TopAbs_EDGE, TopAbs_EDGE); - // - tPF.PerformEE(); - // - tPF.RefinePavePool (); - // - tPF.myPavePoolNew.Destroy(); - // - tPF.MakeSplitEdges(); - tPF.UpdateCommonBlocks(); - // - // 3. Treatment of the result of intersection - // - Standard_Integer aNbOld, aNbLines, aNbPB, mV1, mV2, nE, mE, iFF; - TopAbs_ShapeEnum aType; - BOPTools_ListIteratorOfListOfPaveBlock aIt; - BOPTColStd_IndexedDataMapOfIntegerInteger aMNewOld; - // - const BOPTools_SplitShapesPool& aSSP=tPF.mySplitShapesPool; - const NMTTools_CommonBlockPool& aCBP=tPF.myCommonBlockPool; - // - aNbLines=tDS.NumberOfInsertedShapes(); - aNbOld=tDS.NumberOfShapesOfTheObject(); - // - // 3.1 Links between indices in tDS and DS (kept in aMNewOld) - // - // 3.1.1.Old vertices [ links ] - for (i=1; i<=aNbOld; ++i) { - const TopoDS_Shape& aV=tDS.Shape(i); - aType=aV.ShapeType(); - if (aType!=TopAbs_VERTEX) { - continue; - } - // - for (j=1; j<=aNbSE; ++j) { - const BOPTools_PaveBlock& aPBSE=aMEPB(j); - nV1=aPBSE.Pave1().Index(); - const TopoDS_Shape& aV1=myDS->Shape(nV1); - if (aV1.IsSame(aV)) { - aMNewOld.Add(i, nV1); - break; - } - nV2=aPBSE.Pave2().Index(); - const TopoDS_Shape& aV2=myDS->Shape(nV2); - if (aV2.IsSame(aV)) { - aMNewOld.Add(i, nV2); - break; - } - } - } - // - // 3.1.2. New vertices [ links ] - i=tDS.NumberOfSourceShapes()+1; - for (; i<=aNbLines; ++i) { - const TopoDS_Shape& aV=tDS.Shape(i); - aType=aV.ShapeType(); - if (aType!=TopAbs_VERTEX) { - continue; - } - // - // Insert new vertex in myDS - BooleanOperations_AncestorsSeqAndSuccessorsSeq anASSeq; - myDS->InsertShapeAndAncestorsSuccessors(aV, anASSeq); - nV1=myDS->NumberOfInsertedShapes(); - // link - aMNewOld.Add(i, nV1); - } - // - // 3.2. Treatment of section edges (SE) - for (i=1; i<=aNbOld; ++i) { - const TopoDS_Shape& aE=tDS.Shape(i); - aType=aE.ShapeType(); - if (aType!=TopAbs_EDGE) { - continue; - } - // - // block of section edge that we already have for this SE - BOPTools_PaveBlock& aPBSE=aMEPB.ChangeFromKey(aE); - // - // Corresponding FF-interference - iFF=aMapEI.FindFromKey(aE); - BOPTools_SSInterference& aFFi=aFFs(iFF); - BOPTools_SequenceOfCurves& aSCvs=aFFi.Curves(); - // - BOPTools_Curve& aBC=aSCvs(1); - // - const BOPTools_ListOfPaveBlock& aLPB=aSSP(tDS.RefEdge(i)); - aNbPB=aLPB.Extent(); - // - if (!aNbPB) { - // no pave blocks -> use aPBSE and whole edge aE - BooleanOperations_AncestorsSeqAndSuccessorsSeq anASSeq; - // - nV1=aPBSE.Pave1().Index(); - const TopoDS_Shape& aV1=myDS->Shape(nV1); - nV2=aPBSE.Pave2().Index(); - const TopoDS_Shape& aV2=myDS->Shape(nV2); - // - anASSeq.SetNewSuccessor(nV1); - anASSeq.SetNewOrientation(aV1.Orientation()); - anASSeq.SetNewSuccessor(nV2); - anASSeq.SetNewOrientation(aV2.Orientation()); - // - myDS->InsertShapeAndAncestorsSuccessors(aE, anASSeq); - nE=myDS->NumberOfInsertedShapes(); - // - aPBSE.SetEdge(nE); - aBC.AppendNewBlock(aPBSE); - // - continue; - } - // - nF1=aPBSE.Face1(); - nF2=aPBSE.Face2(); - const TopoDS_Face& aF1=TopoDS::Face(myDS->Shape(nF1)); - const TopoDS_Face& aF2=TopoDS::Face(myDS->Shape(nF2)); - // - const NMTTools_ListOfCommonBlock& aLCB=aCBP(tDS.RefEdge(i)); - NMTTools_CommonBlockAPI aCBAPI(aLCB); - // - aIt.Initialize(aLPB); - for (; aIt.More(); aIt.Next()) { - BOPTools_PaveBlock aPB=aIt.Value(); - // - if (aCBAPI.IsCommonBlock(aPB)) { - // it can be Common Block - Standard_Real aTolEx; - Handle(Geom2d_Curve) aC2D1, aC2D2; - TopoDS_Face aF1FWD, aF2FWD; - // - NMTTools_CommonBlock& aCB=aCBAPI.CommonBlock(aPB); - const BOPTools_ListOfPaveBlock& aLPBx=aCB.PaveBlocks(); - // - aPB=aCB.PaveBlock1(); - mE=aPB.Edge(); // index of edge in tDS - const TopoDS_Edge& aEx=TopoDS::Edge(tDS.Shape(mE)); - aTolEx=BRep_Tool::Tolerance(aEx); - // - // Commented out by EAP in the frame of PAL9151 - // -// Standard_Boolean bHasPCOnF, bFound; -// Standard_Integer nF, k, nEOrx, nF1x, nF2x; -// Standard_Real aTolEx, aT1x, aT2x; -// BOPTools_ListIteratorOfListOfPaveBlock aItPBx; - // -// for (k=0; k<2; ++k) { -// nF=(!k) ? nF1 : nF2; -// const TopoDS_Face& aF=TopoDS::Face(myDS->Shape(nF)); -// // -// bHasPCOnF=BOPTools_Tools2D::HasCurveOnSurface(aEx, aF); -// if (bHasPCOnF) { -// continue; -// } -// // -// bFound=Standard_False; -// aItPBx.Initialize(aLPBx); -// for (; aItPBx.More(); aItPBx.Next()) { -// BOPTools_PaveBlock& aPBx=aIt.Value(); -// nEOrx=aPBx.OriginalEdge(); -// const TopoDS_Shape& aEOrx=tDS.Shape(nEOrx); -// BOPTools_PaveBlock& aPBSEx=aMEPB.ChangeFromKey(aEOrx); -// aT1x=aPBSEx.Pave1().Param(); -// aT2x=aPBSEx.Pave2().Param(); -// const IntTools_Curve& aICx=aPBSEx.Curve(); -// // -// nF1x=aPBSEx.Face1(); -// nF2x=aPBSEx.Face2(); -// // -// if (nF1x==nF) { -// Handle(Geom2d_Curve) aC2D1x=aICx.FirstCurve2d(); -// Handle(Geom2d_TrimmedCurve)aC2D1xT =new Geom2d_TrimmedCurve(aC2D1x, aT1x, aT2x); -// aBB.UpdateEdge(aEx, aC2D1xT, aF, aTolEx); -// bFound=!bFound; -// break; -// } -// // -// if (nF2x==nF) { -// Handle(Geom2d_Curve) aC2D2x=aICx.SecondCurve2d(); -// Handle(Geom2d_TrimmedCurve)aC2D2xT =new Geom2d_TrimmedCurve(aC2D2x, aT1x, aT2x); -// aBB.UpdateEdge(aEx, aC2D2xT, aF, aTolEx); -// bFound=!bFound; -// break; -// } -// } -// if (bFound){ -// BRepLib::SameParameter(aEx, aTolEx, Standard_True); -// } -// } - // - // The code till the if block end is restored from V2_2_2 revision - // - aF1FWD=aF1; - aF1FWD.Orientation(TopAbs_FORWARD); - NMTTools_Tools::MakePCurve(aEx, aF1FWD, aC2D1, aTolEx); - // - aF2FWD=aF2; - aF2FWD.Orientation(TopAbs_FORWARD); - NMTTools_Tools::MakePCurve(aEx, aF2FWD, aC2D2, aTolEx); - } //if (aCBAPI.IsCommonBlock(aPB)) - // - // new SE - mE=aPB.Edge(); // index of edge in tDS - const TopoDS_Shape& aSp=tDS.Shape(mE); - // - const BOPTools_Pave& aPave1=aPB.Pave1(); - aT1=aPave1.Param(); - mV1=aPave1.Index(); // index in tDS - nV1=aMNewOld.FindFromKey(mV1); // index in myDS - const TopoDS_Shape& aV1=myDS->Shape(nV1); - // - const BOPTools_Pave& aPave2=aPB.Pave2(); - aT2=aPave2.Param(); - mV2=aPave2.Index(); - nV2=aMNewOld.FindFromKey(mV2); - const TopoDS_Shape& aV2=myDS->Shape(nV2); - // - if (!aMNewOld.Contains(mE)) { - // add new SE to the myDS - BooleanOperations_AncestorsSeqAndSuccessorsSeq anASSeq; - // - anASSeq.SetNewSuccessor(nV1); - anASSeq.SetNewOrientation(aV1.Orientation()); - - anASSeq.SetNewSuccessor(nV2); - anASSeq.SetNewOrientation(aV2.Orientation()); - - myDS->InsertShapeAndAncestorsSuccessors(aSp, anASSeq); - nE=myDS->NumberOfInsertedShapes(); - // - aMNewOld.Add(mE, nE); - } - else { - nE=aMNewOld.FindFromKey(mE); - } - // Form PaveBlock; - BOPTools_PaveBlock aPBx; - BOPTools_Pave aP1, aP2; - // - aPBx.SetFace1(nF1); - aPBx.SetFace1(nF2); - // - aP1.SetIndex(nV1); - aP1.SetParam(aT1); - // - aP2.SetIndex(nV2); - aP2.SetParam(aT2); - // - aPBx.SetPave1(aP1); - aPBx.SetPave2(aP2); - // - aPBx.SetEdge(nE); - // - aBC.AppendNewBlock(aPBx); - }// for (; aIt.More(); aIt.Next()) - }// for (i=1; i<=aNbOld; ++i) - // - myIsDone=Standard_True; -} -//======================================================================= -// function: MakePCurves -// purpose: -//======================================================================= - void NMTTools_PaveFiller::MakePCurves() -{ - Standard_Integer i, aNb, nF1, nF2, nE; - TopoDS_Face aF1FWD, aF2FWD; - BOPTools_ListIteratorOfListOfPaveBlock anIt; - // - BOPTools_CArray1OfSSInterference& aFFs=myIntrPool->SSInterferences(); - // - aNb=aFFs.Extent(); - for (i=1; i<=aNb; i++) { - BOPTools_SSInterference& aFF=aFFs(i); - aFF.Indices(nF1, nF2); - // - const TopoDS_Face& aF1=TopoDS::Face(myDS->Shape(nF1)); - const TopoDS_Face& aF2=TopoDS::Face(myDS->Shape(nF2)); - // - aF1FWD=aF1; - aF1FWD.Orientation(TopAbs_FORWARD); - aF2FWD=aF2; - aF2FWD.Orientation(TopAbs_FORWARD); - // - // In, On parts processing - const BOPTools_ListOfPaveBlock& aLPBInOn=aFF.PaveBlocks(); - // - anIt.Initialize(aLPBInOn); - for (; anIt.More(); anIt.Next()) { - const BOPTools_PaveBlock& aPB=anIt.Value(); - nE=aPB.Edge(); - const TopoDS_Edge& aE=TopoDS::Edge(myDS->Shape(nE)); - - BOPTools_Tools2D::BuildPCurveForEdgeOnFace(aE, aF1FWD); - BOPTools_Tools2D::BuildPCurveForEdgeOnFace(aE, aF2FWD); - } - } -} -//modified by NIZNHY-PKV Fri Apr 1 09:36:06 2005f -//======================================================================= -// function: IsExistingPaveBlock -// purpose: -//======================================================================= - Standard_Boolean NMTTools_PaveFiller::IsExistingPaveBlock(const BOPTools_PaveBlock& aPBNew, - const BOPTools_ListOfPaveBlock& aLPBR, - const Standard_Real aTolR3D) -{ - Standard_Boolean bFlag; - Standard_Integer nVNew1, nVNew2, nV1, nV2, iC; - BOPTools_ListIteratorOfListOfPaveBlock anIt; - // - bFlag=Standard_False; - nVNew1=aPBNew.Pave1().Index(); - nVNew2=aPBNew.Pave2().Index(); - // - anIt.Initialize(aLPBR); - for (; anIt.More(); anIt.Next()) { - const BOPTools_PaveBlock& aPBR=anIt.Value(); - nV1=aPBR.Pave1().Index(); - nV2=aPBR.Pave2().Index(); - if (nVNew1==nV1 || nVNew1==nV2 || nVNew2==nV1 || nVNew2==nV2) { - // - iC=CheckIntermediatePoint(aPBNew, aPBR, aTolR3D); - if (!iC) { - return !bFlag; - } - } - } - return bFlag; -} -//modified by NIZNHY-PKV Fri Apr 1 09:36:06 2005t -//======================================================================= -// function: CheckIntermediatePoint -// purpose: -//======================================================================= - Standard_Integer NMTTools_PaveFiller::CheckIntermediatePoint(const BOPTools_PaveBlock& aPB, - const BOPTools_PaveBlock& aPBR, - const Standard_Real aTolC) - -{ - Standard_Real aT11, aT12, aTM, aTmp; - Standard_Integer iVM, nE2; - gp_Pnt aPM; - BRep_Builder aBB; - TopoDS_Vertex aVM; - // - // Vertex - const BOPTools_Pave& aPave11=aPB.Pave1(); - aT11=aPave11.Param(); - // - const BOPTools_Pave& aPave12=aPB.Pave2(); - aT12=aPave12.Param(); - // - aTM=IntTools_Tools::IntermediatePoint (aT11, aT12); - // - const IntTools_Curve& aIC=aPB.Curve(); - aIC.D0(aTM, aPM); - // - aBB.MakeVertex (aVM, aPM, aTolC); - // - //Edge - nE2=aPBR.Edge(); - const TopoDS_Edge& aE2=TopoDS::Edge(myDS->GetShape(nE2)); - // VE - iVM=myContext.ComputeVE(aVM, aE2, aTmp); - // - return iVM; -} -//======================================================================= -// function: PutBoundPaveOnCurve -// purpose: -//======================================================================= - void NMTTools_PaveFiller::PutBoundPaveOnCurve(BOPTools_Curve& aBC, - BOPTools_SSInterference& aFFi) -{ - Standard_Boolean bHasBounds, bVF; - Standard_Integer nF1, nF2; - Standard_Real aT1, aT2, aTolR3D; - gp_Pnt aP1, aP2; - // - const IntTools_Curve& aIC=aBC.Curve(); - bHasBounds=aIC.HasBounds (); - if (!bHasBounds){ - return; - } - // - // Bounds - aIC.Bounds (aT1, aT2, aP1, aP2); - // - // Faces - aFFi.Indices(nF1, nF2); - aTolR3D=aFFi.TolR3D(); - // - const TopoDS_Face& aF1=TopoDS::Face(myDS->GetShape(nF1)); - const TopoDS_Face& aF2=TopoDS::Face(myDS->GetShape(nF2)); - // - bVF=myContext.IsValidPointForFaces (aP1, aF1, aF2, aTolR3D); - if (bVF) { - PutBoundPaveOnCurve (aP1, aT1, aBC, aFFi); - } - // - bVF=myContext.IsValidPointForFaces (aP2, aF1, aF2, aTolR3D); - if (bVF) { - PutBoundPaveOnCurve (aP2, aT2, aBC, aFFi); - } -} -//======================================================================= -// function: PutBoundPaveOnCurve -// purpose: -//======================================================================= - void NMTTools_PaveFiller::PutBoundPaveOnCurve(const gp_Pnt& aP, - const Standard_Real aT, - BOPTools_Curve& aBC, - BOPTools_SSInterference& aFFi) -{ - Standard_Boolean bFound1, bFound2; - Standard_Integer nV; - Standard_Real aTolV=aFFi.TolR3D(); - - BOPTools_Pave aPave1, aPave2, aPave; - BOPTools_PaveSet& aCPS=aBC.Set(); - BOPTools_PaveSet& aFFiPS=aFFi.NewPaveSet(); - const IntTools_Curve& aIC=aBC.Curve(); - // - bFound1=FindPave(aP, aTolV, aCPS , aPave1); - bFound2=FindPave(aP, aTolV, aFFiPS, aPave2); - // - if (!bFound1 && !bFound2) { - TopoDS_Vertex aNewVertex; - BOPTools_Tools::MakeNewVertex(aP, aTolV, aNewVertex); - // - BooleanOperations_AncestorsSeqAndSuccessorsSeq anASSeq; - myDS->InsertShapeAndAncestorsSuccessors(aNewVertex, anASSeq); - nV=myDS->NumberOfInsertedShapes(); - aPave.SetIndex(nV); - aPave.SetParam(aT); - - aCPS.Append(aPave); - aFFiPS.Append(aPave); - // - // Append Techno Vertex to the Curve - TColStd_ListOfInteger& aTVs=aBC.TechnoVertices(); - aTVs.Append(nV); - } - - if (bFound1 && !bFound2) { - nV=aPave1.Index(); - aPave.SetIndex(nV); - aPave.SetParam(aT); - aFFiPS.Append(aPave); - // - const TopoDS_Vertex& aV=TopoDS::Vertex(myDS->Shape(nV)); - BOPTools_Tools::UpdateVertex (aIC, aT, aV); - } - - if (!bFound1 && bFound2) { - nV=aPave2.Index(); - aPave.SetIndex(nV); - aPave.SetParam(aT); - aCPS.Append(aPave); - // - const TopoDS_Vertex& aV=TopoDS::Vertex(myDS->Shape(nV)); - BOPTools_Tools::UpdateVertex (aIC, aT, aV); - } -} -//======================================================================= -// function: FindPave -// purpose: -//======================================================================= - Standard_Boolean NMTTools_PaveFiller::FindPave(const gp_Pnt& aP, - const Standard_Real aTolPV, - const BOPTools_PaveSet& aPS, - BOPTools_Pave& aPave) -{ - Standard_Integer nV; - Standard_Boolean bIsVertex=Standard_False; - - const BOPTools_ListOfPave& aLP=aPS.Set(); - BOPTools_ListIteratorOfListOfPave anIt(aLP); - for (; anIt.More(); anIt.Next()) { - const BOPTools_Pave& aPC=anIt.Value(); - nV=aPC.Index(); - const TopoDS_Vertex& aV=TopoDS::Vertex(myDS->Shape(nV)); - bIsVertex=IntTools_Tools::IsVertex (aP, aTolPV, aV); - if (bIsVertex) { - aPave=aPC; - return bIsVertex; - } - } - return bIsVertex; -} -//======================================================================= -// function: PrepareSetForFace -// purpose: -//======================================================================= - void NMTTools_PaveFiller::PrepareSetForFace(const Standard_Integer nF1, - const Standard_Integer nF2, - const BOPTools_ListOfPaveBlock& aLPBC, - BOPTools_PaveSet& aPSF) -{ - Standard_Integer nV1, nV2; - TColStd_MapOfInteger aMap; - BOPTools_ListOfPaveBlock aLPB1, aLPB2, aLPBS; - BOPTools_ListIteratorOfListOfPaveBlock anIt; - // - RealSplitsFace(nF1, aLPB1); - anIt.Initialize(aLPB1); - for (; anIt.More(); anIt.Next()) { - const BOPTools_PaveBlock& aPB=anIt.Value(); - aLPBS.Append(aPB); - } - // - RealSplitsFace(nF2, aLPB2); - anIt.Initialize(aLPB2); - for (; anIt.More(); anIt.Next()) { - const BOPTools_PaveBlock& aPB=anIt.Value(); - aLPBS.Append(aPB); - } - // - anIt.Initialize(aLPBC); - for (; anIt.More(); anIt.Next()) { - const BOPTools_PaveBlock& aPB=anIt.Value(); - aLPBS.Append(aPB); - } - // - anIt.Initialize(aLPBS); - for (; anIt.More(); anIt.Next()) { - const BOPTools_PaveBlock& aPB=anIt.Value(); - const BOPTools_Pave& aPave1=aPB.Pave1(); - nV1=aPave1.Index(); - if (!aMap.Contains(nV1)) { - aMap.Add(nV1); - aPSF.Append(aPave1); - } - const BOPTools_Pave& aPave2=aPB.Pave2(); - nV2=aPave2.Index(); - if (!aMap.Contains(nV2)) { - aMap.Add(nV2); - aPSF.Append(aPave2); - } - } -} -//======================================================================= -// function: PutPaveOnCurve -// purpose: -//======================================================================= - void NMTTools_PaveFiller::PutPaveOnCurve(const BOPTools_PaveSet& aPaveSet, - const Standard_Real aTolR3D, - BOPTools_Curve& aBC) -{ - Standard_Integer nV; - Standard_Boolean bIsVertexOnLine; - Standard_Real aT; - BOPTools_ListIteratorOfListOfPave anIt; - Bnd_Box aBBC; - GeomAdaptor_Curve aGAC; - // - const IntTools_Curve& aC=aBC.Curve(); - Handle (Geom_Curve) aC3D= aC.Curve(); - aGAC.Load(aC3D); - BndLib_Add3dCurve::Add(aGAC, aTolR3D, aBBC); - // - const BOPTools_ListOfPave& aLP=aPaveSet.Set(); - anIt.Initialize(aLP); - for (; anIt.More(); anIt.Next()) { - const BOPTools_Pave& aPave=anIt.Value(); - // - nV=aPave.Index(); - const TopoDS_Vertex& aV=TopoDS::Vertex(myDS->Shape(nV)); - // - Bnd_Box aBBV; - BRepBndLib::Add(aV, aBBV); - if (aBBC.IsOut(aBBV)){ - continue; - } - // - bIsVertexOnLine=myContext.IsVertexOnLine(aV, aC, aTolR3D, aT); - // - if (bIsVertexOnLine) { - BOPTools_Pave aPaveNew(nV, aT, BooleanOperations_SurfaceSurface); - BOPTools_PaveSet& aPS=aBC.Set(); - aPS.Append(aPaveNew); - //<-B - BOPTools_Tools::UpdateVertex (aC, aT, aV); - } - } -} -///////////// -//======================================================================= -// function: IsPairFound -// purpose: -//======================================================================= -Standard_Boolean IsPairFound(const Standard_Integer nF1, - const Standard_Integer nF2, - BOPTools_InterferencePool* myIntrPool, - BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMapWhat, - BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMapWith) -{ - Standard_Boolean bIsFound; - // - if (!aMapWhat.Contains(nF1)) { - TColStd_IndexedMapOfInteger aMWhat; - FMapWhat(nF1, myIntrPool, aMWhat); - aMapWhat.Add(nF1, aMWhat); - } - // - if (!aMapWith.Contains(nF2)) { - TColStd_IndexedMapOfInteger aMWith; - FMapWith(nF2, myIntrPool, aMWith); - aMapWith.Add(nF2, aMWith); - } - // - const TColStd_IndexedMapOfInteger& aMWht=aMapWhat.FindFromKey(nF1); - const TColStd_IndexedMapOfInteger& aMWit=aMapWith.FindFromKey(nF2); - // - bIsFound=IsFound(aMWht, aMWit); - // - return bIsFound; -} -//======================================================================= -// function: FMapWhat -// purpose: -//======================================================================= -void FMapWhat(const Standard_Integer nF, - BOPTools_InterferencePool* myIntrPool, - TColStd_IndexedMapOfInteger& aMapWhat) - -{ - Standard_Integer nE, nV; - - - - BooleanOperations_ShapesDataStructure* myDS=myIntrPool->DS(); - BooleanOperations_OnceExplorer aExp(*myDS); - // - // What - aMapWhat.Add(nF); - aExp.Init(nF, TopAbs_VERTEX); - for (; aExp.More(); aExp.Next()) { - nV=aExp.Current(); - aMapWhat.Add(nV); - } - // - aExp.Init(nF, TopAbs_EDGE); - for (; aExp.More(); aExp.Next()) { - nE=aExp.Current(); - aMapWhat.Add(nE); - } -} -//======================================================================= -// function: FMapWith -// purpose: -//======================================================================= -void FMapWith(const Standard_Integer nF, - BOPTools_InterferencePool* myIntrPool, - TColStd_IndexedMapOfInteger& aMapWith) -{ - TColStd_IndexedMapOfInteger aMapWhat; - - FMapWhat(nF, myIntrPool, aMapWhat); - // - // With - Standard_Integer i, aNb, anIndex, aWhat, aWith; - BOPTools_ListIteratorOfListOfInterference anIt; - - const BOPTools_CArray1OfInterferenceLine& anArrIL= myIntrPool->InterferenceTable(); - - aNb=aMapWhat.Extent(); - for (i=1; i<=aNb; i++) { - aWhat=aMapWhat(i); - - const BOPTools_InterferenceLine& aWithLine=anArrIL(aWhat); - - const BOPTools_ListOfInterference& aLI=aWithLine.List(); - anIt.Initialize(aLI); - for (; anIt.More(); anIt.Next()) { - const BOPTools_Interference& anIntf=anIt.Value(); - anIndex=anIntf.Index(); - if (anIndex) { - aWith=anIntf.With(); - aMapWith.Add(aWith); - } - } - } -} -//======================================================================= -// function: IsFound -// purpose: -//======================================================================= -Standard_Boolean IsFound(const TColStd_IndexedMapOfInteger& aMapWhat, - const TColStd_IndexedMapOfInteger& aMapWith) -{ - Standard_Boolean bFlag=Standard_False; - Standard_Integer i, aNb, aWhat; - - aNb=aMapWhat.Extent(); - for (i=1; i<=aNb; i++) { - aWhat=aMapWhat(i); - if (aMapWith.Contains(aWhat)) { - return !bFlag; - } - } - return bFlag; -} -/* -//======================================================================= -// function: PrepareSetForFace -// purpose: -//======================================================================= - void NMTTools_PaveFiller::PrepareSetForFace(const Standard_Integer nF1, - const Standard_Integer nF2, - BOPTools_PaveSet& aPSF) -{ - Standard_Integer nV1, nV2; - TColStd_MapOfInteger aMap; - BOPTools_ListOfPaveBlock aLPB1, aLPB2; - BOPTools_ListIteratorOfListOfPaveBlock anIt; - // - RealSplitsFace(nF1, aLPB1); - RealSplitsFace(nF2, aLPB2); - // - aLPB1.Append(aLPB2); - // - anIt.Initialize(aLPB1); - for (; anIt.More(); anIt.Next()) { - const BOPTools_PaveBlock& aPB=anIt.Value(); - const BOPTools_Pave& aPave1=aPB.Pave1(); - nV1=aPave1.Index(); - if (!aMap.Contains(nV1)) { - aMap.Add(nV1); - aPSF.Append(aPave1); - } - const BOPTools_Pave& aPave2=aPB.Pave2(); - nV2=aPave2.Index(); - if (!aMap.Contains(nV2)) { - aMap.Add(nV2); - aPSF.Append(aPave2); - } - } -} -*/ -/* -//======================================================================= -// function: IsExistingPaveBlock -// purpose: -//======================================================================= - Standard_Boolean NMTTools_PaveFiller::IsExistingPaveBlock(const BOPTools_PaveBlock& aPBNew, - const BOPTools_SSInterference& aFFi) -{ - Standard_Boolean bFlag; - Standard_Real aTolR3D; - // - aTolR3D=aFFi.TolR3D(); - const BOPTools_ListOfPaveBlock& aLPBR=aFFi.PaveBlocks(); - // - bFlag=IsExistingPaveBlock(aPBNew, aLPBR, aTolR3D); - // - return bFlag; -} -*/ diff --git a/src/NMTTools/NMTTools_PaveFiller_7.cxx b/src/NMTTools/NMTTools_PaveFiller_7.cxx deleted file mode 100644 index 5f8f5fe66..000000000 --- a/src/NMTTools/NMTTools_PaveFiller_7.cxx +++ /dev/null @@ -1,261 +0,0 @@ -// File: NMTTools_PaveFiller_7.cxx -// Created: Thu Dec 18 15:14:55 2003 -// Author: Peter KURNEV -// - - -#include - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//======================================================================= -// function: MakeSplitEdges -// purpose: -//======================================================================= - void NMTTools_PaveFiller::MakeSplitEdges() -{ - myIsDone=Standard_False; - // - Standard_Boolean bIsNewVertex1, bIsNewVertex2; - Standard_Integer i, aNbS, nV1, nV2, aNbPaveBlocks, aNewShapeIndex; - Standard_Real t1, t2; - TopAbs_Orientation anOri; - TopoDS_Edge aE, aESplit; - TopoDS_Vertex aV1, aV2; - // - aNbS=myDS->NumberOfShapesOfTheObject(); - for (i=1; i<=aNbS; ++i) { - if (myDS->GetShapeType(i) != TopAbs_EDGE) - continue; - // - // Original Edge - aE=TopoDS::Edge(myDS->Shape(i)); - if (BRep_Tool::Degenerated(aE)){ - continue; - } - // - anOri=aE.Orientation(); - aE.Orientation(TopAbs_FORWARD); - // - // Making Split Edges - // - // Split Set for the Original Edge i - BOPTools_ListOfPaveBlock& aSplitEdges=mySplitShapesPool(myDS->RefEdge(i)); - BOPTools_ListIteratorOfListOfPaveBlock aPBIt(aSplitEdges); - // - aNbPaveBlocks=aSplitEdges.Extent(); - - for (; aPBIt.More(); aPBIt.Next()) { - BOPTools_PaveBlock& aPB=aPBIt.Value(); - // aPave1 - const BOPTools_Pave& aPave1=aPB.Pave1(); - nV1=aPave1.Index(); - t1=aPave1.Param(); - aV1=TopoDS::Vertex(myDS->GetShape(nV1)); - aV1.Orientation(TopAbs_FORWARD); - // aPave2 - const BOPTools_Pave& aPave2=aPB.Pave2(); - nV2=aPave2.Index(); - t2=aPave2.Param(); - aV2=TopoDS::Vertex(myDS->GetShape(nV2)); - aV2.Orientation(TopAbs_REVERSED); - //xx - if (aNbPaveBlocks==1) { - bIsNewVertex1=myDS->IsNewShape (nV1); - bIsNewVertex2=myDS->IsNewShape (nV2); - if (!bIsNewVertex1 && !bIsNewVertex2) { - aPB.SetEdge(i); - continue; - } - } - //xx - BOPTools_Tools::MakeSplitEdge(aE, aV1, t1, aV2, t2, aESplit); - // - // Add Split Part of the Original Edge to the DS - BooleanOperations_AncestorsSeqAndSuccessorsSeq anASSeq; - - anASSeq.SetNewSuccessor(nV1); - anASSeq.SetNewOrientation(aV1.Orientation()); - - anASSeq.SetNewSuccessor(nV2); - anASSeq.SetNewOrientation(aV2.Orientation()); - // - if (anOri==TopAbs_INTERNAL) { - anASSeq.SetNewAncestor(i); - aESplit.Orientation(anOri); - } - // - myDS->InsertShapeAndAncestorsSuccessors(aESplit, anASSeq); - aNewShapeIndex=myDS->NumberOfInsertedShapes(); - myDS->SetState(aNewShapeIndex, BooleanOperations_UNKNOWN); - // - // Fill Split Set for the Original Edge - aPB.SetEdge(aNewShapeIndex); - // - } - } - myIsDone=Standard_True; -} -//======================================================================= -// function: UpdateCommonBlocks -// purpose: -//======================================================================= - void NMTTools_PaveFiller::UpdateCommonBlocks() -{ - myIsDone=Standard_False; - // - Standard_Integer nE, aNbS, nSp, nEx, nSpx; - NMTTools_ListIteratorOfListOfCommonBlock aCBIt; - BOPTools_ListIteratorOfListOfPaveBlock aPBIt; - // - aNbS=myDS->NumberOfShapesOfTheObject(); - // - for (nE=1; nE<=aNbS; ++nE) { - if (myDS->GetShapeType(nE)!=TopAbs_EDGE){ - continue; - } - if (BRep_Tool::Degenerated(TopoDS::Edge(myDS->Shape(nE)))){ - continue; - } - // - NMTTools_ListOfCommonBlock& aLCB=myCommonBlockPool(myDS->RefEdge(nE)); - BOPTools_ListOfPaveBlock& aLPB=mySplitShapesPool (myDS->RefEdge(nE)); - // - aCBIt.Initialize(aLCB); - for (; aCBIt.More(); aCBIt.Next()) { - NMTTools_CommonBlock& aCB=aCBIt.Value(); - BOPTools_PaveBlock& aPB=aCB.PaveBlock1(nE); - nSp=SplitIndex(aPB); - aPB.SetEdge(nSp); - // - const BOPTools_ListOfPaveBlock& aCBLPB=aCB.PaveBlocks(); - aPBIt.Initialize(aCBLPB); - for (; aPBIt.More(); aPBIt.Next()) { - BOPTools_PaveBlock& aPBx=aPBIt.Value(); - nEx=aPBx.OriginalEdge(); - if (nEx==nE) { - continue; - } - // - nSpx=SplitIndex(aPBx); - aPBx.SetEdge(nSpx); - } - // - } - } -} -//======================================================================= -// function: SplitIndex -// purpose: -//======================================================================= - Standard_Integer NMTTools_PaveFiller::SplitIndex(const BOPTools_PaveBlock& aPBx)const -{ - Standard_Integer anOriginalEdge, anEdgeIndex=0; - - anOriginalEdge=aPBx.OriginalEdge(); - - const BOPTools_ListOfPaveBlock& aLPB=mySplitShapesPool(myDS->RefEdge(anOriginalEdge)); - // - BOPTools_ListIteratorOfListOfPaveBlock anIt(aLPB); - for (; anIt.More(); anIt.Next()) { - BOPTools_PaveBlock& aPB=anIt.Value(); - if (aPB.IsEqual(aPBx)) { - anEdgeIndex=aPB.Edge(); - return anEdgeIndex; - } - } - return anEdgeIndex; -} -//======================================================================= -// function: UpdatePaveBlocks -// purpose: -//======================================================================= - void NMTTools_PaveFiller::UpdatePaveBlocks() -{ - myIsDone=Standard_False; - // - - Standard_Integer i, aNbFFs, nF1, nF2, aNbF, nF, iRankF, nE, nV1, nV2, aNbPB; - Standard_Real aT1, aT2; - TColStd_IndexedMapOfInteger aMF, aME; - TopExp_Explorer aExp; - TopoDS_Vertex aV1, aV2; - TopoDS_Edge aE; - BOPTools_Pave aPave1, aPave2; - BOPTools_PaveBlock aPB; - // - BOPTools_CArray1OfSSInterference& aFFs=myIntrPool->SSInterferences(); - // - aNbFFs=aFFs.Extent(); - for (i=1; i<=aNbFFs; ++i) { - BOPTools_SSInterference& aFFi=aFFs(i); - aFFi.Indices(nF1, nF2); - aMF.Add(nF1); - aMF.Add(nF2); - } - // - aNbF=aMF.Extent(); - for(i=1; i<=aNbF; ++i) { - nF=aMF(i); - iRankF=myDS->Rank(nF); - const TopoDS_Shape& aF=myDS->Shape(nF); - aExp.Init(aF, TopAbs_EDGE); - for(; aExp.More(); aExp.Next()) { - aE=TopoDS::Edge(aExp.Current()); - // - if (BRep_Tool::Degenerated(aE)) { - continue; - } - // - nE=myDS->ShapeIndex(aE, iRankF); - // - if (aME.Contains(nE)) { - continue; - } - aME.Add(nE); - // - BOPTools_ListOfPaveBlock& aLPB=mySplitShapesPool(myDS->RefEdge(nE)); - aNbPB=aLPB.Extent(); - if (aNbPB) { - continue; - } - TopExp::Vertices(aE, aV1, aV2); - // - nV1=myDS->ShapeIndex(aV1, iRankF); - aT1=BRep_Tool::Parameter(aV1, aE); - aPave1.SetIndex(nV1); - aPave1.SetParam(aT1); - // - nV2=myDS->ShapeIndex(aV2, iRankF); - aT2=BRep_Tool::Parameter(aV2, aE); - aPave2.SetIndex(nV2); - aPave2.SetParam(aT2); - // - aPB.SetEdge(nE); - aPB.SetOriginalEdge(nE); - aPB.SetPave1(aPave1); - aPB.SetPave2(aPave2); - // - aLPB.Append(aPB); - } - } -} diff --git a/src/NMTTools/NMTTools_PaveFiller_8.cxx b/src/NMTTools/NMTTools_PaveFiller_8.cxx deleted file mode 100644 index 174c52379..000000000 --- a/src/NMTTools/NMTTools_PaveFiller_8.cxx +++ /dev/null @@ -1,595 +0,0 @@ -// File: NMTTools_PaveFiller_8.cxx -// Created: Fri Dec 19 11:15:53 2003 -// Author: Peter KURNEV -// - - -#include - -#include -#include - -#include -#include - -#include -#include -#include - -#include - -#include -#include -#include -#include - -//======================================================================= -// function: RealPaveBlock -// purpose: -//======================================================================= - const BOPTools_PaveBlock& NMTTools_PaveFiller::RealPaveBlock(const BOPTools_PaveBlock& aPB) -{ - Standard_Integer nE; - // - nE=aPB.OriginalEdge(); - const NMTTools_ListOfCommonBlock& aLCBE=myCommonBlockPool(myDS->RefEdge(nE)); - NMTTools_CommonBlockAPI aCBAPI(aLCBE); - if (aCBAPI.IsCommonBlock(aPB)) { - NMTTools_CommonBlock& aCB=aCBAPI.CommonBlock(aPB); - const BOPTools_PaveBlock& aPBx=aCB.PaveBlock1(); - return aPBx; - } - return aPB; -} -//======================================================================= -// function: CommonBlocksFace -// purpose: -//======================================================================= - Standard_Integer NMTTools_PaveFiller::CommonBlocksFace(const Standard_Integer nF, - NMTTools_ListOfCommonBlock& aLCB) -{ - Standard_Integer nE; - TopAbs_ShapeEnum aT; - NMTTools_ListIteratorOfListOfCommonBlock anIt; - // - aT=myDS->GetShapeType(nF); - // - if (aT!=TopAbs_FACE) { - return 1; // Type mismatch - } - // - BooleanOperations_ShapesDataStructure *pDS=myDS; - BooleanOperations_OnceExplorer aExp(*pDS); - // - aExp.Init(nF, TopAbs_EDGE); - for (; aExp.More(); aExp.Next()) { - nE=aExp.Current(); - const NMTTools_ListOfCommonBlock& aLCBE=myCommonBlockPool(myDS->RefEdge(nE)); - anIt.Initialize(aLCBE); - for (; anIt.More(); anIt.Next()) { - const NMTTools_CommonBlock& aCBE=anIt.Value(); - aLCB.Append(aCBE); - } - } - return 0; //Ok -} -// -// 1 RealSplits -// -// -//======================================================================= -// function: RealSplitsFace -// purpose: -//======================================================================= - void NMTTools_PaveFiller::RealSplitsFace(const Standard_Integer nF, - BOPTools_ListOfPaveBlock& aLPB) -{ - Standard_Integer nE; - BOPTools_ListIteratorOfListOfPaveBlock anIt; - // - BooleanOperations_ShapesDataStructure *pDS=myDS; - BooleanOperations_OnceExplorer aExp(*pDS); - // - aExp.Init(nF, TopAbs_EDGE); - for (; aExp.More(); aExp.Next()) { - nE=aExp.Current(); - const BOPTools_ListOfPaveBlock& aLPBE=mySplitShapesPool(myDS->RefEdge(nE)); - anIt.Initialize(aLPBE); - for (; anIt.More(); anIt.Next()) { - const BOPTools_PaveBlock& aPB=anIt.Value(); - const BOPTools_PaveBlock& aPBR=RealPaveBlock(aPB); - aLPB.Append(aPBR); - } - } -} -//======================================================================= -// function: HasRealSplitsInOnFace -// purpose: -//======================================================================= - Standard_Boolean NMTTools_PaveFiller::HasRealSplitsInOnFace(const Standard_Integer nF1, - const Standard_Integer nF2) -{ - Standard_Boolean bFlag; - BOPTools_ListOfPaveBlock aLPB; - // - RealSplitsInFace(0, nF1, nF2, aLPB); - // - bFlag=!aLPB.IsEmpty(); - if (bFlag) { - return bFlag; - } - // - RealSplitsInFace(0, nF1, nF2, aLPB); - // - bFlag=!aLPB.IsEmpty(); - return bFlag; -} -//======================================================================= -// function: RealSplitsInFace -// purpose: -//======================================================================= - void NMTTools_PaveFiller::RealSplitsInFace(const Standard_Integer ,//for overriding - const Standard_Integer nF1, - const Standard_Integer nF2, - BOPTools_ListOfPaveBlock& aLPB) -{ - Standard_Integer nE1; - // - BooleanOperations_ShapesDataStructure *pDS=myDS; - BooleanOperations_OnceExplorer aExp(*pDS); - aExp.Init(nF1, TopAbs_EDGE); - for (; aExp.More(); aExp.Next()) { - nE1=aExp.Current(); - RealSplitsInFace (nE1, nF2, aLPB); - } -} -//======================================================================= -// function: RealSplitsInFace -// purpose: -//======================================================================= - void NMTTools_PaveFiller::RealSplitsInFace(const Standard_Integer nE1, - const Standard_Integer nF2, - BOPTools_ListOfPaveBlock& aLPB) -{ - Standard_Integer nF1; - // - TColStd_ListIteratorOfListOfInteger anItLFCB; - NMTTools_ListIteratorOfListOfCommonBlock anItCB; - // - const NMTTools_ListOfCommonBlock& aLCB=myCommonBlockPool(myDS->RefEdge(nE1)); - // - anItCB.Initialize(aLCB); - for (; anItCB.More(); anItCB.Next()) { - NMTTools_CommonBlock& aCB=anItCB.Value(); - const BOPTools_PaveBlock& aPB1=aCB.PaveBlock1(nE1); - const BOPTools_PaveBlock& aPB1R=RealPaveBlock(aPB1); - - const TColStd_ListOfInteger& aLFCB=aCB.Faces(); - anItLFCB.Initialize(aLFCB); - for (; anItLFCB.More(); anItLFCB.Next()) { - nF1=anItLFCB.Value(); - if (nF1==nF2) { - aLPB.Append(aPB1R); - } - } - } -} -//======================================================================= -// function: RealSplitsOnEdge -// purpose: -//======================================================================= - void NMTTools_PaveFiller::RealSplitsOnEdge(const Standard_Integer nE1, - const Standard_Integer nE2, - BOPTools_ListOfPaveBlock& aLPB) -{ - Standard_Integer nE; - // - BOPTools_ListIteratorOfListOfPaveBlock anIt; - NMTTools_ListIteratorOfListOfCommonBlock anItCB; - // - const NMTTools_ListOfCommonBlock& aLCB=myCommonBlockPool(myDS->RefEdge(nE1)); - - anItCB.Initialize(aLCB); - for (; anItCB.More(); anItCB.Next()) { - NMTTools_CommonBlock& aCB=anItCB.Value(); - const BOPTools_PaveBlock& aPB1=aCB.PaveBlock1(nE1); - const BOPTools_PaveBlock& aPB1R=RealPaveBlock(aPB1); - // - const BOPTools_ListOfPaveBlock& aLPBx=aCB.PaveBlocks(); - anIt.Initialize(aLPBx); - for (; anIt.More(); anIt.Next()) { - const BOPTools_PaveBlock& aPB2=anIt.Value(); - nE=aPB2.OriginalEdge(); - if (nE==nE2) { - aLPB.Append(aPB1R); - } - } - } -} -//======================================================================= -// function: RealSplitsOnFace -// purpose: -//======================================================================= - void NMTTools_PaveFiller::RealSplitsOnFace(const Standard_Integer nE1, - const Standard_Integer nF2, - BOPTools_ListOfPaveBlock& aLPB) -{ - Standard_Integer nE2; - // - BooleanOperations_ShapesDataStructure *pDS=myDS; - BooleanOperations_OnceExplorer aExp(*pDS); - aExp.Init(nF2, TopAbs_EDGE); - for (; aExp.More(); aExp.Next()) { - nE2=aExp.Current(); - RealSplitsOnEdge(nE1, nE2, aLPB); - } -} -//======================================================================= -// function: RealSplitsOnFace -// purpose: -//======================================================================= - void NMTTools_PaveFiller::RealSplitsOnFace(const Standard_Integer ,//for overriding - const Standard_Integer nF1, - const Standard_Integer nF2, - BOPTools_ListOfPaveBlock& aLPB) -{ - Standard_Integer nE1; - // - BooleanOperations_ShapesDataStructure *pDS=myDS; - BooleanOperations_OnceExplorer aExp(*myDS); - aExp.Init(nF1, TopAbs_EDGE); - for (; aExp.More(); aExp.Next()) { - nE1=aExp.Current(); - RealSplitsOnFace(nE1, nF2, aLPB); - } -} - -// 2 SimpleSplits -//======================================================================= -// function: SplitsFace -// purpose: -//======================================================================= - Standard_Integer NMTTools_PaveFiller::SplitsFace(const Standard_Integer nF, - BOPTools_ListOfPaveBlock& aLPB) -{ - Standard_Integer nE; - TopAbs_ShapeEnum aT; - BOPTools_ListIteratorOfListOfPaveBlock anIt; - // - aT=myDS->GetShapeType(nF); - // - if (aT!=TopAbs_FACE) { - return 1; // Type mismatch - } - // - BooleanOperations_ShapesDataStructure *pDS=myDS; - BooleanOperations_OnceExplorer aExp(*pDS); - // - aExp.Init(nF, TopAbs_EDGE); - for (; aExp.More(); aExp.Next()) { - nE=aExp.Current(); - const BOPTools_ListOfPaveBlock& aLPBE=mySplitShapesPool(myDS->RefEdge(nE)); - anIt.Initialize(aLPBE); - for (; anIt.More(); anIt.Next()) { - const BOPTools_PaveBlock& aPBE=anIt.Value(); - aLPB.Append(aPBE); - } - } - return 0; //Ok -} - -//======================================================================= -// function: SplitsInFace -// purpose: splits of edges from nF1 in nF2 -//======================================================================= - Standard_Integer NMTTools_PaveFiller::SplitsInFace(const Standard_Integer ,//for overriding - const Standard_Integer nF1, - const Standard_Integer nF2, - BOPTools_ListOfPaveBlock& aLPB) -{ - Standard_Integer nE1; - TopAbs_ShapeEnum aT1, aT2; - - aT1=myDS->GetShapeType(nF1); - aT2=myDS->GetShapeType(nF2); - - if (aT1!=TopAbs_FACE || aT2!=TopAbs_FACE) { - return 1; // Type mismatch - } - BooleanOperations_ShapesDataStructure *pDS=myDS; - BooleanOperations_OnceExplorer aExp(*pDS); - aExp.Init(nF1, TopAbs_EDGE); - for (; aExp.More(); aExp.Next()) { - nE1=aExp.Current(); - SplitsInFace (nE1, nF2, aLPB); - } - return 0; //Ok -} -//======================================================================= -// function: SplitsInFace -// purpose: splits of edge nE1 in aFace2 -//======================================================================= - Standard_Integer NMTTools_PaveFiller::SplitsInFace(const Standard_Integer nE1, - const Standard_Integer nF2, - BOPTools_ListOfPaveBlock& aLPB) -{ - Standard_Integer nF1; - TopAbs_ShapeEnum aT1, aT2; - - aT1=myDS->GetShapeType(nE1); - aT2=myDS->GetShapeType(nF2); - - if (aT1!=TopAbs_EDGE || aT2!=TopAbs_FACE) { - return 1; // Type mismatch - } - // - TColStd_ListIteratorOfListOfInteger anItLFCB; - NMTTools_ListIteratorOfListOfCommonBlock anItCB; - // - const NMTTools_ListOfCommonBlock& aLCB=myCommonBlockPool(myDS->RefEdge(nE1)); - // - anItCB.Initialize(aLCB); - for (; anItCB.More(); anItCB.Next()) { - NMTTools_CommonBlock& aCB=anItCB.Value(); - const BOPTools_PaveBlock& aPB1=aCB.PaveBlock1(nE1); - - const TColStd_ListOfInteger& aLFCB=aCB.Faces(); - anItLFCB.Initialize(aLFCB); - for (; anItLFCB.More(); anItLFCB.Next()) { - nF1=anItLFCB.Value(); - if (nF1==nF2) { - aLPB.Append(aPB1); - } - } - } - return 0; //Ok -} -//======================================================================= -// function: SplitsOnEdge -// purpose: splits of edge nE1 on nE2 -//======================================================================= - Standard_Integer NMTTools_PaveFiller::SplitsOnEdge(const Standard_Integer nE1, - const Standard_Integer nE2, - BOPTools_ListOfPaveBlock& aLPB) -{ - Standard_Integer nE; - TopAbs_ShapeEnum aT1, aT2; - - aT1=myDS->GetShapeType(nE1); - aT2=myDS->GetShapeType(nE2); - - if (aT1!=TopAbs_EDGE || aT2!=TopAbs_EDGE) { - return 1; // Type mismatch - } - // - BOPTools_ListIteratorOfListOfPaveBlock anIt; - NMTTools_ListIteratorOfListOfCommonBlock anItCB; - // - const NMTTools_ListOfCommonBlock& aLCB=myCommonBlockPool(myDS->RefEdge(nE1)); - - anItCB.Initialize(aLCB); - for (; anItCB.More(); anItCB.Next()) { - NMTTools_CommonBlock& aCB=anItCB.Value(); - const BOPTools_PaveBlock& aPB1=aCB.PaveBlock1(nE1);//XXX - // - const BOPTools_ListOfPaveBlock& aLPBx=aCB.PaveBlocks(); - anIt.Initialize(aLPBx); - for (; anIt.More(); anIt.Next()) { - const BOPTools_PaveBlock& aPB2=anIt.Value(); - nE=aPB2.OriginalEdge(); - if (nE==nE2) { - aLPB.Append(aPB1); - } - } - } - return 0; //Ok -} -//======================================================================= -// function: SplitsOnFace -// purpose: splits of edge nE1 on face nF2 -//======================================================================= - Standard_Integer NMTTools_PaveFiller::SplitsOnFace(const Standard_Integer nE1, - const Standard_Integer nF2, - BOPTools_ListOfPaveBlock& aLPB) -{ - Standard_Integer nE2, ip; - TopAbs_ShapeEnum aT1, aT2; - - aT1=myDS->GetShapeType(nE1); - aT2=myDS->GetShapeType(nF2); - - if (aT1!=TopAbs_EDGE || aT2!=TopAbs_FACE) { - return 1; // Type mismatch - } - BooleanOperations_ShapesDataStructure *pDS=myDS; - BooleanOperations_OnceExplorer aExp(*pDS); - aExp.Init(nF2, TopAbs_EDGE); - for (; aExp.More(); aExp.Next()) { - nE2=aExp.Current(); - ip=SplitsOnEdge(nE1, nE2, aLPB); - if (ip) { - return ip; - } - } - return 0; //Ok -} -//======================================================================= -// function: SplitsOnFace -// purpose: splits of edges from face nF1 on face nF2 -//======================================================================= - Standard_Integer NMTTools_PaveFiller::SplitsOnFace(const Standard_Integer ,//for overriding - const Standard_Integer nF1, - const Standard_Integer nF2, - BOPTools_ListOfPaveBlock& aLPB) -{ - Standard_Integer nE1, ip; - TopAbs_ShapeEnum aT1, aT2; - - aT1=myDS->GetShapeType(nF1); - aT2=myDS->GetShapeType(nF2); - - if (aT1!=TopAbs_FACE || aT2!=TopAbs_FACE) { - return 1; // Type mismatch - } - BooleanOperations_ShapesDataStructure *pDS=myDS; - BooleanOperations_OnceExplorer aExp(*myDS); - aExp.Init(nF1, TopAbs_EDGE); - for (; aExp.More(); aExp.Next()) { - nE1=aExp.Current(); - ip=SplitsOnFace(nE1, nF2, aLPB); - if (ip) { - return ip; - } - } - return 0; //Ok -} - -// 3 Simple Splits indices -//======================================================================= -// function: SplitsFace -// purpose: -//======================================================================= - Standard_Integer NMTTools_PaveFiller::SplitsFace(const Standard_Integer nF, - TColStd_ListOfInteger& aSplits) -{ - Standard_Integer nE, iErr; - BOPTools_ListIteratorOfListOfPaveBlock aIt; - BOPTools_ListOfPaveBlock aLPB; - // - iErr=SplitsFace(nF, aLPB); - if (iErr) { - return iErr; - } - - aIt.Initialize(aLPB); - for (; aIt.More(); aIt.Next()) { - const BOPTools_PaveBlock& aPB=aIt.Value(); - nE=aPB.Edge(); - aSplits.Append(nE); - } - return 0; //Ok -} - -//======================================================================= -// function: SplitsInFace -// purpose: splits of edges from nF1 in nF2 -//======================================================================= - Standard_Integer NMTTools_PaveFiller::SplitsInFace(const Standard_Integer ,//for overriding - const Standard_Integer nF1, - const Standard_Integer nF2, - TColStd_ListOfInteger& aSplits) -{ - Standard_Integer nE, iErr; - BOPTools_ListIteratorOfListOfPaveBlock aIt; - BOPTools_ListOfPaveBlock aLPB; - // - iErr=SplitsInFace(0, nF1, nF2, aLPB); - if (iErr) { - return iErr; - } - aIt.Initialize(aLPB); - for (; aIt.More(); aIt.Next()) { - const BOPTools_PaveBlock& aPB=aIt.Value(); - nE=aPB.Edge(); - aSplits.Append(nE); - } - return iErr; -} -//======================================================================= -// function: SplitsInFace -// purpose: splits of edge nE1 in aFace2 -//======================================================================= - Standard_Integer NMTTools_PaveFiller::SplitsInFace(const Standard_Integer nE1, - const Standard_Integer nF2, - TColStd_ListOfInteger& aSplits) -{ - Standard_Integer nE, iErr; - BOPTools_ListIteratorOfListOfPaveBlock aIt; - BOPTools_ListOfPaveBlock aLPB; - // - iErr=SplitsInFace(nE1, nF2, aLPB); - if (iErr) { - return iErr; - } - aIt.Initialize(aLPB); - for (; aIt.More(); aIt.Next()) { - const BOPTools_PaveBlock& aPB=aIt.Value(); - nE=aPB.Edge(); - aSplits.Append(nE); - } - return iErr; -} -//======================================================================= -// function: SplitsOnEdge -// purpose: splits of edge nE1 on nE2 -//======================================================================= - Standard_Integer NMTTools_PaveFiller::SplitsOnEdge(const Standard_Integer nE1, - const Standard_Integer nE2, - TColStd_ListOfInteger& aSplits) -{ - Standard_Integer nE, iErr; - BOPTools_ListIteratorOfListOfPaveBlock aIt; - BOPTools_ListOfPaveBlock aLPB; - // - iErr=SplitsOnEdge(nE1, nE2, aLPB); - if (iErr) { - return iErr; - } - aIt.Initialize(aLPB); - for (; aIt.More(); aIt.Next()) { - const BOPTools_PaveBlock& aPB=aIt.Value(); - nE=aPB.Edge(); - aSplits.Append(nE); - } - return iErr; -} -//======================================================================= -// function: SplitsOnFace -// purpose: splits of edge nE1 on face nF2 -//======================================================================= - Standard_Integer NMTTools_PaveFiller::SplitsOnFace(const Standard_Integer nE1, - const Standard_Integer nF2, - TColStd_ListOfInteger& aSplits) -{ - Standard_Integer nE, iErr; - BOPTools_ListIteratorOfListOfPaveBlock aIt; - BOPTools_ListOfPaveBlock aLPB; - // - iErr=SplitsOnEdge(nE1, nF2, aLPB); - if (iErr) { - return iErr; - } - aIt.Initialize(aLPB); - for (; aIt.More(); aIt.Next()) { - const BOPTools_PaveBlock& aPB=aIt.Value(); - nE=aPB.Edge(); - aSplits.Append(nE); - } - return iErr; -} -//======================================================================= -// function: SplitsOnFace -// purpose: splits of edges from face nF1 on face nF2 -//======================================================================= - Standard_Integer NMTTools_PaveFiller::SplitsOnFace(const Standard_Integer ,//for overriding - const Standard_Integer nF1, - const Standard_Integer nF2, - TColStd_ListOfInteger& aSplits) -{ - Standard_Integer nE, iErr; - BOPTools_ListIteratorOfListOfPaveBlock aIt; - BOPTools_ListOfPaveBlock aLPB; - // - iErr=SplitsOnFace(0, nF1, nF2, aLPB); - if (iErr) { - return iErr; - } - - aIt.Initialize(aLPB); - for (; aIt.More(); aIt.Next()) { - const BOPTools_PaveBlock& aPB=aIt.Value(); - nE=aPB.Edge(); - aSplits.Append(nE); - } - return 0; //Ok -} diff --git a/src/NMTTools/NMTTools_PaveFiller_9.cxx b/src/NMTTools/NMTTools_PaveFiller_9.cxx deleted file mode 100644 index 2e525fd26..000000000 --- a/src/NMTTools/NMTTools_PaveFiller_9.cxx +++ /dev/null @@ -1,105 +0,0 @@ -// File: NMTTools_PaveFiller_9.cxx -// Created: Fri Dec 19 11:15:53 2003 -// Author: Peter KURNEV -// - -#include - -#include - -#include -#include - -#include -#include -#include -#include -#include - -#include -#include - -#include - -#include -#include -#include -#include - -#include - -#include -#include - - -//======================================================================= -// function: PrepareFace -// purpose: -//======================================================================= - void NMTTools_PaveFiller::PrepareFace(const Standard_Integer nF, - TopoDS_Face& newFace) -{ - Standard_Boolean bToReverse, bIsDegenerated; - Standard_Integer iRankF, nE, nSp, aNbPB; - Standard_Real aTol; - TopLoc_Location aLoc; - TopoDS_Face aF; - TopoDS_Wire newWire; - TopoDS_Edge aSp; - TopAbs_Orientation anOrF, anOrE; - BRep_Builder aBB; - TopExp_Explorer aExpW, aExpE; - BOPTools_ListIteratorOfListOfPaveBlock aItPB; - // - iRankF=myDS->Rank(nF); - aF=TopoDS::Face(myDS->Shape(nF)); - anOrF=aF.Orientation(); - aF.Orientation(TopAbs_FORWARD); - // - Handle(Geom_Surface) aS=BRep_Tool::Surface(aF, aLoc); - aTol=BRep_Tool::Tolerance(aF); - // - aBB.MakeFace (newFace, aS, aLoc, aTol); - // - aExpW.Init(aF, TopAbs_WIRE); - for (; aExpW.More(); aExpW.Next()) { - const TopoDS_Shape& aW=aExpW.Current(); - aBB.MakeWire(newWire); - // - aExpE.Init(aW, TopAbs_EDGE); - for (; aExpE.More(); aExpE.Next()) { - const TopoDS_Edge& aE=TopoDS::Edge(aExpE.Current()); - bIsDegenerated=BRep_Tool::Degenerated(aE); - anOrE=aE.Orientation(); - // - nE=myDS->ShapeIndex(aE, iRankF); - const BOPTools_ListOfPaveBlock& aLPB=mySplitShapesPool(myDS->RefEdge(nE)); - aNbPB=aLPB.Extent(); - if (!aNbPB) { - aBB.Add(newWire, aE); - continue; - } - // - aItPB.Initialize(aLPB); - for (; aItPB.More(); aItPB.Next()) { - const BOPTools_PaveBlock& aPB=aItPB.Value(); - const BOPTools_PaveBlock& aPBR=RealPaveBlock(aPB); - nSp=aPBR.Edge(); - // - aSp=TopoDS::Edge(myDS->Shape(nSp)); - if (!bIsDegenerated) { - bToReverse=BOPTools_Tools3D::IsSplitToReverse1(aSp, aE, myContext); - if (bToReverse) { - aSp.Reverse(); - } - } - else { - aSp.Orientation(anOrE); - } - aBB.Add(newWire, aSp); - } - } - aBB.Add(newFace, newWire); - } - newFace.Orientation(anOrF); -} diff --git a/src/NMTTools/NMTTools_Tools.cdl b/src/NMTTools/NMTTools_Tools.cdl deleted file mode 100644 index 5e6e5cf63..000000000 --- a/src/NMTTools/NMTTools_Tools.cdl +++ /dev/null @@ -1,72 +0,0 @@ --- File: NMTTools_Tools.cdl --- Created: Mon Dec 8 10:32:34 2003 --- Author: Peter KURNEV --- ----Copyright: Matra Datavision 2003 - - -class Tools from NMTTools - - ---Purpose: - -uses - Vertex from TopoDS, - Edge from TopoDS, - Face from TopoDS, - Context from IntTools, - Curve from Geom2d, - - ListOfShape from TopTools, - IndexedDataMapOfIntegerIndexedMapOfInteger from BOPTColStd, - CArray1OfVVInterference from BOPTools, - CArray1OfSSInterference from BOPTools, - ListOfCoupleOfShape from NMTTools, - IndexedDataMapOfShapeIndexedMapOfShape from NMTTools - ---raises - -is - MakeNewVertex (myclass; - aLV : ListOfShape from TopTools; - aNewVertex: out Vertex from TopoDS); - FindChains(myclass; - aVVs:CArray1OfVVInterference from BOPTools; - aMCX: out IndexedDataMapOfIntegerIndexedMapOfInteger from BOPTColStd); - - FindChains(myclass; - aVVs:CArray1OfSSInterference from BOPTools; - aMCX: out IndexedDataMapOfIntegerIndexedMapOfInteger from BOPTColStd); - - FindChains(myclass; - aMCV: IndexedDataMapOfIntegerIndexedMapOfInteger from BOPTColStd; - aMCX: out IndexedDataMapOfIntegerIndexedMapOfInteger from BOPTColStd); - - - IsSplitInOnFace(myclass; - aE : Edge from TopoDS; - aF : Face from TopoDS; - aCtx:out Context from IntTools) - returns Boolean from Standard; - - AreFacesSameDomain(myclass; - aF1 : Face from TopoDS; - aF2 : Face from TopoDS; - aCtx : out Context from IntTools) - returns Boolean from Standard; - - FindChains(myclass; - aLCS:ListOfCoupleOfShape from NMTTools; - aM :out IndexedDataMapOfShapeIndexedMapOfShape from NMTTools); - - FindChains(myclass; - aM1: IndexedDataMapOfShapeIndexedMapOfShape from NMTTools; - aM2:out IndexedDataMapOfShapeIndexedMapOfShape from NMTTools); - - MakePCurve(myclass; - aE : Edge from TopoDS; - aF : Face from TopoDS; - aC2D: Curve from Geom2d; - aTolR2D: Real from Standard); ---fields - -end Tools; diff --git a/src/NMTTools/NMTTools_Tools.cxx b/src/NMTTools/NMTTools_Tools.cxx deleted file mode 100644 index 40cc24aab..000000000 --- a/src/NMTTools/NMTTools_Tools.cxx +++ /dev/null @@ -1,550 +0,0 @@ -// File: NMTTools_Tools.cxx -// Created: Mon Dec 8 10:35:15 2003 -// Author: Peter KURNEV -// - - -#include - -#include - -#include -#include -#include - -#include -#include - -#include -#include -#include -#include - -#include - -#include -#include - -#include -#include -#include - -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -static - void ProcessBlock(const Standard_Integer iV, - const BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMCV, - TColStd_IndexedMapOfInteger& aProcessed, - TColStd_IndexedMapOfInteger& aChain); -static - void ProcessBlock(const TopoDS_Shape& aF, - const NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& aMCV, - TopTools_IndexedMapOfShape& aProcessed, - TopTools_IndexedMapOfShape& aChain); - -//======================================================================= -// function: MakePCurve -// purpose: -//======================================================================= - void NMTTools_Tools::MakePCurve(const TopoDS_Edge& aE, - const TopoDS_Face& aF, - const Handle(Geom2d_Curve)& aC2Dx, - const Standard_Real aTolR2D) -{ - Standard_Integer k, aNbV; - Standard_Real aTolEdge, aTolFact, aTolV, aTolVmax; - Standard_Real aTFirst, aTLast, aOutFirst, aOutLast, aOutTol; - TopoDS_Face aFFWD; - TopTools_IndexedMapOfShape aVMap; - BRep_Builder aBB; - // - aFFWD=aF; - aFFWD.Orientation(TopAbs_FORWARD); - // - aTolEdge=BRep_Tool::Tolerance(aE); - aTolFact=Max(aTolEdge, aTolR2D); - // - TopExp::MapShapes(aE, TopAbs_VERTEX, aVMap); - // - aTolVmax=-1.; - aNbV=aVMap.Extent(); - for (k=1; k<=aNbV; ++k) { - const TopoDS_Vertex& aV=TopoDS::Vertex(aVMap(k)); - aTolV=BRep_Tool::Tolerance(aV); - if (aTolV>aTolVmax) { - aTolVmax=aTolV; - } - } - // - if (aTolFact>aTolVmax) { - aTolFact=aTolVmax; - } - // - const Handle(Geom_Curve)& aC3DE=BRep_Tool::Curve(aE, aTFirst, aTLast); - Handle(Geom_TrimmedCurve)aC3DETrim=new Geom_TrimmedCurve(aC3DE, aTFirst, aTLast); - // - Handle(Geom2d_Curve) aC2D, aC2DA; - // - aC2D=aC2Dx; - if (aC2D.IsNull()) { - BOPTools_Tools2D::BuildPCurveForEdgeOnFace(aE, aFFWD); - BOPTools_Tools2D::CurveOnSurface(aE, aFFWD, aC2D, aOutFirst, aOutLast, aOutTol, Standard_True); - } - if (aC3DE->IsPeriodic()) { - BOPTools_Tools2D::AdjustPCurveOnFace(aFFWD, aTFirst, aTLast, aC2D, aC2DA); - } - else { - BOPTools_Tools2D::AdjustPCurveOnFace(aFFWD, aC3DETrim, aC2D, aC2DA); - } - // - aBB.UpdateEdge(aE, aC2DA, aFFWD, aTolFact); - BRepLib::SameParameter(aE); -} - -//======================================================================= -// function: IsSplitInOnFace -// purpose: -//======================================================================= - Standard_Boolean NMTTools_Tools::IsSplitInOnFace(const TopoDS_Edge& aE, - const TopoDS_Face& aF, - IntTools_Context& aContext) -{ - Standard_Boolean bFlag; - Standard_Real aT, aTolE, aTolF, aTol, aDist, aU, aV; - gp_Pnt aP; - gp_Pnt2d aP2D; - // - aTolE=BRep_Tool::Tolerance(aE); - aTolF=BRep_Tool::Tolerance(aF); - aTol=aTolE+aTolF; - // - GeomAPI_ProjectPointOnSurf& aProjector=aContext.ProjPS(aF); - // - aT=BOPTools_Tools2D::IntermediatePoint(aE); - BOPTools_Tools::PointOnEdge(aE, aT, aP); - // - aProjector.Perform(aP); - bFlag=aProjector.IsDone(); - if (!bFlag) { - return bFlag; - } - // - aDist=aProjector.LowerDistance(); - bFlag=(aDist <= aTol); - if (!bFlag) { - return bFlag; - } - // - aProjector.LowerDistanceParameters(aU, aV); - aP2D.SetCoord(aU, aV); - bFlag=aContext.IsPointInOnFace (aF, aP2D); - return bFlag; -} -//======================================================================= -// function: NMTTools_Tools::MakeNewVertex -// purpose : -//======================================================================= - void NMTTools_Tools::MakeNewVertex(const TopTools_ListOfShape& aLVs, - TopoDS_Vertex& aNewVertex) -{ - Standard_Integer aNb; - Standard_Real aTi, aDi, aDmax=-1.e5; - gp_Pnt aPi, aP; - gp_XYZ aXYZ(0.,0.,0.), aXYZi; - TopTools_ListIteratorOfListOfShape anIt; - // - aNb=aLVs.Extent(); - if (!aNb) { - return; - } - // - anIt.Initialize(aLVs); - for (; anIt.More(); anIt.Next()) { - TopoDS_Vertex aVi=TopoDS::Vertex(anIt.Value()); - aPi=BRep_Tool::Pnt(aVi); - aXYZi=aPi.XYZ(); - aXYZ=aXYZ+aXYZi; - } - // - aXYZ.Divide((Standard_Real)aNb); - aP.SetXYZ(aXYZ); - // - anIt.Initialize(aLVs); - for (; anIt.More(); anIt.Next()) { - TopoDS_Vertex aVi=TopoDS::Vertex(anIt.Value()); - aPi=BRep_Tool::Pnt(aVi); - aTi=BRep_Tool::Tolerance(aVi); - aDi=aP.Distance(aPi); - aDi=aDi+aTi; - if (aDi > aDmax) { - aDmax=aDi; - } - } - BRep_Builder aBB; - aBB.MakeVertex (aNewVertex, aP, aDmax); -} -//======================================================================= -// function: FindChains -// purpose : -//======================================================================= - void NMTTools_Tools::FindChains(const BOPTools_CArray1OfSSInterference& FFs, - BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMapChains) -{ - Standard_Boolean bIsTangentFaces; - Standard_Integer j, aNb, anIndex1, anIndex2; - BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger aMCV; - // - aNb=FFs.Extent(); - for (j=1; j<=aNb; ++j) { - const BOPTools_SSInterference& aFF=FFs(j); - // - bIsTangentFaces=aFF.IsTangentFaces(); - if (!bIsTangentFaces) { - continue; - } - // - aFF.Indices(anIndex1, anIndex2); - // - if (aMCV.Contains(anIndex1)) { - TColStd_IndexedMapOfInteger& aMV=aMCV.ChangeFromKey(anIndex1); - aMV.Add(anIndex1); - aMV.Add(anIndex2); - } - else { - TColStd_IndexedMapOfInteger aMV; - aMV.Add(anIndex1); - aMV.Add(anIndex2); - aMCV.Add(anIndex1, aMV); - } - // - if (aMCV.Contains(anIndex2)) { - TColStd_IndexedMapOfInteger& aMV=aMCV.ChangeFromKey(anIndex2); - aMV.Add(anIndex1); - aMV.Add(anIndex2); - } - else { - TColStd_IndexedMapOfInteger aMV; - aMV.Add(anIndex1); - aMV.Add(anIndex2); - aMCV.Add(anIndex2, aMV); - } - } - NMTTools_Tools::FindChains(aMCV, aMapChains); -} -//======================================================================= -// function: FindChains -// purpose : -//======================================================================= - void NMTTools_Tools::FindChains(const BOPTools_CArray1OfVVInterference& VVs, - BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMapChains) -{ - Standard_Integer j, aNb, anIndex1, anIndex2; - BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger aMCV; - // - aNb=VVs.Extent(); - for (j=1; j<=aNb; ++j) { - const BOPTools_VVInterference& VV=VVs(j); - VV.Indices(anIndex1, anIndex2); - // - if (aMCV.Contains(anIndex1)) { - TColStd_IndexedMapOfInteger& aMV=aMCV.ChangeFromKey(anIndex1); - aMV.Add(anIndex1); - aMV.Add(anIndex2); - } - else { - TColStd_IndexedMapOfInteger aMV; - aMV.Add(anIndex1); - aMV.Add(anIndex2); - aMCV.Add(anIndex1, aMV); - } - // - if (aMCV.Contains(anIndex2)) { - TColStd_IndexedMapOfInteger& aMV=aMCV.ChangeFromKey(anIndex2); - aMV.Add(anIndex1); - aMV.Add(anIndex2); - } - else { - TColStd_IndexedMapOfInteger aMV; - aMV.Add(anIndex1); - aMV.Add(anIndex2); - aMCV.Add(anIndex2, aMV); - } - } - NMTTools_Tools::FindChains(aMCV, aMapChains); -} - -//======================================================================= -// function: FindChains -// purpose : -//======================================================================= - void NMTTools_Tools::FindChains(const BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMCV, - BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMapChains) -{ - Standard_Integer i, j, aNbCV, aNbV, iV, iVx; - TColStd_IndexedMapOfInteger aProcessed, aChain; - // - aNbCV=aMCV.Extent(); - for (i=1; i<=aNbCV; ++i) { - iV=aMCV.FindKey(i); - if (aProcessed.Contains(iV)) { - continue; - } - // - aProcessed.Add(iV); - aChain.Add(iV); - // - const TColStd_IndexedMapOfInteger& aMV=aMCV(i); - aNbV=aMV.Extent(); - for (j=1; j<=aNbV; ++j) { - iVx=aMV(j); - ProcessBlock(iVx, aMCV, aProcessed, aChain); - } - aMapChains.Add(i, aChain); - aChain.Clear(); - } -} -//======================================================================= -// function: ProcessBlock -// purpose: -//======================================================================= -void ProcessBlock(const Standard_Integer iV, - const BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMCV, - TColStd_IndexedMapOfInteger& aProcessed, - TColStd_IndexedMapOfInteger& aChain) -{ - Standard_Integer j, aNbV, iVx; - // - if (aProcessed.Contains(iV)) { - return; - } - aProcessed.Add(iV); - aChain.Add(iV); - // - const TColStd_IndexedMapOfInteger& aMV=aMCV.FindFromKey(iV); - aNbV=aMV.Extent(); - for (j=1; j<=aNbV; ++j) { - iVx=aMV(j); - ProcessBlock(iVx, aMCV, aProcessed, aChain); - } -} -//======================================================================= -// function: AreFacesSameDomain -// purpose : -//======================================================================= - Standard_Boolean NMTTools_Tools::AreFacesSameDomain(const TopoDS_Face& aF1x, - const TopoDS_Face& aF2y, - IntTools_Context& aCtx) -{ - Standard_Boolean bFlag; - Standard_Integer i, aNbE1, aNbE2; - - TopTools_IndexedMapOfShape aME1, aME2; - TopoDS_Edge aEF1, aEF2; - TopoDS_Face aF1, aF2; - // - aF1=aF1x; - aF1.Orientation(TopAbs_FORWARD); - aF2=aF2y; - aF2.Orientation(TopAbs_FORWARD); - // - TopExp::MapShapes(aF1, TopAbs_EDGE, aME1); - TopExp::MapShapes(aF2, TopAbs_EDGE, aME2); - // - bFlag=Standard_False; - // - aNbE1=aME1.Extent(); - aNbE2=aME2.Extent(); - // - if(!aNbE1 || !aNbE2){ - return bFlag; - } - // - if(aNbE1!=aNbE2) { - return bFlag; - } - // - for (i=1; i<=aNbE1; ++i) { - const TopoDS_Edge& aE1=TopoDS::Edge(aME1(i)); - if (BRep_Tool::Degenerated(aE1)) { - // not try to compare deg edges because it - // can not have same TShape on different faces at all - continue; - } - if (!aME2.Contains(aE1)) { - return bFlag; - } - } - // - Standard_Real aTolF1, aTolF2, aTol; - gp_Pnt2d aP2D; - gp_Pnt aP; - TopExp_Explorer anExp; - // - aTolF1=BRep_Tool::Tolerance(aF1); - aTolF2=BRep_Tool::Tolerance(aF2); - aTol=aTolF1+aTolF2; - // - anExp.Init(aF1, TopAbs_EDGE); - for (; anExp.More(); anExp.Next()) { - const TopoDS_Edge& aE1=TopoDS::Edge(anExp.Current()); - if (!BRep_Tool::Degenerated(aE1)) { - BOPTools_Tools3D::PointNearEdge(aE1, aF1, aP2D, aP); - bFlag=aCtx.IsValidPointForFace(aP, aF2, aTol); - break; - } - } - return bFlag; - /* - // - Standard_Real aU1, aU2, aV1, aV2; - Standard_Real dU, dV, aU, aV; - Standard_Integer aNbP=5, aNbP1, j; - gp_Pnt2d aP2D; - gp_Pnt aP; - // - aTolF1=BRep_Tool::Tolerance(aF1); - aTolF2=BRep_Tool::Tolerance(aF2); - aTol=aTolF1+aTolF2; - // - BRepTools::UVBounds(aF1, aU1, aU2, aV1, aV2); - Handle(Geom_Surface) aS1=BRep_Tool::Surface(aF1); - // - aNbP1=aNbP+1; - dU=(aU2-aU1)/aNbP1; - dV=(aV2-aV1)/aNbP1; - // - for (i=1; i<=aNbP; ++i) { - aU=aU1+i*dU; - for (j=1; j<=aNbP; ++j) { - aV=aV1+j*dV; - aP2D.SetCoord(aU, aV); - // - if(aCtx.IsPointInFace(aF1, aP2D)) { - aP=aS1->Value(aU, aV); - bFlag=aCtx.IsValidPointForFace(aP, aF2, aTol); - if (!bFlag) { - return bFlag; - } - } - } - } - */ - // - return bFlag; -} -//======================================================================= -// function: FindChains -// purpose : -//======================================================================= - void NMTTools_Tools::FindChains(const NMTTools_ListOfCoupleOfShape& aLCS, - NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& aMapChains) -{ - NMTTools_ListIteratorOfListOfCoupleOfShape aItCS; - NMTTools_IndexedDataMapOfShapeIndexedMapOfShape aMCV; - // - aItCS.Initialize(aLCS); - for (; aItCS.More(); aItCS.Next()) { - const NMTTools_CoupleOfShape& aCS=aItCS.Value(); - // - const TopoDS_Shape& aF1=aCS.Shape1(); - const TopoDS_Shape& aF2=aCS.Shape2(); - // - // - if (aMCV.Contains(aF1)) { - TopTools_IndexedMapOfShape& aMV=aMCV.ChangeFromKey(aF1); - aMV.Add(aF1); - aMV.Add(aF2); - } - else { - TopTools_IndexedMapOfShape aMV; - aMV.Add(aF1); - aMV.Add(aF2); - aMCV.Add(aF1, aMV); - } - // - if (aMCV.Contains(aF2)) { - TopTools_IndexedMapOfShape& aMV=aMCV.ChangeFromKey(aF2); - aMV.Add(aF1); - aMV.Add(aF2); - } - else { - TopTools_IndexedMapOfShape aMV; - aMV.Add(aF1); - aMV.Add(aF2); - aMCV.Add(aF2, aMV); - } - } - NMTTools_Tools::FindChains(aMCV, aMapChains); -} -//======================================================================= -// function: FindChains -// purpose : -//======================================================================= - void NMTTools_Tools::FindChains(const NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& aMCV, - NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& aMapChains) -{ - Standard_Integer i, j, aNbCV, aNbV; - TopTools_IndexedMapOfShape aProcessed, aChain; - // - aNbCV=aMCV.Extent(); - for (i=1; i<=aNbCV; ++i) { - const TopoDS_Shape& aF=aMCV.FindKey(i); - if (aProcessed.Contains(aF)) { - continue; - } - // - aProcessed.Add(aF); - aChain.Add(aF); - // - const TopTools_IndexedMapOfShape& aMV=aMCV(i); - aNbV=aMV.Extent(); - for (j=1; j<=aNbV; ++j) { - const TopoDS_Shape& aFx=aMV(j); - ProcessBlock(aFx, aMCV, aProcessed, aChain); - } - aMapChains.Add(aF, aChain); - aChain.Clear(); - } -} -//======================================================================= -// function: ProcessBlock -// purpose: -//======================================================================= -void ProcessBlock(const TopoDS_Shape& aF, - const NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& aMCV, - TopTools_IndexedMapOfShape& aProcessed, - TopTools_IndexedMapOfShape& aChain) -{ - Standard_Integer j, aNbV; - // - if (aProcessed.Contains(aF)) { - return; - } - aProcessed.Add(aF); - aChain.Add(aF); - // - const TopTools_IndexedMapOfShape& aMV=aMCV.FindFromKey(aF); - aNbV=aMV.Extent(); - for (j=1; j<=aNbV; ++j) { - const TopoDS_Shape& aFx=aMV(j); - ProcessBlock(aFx, aMCV, aProcessed, aChain); - } -} diff --git a/src/NMTTools/NMTTools_Tools.hxx b/src/NMTTools/NMTTools_Tools.hxx deleted file mode 100644 index 73236fe90..000000000 --- a/src/NMTTools/NMTTools_Tools.hxx +++ /dev/null @@ -1,109 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. - -#ifndef _NMTTools_Tools_HeaderFile -#define _NMTTools_Tools_HeaderFile - -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -#ifndef _Handle_Geom2d_Curve_HeaderFile -#include -#endif -#ifndef _Standard_Real_HeaderFile -#include -#endif -class TopTools_ListOfShape; -class TopoDS_Vertex; -class BOPTools_CArray1OfVVInterference; -class BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger; -class BOPTools_CArray1OfSSInterference; -class TopoDS_Edge; -class TopoDS_Face; -class IntTools_Context; -class NMTTools_ListOfCoupleOfShape; -class NMTTools_IndexedDataMapOfShapeIndexedMapOfShape; -class Geom2d_Curve; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class NMTTools_Tools { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT static void MakeNewVertex(const TopTools_ListOfShape& aLV,TopoDS_Vertex& aNewVertex) ; -Standard_EXPORT static void FindChains(const BOPTools_CArray1OfVVInterference& aVVs,BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMCX) ; -Standard_EXPORT static void FindChains(const BOPTools_CArray1OfSSInterference& aVVs,BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMCX) ; -Standard_EXPORT static void FindChains(const BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMCV,BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMCX) ; -Standard_EXPORT static Standard_Boolean IsSplitInOnFace(const TopoDS_Edge& aE,const TopoDS_Face& aF,IntTools_Context& aCtx) ; -Standard_EXPORT static Standard_Boolean AreFacesSameDomain(const TopoDS_Face& aF1,const TopoDS_Face& aF2,IntTools_Context& aCtx) ; -Standard_EXPORT static void FindChains(const NMTTools_ListOfCoupleOfShape& aLCS,NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& aM) ; -Standard_EXPORT static void FindChains(const NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& aM1,NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& aM2) ; -Standard_EXPORT static void MakePCurve(const TopoDS_Edge& aE,const TopoDS_Face& aF,const Handle(Geom2d_Curve)& aC2D,const Standard_Real aTolR2D) ; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTTools/NMTTools_Tools.ixx b/src/NMTTools/NMTTools_Tools.ixx deleted file mode 100644 index 80f2f41e7..000000000 --- a/src/NMTTools/NMTTools_Tools.ixx +++ /dev/null @@ -1,19 +0,0 @@ -// File generated by CPPExt (Value) -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. -// -#include - - - - diff --git a/src/NMTTools/NMTTools_Tools.jxx b/src/NMTTools/NMTTools_Tools.jxx deleted file mode 100644 index 13f814d4e..000000000 --- a/src/NMTTools/NMTTools_Tools.jxx +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _TopoDS_Vertex_HeaderFile -#include -#endif -#ifndef _BOPTools_CArray1OfVVInterference_HeaderFile -#include -#endif -#ifndef _BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger_HeaderFile -#include -#endif -#ifndef _BOPTools_CArray1OfSSInterference_HeaderFile -#include -#endif -#ifndef _TopoDS_Edge_HeaderFile -#include -#endif -#ifndef _TopoDS_Face_HeaderFile -#include -#endif -#ifndef _IntTools_Context_HeaderFile -#include -#endif -#ifndef _NMTTools_ListOfCoupleOfShape_HeaderFile -#include -#endif -#ifndef _NMTTools_IndexedDataMapOfShapeIndexedMapOfShape_HeaderFile -#include -#endif -#ifndef _Geom2d_Curve_HeaderFile -#include -#endif -#ifndef _NMTTools_Tools_HeaderFile -#include -#endif diff --git a/src/OBJECT/GEOM_AISShape.cxx b/src/OBJECT/GEOM_AISShape.cxx deleted file mode 100644 index eb2b741d9..000000000 --- a/src/OBJECT/GEOM_AISShape.cxx +++ /dev/null @@ -1,254 +0,0 @@ -// GEOM OBJECT : interactive object for Geometry entities visualization -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOM_AISShape.cxx -// Author : Nicolas REJNERI -// Module : GEOM -// $Header$ - -/*! - \class GEOM_AISShape GEOM_AISShape.hxx - \brief .... -*/ - -#include "GEOM_AISShape.ixx" -#include "SALOME_InteractiveObject.hxx" - -#include "utilities.h" - -// Open CASCADE Includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace std; - -static void getEntityOwners( const Handle(AIS_InteractiveObject)& theObj, - const Handle(AIS_InteractiveContext)& theIC, - SelectMgr_IndexedMapOfOwner& theMap ) -{ - if ( theObj.IsNull() || theIC.IsNull() ) - return; - - TColStd_ListOfInteger modes; - theIC->ActivatedModes( theObj, modes ); - - TColStd_ListIteratorOfListOfInteger itr( modes ); - for (; itr.More(); itr.Next() ) { - int m = itr.Value(); - if ( !theObj->HasSelection( m ) ) - continue; - - Handle(SelectMgr_Selection) sel = theObj->Selection( m ); - - for ( sel->Init(); sel->More(); sel->Next() ) { - Handle(SelectBasics_SensitiveEntity) entity = sel->Sensitive(); - if ( entity.IsNull() ) - continue; - - Handle(SelectMgr_EntityOwner) owner = - Handle(SelectMgr_EntityOwner)::DownCast(entity->OwnerId()); - if ( !owner.IsNull() ) - theMap.Add( owner ); - } - } -} - -static void indicesToOwners( const TColStd_IndexedMapOfInteger& aIndexMap, - const TopoDS_Shape& aMainShape, - const SelectMgr_IndexedMapOfOwner& anAllMap, - SelectMgr_IndexedMapOfOwner& aToHiliteMap ) -{ - TopTools_IndexedMapOfShape aMapOfShapes; - TopExp::MapShapes(aMainShape, aMapOfShapes); - - for ( Standard_Integer i = 1, n = anAllMap.Extent(); i <= n; i++ ) { - Handle(SelectMgr_EntityOwner) anOwner = anAllMap( i ); - if ( anOwner.IsNull() || !anOwner->HasShape() ) - continue; - - const TopoDS_Shape& aSubShape = anOwner->Shape(); - Standard_Integer aSubShapeId = aMapOfShapes.FindIndex( aSubShape ); - if ( !aSubShapeId || !aIndexMap.Contains( aSubShapeId ) ) - continue; - - if ( !aToHiliteMap.Contains( anOwner ) ) - aToHiliteMap.Add( anOwner ); - } -} - -GEOM_AISShape::GEOM_AISShape(const TopoDS_Shape& shape, - const Standard_CString aName): SALOME_AISShape(shape) -{ - myName = new char [strlen(aName)+1]; - strcpy( myName, aName); - - myShadingColor = Quantity_Color( Quantity_NOC_GOLDENROD ); -} - -void GEOM_AISShape::setIO(const Handle(SALOME_InteractiveObject)& io){ - SetOwner( io ); -} - -Handle(SALOME_InteractiveObject) GEOM_AISShape::getIO(){ - Handle(SALOME_InteractiveObject) IO; - if ( !GetOwner().IsNull() ) - IO = Handle(SALOME_InteractiveObject)::DownCast( GetOwner() ); - return IO; -} - -Standard_Boolean GEOM_AISShape::hasIO(){ - return !getIO().IsNull(); -} - -void GEOM_AISShape::setName(const Standard_CString aName) -{ - myName = new char [strlen(aName)+1]; - strcpy( myName, aName); - - Handle(SALOME_InteractiveObject) IO = getIO(); - if ( !IO.IsNull() ) - IO->setName(aName); -} - -Standard_CString GEOM_AISShape::getName(){ - return myName; -} - -void GEOM_AISShape::Compute(const Handle(PrsMgr_PresentationManager3d)& aPresentationManager, - const Handle(Prs3d_Presentation)& aPrs, - const Standard_Integer aMode) -{ - if (IsInfinite()) aPrs->SetInfiniteState(Standard_True); //pas de prise en compte lors du FITALL - - StdSelect_DisplayMode d = (StdSelect_DisplayMode) aMode; - - switch (d) { - case StdSelect_DM_Wireframe: - { - StdPrs_WFShape::Add(aPrs,myshape,myDrawer); - break; - } - case StdSelect_DM_Shading: - { - myDrawer->ShadingAspect()->Aspect()->SetDistinguishOn(); - - Graphic3d_MaterialAspect aMatAspect; - aMatAspect.SetAmbient( 0.5 ); - aMatAspect.SetDiffuse( 0.5 ); - aMatAspect.SetEmissive( 0.5 ); - aMatAspect.SetShininess(0.5 ); - aMatAspect.SetSpecular( 0.5 ); - - myDrawer->ShadingAspect()->Aspect()->SetFrontMaterial(aMatAspect); - myDrawer->ShadingAspect()->Aspect()->SetBackMaterial(Graphic3d_NOM_JADE); - - Graphic3d_MaterialAspect FMat = myDrawer->ShadingAspect()->Aspect()->FrontMaterial(); - Graphic3d_MaterialAspect BMat = myDrawer->ShadingAspect()->Aspect()->BackMaterial(); - FMat.SetTransparency(myTransparency); BMat.SetTransparency(myTransparency); - myDrawer->ShadingAspect()->Aspect()->SetFrontMaterial(FMat); - myDrawer->ShadingAspect()->Aspect()->SetBackMaterial(BMat); - - //Handle(Graphic3d_AspectFillArea3d) a4bis = myDrawer->ShadingAspect()->Aspect(); - // P->SetPrimitivesAspect(a4bis); - // G->SetGroupPrimitivesAspect(a4bis); - //a4bis->SetInteriorColor(myShadingColor); - myDrawer->ShadingAspect()->SetColor(myShadingColor); - - StdPrs_ShadedShape::Add(aPrs,myshape,myDrawer); - break; - } - } - // aPrs->ReCompute(); // for hidden line recomputation if necessary... -} - -void GEOM_AISShape::SetTransparency(const Standard_Real aValue) -{ - if(aValue<0.0 || aValue>1.0) return; - - if(aValue<=0.05) - { - UnsetTransparency(); - return; - } - - Graphic3d_MaterialAspect FMat = myDrawer->ShadingAspect()->Aspect()->FrontMaterial(); - Graphic3d_MaterialAspect BMat = myDrawer->ShadingAspect()->Aspect()->BackMaterial(); - FMat.SetTransparency(aValue); BMat.SetTransparency(aValue); - myDrawer->ShadingAspect()->Aspect()->SetFrontMaterial(FMat); - myDrawer->ShadingAspect()->Aspect()->SetBackMaterial(BMat); - myTransparency = aValue; -} - -void GEOM_AISShape::SetShadingColor(const Quantity_Color &aCol) -{ - myShadingColor = aCol; -} - -void GEOM_AISShape::highlightSubShapes(const TColStd_IndexedMapOfInteger& aIndexMap, - const Standard_Boolean aHighlight ) -{ - Handle(AIS_InteractiveObject) anObj = this; - Handle(AIS_InteractiveContext) anIC = GetContext(); - if ( anIC.IsNull() || !anIC->HasOpenedContext() ) - return; - - Standard_Boolean isAutoHilight = anIC->AutomaticHilight(); - anIC->SetAutomaticHilight( false ); - - anIC->ClearSelected( false ); - - if ( aHighlight ) { - SelectMgr_IndexedMapOfOwner anAllMap, aToHiliteMap; - - // Get entity owners for all activated selection modes - getEntityOwners( anObj, anIC, anAllMap ); - - // Convert into the map of owners to highlight/unhighlight - indicesToOwners( aIndexMap, Shape(), anAllMap, aToHiliteMap ); - - - for ( Standard_Integer i = 1, n = aToHiliteMap.Extent(); i <= n; i++ ) - anIC->AddOrRemoveSelected( aToHiliteMap( i ), false ); - } - - anIC->SetAutomaticHilight( isAutoHilight ); - anIC->HilightSelected( false ); -} diff --git a/src/OBJECT/GEOM_AISShape.hxx b/src/OBJECT/GEOM_AISShape.hxx deleted file mode 100644 index 96ae886ba..000000000 --- a/src/OBJECT/GEOM_AISShape.hxx +++ /dev/null @@ -1,140 +0,0 @@ -// GEOM OBJECT : interactive object for Geometry entities visualization -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOM_AISShape.hxx -// Module : GEOM - -#ifndef _GEOM_AISShape_HeaderFile -#define _GEOM_AISShape_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_GEOM_AISShape_HeaderFile -#include "Handle_GEOM_AISShape.hxx" -#endif - -#ifndef _Handle_SALOME_InteractiveObject_HeaderFile -#include "Handle_SALOME_InteractiveObject.hxx" -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif -#ifndef _SALOME_AISShape_HeaderFile -#include "SALOME_AISShape.hxx" -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -#ifndef _Handle_PrsMgr_PresentationManager3d_HeaderFile -#include -#endif -#ifndef _Handle_Prs3d_Presentation_HeaderFile -#include -#endif - -class PrsMgr_PresentationManager3d; -class Prs3d_Presentation; -class SALOME_InteractiveObject; -class TopoDS_Shape; - -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define OBJECT_WNT_EXPORT __declspec( dllexport ) -#else -#define OBJECT_WNT_EXPORT -#endif -class OBJECT_WNT_EXPORT GEOM_AISShape : public SALOME_AISShape { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } -// inline void operator delete(void *anAddress, size_t size) -// { -// if (anAddress) Standard::Free((Standard_Address&)anAddress,size); -// } - // Methods PUBLIC - // - GEOM_AISShape(const TopoDS_Shape& shape, const Standard_CString aName); - Standard_Boolean hasIO() ; - void setIO(const Handle(SALOME_InteractiveObject)& name) ; - void setName(const Standard_CString aName) ; - Standard_CString getName() ; - Handle_SALOME_InteractiveObject getIO() ; - void highlightSubShapes(const TColStd_IndexedMapOfInteger& aIndexMap, const Standard_Boolean aHighlight ); - ~GEOM_AISShape(); - - void SetTransparency(const Standard_Real aValue); - void SetShadingColor(const Quantity_Color &aCol); - - virtual void Compute(const Handle(PrsMgr_PresentationManager3d)& aPresentationManager, - const Handle(Prs3d_Presentation)& aPresentation, - const Standard_Integer aMode = 0) ; - - // Type management - // - friend Handle_Standard_Type& GEOM_AISShape_Type_(); - const Handle(Standard_Type)& DynamicType() const; - Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - Standard_CString myName; - Quantity_Color myShadingColor; -}; - - - - - -// other inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/OBJECT/GEOM_AISShape.ixx b/src/OBJECT/GEOM_AISShape.ixx deleted file mode 100644 index 7baed81b7..000000000 --- a/src/OBJECT/GEOM_AISShape.ixx +++ /dev/null @@ -1,91 +0,0 @@ -// GEOM OBJECT : interactive object for Geometry entities visualization -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOM_AISShape.ixx -// Module : GEOM - -#include "GEOM_AISShape.jxx" - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -GEOM_AISShape::~GEOM_AISShape() {} - - - -Standard_EXPORT Handle_Standard_Type& GEOM_AISShape_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(SALOME_AISShape); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(SALOME_AISShape); - static Handle_Standard_Type aType2 = STANDARD_TYPE(AIS_Shape); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(AIS_Shape); - static Handle_Standard_Type aType3 = STANDARD_TYPE(AIS_InteractiveObject); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(AIS_InteractiveObject); - static Handle_Standard_Type aType4 = STANDARD_TYPE(SelectMgr_SelectableObject); - if ( aType4.IsNull()) aType4 = STANDARD_TYPE(SelectMgr_SelectableObject); - static Handle_Standard_Type aType5 = STANDARD_TYPE(PrsMgr_PresentableObject); - if ( aType5.IsNull()) aType5 = STANDARD_TYPE(PrsMgr_PresentableObject); - static Handle_Standard_Type aType6 = STANDARD_TYPE(MMgt_TShared); - if ( aType6.IsNull()) aType6 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType7 = STANDARD_TYPE(Standard_Transient); - if ( aType7.IsNull()) aType7 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,aType4,aType5,aType6,aType7,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOM_AISShape", - sizeof(GEOM_AISShape), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(GEOM_AISShape) Handle(GEOM_AISShape)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOM_AISShape) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOM_AISShape))) { - _anOtherObject = Handle(GEOM_AISShape)((Handle(GEOM_AISShape)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& GEOM_AISShape::DynamicType() const -{ - return STANDARD_TYPE(GEOM_AISShape) ; -} -Standard_Boolean GEOM_AISShape::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(GEOM_AISShape) == AType || SALOME_AISShape::IsKind(AType)); -} -Handle_GEOM_AISShape::~Handle_GEOM_AISShape() {} - diff --git a/src/OBJECT/GEOM_AISShape.jxx b/src/OBJECT/GEOM_AISShape.jxx deleted file mode 100644 index 8f66299fd..000000000 --- a/src/OBJECT/GEOM_AISShape.jxx +++ /dev/null @@ -1,41 +0,0 @@ -// GEOM OBJECT : interactive object for Geometry entities visualization -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOM_AISShape.jxx -// Module : GEOM - -#ifndef _GEOM_InteractiveObject_HeaderFile -#include "GEOM_InteractiveObject.hxx" -#endif -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _GEOM_AISShape_HeaderFile -#include "GEOM_AISShape.hxx" -#endif -#ifndef _PrsMgr_PresentationManager3d_HeaderFile -#include -#endif -#ifndef _Prs3d_Presentation_HeaderFile -#include -#endif \ No newline at end of file diff --git a/src/OBJECT/GEOM_AISTrihedron.cxx b/src/OBJECT/GEOM_AISTrihedron.cxx deleted file mode 100755 index 5ca66f7fa..000000000 --- a/src/OBJECT/GEOM_AISTrihedron.cxx +++ /dev/null @@ -1,72 +0,0 @@ -// GEOM_AISTrihedron : Filter for VTK viewer -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOM_AISTrihedron.cxx -// Author : Sergey LITONIN -// Module : SALOME - -#include "GEOM_AISTrihedron.hxx" -#include - -IMPLEMENT_STANDARD_HANDLE(GEOM_AISTrihedron, AIS_Trihedron) -IMPLEMENT_STANDARD_RTTIEXT(GEOM_AISTrihedron, AIS_Trihedron) - -/* - Class : GEOM_AISTrihedron - Description : Interactive object for displaying local CS -*/ - -GEOM_AISTrihedron::GEOM_AISTrihedron( const Handle(Geom_Axis2Placement)& thePlc ) -: AIS_Trihedron( thePlc ) -{ - -} -Handle(SALOME_InteractiveObject) GEOM_AISTrihedron::getIO() -{ - return myObject; -} -Standard_Boolean GEOM_AISTrihedron::hasIO() -{ - return !myObject.IsNull(); -} - -Standard_CString GEOM_AISTrihedron::getName() -{ - return myName.ToCString(); -} -void GEOM_AISTrihedron::setName( Standard_CString aName ) -{ - myName = TCollection_AsciiString( aName ); -} - -void GEOM_AISTrihedron::setIO( const Handle(SALOME_InteractiveObject)& theIO ) -{ - myObject = theIO; -} - - - - - - - \ No newline at end of file diff --git a/src/OBJECT/GEOM_AISTrihedron.hxx b/src/OBJECT/GEOM_AISTrihedron.hxx deleted file mode 100755 index bd38a7067..000000000 --- a/src/OBJECT/GEOM_AISTrihedron.hxx +++ /dev/null @@ -1,81 +0,0 @@ -// GEOM_AISTrihedron : Filter for VTK viewer -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOM_AISTrihedron.hxx -// Author : Sergey LITONIN -// Module : SALOME - -#ifndef GEOM_AISTrihedron_HeaderFile -#define GEOM_AISTrihedron_HeaderFile - -#include - -#include -#include -#include - -class Handle(Geom_Axis2Placement); - -DEFINE_STANDARD_HANDLE(GEOM_AISTrihedron, AIS_Trihedron) - -/* - Class : GEOM_AISTrihedron - Description : Interactive object for displaying local CS -*/ - -class GEOM_AISTrihedron : public AIS_Trihedron -{ -public: - - Standard_EXPORT GEOM_AISTrihedron( const Handle(Geom_Axis2Placement)& ); - - Standard_EXPORT Handle(SALOME_InteractiveObject) getIO(); - Standard_EXPORT void setIO( const Handle(SALOME_InteractiveObject)& ); - Standard_EXPORT Standard_Boolean hasIO(); - Standard_EXPORT Standard_CString getName(); - Standard_EXPORT void setName( Standard_CString aName ); - -private: - - TCollection_AsciiString myName; - Handle(SALOME_InteractiveObject) myObject; - -public: - DEFINE_STANDARD_RTTI(GEOM_AISTrihedron) -}; - -#endif - - - - - - - - - - - - - - diff --git a/src/OBJECT/GEOM_Actor.cxx b/src/OBJECT/GEOM_Actor.cxx deleted file mode 100644 index e16b174ba..000000000 --- a/src/OBJECT/GEOM_Actor.cxx +++ /dev/null @@ -1,475 +0,0 @@ -// GEOM OBJECT : interactive object for Geometry entities visualization -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOM_Actor.cxx -// Author : Christophe ATTANASIO -// Module : GEOM -// $Header$ - -/*! - \class GEOM_Actor GEOM_Actor.h - \brief This class allows to display an OpenCASCADE CAD model in a VTK viewer. -*/ - -#include "GEOM_Actor.h" - -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - -// OpenCASCADE Includes -#include "GEOM_OCCReader.h" -#include - -using namespace std; - -//------------------------------------------------------------- -// Main methods -//------------------------------------------------------------- - - -GEOM_Actor* GEOM_Actor::New() -{ - // First try to create the object from the vtkObjectFactory - vtkObject* ret = vtkObjectFactory::CreateInstance("GEOM_Actor"); - if(ret) - { - return (GEOM_Actor*)ret; - } - // If the factory was unable to create the object, then create it here. - return new GEOM_Actor; -} - - -GEOM_Actor::GEOM_Actor() -{ - this->Device = vtkActor::New(); - - this->WireframeMapper = NULL; - this->ShadingMapper = NULL; - - this->ShadingProperty = NULL; - this->WireframeProperty = NULL; - - this->deflection = 0; - myDisplayMode = 0; - - this->myIO = NULL; - this->myName = ""; - - this->HighlightProperty = NULL; - this->myIsHighlighted = false; - - this->subshape = false; - this->myIsInfinite = false; -} - -GEOM_Actor::~GEOM_Actor() -{ - if (WireframeMapper != NULL) - WireframeMapper->Delete(); - if (ShadingMapper != NULL) - ShadingMapper->Delete(); - if (ShadingProperty != NULL) - ShadingProperty->Delete(); - if (WireframeProperty != NULL) - WireframeProperty->Delete(); - if (HighlightProperty != NULL) - HighlightProperty->Delete(); -} - - -void GEOM_Actor::ShallowCopy(vtkProp *prop) -{ - GEOM_Actor *f = GEOM_Actor::SafeDownCast(prop); - if ( f != NULL ) - { - this->setInputShape(f->getTopo(),f->getDeflection(),f->getDisplayMode()); - this->setName( f->getName() ); - if ( f->hasIO() ) - this->setIO( f->getIO() ); - this->ShadingMapper = NULL; - this->WireframeMapper = NULL; - } else { - this->myIO = NULL; - this->myName = ""; - this->ShadingMapper = NULL; - this->WireframeMapper = NULL; - } - - // Now do superclass - this->SALOME_Actor::ShallowCopy(prop); -} - -//------------------------------------------------------------- -// Set parameters -//------------------------------------------------------------- - - -void GEOM_Actor::setDisplayMode(int thenewmode) { - myDisplayMode = thenewmode; - if ( thenewmode >=1 ) { - if ((myShape.ShapeType() == TopAbs_WIRE) || - (myShape.ShapeType() == TopAbs_EDGE) || - (myShape.ShapeType() == TopAbs_VERTEX)) { - if ( !subshape ) - CreateWireframeMapper(); - else - return; - } else - CreateShadingMapper(); - } else - CreateWireframeMapper(); -} - -void GEOM_Actor::setDeflection(double adef) { - deflection = adef; -} - -void GEOM_Actor::setInputShape(const TopoDS_Shape& aShape,double adef,int imode) { - myShape = aShape; - deflection = adef; - setDisplayMode(imode); -} - -//------------------------------------------------------------- -// Get parameters -//------------------------------------------------------------- - -const TopoDS_Shape& GEOM_Actor::getTopo() { - return myShape; -} - -double GEOM_Actor::getDeflection() { - return deflection; -} - -void GEOM_Actor::SetWireframeProperty(vtkProperty* Prop) { - this->WireframeProperty = Prop; -} - -void GEOM_Actor::SetShadingProperty(vtkProperty* Prop) { - this->ShadingProperty = Prop; -} - - -//------------------------------------------------------------- -// Mapper creating function -//------------------------------------------------------------- -void GEOM_Actor::CreateMapper(int theMode) { - this->myIsInfinite = (bool)myShape.Infinite(); - if(myShape.ShapeType() == TopAbs_VERTEX) { - gp_Pnt aPnt = BRep_Tool::Pnt(TopoDS::Vertex(myShape)); - this->SetPosition(aPnt.X(),aPnt.Y(),aPnt.Z()); - } - GEOM_OCCReader* aread = GEOM_OCCReader::New(); - aread->setTopo(myShape); - aread->setDisplayMode(theMode); - aread->GetOutput()->ReleaseDataFlagOn(); - - vtkPolyDataMapper* aMapper = vtkPolyDataMapper::New(); - if (theMode == 0) { - aMapper->SetInput(aread->GetOutput()); - } else { - vtkPolyDataNormals *normals = vtkPolyDataNormals::New(); - normals->SetInput(aread->GetOutput()); - aMapper->SetInput(normals->GetOutput()); - } - aread->Delete(); - this->SetMapper(theMode == 0? WireframeMapper = aMapper : ShadingMapper = aMapper); -} - -void GEOM_Actor::CreateShadingMapper() { - CreateMapper(1); -} - - -void GEOM_Actor::CreateWireframeMapper() { - CreateMapper(0); -} - -//------------------------------------------------------------- -// Render function -//------------------------------------------------------------- - -void GEOM_Actor::Render(vtkRenderer *ren, vtkMapper *Mapper) -{ - /* render the property */ - if (!this->Property) { - // force creation of a property - this->GetProperty(); - this->Property->SetInterpolation(1); - this->Property->SetRepresentationToSurface(); - this->Property->SetAmbient(0.3); - this->Property->SetAmbientColor(0.88,0.86,0.2); - this->Property->SetDiffuseColor(0.99,0.7,0.21); - this->Property->SetSpecularColor(0.99,0.98,0.83); - } - - if(!myIsHighlighted) { - if ( myIsPreselected ) - this->Property = PreviewProperty; - else if(myDisplayMode >= 1) { - // SHADING - this->Property = ShadingProperty; - } - else { - this->Property = WireframeProperty; - } - - } - - this->Property->Render(this, ren); - if (this->BackfaceProperty) { - this->BackfaceProperty->BackfaceRender(this, ren); - this->Device->SetBackfaceProperty(this->BackfaceProperty); - } - this->Device->SetProperty(this->Property); - // Store information on time it takes to render. - // We might want to estimate time from the number of polygons in mapper. - if(myDisplayMode >= 1) { - if((myShape.ShapeType() == TopAbs_WIRE) || - (myShape.ShapeType() == TopAbs_EDGE) || - (myShape.ShapeType() == TopAbs_VERTEX)) { - if ( !subshape ) { - if(WireframeMapper==NULL) CreateWireframeMapper(); - } else - return; - } - else { - if(ShadingMapper==NULL) CreateShadingMapper(); - } - } - else { - if(WireframeMapper==NULL) CreateWireframeMapper(); - } - if(myShape.ShapeType() == TopAbs_VERTEX) { - if(ren){ - //The parameter determine size of vertex actor relate to diagonal of RendererWindow - static float delta = 0.01; - float X1 = -1, Y1 = -1, Z1 = 0; - ren->ViewToWorld(X1,Y1,Z1); - float X2 = +1, Y2 = +1, Z2 = 0; - ren->ViewToWorld(X2,Y2,Z2); - Z2 = sqrt((X2-X1)*(X2-X1) + (Y2-Y1)*(Y2-Y1) + (Z2-Z1)*(Z2-Z1)); - this->SetScale(Z2*delta); - } - vtkMatrix4x4 *aMatrix = vtkMatrix4x4::New(); - this->GetMatrix(ren->GetActiveCamera(), aMatrix); - this->Device->SetUserMatrix(aMatrix); - this->Device->Render(ren,this->Mapper); - aMatrix->Delete(); - } else - this->Device->Render(ren, this->Mapper); - if(WireframeMapper!=NULL) this->EstimatedRenderTime = WireframeMapper->GetTimeToDraw(); - else if(ShadingMapper!=NULL) this->EstimatedRenderTime = ShadingMapper->GetTimeToDraw(); -} - -// SubShape -void GEOM_Actor::SubShapeOn() -{ - subshape = true; -} -void GEOM_Actor::SubShapeOff() -{ - subshape = false; -} - -//------------------------------------------------------------- -// Opacity methods -//------------------------------------------------------------- - -void GEOM_Actor::SetOpacity(float opa) -{ - //HighlightProperty->SetOpacity(opa); - SALOME_Actor::SetOpacity(opa); - ShadingProperty->SetOpacity(opa); -} - -float GEOM_Actor::GetOpacity() { - return ShadingProperty->GetOpacity(); -} - -//------------------------------------------------------------- -// Color methods -//------------------------------------------------------------- -void GEOM_Actor::SetColor(float r,float g,float b) { - ShadingProperty->SetColor(r,g,b); -} - -void GEOM_Actor::GetColor(float& r,float& g,float& b) { - float color[3]; - ShadingProperty->GetColor(color); - r = color[0]; - g = color[1]; - b = color[2]; -} - -//------------------------------------------------------------- -// Highlight methods -//------------------------------------------------------------- - -void GEOM_Actor::highlight(bool highlight) { - - if(highlight && !myIsHighlighted) { - myIsHighlighted=true; - // build highlight property is necessary - if(HighlightProperty==NULL) { - HighlightProperty = vtkProperty::New(); - HighlightProperty->SetAmbient(0.5); - HighlightProperty->SetDiffuse(0.3); - HighlightProperty->SetSpecular(0.2); - HighlightProperty->SetRepresentationToSurface(); - HighlightProperty->SetAmbientColor(1, 1, 1); - HighlightProperty->SetDiffuseColor(1, 1, 1); - HighlightProperty->SetSpecularColor(0.5, 0.5, 0.5); - } - - this->Property = HighlightProperty; - - } - else if (!highlight) { - if(myIsHighlighted) { - myIsHighlighted=false; - if(myDisplayMode==1) { - //unhilight in shading - this->Property = ShadingProperty; - } - else { - //unhilight in wireframe - this->Property = WireframeProperty; - } - } - } -} - -void GEOM_Actor::SetHighlightProperty(vtkProperty* Prop) { - this->HighlightProperty = Prop; -} - - -void GEOM_Actor::ReleaseGraphicsResources(vtkWindow *renWin) -{ - vtkActor::ReleaseGraphicsResources(renWin); - - // broadcast the message down to the individual LOD mappers - - if(WireframeMapper) this->WireframeMapper->ReleaseGraphicsResources(renWin); - if(ShadingMapper) this->ShadingMapper->ReleaseGraphicsResources(renWin); -} - - -// Copy the follower's composite 4x4 matrix into the matrix provided. -void GEOM_Actor::GetMatrix(vtkCamera* theCam, vtkMatrix4x4 *result) -{ - double *pos, *vup; - double Rx[3], Ry[3], Rz[3], p1[3]; - vtkMatrix4x4 *matrix = vtkMatrix4x4::New(); - int i; - double distance; - - this->GetOrientation(); - this->Transform->Push(); - this->Transform->PostMultiply(); - this->Transform->Identity(); - - // apply user defined matrix last if there is one - if (this->UserMatrix) - { - this->Transform->Concatenate(this->UserMatrix); - } - - this->Transform->Translate(-this->Origin[0], - -this->Origin[1], - -this->Origin[2]); - // scale - this->Transform->Scale(this->Scale[0], - this->Scale[1], - this->Scale[2]); - - // rotate - this->Transform->RotateY(this->Orientation[1]); - this->Transform->RotateX(this->Orientation[0]); - this->Transform->RotateZ(this->Orientation[2]); - - if (theCam) - { - // do the rotation - // first rotate y - pos = theCam->GetPosition(); - vup = theCam->GetViewUp(); - - if (theCam->GetParallelProjection()) - { - theCam->GetDirectionOfProjection(Rz); - } - else - { - distance = sqrt( - (pos[0] - this->Position[0])*(pos[0] - this->Position[0]) + - (pos[1] - this->Position[1])*(pos[1] - this->Position[1]) + - (pos[2] - this->Position[2])*(pos[2] - this->Position[2])); - for (i = 0; i < 3; i++) - { - Rz[i] = (pos[i] - this->Position[i])/distance; - } - } - - vtkMath::Cross(vup,Rz,Rx); - vtkMath::Normalize(Rx); - vtkMath::Cross(Rz,Rx,Ry); - - matrix->Element[0][0] = Rx[0]; - matrix->Element[1][0] = Rx[1]; - matrix->Element[2][0] = Rx[2]; - matrix->Element[0][1] = Ry[0]; - matrix->Element[1][1] = Ry[1]; - matrix->Element[2][1] = Ry[2]; - matrix->Element[0][2] = Rz[0]; - matrix->Element[1][2] = Rz[1]; - matrix->Element[2][2] = Rz[2]; - - this->Transform->Concatenate(matrix); - } - - // translate to projection reference point PRP - // this is the camera's position blasted through - // the current matrix - p1[0] = this->Origin[0] + this->Position[0]; - p1[1] = this->Origin[1] + this->Position[1]; - p1[2] = this->Origin[2] + this->Position[2]; - - this->Transform->Translate(p1[0],p1[1],p1[2]); - this->Transform->GetMatrix(result); - - matrix->Delete(); - this->Transform->Pop(); -} diff --git a/src/OBJECT/GEOM_Actor.h b/src/OBJECT/GEOM_Actor.h deleted file mode 100644 index 7229b9e2b..000000000 --- a/src/OBJECT/GEOM_Actor.h +++ /dev/null @@ -1,128 +0,0 @@ -// GEOM OBJECT : interactive object for Geometry entities visualization -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOM_Actor.h -// Author : Christophe ATTANASIO -// Module : GEOM -// $Header$ - -#ifndef GEOM_ACTOR_H -#define GEOM_ACTOR_H - -#include "SALOME_Actor.h" - -//OpenCASCADE -#include -#include - -class vtkCamera; -class TopoDS_Shape; - -#ifdef WNT -#include -#else -#define SALOME_WNT_EXPORT -#endif - -class SALOME_WNT_EXPORT GEOM_Actor : public SALOME_Actor { - public: - vtkTypeMacro(GEOM_Actor,SALOME_Actor); - - static GEOM_Actor* New(); - - // Description: - // This causes the actor to be rendered. It, in turn, will render the actor's - // property and then mapper. - virtual void Render(vtkRenderer *, vtkMapper *); - - // Description: - // Release any graphics resources that are being consumed by this actor. - // The parameter window could be used to determine which graphic - // resources to release. - void ReleaseGraphicsResources(vtkWindow *); - - const TopoDS_Shape& getTopo(); - void setInputShape(const TopoDS_Shape& ashape,double adef1,int imode); - - double getDeflection(); - void setDeflection(double adefl); - - // SubShape - void SubShapeOn(); - void SubShapeOff(); - - // Display Mode - virtual void setDisplayMode(int); - - // Highlight - virtual void highlight(bool theHighlight); - virtual bool hasHighlight() { return true; } - - void ShallowCopy(vtkProp *prop); - - // Properties - void SetHighlightProperty(vtkProperty* Prop); - void SetWireframeProperty(vtkProperty* Prop); - void SetShadingProperty(vtkProperty* Prop); - - // Opacity - void SetOpacity(float opa); - float GetOpacity(); - - // Color - void SetColor(float r,float g,float b); - void GetColor(float& r,float& g,float& b); - - virtual bool IsInfinite() {return myIsInfinite;} - protected: - - GEOM_Actor(); - ~GEOM_Actor(); - GEOM_Actor(const GEOM_Actor&) {}; - void operator=(const GEOM_Actor&) {}; - - void CreateWireframeMapper(); - void CreateShadingMapper(); - void CreateMapper(int theMode); - void GetMatrix(vtkCamera* theCam, vtkMatrix4x4 *result); - - - private: - - bool subshape; - bool myIsInfinite; - - TopoDS_Shape myShape; - double deflection; - - vtkMapper* ShadingMapper; - vtkMapper* WireframeMapper; - - vtkProperty* ShadingProperty; - vtkProperty* WireframeProperty; - vtkProperty* HighlightProperty; -}; - - -#endif //GEOM_ACTOR_H - diff --git a/src/OBJECT/GEOM_AssemblyBuilder.cxx b/src/OBJECT/GEOM_AssemblyBuilder.cxx deleted file mode 100644 index a44aa7dbf..000000000 --- a/src/OBJECT/GEOM_AssemblyBuilder.cxx +++ /dev/null @@ -1,421 +0,0 @@ -// GEOM OBJECT : interactive object for Geometry entities visualization -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOM_AssemblyBuilder.cxx -// Author : Christophe ATTANASIO -// Module : GEOM -// $Header$ - -/*! - \class GEOM_AssemblyBuilder GEOM_AssemblyBuilder.h - \brief .... -*/ - -#include "GEOM_AssemblyBuilder.h" -#include "GEOM_Actor.h" -#include "utilities.h" - -// Open CASCADE Includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace std; -// SALOME - -#define MAX2(X, Y) ( Abs(X) > Abs(Y)? Abs(X) : Abs(Y) ) -#define MAX3(X, Y, Z) ( MAX2 ( MAX2(X,Y) , Z) ) - - - - - -void GEOM_AssemblyBuilder::InitProperties(vtkProperty* IsoProp, - vtkProperty* FaceProp, - vtkProperty* EdgeFProp, - vtkProperty* EdgeSProp, - vtkProperty* EdgeIProp, - vtkProperty* VertexProp, - vtkProperty* IsoPVProp, - vtkProperty* EdgePVProp, - vtkProperty* VertexPVProp) -{ - // Shading like default OCC material - FaceProp->SetRepresentationToSurface(); - FaceProp->SetInterpolationToGouraud(); - FaceProp->SetAmbient(1.0); - FaceProp->SetDiffuse(1.0); - FaceProp->SetSpecular(0.4); - FaceProp->SetAmbientColor(0.329412, 0.223529, 0.027451); - FaceProp->SetDiffuseColor(0.780392, 0.568627, 0.113725); - FaceProp->SetSpecularColor(0.992157, 0.941176, 0.807843); - - // Wireframe for iso - IsoProp->SetRepresentationToWireframe(); - IsoProp->SetAmbientColor(0.5, 0.5, 0.5); - IsoProp->SetDiffuseColor(0.5, 0.5, 0.5); - IsoProp->SetSpecularColor(0.5, 0.5, 0.5); - - // Wireframe for iso - IsoPVProp->SetRepresentationToWireframe(); - IsoPVProp->SetAmbientColor(0, 1, 1); - IsoPVProp->SetDiffuseColor(0, 1, 1); - IsoPVProp->SetSpecularColor(0, 1, 1); - - // Wireframe for shared edge - EdgeSProp->SetRepresentationToWireframe(); - EdgeSProp->SetAmbientColor(1, 1, 0); - EdgeSProp->SetDiffuseColor(1, 1, 0); - EdgeSProp->SetSpecularColor(1, 1, 0); - - // Wireframe for free edge - EdgeFProp->SetRepresentationToWireframe(); - EdgeFProp->SetAmbientColor(0, 1, 0); - EdgeFProp->SetDiffuseColor(0, 1, 0); - EdgeFProp->SetSpecularColor(0, 1, 0); - - // Wireframe for isolated edge - EdgeIProp->SetRepresentationToWireframe(); - EdgeIProp->SetAmbientColor(1, 0, 0); - EdgeIProp->SetDiffuseColor(1, 0, 0); - EdgeIProp->SetSpecularColor(1, 0, 0); - - // Wireframe for Preview edge - EdgePVProp->SetRepresentationToWireframe(); - EdgePVProp->SetAmbientColor(1, 1, 0); - EdgePVProp->SetDiffuseColor(1, 1, 0); - EdgePVProp->SetSpecularColor(1, 1, 0); - - // Wireframe for vertex - VertexProp->SetRepresentationToWireframe(); - VertexProp->SetAmbientColor(1, 1, 0); - VertexProp->SetDiffuseColor(1, 1, 0); - VertexProp->SetSpecularColor(1, 1, 0); - - // Wireframe for vertex - VertexPVProp->SetRepresentationToWireframe(); - VertexPVProp->SetAmbientColor(0, 1, 1); - VertexPVProp->SetDiffuseColor(0, 1, 1); - VertexPVProp->SetSpecularColor(0, 1, 1); -} - - -void GEOM_AssemblyBuilder::MeshShape(const TopoDS_Shape myShape, - Standard_Real deflection, - Standard_Boolean forced) -{ - // Mesh the shape if necessary - Standard_Boolean alreadymesh = Standard_True; - TopExp_Explorer ex; - TopLoc_Location aLoc; - - for (ex.Init(myShape, TopAbs_FACE); ex.More(); ex.Next()) { - const TopoDS_Face& aFace = TopoDS::Face(ex.Current()); - Handle(Poly_Triangulation) aPoly = BRep_Tool::Triangulation(aFace,aLoc); - if(aPoly.IsNull()) { alreadymesh = Standard_False; break; } - } - - if(!alreadymesh || forced) { - if(deflection<=0) { - // Compute default deflection - Bnd_Box B; - BRepBndLib::Add(myShape, B); - Standard_Real aXmin, aYmin, aZmin, aXmax, aYmax, aZmax; - B.Get(aXmin, aYmin, aZmin, aXmax, aYmax, aZmax); - deflection = MAX3( aXmax-aXmin , aYmax-aYmin , aZmax-aZmin) * 0.001 *4; - } - BRepMesh_IncrementalMesh MESH(myShape,deflection); - } -} - - - -vtkActorCollection* GEOM_AssemblyBuilder::BuildActors(const TopoDS_Shape& myShape, - Standard_Real deflection, - Standard_Integer mode, - Standard_Boolean forced) { - - vtkActorCollection* AISActors = vtkActorCollection::New(); - - if(myShape.ShapeType() == TopAbs_COMPOUND) { - TopoDS_Iterator anItr(myShape); - for(; anItr.More(); anItr.Next()) { - vtkActorCollection* theActors = GEOM_AssemblyBuilder::BuildActors(anItr.Value(), deflection, mode, forced); - theActors->InitTraversal(); - vtkActor* anActor = (vtkActor*)theActors->GetNextActor(); - while(!(anActor==NULL)) { - AISActors->AddItem(anActor); - anActor = (vtkActor*)theActors->GetNextActor(); - } - } - } - // Create graphics properties - - vtkProperty* IsoProp = vtkProperty::New(); - vtkProperty* FaceProp = vtkProperty::New(); - vtkProperty* EdgeFProp = vtkProperty::New(); - vtkProperty* EdgeSProp = vtkProperty::New(); - vtkProperty* EdgeIProp = vtkProperty::New(); - vtkProperty* VertexProp = vtkProperty::New(); - - vtkProperty* IsoPVProp = vtkProperty::New(); - vtkProperty* EdgePVProp = vtkProperty::New(); - vtkProperty* VertexPVProp = vtkProperty::New(); - - InitProperties(IsoProp,FaceProp,EdgeFProp,EdgeSProp,EdgeIProp,VertexProp,IsoPVProp,EdgePVProp,VertexPVProp); - - MeshShape(myShape,deflection,forced); - - if ( myShape.ShapeType() <= 4 && myShape.ShapeType() != TopAbs_COMPOUND) { - - // FACE Actor - // look if edges are free or shared - TopTools_IndexedDataMapOfShapeListOfShape edgemap; - TopExp::MapShapesAndAncestors(myShape,TopAbs_EDGE,TopAbs_FACE,edgemap); - - TopExp_Explorer ex; - - for (ex.Init(myShape, TopAbs_FACE); ex.More(); ex.Next()) { - - GEOM_Actor* FaceActor = GEOM_Actor::New(); - FaceActor->SetShadingProperty(FaceProp); - FaceActor->SetWireframeProperty(IsoProp); - - FaceActor->SetPreviewProperty(IsoPVProp); - - FaceActor->setInputShape(ex.Current(),deflection,mode); - - AISActors->AddItem(FaceActor); - - TopExp_Explorer ex2; - for (ex2.Init(ex.Current(), TopAbs_EDGE); ex2.More(); ex2.Next()) { - const TopoDS_Edge& aEdge = TopoDS::Edge(ex2.Current()); - - if (BRep_Tool::Degenerated(aEdge)) { - continue; - } - - // compute the number of faces - Standard_Integer nbf = edgemap.FindFromKey(ex2.Current()).Extent(); - GEOM_Actor* EdgeActor = GEOM_Actor::New(); - EdgeActor->SubShapeOn(); - EdgeActor->setInputShape(ex2.Current(),deflection,mode); - switch (nbf) { - - case 0 : // isolated edge - { - EdgeActor->SetShadingProperty(EdgeIProp); - EdgeActor->SetWireframeProperty(EdgeIProp); - } - break; - - case 1 :// edge in only one face - { - EdgeActor->SetShadingProperty(EdgeFProp); - EdgeActor->SetWireframeProperty(EdgeFProp); - } - break; - - default : // edge shared by at least two faces - { - EdgeActor->SetShadingProperty(EdgeSProp); - EdgeActor->SetWireframeProperty(EdgeSProp); - } - } - EdgeActor->SetPreviewProperty(EdgePVProp); - AISActors->AddItem(EdgeActor); - } - } - } else if ( myShape.ShapeType() == TopAbs_WIRE ) { // WIRE Actor - TopExp_Explorer ex; - for (ex.Init(myShape, TopAbs_EDGE); ex.More(); ex.Next()) { - const TopoDS_Edge& aEdge = TopoDS::Edge(ex.Current()); - - if (BRep_Tool::Degenerated(aEdge)) { - continue; - } - - GEOM_Actor* EdgeActor = GEOM_Actor::New(); - EdgeActor->setInputShape(ex.Current(),deflection,mode); - EdgeActor->SetShadingProperty(EdgeIProp); - EdgeActor->SetWireframeProperty(EdgeIProp); - EdgeActor->SetPreviewProperty(EdgePVProp); - - AISActors->AddItem(EdgeActor); - } - } else if ( myShape.ShapeType() == TopAbs_EDGE ) { // EDGE Actor - GEOM_Actor* EdgeActor = GEOM_Actor::New(); - EdgeActor->setInputShape(myShape,deflection,mode); - EdgeActor->SetShadingProperty(EdgeIProp); - EdgeActor->SetWireframeProperty(EdgeIProp); - EdgeActor->SetPreviewProperty(EdgePVProp); - - AISActors->AddItem(EdgeActor); - } else if ( myShape.ShapeType() == TopAbs_VERTEX ) { // VERTEX Actor - GEOM_Actor* VertexActor = GEOM_Actor::New(); - VertexActor->setInputShape(myShape,deflection,mode); - VertexActor->SetShadingProperty(VertexProp); - VertexActor->SetWireframeProperty(VertexProp); - VertexActor->SetPreviewProperty(VertexPVProp); - - AISActors->AddItem(VertexActor); - - } - - return AISActors; - -} - - - -//------------------------------------------------------------- -// BUILD ASSEMBLY -//------------------------------------------------------------- -vtkAssembly* GEOM_AssemblyBuilder::BuildAssembly(const TopoDS_Shape& myShape, - Standard_Real deflection, - Standard_Integer mode, - Standard_Boolean forced) -{ - // Create a new vtkAssembly - - vtkAssembly* myVTKShape = vtkAssembly::New(); - - - // Create graphics properties - - vtkProperty* IsoProp = vtkProperty::New(); - vtkProperty* FaceProp = vtkProperty::New(); - vtkProperty* EdgeFProp = vtkProperty::New(); - vtkProperty* EdgeSProp = vtkProperty::New(); - vtkProperty* EdgeIProp = vtkProperty::New(); - vtkProperty* VertexProp = vtkProperty::New(); - vtkProperty* EdgePVProp = vtkProperty::New(); - vtkProperty* VertexPVProp = vtkProperty::New(); - vtkProperty* IsoPVProp = vtkProperty::New(); - - InitProperties(IsoProp,FaceProp,EdgeFProp,EdgeSProp,EdgeIProp,VertexProp,IsoPVProp,EdgePVProp,VertexPVProp); - - MeshShape(myShape,deflection,forced); - - - // FACE Actor - - // look if edges are free or shared - TopTools_IndexedDataMapOfShapeListOfShape edgemap; - TopExp::MapShapesAndAncestors(myShape,TopAbs_EDGE,TopAbs_FACE,edgemap); - - TopExp_Explorer ex; - - for (ex.Init(myShape, TopAbs_FACE); ex.More(); ex.Next()) { - //const TopoDS_Face& aFace = TopoDS::Face(ex.Current()); - - GEOM_Actor* FaceActor = GEOM_Actor::New(); - FaceActor->SetShadingProperty(FaceProp); - FaceActor->SetWireframeProperty(IsoProp); - - vtkAssembly* myFaceAssembly = vtkAssembly::New(); - - - FaceActor->setInputShape(ex.Current(),deflection,mode); - myFaceAssembly->AddPart(FaceActor); - - TopExp_Explorer ex2; - for (ex2.Init(ex.Current(), TopAbs_EDGE); ex2.More(); ex2.Next()) { - const TopoDS_Edge& aEdge = TopoDS::Edge(ex2.Current()); - - if (BRep_Tool::Degenerated(aEdge)) { - continue; - } - - - // compute the number of faces - Standard_Integer nbf = edgemap.FindFromKey(ex2.Current()).Extent(); - GEOM_Actor* EdgeActor = GEOM_Actor::New(); - switch (nbf) { - - case 0 : // isolated edge - { - EdgeActor->SetShadingProperty(EdgeIProp); - EdgeActor->SetWireframeProperty(EdgeIProp); - } - break; - - case 1 :// edge in only one face - { - EdgeActor->SetShadingProperty(EdgeFProp); - EdgeActor->SetWireframeProperty(EdgeFProp); - } - break; - - default : // edge shared by at least two faces - { - EdgeActor->SetShadingProperty(EdgeSProp); - EdgeActor->SetWireframeProperty(EdgeSProp); - } - } - - EdgeActor->setInputShape(ex2.Current(),deflection,mode); - myFaceAssembly->AddPart(EdgeActor); - } - myVTKShape->AddPart(myFaceAssembly); - } - - return myVTKShape; - -} - -//------------------------------------------------------------- -// CHANGE SPECIFIC DISPLAY MODE -//------------------------------------------------------------- -void GEOM_AssemblyBuilder::SwitchDisplayMode(vtkAssembly* aOCCAssembly) -{ -} - -void GEOM_AssemblyBuilder::SwitchDisplayMode(vtkActorCollection* aOCCAssembly) -{ -} - -//------------------------------------------------------------- -// DISPLAY/ERASE -//------------------------------------------------------------- - -void GEOM_AssemblyBuilder::DisplayErase(vtkAssembly* mySALOMEAssembly) -{ -} - - -void GEOM_AssemblyBuilder::DisplayErase(vtkActorCollection* mySALOMEActors) -{ -} - - - - - diff --git a/src/OBJECT/GEOM_AssemblyBuilder.h b/src/OBJECT/GEOM_AssemblyBuilder.h deleted file mode 100644 index 4436b0b01..000000000 --- a/src/OBJECT/GEOM_AssemblyBuilder.h +++ /dev/null @@ -1,99 +0,0 @@ -// GEOM OBJECT : interactive object for Geometry entities visualization -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOM_AssemblyBuilder.h -// Author : Christophe ATTANASIO -// Module : GEOM -// $Header$ - -#include -#include -#include - -// Open CASCADE Inlcudes -#include -#include - -#ifdef WNT -#include -#else -#define SALOME_WNT_EXPORT -#endif - -class SALOME_WNT_EXPORT GEOM_AssemblyBuilder { - - private: - - static void InitProperties(vtkProperty* IsoProp, - vtkProperty* FaceProp, - vtkProperty* EdgeFProp, - vtkProperty* EdgeSProp, - vtkProperty* EdgeIProp, - vtkProperty* VertexProp, - vtkProperty* IsoPVProp, - vtkProperty* EdgePVProp, - vtkProperty* VertePVProp); - - static void MeshShape(const TopoDS_Shape myShape, - Standard_Real deflection, - Standard_Boolean forced); - - - public: - - - //------------------------------------------------------------------ - // WARNING! Poor graphic performance :-( use BuildActors instead - //------------------------------------------------------------------ - - static vtkAssembly* BuildAssembly(const TopoDS_Shape& myShape, - Standard_Real deflection, - Standard_Integer amode, - Standard_Boolean forced); - - //------------------------------------------------------------------ - // Good performance - //------------------------------------------------------------------ - - static vtkActorCollection* BuildActors(const TopoDS_Shape& myShape, - Standard_Real deflection, - Standard_Integer amode, - Standard_Boolean forced); - - - //------------------------------------------------------------------ - // Change mode - Not implemented !! - //------------------------------------------------------------------ - - static void SwitchDisplayMode(vtkAssembly* mySALOMEAssembly); - static void SwitchDisplayMode(vtkActorCollection* mySALOMEActors); - - //------------------------------------------------------------------ - // Erase/Display - Not implemented !! - //------------------------------------------------------------------ - - static void DisplayErase(vtkAssembly* mySALOMEAssembly); - static void DisplayErase(vtkActorCollection* mySALOMEActors); - - -}; diff --git a/src/OBJECT/GEOM_InteractiveObject.cxx b/src/OBJECT/GEOM_InteractiveObject.cxx deleted file mode 100644 index caa8567e5..000000000 --- a/src/OBJECT/GEOM_InteractiveObject.cxx +++ /dev/null @@ -1,76 +0,0 @@ -// GEOM OBJECT : interactive object for Geometry entities visualization -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOM_InteractiveObject.cxx -// Author : Christophe ATTANASIO -// Module : GEOM -// $Header$ - -/*! - \class GEOM_InteractiveObject GEOM_InteractiveObject.hxx - \brief .... -*/ - -#include "GEOM_InteractiveObject.ixx" - -using namespace std; - -GEOM_InteractiveObject::GEOM_InteractiveObject() - : SALOME_InteractiveObject() -{ - myIOR = ""; - myFatherIOR = ""; -} - -GEOM_InteractiveObject::GEOM_InteractiveObject(const char* anIOR, - const char* aFatherIOR, - const char* aComponentDataType, - const char* anEntry) - : SALOME_InteractiveObject(anEntry,aComponentDataType) -{ - myIOR = anIOR; - myFatherIOR = aFatherIOR; -} - -const char* GEOM_InteractiveObject::getIOR(){ - return myIOR.c_str(); -} - -const char* GEOM_InteractiveObject::getFatherIOR(){ - return myFatherIOR.c_str(); -} - -Standard_Boolean GEOM_InteractiveObject::isSame(const Handle(SALOME_InteractiveObject)& anIO ){ - if ( anIO->hasEntry() && this->hasEntry() ) { - if ( myEntry == anIO->getEntry() ) - return Standard_True; - } - - if ( anIO->IsKind(STANDARD_TYPE(GEOM_InteractiveObject))) { - Handle(GEOM_InteractiveObject) theIO = Handle(GEOM_InteractiveObject)::DownCast( anIO ); - if ( myIOR == theIO->getIOR() ) - return Standard_True; - } - - return Standard_False; -} diff --git a/src/OBJECT/GEOM_InteractiveObject.hxx b/src/OBJECT/GEOM_InteractiveObject.hxx deleted file mode 100644 index 93911dfe0..000000000 --- a/src/OBJECT/GEOM_InteractiveObject.hxx +++ /dev/null @@ -1,127 +0,0 @@ -// GEOM OBJECT : interactive object for Geometry entities visualization -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOM_InteractiveObject.hxx -// Module : GEOM - -#ifndef _GEOM_InteractiveObject_HeaderFile -#define _GEOM_InteractiveObject_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_GEOM_InteractiveObject_HeaderFile -#include "Handle_GEOM_InteractiveObject.hxx" -#endif - -#ifndef _Standard_CString_HeaderFile -#include -#endif -#ifndef _SALOME_InteractiveObject_HeaderFile -#include "SALOME_InteractiveObject.hxx" -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -#ifndef _Handle_SALOME_InteractiveObject_HeaderFile -#include "Handle_SALOME_InteractiveObject.hxx" -#endif -class SALOME_InteractiveObject; - - -class GEOM_InteractiveObject : public SALOME_InteractiveObject { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } -// inline void operator delete(void *anAddress, size_t size) -// { -// if (anAddress) Standard::Free((Standard_Address&)anAddress,size); -// } - // Methods PUBLIC - // -Standard_EXPORT GEOM_InteractiveObject(); -Standard_EXPORT GEOM_InteractiveObject(const char* anIOR, - const char* aFatherIOR, - const char* aComponentDataType, - const char* anEntry = ""); -Standard_EXPORT void setIOR(const char* anEntry) ; -Standard_EXPORT const char* getIOR() ; -Standard_EXPORT void setFatherIOR(const char* anEntry) ; -Standard_EXPORT const char* getFatherIOR() ; -Standard_EXPORT virtual Standard_Boolean isSame(const Handle(SALOME_InteractiveObject)& anIO) ; -Standard_EXPORT ~GEOM_InteractiveObject(); - - - - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& GEOM_InteractiveObject_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -std::string myIOR; -std::string myFatherIOR; - - -}; - - - - - -// other inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/OBJECT/GEOM_InteractiveObject.ixx b/src/OBJECT/GEOM_InteractiveObject.ixx deleted file mode 100644 index dccdbb94b..000000000 --- a/src/OBJECT/GEOM_InteractiveObject.ixx +++ /dev/null @@ -1,83 +0,0 @@ -// GEOM OBJECT : interactive object for Geometry entities visualization -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOM_InteractiveObject.ixx -// Module : GEOM - -#include "GEOM_InteractiveObject.jxx" - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -GEOM_InteractiveObject::~GEOM_InteractiveObject() {} - - - -Standard_EXPORT Handle_Standard_Type& GEOM_InteractiveObject_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(SALOME_InteractiveObject); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(SALOME_InteractiveObject); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOM_InteractiveObject", - sizeof(GEOM_InteractiveObject), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(GEOM_InteractiveObject) Handle(GEOM_InteractiveObject)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOM_InteractiveObject) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOM_InteractiveObject))) { - _anOtherObject = Handle(GEOM_InteractiveObject)((Handle(GEOM_InteractiveObject)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& GEOM_InteractiveObject::DynamicType() const -{ - return STANDARD_TYPE(GEOM_InteractiveObject) ; -} -Standard_Boolean GEOM_InteractiveObject::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(GEOM_InteractiveObject) == AType || SALOME_InteractiveObject::IsKind(AType)); -} -Handle_GEOM_InteractiveObject::~Handle_GEOM_InteractiveObject() {} - diff --git a/src/OBJECT/GEOM_InteractiveObject.jxx b/src/OBJECT/GEOM_InteractiveObject.jxx deleted file mode 100644 index 8884bdc8b..000000000 --- a/src/OBJECT/GEOM_InteractiveObject.jxx +++ /dev/null @@ -1,32 +0,0 @@ -// GEOM OBJECT : interactive object for Geometry entities visualization -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOM_InteractiveObject.jxx -// Module : GEOM - -#ifndef _SALOME_InteractiveObject_HeaderFile -#include "SALOME_InteractiveObject.hxx" -#endif -#ifndef _GEOM_InteractiveObject_HeaderFile -#include "GEOM_InteractiveObject.hxx" -#endif diff --git a/src/OBJECT/GEOM_OCCReader.cxx b/src/OBJECT/GEOM_OCCReader.cxx deleted file mode 100644 index 933c670e9..000000000 --- a/src/OBJECT/GEOM_OCCReader.cxx +++ /dev/null @@ -1,995 +0,0 @@ -// GEOM OBJECT : interactive object for Geometry entities visualization -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOM_OCCReader.h -// Author : Christophe ATTANASIO -// Module : GEOM -// $Header$ - -#include "GEOM_OCCReader.h" - -// VTK Includes -#include -#include - -#include -#include -#include -#include - -#include -#include - -// OpenCASCADE Includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "utilities.h" - -using namespace std; - -#define MAX2(X, Y) ( Abs(X) > Abs(Y)? Abs(X) : Abs(Y) ) -#define MAX3(X, Y, Z) ( MAX2 ( MAX2(X,Y) , Z) ) - -// Constante for iso building -static Standard_Real IntersectorConfusion = 1.e-10 ; // -8 ; -static Standard_Real IntersectorTangency = 1.e-10 ; // -8 ; -static Standard_Real HatcherConfusion2d = 1.e-8 ; -static Standard_Real HatcherConfusion3d = 1.e-8 ; - -static Standard_Integer lastVTKpoint = 0; -static Standard_Integer PlotCount = 0; -static Standard_Real IsoRatio = 1.001; -static Standard_Integer MaxPlotCount = 5; - -//======================================================================= -// Function : New -// Purpose : -//======================================================================= - -GEOM_OCCReader* GEOM_OCCReader::New() -{ - vtkObject* ret = vtkObjectFactory::CreateInstance("GEOM_OCCReader"); - if(ret) { - return (GEOM_OCCReader*)ret; - } - return new GEOM_OCCReader; -} - -//======================================================================= -// Function : GEOM_OCCReader -// Purpose : -//======================================================================= - -GEOM_OCCReader::GEOM_OCCReader() -{ - //this->myShape = NULL; - this->amode = 0; - this->forced = Standard_False; - this->discretiso = 15; - this->nbisos = 1; -} -//======================================================================= -// Function : ~GEOM_OCCReader -// Purpose : -//======================================================================= - -GEOM_OCCReader::~GEOM_OCCReader() -{ -} - - -//======================================================================= -// Function : Execute -// Purpose : -//======================================================================= - - -void GEOM_OCCReader::Execute() { - - vtkPolyData* output = this->GetOutput(); - vtkPoints* Pts = NULL; - vtkCellArray* Cells = NULL; - TopLoc_Location aLoc; - - // Allocation - Pts = vtkPoints::New(); - Cells = vtkCellArray::New(); - - //Compute number of triangles and points - Standard_Integer nbpoly=0,nbpts=0; - - if(amode==1) { - //for shading - - if(myShape.ShapeType() == TopAbs_FACE) { - // whole FACE - const TopoDS_Face& aFace = TopoDS::Face(myShape); - Handle(Poly_Triangulation) aPoly = BRep_Tool::Triangulation(aFace,aLoc); - if(aPoly.IsNull()) { - Pts->Delete(); - Cells->Delete(); - return; - } - - nbpts = aPoly->NbNodes(); - nbpoly = aPoly->NbTriangles(); - - Pts->SetNumberOfPoints(nbpts); - Cells->Allocate(Cells->EstimateSize(nbpoly,3)); - } - else { - Cells->Delete(); - Pts->Delete(); - return; - } - } - - // Start computation - if(amode == 0) { - ComputeWireframe(Pts,Cells); - output->SetPoints(Pts); - output->SetLines(Cells); - output->Squeeze(); - } - else { - if(myShape.ShapeType() == TopAbs_FACE) { - ComputeShading(Pts,Cells); - - output->SetPoints(Pts); - output->SetPolys(Cells); - output->Squeeze(); - } - } - Pts->Delete(); - Cells->Delete(); - -} - -//======================================================================= -// Function : ComputeWireframe -// Purpose : Compute the shape in CAD wireframe mode -//======================================================================= - -void GEOM_OCCReader::ComputeWireframe(vtkPoints* Pts,vtkCellArray* Cells){ - - // Check the type of the shape: - if(myShape.ShapeType() == TopAbs_FACE) { - // Face - TransferFaceWData(TopoDS::Face(myShape),Pts,Cells); - } else if(myShape.ShapeType() == TopAbs_EDGE) { - // Edge - TransferEdgeWData(TopoDS::Edge(myShape),Pts,Cells); - } else { - if(myShape.ShapeType() == TopAbs_VERTEX) { - // Vertex - TransferVertexWData(TopoDS::Vertex(myShape),Pts,Cells); - } - } -} - -//======================================================================= -// Function : TransferFaceWData -// Purpose : Transfert wireframe data for FACE -//======================================================================= - -void GEOM_OCCReader::TransferFaceWData(const TopoDS_Face& aFace, - vtkPoints* Pts, - vtkCellArray* Cells) -{ - TopoDS_Face aCopyFace = aFace; - aCopyFace.Orientation (TopAbs_FORWARD); - createISO(aCopyFace,Precision::Infinite(),1,Pts,Cells); -} - -//======================================================================= -// Function : createISO -// Purpose : Create ISO for Face Wireframe representation -//======================================================================= - -void GEOM_OCCReader::createISO (const TopoDS_Face& TopologicalFace, - const Standard_Real Infinite, - const Standard_Integer NbIsos, - vtkPoints* Pts, - vtkCellArray* Cell) -{ - Geom2dHatch_Hatcher aHatcher (Geom2dHatch_Intersector (IntersectorConfusion, - IntersectorTangency), - HatcherConfusion2d, - HatcherConfusion3d, - Standard_True, - Standard_False); - - Standard_Real myInfinite,myUMin,myUMax,myVMin,myVMax; - //myInfinite = Precision::Infinite(); - myInfinite = 1e38; // VTK uses float numbers - Precision::Infinite() is double and can not be accepted. - - Standard_Integer myNbDom; - TColStd_Array1OfReal myUPrm(1, NbIsos),myVPrm(1, NbIsos); - TColStd_Array1OfInteger myUInd(1, NbIsos),myVInd(1, NbIsos); - - myUInd.Init(0); - myVInd.Init(0); - - //----------------------------------------------------------------------- - // If the Min Max bounds are infinite, there are bounded to Infinite - // value. - //----------------------------------------------------------------------- - - BRepTools::UVBounds (TopologicalFace, myUMin, myUMax, myVMin, myVMax) ; - Standard_Boolean InfiniteUMin = Precision::IsNegativeInfinite (myUMin) ; - Standard_Boolean InfiniteUMax = Precision::IsPositiveInfinite (myUMax) ; - Standard_Boolean InfiniteVMin = Precision::IsNegativeInfinite (myVMin) ; - Standard_Boolean InfiniteVMax = Precision::IsPositiveInfinite (myVMax) ; - if (InfiniteUMin && InfiniteUMax) { - myUMin = - myInfinite ; - myUMax = myInfinite ; - } else if (InfiniteUMin) { - myUMin = myUMax - myInfinite ; - } else if (InfiniteUMax) { - myUMax = myUMin + myInfinite ; - } - if (InfiniteVMin && InfiniteVMax) { - myVMin = - myInfinite ; - myVMax = myInfinite ; - } else if (InfiniteVMin) { - myVMin = myVMax - myInfinite ; - } else if (InfiniteVMax) { - myVMax = myVMin + myInfinite ; - } - - //----------------------------------------------------------------------- - // Retreiving the edges and loading them into the hatcher. - //----------------------------------------------------------------------- - - TopExp_Explorer ExpEdges ; - for (ExpEdges.Init (TopologicalFace, TopAbs_EDGE) ; ExpEdges.More() ; ExpEdges.Next()) { - const TopoDS_Edge& TopologicalEdge = TopoDS::Edge (ExpEdges.Current()) ; - Standard_Real U1, U2 ; - const Handle(Geom2d_Curve) PCurve = BRep_Tool::CurveOnSurface (TopologicalEdge, TopologicalFace, U1, U2) ; - - if ( PCurve.IsNull() ) { - return; - } - - if ( U1==U2) { - return; - } - - //-- Test if a TrimmedCurve is necessary - if( Abs(PCurve->FirstParameter()-U1)<= Precision::PConfusion() - && Abs(PCurve->LastParameter()-U2)<= Precision::PConfusion()) { - aHatcher.AddElement (PCurve, TopologicalEdge.Orientation()) ; - } - else { - if (!PCurve->IsPeriodic()) { - Handle (Geom2d_TrimmedCurve) TrimPCurve =Handle(Geom2d_TrimmedCurve)::DownCast(PCurve); - if (!TrimPCurve.IsNull()) { - if (TrimPCurve->BasisCurve()->FirstParameter()-U1 > Precision::PConfusion() || - U2-TrimPCurve->BasisCurve()->LastParameter() > Precision::PConfusion()) { - aHatcher.AddElement (PCurve, TopologicalEdge.Orientation()) ; - return; - } - } - else { - if (PCurve->FirstParameter()-U1 > Precision::PConfusion()){ - U1=PCurve->FirstParameter(); - } - if (U2-PCurve->LastParameter() > Precision::PConfusion()){ - U2=PCurve->LastParameter(); - } - } - } - Handle (Geom2d_TrimmedCurve) TrimPCurve = new Geom2d_TrimmedCurve (PCurve, U1, U2) ; - aHatcher.AddElement (TrimPCurve, TopologicalEdge.Orientation()) ; - } - } - - - //----------------------------------------------------------------------- - // Loading and trimming the hatchings. - //----------------------------------------------------------------------- - - Standard_Integer IIso ; - Standard_Real DeltaU = Abs (myUMax - myUMin) ; - Standard_Real DeltaV = Abs (myVMax - myVMin) ; - Standard_Real confusion = Min (DeltaU, DeltaV) * HatcherConfusion3d ; - aHatcher.Confusion3d (confusion) ; - - Standard_Real StepU = DeltaU / (Standard_Real) NbIsos ; - if (StepU > confusion) { - Standard_Real UPrm = myUMin + StepU / 2. ; - gp_Dir2d Dir (0., 1.) ; - for (IIso = 1 ; IIso <= NbIsos ; IIso++) { - myUPrm(IIso) = UPrm ; - gp_Pnt2d Ori (UPrm, 0.) ; - Geom2dAdaptor_Curve HCur (new Geom2d_Line (Ori, Dir)) ; - myUInd(IIso) = aHatcher.AddHatching (HCur) ; - UPrm += StepU ; - } - } - - Standard_Real StepV = DeltaV / (Standard_Real) NbIsos ; - if (StepV > confusion) { - Standard_Real VPrm = myVMin + StepV / 2. ; - gp_Dir2d Dir (1., 0.) ; - for (IIso = 1 ; IIso <= NbIsos ; IIso++) { - myVPrm(IIso) = VPrm ; - gp_Pnt2d Ori (0., VPrm) ; - Geom2dAdaptor_Curve HCur (new Geom2d_Line (Ori, Dir)) ; - myVInd(IIso) = aHatcher.AddHatching (HCur) ; - VPrm += StepV ; - } - } - - //----------------------------------------------------------------------- - // Computation. - //----------------------------------------------------------------------- - - aHatcher.Trim() ; - - myNbDom = 0 ; - for (IIso = 1 ; IIso <= NbIsos ; IIso++) { - Standard_Integer Index ; - - Index = myUInd(IIso) ; - if (Index != 0) { - if (aHatcher.TrimDone (Index) && !aHatcher.TrimFailed (Index)) { - aHatcher.ComputeDomains (Index); - if (aHatcher.IsDone (Index)) myNbDom = myNbDom + aHatcher.NbDomains (Index) ; - } - } - - Index = myVInd(IIso) ; - if (Index != 0) { - if (aHatcher.TrimDone (Index) && !aHatcher.TrimFailed (Index)) { - aHatcher.ComputeDomains (Index); - if (aHatcher.IsDone (Index)) myNbDom = myNbDom + aHatcher.NbDomains (Index) ; - } - } - } - - //----------------------------------------------------------------------- - // Push iso lines in vtk kernel - //----------------------------------------------------------------------- - - - Standard_Integer pt_start_idx = 0; - - for (Standard_Integer UIso = myUPrm.Lower() ; UIso <= myUPrm.Upper() ; UIso++) { - Standard_Integer UInd = myUInd.Value (UIso) ; - if (UInd != 0) { - Standard_Real UPrm = myUPrm.Value (UIso) ; - if (!aHatcher.IsDone (UInd)) { - MESSAGE("DBRep_IsoBuilder:: U iso of parameter: "<InsertNextPoint(coord); - -} - -//======================================================================= -// Function : DrawTo -// Purpose : Plot point in VTK -//======================================================================= -void GEOM_OCCReader::DrawTo(gp_Pnt P, - vtkPoints* Pts, - vtkCellArray* Cells) -{ - float coord[3]; - coord[0] = P.X(); coord[1] = P.Y(); coord[2] = P.Z(); - Standard_Integer NewVTKpoint = Pts->InsertNextPoint(coord); - - int pts[2]; - pts[0] = lastVTKpoint; - pts[1] = NewVTKpoint; - - Cells->InsertNextCell(2,pts); - - lastVTKpoint = NewVTKpoint; -} - - -//======================================================================= -// Function : DrawIso -// Purpose : Draw an iso on vtk -//======================================================================= -void GEOM_OCCReader::DrawIso(GeomAbs_IsoType T, - Standard_Real Par, - Standard_Real T1, - Standard_Real T2, - vtkPoints* Pts, - vtkCellArray* Cells, - Standard_Integer& startidx) -{ - - Standard_Boolean halt = Standard_False; - Standard_Integer j,myDiscret = discretiso; - Standard_Real U1,U2,V1,V2,stepU=0.,stepV=0.; - gp_Pnt P; - TopLoc_Location l; - - const Handle(Geom_Surface)& S = BRep_Tool::Surface(TopoDS::Face(myShape),l); - if (!S.IsNull()) { - BRepAdaptor_Surface S(TopoDS::Face(myShape),Standard_False); - - GeomAbs_SurfaceType SurfType = S.GetType(); - - GeomAbs_CurveType CurvType = GeomAbs_OtherCurve; - - Standard_Integer Intrv, nbIntv; - Standard_Integer nbUIntv = S.NbUIntervals(GeomAbs_CN); - Standard_Integer nbVIntv = S.NbVIntervals(GeomAbs_CN); - TColStd_Array1OfReal TI(1,Max(nbUIntv, nbVIntv)+1); - - - if (T == GeomAbs_IsoU) { - S.VIntervals(TI, GeomAbs_CN); - V1 = Max(T1, TI(1)); - V2 = Min(T2, TI(2)); - U1 = Par; - U2 = Par; - stepU = 0; - nbIntv = nbVIntv; - } - else { - S.UIntervals(TI, GeomAbs_CN); - U1 = Max(T1, TI(1)); - U2 = Min(T2, TI(2)); - V1 = Par; - V2 = Par; - stepV = 0; - nbIntv = nbUIntv; - } - - S.D0(U1,V1,P); - MoveTo(P,Pts); - - for (Intrv = 1; Intrv <= nbIntv; Intrv++) { - - if (TI(Intrv) <= T1 && TI(Intrv + 1) <= T1) - continue; - if (TI(Intrv) >= T2 && TI(Intrv + 1) >= T2) - continue; - if (T == GeomAbs_IsoU) { - V1 = Max(T1, TI(Intrv)); - V2 = Min(T2, TI(Intrv + 1)); - stepV = (V2 - V1) / myDiscret; - } - else { - U1 = Max(T1, TI(Intrv)); - U2 = Min(T2, TI(Intrv + 1)); - stepU = (U2 - U1) / myDiscret; - } - - switch (SurfType) { - //-------------GeomAbs_Plane--------------- - case GeomAbs_Plane : - break; - //----GeomAbs_Cylinder GeomAbs_Cone------ - case GeomAbs_Cylinder : - case GeomAbs_Cone : - if (T == GeomAbs_IsoV) { - for (j = 1; j < myDiscret; j++) { - U1 += stepU; - V1 += stepV; - S.D0(U1,V1,P); - DrawTo(P,Pts,Cells); - } - } - break; - //---GeomAbs_Sphere GeomAbs_Torus-------- - //GeomAbs_BezierSurface GeomAbs_BezierSurface - case GeomAbs_Sphere : - case GeomAbs_Torus : - case GeomAbs_OffsetSurface : - case GeomAbs_OtherSurface : - for (j = 1; j < myDiscret; j++) { - U1 += stepU; - V1 += stepV; - S.D0(U1,V1,P); - DrawTo(P,Pts,Cells); - } - break; - //-------------GeomAbs_BSplineSurface------ - case GeomAbs_BezierSurface : - case GeomAbs_BSplineSurface : - for (j = 1; j <= myDiscret/2; j++) { - - PlotCount = 0; - - PlotIso ( S, T, U1, V1, (T == GeomAbs_IsoV) ? stepU*2. : stepV*2., halt, Pts, Cells); - U1 += stepU*2.; - V1 += stepV*2.; - } - break; - //-------------GeomAbs_SurfaceOfExtrusion-- - //-------------GeomAbs_SurfaceOfRevolution- - case GeomAbs_SurfaceOfExtrusion : - case GeomAbs_SurfaceOfRevolution : - if ((T == GeomAbs_IsoV && SurfType == GeomAbs_SurfaceOfRevolution) || - (T == GeomAbs_IsoU && SurfType == GeomAbs_SurfaceOfExtrusion)) { - if (SurfType == GeomAbs_SurfaceOfExtrusion) break; - for (j = 1; j < myDiscret; j++) { - U1 += stepU; - V1 += stepV; - S.D0(U1,V1,P); - DrawTo(P,Pts,Cells); - } - } else { - CurvType = (S.BasisCurve())->GetType(); - switch (CurvType) { - case GeomAbs_Line : - break; - case GeomAbs_Circle : - case GeomAbs_Ellipse : - for (j = 1; j < myDiscret; j++) { - U1 += stepU; - V1 += stepV; - S.D0(U1,V1,P); - DrawTo(P,Pts,Cells); - } - break; - case GeomAbs_Parabola : - case GeomAbs_Hyperbola : - case GeomAbs_BezierCurve : - case GeomAbs_BSplineCurve : - case GeomAbs_OtherCurve : - for (j = 1; j <= myDiscret/2; j++) { - - PlotCount = 0; - - PlotIso ( S, T, U1, V1,(T == GeomAbs_IsoV) ? stepU*2. : stepV*2., halt, Pts, Cells); - U1 += stepU*2.; - V1 += stepV*2.; - } - break; - } - } - } - } - S.D0(U2,V2,P); - DrawTo(P,Pts,Cells); - } -} - -//======================================================================= -// Function : PlotIso -// Purpose : Plot iso for other surface -//======================================================================= - -void GEOM_OCCReader::PlotIso (BRepAdaptor_Surface& S, - GeomAbs_IsoType T, - Standard_Real& U, - Standard_Real& V, - Standard_Real Step, - Standard_Boolean& halt, - vtkPoints* Pts, - vtkCellArray* Cells) -{ - - ++PlotCount; - - gp_Pnt Pl, Pr, Pm; - - if (T == GeomAbs_IsoU) { - S.D0(U, V, Pl); - S.D0(U, V + Step/2., Pm); - S.D0(U, V + Step, Pr); - } else { - S.D0(U, V, Pl); - S.D0(U + Step/2., V, Pm); - S.D0(U + Step, V, Pr); - } - - if (PlotCount > MaxPlotCount) { - DrawTo(Pr,Pts,Cells); - return; - } - - if (Pm.Distance(Pl) + Pm.Distance(Pr) <= IsoRatio*Pl.Distance(Pr)) { - DrawTo(Pr,Pts,Cells); - } else - if (T == GeomAbs_IsoU) { - PlotIso ( S, T, U, V, Step/2, halt, Pts, Cells); - Standard_Real aLocalV = V + Step/2 ; - PlotIso ( S, T, U, aLocalV , Step/2, halt, Pts, Cells); - } else { - PlotIso ( S, T, U, V, Step/2, halt, Pts, Cells); - Standard_Real aLocalU = U + Step/2 ; - PlotIso ( S, T, aLocalU , V, Step/2, halt, Pts, Cells); - } -} - -//======================================================================= -// Function : TransferEdgeWData -// Purpose : Transfert wireframe data for EDGE -//======================================================================= - -void GEOM_OCCReader::TransferEdgeWData(const TopoDS_Edge& aEdge, - vtkPoints* Pts, - vtkCellArray* Cells) { - - - Handle(Poly_PolygonOnTriangulation) aEdgePoly; - Standard_Integer i = 1; - Handle(Poly_Triangulation) T; - TopLoc_Location aEdgeLoc; - BRep_Tool::PolygonOnTriangulation(aEdge, aEdgePoly, T, aEdgeLoc, i); - - Handle(Poly_Polygon3D) P; - if(aEdgePoly.IsNull()) { - P = BRep_Tool::Polygon3D(aEdge, aEdgeLoc); - } - - if(P.IsNull() && aEdgePoly.IsNull()) - return; - - // Location edges - //--------------- - - gp_Trsf edgeTransf; - Standard_Boolean isidtrsf = true; - if(!aEdgeLoc.IsIdentity()) { - isidtrsf = false; - edgeTransf = aEdgeLoc.Transformation(); - } - - Standard_Integer nbnodes; - if (aEdgePoly.IsNull()) { - nbnodes = P->NbNodes(); - const TColgp_Array1OfPnt& theNodesP = P->Nodes(); - - float coord[3]; - int pts[2]; - - for(int j=1;jInsertNextPoint(coord); - - // insert pt2 - coord[0] = pt2.X(); coord[1] = pt2.Y(); coord[2] = pt2.Z(); - pts[1] = Pts->InsertNextPoint(coord); - - // insert line (pt1,pt2) - Cells->InsertNextCell(2,pts); - } - } else { - nbnodes = aEdgePoly->NbNodes(); - const TColStd_Array1OfInteger& Nodesidx = aEdgePoly->Nodes(); - const TColgp_Array1OfPnt& theNodesPoly = T->Nodes(); - - float coord[3]; - int pts[2]; - - for(int j=1;jInsertNextPoint(coord); - - // insert pt2 - coord[0] = pt2.X(); coord[1] = pt2.Y(); coord[2] = pt2.Z(); - pts[1] = Pts->InsertNextPoint(coord); - - // insert line (pt1,pt2) - Cells->InsertNextCell(2,pts); - } - } -} - -/* Standard_Integer nbnodes = aEdgePoly->NbNodes(); - const TColStd_Array1OfInteger& Nodesidx = aEdgePoly->Nodes(); - const TColgp_Array1OfPnt& theNodes = T->Nodes(); - - float coord[3]; - int pts[2]; - - - // PUSH NODES - for(i=1;i<=nbnodes;i++) { - Standard_Integer id = Nodesidx(i); - gp_Pnt pt = theNodes(id); - - float coord[3]; - if(!isidtrsf) pt.Transform(edgeTransf); - - coord[0] = pt.X(); coord[1] = pt.Y(); coord[2] = pt.Z(); - - Pts->SetPoint(id-1,coord); - - } - - // PUSH EDGES - for(i=1;iInsertNextCell(2,pts); - } - - - }*/ - -//======================================================================= -// Function : TransferVertexWData -// Purpose : Transfert wireframe data for VERTEX -//======================================================================= - -void GEOM_OCCReader::TransferVertexWData(const TopoDS_Vertex& aVertex, - vtkPoints* Pts, - vtkCellArray* Cells) { -#define ZERO_COORD coord[0] = 0.0; coord[1] = 0.0; coord[2] = 0.0 - - gp_Pnt P = BRep_Tool::Pnt( aVertex ); - float delta = 1, coord[3]; - int pts[2]; - // insert pt - ZERO_COORD; coord[0] = +delta; - pts[0] = Pts->InsertNextPoint(coord); - coord[0] = -delta; - pts[1] = Pts->InsertNextPoint(coord); - // insert line (pt1,pt2) - Cells->InsertNextCell(2,pts); - - ZERO_COORD; coord[1] = +delta; - pts[0] = Pts->InsertNextPoint(coord); - coord[1] = -delta; - pts[1] = Pts->InsertNextPoint(coord); - // insert line (pt1,pt2) - Cells->InsertNextCell(2,pts); - - ZERO_COORD; coord[2] = +delta; - pts[0] = Pts->InsertNextPoint(coord); - coord[2] = -delta; - pts[1] = Pts->InsertNextPoint(coord); - // insert line (pt1,pt2) - Cells->InsertNextCell(2,pts); - -#undef ZERO_COORD -} - -//======================================================================= -// Function : TransferEdgeSData( -// Purpose : Transfert shading data for EDGE -//======================================================================= - -void GEOM_OCCReader::TransferEdgeSData(const TopoDS_Edge& aFace, - vtkPoints* Pts, - vtkCellArray* Cells) -{ -} - - -//======================================================================= -// Function : TransferFaceSData -// Purpose : Transfert shading data for FACE -//======================================================================= -void GEOM_OCCReader::TransferFaceSData(const TopoDS_Face& aFace, - vtkPoints* Pts, - vtkCellArray* Cells) { - - TopLoc_Location aLoc; - Handle(Poly_Triangulation) aPoly = BRep_Tool::Triangulation(aFace,aLoc); - if(aPoly.IsNull()) return; - else { - - gp_Trsf myTransf; - Standard_Boolean identity = true; - if(!aLoc.IsIdentity()) { - identity = false; - myTransf = aLoc.Transformation(); - } - - Standard_Integer nbNodesInFace = aPoly->NbNodes(); - Standard_Integer nbTriInFace = aPoly->NbTriangles(); - - const Poly_Array1OfTriangle& Triangles = aPoly->Triangles(); - const TColgp_Array1OfPnt& Nodes = aPoly->Nodes(); - - Standard_Integer i; - for(i=1;i<=nbNodesInFace;i++) { - gp_Pnt P = Nodes(i); - float coord[3]; - if(!identity) P.Transform(myTransf); - coord[0] = P.X(); coord[1] = P.Y(); coord[2] = P.Z(); - Pts->SetPoint(i-1,coord); - } - - for(i=1;i<=nbTriInFace;i++) { - // Get the triangle - - Standard_Integer N1,N2,N3; - Triangles(i).Get(N1,N2,N3); - - int pts[3]; - pts[0] = N1-1; pts[1] = N2-1; pts[2] = N3-1; - Cells->InsertNextCell(3,pts); - - } - } -} - -//======================================================================= -// Function : ComputeShading -// Purpose : Compute the shape in shading mode -//======================================================================= -void GEOM_OCCReader::ComputeShading(vtkPoints* Pts,vtkCellArray* Cells){ - - // Check the type of the shape: - if(myShape.ShapeType() == TopAbs_FACE) { - // Face - TransferFaceSData(TopoDS::Face(myShape),Pts,Cells); - } - else { - if(myShape.ShapeType() == TopAbs_EDGE) { - // Edge - TransferEdgeSData(TopoDS::Edge(myShape),Pts,Cells); - } - else { - } - - } - -} - -//======================================================================= -// Function : -// Purpose : Set parameters -//======================================================================= -void GEOM_OCCReader::setDisplayMode(int thenewmode) { - amode = thenewmode; -} - -void GEOM_OCCReader::setTopo(const TopoDS_Shape& aShape) { - myShape = aShape; -} - -void GEOM_OCCReader::setForceUpdate(Standard_Boolean bol) { - forced = bol; -} - -//======================================================================= -// Function : -// Purpose : Get parameters -//======================================================================= -const TopoDS_Shape& GEOM_OCCReader::getTopo() { - return myShape; -} - -int GEOM_OCCReader::getDisplayMode() { - return amode; -} - - diff --git a/src/OBJECT/GEOM_OCCReader.h b/src/OBJECT/GEOM_OCCReader.h deleted file mode 100644 index e10ce3cda..000000000 --- a/src/OBJECT/GEOM_OCCReader.h +++ /dev/null @@ -1,143 +0,0 @@ -// GEOM OBJECT : interactive object for Geometry entities visualization -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOM_OCCReader.h -// Author : Christophe ATTANASIO -// Module : GEOM -// $Header$ - -/*! - \class GEOM_OCCReader GEOM_OCCReader.h - \brief This class allow to display a OpenCASCADE CAD model in a VTK viewer. -*/ - -#ifndef GEOM_OCCREADER_H -#define GEOM_OCCREADER_H - -#include - -class vtkPoints; -class vtkCellArray; - -// OpenCASCADE -#include -#include -#include -#include -#include -#include - -#ifdef _WIN_32 -#define VTKOCC_EXPORT __declspec (dllexport) -#else -#define VTKOCC_EXPORT -#endif - -class VTKOCC_EXPORT GEOM_OCCReader : public vtkPolyDataSource { - - // methods - - public: - - static GEOM_OCCReader* New(); - - const TopoDS_Shape& getTopo(); - - void setTopo(const TopoDS_Shape& ashape); - - int getDisplayMode(); - void setDisplayMode(int); - - void setForceUpdate(Standard_Boolean bol); - - protected: - - GEOM_OCCReader(); - ~GEOM_OCCReader(); - void Execute(); - - void ComputeShading(vtkPoints* Pts,vtkCellArray* Cells); - void ComputeWireframe(vtkPoints* Pts,vtkCellArray* Cells); - - void TransferFaceSData(const TopoDS_Face& aFace, - vtkPoints* Pts, - vtkCellArray* Cells); - - void TransferFaceWData(const TopoDS_Face& aFace, - vtkPoints* Pts, - vtkCellArray* Cells); - - void TransferEdgeSData(const TopoDS_Edge& aEdge, - vtkPoints* Pts, - vtkCellArray* Cells); - - void TransferEdgeWData(const TopoDS_Edge& aEdge, - vtkPoints* Pts, - vtkCellArray* Cells); - - void TransferVertexWData(const TopoDS_Vertex& aVertex, - vtkPoints* Pts, - vtkCellArray* Cells); - - void createISO(const TopoDS_Face &, - double, int, - vtkPoints* Pts, - vtkCellArray* Cells); - - void DrawIso(GeomAbs_IsoType aType, - Standard_Real PParm, - Standard_Real p1, - Standard_Real p2, - vtkPoints* Pts, - vtkCellArray* Cells, - Standard_Integer& startidx); - - void MoveTo(gp_Pnt P, - vtkPoints* Pts); - - void DrawTo(gp_Pnt P, - vtkPoints* Pts, - vtkCellArray* Cells); - - void PlotIso(BRepAdaptor_Surface& S, - GeomAbs_IsoType T, - Standard_Real& U, - Standard_Real& V, - Standard_Real Step, - Standard_Boolean& halt, - vtkPoints* Pts, - vtkCellArray* Cells); - - // fields - - private: - - Standard_Boolean forced; - int discretiso; - int amode; - int nbisos; - TopoDS_Shape myShape; - -}; - -#endif //GEOM_OCCREADER_H diff --git a/src/OBJECT/GEOM_VTKTrihedron.cxx b/src/OBJECT/GEOM_VTKTrihedron.cxx deleted file mode 100644 index 67e32cedd..000000000 --- a/src/OBJECT/GEOM_VTKTrihedron.cxx +++ /dev/null @@ -1,396 +0,0 @@ -// SALOME GEOM : -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOM_VTKTrihedron.cxx -// Author : Sergey LITONIN -// Module : SALOME -// $Header: - -#include "GEOM_VTKTrihedron.hxx" -#include "utilities.h" -#include "GEOM_OCCReader.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "VTKViewer_VectorText.h" - - - -/* - Class : GEOM_VTKTrihedron - Description : Class for displaying axis of trihedron in VTK viewer. - Placement of trihedron is chahged with SetPlacement() method -*/ -class GEOM_VTKTrihedronAxis : public VTKViewer_Axis -{ -protected: - - GEOM_VTKTrihedronAxis(); - GEOM_VTKTrihedronAxis( const GEOM_VTKTrihedronAxis& ); - ~GEOM_VTKTrihedronAxis(); - -public: - - vtkTypeMacro( GEOM_VTKTrihedronAxis, VTKViewer_Axis ); - static GEOM_VTKTrihedronAxis* New(); - - void SetAxis( const gp_Ax1& theAxis, const int theRot, float theColor[ 3 ] ); - virtual void Render( vtkRenderer* theRenderer ); - virtual void SetSize( float theSize ); - gp_Pnt GetOri() const; - void SetColor( const float theColor[ 3 ] ); - -private: - - float myOri[ 3 ]; - vtkMatrix4x4* myMatrix; - vtkTransform* myTrsf; -}; - -vtkStandardNewMacro( GEOM_VTKTrihedronAxis ); - -GEOM_VTKTrihedronAxis::GEOM_VTKTrihedronAxis() -{ - vtkProperty* aProperty = vtkProperty::New(); - aProperty->SetColor( 0.0, 0.0, 1.0 ); - SetProperty( aProperty ); - aProperty->Delete(); - myMatrix = vtkMatrix4x4::New(); - myTrsf = vtkTransform::New(); -} - -GEOM_VTKTrihedronAxis::~GEOM_VTKTrihedronAxis() -{ - myMatrix->Delete(); - myTrsf->Delete(); -} - -void GEOM_VTKTrihedronAxis::SetSize( float theSize ) -{ - float aPosition[ 3 ] = { myOri[ 0 ] + myDir[ 0 ] * theSize, - myOri[ 1 ] + myDir[ 1 ] * theSize, - myOri[ 2 ] + myDir[ 2 ] * theSize }; - - myLineSource->SetPoint1( myOri[ 0 ], myOri[ 1 ], myOri[ 2 ] ); - myLineSource->SetPoint2( aPosition ); - - myArrowActor->SetPosition( 0, 0, 0 ); - myArrowActor->SetOrientation( 0, 0, 0 ); - myArrowActor->SetUserMatrix( 0 ); - - - gp_Trsf aTrsf; - aTrsf.SetDisplacement( gp_Ax3( gp_Pnt( 0, 0, 0 ), gp_Dir( 1, 0, 0 ) ), - gp_Ax3( GetOri(), gp_Dir( myDir[ 0 ], myDir[ 1 ], myDir[ 2 ] ) ) ); - - const gp_XYZ& aTrans = aTrsf.TranslationPart(); - gp_Mat aRot = aTrsf.VectorialPart(); - - for ( int i = 1; i <= 3; i++ ) - for ( int j = 1; j <= 3; j++ ) - myMatrix->SetElement( i - 1, j - 1, aRot( i, j ) ); - - myArrowActor->SetUserMatrix( myMatrix ); - myArrowActor->SetPosition( aPosition ); - - myLabelActor->SetPosition( 0, 0, 0 ); - myLabelActor->AddPosition( aPosition ); -} - -void GEOM_VTKTrihedronAxis::Render(vtkRenderer* theRenderer) -{ - myLineActor->Render( theRenderer ); - myArrowActor->Render( theRenderer ); - myLabelActor->Render( theRenderer ); - - vtkCamera* aCamera = theRenderer->GetActiveCamera(); - SetCamera( aCamera ); -} - -gp_Pnt GEOM_VTKTrihedronAxis::GetOri() const -{ - return gp_Pnt( myOri[ 0 ], myOri[ 1 ], myOri[ 2 ] ); -} - -void GEOM_VTKTrihedronAxis::SetAxis( const gp_Ax1& theAxis, - const int theRot, - float theColor[ 3 ] ) -{ - gp_Pnt aLoc = theAxis.Location(); - gp_Dir aDir = theAxis.Direction(); - - myOri[ 0 ] = aLoc.X(); - myOri[ 1 ] = aLoc.Y(); - myOri[ 2 ] = aLoc.Z(); - - myDir[ 0 ] = aDir.X(); - myDir[ 1 ] = aDir.Y(); - myDir[ 2 ] = aDir.Z(); - - float aColor[ 3 ] = { 0, 0, 0 }; - aColor[ theRot ] = 1; - vtkProperty* aProperty = vtkProperty::New(); - if ( theColor[ 0 ] == -1 ) - aProperty->SetColor( aColor[ 0 ], aColor[ 1 ], aColor[ 2 ] ); - else - aProperty->SetColor( theColor[ 0 ], theColor[ 1 ], theColor[ 2 ] ); - SetProperty( aProperty ); - aProperty->Delete(); - - if ( theRot == 0 ) myVectorText->SetText( "X" ); - else if ( theRot == 1 ) myVectorText->SetText( "Y" ); - else if ( theRot == 2 ) myVectorText->SetText( "Z" ); -} - -void GEOM_VTKTrihedronAxis::SetColor( const float theColor[ 3 ] ) -{ - vtkProperty* aProperty = vtkProperty::New(); - aProperty->SetColor( theColor[ 0 ], theColor[ 1 ], theColor[ 2 ] ); - SetProperty( aProperty ); - aProperty->Delete(); -} - - -/* - Class : GEOM_VTKTrihedron - Description : Class for displaying trihedron of local CS in VTK viewer. - Placement of trihedron is chahged with SetPlacement() method -*/ - -vtkStandardNewMacro( GEOM_VTKTrihedron ); - -GEOM_VTKTrihedron::GEOM_VTKTrihedron() -{ - myMapper = vtkPolyDataMapper::New(); - myAxis[ 0 ] = myAxis[ 1 ] = myAxis[ 2 ] = 0; - myPresent = vtkActorCollection::New(); - mySize = 100; - SetInfinitive( true ); - myColor[ 0 ] = myColor[ 1 ] = myColor[ 1 ] = -1; - SetInfinitive( true ); -} - -GEOM_VTKTrihedron::~GEOM_VTKTrihedron() -{ - myPresent->RemoveAllItems(); - myPresent->Delete(); - for ( int i = 0; i < 3; i++ ) - myAxis[i]->Delete(); - - if ( myMapper ) - myMapper->Delete(); -} - -void GEOM_VTKTrihedron::SetSize( float theSize ) -{ - mySize = theSize; - for ( int i = 0; i < 3; i++ ) - myAxis[i]->SetSize( theSize ); - - - // Calculate new sensitive area - gp_Pnt anOri = ( (GEOM_VTKTrihedronAxis*)myAxis[ 0 ] )->GetOri(); - gp_Pnt aEndX( myLocation.XYZ() + myDirX.XYZ() * mySize ); - gp_Pnt aEndY( myLocation.XYZ() + myDirY.XYZ() * mySize ); - gp_Pnt aEndZ( myLocation.XYZ() + myDirZ.XYZ() * mySize ); - - vtkLineSource* aSrcX = vtkLineSource::New(); - vtkLineSource* aSrcY = vtkLineSource::New(); - vtkLineSource* aSrcZ = vtkLineSource::New(); - - aSrcX->SetPoint1( anOri.X(), anOri.Y(), anOri.Z() ); - aSrcX->SetPoint2( aEndX.X(), aEndX.Y(), aEndX.Z() ); - - aSrcY->SetPoint1( anOri.X(), anOri.Y(), anOri.Z() ); - aSrcY->SetPoint2( aEndY.X(), aEndY.Y(), aEndY.Z() ); - - aSrcZ->SetPoint1( anOri.X(), anOri.Y(), anOri.Z() ); - aSrcZ->SetPoint2( aEndZ.X(), aEndZ.Y(), aEndZ.Z() ); - - vtkAppendPolyData* aRes = vtkAppendPolyData::New(); - aRes->AddInput( aSrcX->GetOutput() ); - aRes->AddInput( aSrcY->GetOutput() ); - aRes->AddInput( aSrcZ->GetOutput() ); - - myMapper->SetInput( aRes->GetOutput() ); - SALOME_Actor::SetMapper( myMapper ); - - aSrcX->Delete(); - aSrcY->Delete(); - aSrcZ->Delete(); - aRes->Delete(); -} - -void GEOM_VTKTrihedron::SetVisibility( VTKViewer_Trihedron::TVisibility theVis ) -{ - for ( int i = 0; i < 3; i++ ) - myAxis[i]->SetVisibility( theVis ); -} - -void GEOM_VTKTrihedron::AddToRender( vtkRenderer* theRenderer ) -{ - vtkCamera* aCamera = theRenderer->GetActiveCamera(); - for(int i = 0; i < 3; i++) - { - myAxis[i]->AddToRender(theRenderer); - myAxis[i]->SetCamera(aCamera); - } - - theRenderer->AddActor( this ); -} - -void GEOM_VTKTrihedron::RemoveFromRender( vtkRenderer* theRenderer ) -{ - myPresent->InitTraversal(); - while(vtkActor* anActor = myPresent->GetNextActor()) - theRenderer->RemoveActor(anActor); -} - -int GEOM_VTKTrihedron::GetVisibleActorCount(vtkRenderer* theRenderer) -{ - vtkActorCollection* aCollection = theRenderer->GetActors(); - aCollection->InitTraversal(); - int aCount = 0; - while( vtkActor* prop = aCollection->GetNextActor() ) - if ( prop->GetVisibility() ) - if ( SALOME_Actor* anActor = SALOME_Actor::SafeDownCast( prop ) ) - if ( !anActor->IsInfinitive() ) - aCount++; - - vtkCamera* aCamera = theRenderer->GetActiveCamera(); - for(int i = 0; i < 3; i++) - myAxis[i]->SetCamera( aCamera ); - - return aCount; -} - -void GEOM_VTKTrihedron::SetCamera( vtkCamera* theCamera ) -{ - for(int i = 0; i < 3; i++) - myAxis[i]->SetCamera( theCamera ); -} - -void GEOM_VTKTrihedron::SetPlacement( const Handle(Geom_Axis2Placement)& thePlc ) -{ - gp_Ax2 anAx2 = thePlc->Ax2(); - - myDirX = anAx2.XDirection(); - myDirY = anAx2.YDirection(); - myDirZ = anAx2.Direction(); - - myLocation = anAx2.Axis().Location(); - - if ( myAxis[ 0 ] != 0 ) myAxis[ 0 ]->Delete(); - if ( myAxis[ 1 ] != 0 ) myAxis[ 1 ]->Delete(); - if ( myAxis[ 2 ] != 0 ) myAxis[ 2 ]->Delete(); - - myAxis[ 0 ] = GEOM_VTKTrihedronAxis::New(); - myAxis[ 1 ] = GEOM_VTKTrihedronAxis::New(); - myAxis[ 2 ] = GEOM_VTKTrihedronAxis::New(); - - ( (GEOM_VTKTrihedronAxis*)myAxis[ 0 ] )->SetAxis( gp_Ax1( myLocation, myDirX ), 0, myColor ); - ( (GEOM_VTKTrihedronAxis*)myAxis[ 1 ] )->SetAxis( gp_Ax1( myLocation, myDirY ), 1, myColor ); - ( (GEOM_VTKTrihedronAxis*)myAxis[ 2 ] )->SetAxis( gp_Ax1( myLocation, myDirZ ), 2, myColor ); - - SetSize( mySize ); -} - -vtkMapper* GEOM_VTKTrihedron::GetMapper() -{ - return myMapper; -} - -void GEOM_VTKTrihedron::Render(vtkRenderer* r, vtkMapper *) -{ - ( (GEOM_VTKTrihedronAxis*)myAxis[ 0 ] )->Render( r ); - ( (GEOM_VTKTrihedronAxis*)myAxis[ 1 ] )->Render( r ); - ( (GEOM_VTKTrihedronAxis*)myAxis[ 2 ] )->Render( r ); -} - -void GEOM_VTKTrihedron::SetColor( float r, float g, float b ) -{ - myColor[ 0 ] = r; - myColor[ 1 ] = g; - myColor[ 2 ] = b; - - if ( myAxis[ 0 ] ) ( (GEOM_VTKTrihedronAxis*)myAxis[ 0 ] )->SetColor( myColor ); - if ( myAxis[ 1 ] ) ( (GEOM_VTKTrihedronAxis*)myAxis[ 1 ] )->SetColor( myColor ); - if ( myAxis[ 2 ] ) ( (GEOM_VTKTrihedronAxis*)myAxis[ 2 ] )->SetColor( myColor ); -} - -void GEOM_VTKTrihedron::GetColor( float& r, float& g, float& b ) -{ - r = myColor[ 0 ]; - g = myColor[ 1 ]; - b = myColor[ 2 ]; -} - -bool GEOM_VTKTrihedron::IsSetCamera() const -{ - return true; -} - -bool GEOM_VTKTrihedron::IsResizable() const -{ - return true; -} - - - - - - - - - - - - - - - - diff --git a/src/OBJECT/GEOM_VTKTrihedron.hxx b/src/OBJECT/GEOM_VTKTrihedron.hxx deleted file mode 100644 index 92332c8c6..000000000 --- a/src/OBJECT/GEOM_VTKTrihedron.hxx +++ /dev/null @@ -1,101 +0,0 @@ -// SALOME GEOM : -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : GEOM_VTKTrihedron.h -// Author : Sergey LITONIN -// Module : SALOME -// $Header: - -#ifndef GEOM_VTKTrihedron_H -#define GEOM_VTKTrihedron_H - -#include -#include "SALOME_Actor.h" -#include "VTKViewer_Trihedron.h" - -#ifdef WNT -#include -#else -#define SALOME_WNT_EXPORT -#endif - - -class vtkActorCollection; -class vtkRenderer; -class vtkPolyDataMapper; - -/* - Class : GEOM_VTKTrihedron - Description : Class for displaying trihedron of local CS in VTK viewer. - Placement of trihedron is chahged with SetPlacement() method -*/ - -class SALOME_WNT_EXPORT GEOM_VTKTrihedron : public SALOME_Actor -{ - -protected: - GEOM_VTKTrihedron(); - GEOM_VTKTrihedron( const GEOM_VTKTrihedron& ); - virtual ~GEOM_VTKTrihedron(); - -public: - vtkTypeMacro( GEOM_VTKTrihedron, SALOME_Actor ); - static GEOM_VTKTrihedron* New(); - - virtual float GetSize() { return mySize;} - - virtual void SetVisibility( VTKViewer_Trihedron::TVisibility theVis ); - virtual void VisibilityOff() { SetVisibility( VTKViewer_Trihedron::eOff ); } - virtual void VisibilityOn() { SetVisibility( VTKViewer_Trihedron::eOn ); } - - virtual void AddToRender( vtkRenderer* theRenderer ); - virtual void RemoveFromRender( vtkRenderer* theRenderer ); - - virtual int GetVisibleActorCount( vtkRenderer* theRenderer ); - - void SetPlacement( const Handle(Geom_Axis2Placement)& ); - - virtual vtkMapper* GetMapper(); - - virtual void Render(vtkRenderer *, vtkMapper *); - virtual bool IsSetCamera() const; - virtual bool IsResizable() const; - virtual void SetSize( float ); - virtual void SetCamera( vtkCamera* ); - - void SetColor( float r, float g, float b ); - void GetColor( float& r, float& g, float& b ); - - virtual bool hasHighlight() { return false; } - -protected: - vtkActorCollection* myPresent; - VTKViewer_Axis* myAxis[3]; - vtkPolyDataMapper* myMapper; - float mySize; - gp_Pnt myLocation; - gp_Dir myDirX, myDirY, myDirZ; - float myColor[ 3 ]; -}; - -#endif diff --git a/src/OBJECT/Handle_GEOM_AISShape.hxx b/src/OBJECT/Handle_GEOM_AISShape.hxx deleted file mode 100644 index af8efe053..000000000 --- a/src/OBJECT/Handle_GEOM_AISShape.hxx +++ /dev/null @@ -1,100 +0,0 @@ -// GEOM OBJECT : interactive object for Geometry entities visualization -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : Handle_GEOM_AISShape.hxx -// Module : GEOM - -#ifndef _Handle_GEOM_AISShape_HeaderFile -#define _Handle_GEOM_AISShape_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_SALOME_AISShape_HeaderFile -#include "Handle_SALOME_AISShape.hxx" -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(SALOME_AISShape); -class GEOM_AISShape; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOM_AISShape); - -class Handle(GEOM_AISShape) : public Handle(SALOME_AISShape) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } -// inline void operator delete(void *anAddress, size_t size) -// { -// if (anAddress) Standard::Free((Standard_Address&)anAddress,size); -// } - Handle(GEOM_AISShape)():Handle(SALOME_AISShape)() {} - Handle(GEOM_AISShape)(const Handle(GEOM_AISShape)& aHandle) : Handle(SALOME_AISShape)(aHandle) - { - } - - Handle(GEOM_AISShape)(const GEOM_AISShape* anItem) : Handle(SALOME_AISShape)((SALOME_AISShape *)anItem) - { - } - - Handle(GEOM_AISShape)& operator=(const Handle(GEOM_AISShape)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOM_AISShape)& operator=(const GEOM_AISShape* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOM_AISShape* operator->() - { - return (GEOM_AISShape *)ControlAccess(); - } - - GEOM_AISShape* operator->() const - { - return (GEOM_AISShape *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOM_AISShape)(); - - Standard_EXPORT static const Handle(GEOM_AISShape) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/OBJECT/Handle_GEOM_InteractiveObject.hxx b/src/OBJECT/Handle_GEOM_InteractiveObject.hxx deleted file mode 100644 index 63c0e8e3f..000000000 --- a/src/OBJECT/Handle_GEOM_InteractiveObject.hxx +++ /dev/null @@ -1,100 +0,0 @@ -// GEOM OBJECT : interactive object for Geometry entities visualization -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : Handle_GEOM_InteractiveObject.hxx -// Module : GEOM - -#ifndef _Handle_GEOM_InteractiveObject_HeaderFile -#define _Handle_GEOM_InteractiveObject_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_SALOME_InteractiveObject_HeaderFile -#include "Handle_SALOME_InteractiveObject.hxx" -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(SALOME_InteractiveObject); -class GEOM_InteractiveObject; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOM_InteractiveObject); - -class Handle(GEOM_InteractiveObject) : public Handle(SALOME_InteractiveObject) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } -// inline void operator delete(void *anAddress, size_t size) -// { -// if (anAddress) Standard::Free((Standard_Address&)anAddress,size); -// } - Handle(GEOM_InteractiveObject)():Handle(SALOME_InteractiveObject)() {} - Handle(GEOM_InteractiveObject)(const Handle(GEOM_InteractiveObject)& aHandle) : Handle(SALOME_InteractiveObject)(aHandle) - { - } - - Handle(GEOM_InteractiveObject)(const GEOM_InteractiveObject* anItem) : Handle(SALOME_InteractiveObject)((SALOME_InteractiveObject *)anItem) - { - } - - Handle(GEOM_InteractiveObject)& operator=(const Handle(GEOM_InteractiveObject)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOM_InteractiveObject)& operator=(const GEOM_InteractiveObject* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOM_InteractiveObject* operator->() - { - return (GEOM_InteractiveObject *)ControlAccess(); - } - - GEOM_InteractiveObject* operator->() const - { - return (GEOM_InteractiveObject *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOM_InteractiveObject)(); - - Standard_EXPORT static const Handle(GEOM_InteractiveObject) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/OBJECT/Makefile.in b/src/OBJECT/Makefile.in deleted file mode 100644 index 589469a87..000000000 --- a/src/OBJECT/Makefile.in +++ /dev/null @@ -1,68 +0,0 @@ -# GEOM OBJECT : interactive object for Geometry entities visualization -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Module : GEOM - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -EXPORT_HEADERS = GEOM_Actor.h \ - GEOM_AssemblyBuilder.h \ - GEOM_AISShape.hxx \ - Handle_GEOM_AISShape.hxx \ - GEOM_InteractiveObject.hxx \ - Handle_GEOM_InteractiveObject.hxx \ - GEOM_AISTrihedron.hxx \ - GEOM_VTKTrihedron.hxx - -# Libraries targets - -LIB = libGEOMObject.la -LIB_SRC = GEOM_Actor.cxx \ - GEOM_OCCReader.cxx \ - GEOM_AssemblyBuilder.cxx \ - GEOM_AISShape.cxx \ - GEOM_InteractiveObject.cxx \ - GEOM_AISTrihedron.cxx \ - GEOM_VTKTrihedron.cxx - -LIB_CLIENT_IDL = - -# Executables targets -BIN = -BIN_SRC = - -CPPFLAGS+=$(QT_INCLUDES) $(PYTHON_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome -CXXFLAGS += -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome -LDFLAGS+=$(PYTHON_LIBS) $(QT_MT_LIBS) $(VTK_LIBS) $(OGL_LIBS) -lSalomeObject -L${KERNEL_ROOT_DIR}/lib/salome -L${GUI_ROOT_DIR}/lib/salome -%_moc.cxx: %.h - $(MOC) $< -o $@ - - -@CONCLUDE@ diff --git a/src/OperationGUI/Makefile.in b/src/OperationGUI/Makefile.in deleted file mode 100644 index 6b7f980d8..000000000 --- a/src/OperationGUI/Makefile.in +++ /dev/null @@ -1,70 +0,0 @@ -# GEOM OPERATIONGUI : -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Author : Damien COQUERET (OCC) -# Module : GEOM -# $Header: - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -# header files -EXPORT_HEADERS= - -# Libraries targets -LIB = libOperationGUI.la - -LIB_SRC = OperationGUI.cxx \ - OperationGUI_ArchimedeDlg.cxx \ - OperationGUI_PartitionDlg.cxx \ - OperationGUI_MaterialDlg.cxx \ - OperationGUI_FilletDlg.cxx \ - OperationGUI_ChamferDlg.cxx \ - OperationGUI_ClippingDlg.cxx - -LIB_MOC = \ - OperationGUI_ArchimedeDlg.h \ - OperationGUI_PartitionDlg.h \ - OperationGUI_MaterialDlg.h \ - OperationGUI_FilletDlg.h \ - OperationGUI_ChamferDlg.h \ - OperationGUI_ClippingDlg.h - -LIB_CLIENT_IDL = SALOME_GenericObj.idl SALOME_Component.idl SALOME_Exception.idl - -LIB_SERVER_IDL = - -# additionnal information to compil and link file - -CPPFLAGS += $(QT_INCLUDES) $(VTK_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES) $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome -CXXFLAGS += -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome - -LDFLAGS += $(CAS_LDPATH) -lTKFillet -lGEOMBase - -@CONCLUDE@ diff --git a/src/OperationGUI/OperationGUI.cxx b/src/OperationGUI/OperationGUI.cxx deleted file mode 100644 index 6838a57d7..000000000 --- a/src/OperationGUI/OperationGUI.cxx +++ /dev/null @@ -1,125 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : OperationGUI.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header$ - -#include "OperationGUI.h" - -#include "SUIT_Session.h" -#include "SUIT_Desktop.h" - -#include -#include -#include - -#include "OperationGUI_PartitionDlg.h" // Method PARTITION -#include "OperationGUI_ArchimedeDlg.h" // Method ARCHIMEDE -#include "OperationGUI_FilletDlg.h" // Method FILLET -#include "OperationGUI_ChamferDlg.h" // Method CHAMFER - -#include "OperationGUI_ClippingDlg.h" - -using namespace std; - -OperationGUI* OperationGUI::myGUIObject = 0; - -//======================================================================= -// function : GetOperationGUI() -// purpose : Get the only OperationGUI object [ static ] -//======================================================================= -OperationGUI* OperationGUI::GetOperationGUI( GeometryGUI* parent ) -{ - if ( myGUIObject == 0 ) { - // init OperationGUI only once - myGUIObject = new OperationGUI( parent ); - } - return myGUIObject; -} - -//======================================================================= -// function : OperationGUI() -// purpose : Constructor -//======================================================================= -OperationGUI::OperationGUI(GeometryGUI* parent) : GEOMGUI(parent) -{ -} - - -//======================================================================= -// function : ~OperationGUI() -// purpose : Destructor -//======================================================================= -OperationGUI::~OperationGUI() -{ -} - - -//======================================================================= -// function : OnGUIEvent() -// purpose : -//======================================================================= -bool OperationGUI::OnGUIEvent( int theCommandID, SUIT_Desktop* parent ) -{ - getGeometryGUI()->EmitSignalDeactivateDialog(); - - switch ( theCommandID ) - { - case 503: // PARTITION - ( new OperationGUI_PartitionDlg( parent, "" ) )->show(); - break; - case 504: // ARCHIMEDE - new OperationGUI_ArchimedeDlg( getGeometryGUI(), parent ); - break; - case 505: // FILLET - new OperationGUI_FilletDlg( parent ); - break; - case 506: // CHAMFER - new OperationGUI_ChamferDlg( parent ); - break; - case 507: // CLIPPING RANGE - ( new OperationGUI_ClippingDlg( parent, "" ) )->show(); - break; - default: - SUIT_Session::session()->activeApplication()->putInfo(tr("GEOM_PRP_COMMAND").arg(theCommandID)); - break; - } - - return true; -} - -//===================================================================================== -// EXPORTED METHODS -//===================================================================================== -extern "C" -{ -#ifdef WNT - __declspec( dllexport ) -#endif - GEOMGUI* GetLibGUI(GeometryGUI* parent) - { - return OperationGUI::GetOperationGUI(parent); - } -} diff --git a/src/OperationGUI/OperationGUI.h b/src/OperationGUI/OperationGUI.h deleted file mode 100644 index 02e38cf12..000000000 --- a/src/OperationGUI/OperationGUI.h +++ /dev/null @@ -1,56 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : OperationGUI.h -// Author : Damien COQUERET -// Module : GEOM -// $Header$ - -#ifndef OPERATIONGUI_H -#define OPERATIONGUI_H - -#include "GEOMGUI.h" -#include "GEOMBase.h" - -//================================================================================= -// class : OperationGUI -// purpose : -//================================================================================= -class OperationGUI : public GEOMGUI -{ -protected: - OperationGUI( GeometryGUI* parent ); // hide constructor to avoid direct creation - -public : - ~OperationGUI(); - - // Get the only OperationGUI object - static OperationGUI* GetOperationGUI( GeometryGUI* parent ); - - bool OnGUIEvent(int theCommandID, SUIT_Desktop* parent); - -private: - static OperationGUI* myGUIObject; // the only OperationGUI object -}; - -#endif diff --git a/src/OperationGUI/OperationGUI_ArchimedeDlg.cxx b/src/OperationGUI/OperationGUI_ArchimedeDlg.cxx deleted file mode 100644 index 2efc7b0f0..000000000 --- a/src/OperationGUI/OperationGUI_ArchimedeDlg.cxx +++ /dev/null @@ -1,267 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : OperationGUI_ArchimedeDlg.cxx -// Author : Nicolas REJNERI -// Module : GEOM -// $Header$ - -#include "OperationGUI_ArchimedeDlg.h" -#include "DlgRef_1Sel3Spin.h" - -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include - -//================================================================================= -// class : OperationGUI_ArchimedeDlg() -// purpose : Constructs a OperationGUI_ArchimedeDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -OperationGUI_ArchimedeDlg::OperationGUI_ArchimedeDlg( GeometryGUI* theGeometryGUI, QWidget* parent ) -: GEOMBase_Skeleton( parent, "ArchimedeDlg", false, - WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu), myGeometryGUI(theGeometryGUI) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_ARCHIMEDE"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_ARCHIMEDE_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_ARCHIMEDE")); - RadioButton1->setPixmap(image0); - RadioButton2->close(TRUE); - RadioButton3->close(TRUE); - - GroupPoints = new DlgRef_1Sel3Spin(this, "GroupPoints"); - GroupPoints->GroupBox1->setTitle(tr("GEOM_ARGUMENTS")); - GroupPoints->TextLabel1->setText(tr("GEOM_OBJECTS")); - GroupPoints->TextLabel2->setText(tr("GEOM_WEIGHT")); - GroupPoints->TextLabel3->setText(tr("GEOM_WATER_DENSITY")); - GroupPoints->TextLabel4->setText(tr("GEOM_MESHING_DEFLECTION")); - GroupPoints->PushButton1->setPixmap(image1); - GroupPoints->LineEdit1->setReadOnly( true ); - - Layout1->addWidget(GroupPoints, 2, 0); - /***************************************************************/ - - /* Initialisations */ - Init(); -} - - -//================================================================================= -// function : ~OperationGUI_ArchimedeDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -OperationGUI_ArchimedeDlg::~OperationGUI_ArchimedeDlg() -{ - // no need to delete child widgets, Qt does it all for us -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void OperationGUI_ArchimedeDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = GroupPoints->LineEdit1; - - /* Get setting of myStep value from file configuration */ - SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); - double myStep = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100); - - double SpecificStep1 = 0.1; - double SpecificStep2 = 0.01; - /* min, max, myStep and decimals for spin boxes & initial values */ - GroupPoints->SpinBox_DX->RangeStepAndValidator(0.001, 999.999, myStep, 3); - GroupPoints->SpinBox_DY->RangeStepAndValidator(0.001, 999.999, SpecificStep1, 3); - GroupPoints->SpinBox_DZ->RangeStepAndValidator(0.001, 999.999, SpecificStep2, 3); - - GroupPoints->SpinBox_DX->SetValue( 100.0 ); - GroupPoints->SpinBox_DY->SetValue( 1.0 ); - GroupPoints->SpinBox_DZ->SetValue( 0.01 ); - - /* signals and slots connections */ - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - - connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupPoints->SpinBox_DX, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupPoints->SpinBox_DY, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupPoints->SpinBox_DZ, SLOT(SetStep(double))); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - - initName( tr( "GEOM_ARCHIMEDE" ) ); - - globalSelection( GEOM_ALLSHAPES ); - - SelectionIntoArgument(); - - /* displays Dialog */ - GroupPoints->show(); - this->show(); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void OperationGUI_ArchimedeDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool OperationGUI_ArchimedeDlg::ClickOnApply() -{ - if ( !onAccept() ) - return false; - - initName(); - return true; -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection as changed or other case -//================================================================================= -void OperationGUI_ArchimedeDlg::SelectionIntoArgument() -{ - myEditCurrentArgument->setText( "" ); - myShape = GEOM::GEOM_Object::_nil(); - - if ( IObjectCount() != 1 ) - return; - - Standard_Boolean testResult = Standard_False; - myShape = GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); - - if ( !testResult || myShape->_is_nil() || !GEOMBase::IsShape( myShape ) ) - { - myShape = GEOM::GEOM_Object::_nil(); - return; - } - - myEditCurrentArgument->setText( GEOMBase::GetName( myShape ) ); -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void OperationGUI_ArchimedeDlg::LineEditReturnPressed() -{ - QLineEdit* send = (QLineEdit*)sender(); - if(send == GroupPoints->LineEdit1) - myEditCurrentArgument = GroupPoints->LineEdit1; - else - return; - - GEOMBase_Skeleton::LineEditReturnPressed(); - return; -} - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void OperationGUI_ArchimedeDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - globalSelection( GEOM_ALLSHAPES ); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - return; -} - - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void OperationGUI_ArchimedeDlg::enterEvent(QEvent* e) -{ - if(GroupConstructors->isEnabled()) - return; - this->ActivateThisDialog(); - return; -} - - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr OperationGUI_ArchimedeDlg::createOperation() -{ - return getGeomEngine()->GetILocalOperations( getStudyId() ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool OperationGUI_ArchimedeDlg::isValid( QString& ) -{ - return !myShape->_is_nil(); -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool OperationGUI_ArchimedeDlg::execute( ObjectList& objects ) -{ - GEOM::GEOM_Object_var anObj; - - double aWeight = GroupPoints->SpinBox_DX->GetValue(); - double aWaterDensity = GroupPoints->SpinBox_DY->GetValue(); - double aMeshDeflection = GroupPoints->SpinBox_DZ->GetValue(); - - anObj = GEOM::GEOM_ILocalOperations::_narrow( - getOperation() )->MakeArchimede( myShape, aWeight, aWaterDensity, aMeshDeflection ); - - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - - return true; -} diff --git a/src/OperationGUI/OperationGUI_ArchimedeDlg.h b/src/OperationGUI/OperationGUI_ArchimedeDlg.h deleted file mode 100644 index f1c1fd7d7..000000000 --- a/src/OperationGUI/OperationGUI_ArchimedeDlg.h +++ /dev/null @@ -1,74 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : OperationGUI_ArchimedeDlg.h -// Author : Nicolas REJNERI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_ARCHIMEDE_H -#define DIALOGBOX_ARCHIMEDE_H - -#include "GEOMBase_Skeleton.h" - -class DlgRef_1Sel3Spin; - -//================================================================================= -// class : OperationGUI_ArchimedeDlg -// purpose : -//================================================================================= -class OperationGUI_ArchimedeDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - OperationGUI_ArchimedeDlg( GeometryGUI* theGeometryGUI, QWidget* parent ); - ~OperationGUI_ArchimedeDlg(); - -protected: - - // redefined from GEOMBase_Helper - - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& msg ); - virtual bool execute( ObjectList& objects ); - -private: - void Init(); - void enterEvent(QEvent* e); - -private: - GEOM::GEOM_Object_var myShape; - DlgRef_1Sel3Spin* GroupPoints; - double myStep; - GeometryGUI* myGeometryGUI; - -private slots: - void ClickOnOk(); - bool ClickOnApply(); - void ActivateThisDialog(); - void LineEditReturnPressed(); - void SelectionIntoArgument(); -}; - -#endif // DIALOGBOX_ARCHIMEDE_H diff --git a/src/OperationGUI/OperationGUI_ChamferDlg.cxx b/src/OperationGUI/OperationGUI_ChamferDlg.cxx deleted file mode 100644 index 38486902b..000000000 --- a/src/OperationGUI/OperationGUI_ChamferDlg.cxx +++ /dev/null @@ -1,708 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : OperationGUI_ChamferDlg.cxx -// Author : Damien COQUERET -// Module : GEOM - -// $Header$ - -#include "OperationGUI_ChamferDlg.h" -#include "DlgRef_SpinBox.h" - -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" -#include "OCCViewer_ViewModel.h" - -#include - -#include -#include "qpixmap.h" -#include - -#include "GEOMImpl_Types.hxx" - -//================================================================================= -// class : OperationGUI_ChamferDlg() -// purpose : Constructs a OperationGUI_ChamferDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -OperationGUI_ChamferDlg::OperationGUI_ChamferDlg( QWidget* parent ) -: GEOMBase_Skeleton(parent, "ChamferDlg", false, - WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) -{ - myConstructorId = -1; - - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_CHAMFER_ALL"))); - QPixmap image2(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_CHAMFER_EDGE"))); - QPixmap image3(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_CHAMFER_FACE"))); - QPixmap iconSelect(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption( tr( "GEOM_CHAMFER_TITLE" ) ); - - GroupConstructors->setTitle( tr( "GEOM_CHAMFER" ) ); - - RadioButton1->setPixmap( image1 ); - RadioButton2->setPixmap( image2 ); - RadioButton3->setPixmap( image3 ); - - // Create first group - - myGrp1 = new QGroupBox( 1, Qt::Horizontal, tr( "GEOM_CHAMFER_ALL" ), this ); - - QGroupBox* aSelGrp1 = new QGroupBox( 3, Qt::Horizontal, myGrp1 ); - aSelGrp1->setFrameStyle( QFrame::NoFrame ); - aSelGrp1->setInsideMargin( 0 ); - - createSelWg( tr( "GEOM_MAIN_OBJECT" ), iconSelect, aSelGrp1, MainObj1 ); - - QGroupBox* aSpinGrp = new QGroupBox( 1, Qt::Vertical, myGrp1 ); - aSpinGrp->setFrameStyle( QFrame::NoFrame ); - aSpinGrp->setInsideMargin( 0 ); - - new QLabel( tr( "D" ), aSpinGrp ); - mySpinBox[ SpinBox1 ] = new DlgRef_SpinBox( aSpinGrp ); - - ( new QFrame( myGrp1 ) )->setSizePolicy( - QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ) ); - - // Create second group - - myGrp2 = new QGroupBox( 1, Qt::Horizontal, tr( "GEOM_CHAMFER_EDGES" ), this ); - - QGroupBox* aSelGrp2 = new QGroupBox( 3, Qt::Horizontal, myGrp2 ); - aSelGrp2->setFrameStyle( QFrame::NoFrame ); - aSelGrp2->setInsideMargin( 0 ); - - createSelWg( tr( "GEOM_MAIN_OBJECT" ), iconSelect, aSelGrp2, MainObj2 ); - createSelWg( tr( "FACE_1" ), iconSelect, aSelGrp2, Face1 ); - createSelWg( tr( "FACE_2" ), iconSelect, aSelGrp2, Face2 ); - - aSpinGrp = new QGroupBox( 1, Qt::Vertical, myGrp2 ); - aSpinGrp->setFrameStyle( QFrame::NoFrame ); - aSpinGrp->setInsideMargin( 0 ); - - new QLabel( tr( "GEOM_D1" ), aSpinGrp ); - mySpinBox[ SpinBox21 ] = new DlgRef_SpinBox( aSpinGrp ); - - new QLabel( tr( "GEOM_D2" ), aSpinGrp ); - mySpinBox[ SpinBox22 ] = new DlgRef_SpinBox( aSpinGrp ); - - // Create third group - - myGrp3 = new QGroupBox( 1, Qt::Horizontal, tr( "GEOM_CHAMFER_FACES" ), this ); - - QGroupBox* aSelGrp3 = new QGroupBox( 3, Qt::Horizontal, myGrp3 ); - aSelGrp3->setFrameStyle( QFrame::NoFrame ); - aSelGrp3->setInsideMargin( 0 ); - - createSelWg( tr( "GEOM_MAIN_OBJECT" ), iconSelect, aSelGrp3, MainObj3 ); - createSelWg( tr( "SELECTED_FACES" ), iconSelect, aSelGrp3, Faces ); - - aSpinGrp = new QGroupBox( 1, Qt::Vertical, myGrp3 ); - aSpinGrp->setFrameStyle( QFrame::NoFrame ); - aSpinGrp->setInsideMargin( 0 ); - - new QLabel( tr( "GEOM_D1" ), aSpinGrp ); - mySpinBox[ SpinBox31 ] = new DlgRef_SpinBox( aSpinGrp ); - - new QLabel( tr( "GEOM_D2" ), aSpinGrp ); - mySpinBox[ SpinBox32 ] = new DlgRef_SpinBox( aSpinGrp ); - - ( new QLabel( myGrp3 ) )->setSizePolicy( - QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ) ); - - // Add groups to layout - - Layout1->addWidget( myGrp1, 2, 0 ); - Layout1->addWidget( myGrp2, 2, 0 ); - Layout1->addWidget( myGrp3, 2, 0 ); - - // Set range of spinboxes - - double SpecificStep = 10.0; - QMap< int, DlgRef_SpinBox* >::iterator anIter; - for ( anIter = mySpinBox.begin(); anIter != mySpinBox.end(); ++anIter ) - anIter.data()->RangeStepAndValidator( 0.001, 999.999, SpecificStep, 3 ); - - /* Initialisations */ - Init(); -} - - -//================================================================================= -// function : ~OperationGUI_ChamferDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -OperationGUI_ChamferDlg::~OperationGUI_ChamferDlg() -{ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void OperationGUI_ChamferDlg::Init() -{ - myConstructorId = -1; - reset(); - RadioButton1->setChecked( true ); - myEditCurrentArgument = mySelName[ MainObj1 ]; - - /* signals and slots connections */ - - // main buttons - connect( buttonOk , SIGNAL( clicked() ), this, SLOT( ClickOnOk() ) ); - connect( buttonApply, SIGNAL( clicked() ), this, SLOT( ClickOnApply() ) ); - - // group box - connect( GroupConstructors, SIGNAL( clicked( int ) ), - this, SLOT( ConstructorsClicked( int ) ) ); - - // push buttons - QMap< int, QPushButton* >::iterator anIterBtn; - for ( anIterBtn = mySelBtn.begin(); anIterBtn != mySelBtn.end(); ++anIterBtn ) - connect( anIterBtn.data(), SIGNAL( clicked() ), - this, SLOT( SetEditCurrentArgument() ) ); - - // line edits - QMap< int, QLineEdit* >::iterator anIterLE2; - for ( anIterLE2 = mySelName.begin(); anIterLE2 != mySelName.end(); ++anIterLE2 ) - connect( anIterLE2.data(), SIGNAL( returnPressed() ), - this, SLOT( LineEditReturnPressed() ) ); - - // spin boxes - QMap< int, DlgRef_SpinBox* >::iterator anIterSpin; - for ( anIterSpin = mySpinBox.begin(); anIterSpin != mySpinBox.end(); ++anIterSpin ) - connect( anIterSpin.data(), SIGNAL( valueChanged( double ) ), - this, SLOT( ValueChangedInSpinBox( double ) ) ); - - // selection - connect( ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) ); - - initName( tr( "GEOM_CHAMFER" ) ); - - myGrp2->hide(); - myGrp3->hide(); - myGrp1->show(); - - this->show(); -} - - -//================================================================================= -// function : ConstructorsClicked() -// purpose : Radio button management -//================================================================================= -void OperationGUI_ChamferDlg::ConstructorsClicked( int constructorId ) -{ - // Activate next widget - if ( SUIT_Session::session()->activeApplication()->desktop()->activeWindow()->getViewManager()->getType() - != OCCViewer_Viewer::Type() ) - { - RadioButton1->setChecked( true ); - return; - } - - if ( myConstructorId == constructorId ) - return; - - // Get values from previous widget - double D1 = 5, D2 = 5; - if ( myConstructorId == 0 ) - D1 = D2 = mySpinBox[ SpinBox1 ]->GetValue(); - else if ( myConstructorId == 1 ) - { - D1 = mySpinBox[ SpinBox21 ]->GetValue(); - D2 = mySpinBox[ SpinBox22 ]->GetValue(); - } - else if ( myConstructorId == 2 ) - { - D1 = mySpinBox[ SpinBox31 ]->GetValue(); - D2 = mySpinBox[ SpinBox32 ]->GetValue(); - } - - myConstructorId = constructorId; - - switch ( constructorId ) - { - case 0: - myGrp1->show(); - myGrp2->hide(); - myGrp3->hide(); - mySpinBox[ SpinBox1 ]->SetValue( D1 ); - break; - case 1: - myGrp1->hide(); - myGrp2->show(); - myGrp3->hide(); - mySpinBox[ SpinBox21 ]->SetValue( D1 ); - mySpinBox[ SpinBox22 ]->SetValue( D2 ); - break; - case 2: - myGrp1->hide(); - myGrp2->hide(); - myGrp3->show(); - mySpinBox[ SpinBox31 ]->SetValue( D1 ); - mySpinBox[ SpinBox32 ]->SetValue( D2 ); - break; - default: - break; - } - - if ( constructorId == 0 ) myEditCurrentArgument = mySelName[ MainObj1 ]; - else if ( constructorId == 1 ) myEditCurrentArgument = mySelName[ MainObj2 ]; - else myEditCurrentArgument = mySelName[ MainObj3 ]; - - activateSelection(); - enableWidgets(); - - if ( !myShape->_is_nil() ) - { - myEditCurrentArgument->setText( GEOMBase::GetName( myShape ) ); - GEOMBase_Skeleton::LineEditReturnPressed(); - } - else - myEditCurrentArgument->setText( "" ); - - displayPreview(); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void OperationGUI_ChamferDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool OperationGUI_ChamferDlg::ClickOnApply() -{ - if ( !onAccept() ) - return false; - - initName(); - return true; -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection has changed -//================================================================================= -void OperationGUI_ChamferDlg::SelectionIntoArgument() -{ - erasePreview(); - myEditCurrentArgument->setText( "" ); - - // Get index of current selection focus - int aCurrFocus = -1; - QMap< int, QLineEdit* >::iterator anIter; - for ( anIter = mySelName.begin(); anIter != mySelName.end(); ++anIter ) - if ( myEditCurrentArgument == anIter.data() ) - { - aCurrFocus = anIter.key(); - break; - } - - // If selection of main object is activated - if ( aCurrFocus == MainObj1 || aCurrFocus == MainObj2 || aCurrFocus == MainObj3 ) - { - if ( IObjectCount() == 1 ) - { - Standard_Boolean aResult = Standard_False; - GEOM::GEOM_Object_var anObj = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), aResult ); - - if ( aResult && !anObj->_is_nil() ) - { - myShape = anObj; - mySelName[ aCurrFocus ]->setText( GEOMBase::GetName( anObj ) ); - displayPreview(); - enableWidgets(); - return; - } - } - - myShape = GEOM::GEOM_Object::_nil(); - enableWidgets(); - } - // If face selection of second tab is activated - else if ( aCurrFocus == Face1 || aCurrFocus == Face2 ) - { - if ( IObjectCount() == 1 ) - { - Standard_Boolean aResult = Standard_False; - GEOM::GEOM_Object_var anObj = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), aResult ); - - if ( aResult && !anObj->_is_nil() ) - { - TColStd_IndexedMapOfInteger anIndexes; - ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr()->GetIndexes( firstIObject(), anIndexes ); - - if ( anIndexes.Extent() == 1 ) - { - int anIndex = anIndexes( 1 ); - QString aFaceName = QString( GEOMBase::GetName( anObj ) ) + ":%1"; - myEditCurrentArgument->setText( aFaceName.arg( anIndex ) ); - myFace[ aCurrFocus ] = anIndex; - displayPreview(); - return; - } - } - } - - myFace[ aCurrFocus ] = -1; - } - // If face selection of third tab is activated - else if ( aCurrFocus == Faces ) - { - if ( IObjectCount() == 1 ) - { - Standard_Boolean aResult = Standard_False; - GEOM::GEOM_Object_var anObj = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), aResult ); - - if ( aResult && !anObj->_is_nil() ) - { - TColStd_IndexedMapOfInteger anIndexes; - ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr()->GetIndexes( firstIObject(), anIndexes ); - - if ( anIndexes.Extent() > 0 ) - { - QString aFaceName; - if ( anIndexes.Extent() == 1 ) - { - int anIndex = anIndexes( 1 ); - - aFaceName = QString( GEOMBase::GetName( anObj ) ) + QString( ":%1" ).arg( anIndex ); - } - else - aFaceName = tr( "GEOM_MEN_POPUP_NAME" ).arg( anIndexes.Extent() ); - - myEditCurrentArgument->setText( aFaceName ); - myFaces = anIndexes; - displayPreview(); - return; - } - } - } - myFaces.Clear(); - } -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void OperationGUI_ChamferDlg::LineEditReturnPressed() -{ - QLineEdit* aSender = ( QLineEdit* )sender(); - - QMap< int, QLineEdit* >::iterator anIterLE; - for ( anIterLE = mySelName.begin(); anIterLE != mySelName.end(); ++anIterLE ) - if ( anIterLE.data() == aSender ) - myEditCurrentArgument = anIterLE.data(); - - GEOMBase_Skeleton::LineEditReturnPressed(); -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void OperationGUI_ChamferDlg::SetEditCurrentArgument() -{ - QPushButton* aSender = ( QPushButton* )sender(); - - QMap< int, QPushButton* >::iterator anIter; - for ( anIter = mySelBtn.begin(); anIter != mySelBtn.end(); ++anIter ) - if ( anIter.data() == aSender ) - { - mySelName[ anIter.key() ]->setFocus(); - myEditCurrentArgument = mySelName[ anIter.key() ]; - } - - activateSelection(); -} - - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : -//================================================================================= -void OperationGUI_ChamferDlg::DeactivateActiveDialog() -{ - // disconnect selection - GEOMBase_Skeleton::DeactivateActiveDialog(); -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void OperationGUI_ChamferDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - - connect( ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT( SelectionIntoArgument() ) ); - - activateSelection(); - displayPreview(); -} - - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void OperationGUI_ChamferDlg::enterEvent(QEvent* e) -{ - if ( !GroupConstructors->isEnabled() ) - this->ActivateThisDialog(); -} - - -//================================================================================= -// function : ValueChangedInSpinBox() -// purpose : -//================================================================================= -void OperationGUI_ChamferDlg::ValueChangedInSpinBox( double newValue ) -{ - displayPreview(); -} - - -//================================================================================= -// function : createSelWg() -// purpose : -//================================================================================= -void OperationGUI_ChamferDlg::createSelWg( const QString& theLbl, - QPixmap& thePix, - QWidget* theParent, - const int theId ) -{ - new QLabel( theLbl, theParent ); - mySelBtn[ theId ] = new QPushButton( theParent ); - mySelBtn[ theId ]->setPixmap( thePix ); - mySelName[ theId ] = new QLineEdit( theParent ); - mySelName[ theId ]->setReadOnly( true ); -} - -//================================================================================= -// function : reset() -// purpose : -//================================================================================= -void OperationGUI_ChamferDlg::reset() -{ - // Set Initial values of spinboxes - QMap< int, DlgRef_SpinBox* >::iterator anIter; - for ( anIter = mySpinBox.begin(); anIter != mySpinBox.end(); ++anIter ) - anIter.data()->SetValue( 5 ); - - // clear line edits - QMap< int, QLineEdit* >::iterator anIterLE; - for ( anIterLE = mySelName.begin(); anIterLE != mySelName.end(); ++anIterLE ) - anIterLE.data()->setText( "" ); - - // constructor id - int aConstructorId = getConstructorId(); - - if ( aConstructorId == 0 ) myEditCurrentArgument = mySelName[ MainObj1 ]; - else if ( aConstructorId == 1 ) myEditCurrentArgument = mySelName[ MainObj2 ]; - else myEditCurrentArgument = mySelName[ MainObj3 ]; - - myShape = GEOM::GEOM_Object::_nil(); - - myFaces.Clear(); - myFace[ Face1 ] = -1; - myFace[ Face2 ] = -1; - - erasePreview( true ); - - activateSelection(); - - enableWidgets(); -} - -//================================================================================= -// function : getConstructorId() -// purpose : -//================================================================================= -int OperationGUI_ChamferDlg::getConstructorId() const -{ - return GroupConstructors->id( GroupConstructors->selected() ); -} - -//================================================================================= -// function : activateSelection -// purpose : Activate selection in accordance with myEditCurrentArgument -//================================================================================= -void OperationGUI_ChamferDlg::activateSelection() -{ - if ( !myShape->_is_nil() && - ( myEditCurrentArgument == mySelName[ Face1 ] || - myEditCurrentArgument == mySelName[ Face2 ] || - myEditCurrentArgument == mySelName[ Faces ] ) ) - localSelection( myShape, TopAbs_FACE ); - else - { - TColStd_MapOfInteger aMap; - aMap.Add( GEOM_SHELL ); - aMap.Add( GEOM_SOLID ); - aMap.Add( GEOM_COMPOUND ); - globalSelection( aMap ); - } - - SelectionIntoArgument(); -} - -//================================================================================= -// function : enableWidgets -// purpose : Enable widgets of faces in accordance with value of main object -//================================================================================= -void OperationGUI_ChamferDlg::enableWidgets() -{ - int anId = getConstructorId(); - - bool toEnable = !myShape->_is_nil(); - - if ( anId == 1 ) - { - mySelName[ Face1 ]->setEnabled( toEnable ); - mySelName[ Face2 ]->setEnabled( toEnable ); - mySelBtn[ Face1 ]->setEnabled( toEnable ); - mySelBtn[ Face2 ]->setEnabled( toEnable ); - - if ( !toEnable ) - { - mySelName[ Face1 ]->setText( "" ); - mySelName[ Face2 ]->setText( "" ); - myFace[ Face1 ] = -1; - myFace[ Face2 ] = -1; - } - } - else if ( anId == 2 ) - { - mySelName[ Faces ]->setEnabled( toEnable ); - - if ( !toEnable ) - myFaces.Clear(); - } -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr OperationGUI_ChamferDlg::createOperation() -{ - return getGeomEngine()->GetILocalOperations( getStudyId() ); -} - -//================================================================================= -// function : ClickOnApply() -// purpose : Verify validity of input data -//================================================================================= -bool OperationGUI_ChamferDlg::isValid( QString& ) -{ - switch ( getConstructorId() ) - { - case 0: return !myShape->_is_nil(); - case 1: return !myShape->_is_nil() && myFace[ Face1 ] > 0 && myFace[ Face2 ] > 0; - case 2: return !myShape->_is_nil() && myFaces.Extent() > 0; - default: return false; - } -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool OperationGUI_ChamferDlg::execute( ObjectList& objects ) -{ - GEOM::GEOM_Object_var anObj; - - int anId = getConstructorId(); - if ( anId == 0 ) - anObj = GEOM::GEOM_ILocalOperations::_narrow( - getOperation() )->MakeChamferAll( myShape, - mySpinBox[ SpinBox1 ]->GetValue() ); - else if ( anId == 1 ) - anObj = GEOM::GEOM_ILocalOperations::_narrow( - getOperation() )->MakeChamferEdge( myShape, - mySpinBox[ SpinBox21 ]->GetValue(), - mySpinBox[ SpinBox22 ]->GetValue(), - myFace[ Face1 ], - myFace[ Face2 ] ); - else if ( anId == 2 ) - { - - int i = 0; - GEOM::ListOfLong_var anArray = new GEOM::ListOfLong; - anArray->length( myFaces.Extent() ); - - - for ( int i = 1, n = myFaces.Extent(); i <= n; i++ ) - anArray[ i - 1 ] = myFaces( i ); - - anObj = GEOM::GEOM_ILocalOperations::_narrow( - getOperation() )->MakeChamferFaces( myShape, - mySpinBox[ SpinBox31 ]->GetValue(), - mySpinBox[ SpinBox32 ]->GetValue(), - anArray ); - } - - - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - - return true; -} - - - - - - - - - diff --git a/src/OperationGUI/OperationGUI_ChamferDlg.h b/src/OperationGUI/OperationGUI_ChamferDlg.h deleted file mode 100644 index cb69ad24b..000000000 --- a/src/OperationGUI/OperationGUI_ChamferDlg.h +++ /dev/null @@ -1,98 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : OperationGUI_ChamferDlg.h -// Author : Damien COQUERET -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_CHAMFER_H -#define DIALOGBOX_CHAMFER_H - -#include "GEOMBase_Skeleton.h" -#include - -class DlgRef_SpinBox; - -//================================================================================= -// class : OperationGUI_ChamferDlg -// purpose : -//================================================================================= -class OperationGUI_ChamferDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - - enum { MainObj1, MainObj2, Face1, Face2, MainObj3, Faces }; - enum { SpinBox1, SpinBox21, SpinBox22, SpinBox31, SpinBox32 }; - -public: - OperationGUI_ChamferDlg( QWidget* parent ); - virtual ~OperationGUI_ChamferDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& msg ); - virtual bool execute( ObjectList& objects ); - -private slots: - - void ClickOnOk(); - bool ClickOnApply(); - void ActivateThisDialog(); - void DeactivateActiveDialog(); - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - void ValueChangedInSpinBox( double newValue ); - void ConstructorsClicked( int constructorId ); - -private : - - void Init(); - void enterEvent( QEvent* e ); - void reset(); - void createSelWg( const QString&, QPixmap&, QWidget*, const int ); - int getConstructorId() const; - void activateSelection(); - void enableWidgets(); - -private: - - int myConstructorId; - - GEOM::GEOM_Object_var myShape; - QMap< int, int > myFace; // indexes of faces from second tab ( Face1,2 ) - TColStd_IndexedMapOfInteger myFaces; // indexes of faces from first tab ( Faces ) - - QFrame* myGrp1; - QFrame* myGrp2; - QFrame* myGrp3; - - QMap< int, QPushButton* > mySelBtn; - QMap< int, QLineEdit* > mySelName; - QMap< int, DlgRef_SpinBox* > mySpinBox; -}; - -#endif // DIALOGBOX_CHAMFER_H - diff --git a/src/OperationGUI/OperationGUI_ClippingDlg.cxx b/src/OperationGUI/OperationGUI_ClippingDlg.cxx deleted file mode 100644 index bdda9f768..000000000 --- a/src/OperationGUI/OperationGUI_ClippingDlg.cxx +++ /dev/null @@ -1,397 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : OperationGUI_ClippingDlg.cxx -// Author : Michael Zorin -// Module : GEOM -// $Header: - -#include "OperationGUI_ClippingDlg.h" -#include "DlgRef_SpinBox.h" - -#include "SUIT_Session.h" -#include "SUIT_ViewWindow.h" -#include "VTKViewer_ViewWindow.h" -#include "VTKViewer_ViewModel.h" -#include "OCCViewer_ViewWindow.h" -#include "OCCViewer_ViewPort3d.h" - -#include "utilities.h" -#include -#include - -//#include - -// QT Includes -#include -#include -#include -#include -#include - -// VTK Includes -#include -#include - -//================================================================================= -// class : OperationGUI_ClippingDlg() -// purpose : -//================================================================================= -OperationGUI_ClippingDlg::OperationGUI_ClippingDlg( QWidget* parent, const char* name, bool modal, WFlags fl ) - : GEOMBase_Skeleton( parent, "OperationGUI_ClippingDlg", false, - WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) -{ - setCaption( tr( "Change clipping range" ) ); - - GroupConstructors->close(); - GroupBoxName->close(); - - /***************************************************************/ - GroupArguments = new QGroupBox( this, "GroupArguments" ); - GroupArguments->setColumnLayout(0, Qt::Vertical ); - GroupArguments->layout()->setSpacing( 0 ); - GroupArguments->layout()->setMargin( 0 ); - QGridLayout* GroupArgumentsLayout = new QGridLayout( GroupArguments->layout() ); - GroupArgumentsLayout->setAlignment( Qt::AlignTop ); - GroupArgumentsLayout->setSpacing( 6 ); - GroupArgumentsLayout->setMargin( 11 ); - - // Controls - TextLabelNear = new QLabel( GroupArguments, "TextLabelNear" ); - TextLabelNear->setText( tr( "Near" ) ); - TextLabelNear->setFixedWidth(74); - GroupArgumentsLayout->addWidget( TextLabelNear, 0, 0 ); - - SpinBox_Near = new DlgRef_SpinBox( GroupArguments, "SpinBox_Near"); - GroupArgumentsLayout->addWidget( SpinBox_Near, 0, 1 ); - - TextLabelFar = new QLabel( GroupArguments, "TextLabelFar" ); - TextLabelFar->setText( tr( "Far" ) ); - TextLabelFar->setFixedWidth(74); - GroupArgumentsLayout->addWidget( TextLabelFar, 0, 2 ); - - SpinBox_Far = new DlgRef_SpinBox( GroupArguments, "SpinBox_Far"); - GroupArgumentsLayout->addWidget( SpinBox_Far, 0, 3 ); - - resetButton = new QPushButton( GroupArguments, "resetButton" ); - resetButton->setText( tr( "Reset" ) ); - GroupArgumentsLayout->addWidget( resetButton, 0, 4 ); - - TypeCB = new QComboBox( GroupArguments, "TypeCB" ); - TypeCB->insertItem(tr("OFF")); - TypeCB->insertItem(tr("BACK")); - TypeCB->insertItem(tr("FRONT")); - TypeCB->insertItem(tr("SLICE")); - GroupArgumentsLayout->addMultiCellWidget( TypeCB, 1, 1, 0, 4 ); - - Layout1->addWidget( GroupArguments, 2, 0 ); - - /* Initialisations */ - SpinBox_Near->RangeStepAndValidator( -999999.999, +999999.999, 10.0, 3 ); - SpinBox_Far->RangeStepAndValidator( -999999.999, +999999.999, 10.0, 3 ); - - //GeometryGUI* aGeomGUI = GeometryGUI::GetGeomGUI(); - - /* signals and slots connections */ - connect( buttonOk, SIGNAL( clicked() ), this, SLOT( ClickOnOk() ) ); - connect( buttonCancel, SIGNAL( clicked() ), this, SLOT( ClickOnCancel() ) ) ; - connect( buttonApply, SIGNAL( clicked() ), this, SLOT( ClickOnApply() ) ); - - connect( resetButton, SIGNAL (clicked() ), this, SLOT( onReset() ) ) ; - - // connect( aGeomGUI, SIGNAL ( SignalDeactivateActiveDialog() ), this, SLOT( onDeactivate() ) ) ; - //connect( aGeomGUI, SIGNAL ( SignalCloseAllDialogs() ), this, SLOT( ClickOnCancel() ) ) ; - - Init(); -} - -//================================================================================= -// function : ~ OperationGUI_ClippingDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -OperationGUI_ClippingDlg::~ OperationGUI_ClippingDlg() -{ - // no need to delete child widgets, Qt does it all for us -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void OperationGUI_ClippingDlg::Init() -{ - SUIT_ViewWindow* anActiveWindow = SUIT_Session::session()->activeApplication()->desktop()->activeWindow(); - if (!anActiveWindow) - return; - - if ( anActiveWindow->getViewManager()->getType() == VTKViewer_Viewer::Type() ) - { - VTKViewer_ViewWindow* aVTKFrame = dynamic_cast( anActiveWindow ); - - TextLabelNear->setText( tr( "Near" ) ); - TextLabelFar->setText( tr( "Far" ) ); - - TypeCB->hide(); - - vtkRenderer* aRenderer = aVTKFrame->getRenderer(); - if(!aRenderer) return; - - vtkCamera* anActiveCamera = aRenderer->GetActiveCamera(); - if( anActiveCamera == NULL ){ - MESSAGE("Trying to reset clipping range of non-existant camera"); - return; - } - - // Find the plane equation for the camera view plane - double vn[3]; - anActiveCamera->GetViewPlaneNormal(vn); - double position[3]; - anActiveCamera->GetPosition(position); - - float bounds[6]; - aRenderer->ComputeVisiblePropBounds(bounds); - - double center[3]; - center[0] = (bounds[0] + bounds[1])/2.0; - center[1] = (bounds[2] + bounds[3])/2.0; - center[2] = (bounds[4] + bounds[5])/2.0; - - double width = sqrt((bounds[1]-bounds[0])*(bounds[1]-bounds[0]) + - (bounds[3]-bounds[2])*(bounds[3]-bounds[2]) + - (bounds[5]-bounds[4])*(bounds[5]-bounds[4])); - - double distance = sqrt((position[0]-center[0])*(position[0]-center[0]) + - (position[1]-center[1])*(position[1]-center[1]) + - (position[2]-center[2])*(position[2]-center[2])); - - float range[2] = {distance - width/2.0, distance + width/2.0}; - - SpinBox_Near->SetValue(range[0]); - SpinBox_Far->SetValue(range[1]); - - return; - } - else if ( anActiveWindow->getViewManager()->getType() == OCCViewer_Viewer::Type() ) - { - OCCViewer_ViewWindow* aOCCFrame = dynamic_cast( anActiveWindow ); - - TextLabelNear->setText( tr( "Depth" ) ); - TextLabelFar->setText( tr( "Thickness" ) ); - - Handle(V3d_View) view3d = ((OCCViewer_ViewPort3d*)aOCCFrame->getViewPort())->getView(); - - double depth, thickness; - int ztype= view3d->ZClipping(depth, thickness); - SpinBox_Near->SetValue(depth); - SpinBox_Far->SetValue(thickness); - TypeCB->setCurrentItem(ztype); - - //Handle(V3d_Plane) aPlane = new V3d_Plane( aOCCFrame->getViewer()->getViewer3d() ,0, 0, 1, -100); - //aPlane->Display(view3d); - } -} - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool OperationGUI_ClippingDlg::ClickOnApply() -{ - SUIT_ViewWindow* anActiveWindow = SUIT_Session::session()->activeApplication()->desktop()->activeWindow(); - if (!anActiveWindow) - return false; - - if ( anActiveWindow->getViewManager()->getType() == VTKViewer_Viewer::Type() ) - { - VTKViewer_ViewWindow* aVTKFrame = dynamic_cast( anActiveWindow ); - - vtkRenderer* aRenderer = aVTKFrame->getRenderer(); - if(!aRenderer) return false; - - vtkCamera* anActiveCamera = aRenderer->GetActiveCamera(); - if( anActiveCamera == NULL ){ - MESSAGE("Trying to reset clipping range of non-existant camera"); - return false; - } - - float range[2] = { SpinBox_Near->GetValue(), SpinBox_Far->GetValue() }; - if (range[0] < 0.0) range[0] = 0.0; - anActiveCamera->SetClippingRange( range ); - - return true; - } - else if ( anActiveWindow->getViewManager()->getType() == OCCViewer_Viewer::Type() ) - { - OCCViewer_ViewWindow* aOCCFrame = dynamic_cast( anActiveWindow ); - - Handle(V3d_View) view3d = ((OCCViewer_ViewPort3d*)aOCCFrame->getViewPort())->getView(); - - double depth = SpinBox_Near->GetValue(); - double thickness = SpinBox_Far->GetValue(); - int aType = TypeCB->currentItem(); - - view3d->SetZClippingType(V3d_TypeOfZclipping(aType)); - view3d->SetZClippingDepth(depth); - view3d->SetZClippingWidth(thickness); - } - - return true; -} - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void OperationGUI_ClippingDlg::ClickOnOk() -{ - ClickOnApply(); - ClickOnCancel(); -} - - -//================================================================================= -// function : ClickOnCancel() -// purpose : -//================================================================================= -void OperationGUI_ClippingDlg::ClickOnCancel() -{ - GEOMBase_Skeleton::ClickOnCancel(); -} - - -//================================================================================= -// function : onActivate() -// purpose : -//================================================================================= -void OperationGUI_ClippingDlg::onActivate() -{ - GEOMBase_Skeleton::ActivateThisDialog(); -} - - -//================================================================================= -// function : onDeactivate() -// purpose : public slot to deactivate if active -//================================================================================= -void OperationGUI_ClippingDlg::DeactivateActiveDialog() -{ - return; -} - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void OperationGUI_ClippingDlg::enterEvent(QEvent* e) -{ - this->setEnabled(true); - return; -} - - -//================================================================================= -// function : closeEvent -// purpose : -//================================================================================= -void OperationGUI_ClippingDlg::closeEvent( QCloseEvent* e ) -{ - QDialog::closeEvent( e ); -} - - -//================================================================================= -// function : onReset() -// purpose : -//================================================================================= -void OperationGUI_ClippingDlg::onReset() -{ - SUIT_ViewWindow* anActiveWindow = SUIT_Session::session()->activeApplication()->desktop()->activeWindow(); - if (!anActiveWindow) - return; - - if ( anActiveWindow->getViewManager()->getType() == VTKViewer_Viewer::Type() ) - { - VTKViewer_ViewWindow* aVTKFrame = dynamic_cast( anActiveWindow ); - - vtkRenderer* aRenderer = aVTKFrame->getRenderer(); - if(!aRenderer) return; - - vtkCamera* anActiveCamera = aRenderer->GetActiveCamera(); - if( anActiveCamera == NULL ){ - MESSAGE("Trying to reset clipping range of non-existant camera"); - return; - } - - // Find the plane equation for the camera view plane - double vn[3]; - anActiveCamera->GetViewPlaneNormal(vn); - double position[3]; - anActiveCamera->GetPosition(position); - - float bounds[6]; - aRenderer->ComputeVisiblePropBounds(bounds); - - double center[3]; - center[0] = (bounds[0] + bounds[1])/2.0; - center[1] = (bounds[2] + bounds[3])/2.0; - center[2] = (bounds[4] + bounds[5])/2.0; - - double width = sqrt((bounds[1]-bounds[0])*(bounds[1]-bounds[0]) + - (bounds[3]-bounds[2])*(bounds[3]-bounds[2]) + - (bounds[5]-bounds[4])*(bounds[5]-bounds[4])); - - double distance = sqrt((position[0]-center[0])*(position[0]-center[0]) + - (position[1]-center[1])*(position[1]-center[1]) + - (position[2]-center[2])*(position[2]-center[2])); - - float range[2] = {distance - width/2.0, distance + width/2.0}; - - SpinBox_Near->SetValue(range[0]); - SpinBox_Far->SetValue(range[1]); - - return; - } - else if ( anActiveWindow->getViewManager()->getType() == OCCViewer_Viewer::Type() ) - { - OCCViewer_ViewWindow* aOCCFrame = dynamic_cast( anActiveWindow ); - - TextLabelNear->setText( tr( "Depth" ) ); - TextLabelFar->setText( tr( "Thickness" ) ); - - Handle(V3d_View) view3d = ((OCCViewer_ViewPort3d*)aOCCFrame->getViewPort())->getView(); - - view3d->SetZClippingType(V3d_TypeOfZclipping(0)); - view3d->ZFitAll(); - double depth, thickness; - int ztype= view3d->ZClipping(depth, thickness); - SpinBox_Near->SetValue(0); - SpinBox_Far->SetValue(1000); - TypeCB->setCurrentItem(ztype); - } - - - - return; -} diff --git a/src/OperationGUI/OperationGUI_ClippingDlg.h b/src/OperationGUI/OperationGUI_ClippingDlg.h deleted file mode 100644 index ba5e6ee07..000000000 --- a/src/OperationGUI/OperationGUI_ClippingDlg.h +++ /dev/null @@ -1,81 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : OperationGUI_ClippingDlg.h -// Author : Michael Zorin -// Module : GEOM -// $Header: - -#ifndef DIALOGBOX_CLIPPINGRANGE_H -#define DIALOGBOX_CLIPPING_H - -#include "GEOMBase_Skeleton.h" - -class QGroupBox; -class QLabel; -class QPushButton; -class QComboBox; -class DlgRef_SpinBox; - -enum ViewerTypes { VTK, OCC, OTHER }; - -//================================================================================= -// class : OperationGUI_ClippingDlg -// purpose : -//================================================================================= -class OperationGUI_ClippingDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - - public: - OperationGUI_ClippingDlg(QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~OperationGUI_ClippingDlg(); - -private : - - void Init(); - - ViewerTypes myViewerType; - - virtual void closeEvent( QCloseEvent* e ); - void enterEvent(QEvent* e); - - QGroupBox* GroupArguments; - QLabel* TextLabelNear; - DlgRef_SpinBox* SpinBox_Near; - QLabel* TextLabelFar; - DlgRef_SpinBox* SpinBox_Far; - QPushButton* resetButton; - QComboBox* TypeCB; - -private slots: - void ClickOnOk(); - bool ClickOnApply(); - void ClickOnCancel(); - void onActivate(); - void DeactivateActiveDialog(); - - void onReset(); -}; - -#endif // DIALOGBOX_CLIPPINGRANGE_H diff --git a/src/OperationGUI/OperationGUI_FilletDlg.cxx b/src/OperationGUI/OperationGUI_FilletDlg.cxx deleted file mode 100644 index 3516a9280..000000000 --- a/src/OperationGUI/OperationGUI_FilletDlg.cxx +++ /dev/null @@ -1,635 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : OperationGUI_FilletDlg.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header$ - -#include "OperationGUI_FilletDlg.h" -#include "DlgRef_1Sel1Spin.h" -#include "DlgRef_2Sel1Spin.h" - -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" -#include "OCCViewer_ViewModel.h" - -#include "qlabel.h" -#include "qpixmap.h" -#include -#include -#include - -#include "GEOMImpl_Types.hxx" - -//================================================================================= -// class : OperationGUI_FilletDlg() -// purpose : Constructs a OperationGUI_FilletDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -OperationGUI_FilletDlg::OperationGUI_FilletDlg( QWidget* parent ) - :GEOMBase_Skeleton( parent, "OperationGUI_FilletDlg", false, - WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) -{ - myConstructorId = -1; - - QPixmap image0( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_FILLET_ALL" ) ) ); - QPixmap image1( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_FILLET_EDGE" ) ) ); - QPixmap image2( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_FILLET_FACE" ) ) ); - - QPixmap iconSelect( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_SELECT" ) ) ); - - setCaption( tr( "GEOM_FILLET_TITLE" ) ); - - /***************************************************************/ - GroupConstructors->setTitle( tr( "GEOM_FILLET" ) ); - RadioButton1->setPixmap( image0 ); - RadioButton2->setPixmap( image1 ); - RadioButton3->setPixmap( image2 ); - - Group1 = new DlgRef_1Sel1Spin( this, "Group1" ); - Group1->GroupBox1->setTitle( tr( "GEOM_FILLET_ALL" ) ); - Group1->TextLabel1->setText( tr( "GEOM_MAIN_OBJECT" ) ); - Group1->TextLabel2->setText( tr( "GEOM_RADIUS" ) ); - Group1->PushButton1->setPixmap( iconSelect ); - Group1->LineEdit1->setReadOnly( true ); - - Group2 = new DlgRef_2Sel1Spin( this, "Group2" ); - Group2->GroupBox1->setTitle( tr( "GEOM_FILLET_EDGES" ) ); - Group2->TextLabel1->setText( tr( "GEOM_MAIN_OBJECT" ) ); - Group2->TextLabel2->setText( tr( "SELECTED_EDGES" ) ); - Group2->TextLabel3->setText( tr( "GEOM_RADIUS" ) ); - Group2->PushButton1->setPixmap( iconSelect ); - Group2->PushButton2->setPixmap( iconSelect ); - Group2->LineEdit1->setReadOnly( true ); - Group2->LineEdit2->setReadOnly( true ); - - Group3 = new DlgRef_2Sel1Spin( this, "Group3" ); - Group3->GroupBox1->setTitle(tr( "GEOM_FILLET_FACES" ) ); - Group3->TextLabel1->setText(tr( "GEOM_MAIN_OBJECT" ) ); - Group3->TextLabel2->setText(tr( "SELECTED_FACES" ) ); - Group3->TextLabel3->setText(tr( "GEOM_RADIUS" ) ); - Group3->PushButton1->setPixmap( iconSelect ); - Group3->PushButton2->setPixmap( iconSelect ); - Group3->LineEdit1->setReadOnly( true ); - Group3->LineEdit2->setReadOnly( true ); - - Layout1->addWidget( Group1, 2, 0 ); - Layout1->addWidget( Group2, 2, 0 ); - Layout1->addWidget( Group3, 2, 0 ); - /***************************************************************/ - - double SpecificStep = 10.0; - Group1->SpinBox_DX->RangeStepAndValidator(0.001, 999.999, SpecificStep, 3); - Group2->SpinBox_DX->RangeStepAndValidator(0.001, 999.999, SpecificStep, 3); - Group3->SpinBox_DX->RangeStepAndValidator(0.001, 999.999, SpecificStep, 3); - - /* Initialisations */ - Init(); -} - - -//================================================================================= -// function : ~OperationGUI_FilletDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -OperationGUI_FilletDlg::~OperationGUI_FilletDlg() -{ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void OperationGUI_FilletDlg::Init() -{ - myConstructorId = -1; - reset(); - RadioButton1->setChecked( true ); - myEditCurrentArgument = Group1->LineEdit1; - - // main buttons - connect( buttonOk , SIGNAL( clicked() ), this, SLOT( ClickOnOk() ) ); - connect( buttonApply, SIGNAL( clicked() ), this, SLOT( ClickOnApply() ) ); - - // group box - connect( GroupConstructors, SIGNAL( clicked( int ) ), this, SLOT( ConstructorsClicked( int ) ) ); - - // push buttons - connect(Group1->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(Group2->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(Group3->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(Group2->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(Group3->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - - // line edits - connect(Group1->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(Group2->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(Group3->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - // spin boxes - connect(Group1->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - connect(Group2->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - connect(Group3->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - - // selection - connect( ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) ); - - - initName( tr( "GEOM_FILLET" ) ); - - Group2->hide(); - Group3->hide(); - Group1->show(); - - this->show(); -} - - -//================================================================================= -// function : ConstructorsClicked() -// purpose : Radio button management -//================================================================================= -void OperationGUI_FilletDlg::ConstructorsClicked( int constructorId ) -{ - if ( SUIT_Session::session()->activeApplication()->desktop()->activeWindow()->getViewManager()->getType() - != OCCViewer_Viewer::Type() ) - { - RadioButton1->setChecked( true ); - return; - } - - if ( myConstructorId == constructorId ) - return; - - // Get radius from previous widget - double R = 5; - if ( myConstructorId == 0 ) R = Group1->SpinBox_DX->GetValue(); - else if ( myConstructorId == 1 ) R = Group2->SpinBox_DX->GetValue(); - else R = Group3->SpinBox_DX->GetValue(); - - myConstructorId = constructorId; - - switch ( constructorId ) - { - case 0: - Group1->show(); - Group2->hide(); - Group3->hide(); - Group1->SpinBox_DX->SetValue( R ); - break; - case 1: - Group1->hide(); - Group2->show(); - Group3->hide(); - Group2->SpinBox_DX->SetValue( R ); - break; - case 2: - Group1->hide(); - Group2->hide(); - Group3->show(); - Group3->SpinBox_DX->SetValue( R ); - break; - default: - break; - } - - if ( constructorId == 0 ) myEditCurrentArgument = Group1->LineEdit1; - else if ( constructorId == 1 ) myEditCurrentArgument = Group2->LineEdit1; - else myEditCurrentArgument = Group3->LineEdit1; - - activateSelection(); - enableWidgets(); - - if ( !myShape->_is_nil() ) - { - myEditCurrentArgument->setText( GEOMBase::GetName( myShape ) ); - GEOMBase_Skeleton::LineEditReturnPressed(); - } - else - myEditCurrentArgument->setText( "" ); - - displayPreview(); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void OperationGUI_FilletDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool OperationGUI_FilletDlg::ClickOnApply() -{ - if ( !onAccept() ) - return false; - - initName(); - return true; -} - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection has changed -//================================================================================= -void OperationGUI_FilletDlg::SelectionIntoArgument() -{ - erasePreview(); - myEditCurrentArgument->setText( "" ); - - // If selection of main object is activated - if ( myEditCurrentArgument == Group1->LineEdit1 || - myEditCurrentArgument == Group2->LineEdit1 || - myEditCurrentArgument == Group3->LineEdit1 ) - { - if ( IObjectCount() == 1 ) - { - Standard_Boolean aResult = Standard_False; - GEOM::GEOM_Object_var anObj = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), aResult ); - - if ( aResult && !anObj->_is_nil() ) - { - myShape = anObj; - myEditCurrentArgument->setText( GEOMBase::GetName( anObj ) ); - displayPreview(); - enableWidgets(); - return; - } - } - - myShape = GEOM::GEOM_Object::_nil(); - enableWidgets(); - } - // If face or edge selection is activated - else if ( myEditCurrentArgument == Group2->LineEdit2 || - myEditCurrentArgument == Group3->LineEdit2 ) - { - if ( IObjectCount() == 1 ) - { - Standard_Boolean aResult = Standard_False; - GEOM::GEOM_Object_var anObj = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), aResult ); - - if ( aResult && !anObj->_is_nil() ) - { - TColStd_IndexedMapOfInteger anIndexes; - ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr()->GetIndexes( firstIObject(), anIndexes ); - - if ( anIndexes.Extent() > 0 ) - { - QString aName; - if ( anIndexes.Extent() == 1 ) - { - int anIndex = anIndexes( 1 ); - - aName = QString( GEOMBase::GetName( anObj ) ) + QString( ":%1" ).arg( anIndex ); - } - else - aName = tr( "GEOM_MEN_POPUP_NAME" ).arg( anIndexes.Extent() ); - - myEditCurrentArgument->setText( aName ); - - if ( myConstructorId == 1 ) - myEdges = anIndexes; - else - myFaces = anIndexes; - - displayPreview(); - return; - } - } - } - myFaces.Clear(); - } -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void OperationGUI_FilletDlg::LineEditReturnPressed() -{ - QLineEdit* send = ( QLineEdit* )sender(); - - if ( send == Group1->LineEdit1 ) - myEditCurrentArgument = Group1->LineEdit1; - else if ( send == Group2->LineEdit1 ) - myEditCurrentArgument = Group2->LineEdit1; - else if ( send == Group3->LineEdit1 ) - myEditCurrentArgument = Group3->LineEdit1; - else - return; - - GEOMBase_Skeleton::LineEditReturnPressed(); - return; -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void OperationGUI_FilletDlg::SetEditCurrentArgument() -{ - QPushButton* send = (QPushButton*)sender(); - - if ( send == Group1->PushButton1 ) - { - Group1->LineEdit1->setFocus(); - myEditCurrentArgument = Group1->LineEdit1; - } - else if( send == Group2->PushButton1 ) - { - Group2->LineEdit1->setFocus(); - myEditCurrentArgument = Group2->LineEdit1; - } - else if( send == Group2->PushButton2 ) - { - Group2->LineEdit2->setFocus(); - myEditCurrentArgument = Group2->LineEdit2; - } - else if ( send == Group3->PushButton1 ) - { - Group3->LineEdit1->setFocus(); - myEditCurrentArgument = Group3->LineEdit1; - } - else if( send == Group3->PushButton2 ) - { - Group3->LineEdit1->setFocus(); - myEditCurrentArgument = Group3->LineEdit2; - } - - activateSelection(); -} - - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : -//================================================================================= -void OperationGUI_FilletDlg::DeactivateActiveDialog() -{ - GEOMBase_Skeleton::DeactivateActiveDialog(); - return; -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void OperationGUI_FilletDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT( SelectionIntoArgument() ) ); - - activateSelection(); - displayPreview(); -} - - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void OperationGUI_FilletDlg::enterEvent( QEvent* e ) -{ - if ( !GroupConstructors->isEnabled() ) - this->ActivateThisDialog(); -} - -//================================================================================= -// function : ValueChangedInSpinBox() -// purpose : -//================================================================================= -void OperationGUI_FilletDlg::ValueChangedInSpinBox( double newValue ) -{ - displayPreview(); -} - -//================================================================================= -// function : reset() -// purpose : -//================================================================================= -void OperationGUI_FilletDlg::reset() -{ - // Set Initial values of spinboxes - Group1->SpinBox_DX->SetValue( 5 ); - Group2->SpinBox_DX->SetValue( 5 ); - Group3->SpinBox_DX->SetValue( 5 ); - - Group1->LineEdit1->setText( "" ); - Group2->LineEdit1->setText( "" ); - Group2->LineEdit2->setText( "" ); - Group3->LineEdit1->setText( "" ); - Group3->LineEdit2->setText( "" ); - - // constructor id - int aConstructorId = getConstructorId(); - - if ( aConstructorId == 0 ) myEditCurrentArgument = Group1->LineEdit1; - else if ( aConstructorId == 1 ) myEditCurrentArgument = Group2->LineEdit1; - else myEditCurrentArgument = Group3->LineEdit1; - - myShape = GEOM::GEOM_Object::_nil(); - - myFaces.Clear(); - myEdges.Clear(); - - erasePreview( true ); - - activateSelection(); - - enableWidgets(); -} - -//================================================================================= -// function : getConstructorId() -// purpose : -//================================================================================= -int OperationGUI_FilletDlg::getConstructorId() const -{ - return GroupConstructors->id( GroupConstructors->selected() ); -} - -//================================================================================= -// function : activateSelection -// purpose : Activate selection in accordance with myEditCurrentArgument -//================================================================================= -void OperationGUI_FilletDlg::activateSelection() -{ - - if ( !myShape->_is_nil() && myEditCurrentArgument == Group2->LineEdit2 ) - localSelection( myShape, TopAbs_EDGE ); - else if ( !myShape->_is_nil() && myEditCurrentArgument == Group3->LineEdit2 ) - localSelection( myShape, TopAbs_FACE ); - else - { - TColStd_MapOfInteger aMap; - aMap.Add( GEOM_SHELL ); - aMap.Add( GEOM_SOLID ); - aMap.Add( GEOM_COMPOUND ); - globalSelection( aMap ); - } - - SelectionIntoArgument(); -} - -//================================================================================= -// function : enableWidgets -// purpose : Enable widgets of faces in accordance with value of main object -//================================================================================= -void OperationGUI_FilletDlg::enableWidgets() -{ - int anId = getConstructorId(); - - bool toEnable = !myShape->_is_nil(); - - if ( anId == 1 ) - { - Group2->LineEdit2->setEnabled( toEnable ); - Group2->PushButton2->setEnabled( toEnable ); - - if ( !toEnable ) - { - Group2->LineEdit2->setText( "" ); - myEdges.Clear(); - } - } - else if ( anId == 2 ) - { - Group3->LineEdit2->setEnabled( toEnable ); - Group3->PushButton2->setEnabled( toEnable ); - - if ( !toEnable ) - { - Group3->LineEdit2->setText( "" ); - myFaces.Clear(); - } - } -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr OperationGUI_FilletDlg::createOperation() -{ - return getGeomEngine()->GetILocalOperations( getStudyId() ); -} - -//================================================================================= -// function : ClickOnApply() -// purpose : Verify validity of input data -//================================================================================= -bool OperationGUI_FilletDlg::isValid( QString& ) -{ - switch ( getConstructorId() ) - { - case 0: return !myShape->_is_nil(); - case 1: return !myShape->_is_nil() && myEdges.Extent() > 0; - case 2: return !myShape->_is_nil() && myFaces.Extent() > 0; - default: return false; - } -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool OperationGUI_FilletDlg::execute( ObjectList& objects ) -{ - GEOM::GEOM_Object_var anObj; - - int anId = getConstructorId(); - if ( anId == 0 ) - anObj = GEOM::GEOM_ILocalOperations::_narrow( - getOperation() )->MakeFilletAll( myShape, - getRadius() ); - else if ( anId == 1 ) - { - GEOM::ListOfLong_var aList = new GEOM::ListOfLong; - aList->length( myEdges.Extent() ); - - for ( int i = 1, n = myEdges.Extent(); i <= n; i++ ) - aList[ i - 1 ] = myEdges( i ); - - anObj = GEOM::GEOM_ILocalOperations::_narrow( - getOperation() )->MakeFilletEdges( myShape, getRadius(), aList ); - } - else if ( anId == 2 ) - { - int i = 0; - GEOM::ListOfLong_var aList = new GEOM::ListOfLong; - aList->length( myFaces.Extent() ); - - for ( int i = 1, n = myFaces.Extent(); i <= n; i++ ) - aList[ i - 1 ] = myFaces( i ); - - anObj = GEOM::GEOM_ILocalOperations::_narrow( - getOperation() )->MakeFilletFaces( myShape, getRadius(), aList ); - } - - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - - return true; -} - -//================================================================================= -// function : getRadius -// purpose : Get radius -//================================================================================= -double OperationGUI_FilletDlg::getRadius() const -{ - int anId = getConstructorId(); - if ( anId == 0 ) return Group1->SpinBox_DX->GetValue(); - else if ( anId == 1 ) return Group2->SpinBox_DX->GetValue(); - else return Group3->SpinBox_DX->GetValue(); -} - - - - - - - diff --git a/src/OperationGUI/OperationGUI_FilletDlg.h b/src/OperationGUI/OperationGUI_FilletDlg.h deleted file mode 100644 index d794e834d..000000000 --- a/src/OperationGUI/OperationGUI_FilletDlg.h +++ /dev/null @@ -1,93 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : OperationGUI_FilletDlg.h -// Author : Damien COQUERET -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_FILLET_H -#define DIALOGBOX_FILLET_H - -#include "GEOMBase_Skeleton.h" - -#include - -class DlgRef_1Sel1Spin; -class DlgRef_2Sel1Spin; - -//================================================================================= -// class : OperationGUI_FilletDlg -// purpose : -//================================================================================= -class OperationGUI_FilletDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - OperationGUI_FilletDlg( QWidget* parent ); - ~OperationGUI_FilletDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& msg ); - virtual bool execute( ObjectList& objects ); - -private slots: - - void ClickOnOk(); - bool ClickOnApply(); - void ActivateThisDialog(); - void DeactivateActiveDialog(); - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - void ValueChangedInSpinBox( double newValue ); - void ConstructorsClicked( int constructorId ); - -private : - - void Init(); - void enterEvent( QEvent* e ); - void reset(); - int getConstructorId() const; - void activateSelection(); - void enableWidgets(); - double getRadius() const; - -private : - - int myConstructorId; - - GEOM::GEOM_Object_var myShape; - TColStd_IndexedMapOfInteger myEdges; - TColStd_IndexedMapOfInteger myFaces; - - DlgRef_1Sel1Spin* Group1; - DlgRef_2Sel1Spin* Group2; - DlgRef_2Sel1Spin* Group3; -}; - -#endif // DIALOGBOX_FILLET_H - diff --git a/src/OperationGUI/OperationGUI_MaterialDlg.cxx b/src/OperationGUI/OperationGUI_MaterialDlg.cxx deleted file mode 100644 index e63383883..000000000 --- a/src/OperationGUI/OperationGUI_MaterialDlg.cxx +++ /dev/null @@ -1,238 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 CEA -// -// 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. -// -// 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.org -// -// -// -// File : OperationGUI_MaterialDlg.cxx -// Author : Julia DOROVSKIKH -// Module : GEOM -// $Header$ - -#include "OperationGUI_MaterialDlg.h" -#include "OperationGUI_PartitionDlg.h" - -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include "utilities.h" - -#include -#include -#include - -using namespace std; - -//================================================================================= -// class : OperationGUI_MaterialDlg() -// purpose : Constructs a OperationGUI_MaterialDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -OperationGUI_MaterialDlg::OperationGUI_MaterialDlg (QWidget* parent, const char* name, - GEOM::ListOfGO ListShapes, - bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) -{ - myListShapes = ListShapes; - myParentDlg = parent; - - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_PARTITION"))); - - setCaption(tr("GEOM_MATERIAL_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_PARTITION")); - RadioButton1->setPixmap(image0); - RadioButton2->close(TRUE); - RadioButton3->close(TRUE); - - GroupPoints = new DlgRef_1List1Spin1Btn_QTD(this, "GroupPoints"); - GroupPoints->GroupBox1->setTitle(tr("GEOM_PARTITION")); - - myShapeCol = GroupPoints->ListView1->addColumn(tr("GEOM_MATERIAL_SHAPE")); - myMaterCol = GroupPoints->ListView1->addColumn(tr("GEOM_MATERIAL_MATERIAL")); - GroupPoints->ListView1->setSelectionMode(QListView::Extended); - - GroupPoints->TextLabel1->setText(tr("GEOM_MATERIAL_ID")); - GroupPoints->PushButton1->setText(tr("GEOM_MATERIAL_SET")); - - Layout1->addWidget(GroupPoints, 1, 0); - /***************************************************************/ - - Init(); -} - - -//================================================================================= -// function : ~OperationGUI_MaterialDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -OperationGUI_MaterialDlg::~OperationGUI_MaterialDlg() -{ - // no need to delete child widgets, Qt does it all for us -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void OperationGUI_MaterialDlg::Init() -{ - // get materials list from the parent dialog - OperationGUI_PartitionDlg* aParentDlg = - dynamic_cast(myParentDlg); - if (aParentDlg) - myListMaterials = aParentDlg->GetListMaterials(); - - /* list filling */ - MESSAGE("Filling list with " << myListShapes.length() << " objects"); - QString aMaterialId; - for (int ind = 0; ind < myListShapes.length(); ind++) { - GEOM::GEOM_Object_var anObject = myListShapes[ind]; - if (!anObject->_is_nil()) { - MESSAGE("Insert " << GEOMBase::GetName( anObject )); - if (ind < myListMaterials.length()) - aMaterialId = QString::number(myListMaterials[ind]); - else - aMaterialId = "0"; - QListViewItem* aItem = - new QListViewItem(GroupPoints->ListView1, GEOMBase::GetName( anObject ), aMaterialId); - } - } - MESSAGE("Filled"); - - /* signals and slots connections */ - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - buttonApply->close(TRUE); - buttonCancel->setText(tr("GEOM_BUT_CANCEL")); - - connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetMaterial())); - -// connect(GroupPoints->ListView1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); -// connect(GroupPoints->SpinBox1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - /* displays Dialog */ - MESSAGE("GroupPoints->show() ..."); - GroupPoints->show(); - MESSAGE("this->show() ..."); - this->show(); - MESSAGE("return"); - - return; -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void OperationGUI_MaterialDlg::ClickOnOk() -{ - SUIT_Session::session()->activeApplication()->putInfo(tr("")); - - int nbSh = myListShapes.length(); - myListMaterials.length(nbSh); - - QListViewItemIterator it (GroupPoints->ListView1); - for (int i = 0; it.current() != 0; it++, i++) { - QString aMatIdStr = it.current()->text(myMaterCol); - myListMaterials[i] = aMatIdStr.toInt(); - MESSAGE("For shape # " << i << " material ID = " << myListMaterials[i]); - } - - // set materials list to the parent dialog - OperationGUI_PartitionDlg* aParentDlg = - dynamic_cast(myParentDlg); - if (aParentDlg) - { - aParentDlg->SetListMaterials(myListMaterials); - } - - ClickOnCancel(); - return; -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection as changed or other case -//================================================================================= -void OperationGUI_MaterialDlg::SelectionIntoArgument() -{ - QString aString = ""; /* name of selection */ - - int nbSel = myGeomBase->GetNameOfSelectedIObjects(selectedIO(), aString); - if(nbSel < 1) { - return; - } - - //myGeomBase->ConvertListOfIOInListOfIOR(selectedIO(), myListShapes); - - /* no simulation */ - return; -} - - -//================================================================================= -// function : SetMaterial() -// purpose : -//================================================================================= -void OperationGUI_MaterialDlg::SetMaterial() -{ - int aMatId = GroupPoints->SpinBox1->value(); - QString aMatIdStr; - aMatIdStr.setNum(aMatId); - QListViewItemIterator it (GroupPoints->ListView1); - for (; it.current() != 0; it++) { - if (it.current()->isSelected()) - it.current()->setText(myMaterCol, aMatIdStr); - } - return; -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void OperationGUI_MaterialDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - return; -} - - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void OperationGUI_MaterialDlg::enterEvent(QEvent* e) -{ - if(!GroupConstructors->isEnabled()) - this->ActivateThisDialog(); -} diff --git a/src/OperationGUI/OperationGUI_MaterialDlg.h b/src/OperationGUI/OperationGUI_MaterialDlg.h deleted file mode 100644 index a57dfe514..000000000 --- a/src/OperationGUI/OperationGUI_MaterialDlg.h +++ /dev/null @@ -1,71 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 CEA -// -// 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. -// -// 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.org -// -// -// -// File : OperationGUI_MaterialDlg.h -// Author : Julia DOROVSKIKH -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_MATERIAL_H -#define DIALOGBOX_MATERIAL_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_1List1Spin1Btn_QTD.h" - - -//================================================================================= -// class : OperationGUI_MaterialDlg -// purpose : -//================================================================================= -class OperationGUI_MaterialDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - OperationGUI_MaterialDlg (QWidget* parent, const char* name, - GEOM::ListOfGO ListShapes, - bool modal = FALSE, WFlags fl = 0); - ~OperationGUI_MaterialDlg(); - -private: - void Init(); - void enterEvent(QEvent* e); - - QWidget* myParentDlg; - - GEOM::ListOfGO myListShapes; - GEOM::ListOfLong myListMaterials; - - DlgRef_1List1Spin1Btn_QTD* GroupPoints; - - int myShapeCol; - int myMaterCol; - -private slots: - void ClickOnOk(); - void ActivateThisDialog(); - void SelectionIntoArgument(); - void SetMaterial(); - -}; - -#endif // DIALOGBOX_MATERIAL_H diff --git a/src/OperationGUI/OperationGUI_PartitionDlg.cxx b/src/OperationGUI/OperationGUI_PartitionDlg.cxx deleted file mode 100644 index bedc63180..000000000 --- a/src/OperationGUI/OperationGUI_PartitionDlg.cxx +++ /dev/null @@ -1,554 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : OperationGUI_PartitionDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "OperationGUI_PartitionDlg.h" -#include "OperationGUI_MaterialDlg.h" - -#include "GEOMImpl_Types.hxx" - -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include -#include -#include - -#include "utilities.h" - -//================================================================================= -// class : OperationGUI_PartitionDlg() -// purpose : Constructs a OperationGUI_PartitionDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -OperationGUI_PartitionDlg::OperationGUI_PartitionDlg(QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_PARTITION"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_PARTITION_PLANE"))); - QPixmap image2(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_PARTITION_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_PARTITION")); - RadioButton1->setPixmap(image0); - RadioButton2->setPixmap(image1); - RadioButton3->close(TRUE); - - // Full partition (contains half-space partition) - GroupPoints = new DlgRef_4Sel1List1Check_QTD(this, "GroupPoints"); - GroupPoints->GroupBox1->setTitle(tr("GEOM_PARTITION")); - GroupPoints->GroupBox2->setTitle(tr("SUPPRESS_RESULT")); - GroupPoints->TextLabel1->setText(tr("GEOM_OBJECTS")); - GroupPoints->TextLabel2->setText(tr("GEOM_TOOL_OBJECT")); - GroupPoints->TextLabel3->setText(tr("GEOM_RECONSTRUCTION_LIMIT")); - GroupPoints->TextLabel4->setText(tr("GEOM_SUPPRESS_RESULT_INSIDE")); - GroupPoints->TextLabel5->setText(tr("GEOM_SUPPRESS_RESULT_OUTSIDE")); - GroupPoints->CheckBox1->setText(tr("GEOM_REMOVE_WEBS")); - GroupPoints->PushButton1->setPixmap(image2); - GroupPoints->PushButton2->setPixmap(image2); - GroupPoints->PushButton3->setPixmap(image2); - GroupPoints->PushButton4->setPixmap(image2); - GroupPoints->PushButton5->setText(tr("GEOM_SET_MATERIALS")); - GroupPoints->LineEdit1->setReadOnly( true ); - GroupPoints->LineEdit2->setReadOnly( true ); - GroupPoints->LineEdit3->setReadOnly( true ); - GroupPoints->LineEdit4->setReadOnly( true ); - - Layout1->addWidget(GroupPoints, 2, 0); - /***************************************************************/ - - Init(); -} - - -//================================================================================= -// function : ~OperationGUI_PartitionDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -OperationGUI_PartitionDlg::~OperationGUI_PartitionDlg() -{ - // no need to delete child widgets, Qt does it all for us -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void OperationGUI_PartitionDlg::Init() -{ - /* type for sub shape selection */ - GroupPoints->ComboBox1->insertItem(tr("GEOM_RECONSTRUCTION_LIMIT_SOLID")); - GroupPoints->ComboBox1->insertItem(tr("GEOM_RECONSTRUCTION_LIMIT_SHELL")); - GroupPoints->ComboBox1->insertItem(tr("GEOM_RECONSTRUCTION_LIMIT_FACE")); - GroupPoints->ComboBox1->insertItem(tr("GEOM_RECONSTRUCTION_LIMIT_WIRE")); - GroupPoints->ComboBox1->insertItem(tr("GEOM_RECONSTRUCTION_LIMIT_EDGE")); - GroupPoints->ComboBox1->insertItem(tr("GEOM_RECONSTRUCTION_LIMIT_VERTEX")); - - /* signals and slots connections */ - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - connect(GroupConstructors, SIGNAL(clicked(int)), this, SLOT(ConstructorsClicked(int))); - - connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupPoints->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupPoints->PushButton3, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupPoints->PushButton4, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupPoints->PushButton5, SIGNAL(clicked()), this, SLOT(SetMaterials())); - - connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(GroupPoints->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(GroupPoints->LineEdit3, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(GroupPoints->LineEdit4, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect(GroupPoints->CheckBox1, SIGNAL(toggled(bool)), this, SLOT(onRemoveWebs(bool))); - - connect(GroupPoints->ComboBox1, SIGNAL(activated(int)), this, SLOT(ComboTextChanged())); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - initName( tr( "GEOM_PARTITION" ) ); - ConstructorsClicked( 0 ); -} - - -//================================================================================= -// function : ConstructorsClicked() -// purpose : Radio button management -//================================================================================= -void OperationGUI_PartitionDlg::ConstructorsClicked(int constructorId) -{ - disconnect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), 0, this, 0); - globalSelection(); - - myListShapes.length(0); - myListTools.length(0); - myListKeepInside.length(0); - myListRemoveInside.length(0); - myListMaterials.length(0); - - switch (constructorId) - { - case 0: /*Full partition */ - { - GroupPoints->GroupBox1->setTitle(tr("GEOM_PARTITION")); - GroupPoints->TextLabel2->setText(tr("GEOM_TOOL_OBJECT")); - resize(0, 0); - GroupPoints->TextLabel3->show(); - GroupPoints->ComboBox1->show(); - GroupPoints->GroupBox2->show(); - - GroupPoints->ComboBox1->setCurrentItem(0); - GroupPoints->LineEdit3->clear(); - GroupPoints->LineEdit4->clear(); - break; - } - case 1: /*Half-space partition */ - { - - GroupPoints->GroupBox1->setTitle(tr("GEOM_PARTITION_HALFSPACE")); - GroupPoints->GroupBox2->hide(); - GroupPoints->TextLabel3->hide(); - GroupPoints->ComboBox1->hide(); - GroupPoints->TextLabel2->setText(tr("GEOM_PLANE")); - resize(0, 0); - break; - } - } - - myEditCurrentArgument = GroupPoints->LineEdit1; - GroupPoints->LineEdit1->clear(); - GroupPoints->LineEdit2->clear(); - onRemoveWebs(false); - - myEditCurrentArgument->setFocus(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - MESSAGE(width()<<" "<setText( "" ); - QString aString = ""; - - int nbSel = GEOMBase::GetNameOfSelectedIObjects( selectedIO(), aString, true ); - - if ( nbSel < 1 ) - { - if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) - { - myListShapes.length( 0 ); - myListMaterials.length( 0 ); - } - else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) - myListTools.length( 0 ); - else if ( myEditCurrentArgument == GroupPoints->LineEdit3 ) - myListRemoveInside.length( 0 ); - else if ( myEditCurrentArgument == GroupPoints->LineEdit4 ) - myListKeepInside.length( 0 ); - } - - // One and only one plane can be selected - - if ( getConstructorId() == 1 && myEditCurrentArgument == GroupPoints->LineEdit2 && nbSel != 1 ) - { - myListTools.length( 0 ); - return; - } - - if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) - { - GEOMBase::ConvertListOfIOInListOfGO( selectedIO(), myListShapes, true ); - myListMaterials.length( 0 ); - if ( !myListShapes.length() ) - return; - } - else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) - { - GEOMBase::ConvertListOfIOInListOfGO( selectedIO(), myListTools, true ); - if ( !myListTools.length() ) - return; - } - else if(myEditCurrentArgument == GroupPoints->LineEdit3) - { - GEOMBase::ConvertListOfIOInListOfGO( selectedIO(), myListRemoveInside, true ); - if (!myListRemoveInside.length()) - return; - } - else if(myEditCurrentArgument == GroupPoints->LineEdit4) - { - GEOMBase::ConvertListOfIOInListOfGO( selectedIO(), myListKeepInside, true ); - if ( !myListKeepInside.length() ) - return; - } - - myEditCurrentArgument->setText( aString ); -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void OperationGUI_PartitionDlg::SetEditCurrentArgument() -{ - QPushButton* send = (QPushButton*)sender(); - - if(send == GroupPoints->PushButton1) - myEditCurrentArgument = GroupPoints->LineEdit1; - else if(send == GroupPoints->PushButton2) - { - myEditCurrentArgument = GroupPoints->LineEdit2; - if( getConstructorId()==1 ) - globalSelection( GEOM_PLANE ); - } - else if(send == GroupPoints->PushButton3) - myEditCurrentArgument = GroupPoints->LineEdit3; - else if(send == GroupPoints->PushButton4) - myEditCurrentArgument = GroupPoints->LineEdit4; - - globalSelection( GEOM_ALLSHAPES ); - - myEditCurrentArgument->setFocus(); - SelectionIntoArgument(); -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void OperationGUI_PartitionDlg::LineEditReturnPressed() -{ - QLineEdit* send = (QLineEdit*)sender(); - - if(send == GroupPoints->LineEdit1 || - send == GroupPoints->LineEdit2 || - send == GroupPoints->LineEdit3 || - send == GroupPoints->LineEdit4 ) - { - myEditCurrentArgument = send; - GEOMBase_Skeleton::LineEditReturnPressed(); - } -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void OperationGUI_PartitionDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - ConstructorsClicked( getConstructorId() ); -} - - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : public slot to deactivate if active -//================================================================================= -void OperationGUI_PartitionDlg::DeactivateActiveDialog() -{ - GEOMBase_Skeleton::DeactivateActiveDialog(); -} - - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void OperationGUI_PartitionDlg::enterEvent(QEvent* e) -{ - if(!GroupConstructors->isEnabled()) - this->ActivateThisDialog(); -} - - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr OperationGUI_PartitionDlg::createOperation() -{ - return getGeomEngine()->GetIBooleanOperations( getStudyId() ); -} - - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool OperationGUI_PartitionDlg::isValid( QString& msg ) -{ - return (myListShapes.length() || myListTools.length() || - myListKeepInside.length() || myListRemoveInside.length()); -} - - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool OperationGUI_PartitionDlg::execute( ObjectList& objects ) -{ - bool res = false; - - GEOM::GEOM_Object_var anObj; - QString msg; - - int aLimit = GetLimit(); - int aConstructorId = getConstructorId(); - - if (aConstructorId==1) - aLimit = GEOM::SHAPE; - - if (isValid( msg )) - { - - if ( aConstructorId==0 && !toRemoveWebs() ) - myListMaterials.length(0); - - anObj = GEOM::GEOM_IBooleanOperations::_narrow( getOperation() )->MakePartition(myListShapes, - myListTools, - myListKeepInside, - myListRemoveInside, - aLimit, - toRemoveWebs(), - myListMaterials); - res = true; - } - - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - - return res; -} - - -//================================================================================= -// function : closeEvent -// purpose : -//================================================================================= -void OperationGUI_PartitionDlg::closeEvent( QCloseEvent* e ) -{ - GEOMBase_Skeleton::closeEvent( e ); -} - - -//======================================================================= -//function : ComboTextChanged -//purpose : -//======================================================================= - -void OperationGUI_PartitionDlg::ComboTextChanged() -{ - bool IsEnabled = GroupPoints->ComboBox1->currentItem() < 3; - GroupPoints->LineEdit3->setEnabled(IsEnabled); - GroupPoints->LineEdit4->setEnabled(IsEnabled); - GroupPoints->TextLabel4->setEnabled(IsEnabled); - GroupPoints->TextLabel5->setEnabled(IsEnabled); - GroupPoints->PushButton3->setEnabled(IsEnabled); - GroupPoints->PushButton4->setEnabled(IsEnabled); -} - - -//================================================================================= -// function : SetMaterials() -// purpose : -//================================================================================= -void OperationGUI_PartitionDlg::SetMaterials() -{ - MESSAGE("OperationGUI_MaterialDlg ..."); - OperationGUI_MaterialDlg *aDlg = - new OperationGUI_MaterialDlg(this, "", myListShapes, true); - MESSAGE("OperationGUI_MaterialDlg"); - return; -} - - -//================================================================================= -// function : onRemoveWebs() -// purpose : -//================================================================================= -void OperationGUI_PartitionDlg::onRemoveWebs(bool isChecked) -{ - if (GroupPoints->CheckBox1->isChecked() != isChecked) - GroupPoints->CheckBox1->setChecked(isChecked); - - GroupPoints->PushButton5->setEnabled(isChecked); -} - - -//================================================================================= -// function : toRemoveWebs() -// purpose : -//================================================================================= -bool OperationGUI_PartitionDlg::toRemoveWebs() const -{ - return GroupPoints->CheckBox1->isChecked(); -} - - -//================================================================================= -// function : GetLimit() -// purpose : -//================================================================================= -int OperationGUI_PartitionDlg::GetLimit() const -{ - int aLimit = GroupPoints->ComboBox1->currentItem(); - - switch(aLimit) - { - case 0 : - { - aLimit = GEOM::SOLID; - break; - } - case 1 : - { - aLimit = GEOM::SHELL; - break; - } - case 2 : - { - aLimit = GEOM::FACE; - break; - } - case 3 : - { - aLimit = GEOM::WIRE; - break; - } - case 4 : - { - aLimit = GEOM::EDGE; - break; - } - case 5 : - { - aLimit = GEOM::VERTEX; - break; - } - default : - aLimit = GEOM::SHAPE; - } - - return aLimit; -} diff --git a/src/OperationGUI/OperationGUI_PartitionDlg.h b/src/OperationGUI/OperationGUI_PartitionDlg.h deleted file mode 100644 index 1599bf1a8..000000000 --- a/src/OperationGUI/OperationGUI_PartitionDlg.h +++ /dev/null @@ -1,91 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : OperationGUI_PartitionDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_PARTITION_H -#define DIALOGBOX_PARTITION_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_4Sel1List1Check_QTD.h" - - -//================================================================================= -// class : OperationGUI_PartitionDlg -// purpose : -//================================================================================= -class OperationGUI_PartitionDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - OperationGUI_PartitionDlg(QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~OperationGUI_PartitionDlg(); - - void SetListMaterials(GEOM::ListOfLong ListMaterials) - { myListMaterials = ListMaterials; } - - GEOM::ListOfLong GetListMaterials() - { return myListMaterials; } - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& ); - virtual bool execute( ObjectList& objects ); - - virtual void closeEvent( QCloseEvent* e ); - -private: - void Init(); - void enterEvent(QEvent* e); - bool toRemoveWebs() const; - int GetLimit() const; - - GEOM::ListOfGO myListShapes; - GEOM::ListOfLong myListMaterials; - GEOM::ListOfGO myListTools; - GEOM::ListOfGO myListRemoveInside; - GEOM::ListOfGO myListKeepInside; - - DlgRef_4Sel1List1Check_QTD* GroupPoints; - -private slots: - void ClickOnOk(); - bool ClickOnApply(); - void ClickOnCancel(); - void ActivateThisDialog(); - void DeactivateActiveDialog(); - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - void ComboTextChanged(); - void onRemoveWebs(bool); - void SetMaterials(); - void ConstructorsClicked(int constructorId); -}; - -#endif // DIALOGBOX_PARTITION_H diff --git a/src/PARTITION/Makefile.in b/src/PARTITION/Makefile.in deleted file mode 100644 index 76de606eb..000000000 --- a/src/PARTITION/Makefile.in +++ /dev/null @@ -1,63 +0,0 @@ -# GEOM PARTITION : partition algorithm -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Author : Marc Tajchman (CEA) -# Module : GEOM -# $Header$ - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@ - - -@COMMENCE@ - -# Libraries targets -LIB = libGEOMPartition.la -LIB_SRC = Partition_Inter2d.cxx \ - Partition_Inter3d.cxx \ - Partition_Loop2d.cxx \ - Partition_Loop3d.cxx \ - Partition_Spliter.cxx - -LIB_CLIENT_IDL = -LIB_SERVER_IDL = - -# header files -EXPORT_HEADERS = Partition_Spliter.hxx \ - Partition_Inter3d.hxx - -# idl files -EXPORT_IDLS= - - -CPPFLAGS += $(OCC_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome -CXXFLAGS += $(OCC_CXXFLAGS) -I${KERNEL_ROOT_DIR}/include/salome -LDFLAGS += $(CAS_LDPATH) -lTKBool -L${KERNEL_ROOT_DIR}/lib/salome - -%_moc.cxx: %.h - $(MOC) $< -o $@ - -@CONCLUDE@ diff --git a/src/PARTITION/Partition.cdl b/src/PARTITION/Partition.cdl deleted file mode 100644 index 9b1bf2287..000000000 --- a/src/PARTITION/Partition.cdl +++ /dev/null @@ -1,44 +0,0 @@ --- GEOM PARTITION : partition algorithm --- --- Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, --- CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS --- --- 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. --- --- 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org --- --- --- --- File : Partition.cdl --- Author : Benedicte MARTIN --- Module : GEOM - -package Partition - -uses - TopoDS, - TopTools, - TopAbs, - BRepAlgo, - BRep, - gp -is - class Spliter; - class Inter3d; - class Inter2d; - class Loop2d; - class Loop3d; - -end Partition; diff --git a/src/PARTITION/Partition_Inter2d.cdl b/src/PARTITION/Partition_Inter2d.cdl deleted file mode 100644 index 1dcaa264b..000000000 --- a/src/PARTITION/Partition_Inter2d.cdl +++ /dev/null @@ -1,91 +0,0 @@ --- GEOM PARTITION : partition algorithm --- --- Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, --- CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS --- --- 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. --- --- 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org --- --- --- --- File : Partition_Inter2d.cdl --- Author : Benedicte MARTIN --- Module : GEOM - -class Inter2d from Partition - - ---Purpose: Computes the intersections between edges on a face - -- stores result is SD as AsDes from BRepAlgo. - -uses - AsDes from BRepAlgo, - Edge from TopoDS, - Face from TopoDS, - Vertex from TopoDS, - MapOfShape from TopTools, - Real from Standard, - ListOfShape from TopTools - -is - CompletPart2d(myclass ; AsDes : mutable AsDes from BRepAlgo; - F : Face from TopoDS; - NewEdges : MapOfShape from TopTools); - - ---Purpose: Computes the intersections between the edges stored - -- is AsDes as descendants of . Intersections is computed - -- between two edges if one of them is bound in NewEdges. - - - FindEndVertex(myclass; VertList : ListOfShape from TopTools; - f,l : Real from Standard; - E : Edge from TopoDS; - First : out Boolean from Standard; - DU : out Real from Standard) - returns Vertex from TopoDS; - ---Purpose: Returns a vertex from having parameter on - -- most close to or . is True if - -- found vertex is closer to . returns parameter - -- difference. - - AddVonE(myclass; V : Vertex from TopoDS; - E1,E2 : Edge from TopoDS; - AsDes : mutable AsDes from BRepAlgo; - F: Face from TopoDS) - returns Vertex from TopoDS; - ---Purpose: Put V in AsDes as intersection of E1 and E2. - -- Check that vertex equal to V already exists on one - -- of edges, in such a case, V is not added but - -- existing vertex is updated to be on E1 and E2 and - -- is returned insead of V. - -- Optional F is a face E1 and E2 are on. If F is - -- provided, it is used to find new vertices on E1 - -- and E2 resulting from intersection of new edges on - -- the two other faces the F interferes with and - -- through which E1 and E2 pass too. This helps to - -- avoid small edges. - - - GetTolerance(myclass; theV : Vertex from TopoDS; - theU : Real from Standard; - theE : Edge from TopoDS; - theAsDes : AsDes from BRepAlgo) - returns Real from Standard; - ---Purpose: Returns tolerance theV must have atfer its - -- addition to theE with theU parameter. theAsDes is - -- used to find pcurves of theE - -end Inter2d; - diff --git a/src/PARTITION/Partition_Inter2d.cxx b/src/PARTITION/Partition_Inter2d.cxx deleted file mode 100644 index 54a270e44..000000000 --- a/src/PARTITION/Partition_Inter2d.cxx +++ /dev/null @@ -1,673 +0,0 @@ -// GEOM PARTITION : partition algorithm -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R& D, LEG, PRINCIPIA R& D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : Partition_Inter2d.cxx -// Author : Benedicte MARTIN -// Module : GEOM -// $Header$ - -using namespace std; -#include "Partition_Inter2d.ixx" - -#include "utilities.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef DEB -static Standard_Boolean TestEdges = 0; -static Standard_Integer NbF2d = 0; -static Standard_Integer NbE2d = 0; -#endif - -//======================================================================= -//function : getOtherShape -//purpose : -//======================================================================= - -static TopoDS_Shape getOtherShape(const TopoDS_Shape& theS, - const TopTools_ListOfShape& theSList) -{ - TopTools_ListIteratorOfListOfShape anIt( theSList ); - for ( ; anIt.More(); anIt.Next() ) - if (!theS.IsSame( anIt.Value() )) - return anIt.Value(); - - return TopoDS_Shape(); -} - -//======================================================================= -//function : findVOnE -//purpose : on theE, find a vertex close to theV, such that an edge -// passing through it is an itersection of theF1 and theF2. -// theE intersects theE2 at theV -//======================================================================= - -static Standard_Boolean findVOnE(const TopoDS_Vertex & theV, - const TopoDS_Edge& theE, - const TopoDS_Edge& theE2, - const TopoDS_Shape& theF1, - const TopoDS_Shape& theF2, - const Handle(BRepAlgo_AsDes)& theAsDes, - TopoDS_Vertex & theFoundV) -{ - Standard_Real MinDist2 = ::RealLast(); - gp_Pnt P; - - // check all vertices on theE - const TopTools_ListOfShape& aVList = theAsDes->Descendant( theE ); - TopTools_ListIteratorOfListOfShape anIt( aVList ); - if (anIt.More()) - P = BRep_Tool::Pnt( theV ); - for ( ; anIt.More(); anIt.Next() ) - { - // check by distance - TopoDS_Vertex & V = TopoDS::Vertex( anIt.Value() ); - Standard_Real dist2 = P.SquareDistance( BRep_Tool::Pnt( V )); - if (dist2 < MinDist2) - MinDist2 = dist2; - else - continue; - - // V is a candidate if among edges passing through V there is one - // which is an intersection of theF1 and theF2 - TopTools_ListIteratorOfListOfShape anEIt( theAsDes->Ascendant( V )); - Standard_Boolean isOk = Standard_False; - for ( ; !isOk && anEIt.More(); anEIt.Next() ) - { - const TopoDS_Shape & E2 = anEIt.Value(); - if ( theE2.IsSame( E2 )) - continue; - const TopTools_ListOfShape & aFList = theAsDes->Ascendant( E2 ); - if (aFList.IsEmpty()) - continue; - if ( theF1.IsSame( aFList.First() )) - isOk = theF2.IsSame( aFList.Last() ); - else - isOk = theF2.IsSame( aFList.First() ) && theF1.IsSame( aFList.Last() ); - } - if (isOk) - theFoundV = V; - } - - if (theFoundV.IsNull()) - return Standard_False; - - // check that MinDist2 is not too large - Standard_Real f, l; - TopLoc_Location L; - Handle(Geom_Curve) aCurve = BRep_Tool::Curve( theE, L, f, l ); - gp_Pnt P1 = aCurve->Value( f ); - gp_Pnt P2 = aCurve->Value( 0.3 * f + 0.7 * l ); - //gp_Pnt P2 = aCurve->Value( 0.5 * ( f + l )); - if (MinDist2 > P1.SquareDistance( P2 )) - return Standard_False; - -#ifdef DEB - MESSAGE("findVOnE: found MinDist = " << sqrt (MinDist2)); -#endif - - return Standard_True; -} - -//======================================================================= -//function : AddVonE -//purpose : Put V in AsDes as intersection of E1 and E2. -// Check that vertex equal to V already exists on one -// of edges, in such a case, V is not added but -// existing vertex is updated to be on E1 and E2 and -// is returned insead of V. -//======================================================================= - -TopoDS_Vertex Partition_Inter2d::AddVonE(const TopoDS_Vertex& theV, - const TopoDS_Edge& E1, - const TopoDS_Edge& E2, - const Handle(BRepAlgo_AsDes)& AsDes, - const TopoDS_Face& theF) - -{ - //------------------------------------------------------------- - // test if the points of intersection already exist. If not, - // add as descendants of the edges. - // nb: theses points are only vertices of intersection. - //------------------------------------------------------------- - const TopTools_ListOfShape& VOnE1 = AsDes->Descendant(E1); - const TopTools_ListOfShape& VOnE2 = AsDes->Descendant(E2); - gp_Pnt P1,P2; - TopoDS_Vertex V1,V2; - TopTools_ListIteratorOfListOfShape it; - BRep_Builder B; - TopAbs_Orientation O1,O2; - Standard_Real U1,U2; - Standard_Real Tol,Tol1,Tol2; - Standard_Boolean OnE1,OnE2; - - TopoDS_Vertex V = theV; - - U1 = BRep_Tool::Parameter(V,E1); - U2 = BRep_Tool::Parameter(V,E2); - O1 = V.Orientation(); - O2 = O1; - P1 = BRep_Tool::Pnt(V); - Tol = BRep_Tool::Tolerance( V ); - OnE1 = OnE2 = Standard_False; - - //----------------------------------------------------------------- - // Search if the point of intersection is a vertex of E1. - //----------------------------------------------------------------- - for (it.Initialize(VOnE1); it.More(); it.Next()) { - const TopoDS_Vertex& CV = TopoDS::Vertex( it.Value() ); - if (V.IsSame( CV )) { - V1 = V; - OnE1 = Standard_True; - break; - } - P2 = BRep_Tool::Pnt( CV ); - Tol1 = 1.1*(Tol + BRep_Tool::Tolerance( CV )); - if (P1.SquareDistance(P2) <= Tol1*Tol1) { - V = CV; - V1 = V; - OnE1 = Standard_True; - break; - } - } - if (OnE1) { - //----------------------------------------------------------------- - // Search if the vertex found is still on E2. - //----------------------------------------------------------------- - for (it.Initialize(VOnE2); it.More(); it.Next()) { - if (V.IsSame( it.Value() )) { - OnE2 = Standard_True; - V2 = V; - break; - } - } - } - if (!OnE2) { - for (it.Initialize(VOnE2); it.More(); it.Next()) { - //----------------------------------------------------------------- - // Search if the point of intersection is a vertex of E2. - //----------------------------------------------------------------- - const TopoDS_Vertex& CV = TopoDS::Vertex( it.Value() ); - P2 = BRep_Tool::Pnt( CV ); - Tol2 = 1.1*(Tol + BRep_Tool::Tolerance( CV )); - if (P1.SquareDistance(P2) <= Tol2*Tol2) { - V = CV; - V2 = V; - OnE2 = Standard_True; - break; - } - } - } - - - if (!OnE1 && !OnE2 && !theF.IsNull()) - { - // if 3 faces intersects each others, 3 new edges on them must pass - // through one vertex but real intersection points of each - // pair of edges are sometimes more far than a tolerance. - // Try to analitically find vertices that E1 and E2 must pass trough - - TopoDS_Shape F1 = getOtherShape( theF, AsDes->Ascendant( E1 )); - TopoDS_Shape F2 = getOtherShape( theF, AsDes->Ascendant( E2 )); - if (!F1.IsNull() && !F2.IsNull() && !F1.IsSame( F2 )) - { - OnE1 = findVOnE ( theV, E1, E2, F1, F2, AsDes, V1 ); - OnE2 = findVOnE ( theV, E2, E1, F1, F2, AsDes, V2 ); - if (OnE2) V = V2; - if (OnE1) V = V1; - } - } - - if (OnE1 && OnE2) { - if (!V1.IsSame(V2)) { - // replace V1 with V2 on all edges V1 is on - Standard_Real UV1; - TopoDS_Edge EWE1; - TopoDS_Vertex VI; - const TopTools_ListOfShape& EdgeWithV1 = AsDes->Ascendant(V1); - - for (it.Initialize(EdgeWithV1); it.More(); it.Next()) { - EWE1 = TopoDS::Edge(it.Value()); - VI = V1; - VI.Orientation(TopAbs_INTERNAL); - UV1 = BRep_Tool::Parameter(VI,EWE1); - VI = V2; - VI.Orientation(TopAbs_INTERNAL); - B.UpdateVertex( VI, UV1, EWE1, GetTolerance( VI, UV1, EWE1, AsDes)); - } - AsDes->Replace(V1,V2); - V = V2; - } - } - - // add existing vertices instead of new ones - if (!OnE1) { - if (OnE2) { - V.Orientation(TopAbs_INTERNAL); - B.UpdateVertex (V, U1, E1, GetTolerance( V, U1, E1, AsDes)); - } - V.Orientation(O1); - AsDes->Add(E1,V); - } - if (!OnE2) { - if (OnE1) { - V.Orientation(TopAbs_INTERNAL); - B.UpdateVertex (V, U2, E2, GetTolerance( V, U2, E2, AsDes )); - } - V.Orientation(O2); - AsDes->Add(E2,V); - } - - return V; -} - -//======================================================================= -//function : FindEndVertex -//purpose : Returns a vertex from having parameter on -// closest to or . is True if -// found vertex is closer to . returns parameter -// difference. -//======================================================================= - -TopoDS_Vertex Partition_Inter2d::FindEndVertex(const TopTools_ListOfShape& LV, - const Standard_Real f, - const Standard_Real l, - const TopoDS_Edge& E, - Standard_Boolean& isFirst, - Standard_Real& minDU) -{ - TopoDS_Vertex endV; - Standard_Real U, endU, min; - minDU = 1.e10; - - TopTools_ListIteratorOfListOfShape it; - it.Initialize(LV); - for (; it.More(); it.Next()) { - const TopoDS_Vertex& v = TopoDS::Vertex(it.Value()); - U = BRep_Tool::Parameter(v, E); - min = Min( Abs(U-f), Abs(U-l) ); - if (min < minDU) { - endV = v; - endU = U; - minDU = min; - } - } - if (Abs(endU-f) < Abs(endU-l)) - isFirst = Standard_True; - else - isFirst = Standard_False; - - return endV; -} - -//======================================================================= -//function : treatClosed -//purpose : add second vertex to closed edge. Vertex is one of -//======================================================================= - -static void treatClosed (const TopoDS_Edge& E1, - const Standard_Real f, - const Standard_Real l, - TopTools_ListOfShape& LV1, - TopTools_ListOfShape& /*LV2*/) -{ - Standard_Boolean isFirst=0; - Standard_Real minDU = 1.e10; - TopoDS_Vertex endV; - endV = Partition_Inter2d::FindEndVertex(LV1, f,l, E1, isFirst,minDU); - - if (minDU > Precision::PConfusion()) - return; // not end point - - Standard_Real newU; - if (isFirst) - newU = f + (l - f); - else - newU = l - (l - f); - - // update end parameter - BRep_Builder B; - endV.Orientation(TopAbs_INTERNAL); - B.UpdateVertex(endV,newU,E1,BRep_Tool::Tolerance(endV)); -} - -//======================================================================= -//function : EdgesPartition -//purpose : -//======================================================================= - -static void EdgesPartition(const TopoDS_Face& F, - const TopoDS_Edge& E1, - const TopoDS_Edge& E2, - const Handle(BRepAlgo_AsDes)& AsDes, - const TopTools_MapOfShape& NewEdges, - const Standard_Boolean WithOri) -{ - - Standard_Real f[3],l[3]; - Standard_Real MilTol2; - Standard_Real Tol = Max (BRep_Tool::Tolerance(E1), - BRep_Tool::Tolerance(E2)); - MilTol2 = Tol * Tol * 10; - - BRep_Tool::Range(E1, f[1], l[1]); - BRep_Tool::Range(E2, f[2], l[2]); - - BRepAdaptor_Curve CE1(E1,F); - BRepAdaptor_Curve CE2(E2,F); - - TopoDS_Edge EI[3]; EI[1] = E1; EI[2] = E2; - TopTools_ListOfShape LV1; // new vertices at intersections on E1 - TopTools_ListOfShape LV2; // ... on E2 - BRep_Builder B; - - // if E1 and E2 are results of intersection of F and two connex faces then - // no need to intersect edges, they can contact by vertices only - // (encounted an exception in TopOpeBRep_EdgesIntersector in such a case) - Standard_Boolean intersect = Standard_True; - TopTools_IndexedMapOfShape ME; - TopExp::MapShapes(F, TopAbs_EDGE, ME); - if (!ME.Contains(E1) && ! ME.Contains(E2)) { // if E1 and E2 are new on F - TopoDS_Shape F1, F2; - const TopTools_ListOfShape& LF1 = AsDes->Ascendant( E1 ); - F1 = F.IsSame( LF1.First() ) ? LF1.Last() : LF1.First(); - const TopTools_ListOfShape& LF2 = AsDes->Ascendant( E2 ); - F2 = F.IsSame( LF2.First() ) ? LF2.Last() : LF2.First(); - if (!F.IsSame(F2) && !F.IsSame(F1) ) { - TopExp_Explorer exp(F2, TopAbs_EDGE); - TopExp::MapShapes(F1, TopAbs_EDGE, ME); - for (; exp.More(); exp.Next()) { - if (ME.Contains( exp.Current())) { - intersect = Standard_False; - break; - } - } - } - } - - if (intersect) { - //------------------------------------------------------ - // compute the points of Intersection in 2D - //----------------------------------------------------- - // i.e. fill LV1 and LV2 - TopOpeBRep_EdgesIntersector EInter; - EInter.SetFaces(F,F); - Standard_Real TolDub = 1.e-7; - EInter.ForceTolerances(TolDub,TolDub); - Standard_Boolean reducesegments = Standard_False; - EInter.Perform (E1,E2,reducesegments); - - Standard_Boolean rejectreducedsegmentpoints = Standard_False; - EInter.InitPoint(rejectreducedsegmentpoints); - for ( ; EInter.MorePoint(); EInter.NextPoint() ) - { - const TopOpeBRep_Point2d& P2D = EInter.Point(); - const gp_Pnt& P = P2D.Value(); - TopoDS_Vertex V = BRepLib_MakeVertex(P); - - //------------------------- - // control the point found. - //------------------------- - gp_Pnt P1 = CE1.Value(P2D.Parameter(1)); - gp_Pnt P2 = CE2.Value(P2D.Parameter(2)); - Standard_Real sqd1 = P1.SquareDistance(P); - Standard_Real sqd2 = P2.SquareDistance(P); - if (sqd1 > MilTol2 || sqd2 > MilTol2 ) - continue; - - // add a new vertex to the both edges - Standard_Real toler = Max( Tol, sqrt( Max( sqd1, sqd2 ))); - Standard_Integer i; - for (i = 1; i <= 2; i++) { - Standard_Real U = P2D.Parameter(i); - V.Orientation(TopAbs_INTERNAL); - B.UpdateVertex( V,U,EI[i], toler); - TopAbs_Orientation OO = TopAbs_REVERSED; - if (WithOri) { - if (P2D.IsVertex(i)) - OO = P2D.Vertex(i).Orientation(); - else if (P2D.Transition(i).Before() == TopAbs_OUT) { - OO = TopAbs_FORWARD; - } - V.Orientation(OO); - if (i == 1) LV1.Append(V); - else LV2.Append(V); - } - } - } - } // if (intersect) - - //---------------------------------- - // Test the extremities of the edges. - //---------------------------------- - // add to LV* vertices for vertex-vertex closeness - Standard_Real U1,U2; - Standard_Real TolConf2, TolConf; - TopoDS_Vertex V1[2],V2[2]; - TopExp::Vertices(E1,V1[0],V1[1]); - TopExp::Vertices(E2,V2[0],V2[1]); - - Standard_Integer i,j,k; - for (j = 0; j < 2; j++) { - if (V1[j].IsNull()) continue; - for ( k = 0; k < 2; k++) { - if (V2[k].IsNull()) continue; - gp_Pnt P1 = BRep_Tool::Pnt(V1[j]); - gp_Pnt P2 = BRep_Tool::Pnt(V2[k]); - TolConf = BRep_Tool::Tolerance(V1[j]) + BRep_Tool::Tolerance(V2[k]); - TolConf = Max (Tol, TolConf); - TolConf2 = TolConf * TolConf; - if (!intersect) - TolConf2 *= 100; - Standard_Real SqDist = P1.SquareDistance(P2); - - if (SqDist <= TolConf2) { - TopoDS_Vertex V = BRepLib_MakeVertex(P1); - V.Orientation(TopAbs_INTERNAL); - U1 = (j == 0) ? f[1] : l[1]; - U2 = (k == 0) ? f[2] : l[2]; - B.UpdateVertex(V,U1,E1,TolConf); - B.UpdateVertex(V,U2,E2,TolConf); - LV1.Prepend(V.Oriented(V1[j].Orientation())); - LV2.Prepend(V.Oriented(V2[k].Orientation())); - } - } - } - - Standard_Boolean AffichPurge = Standard_False; - - if ( LV1.IsEmpty()) return; - - //---------------------------------- - // Purge of all the vertices. - //---------------------------------- - // remove one of close vertices - TopTools_ListIteratorOfListOfShape it1LV1,it1LV2,it2LV1; - gp_Pnt P1,P2; - Standard_Boolean Purge = Standard_True; - - while (Purge) { - i = 1; - Purge = Standard_False; - for (it1LV1.Initialize(LV1),it1LV2.Initialize(LV2); - it1LV1.More(); - it1LV1.Next(),it1LV2.Next()) { - j = 1; - it2LV1.Initialize(LV1); - while (j < i) { - const TopoDS_Vertex& VE1 = TopoDS::Vertex(it1LV1.Value()); - const TopoDS_Vertex& VE2 = TopoDS::Vertex(it2LV1.Value()); - Standard_Real Tol1 = BRep_Tool::Tolerance( VE1 ); - Standard_Real Tol2 = BRep_Tool::Tolerance( VE2 ); - P1 = BRep_Tool::Pnt( VE1 ); - P2 = BRep_Tool::Pnt( VE2 ); - if (P1.IsEqual(P2, Tol1 + Tol2)) { - LV1.Remove(it1LV1); - LV2.Remove(it1LV2); - Purge = Standard_True; - break; - } - j++; - it2LV1.Next(); - } - if (Purge) break; - i++; - } - } - - // care of new closed edges, they always intersect with seam at end - if (V1[0].IsSame( V1[1] ) && NewEdges.Contains(E1) ) - treatClosed (E1, f[1], l[1], LV1, LV2); - if (V2[0].IsSame( V2[1] ) && NewEdges.Contains(E2) ) - treatClosed (E2, f[2], l[2], LV2, LV1); - - //---------------- - // Stocking vertex - //---------------- - - for ( it1LV1.Initialize( LV1 ); it1LV1.More(); it1LV1.Next()) - Partition_Inter2d::AddVonE (TopoDS::Vertex( it1LV1.Value()), - E1, E2, AsDes, F); -} - -//======================================================================= -//function : CompletPart2d -//purpose : Computes the intersections between the edges stored -// is AsDes as descendants of . Intersections is computed -// between two edges if one of them is bound in NewEdges. -//======================================================================= - -void Partition_Inter2d::CompletPart2d (const Handle(BRepAlgo_AsDes)& AsDes, - const TopoDS_Face& F, - const TopTools_MapOfShape& NewEdges) -{ - -#ifdef DEB - NbF2d++; - NbE2d = 0; -#endif - - //Do not intersect the edges of a face - TopTools_IndexedMapOfShape EdgesOfFace; - TopExp::MapShapes( F, TopAbs_EDGE , EdgesOfFace); - - //------------------------------------------------------------------- - // compute the intersection2D on the faces touched by the intersection3D - //------------------------------------------------------------------- - TopTools_ListIteratorOfListOfShape it1LE ; - TopTools_ListIteratorOfListOfShape it2LE ; - - //----------------------------------------------- - // Intersection edge-edge. - //----------------------------------------------- - const TopTools_ListOfShape& LE = AsDes->Descendant(F); - TopoDS_Vertex V1,V2; - Standard_Integer j, i = 1; - - TopoDS_Face FF = F; - FF.Orientation(TopAbs_FORWARD); - - for ( it1LE.Initialize(LE) ; it1LE.More(); it1LE.Next()) { - const TopoDS_Edge& E1 = TopoDS::Edge(it1LE.Value()); - j = 1; - it2LE.Initialize(LE); - - while (j < i && it2LE.More()) { - const TopoDS_Edge& E2 = TopoDS::Edge(it2LE.Value()); - //---------------------------------------------------------- - // Intersections of the new edges obtained by intersection - // between them and with the restrictions edges - //---------------------------------------------------------- - if ( (!EdgesOfFace.Contains(E1) || !EdgesOfFace.Contains(E2)) && - (NewEdges.Contains(E1) || NewEdges.Contains(E2)) ) { - EdgesPartition(FF,E1,E2,AsDes,NewEdges,Standard_True); - } - it2LE.Next(); - j++; - } - i++; - } -} - -//======================================================================= -//function : GetTolerance -//purpose : Returns tolerance theV must have atfer its -// addition to theE with theU parameter. theAsDes is -// used to find pcurves of theE -//======================================================================= - -Standard_Real Partition_Inter2d::GetTolerance - (const TopoDS_Vertex & theV, - const Standard_Real theU, - const TopoDS_Edge & theE, - const Handle(BRepAlgo_AsDes)& theAsDes) -{ - Standard_Real aTol = BRep_Tool::Tolerance( theV ); - gp_Pnt aPnt = BRep_Tool::Pnt( theV ); - - // check point on 3D curve - Standard_Real f,l; - Handle(Geom_Curve) C = BRep_Tool::Curve( theE, f, l ); - if (!C.IsNull()) - aTol = Max ( aTol, aPnt.Distance( C->Value( theU ))); - - // check points on pcurves - const TopTools_ListOfShape& aFList = theAsDes->Ascendant( theE ); - TopTools_ListIteratorOfListOfShape aFIt( aFList ); - for ( ; aFIt.More(); aFIt.Next() ) - { - const TopoDS_Face& F = TopoDS::Face( aFIt.Value() ); - Handle(Geom2d_Curve) pcurve = BRep_Tool::CurveOnSurface( theE, F, f, l ); - if (!pcurve.IsNull()) - { - gp_Pnt2d aPnt2d = pcurve->Value( theU ); - TopLoc_Location L; - Handle(Geom_Surface) S = BRep_Tool::Surface( F, L ); - gp_Pnt aPntOnS = S->Value( aPnt2d.X(), aPnt2d.Y() ); - if (!L.IsIdentity()) - aPntOnS.Transform( L.Transformation() ); - aTol = Max ( aTol, aPnt.Distance( aPntOnS )); - } - } - - return aTol; -} diff --git a/src/PARTITION/Partition_Inter2d.hxx b/src/PARTITION/Partition_Inter2d.hxx deleted file mode 100644 index 059be9613..000000000 --- a/src/PARTITION/Partition_Inter2d.hxx +++ /dev/null @@ -1,110 +0,0 @@ -// GEOM PARTITION : partition algorithm -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : Partition_Inter2d.hxx -// Module : GEOM - -#ifndef _Partition_Inter2d_HeaderFile -#define _Partition_Inter2d_HeaderFile - -#ifndef _Handle_BRepAlgo_AsDes_HeaderFile -#include -#endif -#ifndef _Standard_Real_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class BRepAlgo_AsDes; -class TopoDS_Face; -class TopTools_MapOfShape; -class TopoDS_Vertex; -class TopTools_ListOfShape; -class TopoDS_Edge; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class Partition_Inter2d { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT static void CompletPart2d(const Handle(BRepAlgo_AsDes)& AsDes,const TopoDS_Face& F,const TopTools_MapOfShape& NewEdges) ; -Standard_EXPORT static TopoDS_Vertex FindEndVertex(const TopTools_ListOfShape& VertList,const Standard_Real f,const Standard_Real l,const TopoDS_Edge& E,Standard_Boolean& First,Standard_Real& DU) ; -Standard_EXPORT static TopoDS_Vertex AddVonE(const TopoDS_Vertex& V,const TopoDS_Edge& E1,const TopoDS_Edge& E2,const Handle(BRepAlgo_AsDes)& AsDes,const TopoDS_Face& F) ; -Standard_EXPORT static Standard_Real GetTolerance(const TopoDS_Vertex& theV,const Standard_Real theU,const TopoDS_Edge& theE,const Handle(BRepAlgo_AsDes)& theAsDes) ; - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/PARTITION/Partition_Inter2d.ixx b/src/PARTITION/Partition_Inter2d.ixx deleted file mode 100644 index 963d1ec17..000000000 --- a/src/PARTITION/Partition_Inter2d.ixx +++ /dev/null @@ -1,31 +0,0 @@ -// GEOM PARTITION : partition algorithm -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : Partition_Inter2d.ixx -// Module : GEOM - -#include "Partition_Inter2d.jxx" - - - - diff --git a/src/PARTITION/Partition_Inter2d.jxx b/src/PARTITION/Partition_Inter2d.jxx deleted file mode 100644 index 8c3ef7d49..000000000 --- a/src/PARTITION/Partition_Inter2d.jxx +++ /dev/null @@ -1,47 +0,0 @@ -// GEOM PARTITION : partition algorithm -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : Partition_Inter2d.jxx -// Module : GEOM - -#ifndef _BRepAlgo_AsDes_HeaderFile -#include -#endif -#ifndef _TopoDS_Face_HeaderFile -#include -#endif -#ifndef _TopTools_MapOfShape_HeaderFile -#include -#endif -#ifndef _TopoDS_Vertex_HeaderFile -#include -#endif -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _TopoDS_Edge_HeaderFile -#include -#endif -#ifndef _Partition_Inter2d_HeaderFile -#include "Partition_Inter2d.hxx" -#endif diff --git a/src/PARTITION/Partition_Inter3d.cdl b/src/PARTITION/Partition_Inter3d.cdl deleted file mode 100644 index 44be26eaf..000000000 --- a/src/PARTITION/Partition_Inter3d.cdl +++ /dev/null @@ -1,175 +0,0 @@ --- GEOM PARTITION : partition algorithm --- --- Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, --- CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS --- --- 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. --- --- 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org --- --- --- --- File : Partition_Inter3d.cdl --- Author : Benedicte MARTIN --- Module : GEOM - -class Inter3d from Partition - - ---Purpose: Computes the intersection face face in a set of faces - -- Store the result in a SD as AsDes. - -uses - Edge from TopoDS, - Vertex from TopoDS, - DataMapOfShapeShape from TopTools, - MapOfShape from TopTools, - Boolean from Standard, - AsDes from BRepAlgo, - Image from BRepAlgo, - Shape from TopoDS, - Face from TopoDS, - ListOfShape from TopTools, - Real from Standard, - State from TopAbs, - DataMapOfShapeListOfShape from TopTools - -is - Create returns Inter3d from Partition; - - Create(AsDes : mutable AsDes from BRepAlgo); - - CompletPart3d (me : in out; SetOfFaces1 : ListOfShape from TopTools; - FaceShapeMap: DataMapOfShapeShape from TopTools) - is static; - - FacesPartition (me : in out; F1, F2 : Face from TopoDS) - is static; - - ---------------------------- - ---Category: Result Querying - ---------------------------- - - IsDone(me ; F1,F2 : Face from TopoDS) - returns Boolean from Standard is static; - ---Purpose: return True if F1-F2 pair has been processed - - TouchedFaces(me : in out) returns MapOfShape from TopTools - ---C++: return & - is static; - ---Purpose: return map of faces cut by new or section edges - - NewEdges(me : in out) returns MapOfShape from TopTools - ---C++: return & - is static; - ---Purpose: return new and section edges - - AsDes(me) returns AsDes from BRepAlgo - is static; - ---Purpose: return an object containing info about - -- Ascendants | Descendants - -- ------------------+--------------------- - -- 1. faces | edges cutting them - -- 2. sectoin edges | new vertices on them - - - ------------------------------- - ---Category: Same domain shapes - ------------------------------- - - HasSameDomainF(me; F : Shape from TopoDS) - returns Boolean from Standard; - ---Purpose: Return true if F has same domain faces - - IsSameDomainF(me; F1, F2 : Shape from TopoDS) - returns Boolean from Standard; - ---Purpose: Return true if F1 and F2 are same domain faces - - SameDomain(me; F : Face from TopoDS) - returns ListOfShape from TopTools; - ---C++: return const & - ---Purpose: Return same domain faces of F - - ReplaceSameDomainV (me; V : Vertex from TopoDS; - E : Edge from TopoDS) - returns Vertex from TopoDS; - ---Purpose: return same domain vertex of V if it was replaced - -- and make this vertex to be on E too, else return V - - -------------------------- - ---Category: Section edges - -------------------------- - - SectionEdgesAD (me) returns AsDes from BRepAlgo - is static; - - IsSectionEdge (me; E : Edge from TopoDS) - returns Boolean from Standard; - ---Purpose: return True if E is an edge of an initial face and - -- E intersects aother face - - HasSectionEdge (me; F : Face from TopoDS) - returns Boolean from Standard; - ---Purpose: return True if F is intersected by an edge of - -- other face - - IsSplitOn (me; NewE, OldE : Edge from TopoDS; - F : Face from TopoDS) - returns Boolean from Standard; - ---Purpose: return True if NewE is split of OldE on F; - -- no check if NewE is split of OldE :) - - SectionEdgeFaces (me; SecE : Edge from TopoDS) - returns ListOfShape from TopTools; - ---C++: return const& - ---Purpose: return faces cut by section edge - - -------------------- - ---Category: Private - -------------------- - - Inter3D (me: in out; F1, F2 : Face from TopoDS; - LInt : in out ListOfShape from TopTools) - is static private; - - StorePart3d(me : in out; F1,F2 : Face from TopoDS; - LInt1 : ListOfShape from TopTools) - is static private; - - SetDone(me : in out; F1,F2 : Face from TopoDS) - is static private; - - Affiche (me; SetOfFaces : ListOfShape from TopTools) - is static private; - -fields - - myAsDes : AsDes from BRepAlgo; - myDone : DataMapOfShapeListOfShape from TopTools; - myTouched : MapOfShape from TopTools; - myNewEdges : MapOfShape from TopTools; - - -- section edges: existing edges that are intersection lines, - -- may be partially. - -- Store as - -- FACE -> SECTION EDGES, SECTION EDGE -> OTHER SECTION EDGE - mySectionEdgesAD : AsDes from BRepAlgo; - - -- same domain shapes - -- faces - mySameDomainFM : DataMapOfShapeListOfShape from TopTools; - -- vertex -> vertex replacement - mySameDomainVM : DataMapOfShapeShape from TopTools; - -end Inter3d; diff --git a/src/PARTITION/Partition_Inter3d.cxx b/src/PARTITION/Partition_Inter3d.cxx deleted file mode 100644 index e9bf649ce..000000000 --- a/src/PARTITION/Partition_Inter3d.cxx +++ /dev/null @@ -1,939 +0,0 @@ -// GEOM PARTITION : partition algorithm -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : Partition_Inter3d.cxx -// Author : Benedicte MARTIN -// Module : GEOM -// $Header$ - -using namespace std; -#include "Partition_Inter2d.hxx" -#include "Partition_Inter3d.ixx" -#include "utilities.h" - -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef DEB -#include -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//======================================================================= -//function : Partition_Inter3d -//purpose : -//======================================================================= - -Partition_Inter3d::Partition_Inter3d() -{ -} -//======================================================================= -//function : Partition_Inter3d -//purpose : -//======================================================================= - -Partition_Inter3d::Partition_Inter3d(const Handle(BRepAlgo_AsDes)& AsDes) - :myAsDes(AsDes) -{ - mySectionEdgesAD = new BRepAlgo_AsDes; -} - -//======================================================================= -//function : CompletPart3d -//purpose : FaceShapeMap is just to know the shape a face belongs to -//======================================================================= - -void Partition_Inter3d::CompletPart3d(const TopTools_ListOfShape& SetOfFaces1, - const TopTools_DataMapOfShapeShape& FaceShapeMap) -{ - if (myAsDes.IsNull()) - myAsDes = new BRepAlgo_AsDes; - - TopTools_ListIteratorOfListOfShape it; - - //--------------------------------------------------------------- - // Construction of bounding boxes. - //--------------------------------------------------------------- - - BRep_Builder B; - TopoDS_Compound CompOS; - B.MakeCompound(CompOS); - for (it.Initialize(SetOfFaces1); it.More(); it.Next()) - B.Add(CompOS, it.Value()); - - TopOpeBRepTool_BoxSort BOS; - BOS.AddBoxesMakeCOB(CompOS,TopAbs_FACE); - - for (it.Initialize(SetOfFaces1); it.More(); it.Next()) { - TopoDS_Face F1 = TopoDS::Face(it.Value()); - - // avoid intersecting faces of one shape - TopoDS_Shape S1; - if (FaceShapeMap.IsBound(F1)) S1 = FaceShapeMap.Find(F1); - - // to filter faces sharing an edge - TopTools_IndexedMapOfShape EM; - TopExp::MapShapes( F1, TopAbs_EDGE, EM); - - TColStd_ListIteratorOfListOfInteger itLI = BOS.Compare(F1); - for (; itLI.More(); itLI.Next()) { - TopoDS_Face F2 = TopoDS::Face(BOS.TouchedShape(itLI)); - if (F1.IsSame(F2) || IsDone(F1,F2)) - continue; - - TopoDS_Shape S2; - if (FaceShapeMap.IsBound(F2)) S2 = FaceShapeMap.Find(F2); - if (!S1.IsNull() && S1.IsSame(S2)) - continue; // descendants of one shape - - TopExp_Explorer expE (F2, TopAbs_EDGE); - for ( ; expE.More(); expE.Next()) - if (EM.Contains( expE.Current() )) - break; - if (expE.More()) - { - // faces have a common edge, check if they are a tool and a face - // generated by the tool in another shape; in that case they are - // to be intersected - TopLoc_Location L1, L2; - Handle(Geom_Surface) S1 = BRep_Tool::Surface( F1, L1 ); - Handle(Geom_Surface) S2 = BRep_Tool::Surface( F2, L2 ); - if ( S1 != S2 || L1 != L2 ) - continue; - } - - F1.Orientation(TopAbs_FORWARD); - F2.Orientation(TopAbs_FORWARD); - FacesPartition(F1,F2); - } - - // mark as modified a face which has at least one new edge - if (!myAsDes->HasDescendant( F1 )) - continue; - TopTools_ListIteratorOfListOfShape itE (myAsDes->Descendant( F1 )); - for ( ; itE.More(); itE.Next()) { - if (myNewEdges.Contains( itE.Value())) { - myTouched.Add( F1 ); - break; - } - } - } -} - -//======================================================================= -//function : PutInBounds -//purpose : -//======================================================================= - -static void PutInBounds (const TopoDS_Face& F, - const TopoDS_Edge& E, - Handle(Geom2d_Curve)& C2d) -{ - Standard_Real umin,umax,vmin,vmax; - Standard_Real f,l; - BRep_Tool::Range(E,f,l); - - TopLoc_Location L; // Recup S avec la location pour eviter la copie. - Handle (Geom_Surface) S = BRep_Tool::Surface(F,L); - - if (S->IsKind(STANDARD_TYPE(Geom_RectangularTrimmedSurface))) { - S = (*(Handle_Geom_RectangularTrimmedSurface*)&S)->BasisSurface(); - } - if (!S->IsUPeriodic() && !S->IsVPeriodic()) - return; - - BRepTools::UVBounds(F,umin,umax,vmin,vmax); - - gp_Pnt2d Pf = C2d->Value(f); - gp_Pnt2d Pl = C2d->Value(l); - const Standard_Real Um = 0.34*f + 0.66*l; - gp_Pnt2d Pm = C2d->Value( Um ); - - // sometimes on shpere, pcurve is out of domain by V though S is - // UPeriodic, sometimes it is in domain but nontheless it has - // wrong position. - // Check pcurve position by 3D point - if (S->IsKind(STANDARD_TYPE( Geom_SphericalSurface ))) - { - // get point on the surface - gp_Pnt Ps = S->Value( Pm.X(), Pm.Y() ); - // get point on the edge - Handle(Geom_Curve) C = BRep_Tool::Curve( E, f, l ); - gp_Pnt Pc = C->Value( Um ); - // compare points - Standard_Real TolE = BRep_Tool::Tolerance( E ); - if ( Pc.SquareDistance( Ps ) * 0.95 < TolE * TolE ) - return; // OK - - // find good UV for Pc: project Pc on S - GeomAdaptor_Surface SA (S); - Extrema_ExtPS anExtPS (Pc, SA, - SA.UResolution( TolE ), SA.VResolution( TolE )); - if (anExtPS.IsDone()) - { - Standard_Integer i, nbExt = anExtPS.NbExt(); - Extrema_POnSurf aPOnSurf; - for (i = 1; i <= nbExt; ++i ) - if (anExtPS.Value( i ) <= TolE) { - aPOnSurf = anExtPS.Point( i ); - break; - } - if (i <= nbExt) { - // a point found - Standard_Real u, v; - aPOnSurf.Parameter( u, v ); - gp_Pnt2d aGoodPm ( u, v ); - C2d->Translate( Pm , aGoodPm ); - } - } - } - - //--------------- - // Recadre en U. - //--------------- - if (S->IsUPeriodic()) { - Standard_Real period = S->UPeriod(); - Standard_Real eps = period*1.e-6; - Standard_Real minC = Min(Pf.X(),Pl.X()); minC = Min(minC,Pm.X()); - Standard_Real maxC = Max(Pf.X(),Pl.X()); maxC = Max(maxC,Pm.X()); - Standard_Real du = 0.; - if (minC< umin - eps) { - du = (int((umin - minC)/period) + 1)*period; - } - if (minC > umax + eps) { - du = -(int((minC - umax)/period) + 1)*period; - } - if (du != 0) { - gp_Vec2d T1(du,0.); - C2d->Translate(T1); - minC += du; maxC += du; - } - // Ajuste au mieux la courbe dans le domaine. - if (maxC > umax +100*eps) { - Standard_Real d1 = maxC - umax; - Standard_Real d2 = umin - minC + period; - if (d2 < d1) du =-period; - if ( du != 0.) { - gp_Vec2d T2(du,0.); - C2d->Translate(T2); - } - } - } - //------------------ - // Recadre en V. - //------------------ - if (S->IsVPeriodic()) { - Standard_Real period = S->VPeriod(); - Standard_Real eps = period*1.e-6; - Standard_Real minC = Min(Pf.Y(),Pl.Y()); minC = Min(minC,Pm.Y()); - Standard_Real maxC = Max(Pf.Y(),Pl.Y()); maxC = Max(maxC,Pm.Y()); - Standard_Real dv = 0.; - if (minC< vmin - eps) { - dv = (int((vmin - minC)/period) + 1)*period; - } - if (minC > vmax + eps) { - dv = -(int((minC - vmax)/period) + 1)*period; - } - if (dv != 0) { - gp_Vec2d T1(0.,dv); - C2d->Translate(T1); - minC += dv; maxC += dv; - } - // Ajuste au mieux la courbe dans le domaine. - if (maxC > vmax +100*eps) { - Standard_Real d1 = maxC - vmax; - Standard_Real d2 = vmin - minC + period; - if (d2 < d1) dv =-period; - if ( dv != 0.) { - gp_Vec2d T2(0.,dv); - C2d->Translate(T2); - } - } - } -} - -//======================================================================= -//function : Inter3D -//purpose : -//======================================================================= - -void Partition_Inter3d::Inter3D(const TopoDS_Face& F1, - const TopoDS_Face& F2, - TopTools_ListOfShape& L) -{ - BRep_Builder B; - - // fill the data Structure - Handle(TopOpeBRepDS_HDataStructure) DatStr = new TopOpeBRepDS_HDataStructure(); - TopOpeBRep_DSFiller DSFiller; - DSFiller.Insert(F1,F2,DatStr); - - // define the GeomTool used by the DSFiller : - // compute BSpline of degree 1 on intersection curves. - Standard_Real tol3dAPPROX = 1e-7; - Standard_Real tol2dAPPROX = 1e-7; - TopOpeBRepTool_GeomTool GT2 (TopOpeBRepTool_APPROX); - GT2.SetTolerances(tol3dAPPROX,tol2dAPPROX); - TopOpeBRepDS_BuildTool BT(GT2); - - // Perform Section - TopOpeBRepBuild_Builder TopB(BT); - TopB.Perform(DatStr); - - // =============== - // Store new edges - // =============== - - L.Clear(); - TopOpeBRepDS_CurveExplorer cex(DatStr->DS()); - for (; cex.More(); cex.Next()) { - const TopOpeBRepDS_Curve& CDS = cex.Curve(); - Standard_Integer ic = cex.Index(); - Handle(Geom2d_Curve) pc1 = CDS.Curve1(); - Handle(Geom2d_Curve) pc2 = CDS.Curve2(); - - TopTools_ListIteratorOfListOfShape itLE = TopB.NewEdges(ic); - while (itLE.More()) { - TopoDS_Edge E = TopoDS::Edge(itLE.Value()); - - PutInBounds (F1,E,pc1); - PutInBounds (F2,E,pc2); - - B.UpdateEdge (E,pc1,F1,0.); - B.UpdateEdge (E,pc2,F2,0.); - - L.Append (E); - - itLE.Next(); - if (itLE.More()) { - pc1 = Handle(Geom2d_Curve)::DownCast(pc1->Copy()); - pc2 = Handle(Geom2d_Curve)::DownCast(pc2->Copy()); - } - } - } - - // ======================== - // store same domain faces - // ======================== - - - if ( DatStr->HasSameDomain( F1 )) - { - TopTools_ListOfShape emptyList; - if (!mySameDomainFM.IsBound(F1)) - mySameDomainFM.Bind(F1,emptyList); - if (!mySameDomainFM.IsBound(F2)) - mySameDomainFM.Bind(F2,emptyList); - mySameDomainFM(F1).Append(F2); - mySameDomainFM(F2).Append(F1); - } - - // ==================== - // Store section edges - // ==================== - - const TopOpeBRepDS_DataStructure& DS = DatStr->DS(); - Standard_Integer j,i,nse = DS.NbSectionEdges(); - if (nse == 0) return; - - - TopoDS_Vertex V, sdeV1, sdeV2; - TopTools_MapOfShape MV; - TopTools_ListOfShape LSE; // list of section edges - TopoDS_Face dummyF; - - for (i = 1; i <= nse; i++) - { - const TopoDS_Edge & se = DS.SectionEdge(i); - if (! TopB.IsSplit(se,TopAbs_ON)) - continue; - LSE.Append( se ); - - // add vertices where section edges interferes with other - // edges as its descendant in myAsDes - - TopoDS_Edge sde, oe; // same domain, other edge - if (DatStr->HasSameDomain(se)) { - sde = TopoDS::Edge( DatStr->SameDomain(se).Value() ); - TopExp::Vertices( sde, sdeV1, sdeV2); - } - TColStd_MapOfInteger MIV; // indices of added edges - TopOpeBRepDS_PointIterator itP (DS.ShapeInterferences( se )); - itP.SupportKind( TopOpeBRepDS_EDGE ); - // loop on intersections of se - for (; itP.More(); itP.Next()) { - oe = TopoDS::Edge( DS.Shape( itP.Support())); - if (itP.IsVertex()) { - // there is a vertex at intersection - if ( !MIV.Add( itP.Current() )) - continue; - V = TopoDS::Vertex( DS.Shape( itP.Current())); - if ( !sde.IsNull() && (V.IsSame(sdeV1) || V.IsSame(sdeV2)) ) - oe = sde; - V = ReplaceSameDomainV( V , oe ); - V.Orientation( TopAbs_INTERNAL); - B.UpdateVertex( V, itP.Parameter(), se, 0.); // AddVonE() sets real U - } - else { - // create a new vertex at the intersection point - const TopOpeBRepDS_Point& DSP = DS.Point( itP.Current()); - V = BRepLib_MakeVertex( DSP.Point() ); - V.Orientation( TopAbs_INTERNAL); - B.UpdateVertex( V, itP.Parameter(), se, DSP.Tolerance()); - // make V be on the other edge - TopOpeBRepDS_PointIterator itOP (DS.ShapeInterferences( oe )); - for (; itOP.More(); itOP.Next()) { - const TopOpeBRepDS_Point& ODSP = DS.Point( itOP.Current()); - if ( DSP.IsEqual (ODSP)) { - B.UpdateVertex( V, itOP.Parameter(), TopoDS::Edge(oe), ODSP.Tolerance()); - break; - } - } - } - // add V on the both intersecting edges - TopoDS_Vertex addedV = Partition_Inter2d::AddVonE( V,se,oe,myAsDes,dummyF); - if (!addedV.IsSame( V )) - mySameDomainVM.Bind (V, addedV); // equal vertex is already there - - MV.Add( addedV ); // to ease storage of vertices of ON splits - } - } - - // add section edge to the face it intersects and find - // splits ON that do not have same domain pair - - TopB.SplitSectionEdges(); // let TopB find ON splits - - TopTools_MapOfShape SPM; // map of ON splits - TopTools_IndexedMapOfShape ME[2]; - TopExp::MapShapes( F1, TopAbs_EDGE, ME[1]); - TopExp::MapShapes( F2, TopAbs_EDGE, ME[0]); - - TopTools_ListIteratorOfListOfShape itSP, itLSE (LSE); - while ( itLSE.More() ) { - - TopoDS_Edge se = TopoDS::Edge( itLSE.Value() ); - - // move itLSE to the next se - Standard_Integer ancRank = DS.AncestorRank(se); - if (ME[ancRank-1].Contains( se )) - { - LSE.Remove( itLSE ); // se is an edge of face it intersects - continue; - } - else - { - itLSE.Next(); - } - - const TopoDS_Face& F = (ancRank == 1) ? F2 : F1; - - // add se to face but dont add twice - TopTools_ListIteratorOfListOfShape itE( myAsDes->Descendant( F )); - if (myAsDes->HasDescendant( F )) { - for ( ; itE.More(); itE.Next()) - if (se.IsSame( itE.Value() )) - break; - } - if (!itE.More()) - { - myAsDes->Add( F, se ); - - // check se pcurve on F - Standard_Real tol, f,l, umin=1e100, umax=-1e100; - Handle(Geom2d_Curve) pc = BRep_Tool::CurveOnSurface( se, F, f,l); - if (pc.IsNull()) { - itSP.Initialize( TopB.Splits(se,TopAbs_ON) ); - for ( ; itSP.More(); itSP.Next()) { - const TopoDS_Edge& E = TopoDS::Edge ( itSP.Value()); - BRep_Tool::Range(E, f, l); - umin = Min( umin, f); - umax = Max( umax, l); - } - Handle(Geom_Curve) C3d = BRep_Tool::Curve( se, f, l); - if (umin < umax) // sometimes umin == umax for closed edge - C3d = new Geom_TrimmedCurve( C3d, umin, umax); - pc = TopOpeBRepTool_CurveTool::MakePCurveOnFace (F,C3d,tol); - if (pc.IsNull()) { - MESSAGE (" CANT BUILD PCURVE "); - } - B.UpdateEdge( se, pc, F, tol); - } - } - - // to detect splits that do not have same domain pair - // ie which split a face into parts and not pass by its boundary - itSP.Initialize( TopB.Splits(se,TopAbs_ON) ); - for ( ; itSP.More(); itSP.Next()) { - const TopoDS_Shape& SP = itSP.Value(); - if (!SPM.Add( SP )) - SPM.Remove( SP ); - } - } - - // store vertices of ON splits and bind section edges to faces - - for (itLSE.Initialize (LSE); itLSE.More(); itLSE.Next()) - { - const TopoDS_Shape& se = itLSE.Value(); - - Standard_Integer ancRank = DS.AncestorRank(se); - TopoDS_Face F = (ancRank == 1) ? F2 : F1; - - // add vertices of ON splits which have no same domain pair - Standard_Boolean added = Standard_False; - itSP.Initialize( TopB.Splits(se,TopAbs_ON) ); - for ( ; itSP.More(); itSP.Next()) - { - if (!SPM.Contains( itSP.Value() )) - continue; - - const TopoDS_Edge& S = TopoDS::Edge ( itSP.Value()); - - added = Standard_True; - mySectionEdgesAD->Add( F, se ); - - TopoDS_Vertex VS[2]; - TopExp::Vertices (S, VS[0], VS[1]); - for (j=0; j<2; ++j) - { - if (mySameDomainVM.IsBound( VS[j] )) - VS[j] = TopoDS::Vertex( mySameDomainVM( VS[j] )); - if ( !MV.Contains( VS[j] )) { - // find equal vertex on se - point interference - gp_Pnt P1 = BRep_Tool::Pnt( VS[j] ); - TopTools_ListIteratorOfListOfShape itV( myAsDes->Descendant(se) ); - for (; itV.More(); itV.Next()) { - V = TopoDS::Vertex( itV.Value() ); - if ( V.IsSame( VS[j] )) - break; - gp_Pnt P2 = BRep_Tool::Pnt( V ); - if (P1.IsEqual( P2, Precision::Confusion())) { - mySameDomainVM.Bind (VS[j], V); - VS[j] = V; - break; - } - } - if (!itV.More()) // no interferences with edges - myAsDes->Add( se, VS[j]); - } - - // add ends of ON splits to F in order to detect later - // if a split is on face in IsSplitOn() - mySectionEdgesAD->Add( F, VS[j]); - } - // in the descendants of F, first go ends of an ON split and - // then a split itself - mySectionEdgesAD->Add( F, S ); - } - if (!added) - mySectionEdgesAD->Add( F, se ); - - myNewEdges.Add( se ); - } -} - -//======================================================================= -//function : FacesPartition -//purpose : -//======================================================================= - -void Partition_Inter3d::FacesPartition(const TopoDS_Face& F1, - const TopoDS_Face& F2) - //(const TopTools_DataMapOfShapeListOfShape& /*SetOfFaces2*/) -{ - TopTools_ListOfShape LInt; - - Inter3D (F1,F2,LInt); - - StorePart3d (F1,F2,LInt); -} - -//======================================================================= -//function : SetDone -//purpose : -//======================================================================= - -void Partition_Inter3d::SetDone(const TopoDS_Face& F1, - const TopoDS_Face& F2) -{ - if (!myDone.IsBound(F1)) { - TopTools_ListOfShape emptyList; - myDone.Bind(F1,emptyList); - } - myDone(F1).Append(F2); - if (!myDone.IsBound(F2)) { - TopTools_ListOfShape emptyList; - myDone.Bind(F2,emptyList); - } - myDone(F2).Append(F1); -} - -//======================================================================= -//function : IsDone -//purpose : -//======================================================================= - -Standard_Boolean Partition_Inter3d::IsDone(const TopoDS_Face& F1, - const TopoDS_Face& F2) - - const -{ - if (myDone.IsBound(F1)) { - TopTools_ListIteratorOfListOfShape it (myDone(F1)); - for (; it.More(); it.Next()) { - if (it.Value().IsSame(F2)) return Standard_True; - } - } - return Standard_False; -} - -//======================================================================= -//function : StorePart3d -//purpose : -//======================================================================= - -void Partition_Inter3d::StorePart3d(const TopoDS_Face& F1, - const TopoDS_Face& F2, - const TopTools_ListOfShape& LInt) -{ - if (!LInt.IsEmpty()) { - myAsDes->Add( F1,LInt); - myAsDes->Add( F2,LInt); - - TopTools_ListIteratorOfListOfShape it(LInt); - for (; it.More(); it.Next()) { - - TopoDS_Edge E = TopoDS::Edge(it.Value()); - - BRep_Builder B; - B.SameParameter(E,Standard_False); - BRepLib::SameParameter(E,1.0e-7); - - myNewEdges.Add(E); - } - } - SetDone(F1,F2); -} - -//======================================================================= -//function : TouchedFaces -//purpose : -//======================================================================= - -TopTools_MapOfShape& Partition_Inter3d::TouchedFaces() -{ - return myTouched; -} - -//======================================================================= -//function : AsDes -//purpose : -//======================================================================= - -Handle(BRepAlgo_AsDes) Partition_Inter3d::AsDes() const -{ - return myAsDes; -} - -//======================================================================= -//function : NewEdges -//purpose : -//======================================================================= - -TopTools_MapOfShape& Partition_Inter3d::NewEdges() -{ - return myNewEdges; -} - -//======================================================================= -//function : Affiche -//purpose : -//======================================================================= - -void Partition_Inter3d::Affiche(const TopTools_ListOfShape& SetOfFaces) const -{ -#ifdef DEB - char PSection[1024]; - char *section=PSection; - Standard_Integer i = 0; - Standard_Real j=1; - TopTools_ListOfShape aList; - TopTools_ListIteratorOfListOfShape it; - for (it.Initialize(SetOfFaces); it.More(); it.Next()) { - const TopoDS_Shape& OS = it.Value(); - aList=myAsDes->Descendant(OS); - MESSAGE ( " the number of items stored in the list " << j << " : " << aList.Extent() ) - j++; - TopTools_ListIteratorOfListOfShape itaList; - for (itaList.Initialize(aList); itaList.More(); itaList.Next()) { - const TopoDS_Shape& SS = itaList.Value(); - i++; - sprintf(PSection,"section_%d",i); - DBRep::Set(section,SS); - } - } -#endif -} - -//======================================================================= -//function : SameDomain -//purpose : -//======================================================================= - -const TopTools_ListOfShape& Partition_Inter3d::SameDomain(const TopoDS_Face& F) const -{ - if (mySameDomainFM.IsBound( F )) - return mySameDomainFM (F); - - static TopTools_ListOfShape emptyList; - return emptyList; -} - -//======================================================================= -//function : HasSameDomainF -//purpose : Return true if F has same domain faces -//======================================================================= - -Standard_Boolean Partition_Inter3d::HasSameDomainF(const TopoDS_Shape& F) const -{ - return mySameDomainFM.IsBound( F ); -} - -//======================================================================= -//function : IsSameDomain -//purpose : Return true if F1 and F2 are same domain faces -//======================================================================= - -Standard_Boolean Partition_Inter3d::IsSameDomainF(const TopoDS_Shape& F1, - const TopoDS_Shape& F2) const -{ - if (mySameDomainFM.IsBound( F1 )) { - TopTools_ListIteratorOfListOfShape it (mySameDomainFM( F1 )); - for (; it.More(); it.Next()) - if (F2.IsSame( it.Value())) - return Standard_True; - } - return F1.IsSame( F2 ); -} - -//======================================================================= -//function : ReplaceSameDomainV -//purpose : return same domain vertex of V if it was replaced -// and make this vertex to be on E too, else return V -//======================================================================= - -TopoDS_Vertex Partition_Inter3d::ReplaceSameDomainV(const TopoDS_Vertex& V, - const TopoDS_Edge& E) const -{ - TopoDS_Vertex SDV = V; - if (mySameDomainVM.IsBound( V )) { - - TopoDS_Vertex V1,V2; - TopExp::Vertices(E,V1,V2); - Standard_Boolean isClosed = V1.IsSame( V2 ) && V.IsSame(V1); - - SDV = TopoDS::Vertex( mySameDomainVM(V) ); - Standard_Real tol = BRep_Tool::Tolerance( V ); - BRep_Builder B; - SDV.Orientation( V.Orientation()); - - if (isClosed) { - Standard_Real f, l; - BRep_Tool::Range (E, f, l); - Standard_Boolean isFirst = IsEqual( BRep_Tool::Parameter(V,E), f ); - B.UpdateVertex(SDV, (isFirst ? f : l), E, tol); - SDV.Reverse(); - B.UpdateVertex(SDV, (isFirst ? l : f), E, tol); - } - else - B.UpdateVertex (SDV, BRep_Tool::Parameter(V,E), E, tol); - - } - return SDV; -} - -//======================================================================= -//function : SectionEdgesAD -//purpose : -//======================================================================= - -Handle(BRepAlgo_AsDes) Partition_Inter3d::SectionEdgesAD() const -{ - return mySectionEdgesAD; -} - -//======================================================================= -//function : IsSectionEdge -//purpose : return True if E is an edge of a face and it -// intersects an other face -//======================================================================= - -Standard_Boolean - Partition_Inter3d::IsSectionEdge(const TopoDS_Edge& E) const -{ - return mySectionEdgesAD->HasAscendant(E); -} - -//======================================================================= -//function : HasSectionEdge -//purpose : return True if an edge of F intersects an other -// face or F is intersected by edge of an other face -//======================================================================= - -Standard_Boolean - Partition_Inter3d::HasSectionEdge(const TopoDS_Face& F) const -{ - return mySectionEdgesAD->HasDescendant(F); -} - -//======================================================================= -//function : IsSplitOn -//purpose : return True if NewE is split of OldE on F -//======================================================================= - -Standard_Boolean - Partition_Inter3d::IsSplitOn(const TopoDS_Edge& NewE, - const TopoDS_Edge& OldE, - const TopoDS_Face& F) const -{ - if (! mySectionEdgesAD->HasDescendant(F)) - return Standard_False; - - TopTools_ListIteratorOfListOfShape itE ( mySectionEdgesAD->Descendant(F) ); - for ( ; itE.More(); itE.Next()) { - if ( itE.Value().ShapeType() != TopAbs_EDGE || - ! OldE.IsSame ( itE.Value() )) - continue; - // an edge encountered, its vertices and a split come next - itE.Next(); - if (!itE.More()) break; - const TopoDS_Shape& V3 = itE.Value(); - if (V3.ShapeType() != TopAbs_VERTEX) continue; - itE.Next(); - if (!itE.More()) break; - const TopoDS_Shape& V4 = itE.Value(); - if (V4.ShapeType() != TopAbs_VERTEX) continue; - - TopoDS_Vertex V1, V2; - TopExp::Vertices( OldE, V1, V2); - - if ( V1.IsSame(V2) && - (V1.IsSame(V3) || V1.IsSame(V4)) ) { - // closed old edge; use the split for the test - itE.Next(); - if (!itE.More()) break; - const TopoDS_Edge& split = TopoDS::Edge( itE.Value() ); - // check distance at middle point of NewE - Standard_Real f1,l1, f2,l2; - Handle(Geom2d_Curve) PC1 = BRep_Tool::CurveOnSurface( split, F ,f1,l1); - if (!PC1.IsNull()) { - Handle(Geom2d_Curve) PC2 = BRep_Tool::CurveOnSurface(NewE, F ,f2,l2); - gp_Pnt2d P = PC2->Value( 0.5*(f2+l2) ); - Geom2dAPI_ProjectPointOnCurve proj (P, PC1, f1, l1); - if (proj.NbPoints() && - proj.LowerDistance() <= Precision::Confusion()) - return Standard_True; - } - else { - Handle(Geom_Curve) C1 = BRep_Tool::Curve( split ,f1,l1); - Handle(Geom_Curve) C2 = BRep_Tool::Curve( NewE ,f2,l2); - gp_Pnt P = C2->Value( 0.5*(f2+l2) ); - GeomAPI_ProjectPointOnCurve proj (P, C1, f1, l1); - if (proj.NbPoints() && - proj.LowerDistance() <= Precision::Confusion()) - return Standard_True; - } - } - else { - Standard_Real u3 = BRep_Tool::Parameter( TopoDS::Vertex(V3), OldE); - Standard_Real u4 = BRep_Tool::Parameter( TopoDS::Vertex(V4), OldE); - - Standard_Real f,l, u; - BRep_Tool::Range( NewE, f,l); - u = 0.5*(f+l); - f = Min(u3,u4); - l = Max(u3,u4); - - if (u <= l && u >= f) - return Standard_True; - } - } - return Standard_False; -} - -//======================================================================= -//function : SectionEdgeFaces -//purpose : return faces cut by section edge -//======================================================================= - -const TopTools_ListOfShape& - Partition_Inter3d::SectionEdgeFaces(const TopoDS_Edge& SecE) const -{ - return mySectionEdgesAD->Ascendant( SecE ); -} diff --git a/src/PARTITION/Partition_Inter3d.hxx b/src/PARTITION/Partition_Inter3d.hxx deleted file mode 100644 index 57e8da43f..000000000 --- a/src/PARTITION/Partition_Inter3d.hxx +++ /dev/null @@ -1,143 +0,0 @@ -// GEOM PARTITION : partition algorithm -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : Partition_Inter3d.hxx -// Module : GEOM - -#ifndef _Partition_Inter3d_HeaderFile -#define _Partition_Inter3d_HeaderFile - -#ifndef _Handle_BRepAlgo_AsDes_HeaderFile -#include -#endif -#ifndef _TopTools_DataMapOfShapeListOfShape_HeaderFile -#include -#endif -#ifndef _TopTools_MapOfShape_HeaderFile -#include -#endif -#ifndef _TopTools_DataMapOfShapeShape_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class BRepAlgo_AsDes; -class TopTools_ListOfShape; -class TopTools_DataMapOfShapeShape; -class TopoDS_Face; -class TopTools_MapOfShape; -class TopoDS_Shape; -class TopoDS_Vertex; -class TopoDS_Edge; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class Partition_Inter3d { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT Partition_Inter3d(); -Standard_EXPORT Partition_Inter3d(const Handle(BRepAlgo_AsDes)& AsDes); -Standard_EXPORT void CompletPart3d(const TopTools_ListOfShape& SetOfFaces1,const TopTools_DataMapOfShapeShape& FaceShapeMap) ; -Standard_EXPORT void FacesPartition(const TopoDS_Face& F1,const TopoDS_Face& F2) ; -Standard_EXPORT Standard_Boolean IsDone(const TopoDS_Face& F1,const TopoDS_Face& F2) const; -Standard_EXPORT TopTools_MapOfShape& TouchedFaces() ; -Standard_EXPORT Handle_BRepAlgo_AsDes AsDes() const; -Standard_EXPORT TopTools_MapOfShape& NewEdges() ; -Standard_EXPORT Standard_Boolean HasSameDomainF(const TopoDS_Shape& F) const; -Standard_EXPORT Standard_Boolean IsSameDomainF(const TopoDS_Shape& F1,const TopoDS_Shape& F2) const; -Standard_EXPORT const TopTools_ListOfShape& SameDomain(const TopoDS_Face& F) const; -Standard_EXPORT TopoDS_Vertex ReplaceSameDomainV(const TopoDS_Vertex& V,const TopoDS_Edge& E) const; -Standard_EXPORT Handle_BRepAlgo_AsDes SectionEdgesAD() const; -Standard_EXPORT Standard_Boolean IsSectionEdge(const TopoDS_Edge& E) const; -Standard_EXPORT Standard_Boolean HasSectionEdge(const TopoDS_Face& F) const; -Standard_EXPORT Standard_Boolean IsSplitOn(const TopoDS_Edge& NewE,const TopoDS_Edge& OldE,const TopoDS_Face& F) const; -Standard_EXPORT const TopTools_ListOfShape& SectionEdgeFaces(const TopoDS_Edge& SecE) const; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // -Standard_EXPORT void Inter3D(const TopoDS_Face& F1,const TopoDS_Face& F2,TopTools_ListOfShape& LInt) ; -Standard_EXPORT void StorePart3d(const TopoDS_Face& F1,const TopoDS_Face& F2,const TopTools_ListOfShape& LInt1) ; -Standard_EXPORT void SetDone(const TopoDS_Face& F1,const TopoDS_Face& F2) ; -Standard_EXPORT void Affiche(const TopTools_ListOfShape& SetOfFaces) const; - - - // Fields PRIVATE - // -Handle_BRepAlgo_AsDes myAsDes; -TopTools_DataMapOfShapeListOfShape myDone; -TopTools_MapOfShape myTouched; -TopTools_MapOfShape myNewEdges; -Handle_BRepAlgo_AsDes mySectionEdgesAD; -TopTools_DataMapOfShapeListOfShape mySameDomainFM; -TopTools_DataMapOfShapeShape mySameDomainVM; - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/PARTITION/Partition_Inter3d.ixx b/src/PARTITION/Partition_Inter3d.ixx deleted file mode 100644 index 0775cc99c..000000000 --- a/src/PARTITION/Partition_Inter3d.ixx +++ /dev/null @@ -1,31 +0,0 @@ -// GEOM PARTITION : partition algorithm -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : Partition_Inter3d.ixx -// Module : GEOM - -#include "Partition_Inter3d.jxx" - - - - diff --git a/src/PARTITION/Partition_Inter3d.jxx b/src/PARTITION/Partition_Inter3d.jxx deleted file mode 100644 index 5804ba81e..000000000 --- a/src/PARTITION/Partition_Inter3d.jxx +++ /dev/null @@ -1,53 +0,0 @@ -// GEOM PARTITION : partition algorithm -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : Partition_Inter3d.jxx -// Module : GEOM - -#ifndef _BRepAlgo_AsDes_HeaderFile -#include -#endif -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _TopTools_DataMapOfShapeShape_HeaderFile -#include -#endif -#ifndef _TopoDS_Face_HeaderFile -#include -#endif -#ifndef _TopTools_MapOfShape_HeaderFile -#include -#endif -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _TopoDS_Vertex_HeaderFile -#include -#endif -#ifndef _TopoDS_Edge_HeaderFile -#include -#endif -#ifndef _Partition_Inter3d_HeaderFile -#include "Partition_Inter3d.hxx" -#endif diff --git a/src/PARTITION/Partition_Loop.cdl b/src/PARTITION/Partition_Loop.cdl deleted file mode 100644 index eb6ec67a9..000000000 --- a/src/PARTITION/Partition_Loop.cdl +++ /dev/null @@ -1,87 +0,0 @@ --- GEOM PARTITION : partition algorithm --- --- Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, --- CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS --- --- 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. --- --- 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org --- --- --- --- File : Partition_Loop.cdl --- Author : Benedicte MARTIN --- Module : GEOM - -class Loop from Partition - - ---Purpose: Builds the loops from a set of edges on a face. - -uses - - Face from TopoDS, - Edge from TopoDS, - ListOfShape from TopTools, - DataMapOfShapeListOfShape from TopTools - -is - - Create; - - Init (me : in out; F : Face from TopoDS) - ---Purpose: Init with the set of edges must have - -- pcurves on . - is static; - - AddEdge (me : in out; E : in out Edge from TopoDS; - LV : ListOfShape from TopTools) - ---Purpose: Add E with . will be copied and trim - -- by vertices in . - is static; - - AddConstEdge (me : in out; E : Edge from TopoDS) - ---Purpose: Add as const edge, E can be in the result. - is static; - - Perform(me : in out) - ---Purpose: Make loops. - is static; - - NewWires (me) - ---Purpose: Returns the list of wires performed. - -- can be an empty list. - ---C++: return const & - returns ListOfShape from TopTools; - - WiresToFaces (me : in out) - ---Purpose: Build faces from the wires result. - is static; - - NewFaces (me) - ---Purpose: Returns the list of faces. - ---Warning: The method as to be called before. - -- can be an empty list. - ---C++: return const & - returns ListOfShape from TopTools; - - -fields - - myFace : Face from TopoDS; - myConstEdges : ListOfShape from TopTools; - myNewWires : ListOfShape from TopTools; - myNewFaces : ListOfShape from TopTools; - -end Loop; diff --git a/src/PARTITION/Partition_Loop.cxx b/src/PARTITION/Partition_Loop.cxx deleted file mode 100644 index 29386de22..000000000 --- a/src/PARTITION/Partition_Loop.cxx +++ /dev/null @@ -1,467 +0,0 @@ -// GEOM PARTITION : partition algorithm -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : Partition_Loop.cxx -// Author : Benedicte MARTIN -// Module : GEOM -// $Header$ - -using namespace std; -#include - -#include "Partition_Loop.ixx" - -#include "utilities.h" - -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - -static char* name = new char[100]; -static int nbe = 0; - -//======================================================================= -//function : Partition_Loop -//purpose : -//======================================================================= -Partition_Loop::Partition_Loop() -{ -} - -//======================================================================= -//function : Init -//purpose : -//======================================================================= -void Partition_Loop::Init(const TopoDS_Face& F) -{ - myConstEdges.Clear(); - myNewWires .Clear(); - myNewFaces .Clear(); - myFace = F; -} - -//======================================================================= -//function : AddConstEdge -//purpose : -//======================================================================= -void Partition_Loop::AddConstEdge (const TopoDS_Edge& E) -{ - myConstEdges.Append(E); -} - - -//======================================================================= -//function : FindDelta -//purpose : -//======================================================================= -static Standard_Real FindDelta(TopTools_ListOfShape& LE, - const TopoDS_Face& F) -{ - Standard_Real dist, f, l; - Standard_Real d = Precision::Infinite(); - TopTools_ListIteratorOfListOfShape itl; - - for ( itl.Initialize(LE); itl.More(); itl.Next()) { - const TopoDS_Edge& E = TopoDS::Edge(itl.Value()); - Handle(Geom2d_Curve) C = BRep_Tool::CurveOnSurface(E,F,f,l); - gp_Pnt2d p = C->Value(f); - gp_Pnt2d pp = C->Value(l); - Standard_Real d1 = p.Distance(pp); - if (d1 connected by the vertex in the list . -// Is erased of the list. If is too in the list -// with the same orientation, it's erased of the list -//======================================================================= -static Standard_Boolean SelectEdge(const TopoDS_Face& F, - const TopoDS_Edge& CE, - const TopoDS_Vertex& CV, - TopoDS_Edge& NE, - TopTools_ListOfShape& LE) -{ - TopTools_ListIteratorOfListOfShape itl; - NE.Nullify(); - for ( itl.Initialize(LE); itl.More(); itl.Next()) { - if (itl.Value().IsEqual(CE)) { - LE.Remove(itl); - break; - } - } - - if (LE.Extent() > 1) { - //-------------------------------------------------------------- - // Several possible edges. - // - Test the edges differents of CE - //-------------------------------------------------------------- - Standard_Real cf, cl, f, l; - TopoDS_Face FForward = F; - Handle(Geom2d_Curve) Cc, C; - FForward.Orientation(TopAbs_FORWARD); - - Cc = BRep_Tool::CurveOnSurface(CE,FForward,cf,cl); - Standard_Real dist,distmin = 100*BRep_Tool::Tolerance(CV); - Standard_Real uc,u; - if (CE.Orientation () == TopAbs_FORWARD) uc = cl; - else uc = cf; - - gp_Pnt2d P2,PV = Cc->Value(uc); - - Standard_Real delta = FindDelta(LE,FForward); - - for ( itl.Initialize(LE); itl.More(); itl.Next()) { - const TopoDS_Edge& E = TopoDS::Edge(itl.Value()); - if (!E.IsSame(CE)) { - C = BRep_Tool::CurveOnSurface(E,FForward,f,l); - if (E.Orientation () == TopAbs_FORWARD) u = f; - else u = l; - P2 = C->Value(u); - dist = PV.Distance(P2); - if (dist <= distmin){ - distmin = dist; - } - - } - } - - Standard_Real anglemax = - PI; - TopoDS_Edge SelectedEdge; - for ( itl.Initialize(LE); itl.More(); itl.Next()) { - const TopoDS_Edge& E = TopoDS::Edge(itl.Value()); - if (!E.IsSame(CE)) { - C = BRep_Tool::CurveOnSurface(E,FForward,f,l); - if (E.Orientation () == TopAbs_FORWARD) u = f; - else u = l; - P2 = C->Value(u); - dist = PV.Distance(P2); - if (dist <= distmin + (1./3)*delta){ - gp_Pnt2d PC, P; - gp_Vec2d CTg1, CTg2, Tg1, Tg2; - Cc->D2(uc, PC, CTg1, CTg2); - C->D2(u, P, Tg1, Tg2); - - Standard_Real angle; - - if (CE.Orientation () == TopAbs_REVERSED && E.Orientation () == TopAbs_FORWARD) { - angle = CTg1.Angle(Tg1.Reversed()); - } - else if (CE.Orientation () == TopAbs_FORWARD && E.Orientation () == TopAbs_REVERSED) { - angle = (CTg1.Reversed()).Angle(Tg1); - } - else if (CE.Orientation () == TopAbs_REVERSED && E.Orientation () == TopAbs_REVERSED) { - angle = CTg1.Angle(Tg1); - } - else if (CE.Orientation () == TopAbs_FORWARD && E.Orientation () == TopAbs_FORWARD) { - angle = (CTg1.Reversed()).Angle(Tg1.Reversed()); - } - if (angle >= anglemax) { - anglemax = angle ; - SelectedEdge = E; - } - } - } - } - for ( itl.Initialize(LE); itl.More(); itl.Next()) { - const TopoDS_Edge& E = TopoDS::Edge(itl.Value()); - if (E.IsEqual(SelectedEdge)) { - NE = TopoDS::Edge(E); - LE.Remove(itl); - break; - } - } - } - else if (LE.Extent() == 1) { - NE = TopoDS::Edge(LE.First()); - LE.RemoveFirst(); - } - else { - return Standard_False; - } - return Standard_True; -} - -//======================================================================= -//function : SamePnt2d -//purpose : -//======================================================================= -static Standard_Boolean SamePnt2d(TopoDS_Vertex V, - TopoDS_Edge& E1, - TopoDS_Edge& E2, - TopoDS_Face& F) -{ - Standard_Real f1,f2,l1,l2; - gp_Pnt2d P1,P2; - TopoDS_Shape aLocalF = F.Oriented(TopAbs_FORWARD); - TopoDS_Face FF = TopoDS::Face(aLocalF); - Handle(Geom2d_Curve) C1 = BRep_Tool::CurveOnSurface(E1,FF,f1,l1); - Handle(Geom2d_Curve) C2 = BRep_Tool::CurveOnSurface(E2,FF,f2,l2); - if (E1.Orientation () == TopAbs_FORWARD) P1 = C1->Value(f1); - else P1 = C1->Value(l1); - - if (E2.Orientation () == TopAbs_FORWARD) P2 = C2->Value(l2); - else P2 = C2->Value(f2); - Standard_Real Tol = 100*BRep_Tool::Tolerance(V); - Standard_Real Dist = P1.Distance(P2); - return Dist < Tol; -} - -//======================================================================= -//function : PurgeNewEdges -//purpose : -//======================================================================= -static void PurgeNewEdges(TopTools_ListOfShape& ConstEdges, - const TopTools_MapOfOrientedShape& UsedEdges) -{ - TopTools_ListIteratorOfListOfShape it(ConstEdges); - while ( it.More()) { - const TopoDS_Shape& NE = it.Value(); - if (!UsedEdges.Contains(NE)) { - ConstEdges.Remove(it); - } - else { - it.Next(); - } - } -} - -//======================================================================= -//function : StoreInMVE -//purpose : -//======================================================================= -static void StoreInMVE (const TopoDS_Face& F, - TopoDS_Edge& E, - TopTools_DataMapOfShapeListOfShape& MVE ) - -{ - TopoDS_Vertex V1, V2; - TopTools_ListOfShape Empty; - - TopExp::Vertices(E,V1,V2); - if (!MVE.IsBound(V1)) { - MVE.Bind(V1,Empty); - } - MVE(V1).Append(E); - - if (!MVE.IsBound(V2)) { - MVE.Bind(V2,Empty); - } - MVE(V2).Append(E); -} - -//======================================================================= -//function : Perform -//purpose : -//======================================================================= -void Partition_Loop::Perform() -{ - - TopTools_DataMapOfShapeListOfShape MVE; - TopTools_DataMapIteratorOfDataMapOfShapeListOfShape Mapit, Mapit1; - TopTools_ListIteratorOfListOfShape itl; - TopoDS_Vertex V1,V2; - - //----------------------------------- - // Construction map vertex => edges - //----------------------------------- - for (itl.Initialize(myConstEdges); itl.More(); itl.Next()) { - TopoDS_Edge& E = TopoDS::Edge(itl.Value()); - StoreInMVE(myFace,E,MVE); - } - - //---------------------------------------------- - // Construction of all the wires and of all the new faces. - //---------------------------------------------- - TopTools_MapOfOrientedShape UsedEdges; - - while (!MVE.IsEmpty()) { - TopoDS_Vertex VF,CV; - TopoDS_Edge CE,NE,EF; - TopoDS_Wire NW; - BRep_Builder B; - Standard_Boolean End= Standard_False; - - B.MakeWire(NW); - //-------------------------------- - // EF first edge. - //-------------------------------- - Mapit.Initialize(MVE); - EF = CE = TopoDS::Edge(Mapit.Value().First()); - - TopExp::Vertices(CE,V1,V2); - //-------------------------------- - // VF first vertex - //-------------------------------- - if (CE.Orientation() == TopAbs_FORWARD) { - CV = VF = V1; - } - else { - CV = VF = V2; - } - if (!MVE.IsBound(CV)) continue; - for ( itl.Initialize(MVE(CV)); itl.More(); itl.Next()) { - if (itl.Value().IsEqual(CE)) { - MVE(CV).Remove(itl); - break; - } - } - - int i = 0; - while (!End) { - //------------------------------- - // Construction of a wire. - //------------------------------- - TopExp::Vertices(CE,V1,V2); - if (!CV.IsSame(V1)) CV = V1; else CV = V2; - B.Add (NW,CE); - UsedEdges.Add(CE); - - //-------------- - // stop test - //-------------- - if (!MVE.IsBound(CV) || MVE(CV).IsEmpty() || CV.IsSame(VF) ) { - if (CV.IsSame(VF)) { - if (MVE(CV).Extent() == 1 ) MVE.UnBind(CV); - else { - for ( itl.Initialize(MVE(CV)); itl.More(); itl.Next()) { - if (itl.Value().IsEqual(CE)) { - MVE(CV).Remove(itl); - break; - } - } - } - } - End=Standard_True; - } - - //-------------- - // select edge - //-------------- - else { - Standard_Boolean find = SelectEdge(myFace,CE,CV,NE,MVE(CV)); - if (find) { - CE=NE; - if (MVE(CV).IsEmpty()) MVE.UnBind(CV); - if (CE.IsNull() ) { - MESSAGE ( " CE is NULL !!! " ) - End=Standard_True; - } - } - else { - MESSAGE ( " edge doesn't exist " ) - End=Standard_True; - } - } - } - - //----------------------------- - // Test if the wire is closed - //----------------------------- - if (VF.IsSame(CV) && SamePnt2d(VF,EF,CE,myFace)) { - } - else{ - MESSAGE ( "wire not closed" ) - } - myNewWires.Append (NW); - } - - PurgeNewEdges(myConstEdges,UsedEdges); - -} - - -//======================================================================= -//function : NewWires -//purpose : -//======================================================================= -const TopTools_ListOfShape& Partition_Loop::NewWires() const -{ - return myNewWires; -} - -//======================================================================= -//function : NewFaces -//purpose : -//======================================================================= -const TopTools_ListOfShape& Partition_Loop::NewFaces() const -{ - return myNewFaces; -} - -//======================================================================= -//function : WiresToFaces -//purpose : -//======================================================================= -void Partition_Loop::WiresToFaces() -{ - if (!myNewWires.IsEmpty()) { - BRepAlgo_FaceRestrictor FR; - - TopAbs_Orientation OriF = myFace.Orientation(); - TopoDS_Shape aLocalS = myFace.Oriented(TopAbs_FORWARD); - - FR.Init (TopoDS::Face(aLocalS),Standard_False); - TopTools_ListIteratorOfListOfShape it(myNewWires); - for (; it.More(); it.Next()) { - FR.Add(TopoDS::Wire(it.Value())); - } - - FR.Perform(); - - if (FR.IsDone()) { - for (; FR.More(); FR.Next()) { - myNewFaces.Append(FR.Current().Oriented(OriF)); - } - } - } -} diff --git a/src/PARTITION/Partition_Loop.hxx b/src/PARTITION/Partition_Loop.hxx deleted file mode 100644 index 9e9226d9d..000000000 --- a/src/PARTITION/Partition_Loop.hxx +++ /dev/null @@ -1,118 +0,0 @@ -// GEOM PARTITION : partition algorithm -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : Partition_Loop.hxx -// Module : GEOM - -#ifndef _Partition_Loop_HeaderFile -#define _Partition_Loop_HeaderFile - -#ifndef _TopoDS_Face_HeaderFile -#include -#endif -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _TopTools_DataMapOfShapeListOfShape_HeaderFile -#include -#endif -class TopoDS_Face; -class TopoDS_Edge; -class TopTools_ListOfShape; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class Partition_Loop { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } -// inline void operator delete(void *anAddress, size_t size) -// { -// if (anAddress) Standard::Free((Standard_Address&)anAddress,size); -// } - // Methods PUBLIC - // -Standard_EXPORT Partition_Loop(); -Standard_EXPORT void Init(const TopoDS_Face& F) ; -Standard_EXPORT void AddConstEdge(const TopoDS_Edge& E) ; -Standard_EXPORT void Perform() ; -Standard_EXPORT const TopTools_ListOfShape& NewWires() const; -Standard_EXPORT void WiresToFaces() ; -Standard_EXPORT const TopTools_ListOfShape& NewFaces() const; - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -TopoDS_Face myFace; -TopTools_ListOfShape myConstEdges; -TopTools_ListOfShape myNewWires; -TopTools_ListOfShape myNewFaces; - - -}; - - - - - -// other inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/PARTITION/Partition_Loop.ixx b/src/PARTITION/Partition_Loop.ixx deleted file mode 100644 index 1c40e7254..000000000 --- a/src/PARTITION/Partition_Loop.ixx +++ /dev/null @@ -1,31 +0,0 @@ -// GEOM PARTITION : partition algorithm -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : Partition_Loop.ixx -// Module : GEOM - -#include "Partition_Loop.jxx" - - - - diff --git a/src/PARTITION/Partition_Loop.jxx b/src/PARTITION/Partition_Loop.jxx deleted file mode 100644 index dd86f05c3..000000000 --- a/src/PARTITION/Partition_Loop.jxx +++ /dev/null @@ -1,41 +0,0 @@ -// GEOM PARTITION : partition algorithm -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : Partition_Loop.jxx -// Module : GEOM - -#ifndef _TopoDS_Face_HeaderFile -#include -#endif -#ifndef _TopoDS_Edge_HeaderFile -#include -#endif -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _TopTools_DataMapOfShapeShape_HeaderFile -#include -#endif -#ifndef _Partition_Loop_HeaderFile -#include "Partition_Loop.hxx" -#endif diff --git a/src/PARTITION/Partition_Loop2d.cdl b/src/PARTITION/Partition_Loop2d.cdl deleted file mode 100644 index 7a6656e76..000000000 --- a/src/PARTITION/Partition_Loop2d.cdl +++ /dev/null @@ -1,83 +0,0 @@ --- GEOM PARTITION : partition algorithm --- --- Copyright (C) 2003 CEA/DEN, EDF R&D --- --- --- --- File : Partition_Loop2d.cdl --- Author : Benedicte MARTIN --- Module : GEOM - -class Loop2d from Partition - - ---Purpose: Builds the loops from a set of edges on a face. - -- It works in supposition that all constant edges - -- are split edges of an initialization face and all - -- section edges are new on the face - -uses - - Orientation from TopAbs, - Boolean from Standard, - Face from TopoDS, - Image from BRepAlgo, - Face from TopoDS, - Edge from TopoDS, - ListOfShape from TopTools, - DataMapOfShapeListOfShape from TopTools, - MapOfShape from TopTools -is - - Create; - - Init (me : in out; F : Face from TopoDS) - ---Purpose: Init with the set of edges must have - -- pcurves on . - is static; - - AddConstEdge (me : in out; E : Edge from TopoDS) - ---Purpose: Add as unique edge in the result. - is static; - - AddSectionEdge (me : in out; E : Edge from TopoDS) - ---Purpose: Add as double edge in the result. - is static; - - Perform(me : in out) - ---Purpose: Make loops. - is static; - - NewWires (me) - ---Purpose: Returns the list of wires performed. - -- can be an empty list. - ---C++: return const & - returns ListOfShape from TopTools; - - WiresToFaces (me : in out; EdgeImage : Image from BRepAlgo) - ---Purpose: Build faces from the wires result. - -- serves to find original edge by new - -- one. - is static; - - NewFaces (me) - ---Purpose: Returns the list of faces. - ---Warning: The method as to be called before. - -- can be an empty list. - ---C++: return const & - returns ListOfShape from TopTools; - - -fields - - myFace : Face from TopoDS; - myFaceOri : Orientation from TopAbs; - myConstEdges : ListOfShape from TopTools; - myNewWires : ListOfShape from TopTools; - myNewFaces : ListOfShape from TopTools; - - -- internal wires do not contain constant edges - myInternalWL : ListOfShape from TopTools; - - mySectionEdges : MapOfShape from TopTools; - -end Loop2d; diff --git a/src/PARTITION/Partition_Loop2d.cxx b/src/PARTITION/Partition_Loop2d.cxx deleted file mode 100644 index 05e01771a..000000000 --- a/src/PARTITION/Partition_Loop2d.cxx +++ /dev/null @@ -1,1138 +0,0 @@ -// GEOM PARTITION : partition algorithm -// -// Copyright (C) 2003 CEA/DEN, EDF R& D -// -// -// -// File : Partition_Loop2d.cxx -// Author : Benedicte MARTIN -// Module : GEOM -// $Header$ - -using namespace std; -#include "Partition_Loop2d.ixx" - -#include "utilities.h" -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//======================================================================= -//function : Partition_Loop2d -//purpose : -//======================================================================= - -Partition_Loop2d::Partition_Loop2d() -{ -} - -//======================================================================= -//function : Init -//purpose : Init with the set of edges must have -// pcurves on . -//======================================================================= - -void Partition_Loop2d::Init(const TopoDS_Face& F) -{ - myConstEdges.Clear(); - myNewWires .Clear(); - myNewFaces .Clear(); - myFace = F; - myFaceOri = myFace.Orientation(); - myFace.Orientation( TopAbs_FORWARD ); -} - -//======================================================================= -//function : AddConstEdge -//purpose : Add as unique edge in the result. -//======================================================================= - -void Partition_Loop2d::AddConstEdge (const TopoDS_Edge& E) -{ -#ifdef DEB - Standard_Real f,l; - Handle(Geom2d_Curve) pc = BRep_Tool::CurveOnSurface( E, myFace, f,l); - if (pc.IsNull()) { - INFOS( "AddConstEdge(): EDGE W/O PCURVE on FACE"); - } else -#endif - { - myConstEdges.Append(E); - } -} - -void Partition_Loop2d::AddSectionEdge (const TopoDS_Edge& E) -{ -#ifdef DEB - Standard_Real f,l; - Handle(Geom2d_Curve) pc = BRep_Tool::CurveOnSurface( E, myFace, f,l); - if (pc.IsNull()) - pc = BRep_Tool::CurveOnSurface( E, myFace, f,l); - gp_Vec2d Tg1; - gp_Pnt2d PC; - pc->D1(0.5*(f+l), PC, Tg1); - if (Tg1.Magnitude() <= gp::Resolution()) { - MESSAGE (""); - } - if (pc.IsNull()) { - INFOS( "AddConstEdge(): EDGE W/O PCURVE on FACE"); - } else -#endif - { - myConstEdges.Append(E); - myConstEdges.Append(E.Reversed()); - mySectionEdges.Add( E ); - } -} - -//======================================================================= -//function : preciseU -//purpose : find u such that the 3D point on theE is just out of tolerance -// of theV -//======================================================================= - -static Standard_Real preciseU (const BRepAdaptor_Surface& theSurf, - const TopoDS_Edge& theE, - const TopoDS_Vertex& theV, - const Handle(Geom2d_Curve)& theC, - const Standard_Boolean theFirstEnd) -{ - Standard_Boolean isForward = ( theE.Orientation () == TopAbs_FORWARD ); - if (theFirstEnd) isForward = !isForward; - - // find the first point in 2d and 3d - Standard_Real f,l; - BRep_Tool::Range( theE, f, l ); - Standard_Real u0 = isForward ? l : f; - gp_Pnt2d aP2d0 = theC->Value( u0 ); - gp_Pnt aPnt0 = theSurf.Value( aP2d0.X(), aP2d0.Y() ); - - // shift in 2d and 3d - Standard_Real du = ( l - f ) / 100, du3d = 0; - if (isForward) - du = -du; - - // target parameter - Standard_Real u; - - while (du3d < ::RealSmall()) - { - // u for test - u = u0 + du; - du *= 10; // for the next iteration: increase du untill du3d is large enough - - // find out how u is far from u0 in 3D - gp_Pnt2d aP2d = theC->Value( u ); - gp_Pnt aPnt = theSurf.Value( aP2d.X(), aP2d.Y() ); - du3d = aPnt0.Distance( aPnt ); - } - - // find u such that the 3D point is just out of tolerance of theV - Standard_Real tolV = BRep_Tool::Tolerance( theV ) + Precision::Confusion(); - u = u0 + du * tolV / du3d; - - // check that u is within the range - if ( isForward ? (u < f) : (u > l) ) - u = u0 + du; - - return u; -} - -//======================================================================= -//function : SelectEdge -//purpose : Find in the list the edge connected with by -// the vertex . -// is removed from the list. If is in -// with the same orientation, it's removed from the list -//======================================================================= - -static Standard_Boolean SelectEdge(const BRepAdaptor_Surface& Surf, - const TopoDS_Edge& CE, - const TopoDS_Vertex& CV, - TopoDS_Edge& NE, - const TopTools_ListOfShape& LE) -{ - NE.Nullify(); - - if (LE.Extent() > 1) { - //-------------------------------------------------------------- - // Several possible edges. - // - Test the edges differents of CE - //-------------------------------------------------------------- - TopoDS_Face FForward = Surf.Face(); - TopoDS_Edge aPrevNE; - - gp_Vec2d CTg1, Tg1, CTg2, Tg2; - gp_Pnt2d PC, P; - - Standard_Real f, l; - Handle(Geom2d_Curve) Cc, C; - Cc = BRep_Tool::CurveOnSurface(CE,FForward,f,l); - - Standard_Boolean isForward = ( CE.Orientation () == TopAbs_FORWARD ); - Standard_Real uc, u, du = Precision::PConfusion(); - uc = isForward ? ( l - du ) : ( f + du ); - Cc->D1(uc, PC, CTg1); - if (!isForward) CTg1.Reverse(); - - Standard_Real anglemin = 3 * PI, tolAng = 1.e-8; - - // select an edge whose first derivative is most left of CTg1 - // ie an angle between Tg1 and CTg1 is least - TopTools_ListIteratorOfListOfShape itl; - for ( itl.Initialize(LE); itl.More(); itl.Next()) { - const TopoDS_Edge& E = TopoDS::Edge(itl.Value()); - if (E.IsSame(CE)) - continue; - if (! CV.IsSame( TopExp::FirstVertex( E, Standard_True ))) - continue; - - isForward = ( E.Orientation () == TopAbs_FORWARD ); - - // get E curve - C = BRep_Tool::CurveOnSurface(E,FForward,f,l); - // get the first derivative Tg1 - u = isForward ? ( f + du ) : ( l - du ); - C->D1(u, P, Tg1); - if (!isForward) Tg1.Reverse(); - - // -PI < angle < PI - Standard_Real angle = Tg1.Angle(CTg1); - - if (PI - Abs(angle) <= tolAng) - { - // an angle is too close to PI; assure that an angle sign really - // reflects an edge position: +PI - an edge is worst, - // -PI - an edge is best. - u = preciseU( Surf, CE, CV, Cc, Standard_False); - gp_Vec2d CTg; - Cc->D1(u, PC, CTg); - if (CE.Orientation() == TopAbs_REVERSED) CTg.Reverse(); - - u = preciseU( Surf, E, CV, C, Standard_True); - C->D1(u, P, Tg1); - if (!isForward) Tg1.Reverse(); - - angle = Tg1.Angle(CTg); - } - - Standard_Boolean isClose = ( Abs( angle - anglemin ) <= tolAng ); - if (angle <= anglemin) { - if (isClose) - aPrevNE = NE; - else - aPrevNE.Nullify(); - anglemin = angle ; - NE = E; - } - else - if (isClose) - aPrevNE = E; - - } - if (!aPrevNE.IsNull()) { - // select one of close edges, the most left one. - Cc = BRep_Tool::CurveOnSurface( NE, FForward, f, l ); - uc = preciseU( Surf, NE, CV, Cc, Standard_True); - Cc->D1(uc, PC, CTg1); - if (NE.Orientation() != TopAbs_FORWARD) CTg1.Reverse(); - - u = preciseU( Surf, aPrevNE, CV, C, Standard_True); - C->D1(u, P, Tg1); - if (aPrevNE.Orientation() != TopAbs_FORWARD) Tg1.Reverse(); - - if ( Tg1.Angle(CTg1) < 0) - NE = aPrevNE; - } - } - else if (LE.Extent() == 1) { - NE = TopoDS::Edge(LE.First()); - } - else { - return Standard_False; - } - return !NE.IsNull(); -} - -//======================================================================= -//function : SamePnt2d -//purpose : -//======================================================================= - -static Standard_Boolean SamePnt2d(const TopoDS_Vertex& V1, - const TopoDS_Edge& E1, - const TopoDS_Vertex& V2, - const TopoDS_Edge& E2, - const TopoDS_Face& F) -{ - Standard_Real f1,f2,l1,l2; - Handle(Geom2d_Curve) C1 = BRep_Tool::CurveOnSurface(E1,F,f1,l1); - Handle(Geom2d_Curve) C2 = BRep_Tool::CurveOnSurface(E2,F,f2,l2); - - gp_Pnt2d P1 = C1->Value( BRep_Tool::Parameter(V1,E1)); - gp_Pnt2d P2 = C2->Value( BRep_Tool::Parameter(V2,E2)); - - Standard_Real Tol = 100 * BRep_Tool::Tolerance(V1); - Standard_Real Dist = P1.Distance(P2); - return Dist < Tol; -} - - -//======================================================================= -//function : StoreInMVE -//purpose : -//======================================================================= - -static void StoreInMVE (const TopoDS_Face& /*F*/, - TopoDS_Edge& E, - TopTools_DataMapOfShapeListOfShape& MVE ) - -{ - TopoDS_Vertex V1, V2; - TopTools_ListOfShape Empty; - - TopExp::Vertices(E,V1,V2); - if (!MVE.IsBound(V1)) { - MVE.Bind(V1,Empty); - } - MVE(V1).Append(E); - - if (!MVE.IsBound(V2)) { - MVE.Bind(V2,Empty); - } - MVE(V2).Append(E); -} - -//======================================================================= -//function : RemoveFromMVE -//purpose : -//======================================================================= - -static void RemoveFromMVE(const TopoDS_Edge& E, - TopTools_DataMapOfShapeListOfShape& MVE) -{ - TopTools_ListIteratorOfListOfShape itl; - TopoDS_Vertex V1,V2; - TopExp::Vertices (E,V1,V2); - if (MVE.IsBound(V1)) - for ( itl.Initialize(MVE(V1)); itl.More(); itl.Next()) { - if (itl.Value().IsEqual(E)) { - MVE(V1).Remove(itl); - break; - } - } - if (MVE.IsBound(V2)) - for ( itl.Initialize(MVE(V2)); itl.More(); itl.Next()) { - if (itl.Value().IsEqual(E)) { - MVE(V2).Remove(itl); - break; - } - } -} -//======================================================================= -//function : addConnected -//purpose : add to all edges reachable from -//======================================================================= - -static void addConnected(const TopoDS_Shape& E, - TopTools_MapOfShape& EM, - TopTools_MapOfShape& VM, - const TopTools_DataMapOfShapeListOfShape& MVE) -{ - // Loop on vertices of E - TopoDS_Iterator itV ( E ); - for ( ; itV.More(); itV.Next()) { - - if ( ! VM.Add ( itV.Value() )) continue; - - // Loop on edges sharing V - TopTools_ListIteratorOfListOfShape itE( MVE( itV.Value() ) ); - for (; itE.More(); itE.Next()) { - if ( EM.Add( itE.Value() )) - addConnected ( itE.Value(), EM, VM, MVE ); - } - } -} -//======================================================================= -//function : canPassToOld -//purpose : -//======================================================================= - -// static Standard_Boolean canPassToOld (const TopoDS_Shape& V, -// TopTools_MapOfShape& UsedShapesMap, -// const TopTools_DataMapOfShapeListOfShape& MVE, -// const TopTools_MapOfShape& SectionEdgesMap) -// { -// TopTools_ListIteratorOfListOfShape itE( MVE(V) ); -// // Loop on edges sharing V -// for (; itE.More(); itE.Next()) { -// if ( !UsedShapesMap.Add( itE.Value() )) -// continue; // already checked - -// if ( !SectionEdgesMap.Contains( itE.Value() )) -// return Standard_True; // WE PASSED - -// TopoDS_Iterator itV( itE.Value() ); -// // Loop on vertices of an edge -// for (; itV.More(); itV.Next()) { -// if ( !UsedShapesMap.Add( itV.Value() )) -// continue; // already checked -// else -// return canPassToOld( itV.Value(), UsedShapesMap, MVE, SectionEdgesMap); -// } -// } -// return Standard_False; -// } - -//======================================================================= -//function : MakeDegenAndSelect -//purpose : Find parameter of intersection of with and -// select an edge with its parameter closest to found one. -// Return new degenerated edge trimming by found parameters -//======================================================================= - -static TopoDS_Edge MakeDegenAndSelect(const TopoDS_Edge& CE, - const TopoDS_Vertex& CV, - TopoDS_Edge& NE, - TopTools_SequenceOfShape& EdgesSeq, - TColStd_SequenceOfReal& USeq, - const TopoDS_Edge& DE) -{ - if (EdgesSeq.Length() < 3) { - if (CE == EdgesSeq.First()) - NE = TopoDS::Edge( EdgesSeq.Last() ); - else - NE = TopoDS::Edge( EdgesSeq.First() ); - return DE; - } - - // find parameter on DE where it intersects CE - - Standard_Real U1; - Standard_Integer i, nb = EdgesSeq.Length(); - for (i=1; i<= nb; ++i) { - if (CE == EdgesSeq(i)) { - U1 = USeq(i); - break; - } - } - - // select NE with param closest to U1 thus finding U2 for a new degen edge - - Standard_Real U2, dU, dUmin = 1.e100; - Standard_Boolean isReversed = ( DE.Orientation() == TopAbs_REVERSED ); - for (i=1; i<= nb; ++i) { - dU = USeq(i) - U1; - if (isReversed ? (dU > 0) : (dU < 0)) - continue; - dU = Abs( dU ); - if ( dU > dUmin || IsEqual( dU, 0.)) - continue; - const TopoDS_Edge& E = TopoDS::Edge ( EdgesSeq(i) ); - if ( ! CV.IsSame( TopExp::FirstVertex( E , Standard_True ))) - continue; - NE = E; - dUmin = dU + Epsilon(dU); - U2 = USeq(i); - } - - // make a new degenerated edge - TopoDS_Edge NewDegen = TopoDS::Edge ( DE.EmptyCopied() ); - - Standard_Real Tol = BRep_Tool::Tolerance( CV ); - TopoDS_Vertex V = CV; - - BRep_Builder B; - V.Orientation( NewDegen.Orientation() ); - B.UpdateVertex( V, U1, NewDegen, Tol); - B.Add ( NewDegen , V ); - - V.Reverse(); - B.UpdateVertex( V, U2, NewDegen, Tol); - B.Add ( NewDegen , V ); - - return NewDegen; -} - -//======================================================================= -//function : prepareDegen -//purpose : Intersect with edges bound to its vertex in -// and store intersection parameter on in -// as well as the edges them-self in . -// Bind to vertex of in -//======================================================================= - -static void prepareDegen (const TopoDS_Edge& DegEdge, - const TopoDS_Face& F, - const TopTools_DataMapOfShapeListOfShape& MVE, - TopTools_SequenceOfShape& EdgesSeq, - TColStd_SequenceOfReal& USeq, - TopTools_DataMapOfShapeInteger& MVDEI, - const Standard_Integer DegEdgeIndex) -{ - const TopoDS_Vertex& V = TopExp::FirstVertex ( DegEdge ); - MVDEI.Bind ( V, DegEdgeIndex ); - - const TopTools_ListOfShape& EdgesList = MVE ( V ); - // if only 2 edges come to degenerated one, no pb in selection and - // no need to intersect them, just simulate asked data - Standard_Boolean doIntersect = ( EdgesList.Extent() > 2 ); - - BRepAdaptor_Curve2d DC, C; - Geom2dInt_GInter InterCC; - Standard_Real Tol = Precision::PConfusion(); - if ( doIntersect ) - DC.Initialize( DegEdge, F ); - - // avoid intersecting twice the same edge - BRepOffset_DataMapOfShapeReal EUMap ( EdgesList.Extent() ); - - Standard_Real U, f, l; - BRep_Tool::Range (DegEdge, f, l); - - TopTools_ListIteratorOfListOfShape itE (EdgesList); - for (; itE.More(); itE.Next()) { - - const TopoDS_Edge& E = TopoDS::Edge ( itE.Value() ); - - if ( !doIntersect) { - U = 0.; // it won't be used - } - else if ( BRep_Tool::IsClosed( E, F )) { - // seam edge: select U among f and l - Standard_Boolean first = Standard_True; - if ( V.IsSame ( TopExp::FirstVertex( E, Standard_True ) )) - first = Standard_False; - if ( DegEdge.Orientation() == TopAbs_REVERSED ) - first = !first; - U = first ? f : l; - } - else if ( EUMap.IsBound( E ) ) { - // same edge already bound - U = EUMap( E ); - } - else { - // intersect 2d curves - C.Initialize( E, F ); - InterCC.Perform ( DC, C , Tol, Tol ); - if (! InterCC.IsDone() || InterCC.NbPoints() == 0) { - MESSAGE ( "NO 2d INTERSECTION ON DEGENERATED EDGE" ); - continue; - } - // hope there is only one point of intersection - U = InterCC.Point( 1 ).ParamOnFirst(); - } - USeq.Append ( U ); - EdgesSeq.Append ( E ); - } -} -//======================================================================= -//function : Perform -//purpose : Make loops. -//======================================================================= - -void Partition_Loop2d::Perform() -{ - - Standard_Integer NbConstEdges = myConstEdges.Extent(); - TopTools_DataMapOfShapeListOfShape MVE(NbConstEdges) , MVE2(NbConstEdges); - TopTools_DataMapIteratorOfDataMapOfShapeListOfShape Mapit; - TopTools_ListIteratorOfListOfShape itl; - TopoDS_Vertex V1,V2; - BRepAdaptor_Surface Surface ( myFace, Standard_False ); - - // degenerated edges and parameters of their 2d intersection with other edges - TopoDS_Edge DE [2]; - TopTools_SequenceOfShape SEID [2]; // seq of edges intersecting degenerated - TColStd_SequenceOfReal SeqU [2]; // n-th U corresponds to n-th edge in SEID - TopTools_DataMapOfShapeInteger MVDEI(2); // map vertex - degenerated edge index - Standard_Integer iDeg = 0; // index of degenerated edge [0,1] - - //--------------------------------------------------------- - // Construction map vertex => edges, find degenerated edges - //--------------------------------------------------------- - for (itl.Initialize(myConstEdges); itl.More(); itl.Next()) { - TopoDS_Edge& E = TopoDS::Edge(itl.Value()); - if ( BRep_Tool::Degenerated( E )) { - if (DE[0].IsNull()) DE[0] = E; - else DE[1] = E; - } - else - StoreInMVE(myFace,E,MVE); - } - - // fill data for degenerated edges - if ( ! DE[0].IsNull() ) - prepareDegen ( DE[0], myFace, MVE, SEID[0], SeqU[0], MVDEI, 0); - if ( ! DE[1].IsNull() ) - prepareDegen ( DE[1], myFace, MVE, SEID[1], SeqU[1], MVDEI, 1); - - - // to detect internal wires - Standard_Boolean isInternCW = 0; - MVE2 = MVE; - - - //------------------------------ - // Construction of all the wires - //------------------------------ - // first, we collect wire edges in WEL list looking for same edges that - // will be then removed possibly exploding a wire into parts; - // second, build wire(s) - - while (!MVE.IsEmpty()) { - - TopoDS_Vertex VF,CV; - TopoDS_Edge CE,NE,EF; - TopoDS_Wire NW; - BRep_Builder B; - Standard_Boolean End = Standard_False; - TopTools_ListOfShape WEL; - - Mapit.Initialize(MVE); - if (Mapit.Value().IsEmpty()) { - MVE.UnBind(Mapit.Key()); - continue; - } - - // EF first edge. - EF = CE = TopoDS::Edge(Mapit.Value().First()); - // VF first vertex - VF = TopExp::FirstVertex( CE, Standard_True); - - isInternCW = Standard_True; - - TopTools_MapOfShape addedEM (NbConstEdges); // map of edges added to WEL - TopTools_MapOfShape doubleEM (NbConstEdges); // edges encountered twice in WEL - - //------------------------------- - // Construction of a wire. - //------------------------------- - while (!End) { - - // only a seam is allowed twice in a wire, the others should be removed - if (addedEM.Add ( CE ) || BRep_Tool::IsClosed( CE, myFace ) ) - WEL.Append( CE ); - else { - doubleEM.Add( CE ); - RemoveFromMVE (CE,MVE2); - TopoDS_Edge CERev = CE; - CERev.Reverse(); - RemoveFromMVE (CERev,MVE2); - } - - RemoveFromMVE (CE,MVE); - - CV = TopExp::LastVertex( CE, Standard_True); - - if (isInternCW && !mySectionEdges.Contains(CE)) - // wire is internal if all edges are section ones - isInternCW = Standard_False; - - if (MVDEI.IsBound( CV )) { // CE comes to the degeneration - iDeg = MVDEI( CV ); - TopoDS_Edge NewDegen; - NewDegen = MakeDegenAndSelect( CE, CV, NE, SEID[iDeg], SeqU[iDeg], DE[iDeg]); - WEL.Append( NewDegen ); - CE = NE; - End = CV.IsSame( VF ); - continue; - } - - //-------------- - // stop test - //-------------- - if (MVE(CV).IsEmpty()) { - End=Standard_True; - MVE.UnBind(CV); - } - else if (CV.IsSame(VF) && SamePnt2d(CV,CE, VF,EF, myFace) ) { - End = Standard_True; - } - else { - //---------------------------- - // select new current edge - //---------------------------- - if (! SelectEdge (Surface,CE,CV,NE,MVE(CV))) { - MESSAGE ( " NOT CLOSED WIRE " ); - End=Standard_True; - } - else - CE = NE; - } - } // while ( !End ) - - - // WEL is built, built wire(s) - - - itl.Initialize( WEL ); - if ( doubleEM.IsEmpty()) { // no double edges - B.MakeWire( NW ); - for (; itl.More(); itl.Next()) - B.Add ( NW, itl.Value()); - if (isInternCW) myInternalWL.Append(NW); - else myNewWires.Append (NW); - } - - else { - // remove double and degenerated edges from WEL - while (itl.More()) { - const TopoDS_Edge& E = TopoDS::Edge ( itl.Value() ); - if ( doubleEM.Contains( E ) || BRep_Tool::Degenerated( E )) - WEL.Remove( itl ); - else - itl.Next(); - } - if ( WEL.IsEmpty()) - continue; - // remove double edges from SEID and SeqU - Standard_Integer i,j; - for (j=0; j<2; ++j) { - for (i=1; i<=SEID[j].Length(); ++i) { - if (doubleEM.Contains( SEID[j].Value(i))) { - SEID[j].Remove( i ); - SeqU[j].Remove( i-- ); - } - } - } - // removal of doulbe edges can explode a wire into parts, - // make new wires of them. - // A Loop like previous one but without 2d check - while ( !WEL.IsEmpty() ) { - CE = TopoDS::Edge( WEL.First() ); - WEL.RemoveFirst(); - B.MakeWire( NW ); - VF = TopExp::FirstVertex ( CE, Standard_True); - - End = Standard_False; - while ( !End) { - B.Add( NW, CE ); - CV = TopExp::LastVertex ( CE, Standard_True); - - if (MVDEI.IsBound( CV )) { // CE comes to the degeneration - iDeg = MVDEI( CV ); - TopoDS_Edge NewDegen; - NewDegen = MakeDegenAndSelect( CE, CV, NE, SEID[iDeg], SeqU[iDeg], DE[iDeg]); - B.Add( NW, NewDegen ); - End = CV.IsSame( VF ); - CE = NE; - if (!NE.IsNull()) { // remove NE from WEL - for (itl.Initialize( WEL ); itl.More(); itl.Next()) - if ( NE == itl.Value()) { - WEL.Remove( itl ); - break; - } - } - } // end degeneration - - else { - if (CV.IsSame( VF )) { - End = Standard_True; - continue; - } - // edges in WEL most often are well ordered - // so try to iterate until the End - Standard_Boolean add = Standard_False; - itl.Initialize(WEL); - while ( itl.More() && !End) { - NE = TopoDS::Edge( itl.Value() ); - if ( CV.IsSame( TopExp::FirstVertex( NE, Standard_True ))) { - WEL.Remove( itl ); - if (add) - B.Add( NW, CE ); - CE = NE; - add = Standard_True; - CV = TopExp::LastVertex( CE, Standard_True); - if (MVDEI.IsBound( CV ) || CV.IsSame( VF )) - break; - } - else - itl.Next(); - } - if (!add) - End = Standard_True; - } - } // !End - - myInternalWL.Append( NW ); - } - } // end building new wire(s) from WEL - - } // end Loop on MVE - - // all wires are built - - - // ============================================================ - // select really internal wires i.e. those from which we can`t - // pass to an old (not section) edge - // ============================================================ - - Standard_Integer nbIW = myInternalWL.Extent(); - if (nbIW == 0) - return; - - if ( myNewWires.Extent() != 1 && nbIW > 1) { - TopTools_MapOfShape outerEM (NbConstEdges); // edges connected to non-section ones - TopTools_MapOfShape visitedVM (NbConstEdges); - for ( itl.Initialize( myConstEdges ); itl.More(); itl.Next()) { - if ( ! mySectionEdges.Contains( itl.Value() )) - addConnected (itl.Value(), outerEM, visitedVM, MVE2); - } - // if an edge of a wire is in , the wire is not internal - TopExp_Explorer expIWE; - TopTools_ListIteratorOfListOfShape itIW ( myInternalWL ); - while (itIW.More()) { - expIWE.Init ( itIW.Value() , TopAbs_EDGE ); - if ( outerEM.Contains( expIWE.Current() )) { - myNewWires.Append ( itIW.Value() ); - myInternalWL.Remove( itIW ); // == itIW.Next() - } - else - itIW.Next(); - } - } -} -//======================================================================= -//function : isHole -//purpose : -//======================================================================= - -static Standard_Boolean isHole (const TopoDS_Wire& W, - const TopoDS_Face& F) -{ - BRep_Builder B; - TopoDS_Shape newFace = F.EmptyCopied(); - B.Add(newFace,W.Oriented(TopAbs_FORWARD)); - BRepTopAdaptor_FClass2d classif (TopoDS::Face(newFace), - Precision::PConfusion()); - return (classif.PerformInfinitePoint() == TopAbs_IN); -} - -//======================================================================= -//function : IsInside -//purpose : check if W1 is inside W2. Suppose W2 is not a hole !!!! -//======================================================================= - -static Standard_Boolean isInside(const TopoDS_Face& F, - const TopoDS_Wire& W1, - const TopoDS_Wire& W2) -{ - // make a face with wire W2 - BRep_Builder B; - TopoDS_Shape aLocalShape = F.EmptyCopied(); - TopoDS_Face newFace = TopoDS::Face(aLocalShape); - B.Add(newFace,W2); - - // get any 2d point of W1 - TopExp_Explorer exp(W1,TopAbs_EDGE); - if (BRep_Tool::Degenerated( TopoDS::Edge( exp.Current() ))) - exp.Next(); - const TopoDS_Edge& e = TopoDS::Edge(exp.Current()); - Standard_Real f,l; - Handle(Geom2d_Curve) C2d = BRep_Tool::CurveOnSurface(e,F,f,l); - gp_Pnt2d pt2d(C2d->Value( 0.5 * ( f + l ))); - - BRepTopAdaptor_FClass2d classif(newFace,Precision::PConfusion()); - return (classif.Perform(pt2d) == TopAbs_IN); -} - -//======================================================================= -//function : NewWires -//purpose : Returns the list of wires performed. -// can be an empty list. -//======================================================================= - -const TopTools_ListOfShape& Partition_Loop2d::NewWires() const -{ - return myNewWires; -} - -//======================================================================= -//function : NewFaces -//purpose : Returns the list of faces. -//Warning : The method as to be called before. -// can be an empty list. -//======================================================================= - -const TopTools_ListOfShape& Partition_Loop2d::NewFaces() const -{ - return myNewFaces; -} - -//======================================================================= -//function : findEqual -//purpose : move wires form to pairs of wires build of the same edges -//======================================================================= - -static void findEqual (TopTools_ListOfShape& WL, - TopTools_DataMapOfShapeShape& EqWM, - const TopoDS_Face& F) -{ - TopTools_ListIteratorOfListOfShape it1, it2; - Standard_Integer i,j; - TColStd_MapOfInteger IndMap; - for (it1.Initialize(WL), i=1; it1.More(); it1.Next(), i++) { - - if (IndMap.Contains(i)) continue; - const TopoDS_Wire& Wire1 = TopoDS::Wire( it1.Value()); - - for (it2.Initialize(WL), j=1; it2.More(); it2.Next(), j++) { - - if (j <= i || IndMap.Contains(j)) continue; - - TopTools_IndexedMapOfShape EdgesMap; - TopExp::MapShapes (Wire1, TopAbs_EDGE, EdgesMap); - - const TopoDS_Shape& Wire2 = it2.Value(); - TopoDS_Iterator itE ( Wire2); - for (; itE.More(); itE.Next()) { - if ( !EdgesMap.Contains( itE.Value()) ) - break; - } - if (!itE.More()) { // all edges are same - if (isHole( Wire1, F)) { - EqWM.Bind ( Wire1, Wire2 ); - } - else { - EqWM.Bind ( Wire2, Wire1 ); - } - IndMap.Add(i); - IndMap.Add(j); - break; - } - } - } - // clear WL - it1.Initialize(WL); - i=1; - while (it1.More()) { - if (IndMap.Contains(i)) - WL.Remove(it1); // next node becomes current and with Next() we would miss it - else - it1.Next(); - i++; - } -} - -//======================================================================= -//function : classify -//purpose : bind to a wire a list of internal wires -//======================================================================= - -static void classify(const TopTools_DataMapOfShapeShape& EqWM, - BRepAlgo_AsDes& OuterInner, - const TopoDS_Face& F) -{ - TopTools_DataMapIteratorOfDataMapOfShapeShape it1, it2; - - for (it1.Initialize(EqWM); it1.More(); it1.Next()) { - // find next after it1.Value() - for (it2.Initialize(EqWM); it2.More(); it2.Next()) - if (it1.Value().IsSame( it2.Value() )) - { - it2.Next(); - break; - } - for ( ; it2.More(); it2.Next()) { - const TopoDS_Wire& Wire1 = TopoDS::Wire( it1.Value() ); - const TopoDS_Wire& Wire2 = TopoDS::Wire( it2.Value() ); - if (isInside(F, Wire1, Wire2)) - OuterInner.Add (Wire2, Wire1); - else if (isInside(F, Wire2, Wire1)) - OuterInner.Add (Wire1, Wire2); - } - } -} -//======================================================================= -//function : WiresToFaces -//purpose : Build faces from the wires result. -// serves to find original edge by new -// one.

    contains edges resulting from face -// intersections -//======================================================================= - -void Partition_Loop2d::WiresToFaces(const BRepAlgo_Image& ) -{ - Standard_Integer nbW = myNewWires.Extent() + myInternalWL.Extent(); - if (nbW==0) - return; - - BRepAlgo_FaceRestrictor FR; - FR.Init (myFace,Standard_False); - - // FaceRestrictor is instable in rather simple cases - // (ex. a single face of bellecoque.brep splited by 10 planes: - // sometimes 1-2 faces are missing ). - // So we use it as less as possible: no holes -> make faces by hands - - - // are there holes in myFace ? - Standard_Boolean hasOldHoles = Standard_False; - TopoDS_Iterator itOldW (myFace); - if ( itOldW.More()) { - const TopoDS_Wire& FirstOldWire = TopoDS::Wire( itOldW.Value() ); - itOldW.Next(); - hasOldHoles = itOldW.More() || isHole( FirstOldWire, myFace); - } - if (myInternalWL.IsEmpty() && !hasOldHoles) { - // each wire bounds one face - BRep_Builder B; - TopTools_ListIteratorOfListOfShape itNW (myNewWires); - for (; itNW.More(); itNW.Next()) { - TopoDS_Face NF = TopoDS::Face ( myFace.EmptyCopied() ); - B.Add ( NF, itNW.Value() ); - NF.Orientation( myFaceOri); - myNewFaces.Append ( NF ); - } - return; - } - - // FaceRestrictor can't classify wires build on all the same edges - // and gives incorrect result in such cases (ex. a plane cut into 2 parts by cylinder) - // We must make faces of equal wires separately. One of equal wires makes a - // hole in a face and should come together with outer wires of face. - // The other of a wires pair bounds a face that may have holes in turn. - - // Find equal wires among internal wires - TopTools_DataMapOfShapeShape EqWM; // key is a hole part of a pair of equal wires - findEqual (myInternalWL, EqWM, myFace); - - if (!EqWM.IsEmpty()) { // there are equal wires - - if (hasOldHoles) - myInternalWL.Append( myNewWires ); // an old wire can be inside an equal wire - - // classify equal wire pairs - BRepAlgo_AsDes OuterInner; - classify (EqWM,OuterInner,myFace); - - // make face of most internal of equal wires and its inner wires - while ( !EqWM.IsEmpty()) { - - TopTools_ListOfShape prevHolesL; // list of hole-part of previous most internal equal wires - - // find most internal wires among pairs (key - hole, value - outer part) - TopTools_DataMapIteratorOfDataMapOfShapeShape it(EqWM); - Standard_Integer nbEqW = EqWM.Extent(); // protection against infinite loop - for ( ; it.More(); it.Next()) { - - TopoDS_Wire outerW = TopoDS::Wire ( it.Value() ); - if ( OuterInner.HasDescendant( outerW ) && // has internal - ! OuterInner.Descendant( outerW ).IsEmpty() ) - continue; - - FR.Add( outerW ); - - // add internal wires that are inside of outerW - TopTools_ListIteratorOfListOfShape itIW (myInternalWL); - while ( itIW.More()) { - TopoDS_Wire IW = TopoDS::Wire ( itIW.Value() ); - if ( isInside (myFace, IW, outerW)) { - FR.Add (IW); - myInternalWL.Remove( itIW ); // == itIW.Next() !!! - } - else - itIW.Next(); - } - - // the hole-part of current pair of equal wires will be in the next new face - prevHolesL.Append ( it.Key() ); - - } // Loop on map of equal pairs searching for innermost wires - - // make faces - FR.Perform(); - if (FR.IsDone()) { - for (; FR.More(); FR.Next()) - myNewFaces.Append(FR.Current()); - } - - FR.Clear(); - - // add hole-parts to FaceRestrictor, - // remove them from the EqWM, - // remove found wires as internal of resting classified wires - Standard_Boolean clearOuterInner = ( prevHolesL.Extent() < EqWM.Extent() ); - TopTools_ListIteratorOfListOfShape itPrev (prevHolesL); - for (; itPrev.More(); itPrev.Next()) { - TopoDS_Wire& Hole = TopoDS::Wire ( itPrev.Value() ); - FR.Add ( Hole ); - if (clearOuterInner) { - const TopoDS_Wire& outerW = TopoDS::Wire ( EqWM.Find( Hole ) ); - // Loop on wires including outerW - TopTools_ListIteratorOfListOfShape itO( OuterInner.Ascendant( outerW )); - for (; itO.More(); itO.Next()) { - TopTools_ListOfShape& innerL = OuterInner.ChangeDescendant( itO.Value() ); - TopTools_ListIteratorOfListOfShape itI (innerL); - // Loop on internal wires of current including wire - for (; itI.More(); itI.Next()) - if ( outerW.IsSame( itI.Value() )) { - innerL.Remove( itI ); break; - } - } - } - EqWM.UnBind ( Hole ); - } - - if (nbEqW == EqWM.Extent()) - { - // error: pb with wires classification -#ifdef DEB - MESSAGE("Partition_Loop2d::WiresToFaces(), pb with wires classification"); -#endif - break; - } - - } // while (!EqWM.IsEmpty) - - } // if !EqWM.IsEmpty() - - myNewWires.Append ( myInternalWL ); - - TopTools_ListIteratorOfListOfShape itW (myNewWires); - for (; itW.More(); itW.Next()) { - TopoDS_Wire& W = TopoDS::Wire ( itW.Value() ); - FR.Add(W); - } - FR.Perform(); - for (; FR.IsDone() && FR.More(); FR.Next()) - myNewFaces.Append(FR.Current()); - - - TopTools_ListIteratorOfListOfShape itNF (myNewFaces); - for (; itNF.More(); itNF.Next()) - itNF.Value().Orientation( myFaceOri ); -} diff --git a/src/PARTITION/Partition_Loop2d.hxx b/src/PARTITION/Partition_Loop2d.hxx deleted file mode 100644 index 2310e1581..000000000 --- a/src/PARTITION/Partition_Loop2d.hxx +++ /dev/null @@ -1,106 +0,0 @@ -// GEOM PARTITION : partition algorithm -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : Partition_Loop2d.hxx -// Module : GEOM - -#ifndef _Partition_Loop2d_HeaderFile -#define _Partition_Loop2d_HeaderFile - -#ifndef _TopoDS_Face_HeaderFile -#include -#endif -#ifndef _TopAbs_Orientation_HeaderFile -#include -#endif -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _TopTools_MapOfShape_HeaderFile -#include -#endif -class TopoDS_Face; -class TopoDS_Edge; -class TopTools_ListOfShape; -class BRepAlgo_Image; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class Partition_Loop2d { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT Partition_Loop2d(); -Standard_EXPORT void Init(const TopoDS_Face& F) ; -Standard_EXPORT void AddConstEdge(const TopoDS_Edge& E) ; -Standard_EXPORT void AddSectionEdge(const TopoDS_Edge& E) ; -Standard_EXPORT void Perform() ; -Standard_EXPORT const TopTools_ListOfShape& NewWires() const; -Standard_EXPORT void WiresToFaces(const BRepAlgo_Image& EdgeImage) ; -Standard_EXPORT const TopTools_ListOfShape& NewFaces() const; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -TopoDS_Face myFace; -TopAbs_Orientation myFaceOri; -TopTools_ListOfShape myConstEdges; -TopTools_ListOfShape myNewWires; -TopTools_ListOfShape myNewFaces; -TopTools_ListOfShape myInternalWL; -TopTools_MapOfShape mySectionEdges; - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/PARTITION/Partition_Loop2d.ixx b/src/PARTITION/Partition_Loop2d.ixx deleted file mode 100644 index 2d35fd5c7..000000000 --- a/src/PARTITION/Partition_Loop2d.ixx +++ /dev/null @@ -1,14 +0,0 @@ -// GEOM PARTITION : partition algorithm -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : Partition_Loop2d.ixx -// Module : GEOM - -#include "Partition_Loop2d.jxx" - - - - diff --git a/src/PARTITION/Partition_Loop2d.jxx b/src/PARTITION/Partition_Loop2d.jxx deleted file mode 100644 index 555c16c80..000000000 --- a/src/PARTITION/Partition_Loop2d.jxx +++ /dev/null @@ -1,24 +0,0 @@ -// GEOM PARTITION : partition algorithm -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : Partition_Loop2d.jxx -// Module : GEOM - -#ifndef _TopoDS_Face_HeaderFile -#include -#endif -#ifndef _TopoDS_Edge_HeaderFile -#include -#endif -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _BRepAlgo_Image_HeaderFile -#include -#endif -#ifndef _Partition_Loop2d_HeaderFile -#include "Partition_Loop2d.hxx" -#endif diff --git a/src/PARTITION/Partition_Loop3d.cdl b/src/PARTITION/Partition_Loop3d.cdl deleted file mode 100644 index 435fef6d5..000000000 --- a/src/PARTITION/Partition_Loop3d.cdl +++ /dev/null @@ -1,69 +0,0 @@ --- GEOM PARTITION : partition algorithm --- --- Copyright (C) 2003 CEA/DEN, EDF R&D --- --- --- --- File : Partition_Loop3d.cdl --- Module : GEOM - -class Loop3d from Partition - - ---Purpose: Builds the shells from a set of faces. - -- Provides methods for comparing faces mutual - -- location. - -uses - Vec from gp, - MapOfOrientedShape from TopTools, - IndexedDataMapOfShapeListOfShape from TopTools, - Face from TopoDS, - Edge from TopoDS, - ListOfShape from TopTools, - Shape from TopoDS - -is - - Create; - - AddConstFaces (me : in out; S : Shape from TopoDS) - ---Purpose: Add faces of as unique faces in the result. - is static; - - AddSectionFaces (me : in out; S : Shape from TopoDS) - ---Purpose: Add faces of as double faces in the result. - is static; - - MakeShells (me : in out; AvoidFacesMap : MapOfOrientedShape from TopTools) - returns ListOfShape from TopTools is static; - ---Purpose: Make and return shells. - -- can contain faces that must not be - -- added to result shells. - ---C++: return const & - - - ---Category: class methods - - IsInside (myclass; E : Edge from TopoDS; - F1, F2 : Face from TopoDS; - CountDot : Boolean from Standard; - Dot : in out Real from Standard; - GoodOri : in out Boolean from Standard) - returns Boolean from Standard; - ---Purpose: check if is inside by edge . - -- if , compute : scalar production of - -- normalized vectors pointing inside faces, and - -- check if faces are oriented well for sewing - - Normal (myclass; E : Edge from TopoDS; - F : Face from TopoDS) returns Vec from gp; - - -fields - - myNewShells : ListOfShape from TopTools; -- result - - myFaces : ListOfShape from TopTools; - myEFMap : IndexedDataMapOfShapeListOfShape from TopTools; - -end Loop3d; diff --git a/src/PARTITION/Partition_Loop3d.cxx b/src/PARTITION/Partition_Loop3d.cxx deleted file mode 100644 index cb5ecff04..000000000 --- a/src/PARTITION/Partition_Loop3d.cxx +++ /dev/null @@ -1,351 +0,0 @@ -// GEOM PARTITION : partition algorithm -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : Partition_Loop3d.cxx -// Module : GEOM - -using namespace std; -#include "Partition_Loop3d.ixx" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//======================================================================= -//function : Partition_Loop3d -//purpose : -//======================================================================= - -Partition_Loop3d::Partition_Loop3d() -{ -} - -//======================================================================= -//function : AddConstFaces -//purpose : Add faces of as unique faces in the result. -//======================================================================= - -void Partition_Loop3d::AddConstFaces(const TopoDS_Shape& S) -{ - TopExp_Explorer FaceExp(S, TopAbs_FACE); - for (; FaceExp.More(); FaceExp.Next()) - myFaces.Append( FaceExp.Current() ); - - TopExp::MapShapesAndAncestors(S, TopAbs_EDGE, TopAbs_FACE, myEFMap); -} - -//======================================================================= -//function : AddSectionFaces -//purpose : Add faces of as double faces in the result. -//======================================================================= - -void Partition_Loop3d::AddSectionFaces(const TopoDS_Shape& S) -{ - AddConstFaces( S ); - AddConstFaces( S.Reversed() ); -} - -//======================================================================= -//function : MakeShells -//purpose : Make and return shells. -// can contain faces that must not be -// added to result shells. -//======================================================================= - -const TopTools_ListOfShape& - Partition_Loop3d::MakeShells (const TopTools_MapOfOrientedShape& AvoidFacesMap) -{ - myNewShells.Clear(); - - BRep_Builder Builder; - TopTools_MapOfShape CheckedEdgesMap; - TopTools_MapOfOrientedShape AddedFacesMap; - - TopTools_ListIteratorOfListOfShape itF (myFaces); - for (; itF.More(); itF.Next()) - { - const TopoDS_Shape& FF = itF.Value(); - if (AvoidFacesMap.Contains( FF ) || - ! AddedFacesMap.Add( FF ) ) - continue; - - // make a new shell - TopoDS_Shell Shell; - Builder.MakeShell(Shell); - Builder.Add(Shell,FF); - - // clear the maps from shapes added to previous Shell - TopTools_MapIteratorOfMapOfShape itEM (CheckedEdgesMap); - for (; itEM.More(); itEM.Next()) { - TopTools_ListOfShape& FL = myEFMap.ChangeFromKey( itEM.Key()); - TopTools_ListIteratorOfListOfShape it (FL); - while ( it.More()) { - if (AddedFacesMap.Contains( it.Value())) - FL.Remove( it ); - else - it.Next(); - } - } - CheckedEdgesMap.Clear(); - - - // loop on faces added to Shell; add their neighbor faces to Shell and so on - TopoDS_Iterator itAddedF (Shell); - for (; itAddedF.More(); itAddedF.Next()) - { - const TopoDS_Face& F = TopoDS::Face (itAddedF.Value()); - - // loop on edges of F; find a good neighbor face of F by E - TopExp_Explorer EdgeExp(F, TopAbs_EDGE); - for (; EdgeExp.More(); EdgeExp.Next()) - { - const TopoDS_Edge& E = TopoDS::Edge( EdgeExp.Current()); - if (! CheckedEdgesMap.Add( E )) - continue; - - // candidate faces list - const TopTools_ListOfShape& FL = myEFMap.ChangeFromKey(E); - if (FL.IsEmpty()) - continue; - // select one of neighbors - TopoDS_Face SelF; - if (FL.Extent() == 2) { - if (! F.IsSame( FL.First() )) - SelF = TopoDS::Face( FL.First() ); - else if (!F.IsSame( FL.Last() )) - SelF = TopoDS::Face( FL.Last() ); - } - else { - // check if a face already added to Shell shares E - TopTools_ListIteratorOfListOfShape it (FL); - Standard_Boolean found = Standard_False; - for (; !found && it.More(); it.Next()) - if (F != it.Value()) - found = AddedFacesMap.Contains( it.Value() ); - if (found) - continue; - // select basing on geometrical check - Standard_Boolean GoodOri, inside; - Standard_Real dot, MaxDot = -100; - TopTools_ListOfShape TangFL; // tangent faces - for ( it.Initialize( FL ) ; it.More(); it.Next()) { - const TopoDS_Face& NeighborF = TopoDS::Face( it.Value()); - if (NeighborF.IsSame( F )) - continue; - inside = Partition_Loop3d::IsInside( E, F, NeighborF, 1, dot, GoodOri); - if (!GoodOri) - continue; - if (!inside) - dot = -dot - 3; - if (dot < MaxDot) - continue; - if ( IsEqual( dot, MaxDot)) - TangFL.Append(SelF); - else - TangFL.Clear(); - MaxDot = dot; - SelF = NeighborF; - } - if (!TangFL.IsEmpty()) { - for (it.Initialize( TangFL ); it.More(); it.Next()) { - const TopoDS_Face& NeighborF = TopoDS::Face( it.Value()); - if (Partition_Loop3d:: IsInside( E, SelF , NeighborF, 0, dot, GoodOri)) - SelF = NeighborF; - } - } - } - if (!SelF.IsNull() && - AddedFacesMap.Add( SelF ) && - !AvoidFacesMap.Contains( SelF )) - Builder.Add( Shell, SelF); - - } // loop on edges of F - - } // loop on the faces added to Shell - - // Shell is complete - myNewShells.Append( Shell ); - - } // loop on myFaces - - - // prepare to the next call - myFaces.Clear(); - myEFMap.Clear(); - - return myNewShells; -} - - - -//======================================================================= -//function : Normal -//purpose : -//======================================================================= - -gp_Vec Partition_Loop3d::Normal(const TopoDS_Edge& E, - const TopoDS_Face& F) -{ - gp_Vec Norm, V1, V2; - Standard_Real First, Last; - gp_Pnt Ps; - - Handle(Geom2d_Curve) C2d = BRep_Tool::CurveOnSurface (E, F, First, Last); - Handle(Geom_Surface) Sf = BRep_Tool::Surface(F); - - gp_Pnt2d p = C2d->Value( 0.5*(First+Last) ); - Sf->D1(p.X(), p.Y(), Ps, V1, V2); - Norm = V1.Crossed(V2); - - if (F.Orientation() == TopAbs_REVERSED ) - Norm.Reverse(); - - return Norm; -} - -//======================================================================= -//function : NextNormal -//purpose : find normal to F at point a little inside F near the middle of E -//warning : E must be properly oriented in F. -//======================================================================= - -static gp_Vec NextNormal(const TopoDS_Edge& E, - const TopoDS_Face& F) -{ - Standard_Real First, Last; - - Handle(Geom2d_Curve) C2d = BRep_Tool::CurveOnSurface (E, F, First, Last); - Handle(Geom_Surface) Sf = BRep_Tool::Surface(F); - - gp_Pnt2d p; - gp_Vec2d v; - C2d->D1( 0.5*(First+Last), p, v); - if (E.Orientation() != F.Orientation()) - v.Reverse(); - gp_Dir2d dir( -v.Y(), v.X() ); // dir inside F - - Standard_Real duv = 1e-6; // this is not Ok and may give incorrect result if - // resolutionUV of compared faces is very different. To have a good result, - //it is necessary to get normal to faces at points equidistant from E in 3D - - p.SetX( p.X() + dir.X()*duv ); - p.SetY( p.Y() + dir.Y()*duv ); - - gp_Pnt Ps; - gp_Vec Norm, V1, V2, VV1, VV2; - Sf->D1( p.X(), p.Y(), Ps, V1, V2); - Norm = V1.Crossed(V2); - - if (F.Orientation() == TopAbs_REVERSED ) - Norm.Reverse(); - - return Norm; -} - - -//======================================================================= -//function : FindEinF -//purpose : find E in F -//======================================================================= - -static TopoDS_Edge FindEinF(const TopoDS_Edge& E, - const TopoDS_Face& F) -{ - TopExp_Explorer expl (F, TopAbs_EDGE); - for (; expl.More(); expl.Next()) - if( E.IsSame( expl.Current() )) - return TopoDS::Edge(expl.Current()); - TopoDS_Edge nullE; - return nullE; -} - -//======================================================================= -//function : IsInside -//purpose : check if is inside by edge . -// if , compute : scalar production of -// normalized vectors pointing inside faces, and -// check if faces are oriented well for sewing -//======================================================================= - -Standard_Boolean Partition_Loop3d::IsInside(const TopoDS_Edge& E, - const TopoDS_Face& F1, - const TopoDS_Face& F2, - const Standard_Boolean CountDot, - Standard_Real& Dot, - Standard_Boolean& GoodOri) -{ - Standard_Real f, l; - gp_Pnt P; - gp_Vec Vc1, Vc2, Vin1, Vin2, Nf1, Nf2; - Handle(Geom_Curve) Curve = BRep_Tool::Curve(E,f,l); - Curve->D1( 0.5*(f + l), P, Vc2); - TopoDS_Edge E1, E2 = FindEinF (E, F2); - if (E2.Orientation() == TopAbs_REVERSED ) Vc2.Reverse(); - - Nf1 = Normal(E,F1); - Nf2 = Normal(E,F2); - - Standard_Real sin = - Nf1.CrossSquareMagnitude(Nf2) / Nf1.SquareMagnitude() / Nf2.SquareMagnitude(); - Standard_Boolean tangent = sin < 0.001; - - Standard_Boolean inside = 0; - if (tangent) { - E1 = FindEinF (E, F1); - gp_Vec NNf1 = NextNormal(E1,F1); - gp_Vec NNf2 = NextNormal(E2,F2); - Vin2 = NNf2.Crossed(Vc2); - inside = Vin2 * NNf1 < 0; - } - else { - Vin2 = Nf2.Crossed(Vc2); - inside = Vin2 * Nf1 < 0; - } - - if (!CountDot) return inside; - - if (tangent) - Vin2 = Nf2.Crossed(Vc2); - else - E1 = FindEinF (E, F1); - - Vc1 = Vc2; - if (E1.Orientation() != E2.Orientation()) - Vc1.Reverse(); - Vin1 = Nf1.Crossed(Vc1); - - if (tangent) { - Standard_Real N1N2 = Nf1 * Nf2; - GoodOri = (Vin2 * Vin1 < 0) ? N1N2 > 0 : N1N2 < 0; - } - else { - Standard_Real V1N2 = Vin1 * Nf2; - GoodOri = ( inside ? V1N2 <= 0 : V1N2 >= 0); - } - - Vin1.Normalize(); - Vin2.Normalize(); - - Dot = Vin2 * Vin1; - - return inside; -} - diff --git a/src/PARTITION/Partition_Loop3d.hxx b/src/PARTITION/Partition_Loop3d.hxx deleted file mode 100644 index b946b32df..000000000 --- a/src/PARTITION/Partition_Loop3d.hxx +++ /dev/null @@ -1,102 +0,0 @@ -// GEOM PARTITION : partition algorithm -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : Partition_Loop3d.hxx -// Module : GEOM - -#ifndef _Partition_Loop3d_HeaderFile -#define _Partition_Loop3d_HeaderFile - -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _TopTools_IndexedDataMapOfShapeListOfShape_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -#ifndef _Standard_Real_HeaderFile -#include -#endif -class TopoDS_Shape; -class TopTools_ListOfShape; -class TopTools_MapOfOrientedShape; -class TopoDS_Edge; -class TopoDS_Face; -class gp_Vec; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class Partition_Loop3d { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT Partition_Loop3d(); -Standard_EXPORT void AddConstFaces(const TopoDS_Shape& S) ; -Standard_EXPORT void AddSectionFaces(const TopoDS_Shape& S) ; -Standard_EXPORT const TopTools_ListOfShape& MakeShells(const TopTools_MapOfOrientedShape& AvoidFacesMap) ; -Standard_EXPORT static Standard_Boolean IsInside(const TopoDS_Edge& E,const TopoDS_Face& F1,const TopoDS_Face& F2,const Standard_Boolean CountDot,Standard_Real& Dot,Standard_Boolean& GoodOri) ; -Standard_EXPORT static gp_Vec Normal(const TopoDS_Edge& E,const TopoDS_Face& F) ; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -TopTools_ListOfShape myNewShells; -TopTools_ListOfShape myFaces; -TopTools_IndexedDataMapOfShapeListOfShape myEFMap; - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/PARTITION/Partition_Loop3d.ixx b/src/PARTITION/Partition_Loop3d.ixx deleted file mode 100644 index a661b3242..000000000 --- a/src/PARTITION/Partition_Loop3d.ixx +++ /dev/null @@ -1,14 +0,0 @@ -// GEOM PARTITION : partition algorithm -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : Partition_Loop3d.ixx -// Module : GEOM - -#include "Partition_Loop3d.jxx" - - - - diff --git a/src/PARTITION/Partition_Loop3d.jxx b/src/PARTITION/Partition_Loop3d.jxx deleted file mode 100644 index 9b654f41b..000000000 --- a/src/PARTITION/Partition_Loop3d.jxx +++ /dev/null @@ -1,30 +0,0 @@ -// GEOM PARTITION : partition algorithm -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : Partition_Loop3d.jxx -// Module : GEOM - -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _TopTools_MapOfOrientedShape_HeaderFile -#include -#endif -#ifndef _TopoDS_Edge_HeaderFile -#include -#endif -#ifndef _TopoDS_Face_HeaderFile -#include -#endif -#ifndef _gp_Vec_HeaderFile -#include -#endif -#ifndef _Partition_Loop3d_HeaderFile -#include "Partition_Loop3d.hxx" -#endif diff --git a/src/PARTITION/Partition_Spliter.cdl b/src/PARTITION/Partition_Spliter.cdl deleted file mode 100644 index 75537b498..000000000 --- a/src/PARTITION/Partition_Spliter.cdl +++ /dev/null @@ -1,185 +0,0 @@ --- GEOM PARTITION : partition algorithm --- --- Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, --- CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS --- --- 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. --- --- 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org --- --- --- --- File : Partition_Spliter.cdl --- Author : Benedicte MARTIN --- Module : GEOM - -class Spliter from Partition - - ---Purpose: Split solids, shells and faces into parts of the - -- same topology if reconstruction level is not - -- limited. - -uses - Inter3d from Partition, - Loop2d from Partition, - Builder from BRep, - ShapeEnum from TopAbs, - Compound from TopoDS, - Face from TopoDS, - Edge from TopoDS, - Shape from TopoDS, - MapOfOrientedShape from TopTools, - IndexedMapOfShape from TopTools, - DataMapOfShapeShape from TopTools, - ListOfShape from TopTools, - MapOfShape from TopTools, - AsDes from BRepAlgo, - Image from BRepAlgo - -is - Create returns Spliter from Partition; - ---Purpose: constructor - - AddShape ( me : in out; S : Shape from TopoDS); - ---Purpose: add object Shape to be splitted. - -- If S is a COMPOUND or COMPSOLID, it will be - -- exploded in order to get more simple object - -- shapes. - -- Object shapes that are vertices, edges or wires - -- won't be splitted and won't be in a result. - - AddTool ( me : in out; S : Shape from TopoDS); - ---Purpose: add cutting tool - - Compute (me : in out; Limit : ShapeEnum from TopAbs - = TopAbs_SHAPE); - ---Purpose: produce a result which is a compound of parts of - -- object shapes. A part can be either a vertex, - -- edge, wire, face, shell or solid. - -- By default, a part is of the same topology as an - -- object shape, else restricts parts - -- reconstruction. - -- If == TopAbs_VERTEX, only new vertices are - -- returned in the result - - KeepShapesInside (me : in out; S : Shape from TopoDS); - ---Purpose: remove shapes that are outside of S from result. - -- S should be an object shape. - ---Warning: call it after Compute() - - RemoveShapesInside (me : in out; S : Shape from TopoDS); - ---Purpose: remove shapes that are inside S from result. - -- S should be an object shape. - ---Warning: call it after Compute() - - Shape ( me ) returns Shape from TopoDS; - ---Purpose: return resulting compound - - Clear ( me : in out); - ---Purpose: clear fields - - - ---Category: private methods - - - MakeSolids (me: in out; Solid : Shape from TopoDS; - Shells: in out ListOfShape from TopTools) - is private; - ---Purpose: make solids out of Shells - - MakeShells (me: in out; S : Shape from TopoDS; - NS: in out ListOfShape from TopTools) is private; - ---Purpose: split S into shells - - MakeFaces (me: in out; S : Shape from TopoDS) - returns Shape from TopoDS is private; - ---Purpose: split faces of S, return compound of new faces - - MakeEdges (me; - E : Edge from TopoDS; - VOnE : ListOfShape from TopTools; - NE : in out ListOfShape from TopTools) - is private; - ---Purpose: cut E by vertices VOnE, return list of new edges - -- NE - - FindFacesInside (me: in out; S : Shape from TopoDS; - CheckClosed : Boolean = Standard_False; - All : Boolean = Standard_False) - returns Shape from TopoDS is private; - ---Purpose: return compound of faces of other shapes that are - -- inside . must have image in myImageShape. - -- makes avoid faces that do not form a - -- closed shell - -- makes return already added faces - - CheckTool ( me: in out; S : Shape from TopoDS) - returns Boolean from Standard is private; - ---Purpose: Return True if is a tool shape. Prepare tool - -- faces of for the search of internal faces. - - MergeEqualEdges (me: in out; LE : ListOfShape from TopTools) is private; - ---Purpose: among LE, find equal edges, choose ones to keep - -- and make them have pcurves on all faces they are - -- shared by - -- contains edge splits - - IsInside (myclass; S1,S2 : Shape from TopoDS) - returns Boolean from Standard is private; - ---Purpose: Return True if the first vertex of S1 inside S2. - -- If S1.IsNull(), check infinite point against S2. - - GetOriginalShape(me; aShape : Shape from TopoDS) - returns Shape from TopoDS is private; - ---Purpose: Return the shape aShape originates from. aShape - -- should be a face or more complex result shape - - FindToolsToReconstruct(me: in out) is private; - ---Purpose: find and store as objects tools which interfere - -- with solids or are inside solids without - -- an interference - -fields - - myDoneStep : ShapeEnum from TopAbs; -- rebuilt level - myShape : Compound from TopoDS; -- result - myBuilder : Builder from BRep; - - myListShapes : ListOfShape from TopTools; -- object shapes - myMapFaces : MapOfShape from TopTools; -- object faces - myMapTools : MapOfShape from TopTools; -- tool faces - myEqualEdges : MapOfShape from TopTools; -- equal splits - myNewSection : MapOfShape from TopTools; -- new secton edges - myClosedShapes : MapOfShape from TopTools; - mySharedFaces : MapOfShape from TopTools; -- faces shared by several shapes - myWrappingSolid: MapOfShape from TopTools; -- solids having other shapes inside - myFaceShapeMap : DataMapOfShapeShape from TopTools; -- to find a shape by face - - myInternalFaces: DataMapOfShapeShape from TopTools; -- shape and its internal faces - myIntNotClFaces: DataMapOfShapeShape from TopTools; -- internal but not closed - - - myAsDes : AsDes from BRepAlgo; - myImagesFaces : Image from BRepAlgo; - myImagesEdges : Image from BRepAlgo; - myImageShape : Image from BRepAlgo; - - -- contains info of same domain shapes and section edges - myInter3d : Inter3d from Partition; - - -- avoid rebuilding twice commont part of solids - myAddedFacesMap: MapOfOrientedShape from TopTools; - -end Spliter; diff --git a/src/PARTITION/Partition_Spliter.cxx b/src/PARTITION/Partition_Spliter.cxx deleted file mode 100644 index 8f4793909..000000000 --- a/src/PARTITION/Partition_Spliter.cxx +++ /dev/null @@ -1,2160 +0,0 @@ -// GEOM PARTITION : partition algorithm -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : Partition_Spliter.cxx -// Author : Benedicte MARTIN -// Module : GEOM -// $Header$ - -using namespace std; -#include "Partition_Inter2d.hxx" -#include "Partition_Inter3d.hxx" -#include "Partition_Loop2d.hxx" -#include "Partition_Loop3d.hxx" -#include "Partition_Spliter.ixx" - -#include "utilities.h" - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include - -#ifdef DEB -//# define PART_PERF -#endif - -#ifdef PART_PERF -# include -#endif - -//======================================================================= -//function : isClosed -//purpose : check id a shape is closed, ie is a solid or a closed shell -//======================================================================= - -static Standard_Boolean isClosed(const TopoDS_Shape& theShape) -{ - Standard_Boolean isClosed = (theShape.ShapeType() == TopAbs_SOLID); - - if (!isClosed && theShape.ShapeType() == TopAbs_SHELL) { - TopTools_IndexedDataMapOfShapeListOfShape MEF; - TopExp::MapShapesAndAncestors(theShape, TopAbs_EDGE, TopAbs_FACE, MEF); - for (Standard_Integer i=1; isClosed && i<=MEF.Extent(); ++i) - isClosed = ( MEF(i).Extent() != 1 ); - } - - return isClosed; -} - -//======================================================================= -//function : Partition_Spliter -//purpose : constructor -//======================================================================= - -Partition_Spliter::Partition_Spliter() -{ - myAsDes = new BRepAlgo_AsDes; - Clear(); -} - -//======================================================================= -//function : AddTool -//purpose : add cutting tool that will _NOT_ be in result -//======================================================================= - -void Partition_Spliter::AddTool(const TopoDS_Shape& S) -{ - if (S.ShapeType() < TopAbs_SOLID) { // compound or compsolid - TopoDS_Iterator it (S); - for (; it.More(); it.Next()) - { - AddTool( it.Value()); - myFaceShapeMap.Bind( it.Value(), S ); // to know compound by shape - } - return; - } - - for (TopExp_Explorer exp(S,TopAbs_FACE); exp.More(); exp.Next()) - { - myMapTools.Add(exp.Current()); - myFaceShapeMap.Bind( exp.Current(), S ); - } - if (isClosed( S )) - myClosedShapes.Add( S ); -} - -//======================================================================= -//function : AddShape -//purpose : add object Shape to be splited -//======================================================================= - -void Partition_Spliter::AddShape(const TopoDS_Shape& S) -{ - if (S.ShapeType() < TopAbs_SOLID) { // compound or compsolid - TopoDS_Iterator it (S); - for (; it.More(); it.Next()) - { - AddShape( it.Value()); - myFaceShapeMap.Bind( it.Value(), S ); // to know compound by shape - } - return; - } - - TopExp_Explorer exp(S,TopAbs_FACE); - if (!exp.More()) { // do not split edges and vertices - //myBuilder.Add( myShape, S ); - return; - } - - Standard_Integer nbFacesBefore = myMapFaces.Extent(); // not to add twice the same S - for (; exp.More(); exp.Next()) { - const TopoDS_Shape & aFace = exp.Current(); - if ( ! myFaceShapeMap.IsBound( aFace )) // keep shape of tool face added as object - myFaceShapeMap.Bind( aFace, S ); - if (myMapFaces.Add( aFace )) - myImagesFaces.SetRoot( aFace ); - } - - if (nbFacesBefore == myMapFaces.Extent()) - return; - - // solids must be processed before all - if (S.ShapeType() == TopAbs_SOLID) - myListShapes.Prepend(S); - else - myListShapes.Append(S); - - if (isClosed( S )) - myClosedShapes.Add( S ); - -} - -//======================================================================= -//function : Shape -//purpose : return resulting compound -//======================================================================= - -TopoDS_Shape Partition_Spliter::Shape() const -{ - return myShape; -} - -//======================================================================= -//function : Clear -//purpose : clear fields -//======================================================================= - -void Partition_Spliter::Clear() -{ - myDoneStep = TopAbs_SHAPE; - - myListShapes.Clear(); - myMapFaces.Clear(); - myMapTools.Clear(); - myEqualEdges.Clear(); - myNewSection.Clear(); - myClosedShapes.Clear(); - mySharedFaces.Clear(); - myWrappingSolid.Clear(); - myFaceShapeMap.Clear(); - - myInternalFaces.Clear(); - myIntNotClFaces.Clear(); - - myAsDes->Clear(); - myImagesFaces.Clear(); - myImagesEdges.Clear(); - myImageShape.Clear(); - - myInter3d = Partition_Inter3d(myAsDes); - - myAddedFacesMap.Clear(); - -} - -//======================================================================= -//function : Compute -//purpose : produce a result -//======================================================================= - -void Partition_Spliter::Compute(const TopAbs_ShapeEnum Limit) -{ - if ((Limit != TopAbs_SHAPE && myDoneStep == Limit) || - (Limit == TopAbs_SHAPE && myDoneStep == TopAbs_SOLID)) - return; - - myBuilder.MakeCompound( myShape ); - - TopTools_MapIteratorOfMapOfShape it; - TopTools_ListIteratorOfListOfShape itl; - TopExp_Explorer exp; - -#ifdef PART_PERF - OSD_Chronometer aCron; -#endif - - if (myDoneStep > TopAbs_VERTEX) { - - TopTools_ListOfShape aListFaces; - aListFaces = myImagesFaces.Roots(); - for (it.Initialize(myMapTools); it.More(); it.Next()) - aListFaces.Append(it.Key()); - -#ifdef PART_PERF - aCron.Start(); -#endif - - //----------------------------------------------- - // Intersection between faces - //----------------------------------------------- - // result is in myAsDes as a map Face - list of new edges; - // special care is done for section edges, same domain faces and vertices: - // data about them is inside myInter3d - myInter3d.CompletPart3d(aListFaces, myFaceShapeMap); - -#ifdef PART_PERF - MESSAGE("+++ CompletPart3d()"); - aCron.Show( cout ); - aCron.Reset(); - aCron.Start(); -#endif - //----------------------------------------------- - // Intersection of edges - //----------------------------------------------- - - // add tool faces which must be reconstructed to myMapFaces too - FindToolsToReconstruct(); - -#ifdef PART_PERF - MESSAGE("+++ FindToolsToReconstruct()"); - aCron.Show( cout ); - aCron.Reset(); - aCron.Start(); -#endif - - // add existing vertices to edges of object faces in myAsDes - TopTools_MapOfShape DoneEM; - for ( it.Initialize(myMapFaces); it.More(); it.Next()) { - const TopoDS_Shape& F = it.Key(); - TopoDS_Face FForward = TopoDS::Face(F.Oriented(TopAbs_FORWARD)); - for (exp.Init(FForward,TopAbs_EDGE); exp.More(); exp.Next()) { - const TopoDS_Edge& E = TopoDS::Edge( exp.Current() ); - myAsDes->Add(FForward,E); - if (DoneEM.Add(E)) { - TopoDS_Iterator itV(E); - for (; itV.More(); itV.Next()) { - const TopoDS_Vertex& V = TopoDS::Vertex( itV.Value()); - myAsDes->Add(E, myInter3d.ReplaceSameDomainV( V, E )); - } - } - } - } - - // intersect edges that are descendants of a face in myAsDes - TopTools_MapOfShape& Modif = myInter3d.TouchedFaces(); - for ( it.Initialize(Modif); it.More(); it.Next()) { - const TopoDS_Face& F = TopoDS::Face(it.Key()); - Partition_Inter2d::CompletPart2d (myAsDes, F, myInter3d.NewEdges()); - } - // now myAsDes contains also new vertices made at edge intersection as - // descendant of edges both new and old - - myDoneStep = TopAbs_VERTEX; - -#ifdef PART_PERF - MESSAGE("+++ CompletPart2d()"); - aCron.Show( cout ); - aCron.Reset(); - aCron.Start(); -#endif - } // if (myDoneStep > TopAbs_VERTEX) - - if (Limit == TopAbs_VERTEX) { - // add new vertices to myShape - for ( it.Initialize( myInter3d.NewEdges() ); it.More(); it.Next()) { - if (! myAsDes->HasDescendant( it.Key() )) - continue; - itl.Initialize( myAsDes->Descendant( it.Key() )); - for (; itl.More(); itl.Next()) - myBuilder.Add ( myShape, itl.Value() ); - } - return; - } - - - if (myDoneStep > TopAbs_EDGE) { - - //----------------------------------------------- - //----------------------------------------------- - // ------- Reconstruction of all the edges.------ - //----------------------------------------------- - //----------------------------------------------- - - // ============== - // cut new edges - // ============== - TopTools_ListOfShape LSE; // all edge splits - for ( it.Initialize(myInter3d.NewEdges()); it.More(); it.Next()) { - - TopoDS_Vertex V1,V2; - TopoDS_Edge EE = TopoDS::Edge(it.Key()); - - TopTools_ListOfShape aListV, aListF; - aListV = myAsDes->Descendant(EE); // intersection vertices - aListF = myAsDes->Ascendant(EE); // intersected faces - - if (aListV.IsEmpty()) - continue; // new edge does not intersect any other edge - - // Add end vertices to new edges only if - // one face is Tool and the other is Shape - Standard_Boolean isTool1 = ! myMapFaces.Contains( aListF.First() ); - Standard_Boolean isTool2 = ! myMapFaces.Contains( aListF.Last() ); - if (isTool1 || isTool2) - { - TopExp::Vertices(EE,V1,V2); - Standard_Real Tol = Max (BRep_Tool::Tolerance( V1 ), - BRep_Tool::Tolerance( V2 )); - - gp_Pnt P1 = BRep_Tool::Pnt(V1); - gp_Pnt P2 = BRep_Tool::Pnt(V2); - Standard_Boolean AddV1 = Standard_True; - Standard_Boolean AddV2 = Standard_True; - - // add only if there is no intersection at end vertex - for (itl.Initialize(aListV); itl.More(); itl.Next()) { - const TopoDS_Vertex& Ve = TopoDS::Vertex(itl.Value()) ; - Standard_Real Tol2 = Max ( Tol, BRep_Tool::Tolerance( Ve )); - Tol2 *= Tol2; - gp_Pnt P = BRep_Tool::Pnt(Ve); - if (AddV1 && P.SquareDistance(P1) <= Tol2) - AddV1 = Standard_False; - - if (AddV2 && P.SquareDistance(P2) <= Tol2) - AddV2 = Standard_False; - } - - if (AddV1) { - aListV.Append(V1); - myAsDes->Add(EE,V1); - } - - if (AddV2) { - aListV.Append(V2); - myAsDes->Add(EE,V2); - } - } - - // cut new edges - Standard_Integer NbV=aListV.Extent() ; - if (NbV>1 || (NbV==1 && V1.IsSame(V2)) ) { - TopTools_ListOfShape LNE; - MakeEdges (EE,aListV, LNE); - myImagesEdges.Bind(EE,LNE); - LSE.Append( LNE ); - } - } - - // ============== - // cut old edges - // ============== - for ( it.Initialize(myMapFaces); it.More(); it.Next()) { - for (exp.Init( it.Key(), TopAbs_EDGE); exp.More(); exp.Next()) { - const TopoDS_Edge& EE = TopoDS::Edge( exp.Current() ); - if ( myImagesEdges.HasImage( EE )) - continue; - TopTools_ListOfShape LNE; - const TopTools_ListOfShape& aListVV = myAsDes->Descendant(EE); - MakeEdges (EE, aListVV, LNE); - myImagesEdges.Bind(EE,LNE); - LSE.Append( LNE ); - } - } -#ifdef PART_PERF - MESSAGE("+++ Cut Edges"); - aCron.Show( cout ); - aCron.Reset(); - aCron.Start(); -#endif - - // process same domain section edges - MergeEqualEdges( LSE ); - - myDoneStep = TopAbs_EDGE; - -#ifdef PART_PERF - MESSAGE("+++ MergeEqualEdges()"); - aCron.Show( cout ); - aCron.Reset(); - aCron.Start(); -#endif - } // if (myDoneStep > TopAbs_EDGE) - - if (Limit == TopAbs_EDGE) { - // add splits of old edges - TopTools_ListIteratorOfListOfShape itNE; - for (itl.Initialize( myListShapes );itl.More();itl.Next()) { - if (myMapTools.Contains( itl.Value() )) - continue; // skip tool faces - for ( exp.Init( itl.Value(), TopAbs_EDGE ); exp.More(); exp.Next()) { - itNE.Initialize( myImagesEdges.Image( exp.Current() )); - for ( ; itNE.More(); itNE.Next()) - myBuilder.Add ( myShape, itNE.Value() ); - } - } - // add splits of new edges - for ( it.Initialize( myInter3d.NewEdges() ); it.More(); it.Next()) { - itNE.Initialize( myImagesEdges.Image( it.Key() )); - for (; itNE.More(); itNE.Next()) - myBuilder.Add ( myShape, itNE.Value() ); - } - return; - } - - - //----------------------------------------------- - // split faces - //----------------------------------------------- - - if (myDoneStep > TopAbs_FACE) { - - for (itl.Initialize(myListShapes);itl.More();itl.Next()) { - TopoDS_Shape FacesComp = MakeFaces ( itl.Value()); - // there is a cunning here: myImagesFaces keeps faces made by Loop2d - // but some of them may be replaced with splits of same domain face - // and myImageShape keeps ultimate result - myImageShape.Bind( itl.Value(), FacesComp ); - } - - myDoneStep = TopAbs_FACE; -#ifdef PART_PERF - MESSAGE("+++ MakeFaces()"); - aCron.Show( cout ); - aCron.Reset(); - aCron.Start(); -#endif - } - - if (Limit == TopAbs_WIRE || - Limit == TopAbs_FACE) { - for (itl.Initialize(myListShapes);itl.More();itl.Next()) { - if ( myMapTools.Contains( itl.Value() )) - continue; // no result needed for a tool face - const TopoDS_Shape& FacesComp = myImageShape.Image( itl.Value() ).First(); - for ( exp.Init( FacesComp, Limit); exp.More(); exp.Next()) - myBuilder.Add ( myShape, exp.Current()); - } - return; - } - - - //----------------------------------------------- - // split and add solids and shells - //----------------------------------------------- - - Standard_Boolean makeSolids = (Limit == TopAbs_SHAPE || - Limit < TopAbs_SHELL); - for (itl.Initialize(myListShapes);itl.More();itl.Next()) - { - const TopoDS_Shape & S = itl.Value(); - if (S.ShapeType() > TopAbs_SHELL) - continue; - - TopTools_ListOfShape NSL; // new shape list - MakeShells (S , NSL); - if (makeSolids && S.ShapeType() == TopAbs_SOLID ) - MakeSolids( S, NSL ); - - // store new shells or solids - TopTools_ListIteratorOfListOfShape itNSL (NSL); - for ( ; itNSL.More(); itNSL.Next()) - myBuilder.Add (myShape, itNSL.Value()); - } -#ifdef PART_PERF - MESSAGE("+++ MakeShells()"); - aCron.Show( cout ); -#endif - - //----------------------------------------------- - // add split faces - //----------------------------------------------- - - for (itl.Initialize(myListShapes);itl.More();itl.Next()) - { - const TopoDS_Shape & S = itl.Value(); - if (S.ShapeType() != TopAbs_FACE || - myMapTools.Contains( S )) - continue; - TopoDS_Iterator itS( myImageShape.Image(S).First() ); - for (; itS.More(); itS.Next()) - if (! myAddedFacesMap.Contains( itS.Value() )) - myBuilder.Add (myShape, itS.Value()); - } - - myDoneStep = makeSolids ? TopAbs_SOLID : TopAbs_SHELL; - -} - -//======================================================================= -//function : MakeSolids -//purpose : make solids out of Shells -//======================================================================= - -void Partition_Spliter::MakeSolids(const TopoDS_Shape & theSolid, - TopTools_ListOfShape & theShellList) -{ - // for a solid wrapping other shells or solids without intersection, - // it is necessary to find shells making holes in it - - TopTools_ListOfShape aNewSolids; // result - TopTools_ListOfShape aHoleShells; - TopoDS_Shape anInfinitePointShape; - - Standard_Boolean isWrapping = myWrappingSolid.Contains( theSolid ); - if (!isWrapping && !theShellList.IsEmpty()) - { - // check if theSolid initially has internal shells - TopoDS_Iterator aShellExp (theSolid); - aShellExp.Next(); - isWrapping = aShellExp.More(); - } - - TopTools_ListIteratorOfListOfShape aShellIt(theShellList); - for ( ; aShellIt.More(); aShellIt.Next()) - { - const TopoDS_Shape & aShell = aShellIt.Value(); - - // check if a shell is a hole - if (isWrapping && IsInside (anInfinitePointShape, aShell)) - aHoleShells.Append( aShell ); - else - { - // make a solid from a shell - TopoDS_Solid Solid; - myBuilder.MakeSolid( Solid ); - myBuilder.Add (Solid, aShell); - - aNewSolids.Append (Solid); - } - } - - // find an outer shell most close to each hole shell - TopTools_DataMapOfShapeShape aInOutMap; - for (aShellIt.Initialize( aHoleShells ); aShellIt.More(); aShellIt.Next()) - { - const TopoDS_Shape & aHole = aShellIt.Value(); - TopTools_ListIteratorOfListOfShape aSolisIt (aNewSolids); - for ( ; aSolisIt.More(); aSolisIt.Next()) - { - const TopoDS_Shape & aSolid = aSolisIt.Value(); - if (! IsInside( aHole, aSolid )) - continue; - - if ( aInOutMap.IsBound (aHole)) - { - const TopoDS_Shape & aSolid2 = aInOutMap( aHole ); - if ( IsInside( aSolid, aSolid2 )) - { - aInOutMap.UnBind( aHole ); - aInOutMap.Bind ( aHole, aSolid ); - } - } - else - aInOutMap.Bind ( aHole, aSolid ); - } - - // add aHole to a solid - if (aInOutMap.IsBound( aHole )) - myBuilder.Add ( aInOutMap( aHole ), aHole ); - } - - theShellList.Clear(); - theShellList.Append( aNewSolids ); -} - -//======================================================================= -//function : FindFacesInside -//purpose : return compound of faces of other shapes that are -// inside . -// is an object shape. -// makes avoid faces that do not form a -// closed shell -// makes return already added faces -//======================================================================= - -TopoDS_Shape Partition_Spliter::FindFacesInside(const TopoDS_Shape& theShape, - const Standard_Boolean CheckClosed, - const Standard_Boolean All) -{ - // ================================================ - // check if internal faces have been already found - // ================================================ - TopExp_Explorer expl; - if (myInternalFaces.IsBound( theShape )) - { - TopoDS_Shape aIntFComp = myInternalFaces.Find ( theShape ); - TopoDS_Shape aIntRemFComp = myIntNotClFaces.Find ( theShape ); - - expl.Init( aIntRemFComp, TopAbs_FACE); - if (CheckClosed || !expl.More()) - return aIntFComp; - - TopoDS_Compound C; - myBuilder.MakeCompound( C ); - // add removed faces - for (; expl.More(); expl.Next()) - myBuilder.Add( C, expl.Current() ); - // add good internal faces - for (expl.Init( aIntFComp, TopAbs_FACE); expl.More(); expl.Next()) - myBuilder.Add( C, expl.Current() ); - return C; - } - - // =================================== - // get data for internal faces search - // =================================== - - // compound of split faces of theShape - const TopoDS_Shape& CSF = myImageShape.Image(theShape).First(); - - TopTools_MapOfShape MSE, MFP; - TopTools_DataMapOfShapeListOfShape DMSEFP; - TopTools_MapIteratorOfMapOfShape itm; - TopTools_ListOfShape EmptyL; - - // MSE filling: map of new section edges of CSF - for (expl.Init(CSF,TopAbs_EDGE); expl.More(); expl.Next()) { - const TopoDS_Shape & resE = expl.Current() ; - if (myNewSection.Contains( resE )) // only new edges - MSE.Add(resE); - } - - // DMEF: map edge of CSF - faces of CSF - TopTools_IndexedDataMapOfShapeListOfShape DMEF; - TopExp::MapShapesAndAncestors(CSF, TopAbs_EDGE, TopAbs_FACE, DMEF); - - // Fill - // 1. MFP - a map of faces to process: map of resulting faces except - // those of theShape; we`ll add to C those of them which are inside CSF - // 2. DMSEFP - edge of MSE => faces of MFP - TopTools_ListIteratorOfListOfShape itl; - for (itl.Initialize(myListShapes);itl.More();itl.Next()) { - const TopoDS_Shape& aShape = itl.Value(); - if ( theShape.IsSame( aShape )) continue; - // fill maps - // iterate on split faces of aShape - TopoDS_Iterator itF ( myImageShape.Image(aShape).First() ); - for ( ; itF.More(); itF.Next()) { - const TopoDS_Shape& sf = itF.Value(); - MFP.Add(sf); - // iterate on edges of split faces of aShape, - // add to DMSEFP edges that are new - for (expl.Init( sf, TopAbs_EDGE ); expl.More(); expl.Next()) { - TopoDS_Shape se = expl.Current(); - if ( MSE.Contains(se)) {// section edge - if (!DMSEFP.IsBound(se)) - DMSEFP.Bind(se,EmptyL); - DMSEFP(se).Append(sf); - } - } - } - } - - // add tool faces having section edges on faces of theShape to MFP and DMSEFP; - // such tool faces need not to be reconstructed and so they are not in myListShapes - for (itm.Initialize(myMapTools); itm.More(); itm.Next()) - { - const TopoDS_Shape & aToolFace = itm.Key(); - if (myMapFaces.Contains( aToolFace )) - continue; - MFP.Add(aToolFace); - for (expl.Init( aToolFace, TopAbs_EDGE ); expl.More(); expl.Next()) { - TopoDS_Shape se = expl.Current(); - if ( MSE.Contains( se )) {// section edge - if (!DMSEFP.IsBound( se )) - DMSEFP.Bind( se, EmptyL ); - DMSEFP( se ).Append( aToolFace ); - } - } - } - - - // =========================== - // find faces inside theShape - // =========================== - - Standard_Boolean skipAlreadyAdded = Standard_False; - Standard_Boolean GoodOri, inside; - Standard_Real dot; - TopTools_ListOfShape KeepFaces; - TopTools_DataMapIteratorOfDataMapOfShapeListOfShape Mapit; - - // iterate on section edges, check faces of other shapes - // sharing section edges and put internal faces to KeepFaces - for (Mapit.Initialize(DMSEFP); Mapit.More() ; Mapit.Next() ) { - // a new edge of theShape - const TopoDS_Edge& E = TopoDS::Edge (Mapit.Key()); - // an original edge of which E is a split - const TopoDS_Edge& OrigE = TopoDS::Edge ( myImagesEdges.Root( E )); - // does OrigE itself splits a face - Standard_Boolean isSectionE = myInter3d.IsSectionEdge ( OrigE ); - - // split faces of other shapes sharing E - TopTools_ListOfShape& LSF = DMSEFP.ChangeFind(E); - itl.Initialize( LSF ); - while (itl.More()) { - // a split faces of other shape - TopoDS_Face aFace1 = TopoDS::Face(itl.Value()); - // remove aFace1 form DMSEFP and MFP - LSF.Remove( itl ); // == itl.Next(); - if (!MFP.Remove( aFace1 )) - continue; // was not is MFP ( i.e already checked) - // check if aFace1 was already added to 2 shells - if (!All && - myAddedFacesMap.Contains( aFace1 ) && - myAddedFacesMap.Contains( aFace1.Reversed() )) { - skipAlreadyAdded = Standard_True; - continue; - } - - // find another face which originates from the same face as aFace1: - // usually aFace2 is internal if aFace1 is not and vice versa - - TopoDS_Shape anOrigFace = aFace1; - if (myImagesFaces.IsImage(aFace1)) - anOrigFace = myImagesFaces.Root(aFace1); - TopoDS_Shape aFace2; - if ( !isSectionE ) { - while (itl.More()) { - aFace2 = itl.Value(); - if (!MFP.Contains( aFace2 )) { - LSF.Remove( itl ); - continue; - } - if (anOrigFace.IsSame( myImagesFaces.Root( aFace2 ))) - break; - itl.Next(); - } - if (itl.More()) { // aFace2 found, remove it from maps - LSF.Remove( itl ); - MFP.Remove(aFace2); - } - else - aFace2.Nullify(); - itl.Initialize( LSF ); - } - - // check that anOrigFace is not same domain with CSF faces it intersects - - const TopTools_ListOfShape& FL = DMEF.FindFromKey(E); //faces of CSF sharing E - const TopoDS_Shape& origF1 = myImagesFaces.Root(FL.First()); - const TopoDS_Shape& origF2 = myImagesFaces.Root(FL.Last()); - Standard_Boolean sameDom1 = anOrigFace.IsSame( origF1 ); - Standard_Boolean sameDom2 = anOrigFace.IsSame( origF2 ); - if (!(sameDom1 || sameDom2) && myInter3d.HasSameDomainF( anOrigFace )) { - sameDom1 = myInter3d.IsSameDomainF( anOrigFace, origF1); - if (origF1 == origF2) - sameDom2 = sameDom1; - else - myInter3d.IsSameDomainF( anOrigFace, origF2); - } - if (sameDom1 && sameDom2) - continue; - if ((sameDom1 || sameDom2)) { - inside = Partition_Loop3d::IsInside (E, - TopoDS::Face(FL.First()), - TopoDS::Face(FL.Last()), - 1, dot, GoodOri); - if (inside || (dot + Precision::Angular() >= 1.0)) - continue; // E is convex between origF1 and origF2 or they are tangent - } - - - // keep one of found faces - - //face of CSF sharing E - const TopoDS_Shape& aShapeFace = sameDom1 ? FL.Last() : FL.First(); - // analyse aFace1 state - inside = Partition_Loop3d::IsInside (E, TopoDS::Face(aShapeFace), aFace1, - 1, dot, GoodOri); - if (inside && isSectionE) - { - // aFace1 must be tested with both adjacent faces of CSF - const TopoDS_Shape& aShapeFace2 = sameDom1 ? FL.First() : FL.Last(); - if (aShapeFace2 != aShapeFace) - inside = Partition_Loop3d::IsInside (E, TopoDS::Face(aShapeFace2), aFace1, - 1, dot, GoodOri); - } - - // store internal face - if (inside) - KeepFaces.Append(aFace1); - - else if (!aFace2.IsNull()) - { - if (dot + Precision::Angular() >= 1.0) - { - // aFace2 state is not clear, it will be analysed alone, - // put it back to the maps - MFP.Add( aFace2 ); - LSF.Append( aFace2 ); - } - else - KeepFaces.Append(aFace2); - } - } - } - - // =================================================== - // add not distributed faces connected with KeepFaces - // =================================================== - - // ultimate list of internal faces - TopTools_ListOfShape KeptFaces; - - // add to MFP not split tool faces as well, they may be connected with - // tool faces interfering with theShape - for ( itm.Initialize(myMapTools); itm.More(); itm.Next() ) { - const TopoDS_Shape& aToolFace = itm.Key(); - if (!myImageShape.HasImage(aToolFace)) - MFP.Add (aToolFace); - } - - if (MFP.IsEmpty()) - KeptFaces.Append (KeepFaces); - - while (!KeepFaces.IsEmpty()) - { - // KeepEdges : map of edges of faces kept last time - TopTools_IndexedMapOfShape KeepEdges; - for ( itl.Initialize(KeepFaces); itl.More(); itl.Next() ) { - TopExp::MapShapes( itl.Value(), TopAbs_EDGE, KeepEdges); - KeptFaces.Append( itl.Value() ); - } - - KeepFaces.Clear(); - - // keep faces connected with already kept faces by KeepEdges - for ( itm.Initialize(MFP); itm.More(); itm.Next() ) { - const TopoDS_Shape& FP = itm.Key(); - for (expl.Init(FP,TopAbs_EDGE); expl.More(); expl.Next()) { - const TopoDS_Shape& se = expl.Current(); - if (!MSE.Contains(se) && KeepEdges.Contains(se) ) { - KeepFaces.Append(FP); - MFP.Remove(FP); - break; - } - } - } - } - - // =============================================================== - // here MFP contains faces outer of theShape and those of shapes - // which do not interfere with theShape at all and between which - // there may be those wrapped by theShape and whose faces may be - // needed to be returned as well - // =============================================================== - - Standard_Boolean isSolid = (theShape.ShapeType() == TopAbs_SOLID); - if (All || isSolid) // All is for sub-result removal - { - // loop on not used faces; checked faces will be removed from MFP - // during the loop - for ( itm.Initialize( MFP ); itm.More(); itm.Next() ) { - const TopoDS_Shape & aFace = itm.Key(); - - // a shape which aFace originates from - TopoDS_Shape anOrigShape = GetOriginalShape( aFace ); - - // find out if all split faces of anOrigShape are not in MFP - // and by the way remove them from MFP - Standard_Boolean isAllOut = Standard_True; - TopoDS_Shape aSplitFaces = anOrigShape; - if (myImageShape.HasImage(anOrigShape)) - aSplitFaces = myImageShape.Image(anOrigShape).First(); - - TopTools_ListOfShape aSplitFaceL; // faces candidate to be kept - for (expl.Init( aSplitFaces, TopAbs_FACE ); expl.More(); expl.Next()) - { - const TopoDS_Shape & aSpFace = expl.Current(); - // a tool face which became object has image but the whole tool shape has not - if (myImageShape.HasImage( aSpFace )) - { - TopExp_Explorer exF (myImageShape.Image( aSpFace ).First(), TopAbs_FACE ); - for ( ; exF.More(); exF.Next() ) - { - aSplitFaceL.Append( exF.Current() ); - if ( ! MFP.Remove( exF.Current() ) && isAllOut ) - // a shared face might be removed from MFP during a prev loop - isAllOut = mySharedFaces.Contains( exF.Current() ); - } - } - else - { - aSplitFaceL.Append( aSpFace ); - if ( ! MFP.Remove( aSpFace ) && isAllOut) - // a shared face might be removed from MFP during a prev loop - isAllOut = mySharedFaces.Contains( aSpFace ); - } - } - itm.Initialize( MFP ); // iterate remaining faces - if ( !isAllOut ) - continue; - - // classify anOrigShape against theShape - if (IsInside (anOrigShape, theShape)) - { - if (isSolid && myClosedShapes.Contains( anOrigShape )) - // to make a special care at solid reconstruction - myWrappingSolid.Add ( theShape ); - - // keep faces of an internal shape anOrigShape - KeptFaces.Append( aSplitFaceL ); - } - } - } - - // ==================================================== - // check if kept faces form a shell without free edges - // ==================================================== - - DMEF.Clear(); // edge - kept faces - MFP.Clear(); // reuse it for wrong faces - if (CheckClosed) { - for (itl.Initialize(KeptFaces); itl.More(); itl.Next() ) - TopExp::MapShapesAndAncestors(itl.Value(), TopAbs_EDGE, TopAbs_FACE, DMEF); - - Standard_Integer i, nb = DMEF.Extent(); - Standard_Boolean isClosed = Standard_False; - while (!isClosed) { - isClosed = Standard_True; - for (i=1; isClosed && i<=nb; ++i) { - const TopoDS_Shape& E = DMEF.FindKey( i ); - if (! BRep_Tool::Degenerated( TopoDS::Edge( E )) && - ! MSE.Contains( E )) - isClosed = ( DMEF(i).Extent() != 1 ); - } - if (!isClosed) { - const TopoDS_Shape& F = DMEF.FindFromIndex( i-1 ).First(); // bad face - MFP.Add( F ); - // remove bad face from DMEF - for (expl.Init( F, TopAbs_EDGE); expl.More(); expl.Next()) { - const TopoDS_Shape& E = expl.Current(); - TopTools_ListOfShape& FL = DMEF.ChangeFromKey( E ); - for (itl.Initialize( FL ); itl.More(); itl.Next() ) { - if ( F.IsSame( itl.Value() )) { - FL.Remove( itl ); - break; - } - } - } - } - } - } - - // ============== - // make a result - // ============== - - TopoDS_Compound C; - // compound of removed internal faces - TopoDS_Compound CNotCl; - - myBuilder.MakeCompound(C); - myBuilder.MakeCompound(CNotCl); - - // add to compounds - for (itl.Initialize(KeptFaces); itl.More(); itl.Next() ) - { - TopoDS_Shape & aIntFace = itl.Value(); - if (! MFP.Contains( aIntFace )) - myBuilder.Add( C, aIntFace); - else - myBuilder.Add( CNotCl, aIntFace); - } - - if (!skipAlreadyAdded && CheckClosed) - { - myInternalFaces.Bind( theShape, C ); - myIntNotClFaces.Bind( theShape, CNotCl ); - } - - return C; -} - -//======================================================================= -//function : MakeShell -//purpose : split S into compound of shells -//======================================================================= - -void Partition_Spliter::MakeShells(const TopoDS_Shape& S, - TopTools_ListOfShape& NS) -{ - Partition_Loop3d ShellMaker; - // get compound of split faces of S - const TopoDS_Shape& FacesComp = myImageShape.Image(S).First(); - ShellMaker.AddConstFaces( FacesComp ); - // add split faces inside S - if (myClosedShapes.Contains( S )) { - TopoDS_Shape InternalFacesComp = FindFacesInside(S, Standard_True); - ShellMaker.AddSectionFaces( InternalFacesComp ); - } - - NS = ShellMaker.MakeShells( myAddedFacesMap ); - - // Add faces added to new shell to myAddedFacesMap: - // avoid rebuilding twice commont part of 2 solids. - TopTools_ListIteratorOfListOfShape itS(NS); - while ( itS.More()) { - TopExp_Explorer expF (itS.Value(), TopAbs_FACE); - for (; expF.More(); expF.Next()) - myAddedFacesMap.Add (expF.Current()); - - itS.Next(); - } -} - -//======================================================================= -//function : findEqual -//purpose : compare edges of EL1 against edges of EL2, -// Result is in EMM binding EL1 edges to list of equal edges. -// Edges are considered equall only if they have same vertices. -// ==True makes consider same edges as equal -// Put in all equal edges -//======================================================================= - -static void findEqual (const TopTools_ListOfShape& EL1, - const TopTools_ListOfShape& EL2, - const Standard_Boolean addSame, - TopTools_DataMapOfShapeListOfShape& EEM, - TopTools_MapOfShape& AllEqMap) -{ - // map vertices to edges for EL2 - TopTools_DataMapOfShapeListOfShape VEM; - TopTools_ListIteratorOfListOfShape itE1, itE2(EL2); - TopoDS_Iterator itV; - TopTools_ListOfShape emptyL; - for (; itE2.More(); itE2.Next()) { - for (itV.Initialize( itE2.Value() ); itV.More(); itV.Next()) { - const TopoDS_Shape& V = itV.Value(); - if (! VEM.IsBound( V ) ) - VEM.Bind( V, emptyL); - VEM( V ).Append( itE2.Value()); - } - } - - gp_Vec D1, D2; - gp_Pnt P; - Standard_Real f,l,u,tol; - Handle(Geom_Curve) C1, C2; - Extrema_ExtPC Extrema; - TopoDS_Vertex V1, V2, V3, V4; - - AllEqMap.Clear(); - - for (itE1.Initialize(EL1); itE1.More(); itE1.Next()) { - const TopoDS_Edge& E1 = TopoDS::Edge( itE1.Value()); - if (BRep_Tool::Degenerated( E1 ) || AllEqMap.Contains (E1)) - continue; - TopExp::Vertices( E1, V1, V2 ); - - if (VEM.IsBound(V1)) - itE2.Initialize( VEM(V1) ); - for (; itE2.More(); itE2.Next()) { - const TopoDS_Edge& E2 = TopoDS::Edge( itE2.Value()); - if (BRep_Tool::Degenerated( E2 ) || AllEqMap.Contains (E2)) - continue; - - if (E1.IsSame(E2)) { - if (!addSame) - continue; - } - else { - TopExp::Vertices( E2, V3, V4); - if (!V2.IsSame(V4) && !V2.IsSame(V3)) - continue; - // E1 and E2 have same vertices - // check D1 at end points. - C2 = BRep_Tool::Curve( E2, f,l); - C1 = BRep_Tool::Curve( E1, f,l); - u = BRep_Tool::Parameter(V1,E1); - C1->D1(u, P, D1); - u = BRep_Tool::Parameter(V1.IsSame(V3) ? V3 : V4, E2); - C2->D1(u, P, D2); - D1.Normalize(); D2.Normalize(); - if (Abs(D1*D2) + Precision::Angular() < 1.0) - continue; - if (! V1.IsSame(V2)) { - u = BRep_Tool::Parameter(V2,E1); - C1->D1(u, P, D1); - u = BRep_Tool::Parameter(V2.IsSame(V3) ? V3 : V4, E2); - C2->D1(u, P, D2); - D1.Normalize(); D2.Normalize(); - if (Abs(D1*D2) + Precision::Angular() < 1.0) - continue; - } - // check distance at a couple of internal points - tol = Max(BRep_Tool::Tolerance(E1), - BRep_Tool::Tolerance(E2)); - GeomAdaptor_Curve AC1(C1); - Extrema.Initialize(AC1,f,l); - Standard_Boolean ok = Standard_True, hasMin = Standard_False; - BRep_Tool::Range( E2, f, l); - Standard_Integer i=1, nbi=3; - for (; iValue( f+(l-f)*i/nbi )); - Standard_Integer j=1, nbj=Extrema.NbExt(); - for (; j<=nbj && ok; ++j) { - if (Extrema.IsMin(j)) { - hasMin = Standard_True; - ok = Extrema.Value(j) <= tol; - } - } - } - if ( !hasMin || !ok) - continue; - } - // bind E2 to E1 in EEM - if (!EEM.IsBound(E1)) { - EEM.Bind (E1, emptyL); - AllEqMap.Add (E1); - } - EEM(E1).Append(E2); - AllEqMap.Add (E2); - } - } -} - -//======================================================================= -//function : MakeFaces -//purpose : split faces of S, return compound of new faces -//======================================================================= - -TopoDS_Shape Partition_Spliter::MakeFaces (const TopoDS_Shape& S) -{ - TopoDS_Compound C; - myBuilder.MakeCompound(C); - - TopTools_ListIteratorOfListOfShape itl, itNE; - - TopExp_Explorer exp(S,TopAbs_FACE); - for (; exp.More(); exp.Next()) { - - const TopoDS_Face& F = TopoDS::Face(exp.Current()); - - TopTools_ListOfShape LNF; - - if (myImagesFaces.HasImage( F )) { - myImagesFaces.LastImage( F, LNF ); - TopAbs_Orientation oriF = F.Orientation(); - for ( itl.Initialize( LNF ); itl.More(); itl.Next()) - itl.Value().Orientation( oriF ); - } - else { - - Partition_Loop2d loops; - loops.Init(F); - - TopTools_IndexedMapOfShape EM; - TopExp::MapShapes( F, TopAbs_EDGE, EM); - - TopTools_MapOfShape AddedEqualM, EqualSeamM; - Standard_Boolean needRebuild = Standard_False; - - // add splits to loops - - // LE: old edges + new not splitted edges - const TopTools_ListOfShape& LE = myAsDes->Descendant(F); - for (itl.Initialize(LE); itl.More(); itl.Next()) { - const TopoDS_Edge& E = TopoDS::Edge( itl.Value() ); - - Standard_Boolean isSectionE = myInter3d.IsSectionEdge(E); - Standard_Boolean isNewE = !EM.Contains( E ); - - // LSE: list of split edges - TopTools_ListOfShape LSE; - myImagesEdges.LastImage(E,LSE); // splits of E or E itself - - for (itNE.Initialize(LSE); itNE.More(); itNE.Next()) { - - TopoDS_Edge NE = TopoDS::Edge( itNE.Value() ); - Standard_Boolean isSameE = NE.IsSame ( E ); - - if ( isNewE || isSectionE || !isSameE) { - if (AddedEqualM.Contains( NE )) { - // a seam must be twice in a loop - if (!BRep_Tool::IsClosed( E, F ) || !EqualSeamM.Add( NE )) - continue; - } - - if (isNewE) { - if (isSectionE) { - if ( ! myInter3d.IsSplitOn( NE, E, F) ) - continue; - } - else { - TopoDS_Vertex V1,V2; - TopExp::Vertices(NE,V1,V2); - const TopTools_ListOfShape& EL1 = myAsDes->Ascendant(V1); - const TopTools_ListOfShape& EL2 = myAsDes->Ascendant(V2); - if ( EL1.Extent() < 2 && EL2.Extent() < 2 ) - continue; - } - } - else { - NE.Orientation( E.Orientation()); - if (!isSameE) { - // orient NE because it may be a split of other edge - Standard_Real f,l,u; - Handle(Geom_Curve) C3d = BRep_Tool::Curve( E,f,l ); - Handle(Geom_Curve) NC3d = BRep_Tool::Curve( NE,f,l); - if ( C3d != NC3d) { - gp_Vec D1, ND1; gp_Pnt P; - TopoDS_Vertex V = TopExp::FirstVertex(NE); - u = BRep_Tool::Parameter(V,NE); - NC3d->D1 (u, P, ND1); - u = BRep_Tool::Parameter(V,E); - C3d ->D1 (u, P, D1); - if (ND1.Dot(D1) < 0) - NE.Reverse(); - } - } - } - if (myEqualEdges.Contains( NE )) - AddedEqualM.Add( NE ); - - needRebuild = Standard_True; - } - - if (isNewE || isSectionE) - myNewSection.Add( NE ); - - if (isNewE) - loops.AddSectionEdge(NE); - else - loops.AddConstEdge(NE); - } - } - - //------------------- - // Build the faces. - //------------------- - - if (needRebuild) { - - loops.Perform(); - loops.WiresToFaces(myImagesEdges); - - LNF = loops.NewFaces(); - - myImagesFaces.Bind(F,LNF); - - // replace the result faces that have already been built - // during same domain faces reconstruction done earlier - if (myInter3d.HasSameDomainF( F )) - { - // build map edge to same domain faces: EFM - TopTools_IndexedDataMapOfShapeListOfShape EFM; - TopTools_MapOfShape SDFM; // avoid doubling - itl.Initialize( myInter3d.SameDomain( F )); - for (; itl.More(); itl.Next()) { - if ( !myImagesFaces.HasImage( itl.Value() )) - continue; - // loop on splits of a SD face - TopTools_ListIteratorOfListOfShape itNF; - itNF.Initialize (myImagesFaces.Image( itl.Value() )); - for ( ; itNF.More(); itNF.Next()) { - TopoDS_Shape SDF = itNF.Value(); - if (myImagesFaces.HasImage( SDF )) // already replaced - SDF = myImagesFaces.Image( SDF ).First(); - if (SDFM.Add (SDF)) - TopExp::MapShapesAndAncestors(SDF, TopAbs_EDGE, TopAbs_FACE, EFM); - } - } - // do replace faces in the LNF - TopTools_ListOfShape LOF; - if ( !EFM.IsEmpty() ) - itl.Initialize( LNF ); - while (itl.More()) { - const TopoDS_Shape& NF = itl.Value(); - TopExp_Explorer expE ( NF, TopAbs_EDGE ); - const TopoDS_Edge& E = TopoDS::Edge (expE.Current()); - if (EFM.Contains( E )) { - const TopTools_ListOfShape& SDFL = EFM.FindFromKey( E ); - TopoDS_Shape SDF = SDFL.First(); - Standard_Boolean GoodOri; - Standard_Real dot; - Partition_Loop3d::IsInside (E, TopoDS::Face(NF), TopoDS::Face(SDF), - 1, dot, GoodOri); - if (dot < 0) - { - // NF and SDF are on different side of E - if (SDFL.Extent() == 1) { - itl.Next(); - continue; - } - else - SDF = SDFL.Last(); // next face must be on the same side - } - gp_Vec V1 = Partition_Loop3d::Normal( E, TopoDS::Face( NF )); - gp_Vec V2 = Partition_Loop3d::Normal( E, TopoDS::Face( SDF )); - if (V1*V2 < 0) - SDF.Reverse(); - - if (!myImagesFaces.HasImage( NF )) - myImagesFaces.Bind( NF, SDF ); - - // mySharedFaces is used in FindFacesInside() - mySharedFaces.Add( SDF ); - - LOF.Prepend ( SDF ); - LNF.Remove (itl); - } - else - itl.Next(); - } - - LNF.Append (LOF); - } - } // if (needRebuild) - - else { - LNF.Append( F ); - myImagesFaces.Bind(F,LNF); - } - } // if (myImagesFaces.HasImage( F )) - - // fill the resulting compound - for (itl.Initialize(LNF); itl.More(); itl.Next()) - myBuilder.Add ( C, itl.Value()); - - } // loop on faces of S - - return C; -} - - -//======================================================================= -//function : Tri -//purpose : -//======================================================================= - -static void Tri(const TopoDS_Edge& E, - TopTools_SequenceOfShape& Seq, - const Partition_Inter3d & theInter3d) -{ - Standard_Boolean Invert = Standard_True; - Standard_Real U1,U2; - TopoDS_Vertex V1,V2; - - while (Invert) { - Invert = Standard_False; - for ( Standard_Integer i = 1; i < Seq.Length(); i++) { - - V1 = TopoDS::Vertex(Seq.Value(i)); - V2 = TopoDS::Vertex(Seq.Value(i+1)); - - V1.Orientation(TopAbs_INTERNAL); - V2.Orientation(TopAbs_INTERNAL); - - U1 = BRep_Tool::Parameter(V1,E); - U2 = BRep_Tool::Parameter(V2,E); - - if (IsEqual(U1,U2)) { - if (theInter3d.ReplaceSameDomainV( V1, E ).IsSame( V1 )) - Seq.Remove(i+1); // remove V2 - else - Seq.Remove(i); - i--; - continue; - } - if (U2 < U1) { - Seq.Exchange(i,i+1); - Invert = Standard_True; - } - } - } -} - -//======================================================================= -//function : MakeEdges -//purpose : cut E by vertices VOnE, return list of new edges NE -//======================================================================= - -void Partition_Spliter::MakeEdges (const TopoDS_Edge& E, - const TopTools_ListOfShape& VOnE, - TopTools_ListOfShape& NE ) const -{ - TopoDS_Edge WE = E; - WE.Orientation(TopAbs_FORWARD); - - Standard_Real U1,U2, f, l; - TopoDS_Vertex V1,V2,VF,VL; - - BRep_Tool::Range(WE,f,l); - TopExp::Vertices(WE,VF,VL); - - if (VOnE.Extent() < 3) { // do not rebuild not cut edge - if (( VF.IsSame( VOnE.First() ) && VL.IsSame( VOnE.Last() )) || - VL.IsSame( VOnE.First() ) && VF.IsSame( VOnE.Last() ) ) { - NE.Append( E ); - return; - } - } - - TopTools_SequenceOfShape SV; - TopTools_ListIteratorOfListOfShape itv(VOnE); - TopTools_MapOfOrientedShape VM( VOnE.Extent() ); - for (; itv.More(); itv.Next()) - if ( VM.Add( itv.Value() )) - SV.Append(itv.Value()); - - Tri( WE, SV, myInter3d ); - - if (SV.Length() < 3) { // do not rebuild not cut edge - if (( VF.IsSame( SV.First() ) && VL.IsSame( SV.Last() )) || - VL.IsSame( SV.First() ) && VF.IsSame( SV.Last() ) ) { - NE.Append( E ); - return; - } - } - - Standard_Integer iVer, NbVer = SV.Length(); - - - //---------------------------------------------------------------- - // Construction of the new edges . - //---------------------------------------------------------------- - - if (VF.IsSame(VL)) { // closed edge - if (NbVer==1) - SV.Append( SV.First() ); - else if (!SV.First().IsSame(SV.Last())) { - Standard_Boolean isFirst=0; - Standard_Real minDU = 1.e10; - TopoDS_Vertex endV = Partition_Inter2d::FindEndVertex(VOnE, f,l, E, isFirst,minDU); - if (endV.IsSame(SV.First())) - SV.Append(endV); - else if (endV.IsSame(SV.Last())) - SV.Prepend(endV); - else - MESSAGE ("END VERTEX IS IN SEQUNCE MIDDLE"); - } - NbVer = SV.Length(); - } - - for (iVer=1; iVer < NbVer; iVer++) { - V1 = TopoDS::Vertex(SV(iVer)); - V2 = TopoDS::Vertex(SV(iVer+1)); - - TopoDS_Shape NewEdge = WE.EmptyCopied(); - V1.Orientation(TopAbs_FORWARD); - myBuilder.Add (NewEdge,V1); - V2.Orientation(TopAbs_REVERSED); - myBuilder.Add (NewEdge,V2); - - if (iVer==1) - U1 = f; - else { - V1.Orientation(TopAbs_INTERNAL); - U1=BRep_Tool::Parameter(V1,WE); - } - if (iVer+1 == NbVer) - U2 = l; - else { - V2.Orientation(TopAbs_INTERNAL); - U2=BRep_Tool::Parameter(V2,WE); - } - if (Abs(U1-U2) <= Precision::PConfusion()) { - MESSAGE( "MakeEdges(), EQUAL PARAMETERS OF DIFFERENT VERTICES"); - continue; - } - TopoDS_Edge EE=TopoDS::Edge(NewEdge); - myBuilder.Range (EE,U1,U2); - - TopoDS_Edge NEdge = TopoDS::Edge(NewEdge); - myBuilder.SameParameter(NEdge,Standard_False); - - Standard_Real tol = 1.0e-2; - Standard_Boolean flag = BRep_Tool::SameParameter(NEdge); - if (!flag) { - BRepLib::SameParameter(NEdge,tol); - } - NE.Append(NEdge.Oriented(E.Orientation())); - } -} - -//======================================================================= -//function : MergeEqualEdges -//purpose : find equal edges, choose ones to keep and make -// them have pcurves on all faces they are shared by -//======================================================================= - -void Partition_Spliter::MergeEqualEdges (const TopTools_ListOfShape& LSE) -{ - // find equal edges - // map: edge - equal edges - TopTools_DataMapOfShapeListOfShape EEM( LSE.Extent() ); - findEqual (LSE, LSE, 0, EEM, myEqualEdges); - - TopTools_ListOfShape EEL; // list of equal edges - TopTools_DataMapIteratorOfDataMapOfShapeListOfShape itM (EEM); - for ( ; itM.More(); itM.Next()) { - EEL = itM.Value(); - EEL.Append( itM.Key() ); - - // choose an edge to keep, section edges have priority - TopoDS_Edge EKeep; - TopTools_ListIteratorOfListOfShape itEE (EEL); - for (; itEE.More(); itEE.Next()) { - EKeep = TopoDS::Edge( itEE.Value() ); - const TopoDS_Edge& EKeepOrig = TopoDS::Edge( myImagesEdges.Root( EKeep )); - if (myInter3d.IsSectionEdge( EKeepOrig )) - break; - } - - // update edge images and build pcurves - Standard_Real f,l, tol; - for (itEE.Initialize (EEL); itEE.More(); itEE.Next()) { - const TopoDS_Edge& E = TopoDS::Edge( itEE.Value() ); - if ( E.IsSame( EKeep )) - continue; - - // 1. build pcurves of the kept edge on faces where replaced edges exist - const TopoDS_Edge& EReplOrig = TopoDS::Edge( myImagesEdges.Root( E )); - TopTools_ListOfShape FL; - FL = myAsDes->Ascendant( EReplOrig ); - Standard_Integer iFace, iFirstSectionFace = FL.Extent() + 1; - // add faces where the replaced edge is a section edge - if (myInter3d.IsSectionEdge( EReplOrig )) { - TopTools_ListIteratorOfListOfShape seIt; - seIt.Initialize( myInter3d.SectionEdgeFaces ( EReplOrig )); - for ( ; seIt.More(); seIt.Next()) - FL.Append( seIt.Value() ); - } - // loop on faces - TopTools_ListIteratorOfListOfShape itF (FL); - for ( iFace = 1 ; itF.More(); itF.Next(), ++iFace ) { - const TopoDS_Face& F = TopoDS::Face( itF.Value()); - - Handle(Geom2d_Curve) pc = BRep_Tool::CurveOnSurface( EKeep, F, f,l); - if (pc.IsNull()) { - Handle(Geom_Curve) C3d = BRep_Tool::Curve( EKeep, f, l); - C3d = new Geom_TrimmedCurve( C3d, f,l); - pc = TopOpeBRepTool_CurveTool::MakePCurveOnFace (F,C3d,tol); - if (pc.IsNull()) { - MESSAGE (" CANT BUILD PCURVE "); - } - myBuilder.UpdateEdge( EKeep, pc, F, tol); - } - - if (iFace >= iFirstSectionFace || - !BRep_Tool::IsClosed( EReplOrig, F )) - continue; - - // build the second pcurve for a seam - TopoDS_Vertex V = TopExp::FirstVertex( EKeep ); - Standard_Real Ukeep = BRep_Tool::Parameter( V, EKeep ); - Standard_Real Urepl = BRep_Tool::Parameter( V, E ); - - TopoDS_Edge EReplRev = E; - EReplRev.Reverse(); - Handle(Geom2d_Curve) pcRepl1 = BRep_Tool::CurveOnSurface( E, F, f,l); - Handle(Geom2d_Curve) pcRepl2 = BRep_Tool::CurveOnSurface( EReplRev, F, f,l); - - gp_Pnt2d p1r, p2r, pk; - p1r = pcRepl1->Value( Urepl ); - p2r = pcRepl2->Value( Urepl ); - pk = pc->Value( Ukeep ); - - // suppose that pk is equal to either p1r or p2r - Standard_Boolean isUPeriod = - ( Abs( p1r.X() - p2r.X() ) > Abs( p1r.Y() - p2r.Y() )); - Standard_Boolean is1Equal; - if (isUPeriod) - is1Equal = ( Abs( p1r.X() - pk.X() ) < Abs( p2r.X() - pk.X() )); - else - is1Equal = ( Abs( p1r.Y() - pk.Y() ) < Abs( p2r.Y() - pk.Y() )); - - Handle(Geom2d_Curve) pc2 = Handle(Geom2d_Curve)::DownCast - ( pc->Translated( pk, is1Equal ? p2r : p1r ) ); - - if (E.Orientation() == TopAbs_REVERSED) - is1Equal = !is1Equal; - - if (is1Equal) - myBuilder.UpdateEdge( EKeep, pc, pc2, F, tol); - else - myBuilder.UpdateEdge( EKeep, pc2, pc, F, tol); - - } // loop on a Faces where a replaced edge exists - - - // 2. update edge images according to replacement - if (myImagesEdges.HasImage( E )) - myImagesEdges.Remove( E ); - myImagesEdges.Bind( E, EKeep ); - - } // loop on a list of equal edges EEL - } // loop on a map of equal edges EEM -} - -//======================================================================= -//function : KeepShapesInside -//purpose : remove shapes that are outside of S from resul -//======================================================================= - -void Partition_Spliter::KeepShapesInside (const TopoDS_Shape& S) -{ - TopoDS_Iterator it; - if (S.ShapeType() < TopAbs_SOLID) { // compound or compsolid - for (it.Initialize( S ); it.More(); it.Next()) - KeepShapesInside( it.Value()); - return; - } - - Standard_Boolean isTool = Standard_False; - if (!myImageShape.HasImage( S )) { - isTool = CheckTool( S ); - if (!isTool) return; - } - - // build map of internal faces - TopTools_IndexedMapOfShape MIF; - TopoDS_Shape IntFacesComp = FindFacesInside( S, Standard_False, Standard_True); - TopExp::MapShapes( IntFacesComp, TopAbs_FACE, MIF ); - - TopoDS_Compound C; - myBuilder.MakeCompound(C); - - TopAbs_ShapeEnum anInternalShapeType = TopAbs_SHAPE; - if (!MIF.IsEmpty()) - { - // leave in the result only those shapes having a face in MIF - for (it.Initialize( myShape ); it.More(); it.Next()) { - const TopoDS_Shape & aResShape = it.Value(); - TopExp_Explorer expResF( aResShape, TopAbs_FACE ); - for (; expResF.More(); expResF.Next()) { - if ( MIF.Contains( expResF.Current())) { - myBuilder.Add( C, aResShape ); - if (aResShape.ShapeType() < anInternalShapeType) - anInternalShapeType = aResShape.ShapeType(); - break; - } - } - } - } - - // may be S was not split by internal faces then it is missing - // in myShape, add it - if (!isTool && - (anInternalShapeType > TopAbs_SOLID || S.ShapeType() > TopAbs_SOLID)) - { - TopTools_IndexedMapOfShape MSF; // map of split faces of S - TopExp::MapShapes( myImageShape.Image(S).First(), TopAbs_FACE, MSF); - - // find a shape having all faces in MSF - for (it.Initialize( myShape ); it.More(); it.Next()) { - TopExp_Explorer expResF( it.Value(), TopAbs_FACE ); - for (; expResF.More(); expResF.Next()) { - if (! MSF.Contains( expResF.Current())) - break; - } - if (! expResF.More()) { - myBuilder.Add( C, it.Value() ); - break; - } - } - } - - myShape = C; -} - -//======================================================================= -//function : RemoveShapesInside -//purpose : remove shapes that are inside S from resul -//======================================================================= - -void Partition_Spliter::RemoveShapesInside (const TopoDS_Shape& S) -{ - TopoDS_Iterator it; - if (S.ShapeType() < TopAbs_SOLID) { // compound or compsolid - for (it.Initialize( S ); it.More(); it.Next()) - RemoveShapesInside( it.Value()); - return; - } - Standard_Boolean isTool = Standard_False; - if (!myImageShape.HasImage( S )) { - isTool = CheckTool( S ); - if (!isTool) return; - } - - TopoDS_Shape IntFacesComp = FindFacesInside( S, Standard_False, Standard_True); - TopTools_IndexedMapOfShape MIF; // map of internal faces - TopExp::MapShapes( IntFacesComp, TopAbs_FACE, MIF); - - if (MIF.IsEmpty()) return; - - // add to MIF split faces of S - if (myImageShape.HasImage(S)) - TopExp::MapShapes( myImageShape.Image(S).First(), TopAbs_FACE, MIF); - - // leave in the result only those shapes not having all face in MIF - - TopoDS_Compound C; - myBuilder.MakeCompound(C); - - // RMF : faces of removed shapes that encounter once - TopTools_MapOfShape RFM; - - for (it.Initialize( myShape ); it.More(); it.Next()) { - - TopExp_Explorer expResF( it.Value(), TopAbs_FACE ); - for (; expResF.More(); expResF.Next()) - if (!MIF.Contains( expResF.Current())) - break; - - if (expResF.More()) - // add shape to result - myBuilder.Add( C, it.Value() ); - else - // add faces of a removed shape to RFM - for (expResF.ReInit(); expResF.More(); expResF.Next()) { - const TopoDS_Shape& F = expResF.Current(); - if ( ! RFM.Remove ( F )) - RFM.Add( F ); - } - } - - if (!isTool) { - - // rebuild S, it must remain in the result - - Standard_Boolean isClosed = Standard_False; - switch (S.ShapeType()) { - case TopAbs_SOLID : - isClosed = Standard_True; break; - case TopAbs_SHELL: { - TopTools_IndexedDataMapOfShapeListOfShape MEF; - TopExp::MapShapesAndAncestors(S, TopAbs_EDGE, TopAbs_FACE, MEF); - Standard_Integer i; - for (i=1; isClosed && i<=MEF.Extent(); ++i) - isClosed = ( MEF(i).Extent() != 1 ); - break; - } - default: - isClosed = Standard_False; - } - if (isClosed) { - - // add to a new shape external faces of removed shapes, ie those in RFM - - TopoDS_Shell Shell; - myBuilder.MakeShell( Shell ); - - // exclude redundant internal face with edges encounterd only once - TopTools_IndexedDataMapOfShapeListOfShape MEF; - TopTools_MapIteratorOfMapOfShape itF (RFM); - for ( ; itF.More(); itF.Next()) - TopExp::MapShapesAndAncestors(itF.Key(), TopAbs_EDGE, TopAbs_FACE, MEF); - - // add only faces forming a closed shell - for (itF.Reset() ; itF.More(); itF.Next()) - { - TopExp_Explorer expE (itF.Key(), TopAbs_EDGE); - for (; expE.More(); expE.Next()) - if (MEF.FindFromKey(expE.Current()).Extent() == 1) - break; - if (!expE.More()) - myBuilder.Add( Shell, itF.Key()); - } - - if (S.ShapeType() == TopAbs_SOLID) { - TopoDS_Solid Solid; - myBuilder.MakeSolid( Solid ); - myBuilder.Add (Solid, Shell); - myBuilder.Add (C, Solid); - } - else - myBuilder.Add (C, Shell); - } - else { - if (myImageShape.HasImage( S )) { - for (it.Initialize( myImageShape.Image(S).First()); it.More(); it.Next()) - myBuilder.Add (C, it.Value()); - } - } - } - - myShape = C; -} - -//======================================================================= -//function : CheckTool -//purpose : Return True if is a tool shape. Prepare tool -// faces of for the search of internal faces. -//======================================================================= - -Standard_Boolean Partition_Spliter::CheckTool(const TopoDS_Shape& S) -{ - // suppose S has not an image - - Standard_Boolean isTool = Standard_False; - TopoDS_Compound C; - myBuilder.MakeCompound( C ); - - TopExp_Explorer expF( S, TopAbs_FACE); - for (; expF.More(); expF.Next()) { - - const TopoDS_Face& F = TopoDS::Face( expF.Current() ); - if (myMapTools.Contains( F )) - isTool = Standard_True; - else - continue; - - if (myImagesFaces.HasImage( F )) { - // F has been reconstructed - TopAbs_Orientation Fori = F.Orientation(); - TopTools_ListOfShape LNF; - myImagesFaces.LastImage( F, LNF); - TopTools_ListIteratorOfListOfShape itF (LNF); - for ( ; itF.More(); itF.Next()) - myBuilder.Add( C, itF.Value().Oriented(Fori) ); - continue; - } - - Standard_Boolean hasSectionE = myInter3d.HasSectionEdge( F ); - Standard_Boolean hasNewE = myAsDes->HasDescendant( F ); - if (!hasSectionE && !hasNewE) - { - // F intersects nothing - myBuilder.Add( C, F ); - continue; - } - - // make an image for F - - TopoDS_Face NF = F; - NF.Orientation(TopAbs_FORWARD); - NF = TopoDS::Face( NF.EmptyCopied() ); // make a copy - TopoDS_Wire NW; - myBuilder.MakeWire( NW ); - - // add edges, as less as possible - TopTools_ListOfShape NEL; - TopTools_ListIteratorOfListOfShape itNE; - if (hasSectionE) { - // add section edges - TopExp_Explorer expE; - for ( ; expE.More(); expE.Next()) { - if (! myImagesEdges.HasImage( expE.Current() )) - continue; - myImagesEdges.LastImage( expE.Current(), NEL ); - for ( itNE.Initialize( NEL ); itNE.More(); itNE.Next()) - myBuilder.Add ( NW, itNE.Value()); - } - } - if (hasNewE) { - // add new adges - NEL = myAsDes->Descendant( F ); - for ( itNE.Initialize( NEL ); itNE.More(); itNE.Next()) { - TopTools_ListOfShape SEL; // splits - myImagesEdges.LastImage( itNE.Value(), SEL ); - TopTools_ListIteratorOfListOfShape itSE (SEL); - for ( ; itSE.More(); itSE.Next()) - myBuilder.Add ( NW, itSE.Value()); - } - } - myBuilder.Add( NF, NW ); - myBuilder.Add (C, NF); - - NF.Orientation( F.Orientation() ); // NF is most probably invalid - myImagesFaces.Bind (F, NF); - } - if (isTool) - myImageShape.Bind (S, C); - - return isTool; -} - -//======================================================================= -//function : IsInside -//purpose : Return True if the first vertex of S1 inside S2. -// If S1.IsNull(), check infinite point against S2. -//======================================================================= - -Standard_Boolean Partition_Spliter::IsInside (const TopoDS_Shape& theS1, - const TopoDS_Shape& theS2) -{ - BRepClass3d_SolidClassifier aClassifier( theS2 ); - - TopExp_Explorer expl( theS1, TopAbs_VERTEX ); - if (!expl.More()) - aClassifier.PerformInfinitePoint( ::RealSmall()); - else - { - const TopoDS_Vertex & aVertex = TopoDS::Vertex( expl.Current() ); - aClassifier.Perform (BRep_Tool::Pnt( aVertex ), - BRep_Tool::Tolerance( aVertex )); - } - - return ( aClassifier.State() == TopAbs_IN ); -} - -//======================================================================= -//function : GetOriginalShape -//purpose : Return the shape aShape originates from. aShape -// should be a face or more complex result shape -//======================================================================= - -TopoDS_Shape Partition_Spliter::GetOriginalShape(const TopoDS_Shape& theShape) const -{ - TopoDS_Shape anOrigShape; - - TopExp_Explorer expl( theShape, TopAbs_FACE); - if (expl.More()) - { - - TopoDS_Shape aFace = expl.Current(); - if (myImagesFaces.IsImage( aFace )) - aFace = myImagesFaces.Root( aFace ); - anOrigShape = myFaceShapeMap.Find( aFace ); - } - return anOrigShape; -} - -//======================================================================= -//function : FindToolsToReconstruct -//purpose : find and store as objects tools which interfere -// with solids or are inside solids without -// an interference -//======================================================================= - -void Partition_Spliter::FindToolsToReconstruct() -{ - if (myMapTools.IsEmpty()) - return; - - Standard_Integer nbFoundTools = 0; - - // build edge - face map in order to detect interference with section edges - TopTools_IndexedDataMapOfShapeListOfShape EFM; - TopTools_MapIteratorOfMapOfShape aMapIt; - for (aMapIt.Initialize(myMapTools); aMapIt.More(); aMapIt.Next()) - TopExp::MapShapesAndAncestors( aMapIt.Key(), TopAbs_EDGE, TopAbs_FACE, EFM); - for (aMapIt.Initialize(myMapFaces); aMapIt.More(); aMapIt.Next()) - TopExp::MapShapesAndAncestors( aMapIt.Key(), TopAbs_EDGE, TopAbs_FACE, EFM); - - TopTools_MapOfShape aCurrentSolids, aCheckedShapes; - - // faces cut by new edges - TopTools_MapOfShape & aSectionFaces = myInter3d.TouchedFaces(); - - // keep solids interfering with each other in aCurrentSolids map - // and add tool faces intersecting solids as object shapes - - TopTools_ListIteratorOfListOfShape itS, itF, itCF, itE; - for (itS.Initialize( myListShapes ); itS.More(); itS.Next()) { - TopExp_Explorer expSo (itS.Value(), TopAbs_SOLID); - for (; expSo.More(); expSo.Next()) { - - // check if a solid has been already processed - const TopoDS_Shape & aSo = expSo.Current(); - if (!aCheckedShapes.Add( aSo )) - continue; - aCurrentSolids.Add( aSo ); - - // faces to check - TopTools_ListOfShape aFacesToCheck; - TopExp_Explorer exp( aSo, TopAbs_FACE ); - for ( ; exp.More(); exp.Next()) - aFacesToCheck.Append ( exp.Current()); - - // add other shapes interefering with a solid. - // iterate faces to check while appending new ones - for (itCF.Initialize (aFacesToCheck) ; itCF.More(); itCF.Next()) - { - const TopoDS_Shape& aCheckFace = itCF.Value(); -// if (!aCheckedShapes.Add( aCheckFace )) -// continue; - - // find faces interfering with aCheckFace - TopTools_ListOfShape anIntFaces; - - // ** 1. faces intersecting aCheckFace with creation of new edges on it - if ( myAsDes->HasDescendant( aCheckFace )) - { - // new edges on aCheckFace - const TopTools_ListOfShape& NEL = myAsDes->Descendant( aCheckFace ); - for (itE.Initialize( NEL); itE.More(); itE.Next()) - { - const TopoDS_Shape & aNewEdge = itE.Value(); - if (!aCheckedShapes.Add( aNewEdge )) - continue; - - // faces interfering by aNewEdge - itF.Initialize (myAsDes->Ascendant( aNewEdge )); - for (; itF.More(); itF.Next()) - if (aCheckFace != itF.Value()) - anIntFaces.Append( itF.Value() ); - - // ** 2. faces having section edge aNewEdge on aFacesToCheck - if (EFM.Contains( aNewEdge)) - { - itF.Initialize ( EFM.FindFromKey (itE.Value())); - for (; itF.More(); itF.Next()) - if (aCheckFace != itF.Value()) - anIntFaces.Append( itF.Value() ); - } - } - } - - // ** 3. faces cut by edges of aCheckFace - TopExp_Explorer expE (aCheckFace, TopAbs_EDGE); - for ( ; expE.More(); expE.Next()) - { - const TopoDS_Shape & aCheckEdge = expE.Current(); - if (aCheckedShapes.Add( aCheckEdge ) && - myInter3d.IsSectionEdge( TopoDS::Edge( aCheckEdge ))) - { - itF.Initialize( myInter3d.SectionEdgeFaces( TopoDS::Edge( aCheckEdge ))); - for (; itF.More(); itF.Next()) - if (aCheckFace != itF.Value()) - anIntFaces.Append( itF.Value() ); - } - } - - // process faces interfering with aCheckFace and shapes they - // belong to - for (itF.Initialize (anIntFaces); itF.More(); itF.Next()) - { - const TopoDS_Shape & F = itF.Value(); - if (! aCheckedShapes.Add( F )) - continue; - - Standard_Boolean isTool = myMapTools.Contains( F ); - if (isTool && - myFaceShapeMap( aCheckFace ).ShapeType() == TopAbs_SOLID ) - { - // a tool interfering with a solid - if (aSectionFaces.Contains( F )) - AddShape( F ); - ++ nbFoundTools; - if (nbFoundTools == myMapTools.Extent()) - return; - } - - const TopoDS_Shape & S = myFaceShapeMap( F ); - if (aCheckedShapes.Add( S )) - { - // a new shape interefering with aCurrentSolids is found - if (!isTool && S.ShapeType() == TopAbs_SOLID) - aCurrentSolids.Add ( S ); - // add faces to aFacesToCheck list - for ( exp.Init( S, TopAbs_FACE ); exp.More(); exp.Next()) - aFacesToCheck.Append ( exp.Current() ); - } - } - } // loop on aFacesToCheck - - // Here aCurrentSolids contains all solids interfering with each other. - // aCheckedShapes contains all faces belonging to shapes included - // in or interfering with aCurrentSolids or previously checked solids. - // Test if tool faces that do not interefere with other shapes are - // wrapped by any of aCurrentSolids - - TopTools_MapIteratorOfMapOfShape aSolidIt (aCurrentSolids); - for ( ; aSolidIt.More(); aSolidIt.Next()) - { - const TopoDS_Shape & aSolid = aSolidIt.Key(); - TopTools_MapOfShape aCheckedTools( myMapTools.Extent() ); - - TopTools_MapIteratorOfMapOfShape aToolIt (myMapTools); - for ( ; aToolIt.More(); aToolIt.Next()) - { - const TopoDS_Shape & aToolFace = aToolIt.Key(); - if (aCheckedShapes.Contains( aToolFace ) || // already found - aCheckedTools.Contains( aToolFace )) // checked against aSolid - continue; - - const TopoDS_Shape & aToolShape = myFaceShapeMap( aToolFace ); - TopExp_Explorer aToolFaceIt( aToolShape, TopAbs_FACE ); - - Standard_Boolean isInside = IsInside( aToolShape, aSolid ); - for ( ; aToolFaceIt.More(); aToolFaceIt.Next() ) - { - const TopoDS_Shape & aTool = aToolFaceIt.Current(); - aCheckedTools.Add( aTool ); - if (isInside) - { - if (aSectionFaces.Contains( aTool )) - AddShape( aTool ); - ++ nbFoundTools; - if (nbFoundTools == myMapTools.Extent()) - return; - aCheckedShapes.Add( aTool ); - } - } - } - } - - } // loop on solid shapes - } -} diff --git a/src/PARTITION/Partition_Spliter.hxx b/src/PARTITION/Partition_Spliter.hxx deleted file mode 100644 index 2f9e102bb..000000000 --- a/src/PARTITION/Partition_Spliter.hxx +++ /dev/null @@ -1,150 +0,0 @@ -// GEOM PARTITION : partition algorithm -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : Partition_Spliter.hxx -// Module : GEOM - -#ifndef _Partition_Spliter_HeaderFile -#define _Partition_Spliter_HeaderFile - -#ifndef _TopAbs_ShapeEnum_HeaderFile -#include -#endif -#ifndef _TopoDS_Compound_HeaderFile -#include -#endif -#ifndef _BRep_Builder_HeaderFile -#include -#endif -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _TopTools_MapOfShape_HeaderFile -#include -#endif -#ifndef _TopTools_DataMapOfShapeShape_HeaderFile -#include -#endif -#ifndef _Handle_BRepAlgo_AsDes_HeaderFile -#include -#endif -#ifndef _BRepAlgo_Image_HeaderFile -#include -#endif -#ifndef _Partition_Inter3d_HeaderFile -#include "Partition_Inter3d.hxx" -#endif -#ifndef _TopTools_MapOfOrientedShape_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class BRepAlgo_AsDes; -class TopoDS_Shape; -class TopTools_ListOfShape; -class TopoDS_Edge; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class Partition_Spliter { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT Partition_Spliter(); -Standard_EXPORT void AddShape(const TopoDS_Shape& S) ; -Standard_EXPORT void AddTool(const TopoDS_Shape& S) ; -Standard_EXPORT void Compute(const TopAbs_ShapeEnum Limit = TopAbs_SHAPE) ; -Standard_EXPORT void KeepShapesInside(const TopoDS_Shape& S) ; -Standard_EXPORT void RemoveShapesInside(const TopoDS_Shape& S) ; -Standard_EXPORT TopoDS_Shape Shape() const; -Standard_EXPORT void Clear() ; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // -Standard_EXPORT void MakeSolids(const TopoDS_Shape& Solid,TopTools_ListOfShape& Shells) ; -Standard_EXPORT void MakeShells(const TopoDS_Shape& S,TopTools_ListOfShape& NS) ; -Standard_EXPORT TopoDS_Shape MakeFaces(const TopoDS_Shape& S) ; -Standard_EXPORT void MakeEdges(const TopoDS_Edge& E,const TopTools_ListOfShape& VOnE,TopTools_ListOfShape& NE) const; -Standard_EXPORT TopoDS_Shape FindFacesInside(const TopoDS_Shape& S,const Standard_Boolean CheckClosed = Standard_False,const Standard_Boolean All = Standard_False) ; -Standard_EXPORT Standard_Boolean CheckTool(const TopoDS_Shape& S) ; -Standard_EXPORT void MergeEqualEdges(const TopTools_ListOfShape& LE) ; -Standard_EXPORT static Standard_Boolean IsInside(const TopoDS_Shape& S1,const TopoDS_Shape& S2) ; -Standard_EXPORT TopoDS_Shape GetOriginalShape(const TopoDS_Shape& aShape) const; -Standard_EXPORT void FindToolsToReconstruct() ; - - - // Fields PRIVATE - // -TopAbs_ShapeEnum myDoneStep; -TopoDS_Compound myShape; -BRep_Builder myBuilder; -TopTools_ListOfShape myListShapes; -TopTools_MapOfShape myMapFaces; -TopTools_MapOfShape myMapTools; -TopTools_MapOfShape myEqualEdges; -TopTools_MapOfShape myNewSection; -TopTools_MapOfShape myClosedShapes; -TopTools_MapOfShape mySharedFaces; -TopTools_MapOfShape myWrappingSolid; -TopTools_DataMapOfShapeShape myFaceShapeMap; -TopTools_DataMapOfShapeShape myInternalFaces; -TopTools_DataMapOfShapeShape myIntNotClFaces; -Handle_BRepAlgo_AsDes myAsDes; -BRepAlgo_Image myImagesFaces; -BRepAlgo_Image myImagesEdges; -BRepAlgo_Image myImageShape; -Partition_Inter3d myInter3d; -TopTools_MapOfOrientedShape myAddedFacesMap; - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/PARTITION/Partition_Spliter.ixx b/src/PARTITION/Partition_Spliter.ixx deleted file mode 100644 index ee8259468..000000000 --- a/src/PARTITION/Partition_Spliter.ixx +++ /dev/null @@ -1,31 +0,0 @@ -// GEOM PARTITION : partition algorithm -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : Partition_Spliter.ixx -// Module : GEOM - -#include "Partition_Spliter.jxx" - - - - diff --git a/src/PARTITION/Partition_Spliter.jxx b/src/PARTITION/Partition_Spliter.jxx deleted file mode 100644 index bf8622c93..000000000 --- a/src/PARTITION/Partition_Spliter.jxx +++ /dev/null @@ -1,41 +0,0 @@ -// GEOM PARTITION : partition algorithm -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : Partition_Spliter.jxx -// Module : GEOM - -#ifndef _BRepAlgo_AsDes_HeaderFile -#include -#endif -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _TopoDS_Edge_HeaderFile -#include -#endif -#ifndef _Partition_Spliter_HeaderFile -#include "Partition_Spliter.hxx" -#endif diff --git a/src/PrimitiveGUI/Makefile.in b/src/PrimitiveGUI/Makefile.in deleted file mode 100644 index deac5e77e..000000000 --- a/src/PrimitiveGUI/Makefile.in +++ /dev/null @@ -1,68 +0,0 @@ -# GEOM PRIMITIVEGUI : -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Author : Damien COQUERET (OCC) -# Module : GEOM -# $Header: - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -# header files -EXPORT_HEADERS= - -# Libraries targets -LIB = libPrimitiveGUI.la - -LIB_SRC = PrimitiveGUI.cxx \ - PrimitiveGUI_BoxDlg.cxx \ - PrimitiveGUI_CylinderDlg.cxx \ - PrimitiveGUI_SphereDlg.cxx \ - PrimitiveGUI_TorusDlg.cxx \ - PrimitiveGUI_ConeDlg.cxx - -LIB_MOC = \ - PrimitiveGUI_BoxDlg.h \ - PrimitiveGUI_CylinderDlg.h \ - PrimitiveGUI_SphereDlg.h \ - PrimitiveGUI_TorusDlg.h \ - PrimitiveGUI_ConeDlg.h - -LIB_CLIENT_IDL = SALOME_GenericObj.idl SALOME_Component.idl SALOME_Exception.idl - -LIB_SERVER_IDL = - -# additionnal information to compil and link file - -CPPFLAGS += $(QT_INCLUDES) $(VTK_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES) $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome -CXXFLAGS += -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome - -LDFLAGS += -lGEOMFiltersSelection -lGEOMBase - -@CONCLUDE@ diff --git a/src/PrimitiveGUI/PrimitiveGUI.cxx b/src/PrimitiveGUI/PrimitiveGUI.cxx deleted file mode 100644 index 49448108f..000000000 --- a/src/PrimitiveGUI/PrimitiveGUI.cxx +++ /dev/null @@ -1,138 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : PrimitiveGUI.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header$ - - -#include "PrimitiveGUI.h" -#include "GeometryGUI.h" - -#include "SUIT_Session.h" -#include "SUIT_Desktop.h" - -#include "PrimitiveGUI_BoxDlg.h" // Method BOX -#include "PrimitiveGUI_CylinderDlg.h" // Method CYLINDER -#include "PrimitiveGUI_SphereDlg.h" // Method SPHERE -#include "PrimitiveGUI_TorusDlg.h" // Method TORUS -#include "PrimitiveGUI_ConeDlg.h" // Method CONE -using namespace std; -PrimitiveGUI* PrimitiveGUI::myGUIObject = 0; - -//======================================================================= -// function : GetPrimitiveGUI() -// purpose : Get the only PrimitiveGUI object [ static ] -//======================================================================= -PrimitiveGUI* PrimitiveGUI::GetPrimitiveGUI( GeometryGUI* parent ) -{ - if ( myGUIObject == 0 ) { - // init PrimitiveGUI only once - myGUIObject = new PrimitiveGUI( parent ); - } - return myGUIObject; -} - -//======================================================================= -// function : PrimitiveGUI() -// purpose : Constructor -//======================================================================= -PrimitiveGUI::PrimitiveGUI(GeometryGUI* parent) : GEOMGUI(parent) -{ -} - - -//======================================================================= -// function : ~PrimitiveGUI -// purpose : Destructor -//======================================================================= -PrimitiveGUI::~PrimitiveGUI() -{ -} - - -//======================================================================= -// function : OnGUIEvent() -// purpose : -//======================================================================= -bool PrimitiveGUI::OnGUIEvent(int theCommandID, SUIT_Desktop* parent) -{ - getGeometryGUI()->EmitSignalDeactivateDialog(); - - QDialog* aDlg = NULL; - - switch (theCommandID) - { - case 4021: // BOX - { - aDlg = new PrimitiveGUI_BoxDlg(getGeometryGUI(), parent, ""); - break; - } - case 4022: // CYLINDER - { - aDlg = new PrimitiveGUI_CylinderDlg(getGeometryGUI(), parent, ""); - break; - } - case 4023: // SPHERE - { - aDlg = new PrimitiveGUI_SphereDlg(getGeometryGUI(), parent, ""); - break; - } - case 4024: // TORUS - { - aDlg = new PrimitiveGUI_TorusDlg(getGeometryGUI(), parent, ""); - break; - } - case 4025: // CONE - { - aDlg = new PrimitiveGUI_ConeDlg(getGeometryGUI(), parent, ""); - break; - } - default: - { - SUIT_Session::session()->activeApplication()->putInfo(tr("GEOM_PRP_COMMAND").arg(theCommandID)); - break; - } - } - - if ( aDlg != NULL ) - aDlg->show(); - - return true; -} - - -//===================================================================================== -// EXPORTED METHODS -//===================================================================================== -extern "C" -{ -#ifdef WNT - __declspec( dllexport ) -#endif - GEOMGUI* GetLibGUI( GeometryGUI* parent ) - { - return PrimitiveGUI::GetPrimitiveGUI( parent ); - } -} diff --git a/src/PrimitiveGUI/PrimitiveGUI.h b/src/PrimitiveGUI/PrimitiveGUI.h deleted file mode 100644 index ce0b00d77..000000000 --- a/src/PrimitiveGUI/PrimitiveGUI.h +++ /dev/null @@ -1,56 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : PrimitiveGUI.h -// Author : Damien COQUERET -// Module : GEOM -// $Header$ - -#ifndef PRIMITIVEGUI_H -#define PRIMITIVEGUI_H - -#include "GEOMGUI.h" - - -//================================================================================= -// class : PrimitiveGUI -// purpose : -//================================================================================= -class PrimitiveGUI : public GEOMGUI -{ -protected: - PrimitiveGUI(GeometryGUI* parent); // hide constructor to avoid direct creation - -public : - ~PrimitiveGUI(); - - // Get the only PrimitiveGUI object - static PrimitiveGUI* GetPrimitiveGUI(GeometryGUI* parent); - - bool OnGUIEvent(int theCommandID, SUIT_Desktop* parent); - -private: - static PrimitiveGUI* myGUIObject; // the only PrimitiveGUI object -}; - -#endif diff --git a/src/PrimitiveGUI/PrimitiveGUI_BoxDlg.cxx b/src/PrimitiveGUI/PrimitiveGUI_BoxDlg.cxx deleted file mode 100644 index 6ad4bbc87..000000000 --- a/src/PrimitiveGUI/PrimitiveGUI_BoxDlg.cxx +++ /dev/null @@ -1,412 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : PrimitiveGUI_BoxDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "PrimitiveGUI_BoxDlg.h" - -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include - -#include "GEOMImpl_Types.hxx" - -#include "utilities.h" - -using namespace std; - - -//================================================================================= -// class : PrimitiveGUI_BoxDlg() -// purpose : Constructs a PrimitiveGUI_BoxDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -PrimitiveGUI_BoxDlg::PrimitiveGUI_BoxDlg(GeometryGUI* theGeometryGUI, QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu), myGeometryGUI(theGeometryGUI) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM", tr("ICON_DLG_BOX_2P"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM", tr("ICON_DLG_BOX_DXYZ"))); - QPixmap image2(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM", tr("ICON_SELECT"))); - - setCaption(tr("GEOM_BOX_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_BOX")); - RadioButton1->setPixmap(image0); - RadioButton2->setPixmap(image1); - RadioButton3->close(TRUE); - - GroupPoints = new DlgRef_2Sel_QTD(this, "GroupPoints"); - GroupPoints->GroupBox1->setTitle(tr("GEOM_DIAGONAL_POINTS")); - GroupPoints->TextLabel1->setText(tr("GEOM_POINT_I").arg("1")); - GroupPoints->TextLabel2->setText(tr("GEOM_POINT_I").arg("2")); - GroupPoints->PushButton1->setPixmap(image2); - GroupPoints->PushButton2->setPixmap(image2); - - GroupDimensions = new DlgRef_3Spin(this, "GroupDimensions"); - GroupDimensions->GroupBox1->setTitle(tr("GEOM_BOX_OBJ")); - GroupDimensions->TextLabel1->setText(tr("GEOM_DX")); - GroupDimensions->TextLabel2->setText(tr("GEOM_DY")); - GroupDimensions->TextLabel3->setText(tr("GEOM_DZ")); - - Layout1->addWidget(GroupPoints, 2, 0); - Layout1->addWidget(GroupDimensions, 2, 0); - /***************************************************************/ - - Init(); -} - - -//================================================================================= -// function : ~DialogBox_Box() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -PrimitiveGUI_BoxDlg::~PrimitiveGUI_BoxDlg() -{ - // no need to delete child widgets, Qt does it all for us -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void PrimitiveGUI_BoxDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = GroupPoints->LineEdit1; - GroupPoints->LineEdit1->setReadOnly( true ); - GroupPoints->LineEdit2->setReadOnly( true ); - - myPoint1 = myPoint2 = GEOM::GEOM_Object::_nil(); - - /* Get setting of step value from file configuration */ - SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); - double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100); - - /* min, max, step and decimals for spin boxes */ - GroupDimensions->SpinBox_DX->RangeStepAndValidator(-999.999, 999.999, step, 3); - GroupDimensions->SpinBox_DY->RangeStepAndValidator(-999.999, 999.999, step, 3); - GroupDimensions->SpinBox_DZ->RangeStepAndValidator(-999.999, 999.999, step, 3); - - double initValue = 200.0; - GroupDimensions->SpinBox_DX->SetValue(initValue); - GroupDimensions->SpinBox_DY->SetValue(initValue); - GroupDimensions->SpinBox_DZ->SetValue(initValue); - - /* signals and slots connections */ - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - connect(GroupConstructors, SIGNAL(clicked(int)), this, SLOT(ConstructorsClicked(int))); - - connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupPoints->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - - connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(GroupPoints->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect(GroupDimensions->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox())); - connect(GroupDimensions->SpinBox_DY, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox())); - connect(GroupDimensions->SpinBox_DZ, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox())); - - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupDimensions->SpinBox_DX, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupDimensions->SpinBox_DY, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupDimensions->SpinBox_DZ, SLOT(SetStep(double))); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - initName( tr( "GEOM_BOX" ) ); - ConstructorsClicked(0); -} - - -//================================================================================= -// function : ConstructorsClicked() -// purpose : Radio button management -//================================================================================= -void PrimitiveGUI_BoxDlg::ConstructorsClicked(int constructorId) -{ - disconnect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), 0, this, 0); - - switch (constructorId) - { - case 0: - { - globalSelection( GEOM_POINT ); - - GroupDimensions->hide(); - resize(0, 0); - GroupPoints->show(); - - myEditCurrentArgument = GroupPoints->LineEdit1; - GroupPoints->LineEdit1->setText(""); - GroupPoints->LineEdit2->setText(""); - myPoint1 = myPoint2 = GEOM::GEOM_Object::_nil(); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - break; - } - case 1: - { - GroupPoints->hide(); - resize(0, 0); - GroupDimensions->show(); - - break; - } - } - displayPreview(); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void PrimitiveGUI_BoxDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool PrimitiveGUI_BoxDlg::ClickOnApply() -{ - if ( !onAccept() ) - return false; - - initName(); - ConstructorsClicked( getConstructorId() ); - return true; -} - - -//================================================================================= -// function : ClickOnCancel() -// purpose : -//================================================================================= -void PrimitiveGUI_BoxDlg::ClickOnCancel() -{ - GEOMBase_Skeleton::ClickOnCancel(); -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection as changed -//================================================================================= -void PrimitiveGUI_BoxDlg::SelectionIntoArgument() -{ - if ( getConstructorId() != 0 ) - return; - - myEditCurrentArgument->setText(""); - - if (IObjectCount() != 1) - { - if (myEditCurrentArgument == GroupPoints->LineEdit1) - myPoint1 = GEOM::GEOM_Object::_nil(); - else if ( myEditCurrentArgument == GroupPoints->LineEdit2) - myPoint2 = GEOM::GEOM_Object::_nil(); - return; - } - - // nbSel == 1 - Standard_Boolean testResult = Standard_False; - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject(firstIObject(), testResult ); - - if(!testResult || CORBA::is_nil( aSelectedObject )) - return; - - if(myEditCurrentArgument == GroupPoints->LineEdit1) - myPoint1 = aSelectedObject; - else if(myEditCurrentArgument == GroupPoints->LineEdit2) - myPoint2 = aSelectedObject; - - myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) ); - - displayPreview(); -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void PrimitiveGUI_BoxDlg::SetEditCurrentArgument() -{ - QPushButton* send = (QPushButton*)sender(); - - if(send == GroupPoints->PushButton1) - myEditCurrentArgument = GroupPoints->LineEdit1; - else if(send == GroupPoints->PushButton2) - myEditCurrentArgument = GroupPoints->LineEdit2; - - globalSelection( GEOM_POINT ); - - myEditCurrentArgument->setFocus(); - SelectionIntoArgument(); -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void PrimitiveGUI_BoxDlg::LineEditReturnPressed() -{ - QLineEdit* send = (QLineEdit*)sender(); - if(send == GroupPoints->LineEdit1 || send == GroupPoints->LineEdit2) - { - myEditCurrentArgument = send; - GEOMBase_Skeleton::LineEditReturnPressed(); - } -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void PrimitiveGUI_BoxDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - ConstructorsClicked( getConstructorId() ); -} - - -//================================================================================= -// function : enterEvent [REDEFINED] -// purpose : -//================================================================================= -void PrimitiveGUI_BoxDlg::enterEvent(QEvent* e) -{ - if ( !GroupConstructors->isEnabled() ) - ActivateThisDialog(); -} - - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : public slot to deactivate if active -//================================================================================= -void PrimitiveGUI_BoxDlg::DeactivateActiveDialog() -{ - GEOMBase_Skeleton::DeactivateActiveDialog(); -} - - -//================================================================================= -// function : ValueChangedInSpinBox() -// purpose : -//================================================================================= -void PrimitiveGUI_BoxDlg::ValueChangedInSpinBox() -{ - displayPreview(); -} - - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr PrimitiveGUI_BoxDlg::createOperation() -{ - return getGeomEngine()->GetI3DPrimOperations( getStudyId() ); -} - - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool PrimitiveGUI_BoxDlg::isValid( QString& msg ) -{ - return getConstructorId() == 0 ? !(myPoint1->_is_nil() || myPoint2->_is_nil()) : true; -} - - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool PrimitiveGUI_BoxDlg::execute( ObjectList& objects ) -{ - bool res = false; - - GEOM::GEOM_Object_var anObj; - - switch ( getConstructorId() ) - { - case 0 : - { - if ( !CORBA::is_nil( myPoint1 ) && !CORBA::is_nil( myPoint2 ) ) { - anObj = GEOM::GEOM_I3DPrimOperations::_narrow( getOperation() )->MakeBoxTwoPnt( myPoint1, myPoint2 ); - res = true; - } - - break; - } - case 1 : - { - double x = GroupDimensions->SpinBox_DX->GetValue(); - double y = GroupDimensions->SpinBox_DY->GetValue(); - double z = GroupDimensions->SpinBox_DZ->GetValue(); - - anObj = GEOM::GEOM_I3DPrimOperations::_narrow( getOperation() )->MakeBoxDXDYDZ( x, y, z ); - res = true; - break; - } - } - - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - - return res; -} - -//================================================================================= -// function : closeEvent -// purpose : -//================================================================================= -void PrimitiveGUI_BoxDlg::closeEvent( QCloseEvent* e ) -{ - GEOMBase_Skeleton::closeEvent( e ); -} diff --git a/src/PrimitiveGUI/PrimitiveGUI_BoxDlg.h b/src/PrimitiveGUI/PrimitiveGUI_BoxDlg.h deleted file mode 100644 index 51d8ecedd..000000000 --- a/src/PrimitiveGUI/PrimitiveGUI_BoxDlg.h +++ /dev/null @@ -1,83 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : PrimitiveGUI_BoxDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_BOX_H -#define DIALOGBOX_BOX_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_2Sel_QTD.h" -#include "DlgRef_3Spin.h" - -using namespace std; - -//================================================================================= -// class : PrimitiveGUI_BoxDlg -// purpose : -//================================================================================= -class PrimitiveGUI_BoxDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - - public: - PrimitiveGUI_BoxDlg(GeometryGUI* theGeometryGUI, QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~PrimitiveGUI_BoxDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& ); - virtual bool execute( ObjectList& objects ); - - virtual void closeEvent( QCloseEvent* e ); - -private : - void Init(); - void enterEvent(QEvent* e); - - GeometryGUI* myGeometryGUI; - - GEOM::GEOM_Object_var myPoint1, myPoint2; /* Points containing the vector */ - - DlgRef_2Sel_QTD* GroupPoints; - DlgRef_3Spin* GroupDimensions; - -private slots: - void ClickOnOk(); - bool ClickOnApply(); - void ClickOnCancel(); - void ActivateThisDialog(); - void DeactivateActiveDialog(); - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - void ConstructorsClicked(int); - void ValueChangedInSpinBox(); - -}; - -#endif // DIALOGBOX_BOX_H diff --git a/src/PrimitiveGUI/PrimitiveGUI_ConeDlg.cxx b/src/PrimitiveGUI/PrimitiveGUI_ConeDlg.cxx deleted file mode 100644 index 3339c7afe..000000000 --- a/src/PrimitiveGUI/PrimitiveGUI_ConeDlg.cxx +++ /dev/null @@ -1,471 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : PrimitiveGUI_ConeDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "PrimitiveGUI_ConeDlg.h" - -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include - -#include "GEOMImpl_Types.hxx" - -#include "utilities.h" - -using namespace std; - -//================================================================================= -// class : PrimitiveGUI_ConeDlg() -// purpose : Constructs a PrimitiveGUI_ConeDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -PrimitiveGUI_ConeDlg::PrimitiveGUI_ConeDlg(GeometryGUI* theGeometryGUI, QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu), myGeometryGUI(theGeometryGUI) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_CONE_PV"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_CONE_DXYZ"))); - QPixmap image2(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_CONE_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_CONE")); - RadioButton1->setPixmap(image0); - RadioButton2->setPixmap(image1); - RadioButton3->close(TRUE); - - GroupPoints = new DlgRef_2Sel3Spin(this, "GroupPoints"); - GroupPoints->GroupBox1->setTitle(tr("GEOM_ARGUMENTS")); - GroupPoints->TextLabel1->setText(tr("GEOM_BASE_POINT")); - GroupPoints->TextLabel2->setText(tr("GEOM_VECTOR")); - GroupPoints->TextLabel3->setText(tr("GEOM_RADIUS_I").arg("1")); - GroupPoints->TextLabel4->setText(tr("GEOM_RADIUS_I").arg("2")); - GroupPoints->TextLabel5->setText(tr("GEOM_HEIGHT")); - GroupPoints->PushButton1->setPixmap(image2); - GroupPoints->PushButton2->setPixmap(image2); - - GroupDimensions = new DlgRef_3Spin(this, "GroupDimensions"); - GroupDimensions->GroupBox1->setTitle(tr("GEOM_BOX_OBJ")); - GroupDimensions->TextLabel1->setText(tr("GEOM_RADIUS_I").arg("1")); - GroupDimensions->TextLabel2->setText(tr("GEOM_RADIUS_I").arg("2")); - GroupDimensions->TextLabel3->setText(tr("GEOM_HEIGHT")); - - Layout1->addWidget(GroupPoints, 2, 0); - Layout1->addWidget(GroupDimensions, 2, 0); - /***************************************************************/ - - Init(); -} - - -//================================================================================= -// function : ~PrimitiveGUI_ConeDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -PrimitiveGUI_ConeDlg::~PrimitiveGUI_ConeDlg() -{ - // no need to delete child widgets, Qt does it all for us -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void PrimitiveGUI_ConeDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = GroupPoints->LineEdit1; - GroupPoints->LineEdit1->setReadOnly( true ); - GroupPoints->LineEdit2->setReadOnly( true ); - - myPoint = myDir = GEOM::GEOM_Object::_nil(); - - /* Get setting of step value from file configuration */ - SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); - double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100); - - /* min, max, step and decimals for spin boxes & initial values */ - GroupPoints->SpinBox_DX->RangeStepAndValidator(0.000, 999.999, step, 3); - GroupPoints->SpinBox_DY->RangeStepAndValidator(0.000, 999.999, step, 3); - GroupPoints->SpinBox_DZ->RangeStepAndValidator(-999.999, 999.999, step, 3); - GroupDimensions->SpinBox_DX->RangeStepAndValidator(0.000, 999.999, step, 3); - GroupDimensions->SpinBox_DY->RangeStepAndValidator(0.000, 999.999, step, 3); - GroupDimensions->SpinBox_DZ->RangeStepAndValidator(-999.999, 999.999, step, 3); - - double aRadius1(100.0), aRadius2(0.0), aHeight(300.0); - GroupPoints->SpinBox_DX->SetValue(aRadius1); - GroupPoints->SpinBox_DY->SetValue(aRadius2); - GroupPoints->SpinBox_DZ->SetValue(aHeight); - GroupDimensions->SpinBox_DX->SetValue(aRadius1); - GroupDimensions->SpinBox_DY->SetValue(aRadius2); - GroupDimensions->SpinBox_DZ->SetValue(aHeight); - - /* signals and slots connections */ - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - connect(GroupConstructors, SIGNAL(clicked(int)), this, SLOT(ConstructorsClicked(int))); - - connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupPoints->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - - connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(GroupPoints->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect(GroupPoints->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox())); - connect(GroupPoints->SpinBox_DY, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox())); - connect(GroupPoints->SpinBox_DZ, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox())); - connect(GroupDimensions->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox())); - connect(GroupDimensions->SpinBox_DY, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox())); - connect(GroupDimensions->SpinBox_DZ, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox())); - - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupPoints->SpinBox_DX, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupPoints->SpinBox_DY, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupPoints->SpinBox_DZ, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupDimensions->SpinBox_DX, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupDimensions->SpinBox_DY, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupDimensions->SpinBox_DZ, SLOT(SetStep(double))); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - - initName( tr( "GEOM_CONE" ) ); - ConstructorsClicked(0); -} - - -//================================================================================= -// function : ConstructorsClicked() -// purpose : Radio button management -//================================================================================= -void PrimitiveGUI_ConeDlg::ConstructorsClicked(int constructorId) -{ - disconnect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), 0, this, 0); - - switch(constructorId) - { - case 0 : - { - globalSelection( GEOM_POINT ); - GroupDimensions->hide(); - resize(0, 0); - GroupPoints->show(); - - myEditCurrentArgument = GroupPoints->LineEdit1; - GroupPoints->LineEdit1->setText(tr("")); - GroupPoints->LineEdit2->setText(tr("")); - myPoint = myDir = GEOM::GEOM_Object::_nil(); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - break; - } - case 1 : - { - GroupPoints->hide(); - resize( 0, 0 ); - GroupDimensions->show(); - - break; - } - } - displayPreview(); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void PrimitiveGUI_ConeDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool PrimitiveGUI_ConeDlg::ClickOnApply() -{ - if ( !onAccept() ) - return false; - - initName(); - ConstructorsClicked( getConstructorId() ); - return true; -} - - -//======================================================================= -// function : ClickOnCancel() -// purpose : -//======================================================================= -void PrimitiveGUI_ConeDlg::ClickOnCancel() -{ - GEOMBase_Skeleton::ClickOnCancel(); -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection as changed or other case -//================================================================================= -void PrimitiveGUI_ConeDlg::SelectionIntoArgument() -{ - if ( getConstructorId() != 0 ) - return; - - if(IObjectCount() != 1) - { - if(myEditCurrentArgument == GroupPoints->LineEdit1) - myPoint = GEOM::GEOM_Object::_nil(); - else if (myEditCurrentArgument == GroupPoints->LineEdit2) - myDir = GEOM::GEOM_Object::_nil(); - return; - } - - /* nbSel == 1 */ - Standard_Boolean testResult = Standard_False; - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); - - if(!testResult || CORBA::is_nil( aSelectedObject )) - return; - - if (myEditCurrentArgument == GroupPoints->LineEdit1) - myPoint = aSelectedObject; - else if (myEditCurrentArgument == GroupPoints->LineEdit2) - myDir = aSelectedObject; - - - myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) ); - displayPreview(); -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void PrimitiveGUI_ConeDlg::SetEditCurrentArgument() -{ - QPushButton* send = (QPushButton*)sender(); - - if(send == GroupPoints->PushButton1) { - myEditCurrentArgument = GroupPoints->LineEdit1; - globalSelection( GEOM_POINT ); - } - else if(send == GroupPoints->PushButton2) { - myEditCurrentArgument = GroupPoints->LineEdit2; - globalSelection( GEOM_LINE ); - } - - myEditCurrentArgument->setFocus(); - SelectionIntoArgument(); -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void PrimitiveGUI_ConeDlg::LineEditReturnPressed() -{ - QLineEdit* send = (QLineEdit*)sender(); - if(send == GroupPoints->LineEdit1 || - send == GroupPoints->LineEdit2) - { - myEditCurrentArgument = send; - GEOMBase_Skeleton::LineEditReturnPressed(); - } -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void PrimitiveGUI_ConeDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - ConstructorsClicked( getConstructorId() ); -} - - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : public slot to deactivate if active -//================================================================================= -void PrimitiveGUI_ConeDlg::DeactivateActiveDialog() -{ - GEOMBase_Skeleton::DeactivateActiveDialog(); -} - - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void PrimitiveGUI_ConeDlg::enterEvent(QEvent* e) -{ - if ( !GroupConstructors->isEnabled() ) - ActivateThisDialog(); -} - - -//================================================================================= -// function : ValueChangedInSpinBox() -// purpose : -//================================================================================= -void PrimitiveGUI_ConeDlg::ValueChangedInSpinBox() -{ - displayPreview(); -} - - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr PrimitiveGUI_ConeDlg::createOperation() -{ - return getGeomEngine()->GetI3DPrimOperations( getStudyId() ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool PrimitiveGUI_ConeDlg::isValid( QString& msg ) -{ - return getConstructorId() == 0 ? !(myPoint->_is_nil() || myDir->_is_nil()) : true; -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool PrimitiveGUI_ConeDlg::execute( ObjectList& objects ) -{ - bool res = false; - - GEOM::GEOM_Object_var anObj; - - switch ( getConstructorId() ) - { - case 0 : - { - if ( !CORBA::is_nil( myPoint ) && !CORBA::is_nil( myDir ) ){ - anObj = GEOM::GEOM_I3DPrimOperations::_narrow( getOperation() )->MakeConePntVecR1R2H( myPoint, - myDir, - getRadius1(), - getRadius2(), - getHeight()); - res = true; - } - break; - } - case 1 : - { - anObj = GEOM::GEOM_I3DPrimOperations::_narrow( getOperation() )->MakeConeR1R2H( getRadius1(), - getRadius2(), - getHeight()); - res = true; - break; - } - } - - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - - return res; -} - -//================================================================================= -// function : closeEvent -// purpose : -//================================================================================= -void PrimitiveGUI_ConeDlg::closeEvent( QCloseEvent* e ) -{ - // myGeomGUI->SetState( -1 ); - GEOMBase_Skeleton::closeEvent( e ); -} - - -//================================================================================= -// function : getRadius1() -// purpose : -//================================================================================= -double PrimitiveGUI_ConeDlg::getRadius1() const -{ - int aConstructorId = getConstructorId(); - if (aConstructorId == 0) - return GroupPoints->SpinBox_DX->GetValue(); - else if (aConstructorId == 1) - return GroupDimensions->SpinBox_DX->GetValue(); - return 0; -} - - -//================================================================================= -// function : getRadius2() -// purpose : -//================================================================================= -double PrimitiveGUI_ConeDlg::getRadius2() const -{ - int aConstructorId = getConstructorId(); - if (aConstructorId == 0) - return GroupPoints->SpinBox_DY->GetValue(); - else if (aConstructorId == 1) - return GroupDimensions->SpinBox_DY->GetValue(); - return 0; -} - - -//================================================================================= -// function : getRadius2() -// purpose : -//================================================================================= -double PrimitiveGUI_ConeDlg::getHeight() const -{ - int aConstructorId = getConstructorId(); - if (aConstructorId == 0) - return GroupPoints->SpinBox_DZ->GetValue(); - else if (aConstructorId == 1) - return GroupDimensions->SpinBox_DZ->GetValue(); - return 0; -} diff --git a/src/PrimitiveGUI/PrimitiveGUI_ConeDlg.h b/src/PrimitiveGUI/PrimitiveGUI_ConeDlg.h deleted file mode 100644 index 17d913e25..000000000 --- a/src/PrimitiveGUI/PrimitiveGUI_ConeDlg.h +++ /dev/null @@ -1,84 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : PrimitiveGUI_ConeDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_CONE_H -#define DIALOGBOX_CONE_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_2Sel3Spin.h" -#include "DlgRef_3Spin.h" - -//================================================================================= -// class : PrimitiveGUI_ConeDlg -// purpose : -//================================================================================= -class PrimitiveGUI_ConeDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - PrimitiveGUI_ConeDlg(GeometryGUI* theGeometryGUI, QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~PrimitiveGUI_ConeDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& ); - virtual bool execute( ObjectList& objects ); - - virtual void closeEvent( QCloseEvent* e ); - -private: - void Init(); - void enterEvent(QEvent* e); - double getRadius1() const; - double getRadius2() const; - double getHeight() const; - - GeometryGUI* myGeometryGUI; - - GEOM::GEOM_Object_var myPoint, myDir; - - DlgRef_2Sel3Spin* GroupPoints; - DlgRef_3Spin* GroupDimensions; - -private slots: - void ClickOnOk(); - bool ClickOnApply(); - void ClickOnCancel(); - void ActivateThisDialog(); - void DeactivateActiveDialog(); - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - void ConstructorsClicked(int); - void ValueChangedInSpinBox(); - -}; - -#endif // DIALOGBOX_CONE_H diff --git a/src/PrimitiveGUI/PrimitiveGUI_CylinderDlg.cxx b/src/PrimitiveGUI/PrimitiveGUI_CylinderDlg.cxx deleted file mode 100644 index cf4e3d020..000000000 --- a/src/PrimitiveGUI/PrimitiveGUI_CylinderDlg.cxx +++ /dev/null @@ -1,447 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : PrimitiveGUI_CylinderDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "PrimitiveGUI_CylinderDlg.h" - -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include - -#include "GEOMImpl_Types.hxx" - -#include "utilities.h" - -using namespace std; - -//================================================================================= -// class : PrimitiveGUI_CylinderDlg() -// purpose : Constructs a PrimitiveGUI_CylinderDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -PrimitiveGUI_CylinderDlg::PrimitiveGUI_CylinderDlg(GeometryGUI* theGeometryGUI, QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu), myGeometryGUI(theGeometryGUI) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_CYLINDER_PV"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_CYLINDER_DXYZ"))); - QPixmap image2(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_CYLINDER_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_CYLINDER")); - RadioButton1->setPixmap(image0); - RadioButton2->setPixmap(image1); - RadioButton3->close(TRUE); - - GroupPoints = new DlgRef_2Sel2Spin(this, "GroupPoints"); - GroupPoints->GroupBox1->setTitle(tr("GEOM_ARGUMENTS")); - GroupPoints->TextLabel1->setText(tr("GEOM_BASE_POINT")); - GroupPoints->TextLabel2->setText(tr("GEOM_VECTOR")); - GroupPoints->TextLabel3->setText(tr("GEOM_RADIUS")); - GroupPoints->TextLabel4->setText(tr("GEOM_HEIGHT")); - GroupPoints->PushButton1->setPixmap(image2); - GroupPoints->PushButton2->setPixmap(image2); - - GroupDimensions = new DlgRef_2Spin(this, "GroupDimensions"); - GroupDimensions->GroupBox1->setTitle(tr("GEOM_BOX_OBJ")); - GroupDimensions->TextLabel1->setText(tr("GEOM_RADIUS")); - GroupDimensions->TextLabel2->setText(tr("GEOM_HEIGHT")); - - Layout1->addWidget(GroupPoints, 2, 0); - Layout1->addWidget(GroupDimensions, 2, 0); - /***************************************************************/ - - Init(); -} - - -//================================================================================= -// function : ~PrimitiveGUI_CylinderDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -PrimitiveGUI_CylinderDlg::~PrimitiveGUI_CylinderDlg() -{ - // no need to delete child widgets, Qt does it all for us -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void PrimitiveGUI_CylinderDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = GroupPoints->LineEdit1; - GroupPoints->LineEdit1->setReadOnly( true ); - GroupPoints->LineEdit2->setReadOnly( true ); - - myPoint = myDir = GEOM::GEOM_Object::_nil(); - - /* Get setting of step value from file configuration */ - SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); - double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100); - - /* min, max, step and decimals for spin boxes & initial values */ - /* First constructor : radius */ - GroupPoints->SpinBox_DX->RangeStepAndValidator(0.001, 999.999, step, 3); - /* First constructor : algebric height */ - GroupPoints->SpinBox_DY->RangeStepAndValidator(-999.999, 999.999, step, 3); - /* Second constructor : radius */ - GroupDimensions->SpinBox_DX->RangeStepAndValidator(0.001, 999.999, step, 3); - /* Second constructor : algebric height */ - GroupDimensions->SpinBox_DY->RangeStepAndValidator(-999.999, 999.999, step, 3); - - GroupPoints->SpinBox_DX->SetValue(100.0); - GroupPoints->SpinBox_DY->SetValue(300.0); - GroupDimensions->SpinBox_DX->SetValue(100.0); - GroupDimensions->SpinBox_DY->SetValue(300.0); - - /* signals and slots connections */ - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - connect(GroupConstructors, SIGNAL(clicked(int)), this, SLOT(ConstructorsClicked(int))); - - connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupPoints->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - - connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(GroupPoints->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect(GroupPoints->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox())); - connect(GroupPoints->SpinBox_DY, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox())); - connect(GroupDimensions->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox())); - connect(GroupDimensions->SpinBox_DY, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox())); - - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupPoints->SpinBox_DX, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupPoints->SpinBox_DY, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupDimensions->SpinBox_DX, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupDimensions->SpinBox_DY, SLOT(SetStep(double))); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - - initName( tr( "GEOM_CYLINDER" ) ); - ConstructorsClicked(0); -} - - -//================================================================================= -// function : ConstructorsClicked() -// purpose : Radio button management -//================================================================================= -void PrimitiveGUI_CylinderDlg::ConstructorsClicked(int constructorId) -{ - disconnect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), 0, this, 0); - - switch(constructorId) - { - case 0 : - { - globalSelection( GEOM_POINT ); - - GroupDimensions->hide(); - resize(0, 0); - GroupPoints->show(); - - myEditCurrentArgument = GroupPoints->LineEdit1; - GroupPoints->LineEdit1->setText(tr("")); - GroupPoints->LineEdit2->setText(tr("")); - myPoint = myDir = GEOM::GEOM_Object::_nil(); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - break; - } - case 1 : - { - GroupPoints->hide(); - resize( 0, 0 ); - GroupDimensions->show(); - - break; - } - } - displayPreview(); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void PrimitiveGUI_CylinderDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool PrimitiveGUI_CylinderDlg::ClickOnApply() -{ - if ( !onAccept() ) - return false; - - initName(); - ConstructorsClicked( getConstructorId() ); - return true; -} - - -//======================================================================= -// function : ClickOnCancel() -// purpose : -//======================================================================= -void PrimitiveGUI_CylinderDlg::ClickOnCancel() -{ - GEOMBase_Skeleton::ClickOnCancel(); -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection as changed or other case -//================================================================================= -void PrimitiveGUI_CylinderDlg::SelectionIntoArgument() -{ - if ( getConstructorId() != 0 ) - return; - - myEditCurrentArgument->setText(""); - - if(IObjectCount() != 1) - { - if(myEditCurrentArgument == GroupPoints->LineEdit1) - myPoint = GEOM::GEOM_Object::_nil(); - else if (myEditCurrentArgument == GroupPoints->LineEdit2) - myDir = GEOM::GEOM_Object::_nil(); - return; - } - - /* nbSel == 1 */ - Standard_Boolean testResult = Standard_False; - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); - - if(!testResult || CORBA::is_nil( aSelectedObject )) - return; - - if (myEditCurrentArgument == GroupPoints->LineEdit1) - myPoint = aSelectedObject; - else if (myEditCurrentArgument == GroupPoints->LineEdit2) - myDir = aSelectedObject; - - myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) ); - - displayPreview(); -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void PrimitiveGUI_CylinderDlg::SetEditCurrentArgument() -{ - QPushButton* send = (QPushButton*)sender(); - - if(send == GroupPoints->PushButton1) { - myEditCurrentArgument = GroupPoints->LineEdit1; - globalSelection( GEOM_POINT ); - } - else if(send == GroupPoints->PushButton2) { - myEditCurrentArgument = GroupPoints->LineEdit2; - globalSelection( GEOM_LINE ); - } - - myEditCurrentArgument->setFocus(); - SelectionIntoArgument(); -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void PrimitiveGUI_CylinderDlg::LineEditReturnPressed() -{ - QLineEdit* send = (QLineEdit*)sender(); - if(send == GroupPoints->LineEdit1 || - send == GroupPoints->LineEdit2) - { - myEditCurrentArgument = send; - GEOMBase_Skeleton::LineEditReturnPressed(); - } -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void PrimitiveGUI_CylinderDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - ConstructorsClicked( getConstructorId() ); -} - - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void PrimitiveGUI_CylinderDlg::enterEvent(QEvent* e) -{ - if ( !GroupConstructors->isEnabled() ) - ActivateThisDialog(); -} - - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : public slot to deactivate if active -//================================================================================= -void PrimitiveGUI_CylinderDlg::DeactivateActiveDialog() -{ - GEOMBase_Skeleton::DeactivateActiveDialog(); -} - - -//================================================================================= -// function : ValueChangedInSpinBox -// purpose : -//================================================================================= -void PrimitiveGUI_CylinderDlg::ValueChangedInSpinBox( ) -{ - displayPreview(); -} - - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr PrimitiveGUI_CylinderDlg::createOperation() -{ - return getGeomEngine()->GetI3DPrimOperations( getStudyId() ); -} - - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool PrimitiveGUI_CylinderDlg::isValid( QString& msg ) -{ - return getConstructorId() == 0 ? !(myPoint->_is_nil() || myDir->_is_nil() ) : true; -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool PrimitiveGUI_CylinderDlg::execute( ObjectList& objects ) -{ - bool res = false; - - GEOM::GEOM_Object_var anObj; - - switch ( getConstructorId() ) - { - case 0 : - { - if ( !CORBA::is_nil( myPoint ) && !CORBA::is_nil( myDir )) { - anObj = GEOM::GEOM_I3DPrimOperations::_narrow( getOperation() )->MakeCylinderPntVecRH(myPoint, myDir, getRadius(), getHeight()); - res = true; - } - break; - } - case 1 : - { - anObj = GEOM::GEOM_I3DPrimOperations::_narrow( getOperation() )->MakeCylinderRH(getRadius(), getHeight()); - res = true; - - break; - } - } - - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - - return res; -} - -//================================================================================= -// function : closeEvent -// purpose : -//================================================================================= -void PrimitiveGUI_CylinderDlg::closeEvent( QCloseEvent* e ) -{ - GEOMBase_Skeleton::closeEvent( e ); -} - - -//================================================================================= -// function : getRadius() -// purpose : -//================================================================================= -double PrimitiveGUI_CylinderDlg::getRadius() const -{ - int aConstructorId = getConstructorId(); - if (aConstructorId == 0) - return GroupPoints->SpinBox_DX->GetValue(); - else if (aConstructorId == 1) - return GroupDimensions->SpinBox_DX->GetValue(); - return 0; -} - - -//================================================================================= -// function : getHeight() -// purpose : -//================================================================================= -double PrimitiveGUI_CylinderDlg::getHeight() const -{ - int aConstructorId = getConstructorId(); - if (aConstructorId == 0) - return GroupPoints->SpinBox_DY->GetValue(); - else if (aConstructorId == 1) - return GroupDimensions->SpinBox_DY->GetValue(); - return 0; -} diff --git a/src/PrimitiveGUI/PrimitiveGUI_CylinderDlg.h b/src/PrimitiveGUI/PrimitiveGUI_CylinderDlg.h deleted file mode 100644 index 3ed400a0e..000000000 --- a/src/PrimitiveGUI/PrimitiveGUI_CylinderDlg.h +++ /dev/null @@ -1,83 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : PrimitiveGUI_CylinderDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_CYLINDER_H -#define DIALOGBOX_CYLINDER_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_2Sel2Spin.h" -#include "DlgRef_2Spin.h" - - -//================================================================================= -// class : PrimitiveGUI_CylinderDlg -// purpose : -//================================================================================= -class PrimitiveGUI_CylinderDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - PrimitiveGUI_CylinderDlg(GeometryGUI* theGeometryGUI, QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~PrimitiveGUI_CylinderDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& ); - virtual bool execute( ObjectList& objects ); - - virtual void closeEvent( QCloseEvent* e ); - -private: - void Init(); - void enterEvent(QEvent* e); - double getRadius() const; - double getHeight() const; - - GeometryGUI* myGeometryGUI; - - GEOM::GEOM_Object_var myPoint, myDir; - - DlgRef_2Sel2Spin* GroupPoints; - DlgRef_2Spin* GroupDimensions; - -private slots: - void ClickOnOk(); - bool ClickOnApply(); - void ClickOnCancel(); - void ActivateThisDialog(); - void DeactivateActiveDialog(); - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - void ConstructorsClicked(int); - void ValueChangedInSpinBox(); -}; - -#endif // DIALOGBOX_CYLINDER_H diff --git a/src/PrimitiveGUI/PrimitiveGUI_SphereDlg.cxx b/src/PrimitiveGUI/PrimitiveGUI_SphereDlg.cxx deleted file mode 100644 index 6ffba6e31..000000000 --- a/src/PrimitiveGUI/PrimitiveGUI_SphereDlg.cxx +++ /dev/null @@ -1,398 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : PrimitiveGUI_SphereDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "PrimitiveGUI_SphereDlg.h" - -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include - -#include "GEOMImpl_Types.hxx" - -#include "utilities.h" - -using namespace std; - -//================================================================================= -// class : PrimitiveGUI_SphereDlg() -// purpose : Constructs a PrimitiveGUI_SphereDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -PrimitiveGUI_SphereDlg::PrimitiveGUI_SphereDlg(GeometryGUI* theGeometryGUI, QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu), myGeometryGUI(theGeometryGUI) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_SPHERE_P"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_SPHERE_DXYZ"))); - QPixmap image2(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_SPHERE_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_SPHERE")); - RadioButton1->setPixmap(image0); - RadioButton2->setPixmap(image1); - RadioButton3->close(TRUE); - - GroupPoints = new DlgRef_1Sel1Spin(this, "GroupPoints"); - GroupPoints->GroupBox1->setTitle(tr("GEOM_SPHERE_CR")); - GroupPoints->TextLabel1->setText(tr("GEOM_CENTER")); - GroupPoints->TextLabel2->setText(tr("GEOM_RADIUS")); - GroupPoints->PushButton1->setPixmap(image2); - - GroupDimensions = new DlgRef_1Spin(this, "GroupDimensions"); - GroupDimensions->GroupBox1->setTitle(tr("GEOM_SPHERE_RO")); - GroupDimensions->TextLabel1->setText(tr("GEOM_RADIUS")); - - Layout1->addWidget(GroupPoints, 2, 0); - Layout1->addWidget(GroupDimensions, 2, 0); - /***************************************************************/ - - Init(); -} - - -//================================================================================= -// function : ~PrimitiveGUI_SphereDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -PrimitiveGUI_SphereDlg::~PrimitiveGUI_SphereDlg() -{ - /* no need to delete child widgets, Qt does it all for us */ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void PrimitiveGUI_SphereDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = GroupPoints->LineEdit1; - GroupPoints->LineEdit1->setReadOnly( true ); - - myPoint = GEOM::GEOM_Object::_nil(); - - /* Get setting of step value from file configuration */ - SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); - double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100); - - /* min, max, step and decimals for spin boxes */ - GroupPoints->SpinBox_DX->RangeStepAndValidator(0.001, 999.999, step, 3); - GroupDimensions->SpinBox_DX->RangeStepAndValidator(0.001, 999.999, step, 3); - GroupPoints->SpinBox_DX->SetValue(100.0); - GroupDimensions->SpinBox_DX->SetValue(100.0); - - /* signals and slots connections */ - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - connect(GroupConstructors, SIGNAL(clicked(int)), this, SLOT(ConstructorsClicked(int))); - - connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect(GroupDimensions->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox())); - connect(GroupPoints->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox())); - - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupPoints->SpinBox_DX, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupDimensions->SpinBox_DX, SLOT(SetStep(double))); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - initName(tr("GEOM_SPHERE")); - ConstructorsClicked(0); -} - - -//================================================================================= -// function : ConstructorsClicked() -// purpose : Radio button management -//================================================================================= -void PrimitiveGUI_SphereDlg::ConstructorsClicked(int constructorId) -{ - disconnect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), 0, this, 0); - - switch (constructorId) - { - case 0: - { - globalSelection( GEOM_POINT ); - GroupDimensions->hide(); - resize(0, 0); - GroupPoints->show(); - - myEditCurrentArgument = GroupPoints->LineEdit1; - GroupPoints->LineEdit1->setText(""); - myPoint = GEOM::GEOM_Object::_nil(); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - break; - } - case 1: - { - GroupPoints->hide(); - resize(0, 0); - GroupDimensions->show(); - - break; - } - } - displayPreview(); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void PrimitiveGUI_SphereDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool PrimitiveGUI_SphereDlg::ClickOnApply() -{ - if ( !onAccept() ) - return false; - - initName(); - ConstructorsClicked( getConstructorId() ); - return true; -} - - - -//======================================================================= -// function : ClickOnCancel() -// purpose : -//======================================================================= -void PrimitiveGUI_SphereDlg::ClickOnCancel() -{ - GEOMBase_Skeleton::ClickOnCancel(); -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection as changed or other case -//================================================================================= -void PrimitiveGUI_SphereDlg::SelectionIntoArgument() -{ - if ( getConstructorId() != 0 ) - return; - - myEditCurrentArgument->setText(""); - - if(IObjectCount() != 1) - { - myPoint = GEOM::GEOM_Object::_nil(); - return; - } - - /* nbSel == 1 ! */ - Standard_Boolean testResult = Standard_False; - GEOM::GEOM_Object_ptr aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); - - if (!testResult || CORBA::is_nil( aSelectedObject )) - return; - - myPoint = aSelectedObject; - myEditCurrentArgument->setText( GEOMBase::GetName( myPoint ) ); - - displayPreview(); -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void PrimitiveGUI_SphereDlg::LineEditReturnPressed() -{ - QLineEdit* send = (QLineEdit*)sender(); - if(send == GroupPoints->LineEdit1) - { - myEditCurrentArgument = send; - GEOMBase_Skeleton::LineEditReturnPressed(); - } -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void PrimitiveGUI_SphereDlg::SetEditCurrentArgument() -{ - QPushButton* send = (QPushButton*)sender(); - - if(send == GroupPoints->PushButton1) { - GroupPoints->LineEdit1->setFocus(); - myEditCurrentArgument = GroupPoints->LineEdit1; - globalSelection( GEOM_POINT ); - SelectionIntoArgument(); - } -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void PrimitiveGUI_SphereDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - ConstructorsClicked( getConstructorId() ); -} - - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : public slot to deactivate if active -//================================================================================= -void PrimitiveGUI_SphereDlg::DeactivateActiveDialog() -{ - GEOMBase_Skeleton::DeactivateActiveDialog(); -} - - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void PrimitiveGUI_SphereDlg::enterEvent(QEvent* e) -{ - if ( !GroupConstructors->isEnabled() ) - ActivateThisDialog(); -} - - -//================================================================================= -// function : ValueChangedInSpinBox() -// purpose : -//================================================================================= -void PrimitiveGUI_SphereDlg::ValueChangedInSpinBox() -{ - displayPreview(); -} - - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr PrimitiveGUI_SphereDlg::createOperation() -{ - return getGeomEngine()->GetI3DPrimOperations( getStudyId() ); -} - - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool PrimitiveGUI_SphereDlg::isValid( QString& msg ) -{ - return getConstructorId() == 0 ? !myPoint->_is_nil() : true; -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool PrimitiveGUI_SphereDlg::execute( ObjectList& objects ) -{ - bool res = false; - - GEOM::GEOM_Object_var anObj; - - switch ( getConstructorId() ) - { - case 0 : - { - if ( !CORBA::is_nil( myPoint ) ) { - anObj = GEOM::GEOM_I3DPrimOperations::_narrow( getOperation() )->MakeSpherePntR( myPoint, getRadius() ); - res = true; - } - break; - } - case 1 : - { - anObj = GEOM::GEOM_I3DPrimOperations::_narrow( getOperation() )->MakeSphereR( getRadius() ); - res = true; - break; - } - } - - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - - return res; -} - -//================================================================================= -// function : closeEvent -// purpose : -//================================================================================= -void PrimitiveGUI_SphereDlg::closeEvent( QCloseEvent* e ) -{ - //myGeomGUI->SetState( -1 ); - GEOMBase_Skeleton::closeEvent( e ); -} - - - -//================================================================================= -// function : getRadius() -// purpose : -//================================================================================= -double PrimitiveGUI_SphereDlg::getRadius() const -{ - int aConstructorId = getConstructorId(); - if (aConstructorId == 0) - return GroupPoints->SpinBox_DX->GetValue(); - else if (aConstructorId == 1) - return GroupDimensions->SpinBox_DX->GetValue(); - return 0; -} diff --git a/src/PrimitiveGUI/PrimitiveGUI_SphereDlg.h b/src/PrimitiveGUI/PrimitiveGUI_SphereDlg.h deleted file mode 100644 index 10042e22f..000000000 --- a/src/PrimitiveGUI/PrimitiveGUI_SphereDlg.h +++ /dev/null @@ -1,82 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : PrimitiveGUI_SphereDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_SPHERE_H -#define DIALOGBOX_SPHERE_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_1Sel1Spin.h" -#include "DlgRef_1Spin.h" - - -//================================================================================= -// class : PrimitiveGUI_SphereDlg -// purpose : -//================================================================================= -class PrimitiveGUI_SphereDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - PrimitiveGUI_SphereDlg(GeometryGUI* theGeometryGUI, QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~PrimitiveGUI_SphereDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& ); - virtual bool execute( ObjectList& objects ); - - virtual void closeEvent( QCloseEvent* e ); - -private : - void Init(); - void enterEvent(QEvent* e); - double getRadius() const; - - GeometryGUI* myGeometryGUI; - - GEOM::GEOM_Object_var myPoint; /* Center point */ - - DlgRef_1Sel1Spin* GroupPoints; - DlgRef_1Spin* GroupDimensions; - -private slots: - void ClickOnOk(); - bool ClickOnApply(); - void ClickOnCancel(); - void ActivateThisDialog(); - void DeactivateActiveDialog(); - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - void ConstructorsClicked(int); - void ValueChangedInSpinBox(); -}; - -#endif // DIALOGBOX_SPHERE_H diff --git a/src/PrimitiveGUI/PrimitiveGUI_TorusDlg.cxx b/src/PrimitiveGUI/PrimitiveGUI_TorusDlg.cxx deleted file mode 100644 index 287ce0d28..000000000 --- a/src/PrimitiveGUI/PrimitiveGUI_TorusDlg.cxx +++ /dev/null @@ -1,445 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : PrimitiveGUI_TorusDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "PrimitiveGUI_TorusDlg.h" - -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include - -#include "GEOMImpl_Types.hxx" - -#include "utilities.h" - -using namespace std; - -//================================================================================= -// class : PrimitiveGUI_TorusDlg() -// purpose : Constructs a PrimitiveGUI_TorusDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -PrimitiveGUI_TorusDlg::PrimitiveGUI_TorusDlg(GeometryGUI* theGeometryGUI, QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu), myGeometryGUI(theGeometryGUI) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_TORUS_PV"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_TORUS_DXYZ"))); - QPixmap image2(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_TORUS_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_TORUS")); - RadioButton1->setPixmap(image0); - RadioButton2->setPixmap(image1); - RadioButton3->close(TRUE); - - GroupPoints = new DlgRef_2Sel2Spin(this, "GroupPoints"); - GroupPoints->GroupBox1->setTitle(tr("GEOM_ARGUMENTS")); - GroupPoints->TextLabel1->setText(tr("GEOM_BASE_POINT")); - GroupPoints->TextLabel2->setText(tr("GEOM_VECTOR")); - GroupPoints->TextLabel3->setText(tr("GEOM_RADIUS_I").arg("1")); - GroupPoints->TextLabel4->setText(tr("GEOM_RADIUS_I").arg("2")); - GroupPoints->PushButton1->setPixmap(image2); - GroupPoints->PushButton2->setPixmap(image2); - - GroupDimensions = new DlgRef_2Spin(this, "GroupDimensions"); - GroupDimensions->GroupBox1->setTitle(tr("GEOM_BOX_OBJ")); - GroupDimensions->TextLabel1->setText(tr("GEOM_RADIUS_I").arg("1")); - GroupDimensions->TextLabel2->setText(tr("GEOM_RADIUS_I").arg("2")); - - Layout1->addWidget(GroupPoints, 2, 0); - Layout1->addWidget(GroupDimensions, 2, 0); - /***************************************************************/ - - Init(); -} - - -//================================================================================= -// function : ~PrimitiveGUI_TorusDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -PrimitiveGUI_TorusDlg::~PrimitiveGUI_TorusDlg() -{ - // no need to delete child widgets, Qt does it all for us -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void PrimitiveGUI_TorusDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = GroupPoints->LineEdit1; - GroupPoints->LineEdit1->setReadOnly( true ); - GroupPoints->LineEdit2->setReadOnly( true ); - - myPoint = myDir = GEOM::GEOM_Object::_nil(); - - /* Get setting of step value from file configuration */ - SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); - double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100); - - /* min, max, step and decimals for spin boxes & initial values */ - GroupPoints->SpinBox_DX->RangeStepAndValidator(0.001, 999.999, step, 3); - GroupPoints->SpinBox_DY->RangeStepAndValidator(0.001, 999.999, step, 3); - GroupDimensions->SpinBox_DX->RangeStepAndValidator(0.001, 999.999, step, 3); - GroupDimensions->SpinBox_DY->RangeStepAndValidator(0.001, 999.999, step, 3); - - GroupPoints->SpinBox_DX->SetValue(300.0); - GroupPoints->SpinBox_DY->SetValue(100.0); - GroupDimensions->SpinBox_DX->SetValue(300.0); - GroupDimensions->SpinBox_DY->SetValue(100.0); - - /* signals and slots connections */ - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - connect(GroupConstructors, SIGNAL(clicked(int)), this, SLOT(ConstructorsClicked(int))); - - connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupPoints->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - - connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(GroupPoints->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect(GroupPoints->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox())); - connect(GroupPoints->SpinBox_DY, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox())); - connect(GroupDimensions->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox())); - connect(GroupDimensions->SpinBox_DY, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox())); - - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupPoints->SpinBox_DX, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupPoints->SpinBox_DY, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupDimensions->SpinBox_DX, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupDimensions->SpinBox_DY, SLOT(SetStep(double))); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - - initName( tr( "GEOM_TORUS" ) ); - ConstructorsClicked(0); -} - - - -//================================================================================= -// function : ConstructorsClicked() -// purpose : Radio button management -//================================================================================= -void PrimitiveGUI_TorusDlg::ConstructorsClicked(int constructorId) -{ - disconnect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), 0, this, 0); - - switch(constructorId) - { - case 0 : - { - globalSelection( GEOM_LINE ); - - GroupDimensions->hide(); - resize(0, 0); - GroupPoints->show(); - - myEditCurrentArgument = GroupPoints->LineEdit1; - GroupPoints->LineEdit1->setText(tr("")); - GroupPoints->LineEdit2->setText(tr("")); - myPoint = myDir = GEOM::GEOM_Object::_nil(); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - break ; - } - case 1 : - { - GroupPoints->hide(); - resize( 0, 0 ); - GroupDimensions->show(); - - break ; - } - } - displayPreview(); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void PrimitiveGUI_TorusDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool PrimitiveGUI_TorusDlg::ClickOnApply() -{ - if ( !onAccept() ) - return false; - - initName(); - ConstructorsClicked( getConstructorId() ); - return true; -} - - -//======================================================================= -// function : ClickOnCancel() -// purpose : -//======================================================================= -void PrimitiveGUI_TorusDlg::ClickOnCancel() -{ - GEOMBase_Skeleton::ClickOnCancel(); -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection as changed or other case -//================================================================================= -void PrimitiveGUI_TorusDlg::SelectionIntoArgument() -{ - if ( getConstructorId() != 0 ) - return; - - myEditCurrentArgument->setText(""); - - if(IObjectCount() != 1) - { - if(myEditCurrentArgument == GroupPoints->LineEdit1) - myPoint = GEOM::GEOM_Object::_nil(); - else if(myEditCurrentArgument == GroupPoints->LineEdit2) - myDir = GEOM::GEOM_Object::_nil(); - return; - } - - - /* nbSel == 1 */ - Standard_Boolean testResult = Standard_False; - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); - - if(!testResult || CORBA::is_nil( aSelectedObject )) - return; - - if(myEditCurrentArgument == GroupPoints->LineEdit1) - myPoint = aSelectedObject; - else if(myEditCurrentArgument == GroupPoints->LineEdit2) - myDir = aSelectedObject; - - myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) ); - displayPreview(); -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void PrimitiveGUI_TorusDlg::SetEditCurrentArgument() -{ - QPushButton* send = (QPushButton*)sender(); - - if(send == GroupPoints->PushButton1) { - myEditCurrentArgument = GroupPoints->LineEdit1; - globalSelection( GEOM_POINT ); - } - else if(send == GroupPoints->PushButton2) { - myEditCurrentArgument = GroupPoints->LineEdit2; - globalSelection( GEOM_LINE ); - } - - myEditCurrentArgument->setFocus(); - SelectionIntoArgument(); -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void PrimitiveGUI_TorusDlg::LineEditReturnPressed() -{ - QLineEdit* send = (QLineEdit*)sender(); - if(send == GroupPoints->LineEdit1 || - send == GroupPoints->LineEdit2) - { - myEditCurrentArgument = send; - GEOMBase_Skeleton::LineEditReturnPressed(); - } -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void PrimitiveGUI_TorusDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - ConstructorsClicked( getConstructorId() ); -} - - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void PrimitiveGUI_TorusDlg::enterEvent(QEvent* e) -{ - if ( !GroupConstructors->isEnabled() ) - ActivateThisDialog(); -} - - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : public slot to deactivate if active -//================================================================================= -void PrimitiveGUI_TorusDlg::DeactivateActiveDialog() -{ - GEOMBase_Skeleton::DeactivateActiveDialog(); -} - - -//================================================================================= -// function : ValueChangedInSpinBox -// purpose : -//================================================================================= -void PrimitiveGUI_TorusDlg::ValueChangedInSpinBox() -{ - displayPreview(); -} - - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr PrimitiveGUI_TorusDlg::createOperation() -{ - return getGeomEngine()->GetI3DPrimOperations( getStudyId() ); -} - - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool PrimitiveGUI_TorusDlg::isValid( QString& msg ) -{ - return getConstructorId() == 0 ? !(myPoint->_is_nil() || myDir->_is_nil()) : true; -} - - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool PrimitiveGUI_TorusDlg::execute( ObjectList& objects ) -{ - bool res = false; - - GEOM::GEOM_Object_var anObj; - - switch ( getConstructorId() ) - { - case 0 : - { - if (!CORBA::is_nil( myPoint ) && !CORBA::is_nil( myDir )){ - anObj = GEOM::GEOM_I3DPrimOperations::_narrow( getOperation() )->MakeTorusPntVecRR(myPoint, myDir, getRadius1(), getRadius2()); - res = true; - } - break; - } - case 1 : - { - anObj = GEOM::GEOM_I3DPrimOperations::_narrow( getOperation() )->MakeTorusRR(getRadius1(), getRadius2()); - res = true; - break; - } - } - - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - - return res; -} - - -//================================================================================= -// function : closeEvent -// purpose : -//================================================================================= -void PrimitiveGUI_TorusDlg::closeEvent( QCloseEvent* e ) -{ - GEOMBase_Skeleton::closeEvent( e ); -} - - -//================================================================================= -// function : getRadius1() -// purpose : -//================================================================================= -double PrimitiveGUI_TorusDlg::getRadius1() const -{ - int aConstructorId = getConstructorId(); - if (aConstructorId == 0) - return GroupPoints->SpinBox_DX->GetValue(); - else if (aConstructorId == 1) - return GroupDimensions->SpinBox_DX->GetValue(); - return 0; -} - - -//================================================================================= -// function : getRadius2() -// purpose : -//================================================================================= -double PrimitiveGUI_TorusDlg::getRadius2() const -{ - int aConstructorId = getConstructorId(); - if (aConstructorId == 0) - return GroupPoints->SpinBox_DY->GetValue(); - else if (aConstructorId == 1) - return GroupDimensions->SpinBox_DY->GetValue(); - return 0; -} diff --git a/src/PrimitiveGUI/PrimitiveGUI_TorusDlg.h b/src/PrimitiveGUI/PrimitiveGUI_TorusDlg.h deleted file mode 100644 index ef90ffbdf..000000000 --- a/src/PrimitiveGUI/PrimitiveGUI_TorusDlg.h +++ /dev/null @@ -1,84 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : PrimitiveGUI_TorusDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_TORUS_H -#define DIALOGBOX_TORUS_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_2Sel2Spin.h" -#include "DlgRef_2Spin.h" - - -//================================================================================= -// class : PrimitiveGUI_TorusDlg -// purpose : -//================================================================================= -class PrimitiveGUI_TorusDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - PrimitiveGUI_TorusDlg(GeometryGUI* theGeometryGUI, QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~PrimitiveGUI_TorusDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& ); - virtual bool execute( ObjectList& objects ); - - virtual void closeEvent( QCloseEvent* e ); - -private: - void Init(); - void enterEvent(QEvent* e); - double getRadius1() const; - double getRadius2() const; - - GeometryGUI* myGeometryGUI; - - GEOM::GEOM_Object_var myPoint, myDir; - - DlgRef_2Sel2Spin* GroupPoints; - DlgRef_2Spin* GroupDimensions; - - private slots: - void ClickOnOk(); - bool ClickOnApply(); - void ClickOnCancel(); - void ActivateThisDialog(); - void DeactivateActiveDialog(); - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - void ConstructorsClicked(int); - void ValueChangedInSpinBox(); - -}; - -#endif // DIALOGBOX_TORUS_H diff --git a/src/RepairGUI/Makefile.in b/src/RepairGUI/Makefile.in deleted file mode 100644 index cc5c61a4c..000000000 --- a/src/RepairGUI/Makefile.in +++ /dev/null @@ -1,78 +0,0 @@ -# GEOM REPAIRGUI : -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Author : Damien COQUERET (OCC) -# Module : GEOM -# $Header: - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -# header files -EXPORT_HEADERS= - -# Libraries targets -LIB = libRepairGUI.la - -LIB_SRC = RepairGUI.cxx \ - RepairGUI_SewingDlg.cxx \ - RepairGUI_SuppressFacesDlg.cxx \ - RepairGUI_ShapeProcessDlg.cxx \ - RepairGUI_CloseContourDlg.cxx \ - RepairGUI_RemoveIntWiresDlg.cxx \ - RepairGUI_RemoveHolesDlg.cxx \ - RepairGUI_DivideEdgeDlg.cxx \ - RepairGUI_FreeBoundDlg.cxx \ - RepairGUI_FreeFacesDlg.cxx \ - RepairGUI_GlueDlg.cxx - -LIB_MOC = \ - RepairGUI_SewingDlg.h \ - RepairGUI_SuppressFacesDlg.h \ - RepairGUI_ShapeProcessDlg.h \ - RepairGUI_CloseContourDlg.h \ - RepairGUI_RemoveIntWiresDlg.h \ - RepairGUI_RemoveHolesDlg.h \ - RepairGUI_DivideEdgeDlg.h \ - RepairGUI_FreeBoundDlg.h \ - RepairGUI_FreeFacesDlg.h \ - RepairGUI_GlueDlg.h - -LIB_CLIENT_IDL = SALOME_Exception.idl SALOME_GenericObj.idl SALOME_Component.idl - -LIB_SERVER_IDL = - -# additionnal information to compil and link file - -CPPFLAGS += $(QT_INCLUDES) $(VTK_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES) $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome -CXXFLAGS += -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome - -LDFLAGS += -lGEOMBase - -@CONCLUDE@ diff --git a/src/RepairGUI/RepairGUI.cxx b/src/RepairGUI/RepairGUI.cxx deleted file mode 100644 index fe3d7b27c..000000000 --- a/src/RepairGUI/RepairGUI.cxx +++ /dev/null @@ -1,146 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : RepairGUI.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header$ - -#include "RepairGUI.h" - -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" - -#include "RepairGUI_SewingDlg.h" // Method SEWING -#include "RepairGUI_SuppressFacesDlg.h" // Method SUPPRESS FACES -#include "RepairGUI_RemoveHolesDlg.h" // Method SUPPRESS HOLE -#include "RepairGUI_ShapeProcessDlg.h" // Method PROCESS SHAPE -#include "RepairGUI_CloseContourDlg.h" // Method CLOSE CONTOUR -#include "RepairGUI_RemoveIntWiresDlg.h"// Method REMOVE INTERNAL WIRES -#include "RepairGUI_DivideEdgeDlg.h" // Method DEVIDE EDGE -#include "RepairGUI_FreeBoundDlg.h" // Method FREE BOUNDARIES -#include "RepairGUI_FreeFacesDlg.h" // Method FREE FACES -#include "RepairGUI_GlueDlg.h" // Method GLUE FACES - -#include "utilities.h" - -using namespace std; - -RepairGUI* RepairGUI::myGUIObject = 0; - -//======================================================================= -// function : GetRepairGUI() -// purpose : Get the only RepairGUI object [ static ] -//======================================================================= -RepairGUI* RepairGUI::GetRepairGUI( GeometryGUI* parent ) -{ - if ( myGUIObject == 0 ) { - // init RepairGUI only once - myGUIObject = new RepairGUI( parent ); - } - return myGUIObject; -} - -//======================================================================= -// function : RepairGUI() -// purpose : Constructor -//======================================================================= -RepairGUI::RepairGUI( GeometryGUI* parent ) : GEOMGUI( parent ) -{ -} - - -//======================================================================= -// function : ~RepairGUI() -// purpose : Destructor -//======================================================================= -RepairGUI::~RepairGUI() -{ -} - - -//======================================================================= -// function : OnGUIEvent() -// purpose : -//======================================================================= -bool RepairGUI::OnGUIEvent(int theCommandID, SUIT_Desktop* parent) -{ - getGeometryGUI()->EmitSignalDeactivateDialog(); - - QDialog* aDlg = NULL; - switch (theCommandID) { - case 601: // SEWING - aDlg = new RepairGUI_SewingDlg( parent, "" ); - break; - case 602: // GLUE FACES - aDlg = new RepairGUI_GlueDlg( parent, "" ); - break; - case 603: // SUPPRESS FACES - aDlg = new RepairGUI_SuppressFacesDlg( parent, "" ); - break; - case 604: // SUPPRESS HOLES - aDlg = new RepairGUI_RemoveHolesDlg( parent, "" ); - break; - case 605: // SHAPE PROCESSING - aDlg = new RepairGUI_ShapeProcessDlg( parent, "" ); - break; - case 606: // CLOSE CONTOUR - aDlg = new RepairGUI_CloseContourDlg( parent, "" ); - break; - case 607: // REMOVE INTERNAL WIRES - aDlg = new RepairGUI_RemoveIntWiresDlg( parent, "" ); - break; - case 608: // ADD POINT ON EDGE - aDlg = new RepairGUI_DivideEdgeDlg( parent, "" ); - break; - case 609: // FREE BOUNDARIES - aDlg = new RepairGUI_FreeBoundDlg( getGeometryGUI(), parent ); - break; - case 610: // FREE FACES - aDlg = new RepairGUI_FreeFacesDlg( getGeometryGUI(), parent, "" ); - break; - default: - SUIT_Session::session()->activeApplication()->putInfo(tr("GEOM_PRP_COMMAND").arg(theCommandID)); - break; - } - - if ( aDlg ) - aDlg->show(); - - return true; -} - - -//===================================================================================== -// EXPORTED METHODS -//===================================================================================== -extern "C" -{ -#ifdef WNT - __declspec( dllexport ) -#endif - GEOMGUI* GetLibGUI( GeometryGUI* parent ) - { - return RepairGUI::GetRepairGUI( parent ); - } -} diff --git a/src/RepairGUI/RepairGUI.h b/src/RepairGUI/RepairGUI.h deleted file mode 100644 index 000fa1137..000000000 --- a/src/RepairGUI/RepairGUI.h +++ /dev/null @@ -1,57 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : RepairGUI.h -// Author : Damien COQUERET -// Module : GEOM -// $Header$ - -#ifndef REPAIRGUI_H -#define REPAIRGUI_H - -#include "GEOMGUI.h" -#include "GEOMBase.h" - -//================================================================================= -// class : RepairGUI -// purpose : -//================================================================================= -class RepairGUI : public GEOMGUI -{ -protected: - RepairGUI( GeometryGUI* parent ); // hide constructor to avoid direct creation - -public : - ~RepairGUI(); - - // Get the only RepairGUI object - static RepairGUI* GetRepairGUI( GeometryGUI* parent ); - - bool OnGUIEvent(int theCommandID, SUIT_Desktop* parent); - -private: - static RepairGUI* myGUIObject; // the only RepairGUI object - -}; - -#endif diff --git a/src/RepairGUI/RepairGUI_CloseContourDlg.cxx b/src/RepairGUI/RepairGUI_CloseContourDlg.cxx deleted file mode 100644 index ac98b0de8..000000000 --- a/src/RepairGUI/RepairGUI_CloseContourDlg.cxx +++ /dev/null @@ -1,398 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : RepairGUI_CloseContourDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "RepairGUI_CloseContourDlg.h" - -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" -#include "SUIT_Session.h" -#include "SALOME_ListIteratorOfListIO.hxx" - -#include "GEOMImpl_Types.hxx" - -#include -#include -#include - -#include - -using namespace std; - -//================================================================================= -// class : RepairGUI_CloseContourDlg() -// purpose : Constructs a RepairGUI_CloseContourDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -RepairGUI_CloseContourDlg::RepairGUI_CloseContourDlg(QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_CLOSECONTOUR"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_CLOSECONTOUR_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_CLOSECONTOUR_TITLE")); - RadioButton1->setPixmap(image0); - RadioButton2->close(TRUE); - RadioButton3->close(TRUE); - - GroupPoints = new DlgRef_1Sel_Ext(this, "GroupPoints"); - GroupPoints->GroupBox1->setTitle(tr("Contour to close")); - GroupPoints->TextLabel1->setText(tr("GEOM_SELECTED_SHAPE")); - GroupPoints->PushButton1->setPixmap(image1); - GroupPoints->LineEdit1->setReadOnly( true ); - - QGridLayout* aSelectWiresLay = new QGridLayout( 0, 1, 1, 0, 6, "aSelectWiresLay"); - - mySelectWiresBtn = new QPushButton( GroupPoints->GroupBox1, "mySelectWiresBtn" ); - mySelectWiresBtn->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, mySelectWiresBtn->sizePolicy().hasHeightForWidth() ) ); - mySelectWiresBtn->setText( trUtf8( "" ) ); - mySelectWiresBtn->setPixmap(image1); - - mySelectWiresEdt = new QLineEdit( GroupPoints->GroupBox1, "mySelectWiresEdt" ); - mySelectWiresEdt->setReadOnly( true ); - - mySelectWiresLbl = new QLabel( tr( "Contour to close" ), GroupPoints->GroupBox1, "ContourLbl" ); - mySelectWiresLbl->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, mySelectWiresLbl->sizePolicy().hasHeightForWidth() ) ); - - aSelectWiresLay->addWidget( mySelectWiresLbl, 0, 0 ); - aSelectWiresLay->addWidget( mySelectWiresBtn, 0, 1 ); - aSelectWiresLay->addWidget( mySelectWiresEdt, 0, 2 ); - QSpacerItem* spacer = new QSpacerItem( 0, 16, QSizePolicy::Minimum, QSizePolicy::Expanding ); - aSelectWiresLay->addItem( spacer, 1, 2 ); - - myIsVertexGr = new QButtonGroup( 2, Qt::Vertical, GroupPoints ); - myIsVertexGr->setFrameStyle( QFrame::NoFrame ); - myIsVertexGr->setRadioButtonExclusive( true ); - myIsVertexGr->insert( new QRadioButton( tr( "Close by common vertex" ), myIsVertexGr ), 0 ); - myIsVertexGr->insert( new QRadioButton( tr( "Close by new edge" ), myIsVertexGr ), 1 ); - myIsVertexGr->find( 0 )->toggle(); - - Layout1->addWidget(GroupPoints, 2, 0); - GroupPoints->getGroupBoxLayout()->addLayout( aSelectWiresLay, 1, 0 ); - GroupPoints->getGroupBoxLayout()->addMultiCellWidget(myIsVertexGr, 2, 2, 0, 2); - /***************************************************************/ - - Init(); -} - - -//================================================================================= -// function : ~RepairGUI_CloseContourDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -RepairGUI_CloseContourDlg::~RepairGUI_CloseContourDlg() -{ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void RepairGUI_CloseContourDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = GroupPoints->LineEdit1; - - myObject = GEOM::GEOM_Object::_nil(); - myWiresInd = new GEOM::short_array(); - myWiresInd->length( 0 ); - - //myGeomGUI->SetState( 0 ); - initSelection(); - - /* signals and slots connections */ - connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel())); - connect(myGeomGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog())); - connect(myGeomGUI, SIGNAL(SignalCloseAllDialogs()), this, SLOT(ClickOnCancel())); - - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - - connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(mySelectWiresBtn, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(mySelectWiresEdt, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - initName( tr( "CLOSE_CONTOUR_NEW_OBJ_NAME" ) ); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : Same than click on apply but close this dialog. -//================================================================================= -void RepairGUI_CloseContourDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool RepairGUI_CloseContourDlg::ClickOnApply() -{ - if ( !onAccept() ) - return false; - - initName(); - - myEditCurrentArgument = GroupPoints->LineEdit1; - myEditCurrentArgument->setText(""); - myObject = GEOM::GEOM_Object::_nil(); - myWiresInd->length( 0 ); - - initSelection(); - - return true; -} - - -//================================================================================= -// function : ClickOnCancel() -// purpose : -//================================================================================= -void RepairGUI_CloseContourDlg::ClickOnCancel() -{ - GEOMBase_Skeleton::ClickOnCancel(); -} - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection as changed or other case -// : used only by SelectButtonC1A1 (LineEditC1A1) -//================================================================================= -void RepairGUI_CloseContourDlg::SelectionIntoArgument() -{ - erasePreview(); - myEditCurrentArgument->setText( "" ); - mySelectWiresEdt->setText( "" ); - - if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) - myObject = GEOM::GEOM_Object::_nil(); - else if ( myEditCurrentArgument == mySelectWiresEdt ) - myWiresInd->length( 0 ); - - if ( IObjectCount() == 1 ) - { - Handle(SALOME_InteractiveObject) anIO = firstIObject(); - - if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) // face selection - { - Standard_Boolean aRes; - myObject = GEOMBase::ConvertIOinGEOMObject( anIO, aRes ); - if ( aRes && GEOMBase::IsShape( myObject ) ) - { - myEditCurrentArgument->setText( GEOMBase::GetName( myObject ) ); - TopoDS_Shape aShape; - if ( myGeomBase->GetShape( myObject, aShape, TopAbs_WIRE ) ) - mySelectWiresEdt->setText( myEditCurrentArgument->text() ); - } - else - myObject = GEOM::GEOM_Object::_nil(); - } - else if ( myEditCurrentArgument == mySelectWiresEdt ) - { - TColStd_IndexedMapOfInteger aMap; - ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr()->GetIndexes( anIO, aMap ); - const int n = aMap.Extent(); - myWiresInd->length( n ); - for ( int i = 1; i <= n; i++ ) - myWiresInd[ i-1 ] = aMap( i ); - if ( n ) - myEditCurrentArgument->setText( QString::number( n ) + "_" + tr( "GEOM_WIRE" ) + tr( "_S_" ) ); - } - } -} - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void RepairGUI_CloseContourDlg::SetEditCurrentArgument() -{ - const QObject* send = sender(); - if ( send == GroupPoints->PushButton1 ) - myEditCurrentArgument = GroupPoints->LineEdit1; - else if ( send == mySelectWiresBtn && !myObject->_is_nil() ) - myEditCurrentArgument = mySelectWiresEdt; - if ( myEditCurrentArgument ) - { - initSelection(); - myEditCurrentArgument->setFocus(); - SelectionIntoArgument(); - } -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void RepairGUI_CloseContourDlg::LineEditReturnPressed() -{ - const QObject* send = sender(); - if( send == GroupPoints->LineEdit1 || send == mySelectWiresEdt ) - { - myEditCurrentArgument = (QLineEdit*)send; - GEOMBase_Skeleton::LineEditReturnPressed(); - } -} - - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : -//================================================================================= -void RepairGUI_CloseContourDlg::DeactivateActiveDialog() -{ - //myGeomGUI->SetState( -1 ); - GEOMBase_Skeleton::DeactivateActiveDialog(); -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void RepairGUI_CloseContourDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - myEditCurrentArgument = GroupPoints->LineEdit1; - myEditCurrentArgument->setText(""); - mySelectWiresEdt->setText(""); - myObject = GEOM::GEOM_Object::_nil(); - myWiresInd->length( 0 ); - - //myGeomGUI->SetState( 0 ); - initSelection(); -} - - -//================================================================================= -// function : enterEvent() -// purpose : Mouse enter onto the dialog to activate it -//================================================================================= -void RepairGUI_CloseContourDlg::enterEvent(QEvent* e) -{ - if ( !GroupConstructors->isEnabled() ) - ActivateThisDialog(); -} - - -//================================================================================= -// function : closeEvent() -// purpose : -//================================================================================= -void RepairGUI_CloseContourDlg::closeEvent(QCloseEvent* e) -{ - //myGeomGUI->SetState( -1 ); - GEOMBase_Skeleton::closeEvent( e ); -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr RepairGUI_CloseContourDlg::createOperation() -{ - return getGeomEngine()->GetIHealingOperations( getStudyId() ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool RepairGUI_CloseContourDlg::isValid( QString& msg ) -{ - TopoDS_Shape aTmpShape; - return !myObject->_is_nil() && ( myWiresInd->length() || myGeomBase->GetShape( myObject, aTmpShape, TopAbs_WIRE ) ); -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool RepairGUI_CloseContourDlg::execute( ObjectList& objects ) -{ - GEOM::GEOM_Object_var anObj = GEOM::GEOM_IHealingOperations::_narrow( getOperation() )->CloseContour( myObject, myWiresInd, getIsByVertex() ); - bool aResult = !anObj->_is_nil(); - if ( aResult ) - objects.push_back( anObj._retn() ); - - return aResult; -} - -//================================================================================= -// function : getIsByVertex -// purpose : -//================================================================================= -bool RepairGUI_CloseContourDlg::getIsByVertex() const -{ - return myIsVertexGr->find( 0 )->isOn(); -} - -//================================================================================= -// function : initSelection -// purpose : -//================================================================================= -void RepairGUI_CloseContourDlg::initSelection() -{ - if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) - { - TColStd_MapOfInteger aTypes; - aTypes.Add( GEOM_COMPOUND ); - aTypes.Add( GEOM_SOLID ); - aTypes.Add( GEOM_SHELL ); - aTypes.Add( GEOM_FACE ); - aTypes.Add( GEOM_WIRE ); - - globalSelection( aTypes ); - } - else if ( myEditCurrentArgument == mySelectWiresEdt ) - { - localSelection( myObject, TopAbs_EDGE ); - localSelection( myObject, TopAbs_WIRE ); - } -} - - diff --git a/src/RepairGUI/RepairGUI_CloseContourDlg.h b/src/RepairGUI/RepairGUI_CloseContourDlg.h deleted file mode 100644 index 08c183664..000000000 --- a/src/RepairGUI/RepairGUI_CloseContourDlg.h +++ /dev/null @@ -1,88 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : RepairGUI_CloseContourDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_CloseContour_H -#define DIALOGBOX_CloseContour_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_1Sel_Ext.h" - -#include - -#include -#include - -//================================================================================= -// class : RepairGUI_CloseContourDlg -// purpose : -//================================================================================= -class RepairGUI_CloseContourDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - RepairGUI_CloseContourDlg(QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~RepairGUI_CloseContourDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& ); - virtual bool execute( ObjectList& objects ); - -private : - void Init(); - void enterEvent(QEvent* e); - void closeEvent(QCloseEvent* e); - void initSelection(); - - bool getIsByVertex() const; - - GEOM::GEOM_Object_var myObject; - GEOM::short_array_var myWiresInd; - - DlgRef_1Sel_Ext* GroupPoints; - QButtonGroup* myIsVertexGr; - QLabel* mySelectWiresLbl; - QPushButton* mySelectWiresBtn; - QLineEdit* mySelectWiresEdt; - -private slots: - void ClickOnOk(); - bool ClickOnApply(); - void ClickOnCancel(); - - void ActivateThisDialog(); - void DeactivateActiveDialog(); - - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); -}; - -#endif // DIALOGBOX_CloseContour_H diff --git a/src/RepairGUI/RepairGUI_DivideEdgeDlg.cxx b/src/RepairGUI/RepairGUI_DivideEdgeDlg.cxx deleted file mode 100644 index 04884566b..000000000 --- a/src/RepairGUI/RepairGUI_DivideEdgeDlg.cxx +++ /dev/null @@ -1,365 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : RepairGUI_DivideEdgeDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "RepairGUI_DivideEdgeDlg.h" - -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" -#include "SUIT_Session.h" -#include "SALOME_ListIteratorOfListIO.hxx" - -#include "GEOMImpl_Types.hxx" - -#include - -#include - -using namespace std; - -//================================================================================= -// class : RepairGUI_DivideEdgeDlg() -// purpose : Constructs a RepairGUI_DivideEdgeDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -RepairGUI_DivideEdgeDlg::RepairGUI_DivideEdgeDlg(QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_DIVIDE_EDGE"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_DIVIDE_EDGE_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_DIVIDE_EDGE_TITLE")); - RadioButton1->setPixmap(image0); - RadioButton2->close(TRUE); - RadioButton3->close(TRUE); - - GroupPoints = new DlgRef_1Sel_Ext(this, "GroupPoints"); - GroupPoints->GroupBox1->setTitle(tr("GEOM_ADD_POINT")); - GroupPoints->TextLabel1->setText(tr("GEOM_EDGE")); - GroupPoints->PushButton1->setPixmap(image1); - GroupPoints->LineEdit1->setReadOnly( true ); - - myIsParameterGr = new QButtonGroup( 2, Qt::Vertical, GroupPoints ); - myIsParameterGr->setFrameStyle( QFrame::NoFrame ); - myIsParameterGr->setRadioButtonExclusive( true ); - myIsParameterGr->insert( new QRadioButton( tr( "GEOM_BY_PARAMETER" ), myIsParameterGr ), 0 ); - myIsParameterGr->insert( new QRadioButton( tr( "GEOM_BY_LENGTH" ), myIsParameterGr ), 1 ); - myIsParameterGr->find( 0 )->toggle(); - - QGridLayout* aLay = new QGridLayout( 0, 1, 2, 0, 6, "aLay" ); - myValEdt = new QtxDblSpinBox(0., 1., 0.1, GroupPoints->GroupBox1);// QAD_SpinBoxDbl( GroupPoints->GroupBox1, 0., 1., 0.1, 3 ); - myValEdt->setPrecision( 3 ); - myValEdt->setValue( 0.5 ); - QLabel* aLbl1 = new QLabel( tr( "GEOM_VALUE" ), GroupPoints->GroupBox1 ); - aLay->addWidget( aLbl1, 0, 0 ); - aLay->addWidget( myValEdt, 0, 1 ); - - Layout1->addWidget(GroupPoints, 2, 0); - GroupPoints->getGroupBoxLayout()->addMultiCellWidget(myIsParameterGr, 1, 1, 0, 2); - GroupPoints->getGroupBoxLayout()->addLayout( aLay, 2, 0 ); - /***************************************************************/ - - Init(); -} - - -//================================================================================= -// function : ~RepairGUI_DivideEdgeDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -RepairGUI_DivideEdgeDlg::~RepairGUI_DivideEdgeDlg() -{ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void RepairGUI_DivideEdgeDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = GroupPoints->LineEdit1; - - myObject = GEOM::GEOM_Object::_nil(); - myIndex = -1; - - //myGeomGUI->SetState( 0 ); - initSelection(); - - /* signals and slots connections */ - connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel())); - connect(myGeomGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog())); - connect(myGeomGUI, SIGNAL(SignalCloseAllDialogs()), this, SLOT(ClickOnCancel())); - - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - - connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - - initName( tr( "DEVIDE_EDGE_NEW_OBJECT_NAME" ) ); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : Same than click on apply but close this dialog. -//================================================================================= -void RepairGUI_DivideEdgeDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool RepairGUI_DivideEdgeDlg::ClickOnApply() -{ - if ( !onAccept() ) - return false; - - initName(); - - myEditCurrentArgument->setText(""); - myObject = GEOM::GEOM_Object::_nil(); - myIndex = -1; - - initSelection(); - - return true; -} - - -//================================================================================= -// function : ClickOnCancel() -// purpose : -//================================================================================= -void RepairGUI_DivideEdgeDlg::ClickOnCancel() -{ - GEOMBase_Skeleton::ClickOnCancel(); -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection as changed or other case -// : used only by SelectButtonC1A1 (LineEditC1A1) -//================================================================================= -void RepairGUI_DivideEdgeDlg::SelectionIntoArgument() -{ - myEditCurrentArgument->setText(""); - - myObject = GEOM::GEOM_Object::_nil(); - myIndex = -1; - - if ( IObjectCount() == 1 ) - { - Handle(SALOME_InteractiveObject) anIO = firstIObject(); - Standard_Boolean aRes; - GEOM::GEOM_Object_var aSelectedObj = GEOMBase::ConvertIOinGEOMObject( anIO, aRes ); - if ( !CORBA::is_nil( aSelectedObj ) && aRes ) - { - TopoDS_Shape aShape; - if ( myGeomBase->GetShape( aSelectedObj, aShape, TopAbs_SHAPE ) ) - { - const int aType = aShape.ShapeType(); - if ( aType <= TopAbs_EDGE ) // edge, wire, face, shell, solid, compound - { - GEOM::short_array anIndexes; - - TColStd_IndexedMapOfInteger aMap; - ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr()->GetIndexes( anIO, aMap ); - - if ( !aMap.IsEmpty() ) // subshape selection - { - myIndex = aMap( 1 ); - myObject = aSelectedObj; - myEditCurrentArgument->setText( tr( "GEOM_EDGE" ) + "_1" ); - } - else if ( aType == TopAbs_EDGE ) // single shape selection - { - myIndex = -1; - myObject = aSelectedObj; - myEditCurrentArgument->setText( GEOMBase::GetName( myObject ) ); - } - else // face, shell, solid or compound was selected, and NOT its subshape. - { - myIndex = -1; - myObject = GEOM::GEOM_Object::_nil(); - } - } - } - } - } -} - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void RepairGUI_DivideEdgeDlg::SetEditCurrentArgument() -{ - if( sender() == GroupPoints->PushButton1 ) - { - GroupPoints->LineEdit1->setFocus(); - myEditCurrentArgument = GroupPoints->LineEdit1; - } - SelectionIntoArgument(); -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void RepairGUI_DivideEdgeDlg::LineEditReturnPressed() -{ - if( sender() == GroupPoints->LineEdit1 ) - { - myEditCurrentArgument = GroupPoints->LineEdit1; - GEOMBase_Skeleton::LineEditReturnPressed(); - } -} - - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : -//================================================================================= -void RepairGUI_DivideEdgeDlg::DeactivateActiveDialog() -{ - //myGeomGUI->SetState( -1 ); - GEOMBase_Skeleton::DeactivateActiveDialog(); -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void RepairGUI_DivideEdgeDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - - myObject = GEOM::GEOM_Object::_nil(); - myIndex = -1; - - //myGeomGUI->SetState( 0 ); - initSelection(); -} - - -//================================================================================= -// function : enterEvent() -// purpose : Mouse enter onto the dialog to activate it -//================================================================================= -void RepairGUI_DivideEdgeDlg::enterEvent(QEvent* e) -{ - if ( !GroupConstructors->isEnabled() ) - ActivateThisDialog(); -} - - -//================================================================================= -// function : closeEvent() -// purpose : -//================================================================================= -void RepairGUI_DivideEdgeDlg::closeEvent(QCloseEvent* e) -{ - //myGeomGUI->SetState( -1 ); - GEOMBase_Skeleton::closeEvent( e ); -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr RepairGUI_DivideEdgeDlg::createOperation() -{ - return getGeomEngine()->GetIHealingOperations( getStudyId() ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool RepairGUI_DivideEdgeDlg::isValid( QString& msg ) -{ - return !myObject->_is_nil(); -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool RepairGUI_DivideEdgeDlg::execute( ObjectList& objects ) -{ - GEOM::GEOM_Object_var anObj = GEOM::GEOM_IHealingOperations::_narrow( getOperation() )->DivideEdge( - myObject, myIndex, myValEdt->value(), getIsByParameter() ); - bool aResult = !anObj->_is_nil(); - if ( aResult ) - objects.push_back( anObj._retn() ); - - return aResult; -} - -//================================================================================= -// function : getIsByParameter -// purpose : -//================================================================================= -bool RepairGUI_DivideEdgeDlg::getIsByParameter() const -{ - return myIsParameterGr->find( 0 )->isOn(); -} - -//================================================================================= -// function : initSelection -// purpose : -//================================================================================= -void RepairGUI_DivideEdgeDlg::initSelection() -{ - GEOM::GEOM_Object_var aNullGeomObject; - localSelection( aNullGeomObject, TopAbs_EDGE ); // load local selection on ALL objects -} - - - diff --git a/src/RepairGUI/RepairGUI_DivideEdgeDlg.h b/src/RepairGUI/RepairGUI_DivideEdgeDlg.h deleted file mode 100644 index 801fdcc10..000000000 --- a/src/RepairGUI/RepairGUI_DivideEdgeDlg.h +++ /dev/null @@ -1,87 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : RepairGUI_DivideEdgeDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_DivideEdge_H -#define DIALOGBOX_DivideEdge_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_1Sel_Ext.h" -#include "QtxDblSpinBox.h" - -#include - -#include -#include - -//================================================================================= -// class : RepairGUI_DivideEdgeDlg -// purpose : -//================================================================================= -class RepairGUI_DivideEdgeDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - RepairGUI_DivideEdgeDlg(QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~RepairGUI_DivideEdgeDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& ); - virtual bool execute( ObjectList& objects ); - -private : - void Init(); - void enterEvent(QEvent* e); - void closeEvent(QCloseEvent* e); - void initSelection(); - - bool getIsByParameter() const; - - GEOM::GEOM_Object_var myObject; - int myIndex; - - DlgRef_1Sel_Ext* GroupPoints; - QButtonGroup* myIsParameterGr; - QtxDblSpinBox* myValEdt; - -private slots: - void ClickOnOk(); - bool ClickOnApply(); - void ClickOnCancel(); - - void ActivateThisDialog(); - void DeactivateActiveDialog(); - - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); -}; - -#endif // DIALOGBOX_DivideEdge_H diff --git a/src/RepairGUI/RepairGUI_FreeBoundDlg.cxx b/src/RepairGUI/RepairGUI_FreeBoundDlg.cxx deleted file mode 100644 index add5736ac..000000000 --- a/src/RepairGUI/RepairGUI_FreeBoundDlg.cxx +++ /dev/null @@ -1,282 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : RepairGUI_FreeBoundDlg.cxx -// Author : Sergey LITONIN -// Module : GEOM -// $Header$ - -#include "RepairGUI_FreeBoundDlg.h" -#include "GEOMBase.h" -#include "GeometryGUI.h" -#include "GEOM_Displayer.h" -#include "GEOMImpl_Types.hxx" - -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" -#include "SUIT_Session.h" - -#include - -#include -#include -#include -#include -#include - -#define SPACING 5 -#define MARGIN 10 - -/* - Calss : RepairGUI_FreeBoundDlg - Description : Dialog for displaying free boundaries of selected face, shell or solid -*/ - - -//================================================================================= -// function : RepairGUI_FreeBoundDlg -// purpose : Constructor -//================================================================================= -RepairGUI_FreeBoundDlg::RepairGUI_FreeBoundDlg( GeometryGUI* theGUI, QWidget* theParent ) -: QDialog( theParent, "RepairGUI_FreeBoundDlg", false, - WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu | WDestructiveClose ), - GEOMBase_Helper( dynamic_cast( theParent ) ), - myGeomGUI ( theGUI ) -{ - setCaption( tr( "CAPTION" ) ); - - QPixmap iconSelect( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM",tr( "ICON_SELECT" ) ) ); - - QGroupBox* aMainGrp = new QGroupBox( 1, Qt::Horizontal, tr( "FREE_BOUND" ), this ); - - QGroupBox* aSelGrp = new QGroupBox( 1, Qt::Vertical, aMainGrp ); - aSelGrp->setInsideMargin( 0 ); - aSelGrp->setFrameStyle( QFrame::NoFrame ); - new QLabel( tr( "GEOM_OBJECT" ), aSelGrp ); - ( new QPushButton( aSelGrp ) )->setPixmap( iconSelect ); - myEdit = new QLineEdit( aSelGrp ); - myEdit->setReadOnly( true ); - myEdit->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - - myClosedLbl = new QLabel( tr( "NUMBER_CLOSED" ), aMainGrp ); - myOpenLbl = new QLabel( tr( "NUMBER_OPEN" ), aMainGrp ); - - QFrame* aFrame = new QFrame( this ); - aFrame->setFrameStyle( QFrame::Box | QFrame::Sunken ); - QPushButton* aCloseBtn = new QPushButton( tr( "GEOM_BUT_CLOSE" ), aFrame ); - QHBoxLayout* aBtnLay = new QHBoxLayout( aFrame, MARGIN, SPACING ); - aBtnLay->addItem( new QSpacerItem( 0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum ) ); - aBtnLay->addWidget( aCloseBtn ); - aBtnLay->addItem( new QSpacerItem( 0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum ) ); - - QVBoxLayout* aLay = new QVBoxLayout( this ); - aLay->setSpacing( SPACING ); - aLay->setMargin( MARGIN ); - aLay->addWidget( aMainGrp ); - aLay->addWidget( aFrame ); - - connect( aCloseBtn, SIGNAL( clicked() ), SLOT( onClose() ) ); - - Init(); -} - -//================================================================================= -// function : ~RepairGUI_FreeBoundDlg -// purpose : Destructor -//================================================================================= -RepairGUI_FreeBoundDlg::~RepairGUI_FreeBoundDlg() -{ -} - -//================================================================================= -// function : onClose -// purpose : SLOT. Called when "close" button pressed. Close dialog -//================================================================================= -void RepairGUI_FreeBoundDlg::onClose() -{ - globalSelection(); - disconnect( ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), 0, this, 0 ); - myGeomGUI->SetActiveDialogBox( 0 ); - reject(); - erasePreview(); -} - -//================================================================================= -// function : onDeactivate -// purpose : Deactivate this dialog -//================================================================================= -void RepairGUI_FreeBoundDlg::onDeactivate() -{ - setEnabled(false); - globalSelection(); - disconnect( ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), 0, this, 0 ); - myGeomGUI->SetActiveDialogBox( 0 ); -} - -//================================================================================= -// function : onActivate -// purpose : Activate this dialog -//================================================================================= -void RepairGUI_FreeBoundDlg::onActivate() -{ - myGeomGUI->EmitSignalDeactivateDialog(); - setEnabled( true ); - myGeomGUI->SetActiveDialogBox( this ); - connect( ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL( currentSelectionChanged() ), SLOT( onSelectionDone() ) ); - activateSelection(); - onSelectionDone(); -} - -//================================================================================= -// function : onSelectionDone -// purpose : SLOT. Called when selection changed. -//================================================================================= -void RepairGUI_FreeBoundDlg::onSelectionDone() -{ - if( IObjectCount() != 1 ) - return; - - Standard_Boolean isOk = Standard_False; - GEOM::GEOM_Object_var anObj = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), isOk ); - - if ( !isOk || anObj->_is_nil() || !GEOMBase::IsShape( anObj ) ) - return; - else - { - myObj = anObj; - displayPreview( false, true, true, 3 ); - } - -} - -//================================================================================= -// function : Init -// purpose : Initialize dialog fields -//================================================================================= -void RepairGUI_FreeBoundDlg::Init() -{ - myNbClosed = myNbOpen = 0; - myObj = GEOM::GEOM_Object::_nil(); - - connect( myGeomGUI, SIGNAL( SignalDeactivateActiveDialog() ), SLOT ( onDeactivate() ) ); - connect( ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL( currentSelectionChanged() ), SLOT( onSelectionDone() ) ); - - activateSelection(); - onSelectionDone(); -} - -//================================================================================= -// function : enterEvent -// purpose : Activate dialog -//================================================================================= -void RepairGUI_FreeBoundDlg::enterEvent( QEvent* e ) -{ - onActivate(); -} - -//================================================================================= -// function : closeEvent -// purpose : Close dialog -//================================================================================= -void RepairGUI_FreeBoundDlg::closeEvent( QCloseEvent* e ) -{ - onClose(); -} - -//================================================================================= -// function : activateSelection -// purpose : activate selection of faces, shells, and solids -//================================================================================= -void RepairGUI_FreeBoundDlg::activateSelection() -{ - TColStd_MapOfInteger aMap; - aMap.Add( GEOM_FACE ); - aMap.Add( GEOM_SHELL ); - aMap.Add( GEOM_SOLID ); - aMap.Add( GEOM_COMPOUND ); - globalSelection( aMap ); -} - -//================================================================================= -// function : createOperation -// purpose : Create operation -//================================================================================= -GEOM::GEOM_IOperations_ptr RepairGUI_FreeBoundDlg::createOperation() -{ - return getGeomEngine()->GetIHealingOperations( getStudyId() ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool RepairGUI_FreeBoundDlg::isValid( QString& msg ) -{ - return !myObj->_is_nil(); -} - -//================================================================================= -// function : execute -// purpose : Get free boundaries -//================================================================================= -bool RepairGUI_FreeBoundDlg::execute( ObjectList& objects ) -{ - if ( !IsPreview() || myObj->_is_nil() ) - return false; - - GEOM::ListOfGO_var aClosed, anOpen; - - bool result = GEOM::GEOM_IHealingOperations::_narrow( - getOperation() )->GetFreeBoundary( myObj, aClosed, anOpen ); - - if ( result ) - { - myNbClosed = aClosed->length(); - myNbOpen = anOpen->length(); - int i; - for ( i = 0; i < myNbClosed; i++ ) - objects.push_back( aClosed[i]._retn() ); - for ( i = 0; i < myNbOpen; i++ ) - objects.push_back( anOpen[i]._retn() ); - - myEdit->setText( GEOMBase::GetName( myObj ) ); - QString aLabelText = tr( "NUMBER_CLOSED" ) + QString( "%1" ).arg( myNbClosed ); - myClosedLbl->setText( aLabelText ); - aLabelText = tr( "NUMBER_OPEN" ) + QString( "%1" ).arg( myNbOpen ); - myOpenLbl->setText( aLabelText ); - } - else - { - myEdit->setText( GEOMBase::GetName( myObj ) ); - myClosedLbl->setText( tr( "NUMBER_CLOSED" ) ); - myOpenLbl->setText( tr( "NUMBER_OPEN" ) ); - } - - return result; -} - - - diff --git a/src/RepairGUI/RepairGUI_FreeBoundDlg.h b/src/RepairGUI/RepairGUI_FreeBoundDlg.h deleted file mode 100644 index e317cc3a7..000000000 --- a/src/RepairGUI/RepairGUI_FreeBoundDlg.h +++ /dev/null @@ -1,92 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : RepairGUI_FreeBoundDlg.h -// Author : Sergey LITONIN -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_WHATIS_H -#define DIALOGBOX_WHATIS_H - -#include -#include "GEOMBase_Helper.h" - -class QLineEdit; -class QLabel; -class GEOM_Displayer; -class GeometryGUI; - -//================================================================================= -// class : RepairGUI_FreeBoundDlg -// purpose : Dialog for displaying free boundaries of selected face, shell or solid -//================================================================================= -class RepairGUI_FreeBoundDlg : public QDialog, - public GEOMBase_Helper -{ - Q_OBJECT - -public: - RepairGUI_FreeBoundDlg( GeometryGUI*, QWidget* ); - ~RepairGUI_FreeBoundDlg(); - -private slots: - - void onClose(); - void onDeactivate(); - void onActivate(); - void onSelectionDone(); - -private: - - void Init(); - void enterEvent( QEvent* e ); - void closeEvent( QCloseEvent* e ); - void activateSelection(); - - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool execute( ObjectList& objects ); - virtual bool isValid( QString& ); - -private: - - QLineEdit* myEdit; - QLabel* myClosedLbl; - QLabel* myOpenLbl; - GEOM::GEOM_Object_var myObj; - GeometryGUI* myGeomGUI; - int myNbClosed; - int myNbOpen; -}; - -#endif // DIALOGBOX_WHATIS_H - - - - - - - - - - diff --git a/src/RepairGUI/RepairGUI_FreeFacesDlg.cxx b/src/RepairGUI/RepairGUI_FreeFacesDlg.cxx deleted file mode 100644 index 04c2b19b0..000000000 --- a/src/RepairGUI/RepairGUI_FreeFacesDlg.cxx +++ /dev/null @@ -1,330 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : RepairGUI_FreeFacesDlg.cxx -// Author : VKN -// Module : GEOM -// $Header$ - -#include "RepairGUI_FreeFacesDlg.h" - -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" -#include "SalomeApp_Tools.h" - -#include "SUIT_Session.h" -#include "SUIT_OverrideCursor.h" - -#include "SALOME_ListIteratorOfListIO.hxx" - -#include "GEOMImpl_Types.hxx" -#include -#include -#include -#include "GEOMBase.h" -#include "GeometryGUI.h" -#include "GEOM_Displayer.h" - -#include -#include -#include -#include -#include -#include -#define SPACING 5 -#define MARGIN 10 -#define MIN_WIDTH 200 - -using namespace std; - -//================================================================================= -// class : RepairGUI_FreeFacesDlg() -// purpose : Constructs a RepairGUI_FreeFacesDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -RepairGUI_FreeFacesDlg::RepairGUI_FreeFacesDlg(GeometryGUI* GUI, QWidget* parent, const char* name, bool modal, WFlags fl) -:QDialog( parent, "RepairGUI_FreeBoundDlg", false, - WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu | WDestructiveClose ), - GEOMBase_Helper( dynamic_cast( parent ) ), - myGeomGUI( GUI ) -{ - myDisplayer = 0; - - setSizeGripEnabled( TRUE ); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_FREE_FACES_TITLE")); - - /***************************************************************/ - - QGroupBox* aMainGrp = new QGroupBox( 1, Qt::Horizontal, tr( "GEOM_SELECTED_SHAPE" ), this ); - - - QGroupBox* aSelGrp = new QGroupBox( 1, Qt::Vertical, aMainGrp ); - - aSelGrp->setInsideMargin( 0 ); - aSelGrp->setFrameStyle( QFrame::NoFrame ); - new QLabel( tr( "GEOM_OBJECT" ), aSelGrp ); - mySelBtn = new QPushButton( aSelGrp ); - mySelBtn->setPixmap( image1 ); - myEdit = new QLineEdit( aSelGrp ); - myEdit->setReadOnly( true ); - myEdit->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myEdit->setMinimumWidth( MIN_WIDTH ); - - QFrame* aFrame = new QFrame( this ); - aFrame->setFrameStyle( QFrame::Box | QFrame::Sunken ); - QPushButton* aCloseBtn = new QPushButton( tr( "GEOM_BUT_CLOSE" ), aFrame ); - QHBoxLayout* aBtnLay = new QHBoxLayout( aFrame, MARGIN, SPACING ); - aBtnLay->addItem( new QSpacerItem( 0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum ) ); - aBtnLay->addWidget( aCloseBtn ); - aBtnLay->addItem( new QSpacerItem( 0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum ) ); - - QVBoxLayout* aLay = new QVBoxLayout( this ); - aLay->setSpacing( SPACING ); - aLay->setMargin( MARGIN ); - aLay->addWidget( aMainGrp ); - aLay->addItem( new QSpacerItem( 0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum ) ); - aLay->addWidget( aFrame ); - - connect( aCloseBtn, SIGNAL( clicked() ), SLOT( onClose() ) ); - connect( mySelBtn, SIGNAL( clicked() ), - this, SLOT ( onSetEditCurrentArgument() ) ); - /***************************************************************/ - - Init(); -} - - -//================================================================================= -// function : ~RepairGUI_FreeFacesDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -RepairGUI_FreeFacesDlg::~RepairGUI_FreeFacesDlg() -{ -} - - -//================================================================================= -// function : onClose -// purpose : SLOT. Called when "close" button pressed. Close dialog -//================================================================================= -void RepairGUI_FreeFacesDlg::onClose() -{ - globalSelection(); - disconnect( ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), 0, this, 0 ); - myGeomGUI->SetActiveDialogBox( 0 ); - reject(); - erasePreview(); -} - -//================================================================================= -// function : onDeactivate -// purpose : Deactivate this dialog -//================================================================================= -void RepairGUI_FreeFacesDlg::onDeactivate() -{ - setEnabled(false); - globalSelection(); - disconnect( ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), 0, this, 0 ); - myGeomGUI->SetActiveDialogBox( 0 ); -} - -//================================================================================= -// function : onActivate -// purpose : Activate this dialog -//================================================================================= -void RepairGUI_FreeFacesDlg::onActivate() -{ - myGeomGUI->EmitSignalDeactivateDialog(); - setEnabled( true ); - myGeomGUI->SetActiveDialogBox( this ); - connect( ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL( currentSelectionChanged() ), SLOT ( onSelectionDone() ) ); - activateSelection(); -} - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void RepairGUI_FreeFacesDlg::Init() -{ - myObj = GEOM::GEOM_Object::_nil(); - - /* signals and slots connections */ - connect( myGeomGUI, SIGNAL( SignalDeactivateActiveDialog() ), SLOT ( onDeactivate() ) ); - connect( ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL( currentSelectionChanged() ), SLOT ( onSelectionDone() ) ); - - activateSelection(); - onSelectionDone(); -} - -//================================================================================= -// function : onSelectionDone -// purpose : SLOT. Called when selection changed. -//================================================================================= -void RepairGUI_FreeFacesDlg::onSelectionDone() -{ - erasePreview(); - if( IObjectCount() != 1 ) - { - myEdit->setText( "" ); - return; - } - - Standard_Boolean isOk = Standard_False; - GEOM::GEOM_Object_var anObj = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), isOk ); - - if ( !isOk || anObj->_is_nil() || !GEOMBase::IsShape( anObj ) ) - { - myEdit->setText( "" ); - return; - } - else - { - myObj = anObj; - displayPreview( false, true, true, 3 ); - } -} - -//================================================================================= -// function : enterEvent() -// purpose : Mouse enter onto the dialog to activate it -//================================================================================= -void RepairGUI_FreeFacesDlg::enterEvent(QEvent* e) -{ - onActivate(); -} - -//================================================================================= -// function : activateSelection -// purpose : activate selection of faces, shells, and solids -//================================================================================= -void RepairGUI_FreeFacesDlg::activateSelection() -{ - TColStd_MapOfInteger aMap; - aMap.Add( GEOM_SOLID ); - aMap.Add( GEOM_COMPOUND ); - globalSelection( aMap ); -} - -//================================================================================= -// function : closeEvent() -// purpose : -//================================================================================= -void RepairGUI_FreeFacesDlg::closeEvent(QCloseEvent* e) -{ - onClose(); -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr RepairGUI_FreeFacesDlg::createOperation() -{ - return getGeomEngine()->GetIShapesOperations( getStudyId() ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool RepairGUI_FreeFacesDlg::isValid( QString& msg ) -{ - return !myObj->_is_nil() ; -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool RepairGUI_FreeFacesDlg::execute( ObjectList& objects ) -{ - bool aResult = false; - GEOM::ListOfLong_var aFaceLst = - GEOM::GEOM_IShapesOperations::_narrow( getOperation() )->GetFreeFacesIDs( myObj ); - TopoDS_Shape aSelShape; - TopoDS_Shape aFace; - TopTools_IndexedMapOfShape anIndices; - if ( !myObj->_is_nil() && GEOMBase::GetShape( myObj, aSelShape ) ) - { - myEdit->setText( GEOMBase::GetName( myObj ) ); - QString aMess; - if ( !isValid( aMess ) ) - { - erasePreview( true ); - return false; - } - - SUIT_OverrideCursor(); - - TopExp::MapShapes( aSelShape, anIndices); - SALOME_Prs* aPrs = 0; - - for ( int i = 0, n = aFaceLst->length(); i < n; i++ ) - { - aFace = anIndices.FindKey( aFaceLst[i] ); - try - { - getDisplayer()->SetColor( Quantity_NOC_RED ); - getDisplayer()->SetToActivate( false ); - aPrs = !aFace.IsNull() ? getDisplayer()->BuildPrs( aFace ) : 0; - if ( aPrs ) - displayPreview( aPrs, true ); - } - catch( const SALOME::SALOME_Exception& e ) - { - SalomeApp_Tools::QtCatchCorbaException( e ); - } - } - } - return aResult; -} - -//================================================================ -// Function : getDisplayer -// Purpose : -//================================================================ -GEOM_Displayer* RepairGUI_FreeFacesDlg::getDisplayer() -{ - if ( !myDisplayer ) - myDisplayer = new GEOM_Displayer( getStudy() ); - return myDisplayer; -} - -//================================================================================= -// function : SetEditCurrentArgument -// purpose : -//================================================================================= -void RepairGUI_FreeFacesDlg::onSetEditCurrentArgument() -{ - myEdit->setFocus(); - onSelectionDone(); -} - diff --git a/src/RepairGUI/RepairGUI_FreeFacesDlg.h b/src/RepairGUI/RepairGUI_FreeFacesDlg.h deleted file mode 100644 index f42589b24..000000000 --- a/src/RepairGUI/RepairGUI_FreeFacesDlg.h +++ /dev/null @@ -1,85 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : RepairGUI_FreeFacesDlg.h -// Author : VKN -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_FreeFaces_H -#define DIALOGBOX_FreeFaces_H - -#include -#include "GEOMBase_Helper.h" - -class GEOM_Displayer; -class QPushButton; -class QLineEdit; -class GeometryGUI; - -//================================================================================= -// class : RepairGUI_FreeFacesDlg -// purpose : -//================================================================================= -class RepairGUI_FreeFacesDlg : public QDialog, - public GEOMBase_Helper -{ - Q_OBJECT - -public: - RepairGUI_FreeFacesDlg(GeometryGUI* GUI, QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~RepairGUI_FreeFacesDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& ); - virtual bool execute( ObjectList& objects ); - -private : - - void Init(); - void enterEvent(QEvent* e); - void closeEvent(QCloseEvent* e); - void activateSelection(); - GEOM_Displayer* getDisplayer(); - -private slots: - - void onClose(); - void onDeactivate(); - void onActivate(); - void onSelectionDone(); - void onSetEditCurrentArgument(); - -private : - - GEOM_Displayer* myDisplayer; - GEOM::GEOM_Object_var myObj; - QPushButton* mySelBtn; - QLineEdit* myEdit; - GeometryGUI* myGeomGUI; - -}; - -#endif // DIALOGBOX_FreeFaces_H diff --git a/src/RepairGUI/RepairGUI_GlueDlg.cxx b/src/RepairGUI/RepairGUI_GlueDlg.cxx deleted file mode 100644 index 9988bb38d..000000000 --- a/src/RepairGUI/RepairGUI_GlueDlg.cxx +++ /dev/null @@ -1,447 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : RepairGUI_GlueDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "RepairGUI_GlueDlg.h" -#include "DlgRef_1Sel_Ext.h" -#include "GEOMImpl_Types.hxx" - -#include "QtxDblSpinBox.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" -#include "SalomeApp_Study.h" -#include "SalomeApp_Tools.h" - -#include "SUIT_Session.h" -#include "SUIT_MessageBox.h" -#include "SUIT_OverrideCursor.h" - -#include "SALOME_ListIteratorOfListIO.hxx" - -#include - -#include -#include - -using namespace std; - -#define DEFAULT_TOLERANCE_VALUE 1e-07 - -//================================================================================= -// class : RepairGUI_GlueDlg() -// purpose : Constructs a RepairGUI_GlueDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -RepairGUI_GlueDlg::RepairGUI_GlueDlg(QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_GLUE_FACES"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_GLUE_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_GLUE_TITLE")); - RadioButton1->setPixmap(image0); - RadioButton2->close(TRUE); - RadioButton3->close(TRUE); - - GroupPoints = new DlgRef_1Sel_Ext(this, "GroupPoints"); - GroupPoints->GroupBox1->setTitle(tr("GEOM_GLUE")); - GroupPoints->TextLabel1->setText(tr("GEOM_SELECTED_SHAPE")); - GroupPoints->PushButton1->setPixmap(image1); - GroupPoints->LineEdit1->setReadOnly( true ); - - Layout1->addWidget(GroupPoints, 2, 0); - - QGridLayout* aLay = new QGridLayout( 0, 2, 2, 0, 6, "aLay" ); - QLabel* aLbl1 = new QLabel( tr( "GEOM_TOLERANCE" ), GroupPoints->GroupBox1 ); - myTolEdt = new QtxDblSpinBox( 0, 100, 1e-7, GroupPoints->GroupBox1 );//QAD_SpinBoxDbl( GroupPoints->GroupBox1, 0, 100, 1e-7, 10, 1e-10 ); - myTolEdt->setPrecision( 10 ); - myTolEdt->setValue( DEFAULT_TOLERANCE_VALUE ); - - aLay->addWidget( aLbl1, 0, 0 ); - aLay->addWidget( myTolEdt, 0, 1 ); - - GroupPoints->getGroupBoxLayout()->addLayout( aLay, 3, 0 ); - /***************************************************************/ - - Init(); -} - - -//================================================================================= -// function : ~RepairGUI_GlueDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -RepairGUI_GlueDlg::~RepairGUI_GlueDlg() -{ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void RepairGUI_GlueDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = GroupPoints->LineEdit1; - - myObject = GEOM::GEOM_Object::_nil(); - - //myGeomGUI->SetState( 0 ); - globalSelection( GEOM_COMPOUND ); - - /* signals and slots connections */ - connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel())); - connect(myGeomGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog())); - connect(myGeomGUI, SIGNAL(SignalCloseAllDialogs()), this, SLOT(ClickOnCancel())); - - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - - connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - initName( tr( "GLUE_NEW_OBJ_NAME" ) ); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : Same than click on apply but close this dialog. -//================================================================================= -void RepairGUI_GlueDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool RepairGUI_GlueDlg::ClickOnApply() -{ - if ( !onAcceptLocal() ) - return false; - - initName(); - - GroupPoints->LineEdit1->setText(""); - myObject = GEOM::GEOM_Object::_nil(); - - globalSelection( GEOM_COMPOUND ); - - return true; -} - - -//================================================================================= -// function : ClickOnCancel() -// purpose : -//================================================================================= -void RepairGUI_GlueDlg::ClickOnCancel() -{ - GEOMBase_Skeleton::ClickOnCancel(); -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection -//================================================================================= -void RepairGUI_GlueDlg::SelectionIntoArgument() -{ - erasePreview(); - myEditCurrentArgument->setText(""); - myObject = GEOM::GEOM_Object::_nil(); - - if ( IObjectCount() == 1 ) { - Handle(SALOME_InteractiveObject) anIO = firstIObject(); - Standard_Boolean aRes; - myObject = GEOMBase::ConvertIOinGEOMObject( anIO, aRes ); - if ( aRes ) - myEditCurrentArgument->setText( GEOMBase::GetName( myObject ) ); - } -} - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void RepairGUI_GlueDlg::SetEditCurrentArgument() -{ - const QObject* send = sender(); - if ( send == GroupPoints->PushButton1 ) { - myEditCurrentArgument->setFocus(); - SelectionIntoArgument(); - } -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void RepairGUI_GlueDlg::LineEditReturnPressed() -{ - const QObject* send = sender(); - if( send == GroupPoints->LineEdit1 ) { - myEditCurrentArgument = GroupPoints->LineEdit1; - GEOMBase_Skeleton::LineEditReturnPressed(); - } -} - - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : -//================================================================================= -void RepairGUI_GlueDlg::DeactivateActiveDialog() -{ - //myGeomGUI->SetState( -1 ); - GEOMBase_Skeleton::DeactivateActiveDialog(); -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void RepairGUI_GlueDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - GroupPoints->LineEdit1->setText(""); - myObject = GEOM::GEOM_Object::_nil(); - - //myGeomGUI->SetState( 0 ); - globalSelection( GEOM_COMPOUND ); -} - - -//================================================================================= -// function : enterEvent() -// purpose : Mouse enter onto the dialog to activate it -//================================================================================= -void RepairGUI_GlueDlg::enterEvent(QEvent* e) -{ - if ( !GroupConstructors->isEnabled() ) - ActivateThisDialog(); -} - - -//================================================================================= -// function : closeEvent() -// purpose : -//================================================================================= -void RepairGUI_GlueDlg::closeEvent(QCloseEvent* e) -{ - //myGeomGUI->SetState( -1 ); - GEOMBase_Skeleton::closeEvent( e ); -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr RepairGUI_GlueDlg::createOperation() -{ - return getGeomEngine()->GetIShapesOperations( getStudyId() ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool RepairGUI_GlueDlg::isValid( QString& msg ) -{ - return !myObject->_is_nil() && ( IsPreview() || myTolEdt->value() > 0. ); -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool RepairGUI_GlueDlg::execute( ObjectList& objects ) -{ - bool aResult = false; - GEOM::GEOM_Object_var anObj = GEOM::GEOM_IShapesOperations::_narrow - ( getOperation() )->MakeGlueFaces( myObject, myTolEdt->value() ); - aResult = !anObj->_is_nil(); - if ( aResult ) - objects.push_back( anObj._retn() ); - - return aResult; -} - -//================================================================ -// Function : clearShapeBufferLocal -// Purpose : -//================================================================ -void RepairGUI_GlueDlg::clearShapeBufferLocal( GEOM::GEOM_Object_ptr theObj ) -{ - if ( CORBA::is_nil( theObj ) ) - return; - - string IOR = myGeomGUI->getApp()->orb()->object_to_string( theObj ); - TCollection_AsciiString asciiIOR( strdup( IOR.c_str() ) ); - myGeomGUI->GetShapeReader().RemoveShapeFromBuffer( asciiIOR ); - - if ( !getStudy() || !( getStudy()->studyDS() ) ) - return; - - _PTR(Study) aStudy = getStudy()->studyDS(); - _PTR(SObject) aSObj ( aStudy->FindObjectIOR( IOR ) ); - if ( !aSObj ) - return; - - _PTR(ChildIterator) anIt ( aStudy->NewChildIterator( aSObj ) ); - for ( anIt->InitEx( true ); anIt->More(); anIt->Next() ) { - _PTR(GenericAttribute) anAttr; - if ( anIt->Value()->FindAttribute(anAttr, "AttributeIOR") ) { - _PTR(AttributeIOR) anIOR ( anAttr ); - TCollection_AsciiString asciiIOR( (char*)anIOR->Value().c_str() ); - myGeomGUI->GetShapeReader().RemoveShapeFromBuffer( asciiIOR ); - } - } -} - -//================================================================ -// Function : onAccept -// Purpose : This method should be called from dialog's slots onOk() and onApply() -// It perfroms user input validation, then it -// performs a proper operation and manages transactions, etc. -//================================================================ -bool RepairGUI_GlueDlg::onAcceptLocal( const bool publish, const bool useTransaction ) -{ - if ( !getStudy() || !( getStudy()->studyDS() ) ) - return false; - - _PTR(Study) aStudy = getStudy()->studyDS(); - - bool aLocked = aStudy->GetProperties()->IsLocked(); - if ( aLocked ) { - MESSAGE("GEOMBase_Helper::onAccept - ActiveStudy is locked"); - SUIT_MessageBox::warn1 ( (QWidget*)(SUIT_Session::session()->activeApplication()->desktop()), - QObject::tr("WRN_WARNING"), - QObject::tr("WRN_STUDY_LOCKED"), - QObject::tr("BUT_OK") ); - return false; - } - - QString msg; - if ( !isValid( msg ) ) { - showError( msg ); - return false; - } - - erasePreview( false ); - - try { - if ( ( !publish && !useTransaction ) || openCommand() ) { - - SUIT_OverrideCursor wc; - - SUIT_Session::session()->activeApplication()->putInfo( "" ); - ObjectList objects; - // JFA 28.12.2004 if ( !execute( objects ) || !getOperation()->IsDone() ) { - if ( !execute( objects ) ) { // JFA 28.12.2004 // To enable warnings - wc.suspend(); - abortCommand(); - showError(); - } - else { - const int nbObjs = objects.size(); - bool withChildren = false; - for ( ObjectList::iterator it = objects.begin(); it != objects.end(); ++it ) { - if ( publish ) { - QString aName(""); - if ( nbObjs > 1 ) - aName = strlen( getNewObjectName() ) ? GEOMBase::GetDefaultName( getNewObjectName() ) : GEOMBase::GetDefaultName( getPrefix( *it ) ); - else { - aName = getNewObjectName(); - // PAL6521: use a prefix, if some dialog box doesn't reimplement getNewObjectName() - if ( aName.isEmpty() ) - aName = GEOMBase::GetDefaultName( getPrefix( *it ) ); - } - addInStudy( *it, aName.latin1() ); - withChildren = false; - display( *it, false ); - } - else { // asv : fix of PAL6454. If publish==false, then the original shape was modified, and need to be re-cached in GEOM_Client - // before redisplay - clearShapeBufferLocal( *it ); - withChildren = true; - redisplay( *it, withChildren, false ); - } - } - - if ( nbObjs ) { - commitCommand(); - updateObjBrowser(); - SUIT_Session::session()->activeApplication()->putInfo( QObject::tr("GEOM_PRP_DONE") ); - } - else { - abortCommand(); - } - - // JFA 28.12.2004 BEGIN // To enable warnings - if ( !getOperation()->_is_nil() ) { - if ( !getOperation()->IsDone() ) { - wc.suspend(); - QString msgw = QObject::tr( getOperation()->GetErrorCode() ); - SUIT_MessageBox::warn1((QWidget*)(SUIT_Session::session()->activeApplication()->desktop()), - QObject::tr( "WRN_WARNING" ), - msgw, - QObject::tr( "BUT_OK" )); - } - } - // JFA 28.12.2004 END - } - } - } - catch( const SALOME::SALOME_Exception& e ) { - SalomeApp_Tools::QtCatchCorbaException( e ); - abortCommand(); - } - - updateViewer(); - - return true; -} diff --git a/src/RepairGUI/RepairGUI_GlueDlg.h b/src/RepairGUI/RepairGUI_GlueDlg.h deleted file mode 100644 index 2c493dfa5..000000000 --- a/src/RepairGUI/RepairGUI_GlueDlg.h +++ /dev/null @@ -1,83 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : RepairGUI_GlueDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_Glue_H -#define DIALOGBOX_Glue_H - -#include "GEOMBase_Skeleton.h" - -class QtxDblSpinBox; -class DlgRef_1Sel_Ext; - -//================================================================================= -// class : RepairGUI_GlueDlg -// purpose : -//================================================================================= -class RepairGUI_GlueDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - RepairGUI_GlueDlg(QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~RepairGUI_GlueDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& ); - virtual bool execute( ObjectList& objects ); - -private : - void Init(); - void enterEvent(QEvent* e); - void closeEvent(QCloseEvent* e); - void initSelection(); - - bool onAcceptLocal( const bool publish = true, const bool useTransaction = true ); - void clearShapeBufferLocal( GEOM::GEOM_Object_ptr ); - // Reimplementation of onAccept for local case of this class. - - GEOM::GEOM_Object_var myObject; - - DlgRef_1Sel_Ext* GroupPoints; - QtxDblSpinBox* myTolEdt; - -private slots: - void ClickOnOk(); - bool ClickOnApply(); - void ClickOnCancel(); - - void ActivateThisDialog(); - void DeactivateActiveDialog(); - - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); -}; - -#endif // DIALOGBOX_Glue_H diff --git a/src/RepairGUI/RepairGUI_RemoveHolesDlg.cxx b/src/RepairGUI/RepairGUI_RemoveHolesDlg.cxx deleted file mode 100644 index 4e8ecc34e..000000000 --- a/src/RepairGUI/RepairGUI_RemoveHolesDlg.cxx +++ /dev/null @@ -1,448 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : RepairGUI_RemoveHolesDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "RepairGUI_RemoveHolesDlg.h" - -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" -#include "SUIT_MessageBox.h" -#include "SUIT_Session.h" - -#include "SALOME_ListIteratorOfListIO.hxx" - -#include "GEOMImpl_Types.hxx" - -#include -#include - -using namespace std; - -//================================================================================= -// class : RepairGUI_RemoveHolesDlg() -// purpose : Constructs a RepairGUI_RemoveHolesDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -RepairGUI_RemoveHolesDlg::RepairGUI_RemoveHolesDlg(QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_SUPPRESS_HOLES"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_REMOVE_HOLES_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_REMOVE_HOLES_TITLE")); - RadioButton1->setPixmap(image0); - RadioButton2->close(TRUE); - RadioButton3->close(TRUE); - - GroupPoints = new DlgRef_1Sel_Ext(this, "GroupPoints"); - GroupPoints->GroupBox1->setTitle(tr("GEOM_HOLES")); - GroupPoints->TextLabel1->setText(tr("GEOM_SELECTED_SHAPE")); - GroupPoints->PushButton1->setPixmap(image1); - GroupPoints->LineEdit1->setReadOnly( true ); - - Layout1->addWidget(GroupPoints, 2, 0); - - myAllChk = new QCheckBox( tr( "GEOM_REMOVE_ALL_HOLES" ), GroupPoints->GroupBox1 ); - - QGridLayout* aSelectWiresLay = new QGridLayout( 0, 1, 1, 0, 6, "aSelectWiresLay"); - - mySelectWiresBtn = new QPushButton( GroupPoints->GroupBox1, "mySelectWiresBtn" ); - mySelectWiresBtn->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, mySelectWiresBtn->sizePolicy().hasHeightForWidth() ) ); - mySelectWiresBtn->setText( trUtf8( "" ) ); - mySelectWiresBtn->setPixmap(image1); - - mySelectWiresEdt = new QLineEdit( GroupPoints->GroupBox1, "mySelectWiresEdt" ); - mySelectWiresEdt->setReadOnly( true ); - - mySelectWiresLbl = new QLabel( tr( "GEOM_WIRES_TO_REMOVE" ), GroupPoints->GroupBox1, "TextLabel1" ); - mySelectWiresLbl->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, mySelectWiresLbl->sizePolicy().hasHeightForWidth() ) ); - - aSelectWiresLay->addWidget( mySelectWiresLbl, 0, 0 ); - aSelectWiresLay->addWidget( mySelectWiresBtn, 0, 1 ); - aSelectWiresLay->addWidget( mySelectWiresEdt, 0, 2 ); - QSpacerItem* spacer = new QSpacerItem( 0, 16, QSizePolicy::Minimum, QSizePolicy::Expanding ); - aSelectWiresLay->addItem( spacer, 1, 2 ); - - QGridLayout* aDetectLay = new QGridLayout( 0, 1, 1, 0, 6, "aDetectLay" ); - myFreeBoundBtn = new QPushButton( tr( "GEOM_DETECT" ), GroupPoints->GroupBox1 ); - QLabel* aLbl = new QLabel( tr( "GEOM_FREE_BOUNDARIES" ), GroupPoints->GroupBox1 ); - aDetectLay->addWidget( aLbl, 0, 0 ); - aDetectLay->addWidget( myFreeBoundBtn, 0, 1 ); - - GroupPoints->getGroupBoxLayout()->addMultiCellWidget( myAllChk, 1, 1, 0, 2 ); - GroupPoints->getGroupBoxLayout()->addLayout( aSelectWiresLay, 2, 0 ); - GroupPoints->getGroupBoxLayout()->addLayout( aDetectLay, 3, 0 ); - /***************************************************************/ - - Init(); -} - - -//================================================================================= -// function : ~RepairGUI_RemoveHolesDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -RepairGUI_RemoveHolesDlg::~RepairGUI_RemoveHolesDlg() -{ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void RepairGUI_RemoveHolesDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = GroupPoints->LineEdit1; - - myObject = GEOM::GEOM_Object::_nil(); - myWiresInd = new GEOM::short_array(); - myWiresInd->length( 0 ); - - //myGeomGUI->SetState( 0 ); - initSelection(); - - myClosed = -1; - myOpen = -1; - - /* signals and slots connections */ - connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel())); - connect(myGeomGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog())); - connect(myGeomGUI, SIGNAL(SignalCloseAllDialogs()), this, SLOT(ClickOnCancel())); - - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - - connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(mySelectWiresBtn, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(mySelectWiresEdt, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - connect( myAllChk, SIGNAL( clicked() ), this, SLOT( onRemoveAllClicked() ) ); - connect( myFreeBoundBtn, SIGNAL(clicked()), this, SLOT(onDetect()) ); - - initName( tr( "REMOVE_HOLES_NEW_OBJ_NAME" ) ); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : Same than click on apply but close this dialog. -//================================================================================= -void RepairGUI_RemoveHolesDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool RepairGUI_RemoveHolesDlg::ClickOnApply() -{ - if ( !onAccept() ) - return false; - - initName(); - - myEditCurrentArgument = GroupPoints->LineEdit1; - myEditCurrentArgument->setText(""); - mySelectWiresEdt->setText(""); - myObject = GEOM::GEOM_Object::_nil(); - myWiresInd->length( 0 ); - - initSelection(); - - return true; -} - - -//================================================================================= -// function : ClickOnCancel() -// purpose : -//================================================================================= -void RepairGUI_RemoveHolesDlg::ClickOnCancel() -{ - GEOMBase_Skeleton::ClickOnCancel(); -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection -//================================================================================= -void RepairGUI_RemoveHolesDlg::SelectionIntoArgument() -{ - erasePreview(); - myEditCurrentArgument->setText(""); - if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) myObject = GEOM::GEOM_Object::_nil(); - else if ( myEditCurrentArgument == mySelectWiresEdt ) myWiresInd->length( 0 ); - - if ( IObjectCount() == 1 ) - { - Handle(SALOME_InteractiveObject) anIO = firstIObject(); - - if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) // face selection - { - Standard_Boolean aRes; - myObject = GEOMBase::ConvertIOinGEOMObject( anIO, aRes ); - if ( aRes && GEOMBase::IsShape( myObject ) ) - myEditCurrentArgument->setText( GEOMBase::GetName( myObject ) ); - else - myObject = GEOM::GEOM_Object::_nil(); - } - else if ( myEditCurrentArgument == mySelectWiresEdt && !myAllChk->isChecked() ) - { - TColStd_IndexedMapOfInteger aMap; - ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr()->GetIndexes( anIO, aMap ); - const int n = aMap.Extent(); - myWiresInd->length( n ); - for ( int i = 1; i <= n; i++ ) - myWiresInd[i-1] = aMap( i ); - if ( n ) - myEditCurrentArgument->setText( QString::number( n ) + "_" + tr( "GEOM_WIRE" ) + tr( "_S_" ) ); - } - } -} - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void RepairGUI_RemoveHolesDlg::SetEditCurrentArgument() -{ - const QObject* send = sender(); - if ( send == GroupPoints->PushButton1 ) - myEditCurrentArgument = GroupPoints->LineEdit1; - else if ( send == mySelectWiresBtn && !myObject->_is_nil() ) - myEditCurrentArgument = mySelectWiresEdt; - if ( myEditCurrentArgument ) - { - initSelection(); - myEditCurrentArgument->setFocus(); - SelectionIntoArgument(); - } -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void RepairGUI_RemoveHolesDlg::LineEditReturnPressed() -{ - const QObject* send = sender(); - if( send == GroupPoints->LineEdit1 || send == mySelectWiresEdt ) - { - myEditCurrentArgument = (QLineEdit*)send; - GEOMBase_Skeleton::LineEditReturnPressed(); - } -} - - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : -//================================================================================= -void RepairGUI_RemoveHolesDlg::DeactivateActiveDialog() -{ - //myGeomGUI->SetState( -1 ); - GEOMBase_Skeleton::DeactivateActiveDialog(); -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void RepairGUI_RemoveHolesDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - myEditCurrentArgument = GroupPoints->LineEdit1; - myEditCurrentArgument->setText(""); - mySelectWiresEdt->setText(""); - myObject = GEOM::GEOM_Object::_nil(); - myWiresInd->length( 0 ); - - myClosed = -1; - myOpen = -1; - - //myGeomGUI->SetState( 0 ); - initSelection(); -} - - -//================================================================================= -// function : enterEvent() -// purpose : Mouse enter onto the dialog to activate it -//================================================================================= -void RepairGUI_RemoveHolesDlg::enterEvent(QEvent* e) -{ - if ( !GroupConstructors->isEnabled() ) - ActivateThisDialog(); -} - - -//================================================================================= -// function : closeEvent() -// purpose : -//================================================================================= -void RepairGUI_RemoveHolesDlg::closeEvent(QCloseEvent* e) -{ - //myGeomGUI->SetState( -1 ); - GEOMBase_Skeleton::closeEvent( e ); -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr RepairGUI_RemoveHolesDlg::createOperation() -{ - return getGeomEngine()->GetIHealingOperations( getStudyId() ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool RepairGUI_RemoveHolesDlg::isValid( QString& msg ) -{ - myClosed = -1; - return !myObject->_is_nil() && ( IsPreview() || myAllChk->isChecked() || myWiresInd->length() ); -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool RepairGUI_RemoveHolesDlg::execute( ObjectList& objects ) -{ - bool aResult = false; - if ( IsPreview() ) // called from onDetect(): detect free boundary edges, highlight them (add to objects), display message dialog - { - GEOM::ListOfGO_var aClosed, anOpen; - - aResult = GEOM::GEOM_IHealingOperations::_narrow( getOperation() )->GetFreeBoundary( myObject, aClosed, anOpen ); - - if ( aResult ) - { - myClosed = aClosed->length(); - myOpen = anOpen->length(); - int i; - for ( i = 0; i < myClosed; i++ ) - objects.push_back( aClosed[i]._retn() ); - for ( i = 0; i < myOpen; i++ ) - objects.push_back( anOpen[i]._retn() ); - } - else - myClosed = -1; - } - else - { - GEOM::GEOM_Object_var anObj = GEOM::GEOM_IHealingOperations::_narrow( getOperation() )->FillHoles( myObject, myWiresInd ); - aResult = !anObj->_is_nil(); - if ( aResult ) - objects.push_back( anObj._retn() ); - } - - return aResult; -} - -//================================================================================= -// function : onRemoveAllClicked -// purpose : -//================================================================================= -void RepairGUI_RemoveHolesDlg::onRemoveAllClicked() -{ - bool b = myAllChk->isOn(); - mySelectWiresLbl->setEnabled( !b ); - mySelectWiresBtn->setEnabled( !b ); - mySelectWiresEdt->setEnabled( !b ); - if ( b ) - { - mySelectWiresEdt->setText( "" ); - myWiresInd->length( 0 ); - } -} - -//================================================================================= -// function : initSelection -// purpose : -//================================================================================= -void RepairGUI_RemoveHolesDlg::initSelection() -{ - if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) - { - TColStd_MapOfInteger aTypes; - aTypes.Add( GEOM_COMPOUND ); - aTypes.Add( GEOM_SOLID ); - aTypes.Add( GEOM_SHELL ); - aTypes.Add( GEOM_FACE ); - - globalSelection( aTypes ); - } - else if ( myEditCurrentArgument == mySelectWiresEdt ) - { - localSelection( myObject, TopAbs_EDGE ); - localSelection( myObject, TopAbs_WIRE ); - } -} - - -//================================================================================= -// function : onDetect -// purpose : -//================================================================================= -void RepairGUI_RemoveHolesDlg::onDetect() -{ - displayPreview( false, true, true, 3 ); - - // field myClosed,myOpen is initialized in execute() method, called by displayPreview(). - QString msg; - if ( myClosed != -1 ) - msg = tr( "GEOM_FREE_BOUNDS_MSG" ).arg( myClosed + myOpen ).arg( myClosed ).arg( myOpen ); - else - msg = tr( "GEOM_FREE_BOUNDS_ERROR" ); - SUIT_MessageBox::info1( this, tr( "GEOM_FREE_BOUNDS_TLT" ), msg, "Close" ); -} - diff --git a/src/RepairGUI/RepairGUI_RemoveHolesDlg.h b/src/RepairGUI/RepairGUI_RemoveHolesDlg.h deleted file mode 100644 index 42edf5b6e..000000000 --- a/src/RepairGUI/RepairGUI_RemoveHolesDlg.h +++ /dev/null @@ -1,95 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : RepairGUI_RemoveHolesDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_RemoveHoles_H -#define DIALOGBOX_RemoveHoles_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_1Sel_Ext.h" - -#include - -#include -#include -#include -#include - -//================================================================================= -// class : RepairGUI_RemoveHolesDlg -// purpose : -//================================================================================= -class RepairGUI_RemoveHolesDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - RepairGUI_RemoveHolesDlg(QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~RepairGUI_RemoveHolesDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& ); - virtual bool execute( ObjectList& objects ); - -private : - void Init(); - void enterEvent(QEvent* e); - void closeEvent(QCloseEvent* e); - void initSelection(); - - GEOM::GEOM_Object_var myObject; - GEOM::short_array_var myWiresInd; - - DlgRef_1Sel_Ext* GroupPoints; - QCheckBox* myAllChk; - QLabel* mySelectWiresLbl; - QPushButton* mySelectWiresBtn; - QLineEdit* mySelectWiresEdt; - QPushButton* myFreeBoundBtn; - - int myClosed; // number of free closed boundaries detected. calculated in execute(), used in onDetect(). - int myOpen; // number of free open boundaries detected. calculated in execute(), used in onDetect(). - -private slots: - void ClickOnOk(); - bool ClickOnApply(); - void ClickOnCancel(); - - void ActivateThisDialog(); - void DeactivateActiveDialog(); - - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - - void onRemoveAllClicked(); - void onDetect(); -}; - -#endif // DIALOGBOX_RemoveHoles_H diff --git a/src/RepairGUI/RepairGUI_RemoveIntWiresDlg.cxx b/src/RepairGUI/RepairGUI_RemoveIntWiresDlg.cxx deleted file mode 100644 index db6fd6035..000000000 --- a/src/RepairGUI/RepairGUI_RemoveIntWiresDlg.cxx +++ /dev/null @@ -1,391 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : RepairGUI_RemoveIntWiresDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "RepairGUI_RemoveIntWiresDlg.h" - -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" -#include "SUIT_Session.h" -#include "SALOME_ListIteratorOfListIO.hxx" - -#include "GEOMImpl_Types.hxx" - -#include -#include - -using namespace std; - -//================================================================================= -// class : RepairGUI_RemoveIntWiresDlg() -// purpose : Constructs a RepairGUI_RemoveIntWiresDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -RepairGUI_RemoveIntWiresDlg::RepairGUI_RemoveIntWiresDlg(QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_SUPPRESS_INT_WIRES"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_REMOVE_INTERNAL_WIRES_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_REMOVE_INTERNAL_WIRES_TITLE")); - RadioButton1->setPixmap(image0); - RadioButton2->close(TRUE); - RadioButton3->close(TRUE); - - GroupPoints = new DlgRef_1Sel_Ext(this, "GroupPoints"); - GroupPoints->GroupBox1->setTitle(tr("GEOM_INTERNAL_WIRES")); - GroupPoints->TextLabel1->setText(tr("GEOM_SELECTED_FACE")); - GroupPoints->PushButton1->setPixmap(image1); - GroupPoints->LineEdit1->setReadOnly( true ); - - Layout1->addWidget(GroupPoints, 2, 0); - - myAllChk = new QCheckBox( tr( "GEOM_REMOVE_ALL_INT_WIRES" ), GroupPoints->GroupBox1 ); - - QGridLayout* aSelectWiresLay = new QGridLayout( 0, 1, 1, 0, 6, "aSelectWiresLay"); - - mySelectWiresBtn = new QPushButton( GroupPoints->GroupBox1, "mySelectWiresBtn" ); - mySelectWiresBtn->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, mySelectWiresBtn->sizePolicy().hasHeightForWidth() ) ); - mySelectWiresBtn->setText( trUtf8( "" ) ); - mySelectWiresBtn->setPixmap(image1); - - mySelectWiresEdt = new QLineEdit( GroupPoints->GroupBox1, "mySelectWiresEdt" ); - mySelectWiresEdt->setReadOnly( true ); - - mySelectWiresLbl = new QLabel( tr( "GEOM_WIRES_TO_REMOVE" ), GroupPoints->GroupBox1, "TextLabel1" ); - mySelectWiresLbl->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, mySelectWiresLbl->sizePolicy().hasHeightForWidth() ) ); - - aSelectWiresLay->addWidget( mySelectWiresLbl, 0, 0 ); - aSelectWiresLay->addWidget( mySelectWiresBtn, 0, 1 ); - aSelectWiresLay->addWidget( mySelectWiresEdt, 0, 2 ); - QSpacerItem* spacer = new QSpacerItem( 0, 16, QSizePolicy::Minimum, QSizePolicy::Expanding ); - aSelectWiresLay->addItem( spacer, 1, 2 ); - - GroupPoints->getGroupBoxLayout()->addMultiCellWidget( myAllChk, 1, 1, 0, 2 ); - GroupPoints->getGroupBoxLayout()->addLayout( aSelectWiresLay, 2, 0 ); - /***************************************************************/ - - Init(); -} - - -//================================================================================= -// function : ~RepairGUI_RemoveIntWiresDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -RepairGUI_RemoveIntWiresDlg::~RepairGUI_RemoveIntWiresDlg() -{ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void RepairGUI_RemoveIntWiresDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = GroupPoints->LineEdit1; - - myObject = GEOM::GEOM_Object::_nil(); - myWiresInd = new GEOM::short_array(); - myWiresInd->length( 0 ); - - //myGeomGUI->SetState( 0 ); - initSelection(); - - /* signals and slots connections */ - connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel())); - connect(myGeomGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog())); - connect(myGeomGUI, SIGNAL(SignalCloseAllDialogs()), this, SLOT(ClickOnCancel())); - - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - - connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(mySelectWiresBtn, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(mySelectWiresEdt, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - connect( myAllChk, SIGNAL( clicked() ), this, SLOT( onRemoveAllClicked() ) ); - - initName( tr( "REMOVE_INT_WIRES_NEW_OBJ_NAME" ) ); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : Same than click on apply but close this dialog. -//================================================================================= -void RepairGUI_RemoveIntWiresDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool RepairGUI_RemoveIntWiresDlg::ClickOnApply() -{ - if ( !onAccept() ) - return false; - - initName(); - - myEditCurrentArgument = GroupPoints->LineEdit1; - myEditCurrentArgument->setText(""); - mySelectWiresEdt->setText(""); - myObject = GEOM::GEOM_Object::_nil(); - myWiresInd->length( 0 ); - - initSelection(); - - return true; -} - - -//================================================================================= -// function : ClickOnCancel() -// purpose : -//================================================================================= -void RepairGUI_RemoveIntWiresDlg::ClickOnCancel() -{ - GEOMBase_Skeleton::ClickOnCancel(); -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection -//================================================================================= -void RepairGUI_RemoveIntWiresDlg::SelectionIntoArgument() -{ - myEditCurrentArgument->setText(""); - if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) myObject = GEOM::GEOM_Object::_nil(); - else if ( myEditCurrentArgument == mySelectWiresEdt ) myWiresInd->length( 0 ); - - if ( IObjectCount() == 1 ) - { - Handle(SALOME_InteractiveObject) anIO = firstIObject(); - - if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) // face selection - { - Standard_Boolean aRes; - myObject = GEOMBase::ConvertIOinGEOMObject( anIO, aRes ); - if ( aRes && GEOMBase::IsShape( myObject ) ) - myEditCurrentArgument->setText( GEOMBase::GetName( myObject ) ); - else - myObject = GEOM::GEOM_Object::_nil(); - } - else if ( myEditCurrentArgument == mySelectWiresEdt && !myAllChk->isChecked() ) - { - TColStd_IndexedMapOfInteger aMap; - ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr()->GetIndexes( anIO, aMap ); - const int n = aMap.Extent(); - myWiresInd->length( n ); - for ( int i = 1; i <= n; i++ ) - myWiresInd[i-1] = aMap( i ); - if ( n ) - myEditCurrentArgument->setText( QString::number( n ) + "_" + tr( "GEOM_WIRE" ) + tr( "_S_" ) ); - } - } -} - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void RepairGUI_RemoveIntWiresDlg::SetEditCurrentArgument() -{ - const QObject* send = sender(); - if ( send == GroupPoints->PushButton1 ) - myEditCurrentArgument = GroupPoints->LineEdit1; - else if ( send == mySelectWiresBtn && !myObject->_is_nil() ) - myEditCurrentArgument = mySelectWiresEdt; - - if ( myEditCurrentArgument ) - { - initSelection(); - myEditCurrentArgument->setFocus(); - SelectionIntoArgument(); - } -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void RepairGUI_RemoveIntWiresDlg::LineEditReturnPressed() -{ - const QObject* send = sender(); - if( send == GroupPoints->LineEdit1 || send == mySelectWiresEdt ) - { - myEditCurrentArgument = (QLineEdit*)send; - GEOMBase_Skeleton::LineEditReturnPressed(); - } -} - - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : -//================================================================================= -void RepairGUI_RemoveIntWiresDlg::DeactivateActiveDialog() -{ - //myGeomGUI->SetState( -1 ); - GEOMBase_Skeleton::DeactivateActiveDialog(); -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void RepairGUI_RemoveIntWiresDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - myEditCurrentArgument = GroupPoints->LineEdit1; - myEditCurrentArgument->setText(""); - mySelectWiresEdt->setText(""); - myObject = GEOM::GEOM_Object::_nil(); - myWiresInd->length( 0 ); - - //myGeomGUI->SetState( 0 ); - initSelection(); -} - - -//================================================================================= -// function : enterEvent() -// purpose : Mouse enter onto the dialog to activate it -//================================================================================= -void RepairGUI_RemoveIntWiresDlg::enterEvent(QEvent* e) -{ - if ( !GroupConstructors->isEnabled() ) - ActivateThisDialog(); -} - - -//================================================================================= -// function : closeEvent() -// purpose : -//================================================================================= -void RepairGUI_RemoveIntWiresDlg::closeEvent(QCloseEvent* e) -{ - //myGeomGUI->SetState( -1 ); - GEOMBase_Skeleton::closeEvent( e ); -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr RepairGUI_RemoveIntWiresDlg::createOperation() -{ - return getGeomEngine()->GetIHealingOperations( getStudyId() ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool RepairGUI_RemoveIntWiresDlg::isValid( QString& msg ) -{ - return !myObject->_is_nil() && ( myAllChk->isChecked() || myWiresInd->length() ); -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool RepairGUI_RemoveIntWiresDlg::execute( ObjectList& objects ) -{ - GEOM::GEOM_Object_var anObj = GEOM::GEOM_IHealingOperations::_narrow( getOperation() )->RemoveIntWires( myObject, myWiresInd ); - bool aResult = !anObj->_is_nil(); - if ( aResult ) - objects.push_back( anObj._retn() ); - - return aResult; -} - -//================================================================================= -// function : onRemoveAllClicked -// purpose : -//================================================================================= -void RepairGUI_RemoveIntWiresDlg::onRemoveAllClicked() -{ - bool b = myAllChk->isOn(); - mySelectWiresLbl->setEnabled( !b ); - mySelectWiresBtn->setEnabled( !b ); - mySelectWiresEdt->setEnabled( !b ); - if ( b ) - { - mySelectWiresEdt->setText( "" ); - myWiresInd->length( 0 ); - } -} - -//================================================================================= -// function : initSelection -// purpose : -//================================================================================= -void RepairGUI_RemoveIntWiresDlg::initSelection() -{ - if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) - { - TColStd_MapOfInteger aTypes; - aTypes.Add( GEOM_COMPOUND ); - aTypes.Add( GEOM_SOLID ); - aTypes.Add( GEOM_SHELL ); - aTypes.Add( GEOM_FACE ); - - globalSelection( aTypes ); - } - else if ( myEditCurrentArgument == mySelectWiresEdt ) - { - //localSelection( myObject, TopAbs_EDGE ); - localSelection( myObject, TopAbs_WIRE ); - } -} - - diff --git a/src/RepairGUI/RepairGUI_RemoveIntWiresDlg.h b/src/RepairGUI/RepairGUI_RemoveIntWiresDlg.h deleted file mode 100644 index 2142784a3..000000000 --- a/src/RepairGUI/RepairGUI_RemoveIntWiresDlg.h +++ /dev/null @@ -1,90 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : RepairGUI_RemoveIntWiresDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_RemoveIntWires_H -#define DIALOGBOX_RemoveIntWires_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_1Sel_Ext.h" - -#include - -#include -#include -#include -#include - -//================================================================================= -// class : RepairGUI_RemoveIntWiresDlg -// purpose : -//================================================================================= -class RepairGUI_RemoveIntWiresDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - RepairGUI_RemoveIntWiresDlg(QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~RepairGUI_RemoveIntWiresDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& ); - virtual bool execute( ObjectList& objects ); - -private : - void Init(); - void enterEvent(QEvent* e); - void closeEvent(QCloseEvent* e); - void initSelection(); - - GEOM::GEOM_Object_var myObject; - GEOM::short_array_var myWiresInd; - - DlgRef_1Sel_Ext* GroupPoints; - QCheckBox* myAllChk; - QLabel* mySelectWiresLbl; - QPushButton* mySelectWiresBtn; - QLineEdit* mySelectWiresEdt; - -private slots: - void ClickOnOk(); - bool ClickOnApply(); - void ClickOnCancel(); - - void ActivateThisDialog(); - void DeactivateActiveDialog(); - - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - - void onRemoveAllClicked(); -}; - -#endif // DIALOGBOX_RemoveIntWires_H diff --git a/src/RepairGUI/RepairGUI_SewingDlg.cxx b/src/RepairGUI/RepairGUI_SewingDlg.cxx deleted file mode 100644 index 2bd0ee30a..000000000 --- a/src/RepairGUI/RepairGUI_SewingDlg.cxx +++ /dev/null @@ -1,369 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : RepairGUI_SewingDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "RepairGUI_SewingDlg.h" - -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" -#include "SUIT_Session.h" -#include "SUIT_MessageBox.h" -#include "SALOME_ListIteratorOfListIO.hxx" - -#include "GEOMImpl_Types.hxx" - -#include -#include - -#define DEFAULT_TOLERANCE_VALUE 1e-07 - -using namespace std; - -//================================================================================= -// class : RepairGUI_SewingDlg() -// purpose : Constructs a RepairGUI_SewingDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -RepairGUI_SewingDlg::RepairGUI_SewingDlg(QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_SEWING"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_SEWING_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_SEWING_TITLE")); - RadioButton1->setPixmap(image0); - RadioButton2->close(TRUE); - RadioButton3->close(TRUE); - - GroupPoints = new DlgRef_1Sel_Ext(this, "GroupPoints"); - GroupPoints->GroupBox1->setTitle(tr("GEOM_SEWING")); - GroupPoints->TextLabel1->setText(tr("GEOM_SELECTED_SHAPE")); - GroupPoints->PushButton1->setPixmap(image1); - GroupPoints->LineEdit1->setReadOnly( true ); - - Layout1->addWidget(GroupPoints, 2, 0); - - QGridLayout* aLay = new QGridLayout( 0, 2, 2, 0, 6, "aLay" ); - myTolEdt = new QtxDblSpinBox( 0, 100, 1e-7, GroupPoints->GroupBox1 );//QAD_SpinBoxDbl( GroupPoints->GroupBox1, 0, 100, 1e-7, 10, 1e-10 ); - myTolEdt->setPrecision( 10 ); - myTolEdt->setValue( DEFAULT_TOLERANCE_VALUE ); - QLabel* aLbl1 = new QLabel( tr( "GEOM_TOLERANCE" ), GroupPoints->GroupBox1 ); - myFreeBoundBtn = new QPushButton( tr( "GEOM_DETECT" ), GroupPoints->GroupBox1 ); - QLabel* aLbl2 = new QLabel( tr( "GEOM_FREE_BOUNDARIES" ), GroupPoints->GroupBox1 ); - aLay->addWidget( aLbl1, 0, 0 ); - aLay->addWidget( myTolEdt, 0, 1 ); - aLay->addWidget( aLbl2, 1, 0 ); - aLay->addWidget( myFreeBoundBtn, 1, 1 ); - - GroupPoints->getGroupBoxLayout()->addLayout( aLay, 3, 0 ); - /***************************************************************/ - - Init(); -} - - -//================================================================================= -// function : ~RepairGUI_SewingDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -RepairGUI_SewingDlg::~RepairGUI_SewingDlg() -{ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void RepairGUI_SewingDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = GroupPoints->LineEdit1; - - myObject = GEOM::GEOM_Object::_nil(); - - //myGeomGUI->SetState( 0 ); - initSelection(); - - myClosed = -1; - myOpen = -1; - - /* signals and slots connections */ - connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel())); - connect(myGeomGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog())); - connect(myGeomGUI, SIGNAL(SignalCloseAllDialogs()), this, SLOT(ClickOnCancel())); - - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - - connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - connect(myFreeBoundBtn, SIGNAL(clicked()), this, SLOT(onDetect())); - - initName( tr( "SEWING_NEW_OBJ_NAME" ) ); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : Same than click on apply but close this dialog. -//================================================================================= -void RepairGUI_SewingDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool RepairGUI_SewingDlg::ClickOnApply() -{ - if ( !onAccept() ) - return false; - - initName(); - - GroupPoints->LineEdit1->setText(""); - myObject = GEOM::GEOM_Object::_nil(); - - initSelection(); - - return true; -} - - -//================================================================================= -// function : ClickOnCancel() -// purpose : -//================================================================================= -void RepairGUI_SewingDlg::ClickOnCancel() -{ - GEOMBase_Skeleton::ClickOnCancel(); -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection -//================================================================================= -void RepairGUI_SewingDlg::SelectionIntoArgument() -{ - erasePreview(); - myEditCurrentArgument->setText(""); - myObject = GEOM::GEOM_Object::_nil(); - - if ( IObjectCount() == 1 ) - { - Handle(SALOME_InteractiveObject) anIO = firstIObject(); - Standard_Boolean aRes; - myObject = GEOMBase::ConvertIOinGEOMObject( anIO, aRes ); - if ( aRes ) - myEditCurrentArgument->setText( GEOMBase::GetName( myObject ) ); - } -} - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void RepairGUI_SewingDlg::SetEditCurrentArgument() -{ - const QObject* send = sender(); - if ( send == GroupPoints->PushButton1 ) - { - myEditCurrentArgument->setFocus(); - SelectionIntoArgument(); - } -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void RepairGUI_SewingDlg::LineEditReturnPressed() -{ - const QObject* send = sender(); - if( send == GroupPoints->LineEdit1 ) - { - myEditCurrentArgument = GroupPoints->LineEdit1; - GEOMBase_Skeleton::LineEditReturnPressed(); - } -} - - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : -//================================================================================= -void RepairGUI_SewingDlg::DeactivateActiveDialog() -{ - //myGeomGUI->SetState( -1 ); - GEOMBase_Skeleton::DeactivateActiveDialog(); -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void RepairGUI_SewingDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - GroupPoints->LineEdit1->setText(""); - myObject = GEOM::GEOM_Object::_nil(); - - myClosed = -1; - myOpen = -1; - - //myGeomGUI->SetState( 0 ); - initSelection(); -} - - -//================================================================================= -// function : enterEvent() -// purpose : Mouse enter onto the dialog to activate it -//================================================================================= -void RepairGUI_SewingDlg::enterEvent(QEvent* e) -{ - if ( !GroupConstructors->isEnabled() ) - ActivateThisDialog(); -} - - -//================================================================================= -// function : closeEvent() -// purpose : -//================================================================================= -void RepairGUI_SewingDlg::closeEvent(QCloseEvent* e) -{ - //myGeomGUI->SetState( -1 ); - GEOMBase_Skeleton::closeEvent( e ); -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr RepairGUI_SewingDlg::createOperation() -{ - return getGeomEngine()->GetIHealingOperations( getStudyId() ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool RepairGUI_SewingDlg::isValid( QString& msg ) -{ - myClosed = -1; - return !myObject->_is_nil() && ( IsPreview() || myTolEdt->value() > 0. ); -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool RepairGUI_SewingDlg::execute( ObjectList& objects ) -{ - bool aResult = false; - if ( IsPreview() ) // called from onDetect(): detect free boundary edges, highlight them (add to objects), display message dialog - { - GEOM::ListOfGO_var aClosed, anOpen; - - aResult = GEOM::GEOM_IHealingOperations::_narrow( getOperation() )->GetFreeBoundary( myObject, aClosed, anOpen ); - - if ( aResult ) - { - myClosed = aClosed->length(); - myOpen = anOpen->length(); - int i; - for ( i = 0; i < myClosed; i++ ) - objects.push_back( aClosed[i]._retn() ); - for ( i = 0; i < myOpen; i++ ) - objects.push_back( anOpen[i]._retn() ); - } - else - myClosed = -1; - } - else - { - GEOM::GEOM_Object_var anObj = GEOM::GEOM_IHealingOperations::_narrow( getOperation() )->Sew( myObject, myTolEdt->value() ); - aResult = !anObj->_is_nil(); - if ( aResult ) - objects.push_back( anObj._retn() ); - } - - return aResult; -} - -//================================================================================= -// function : initSelection -// purpose : -//================================================================================= -void RepairGUI_SewingDlg::initSelection() -{ - TColStd_MapOfInteger aTypes; - aTypes.Add( GEOM_SHELL ); - aTypes.Add( GEOM_SOLID ); - aTypes.Add( GEOM_COMPOUND ); - globalSelection( aTypes ); -} - -//================================================================================= -// function : onDetect -// purpose : -//================================================================================= -void RepairGUI_SewingDlg::onDetect() -{ - displayPreview( false, true, true, 3 ); - - // field myClosed,myOpen is initialized in execute() method, called by displayPreview(). - QString msg; - if ( myClosed != -1 ) - msg = tr( "GEOM_FREE_BOUNDS_MSG" ).arg( myClosed + myOpen ).arg( myClosed ).arg( myOpen ); - else - msg = tr( "GEOM_FREE_BOUNDS_ERROR" ); - SUIT_MessageBox::info1( this, tr( "GEOM_FREE_BOUNDS_TLT" ), msg, "Close" ); -} diff --git a/src/RepairGUI/RepairGUI_SewingDlg.h b/src/RepairGUI/RepairGUI_SewingDlg.h deleted file mode 100644 index c2c459507..000000000 --- a/src/RepairGUI/RepairGUI_SewingDlg.h +++ /dev/null @@ -1,91 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : RepairGUI_SewingDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_Sewing_H -#define DIALOGBOX_Sewing_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_1Sel_Ext.h" -#include "QtxDblSpinBox.h" - -#include - -#include -#include -#include -#include - -//================================================================================= -// class : RepairGUI_SewingDlg -// purpose : -//================================================================================= -class RepairGUI_SewingDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - RepairGUI_SewingDlg(QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~RepairGUI_SewingDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& ); - virtual bool execute( ObjectList& objects ); - -private : - void Init(); - void enterEvent(QEvent* e); - void closeEvent(QCloseEvent* e); - void initSelection(); - - GEOM::GEOM_Object_var myObject; - - DlgRef_1Sel_Ext* GroupPoints; - QtxDblSpinBox* myTolEdt; - QPushButton* myFreeBoundBtn; - - int myClosed; // number of free closed boundaries detected. calculated in execute(), used in onDetect(). - int myOpen; // number of free open boundaries detected. calculated in execute(), used in onDetect(). - -private slots: - void ClickOnOk(); - bool ClickOnApply(); - void ClickOnCancel(); - - void ActivateThisDialog(); - void DeactivateActiveDialog(); - - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - - void onDetect(); -}; - -#endif // DIALOGBOX_Sewing_H diff --git a/src/RepairGUI/RepairGUI_ShapeProcessDlg.cxx b/src/RepairGUI/RepairGUI_ShapeProcessDlg.cxx deleted file mode 100755 index cb30f82dc..000000000 --- a/src/RepairGUI/RepairGUI_ShapeProcessDlg.cxx +++ /dev/null @@ -1,847 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : RepairGUI_ShapeProcessDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "RepairGUI_ShapeProcessDlg.h" - -#include "GEOMImpl_Types.hxx" - -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" -#include "SUIT_Session.h" -#include "SALOME_ListIteratorOfListIO.hxx" -#include "SALOME_ListIO.hxx" - -#include -#include - -#include -#include -#include - -using namespace std; - -//================================================================================= -// class : RepairGUI_ShapeProcessDlg() -// purpose : Constructs a RepairGUI_ShapeProcessDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -RepairGUI_ShapeProcessDlg::RepairGUI_ShapeProcessDlg(QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) -{ - init(); -} - - -//================================================================================= -// function : ~RepairGUI_ShapeProcessDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -RepairGUI_ShapeProcessDlg::~RepairGUI_ShapeProcessDlg() -{ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void RepairGUI_ShapeProcessDlg::init() -{ - //myGeomGUI->SetState( 0 ); - - initParamsValues(); - initSelection(); - - setCaption(tr("GEOM_SHAPEPROCESS_TITLE")); - - GroupConstructors->hide(); - - // select widget on the top - mySelectWdgt = new DlgRef_1Sel_QTD( this, "SelectedObjects" ); - mySelectWdgt->GroupBox1->setTitle( tr("GEOM_SHAPE") ); - mySelectWdgt->TextLabel1->setText( tr("GEOM_SELECTED_OBJECTS") ); - mySelectWdgt->PushButton1->setPixmap( SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT")) ); - mySelectWdgt->LineEdit1->setReadOnly( true ); - - Layout1->addWidget( mySelectWdgt, 0, 0 ); - - // layout the two group boxes in the middle, add a list of operations - QFrame* aMidFrame = new QFrame( this ); - QGridLayout* aMidLay = new QGridLayout( aMidFrame, 1, 3, 0, 5 ); - QGroupBox* anOperGr = new QGroupBox( tr("GEOM_OPERATIONS"), aMidFrame ); - QVBoxLayout* aOperLay = new QVBoxLayout( anOperGr, 0, 0 ); - - myOpList = new QListView( anOperGr ); - myOpList->setSorting( -1 ); - myOpList->addColumn( "Operations" ); - myOpList->header()->hide(); - aOperLay->addWidget( myOpList ); - QStringList::ConstIterator it = myOpLst.end(); - do // iterating from end to begin so to keep the order of items in the listview. - new QCheckListItem ( myOpList, *(--it), QCheckListItem::CheckBox ); - while ( it != myOpLst.begin() ); - - QGroupBox* aParamsGr = new QGroupBox( tr("GEOM_PARAMETERS"), aMidFrame ); - aMidLay->addWidget( anOperGr, 0, 0 ); - aMidLay->addMultiCellWidget( aParamsGr, 0, 0, 1, 3 ); - aMidLay->setColStretch( 0, 1 ); - aMidLay->setColStretch( 1, 2 ); - - Layout1->addWidget( aMidFrame, 2, 0 ); - Layout1->setRowStretch( 0, 0 ); - Layout1->setRowStretch( 1, 1 ); - - // add a widget stack to the parameters group box - myStack = new QWidgetStack( aParamsGr ); - QVBoxLayout* aVParamsLay = new QVBoxLayout( aParamsGr ); - aVParamsLay->addWidget( myStack ); - - // continueties values.. - QStringList aContinueties = QStringList::split( ",", "C0,G1,C1,G2,C2,C3,CN" ); - - // FixShape - QFrame* aFrame = new QFrame( myStack ); - QGridLayout* aLay = new QGridLayout( aFrame, 10, 2, 0, 5 ); - - myFixShapeTol3D = new QtxDblSpinBox( 0, 100, 1e-7, aFrame );//QAD_SpinBoxDbl( aFrame, 0, 100, 1e-7, 10, 1e-10 ); - myFixShapeTol3D->setPrecision( 10 ); - myFixShapeMaxTol3D = new QtxDblSpinBox( 0, 100, 1e-7, aFrame );//QAD_SpinBoxDbl( aFrame, 0, 100, 1e-7, 10, 1e-10 ); - myFixShapeMaxTol3D->setPrecision( 10 ); - - aLay->addWidget( new QLabel( tr("GEOM_3D_TOLERANCE"), aFrame ), 0, 0 ); - aLay->addWidget( myFixShapeTol3D, 0, 1 ); - aLay->addWidget( new QLabel( tr("GEOM_MAX_3D_TOLERANCE"), aFrame ), 1, 0 ); - aLay->addWidget( myFixShapeMaxTol3D, 1, 1 ); - aLay->setRowStretch( 9, 2 ); - - myStack->addWidget( aFrame, myOpLst.findIndex( "FixShape" ) ); - - // FixFaceSize - aFrame = new QFrame( myStack ); - aLay = new QGridLayout( aFrame, 10, 2, 0, 5 ); - - myFixFaceSizeTol = new QtxDblSpinBox( 0, 100, 1e-7, aFrame );//QAD_SpinBoxDbl( aFrame, 0, 100, 1e-7, 10, 1e-10 ); - myFixFaceSizeTol->setPrecision( 10 ); - - aLay->addWidget( new QLabel( tr("GEOM_TOLERANCE"), aFrame ), 0, 0 ); - aLay->addWidget( myFixFaceSizeTol, 0, 1 ); - aLay->setRowStretch( 9, 2 ); - - myStack->addWidget( aFrame, myOpLst.findIndex( "FixFaceSize" ) ); - - // DropSmallEdges - aFrame = new QFrame( myStack ); - aLay = new QGridLayout( aFrame, 10, 2, 0, 5 ); - - myDropSmallEdgesTol3D = new QtxDblSpinBox( 0, 100, 1e-7, aFrame );//QAD_SpinBoxDbl( aFrame, 0, 100, 1e-7, 10, 1e-10 ); - myDropSmallEdgesTol3D->setPrecision( 10 ); - - aLay->addWidget( new QLabel( tr("GEOM_3D_TOLERANCE"), aFrame ), 0, 0 ); - aLay->addWidget( myDropSmallEdgesTol3D, 0, 1 ); - aLay->setRowStretch( 9, 2 ); - - myStack->addWidget( aFrame, myOpLst.findIndex( "DropSmallEdges" ) ); - - // SplitAngle - aFrame = new QFrame( myStack ); - aLay = new QGridLayout( aFrame, 10, 2, 0, 5 ); - - mySplitAngleAngle = new QtxDblSpinBox( 0, 360, 1, aFrame );//QAD_SpinBoxDbl( aFrame, 0, 360, 1 ); - mySplitAngleMaxTol = new QtxDblSpinBox( 0, 100, 1e-7, aFrame );//QAD_SpinBoxDbl( aFrame, 0, 100, 1e-7, 10, 1e-10 ); - mySplitAngleMaxTol->setPrecision( 10 ); - - aLay->addWidget( new QLabel( tr("GEOM_ANGLE_1"), aFrame ), 0, 0 ); - aLay->addWidget( mySplitAngleAngle, 0, 1 ); - aLay->addWidget( new QLabel( tr("GEOM_MAX_TOLERANCE"), aFrame ), 1, 0 ); - aLay->addWidget( mySplitAngleMaxTol, 1, 1 ); - aLay->setRowStretch( 9, 2 ); - - myStack->addWidget( aFrame, myOpLst.findIndex( "SplitAngle" ) ); - - // SplitClosedFaces - aFrame = new QFrame( myStack ); - aLay = new QGridLayout( aFrame, 10, 2, 0, 5 ); - - mySplitClosedFacesNum = new QSpinBox( aFrame ); - - aLay->addWidget( new QLabel( tr("GEOM_NUM_SPLIT_POINTS"), aFrame ), 0, 0 ); - aLay->addWidget( mySplitClosedFacesNum, 0, 1 ); - aLay->setRowStretch( 9, 2 ); - - myStack->addWidget( aFrame, myOpLst.findIndex( "SplitClosedFaces" ) ); - - // SplitContinuity - aFrame = new QFrame( myStack ); - aLay = new QGridLayout( aFrame, 10, 2, 0, 5 ); - - mySplitContTol3D = new QtxDblSpinBox( 0, 100, 1e-7, aFrame );//QAD_SpinBoxDbl( aFrame, 0, 100, 1e-7, 10, 1e-10 ); - mySplitContTol3D->setPrecision( 10 ); - mySplitContSurfCont = new QComboBox( aFrame ); - mySplitContSurfCont->insertStringList( aContinueties ); - mySplitContCurvCont = new QComboBox( aFrame ); - mySplitContCurvCont->insertStringList( aContinueties ); - - aLay->addWidget( new QLabel( tr("GEOM_3D_TOLERANCE"), aFrame ), 0, 0 ); - aLay->addWidget( mySplitContTol3D, 0, 1 ); - aLay->addWidget( new QLabel( tr("GEOM_SURFACE_CONTINUTY"), aFrame ), 1, 0 ); - aLay->addWidget( mySplitContSurfCont, 1, 1 ); - aLay->addWidget( new QLabel( tr("GEOM_CURVE_CONTINUTY"), aFrame ), 2, 0 ); - aLay->addWidget( mySplitContCurvCont, 2, 1 ); - aLay->setRowStretch( 9, 2 ); - - myStack->addWidget( aFrame, myOpLst.findIndex( "SplitContinuity" ) ); - - // BSplineRestriction - aFrame = new QFrame( myStack ); - aLay = new QGridLayout( aFrame, 10, 2, 0, 5 ); - - myBSplineSurfModeChk = new QCheckBox( tr("GEOM_SURFACE_MODE"), aFrame ); - myBSpline3DCurveChk = new QCheckBox( tr("GEOM_3D_CURVE_MODE"), aFrame ); - myBSpline2DCurveChk = new QCheckBox( tr("GEOM_2D_CURVE_MODE"), aFrame ); - - myBSplineTol3D = new QtxDblSpinBox( 0, 100, 1e-7, aFrame );//QAD_SpinBoxDbl( aFrame, 0, 100, 1e-7, 10, 1e-10 ); - myBSplineTol3D->setPrecision( 10 ); - - myBSplineTol2D = new QtxDblSpinBox( 0, 100, 1e-7, aFrame );//QAD_SpinBoxDbl( aFrame, 0, 100, 1e-7, 10, 1e-10 ); - myBSplineTol2D->setPrecision( 10 ); - - myBSplineDegree = new QSpinBox( aFrame ); - myBSplineSegments = new QSpinBox( aFrame ); - myBSpline2DCont = new QComboBox( aFrame ); - myBSpline2DCont->insertStringList( aContinueties ); - myBSpline3DCont = new QComboBox( aFrame ); - myBSpline3DCont->insertStringList( aContinueties ); - - myBSplineSurfModeChk->setChecked( true ); - myBSpline3DCurveChk->setChecked( true ); - myBSpline2DCurveChk->setChecked( true ); - - aLay->addWidget( myBSplineSurfModeChk, 0, 0 ); - aLay->addWidget( myBSpline3DCurveChk, 1, 0 ); - aLay->addWidget( myBSpline2DCurveChk, 2, 0 ); - aLay->addWidget( new QLabel( tr("GEOM_3D_TOLERANCE"), aFrame), 3, 0 ); - aLay->addWidget( myBSplineTol3D, 3, 1 ); - aLay->addWidget( new QLabel( tr("GEOM_2D_TOLERANCE"), aFrame), 4, 0 ); - aLay->addWidget( myBSplineTol2D, 4, 1 ); - aLay->addWidget( new QLabel( tr("GEOM_REQUIRED_DEGREE"), aFrame), 5, 0 ); - aLay->addWidget( myBSplineDegree, 5, 1 ); - aLay->addWidget( new QLabel( tr("GEOM_REQUIRED_NUM_SEGMENTS"), aFrame), 6, 0 ); - aLay->addWidget( myBSplineSegments, 6, 1 ); - aLay->addWidget( new QLabel( tr("GEOM_3D_CONTINUTY"), aFrame), 7, 0 ); - aLay->addWidget( myBSpline3DCont, 7, 1 ); - aLay->addWidget( new QLabel( tr("GEOM_2D_CONTINUTY"), aFrame), 8, 0 ); - aLay->addWidget( myBSpline2DCont, 8, 1 ); - aLay->setRowStretch( 9, 2 ); - - myStack->addWidget( aFrame, myOpLst.findIndex( "BSplineRestriction" ) ); - - // ToBezier - aFrame = new QFrame( myStack ); - aLay = new QGridLayout( aFrame, 10, 2, 0, 5 ); - - myToBezierSurfModeChk = new QCheckBox( tr("GEOM_SURFACE_MODE"), aFrame ); - myToBezier3DCurveChk = new QCheckBox( tr("GEOM_3D_CURVE_MODE"), aFrame ); - myToBezier2DCurveChk = new QCheckBox( tr("GEOM_2D_CURVE_MODE"), aFrame ); - - myToBezierMaxTol = new QtxDblSpinBox( 0, 100, 1e-7, aFrame );//QAD_SpinBoxDbl( aFrame, 0, 100, 1e-7, 10, 1e-10 ); - myToBezierMaxTol->setPrecision( 10 ); - - aLay->addWidget( myToBezierSurfModeChk, 0, 0 ); - aLay->addWidget( myToBezier3DCurveChk, 1, 0 ); - aLay->addWidget( myToBezier2DCurveChk, 2, 0 ); - aLay->addWidget( new QLabel( tr("GEOM_MAX_TOLERANCE"), aFrame), 3, 0 ); - aLay->addWidget( myToBezierMaxTol, 3, 1 ); - aLay->setRowStretch( 9, 2 ); - - myStack->addWidget( aFrame, myOpLst.findIndex( "ToBezier" ) ); - - // SameParameter - aFrame = new QFrame( myStack ); - aLay = new QGridLayout( aFrame, 10, 2, 0, 5 ); - - mySameParameterTol3D = new QtxDblSpinBox( 0, 100, 1e-7, aFrame );//QAD_SpinBoxDbl( aFrame, 0, 100, 1e-7, 10, 1e-10 ); - mySameParameterTol3D->setPrecision( 10 ); - - aLay->addWidget( new QLabel( tr("GEOM_3D_TOLERANCE"), aFrame ), 0, 0 ); - aLay->addWidget( mySameParameterTol3D, 0, 1 ); - aLay->setRowStretch( 9, 2 ); - - myStack->addWidget( aFrame, myOpLst.findIndex( "SameParameter" ) ); - - // signals and slots connections - connect( myGeomGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(deactivate()) ); - connect( myGeomGUI, SIGNAL(SignalCloseAllDialogs()), this, SLOT(onCancel()) ); - - connect( buttonCancel, SIGNAL(clicked()), this, SLOT(onCancel()) ); - connect( buttonOk, SIGNAL(clicked()), this, SLOT(onOk()) ); - connect( buttonApply, SIGNAL(clicked()), this, SLOT(onApply()) ); - - connect( ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(selectionChanged()) ); - connect( myOpList, SIGNAL(selectionChanged()), this, SLOT(operationChanged()) ); - - connect( mySelectWdgt->PushButton1, SIGNAL(clicked()), this, SLOT(selectClicked()) ); - connect( mySelectWdgt->LineEdit1, SIGNAL(returnPressed()), this, SLOT(lineEditReturnPressed()) ); - - connect( myToBezierSurfModeChk, SIGNAL(toggled(bool)), SLOT(advOptionToggled(bool)) ); - - adjustSize(); - loadDefaults(); // init dialog fields with values from resource file - myOpList->setSelected( myOpList->findItem( "FixShape", 0 ), true ); - reset(); - - initName( tr( "PROCESS_SHAPE_NEW_OBJ_NAME" ) ); -} - -//================================================================================= -// function : operationChanged() -// purpose : -//================================================================================= -void RepairGUI_ShapeProcessDlg::operationChanged() -{ - QListViewItem* anItem = myOpList->selectedItem(); - if ( anItem ) - { - int id = myOpLst.findIndex( anItem->text(0) ); - if ( id > -1 ) - myStack->raiseWidget( id ); - } -} - -//================================================================================= -// function : onOk() -// purpose : Same than click on apply but close this dialog. -//================================================================================= -void RepairGUI_ShapeProcessDlg::onOk() -{ - if ( onApply() ) - onCancel(); -} - - - -//================================================================================= -// function : onApply() -// purpose : -//================================================================================= -bool RepairGUI_ShapeProcessDlg::onApply() -{ - if ( !onAccept() ) - return false; - - initName(); - - reset(); - initSelection(); - - return true; -} - - -//================================================================================= -// function : onCancel() -// purpose : -//================================================================================= -void RepairGUI_ShapeProcessDlg::onCancel() -{ - GEOMBase_Skeleton::ClickOnCancel(); -} - - -//================================================================================= -// function : selectionChanged() -// purpose : Called when selection as changed or other case -// : used only by SelectButtonC1A1 (LineEditC1A1) -//================================================================================= -void RepairGUI_ShapeProcessDlg::selectionChanged() -{ - reset(); - - Standard_Boolean aRes = Standard_False; - int i = 0; - myObjects->length( IObjectCount() ); - for ( SALOME_ListIteratorOfListIO anIt( selectedIO() ); anIt.More(); anIt.Next() ) - { - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( anIt.Value(), aRes ); - if ( !CORBA::is_nil( aSelectedObject ) && aRes ) - myObjects[i++] = aSelectedObject; - } - myObjects->length( i ); - if ( i == 1 ) - mySelectWdgt->LineEdit1->setText( GEOMBase::GetName( myObjects[0] ) ); - else if ( i > 0 ) - mySelectWdgt->LineEdit1->setText( QString::number( i ) + "_" + tr( "GEOM_OBJECTS" ) ); -} - - -//================================================================================= -// function : selectClicked() -// purpose : -//================================================================================= -void RepairGUI_ShapeProcessDlg::selectClicked() -{ - myEditCurrentArgument = mySelectWdgt->LineEdit1; - mySelectWdgt->LineEdit1->setFocus(); - selectionChanged(); -} - - -//================================================================================= -// function : lineEditReturnPressed() -// purpose : -//================================================================================= -void RepairGUI_ShapeProcessDlg::lineEditReturnPressed() -{ - GEOMBase_Skeleton::LineEditReturnPressed(); -} - - -//================================================================================= -// function : deactivate() -// purpose : -//================================================================================= -void RepairGUI_ShapeProcessDlg::deactivate() -{ - //myGeomGUI->SetState( -1 ); - GEOMBase_Skeleton::DeactivateActiveDialog(); -} - - -//================================================================================= -// function : activate() -// purpose : -//================================================================================= -void RepairGUI_ShapeProcessDlg::activate() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(selectionChanged())); - - reset(); - //myGeomGUI->SetState( 0 ); - initSelection(); -} - - -//================================================================================= -// function : enterEvent() -// purpose : Mouse enter onto the dialog to activate it -//================================================================================= -void RepairGUI_ShapeProcessDlg::enterEvent(QEvent* e) -{ - if ( !GroupConstructors->isEnabled() ) - activate(); -} - - -//================================================================================= -// function : closeEvent() -// purpose : same than click on cancel button -//================================================================================= -void RepairGUI_ShapeProcessDlg::closeEvent(QCloseEvent* e) -{ - //myGeomGUI->SetState( -1 ); - GEOMBase_Skeleton::closeEvent( e ); -} - - -//================================================================================= -// function : reset() -// purpose : Completely reset the state of method including local context -//================================================================================= -void RepairGUI_ShapeProcessDlg::reset() -{ - myObjects = new GEOM::ListOfGO(); - myObjects->length( 0 ); - mySelectWdgt->LineEdit1->setText(""); -} - - -//================================================================================= -// function : get_convert -// purpose : conversion of angle values to radians (non-angle values are not converted) -//================================================================================= -const char* get_convert( const char* theParam, const char* theValue ) -{ - if ( !strcmp( theParam, "SplitAngle.Angle" ) ) - { - double doubleValue = atof( theValue ) * PI / 180; - TCollection_AsciiString str( doubleValue ); - return CORBA::string_dup( str.ToCString() ); - } - return CORBA::string_dup( theValue ); -} - -//================================================================================= -// function : set_convert -// purpose : conversion of angle values to degrees (non-angle values are not converted) -//================================================================================= -const char* set_convert( const char* theParam, const char* theValue ) -{ - if ( !strcmp( theParam, "SplitAngle.Angle" ) ) - { - double doubleValue = atof( theValue ) * 180 / PI; - TCollection_AsciiString str( doubleValue ); - return CORBA::string_dup( str.ToCString() ); - } - return CORBA::string_dup( theValue ); -} - -//================================================================================= -// function : loadDefaults() -// purpose : initialize "values"-fields with default values retrieved from IHealingOperations -//================================================================================= -void RepairGUI_ShapeProcessDlg::loadDefaults() -{ - GEOM::GEOM_IHealingOperations_var anOp = myGeomGUI->GetGeomGen()->GetIHealingOperations( getStudyId() ); - GEOM::string_array_var anOperators, aParams, aValues; - anOp->GetShapeProcessParameters( anOperators, aParams, aValues ); - - // check the default items-operators - int i; - for ( i = 0; i < anOperators->length(); i++ ) - { - //MESSAGE("-->"<<(const char*)anOperators[i]); - QListViewItem* anItem = myOpList->findItem( (const char*)anOperators[i], 0 ); - if ( anItem /*&& anItem->inherits( "QCheckListItem" )*/ ) - ((QCheckListItem*) anItem)->setOn( true ); - } - - // Retrieve default parameters for ALL operators - for ( QListViewItemIterator it(myOpList); it.current(); ++it ) { - CORBA::String_var anOperator = CORBA::string_dup( it.current()->text( 0 ).latin1() ); - anOp->GetOperatorParameters( anOperator.in(), aParams, aValues ); - - // set default values of parameters - if ( aParams->length() != aValues->length() ) - continue; - for ( i = 0; i < aParams->length(); i++ ) { - QWidget* aCtrl = getControl( (const char*)aParams[i] ); - const char* aValue = set_convert( (const char*)aParams[i], aValues[i] ); - setValue( aCtrl, aValue ); - } - } -} - -//================================================================================= -// function : setValue() -// purpose : set value in the proper way -//================================================================================= -void RepairGUI_ShapeProcessDlg::setValue( QWidget* theControl, const char* theValue ) -{ - if ( theControl == NULL || theValue == NULL ) - return; - - if ( theControl->isA( "QtxDblSpinBox" ) ) - ((QtxDblSpinBox*)theControl)->setValue( QString( theValue ).toDouble() ); - else if ( theControl->isA( "QSpinBox" ) ) - ((QSpinBox*)theControl)->setValue( QString( theValue ).toInt() ); - else if ( theControl->isA( "QComboBox" ) ) - ((QComboBox*)theControl)->setCurrentText( QString( theValue ) ); - else if ( theControl->isA( "QCheckBox" ) ) - ((QCheckBox*)theControl)->setChecked( QString( theValue ).toInt() != 0 ); -} - -//================================================================================= -// function : getValue() -// purpose : get value in the proper way -//================================================================================= -const char* RepairGUI_ShapeProcessDlg::getValue( QWidget* theControl ) const -{ - if ( theControl == NULL ) - return ""; - - if ( theControl->isA( "QtxDblSpinBox" ) ) - return ((QtxDblSpinBox*)theControl)->text().latin1(); - else if ( theControl->isA( "QSpinBox" ) ) - return ((QSpinBox*)theControl)->text().latin1(); - else if ( theControl->isA( "QComboBox" ) ) - return ((QComboBox*)theControl)->currentText().latin1(); - else if ( theControl->isA( "QCheckBox" ) ) - return ((QCheckBox*)theControl)->isChecked() ? "1" : "0"; - - return ""; -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr RepairGUI_ShapeProcessDlg::createOperation() -{ - return getGeomEngine()->GetIHealingOperations( getStudyId() ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool RepairGUI_ShapeProcessDlg::isValid( QString& msg ) -{ - bool error = false; - GEOM::string_array_var anOperators = getActiveOperators(); - if ( !myObjects->length() ) - { - msg += tr( "ERROR_NO_OBJECTS" ); - error = true; - } - if ( !anOperators->length() ) - { - if ( error ) - msg += "\n"; - msg += tr( "ERROR_NO_OPERATORS" ); - error = true; - } - return !error; -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool RepairGUI_ShapeProcessDlg::execute( ObjectList& objects ) -{ - GEOM::string_array_var anOperators = getActiveOperators(); - GEOM::string_array_var aParams = getParameters( anOperators ); - GEOM::string_array_var aValues = getValues( aParams ); - - /*//-- check -- - int z; - MESSAGE("Objects : "); - for ( z = 0; z < myObjects->length(); z++ ) - MESSAGE(myObjects[z]->GetName() << " "); - MESSAGE("\nOperators : "); - for ( z = 0; z < anOperators->length(); z++ ) - MESSAGE(anOperators[z] << " "); - MESSAGE("\nParameters : "); - for ( z = 0; z < aParams->length(); z++ ) - MESSAGE(aParams[z] << " "); - MESSAGE("\nValues : "); - for ( z = 0; z < aValues->length(); z ++ ) - MESSAGE(aValues[z] << " "); - MESSAGE("\n"); - */// ----------- - - QStringList anErrorObjNames; - for ( int i = 0; i < myObjects->length(); i++ ) - { - GEOM::GEOM_Object_var obj = myObjects[i]; - GEOM::GEOM_Object_var anObj = GEOM::GEOM_IHealingOperations::_narrow( getOperation() )->ProcessShape( - obj, anOperators, aParams, aValues ); - if ( anObj->_is_nil() ) - anErrorObjNames << GEOMBase::GetName( obj ); - else - objects.push_back( anObj._retn() ); - } - - if ( !anErrorObjNames.empty() ) - MESSAGE("ERRORS occured while processing the following objects: " << anErrorObjNames.join( " " )); - - return anErrorObjNames.size() < myObjects->length(); // true if at least one object was OK, false if ALL objects were nil after Healing. -} - -//================================================================================= -// function : getActiveOperators -// purpose : -//================================================================================= -GEOM::string_array* RepairGUI_ShapeProcessDlg::getActiveOperators() -{ - GEOM::string_array_var anOperators = new GEOM::string_array(); - QStringList aCheckedList; - QStringList::Iterator it; - for ( it = myOpLst.begin(); it != myOpLst.end(); ++it ) - if ( ((QCheckListItem*)myOpList->findItem( *it, 0 ))->isOn() ) - aCheckedList << *it; - anOperators->length( aCheckedList.size() ); - int i = 0; - for ( it = aCheckedList.begin(); it != aCheckedList.end(); ++it ) - anOperators[i++] = CORBA::string_dup( (*it).latin1() ); - - return anOperators._retn(); -} - -//================================================================================= -// function : getcontrol -// purpose : -//================================================================================= -QWidget* RepairGUI_ShapeProcessDlg::getControl( const char* theParam ) -{ - string aParam = theParam; - if ( aParam == "SplitAngle.Angle" ) return mySplitAngleAngle; - else if ( aParam == "SplitAngle.MaxTolerance" ) return mySplitAngleMaxTol; - else if ( aParam == "SplitClosedFaces.NbSplitPoints" ) return mySplitClosedFacesNum; - else if ( aParam == "FixFaceSize.Tolerance" ) return myFixFaceSizeTol; - else if ( aParam == "DropSmallEdges.Tolerance3d" ) return myDropSmallEdgesTol3D; - else if ( aParam == "BSplineRestriction.SurfaceMode" ) return myBSplineSurfModeChk; - else if ( aParam == "BSplineRestriction.Curve3dMode" ) return myBSpline3DCurveChk; - else if ( aParam == "BSplineRestriction.Curve2dMode" ) return myBSpline2DCurveChk; - else if ( aParam == "BSplineRestriction.Tolerance3d" ) return myBSplineTol3D; - else if ( aParam == "BSplineRestriction.Tolerance2d" ) return myBSplineTol2D; - else if ( aParam == "BSplineRestriction.RequiredDegree" ) return myBSplineDegree; - else if ( aParam == "BSplineRestriction.RequiredNbSegments" ) return myBSplineSegments; - else if ( aParam == "BSplineRestriction.Continuity3d" ) return myBSpline3DCont; - else if ( aParam == "BSplineRestriction.Continuity2d" ) return myBSpline2DCont; - else if ( aParam == "SplitContinuity.Tolerance3d" ) return mySplitContTol3D; - else if ( aParam == "SplitContinuity.SurfaceContinuity" ) return mySplitContSurfCont; - else if ( aParam == "SplitContinuity.CurveContinuity" ) return mySplitContCurvCont; - else if ( aParam == "ToBezier.SurfaceMode" ) return myToBezierSurfModeChk; - else if ( aParam == "ToBezier.Curve3dMode" ) return myToBezier3DCurveChk; - else if ( aParam == "ToBezier.Curve2dMode" ) return myToBezier2DCurveChk; - else if ( aParam == "ToBezier.MaxTolerance" ) return myToBezierMaxTol; - else if ( aParam == "SameParameter.Tolerance3d" ) return mySameParameterTol3D; - else if ( aParam == "FixShape.Tolerance3d" ) return myFixShapeTol3D; - else if ( aParam == "FixShape.MaxTolerance3d" ) return myFixShapeMaxTol3D; - return NULL; -} - -//================================================================================= -// function : getParameters -// purpose : -//================================================================================= -void RepairGUI_ShapeProcessDlg::initParamsValues() -{ - myOpLst << "FixShape"; - myValMap["FixShape"] << "FixShape.Tolerance3d"; - myValMap["FixShape"] << "FixShape.MaxTolerance3d"; - - myOpLst << "FixFaceSize"; - myValMap["FixFaceSize"] << "FixFaceSize.Tolerance"; - - myOpLst << "DropSmallEdges"; - myValMap["DropSmallEdges"] << "DropSmallEdges.Tolerance3d"; - - myOpLst << "SplitAngle"; - myValMap["SplitAngle"] << "SplitAngle.Angle"; - myValMap["SplitAngle"] << "SplitAngle.MaxTolerance"; - - myOpLst << "SplitClosedFaces"; - myValMap["SplitClosedFaces"] << "SplitClosedFaces.NbSplitPoints"; - - myOpLst << "SplitContinuity"; - myValMap["SplitContinuity"] << "SplitContinuity.Tolerance3d"; - myValMap["SplitContinuity"] << "SplitContinuity.SurfaceContinuity"; - myValMap["SplitContinuity"] << "SplitContinuity.CurveContinuity"; - - myOpLst << "BSplineRestriction"; - myValMap["BSplineRestriction"] << "BSplineRestriction.SurfaceMode"; - myValMap["BSplineRestriction"] << "BSplineRestriction.Curve3dMode"; - myValMap["BSplineRestriction"] << "BSplineRestriction.Curve2dMode"; - myValMap["BSplineRestriction"] << "BSplineRestriction.Tolerance3d"; - myValMap["BSplineRestriction"] << "BSplineRestriction.Tolerance2d"; - myValMap["BSplineRestriction"] << "BSplineRestriction.RequiredDegree"; - myValMap["BSplineRestriction"] << "BSplineRestriction.RequiredNbSegments"; - myValMap["BSplineRestriction"] << "BSplineRestriction.Continuity3d"; - myValMap["BSplineRestriction"] << "BSplineRestriction.Continuity2d"; - - myOpLst << "ToBezier"; - myValMap["ToBezier"] << "ToBezier.SurfaceMode"; - myValMap["ToBezier"] << "ToBezier.Curve3dMode"; - myValMap["ToBezier"] << "ToBezier.Curve2dMode"; - myValMap["ToBezier"] << "ToBezier.MaxTolerance"; - - myOpLst << "SameParameter"; - myValMap["SameParameter"] << "SameParameter.Tolerance3d"; -} - -//================================================================================= -// function : getParameters -// purpose : -//================================================================================= -GEOM::string_array* RepairGUI_ShapeProcessDlg::getParameters( const GEOM::string_array& theOperators ) -{ - GEOM::string_array_var aParams = new GEOM::string_array(); - int i( 0 ), j( 0 ); - - // calculate the length of parameters - for ( i = 0, j = 0; i < theOperators.length(); i++ ) - j+= myValMap[QString((const char*)theOperators[i])].size(); - - // set the new length of paremeters - aParams->length( j ); - - // fill the parameters - for ( i = 0, j = 0; i < theOperators.length(); i++ ) - { - QStringList aValLst = myValMap[QString( (const char*)theOperators[i] )]; - for ( QStringList::Iterator it = aValLst.begin(); it != aValLst.end(); ++it ) - aParams[j++] = CORBA::string_dup( (*it).latin1() ); - } - - return aParams._retn(); -} - - -//================================================================================= -// function : getValues -// purpose : -//================================================================================= -GEOM::string_array* RepairGUI_ShapeProcessDlg::getValues( const GEOM::string_array& theParams ) -{ - GEOM::string_array_var aValues = new GEOM::string_array(); - aValues->length( theParams.length() ); - - for ( int i = 0; i < theParams.length(); i++ ) - { - QWidget* aCtrl = getControl( (const char*)theParams[i] ); - if ( aCtrl ) - aValues[i] = get_convert( (const char*)theParams[i], getValue( aCtrl ) ); - } - - return aValues._retn(); -} - -//================================================================================= -// function : initSelection -// purpose : set selection of ALL shape types except vertexes -//================================================================================= -void RepairGUI_ShapeProcessDlg::initSelection() -{ - TColStd_MapOfInteger aTypes; - aTypes.Add( GEOM_COMPOUND ); - aTypes.Add( GEOM_SOLID ); - aTypes.Add( GEOM_SHELL ); - aTypes.Add( GEOM_FACE ); - aTypes.Add( GEOM_WIRE ); - aTypes.Add( GEOM_EDGE ); - globalSelection( aTypes ); -} - -//================================================================================= -// function : advOptionToggled -// purpose : this slot is used to warn the user about possible consequences -// of enabling some advanced options -//================================================================================= -void RepairGUI_ShapeProcessDlg::advOptionToggled( bool on ) -{ - QButton* btn = (QButton*)sender(); - if ( on && btn->isToggleButton() && - QMessageBox::warning( SUIT_Session::session()->activeApplication()->desktop(), tr( "GEOM_WRN_WARNING" ), tr( "TIME_CONSUMING" ), QMessageBox::Yes, QMessageBox::No ) == QMessageBox::No ) - btn->toggle(); -} diff --git a/src/RepairGUI/RepairGUI_ShapeProcessDlg.h b/src/RepairGUI/RepairGUI_ShapeProcessDlg.h deleted file mode 100755 index 656ab7afa..000000000 --- a/src/RepairGUI/RepairGUI_ShapeProcessDlg.h +++ /dev/null @@ -1,141 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : RepairGUI_ShapeProcessDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_ShapeProcess_H -#define DIALOGBOX_ShapeProcess_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_1Sel_QTD.h" -#include "RepairGUI.h" -#include "QtxDblSpinBox.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -//================================================================================= -// class : RepairGUI_ShapeProcessDlg -// purpose : -//================================================================================= -class RepairGUI_ShapeProcessDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - RepairGUI_ShapeProcessDlg(QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~RepairGUI_ShapeProcessDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& ); - virtual bool execute( ObjectList& objects ); - - virtual void closeEvent( QCloseEvent* e ); - -private : - void init(); - void reset(); - void loadDefaults(); // initialize all controls with default values (from resource file) - GEOM::string_array* getActiveOperators(); - GEOM::string_array* getParameters( const GEOM::string_array& theOperators ); - GEOM::string_array* getValues( const GEOM::string_array& theParameters ); - - void enterEvent(QEvent* e); - - QWidget* getControl( const char* ); - void setValue( QWidget*, const char* ); // initialize the given control in the proper way - // (analize its class and convert the value string) - const char* getValue( QWidget* theControl ) const; // retrieve value of the control in the proper way - - QStringList myOpLst; // list of available Shape Healing Operators - QMap myValMap; // map of parameters of operators - //QDict myCtrlMap; // map of controls (values) of parameters - void initParamsValues(); // initialize the data structures - void initSelection(); - - GEOM::ListOfGO_var myObjects; // selected objects - - DlgRef_1Sel_QTD* mySelectWdgt; - QListView* myOpList; - QWidgetStack* myStack; - - QtxDblSpinBox* myFixShapeTol3D; - QtxDblSpinBox* myFixShapeMaxTol3D; - - QtxDblSpinBox* myFixFaceSizeTol; - - QtxDblSpinBox* myDropSmallEdgesTol3D; - - QtxDblSpinBox* mySplitAngleAngle; - QtxDblSpinBox* mySplitAngleMaxTol; - - QSpinBox* mySplitClosedFacesNum; - - QtxDblSpinBox* mySplitContTol3D; - QComboBox* mySplitContSurfCont; - QComboBox* mySplitContCurvCont; - - QCheckBox* myBSplineSurfModeChk; - QCheckBox* myBSpline3DCurveChk; - QCheckBox* myBSpline2DCurveChk; - QtxDblSpinBox* myBSplineTol3D; - QtxDblSpinBox* myBSplineTol2D; - QSpinBox* myBSplineDegree; - QSpinBox* myBSplineSegments; - QComboBox* myBSpline2DCont; - QComboBox* myBSpline3DCont; - - QCheckBox* myToBezierSurfModeChk; - QCheckBox* myToBezier3DCurveChk; - QCheckBox* myToBezier2DCurveChk; - QtxDblSpinBox* myToBezierMaxTol; - - QtxDblSpinBox* mySameParameterTol3D; - -private slots: - void onOk(); - bool onApply(); - void onCancel(); - - void activate(); - void deactivate(); - - void lineEditReturnPressed(); - void selectionChanged(); - void selectClicked(); - void operationChanged(); - void advOptionToggled(bool); -}; - -#endif // DIALOGBOX_ShapeProcess_H diff --git a/src/RepairGUI/RepairGUI_SuppressFacesDlg.cxx b/src/RepairGUI/RepairGUI_SuppressFacesDlg.cxx deleted file mode 100644 index ee38297a1..000000000 --- a/src/RepairGUI/RepairGUI_SuppressFacesDlg.cxx +++ /dev/null @@ -1,349 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : RepairGUI_SuppressFacesDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "RepairGUI_SuppressFacesDlg.h" - -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" -#include "SUIT_Session.h" -#include "SALOME_ListIteratorOfListIO.hxx" - -#include "GEOMImpl_Types.hxx" - -#include - -#include - -using namespace std; - -//================================================================================= -// class : RepairGUI_SuppressFacesDlg() -// purpose : Constructs a RepairGUI_SuppressFacesDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -RepairGUI_SuppressFacesDlg::RepairGUI_SuppressFacesDlg(QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_SUPRESS_FACE"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_SUPRESSFACE_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_SUPRESSFACE")); - RadioButton1->setPixmap(image0); - RadioButton2->close(TRUE); - RadioButton3->close(TRUE); - - GroupPoints = new DlgRef_1Sel_QTD(this, "GroupPoints"); - GroupPoints->GroupBox1->setTitle(tr("Faces to remove")); - GroupPoints->TextLabel1->setText(tr("Faces")); - GroupPoints->PushButton1->setPixmap(image1); - GroupPoints->LineEdit1->setReadOnly( true ); - - Layout1->addWidget(GroupPoints, 2, 0); - /***************************************************************/ - - Init(); -} - - -//================================================================================= -// function : ~RepairGUI_SuppressFacesDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -RepairGUI_SuppressFacesDlg::~RepairGUI_SuppressFacesDlg() -{ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void RepairGUI_SuppressFacesDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = GroupPoints->LineEdit1; - - myObjects = new GEOM::ListOfGO(); - myObjects->length( 0 ); - - //myGeomGUI->SetState( 0 ); - initSelection(); - - /* signals and slots connections */ - connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel())); - connect(myGeomGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog())); - connect(myGeomGUI, SIGNAL(SignalCloseAllDialogs()), this, SLOT(ClickOnCancel())); - - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - - connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - initName( tr( "SUPRESS_FACE_NEW_OBJ_NAME" ) ); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : Same than click on apply but close this dialog. -//================================================================================= -void RepairGUI_SuppressFacesDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool RepairGUI_SuppressFacesDlg::ClickOnApply() -{ - if ( !onAccept() ) - return false; - - initName(); - - myEditCurrentArgument->setText(""); - myObjects->length( 0 ); - myFaces.clear(); - - initSelection(); - - return true; -} - - -//================================================================================= -// function : ClickOnCancel() -// purpose : -//================================================================================= -void RepairGUI_SuppressFacesDlg::ClickOnCancel() -{ - GEOMBase_Skeleton::ClickOnCancel(); -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection as changed or other case -// : used only by SelectButtonC1A1 (LineEditC1A1) -//================================================================================= -void RepairGUI_SuppressFacesDlg::SelectionIntoArgument() -{ - myEditCurrentArgument->setText(""); - - Standard_Boolean aRes = Standard_False; - int i = 0; - int numFaces = 0; - myObjects->length( IObjectCount() ); - myFaces.clear(); - for ( SALOME_ListIteratorOfListIO anIt( selectedIO() ); anIt.More(); anIt.Next() ) - { - Handle(SALOME_InteractiveObject) anIO = anIt.Value(); - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( anIO, aRes ); - if ( !CORBA::is_nil( aSelectedObject ) && aRes ) - { - TopoDS_Shape aShape; - if ( myGeomBase->GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) ) - { - if ( aShape.ShapeType() <= TopAbs_FACE ) // FACE, SHELL, SOLID, COMPOUND - { - GEOM::short_array anIndexes; - - TColStd_IndexedMapOfInteger aMap; - ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr()->GetIndexes( anIO, aMap ); - - if ( !aMap.IsEmpty() ) - { - Convert( aMap, anIndexes ); - myObjects[i++] = aSelectedObject; // append the object - myFaces.append( anIndexes ); // append faces' indexes - numFaces += anIndexes.length();// just for text field output - } - } - } - } - } - myObjects->length( i ); // this is the right length, smaller of equal to the previously set - if ( numFaces ) - myEditCurrentArgument->setText( QString::number( numFaces ) + "_" + tr( "GEOM_FACE" ) + tr( "_S_" ) ); -} - -//================================================================================= -// function : Convert() -// purpose : -//================================================================================= -void RepairGUI_SuppressFacesDlg::Convert( const TColStd_IndexedMapOfInteger& theMap, GEOM::short_array& theOutSeq ) -{ - const int n = theMap.Extent(); - theOutSeq.length( n ); - for ( int i = 0; i < n; i++ ) - theOutSeq[i] = theMap( i+1 ); -} - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void RepairGUI_SuppressFacesDlg::SetEditCurrentArgument() -{ - if( sender() == GroupPoints->PushButton1 ) - { - GroupPoints->LineEdit1->setFocus(); - myEditCurrentArgument = GroupPoints->LineEdit1; - } - SelectionIntoArgument(); -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void RepairGUI_SuppressFacesDlg::LineEditReturnPressed() -{ - if( sender() == GroupPoints->LineEdit1 ) - { - myEditCurrentArgument = GroupPoints->LineEdit1; - GEOMBase_Skeleton::LineEditReturnPressed(); - } -} - - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : -//================================================================================= -void RepairGUI_SuppressFacesDlg::DeactivateActiveDialog() -{ - //myGeomGUI->SetState( -1 ); - GEOMBase_Skeleton::DeactivateActiveDialog(); -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void RepairGUI_SuppressFacesDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - //myGeomGUI->SetState( 0 ); - initSelection(); -} - - -//================================================================================= -// function : enterEvent() -// purpose : Mouse enter onto the dialog to activate it -//================================================================================= -void RepairGUI_SuppressFacesDlg::enterEvent(QEvent* e) -{ - if ( !GroupConstructors->isEnabled() ) - ActivateThisDialog(); -} - - -//================================================================================= -// function : closeEvent() -// purpose : -//================================================================================= -void RepairGUI_SuppressFacesDlg::closeEvent(QCloseEvent* e) -{ - //myGeomGUI->SetState( -1 ); - GEOMBase_Skeleton::closeEvent( e ); -} - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr RepairGUI_SuppressFacesDlg::createOperation() -{ - return getGeomEngine()->GetIHealingOperations( getStudyId() ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool RepairGUI_SuppressFacesDlg::isValid( QString& msg ) -{ - const int objL = myObjects->length(), facesL = myFaces.size(); - return ( objL && objL == facesL ); -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool RepairGUI_SuppressFacesDlg::execute( ObjectList& objects ) -{ - QStringList anErrorObjNames; - for ( int i = 0; i < myObjects->length(); i++ ) - { - GEOM::GEOM_Object_var obj = myObjects[i]; - GEOM::short_array faces = myFaces[i]; - //MESSAGE(">>>> Dlg, passing faces.. len = " << faces.length()); - GEOM::GEOM_Object_var anObj = GEOM::GEOM_IHealingOperations::_narrow( getOperation() )->SuppressFaces( obj, faces ); - if ( anObj->_is_nil() ) - anErrorObjNames << GEOMBase::GetName( obj ); - else - objects.push_back( anObj._retn() ); - } - - if ( !anErrorObjNames.empty() ) - MESSAGE("ERRORS occured while processing the following objects: " << anErrorObjNames.join( " " )); - - return anErrorObjNames.size() < myObjects->length(); // true if at least one object was OK, false if ALL objects were nil after Healing. -} - -//================================================================================= -// function : initSelection -// purpose : -//================================================================================= -void RepairGUI_SuppressFacesDlg::initSelection() -{ - GEOM::GEOM_Object_var aNullGeomObject; - localSelection( aNullGeomObject, TopAbs_FACE ); // load local selection on ALL objects -} diff --git a/src/RepairGUI/RepairGUI_SuppressFacesDlg.h b/src/RepairGUI/RepairGUI_SuppressFacesDlg.h deleted file mode 100644 index e725f0e64..000000000 --- a/src/RepairGUI/RepairGUI_SuppressFacesDlg.h +++ /dev/null @@ -1,85 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : RepairGUI_SuppressFacesDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_SUPPRESSFACES_H -#define DIALOGBOX_SUPPRESSFACES_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_1Sel_QTD.h" - -#include - -//================================================================================= -// class : RepairGUI_SuppressFacesDlg -// purpose : -//================================================================================= -class RepairGUI_SuppressFacesDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - RepairGUI_SuppressFacesDlg(QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~RepairGUI_SuppressFacesDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& ); - virtual bool execute( ObjectList& objects ); - -private : - void Init(); - void enterEvent(QEvent* e); - void closeEvent(QCloseEvent* e); - - GEOM::ListOfGO_var myObjects; - QValueList myFaces; - // GEOM::short_array-s contain indexes of selected faces, - // index of a GEOM::short_array in myFaces list equals to index of - // GEOM::GEOM_Object in myObjects list to which the faces belong to. - - void Convert( const TColStd_IndexedMapOfInteger&, GEOM::short_array& ); - - void initSelection(); - - DlgRef_1Sel_QTD* GroupPoints; - -private slots: - void ClickOnOk(); - bool ClickOnApply(); - void ClickOnCancel(); - - void ActivateThisDialog(); - void DeactivateActiveDialog(); - - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); -}; - -#endif // DIALOGBOX_SUPPRESSFACES_H diff --git a/src/SKETCHER/Makefile.in b/src/SKETCHER/Makefile.in deleted file mode 100644 index a33057685..000000000 --- a/src/SKETCHER/Makefile.in +++ /dev/null @@ -1,51 +0,0 @@ -# GEOM SKETCHER : basic sketcher -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Author : Patrick GOLDBRONN (CEA) -# Module : GEOM -# $Header$ - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -# Libraries targets -LIB = libGEOMSketcher.la -LIB_SRC = Sketcher_Profile.cxx -LIB_CLIENT_IDL = SALOME_Component.idl SALOMEDS.idl SALOME_Exception.idl SALOME_GenericObj.idl - -# header files -EXPORT_HEADERS= Sketcher_Profile.hxx - -# additionnal information to compil and link file -CPPFLAGS += $(OCC_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome -CXXFLAGS += -I${KERNEL_ROOT_DIR}/include/salome -LDFLAGS += $(CAS_KERNEL) $(CAS_MODELER) -L${KERNEL_ROOT_DIR}/lib/salome - -@CONCLUDE@ - diff --git a/src/SKETCHER/Sketcher_Profile.cxx b/src/SKETCHER/Sketcher_Profile.cxx deleted file mode 100644 index ad436a67d..000000000 --- a/src/SKETCHER/Sketcher_Profile.cxx +++ /dev/null @@ -1,407 +0,0 @@ -// GEOM SKETCHER : basic sketcher -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : Sketcher_Profile.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#include - -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - -#include "utilities.h" - -//======================================================================= -// profile -// command to build a profile -//======================================================================= -Sketcher_Profile::Sketcher_Profile() -{ -} - - -//======================================================================= -// profile -// command to build a profile -//======================================================================= -Sketcher_Profile::Sketcher_Profile(const char* aCmd) -{ - enum {line, circle, point, none} move; - - Standard_Integer i = 1; - Standard_Real x0, y0, x, y, dx, dy; - x0 = y0 = x = y = dy = 0; - dx = 1; - - Standard_Boolean first, stayfirst, face, close; - first = Standard_True; - stayfirst = face = close = Standard_False; - - TopoDS_Shape S; - TopoDS_Vertex MP; - BRepBuilderAPI_MakeWire MW; - gp_Ax3 DummyHP(gp::XOY()); - gp_Pln P(DummyHP); - TopLoc_Location TheLocation; - Handle(Geom_Surface) Surface; - - myOK = Standard_False; - - //TCollection_AsciiString aCommand(CORBA::string_dup(aCmd)); - TCollection_AsciiString aCommand ((char*)aCmd); - TCollection_AsciiString aToken = aCommand.Token(":", 1); - int n = 0; - // porting to WNT - TColStd_Array1OfAsciiString aTab (0, aCommand.Length() - 1); - if ( aCommand.Length() ) - { - while(aToken.Length() != 0) { - if(aCommand.Token(":", n + 1).Length() > 0) - aTab(n) = aCommand.Token(":", n + 1); - aToken = aCommand.Token(":", ++n); - } - n = n - 1; - } - if ( aTab.Length() && aTab(0).Length() ) - while(i < n) { - Standard_Real length = 0, radius = 0, angle = 0; - move = point; - - int n1 = 0; - TColStd_Array1OfAsciiString a (0, aTab(0).Length()); - aToken = aTab(i).Token(" ", 1); - while (aToken.Length() != 0) { - if (aTab(i).Token(" ", n1 + 1).Length() > 0) - a(n1) = aTab(i).Token(" ", n1 + 1); - aToken = aTab(i).Token(" ", ++n1); - } - n1 = n1 - 1; - - switch(a(0).Value(1)) - { - case 'F': - { - if (n1 != 3) goto badargs; - if (!first) { - MESSAGE("profile : The F instruction must precede all moves"); - return; - } - x0 = x = a(1).RealValue(); - y0 = y = a(2).RealValue(); - stayfirst = Standard_True; - break; - } - case 'O': - { - if (n1 != 4) goto badargs; - P.SetLocation(gp_Pnt(a(1).RealValue(), a(2).RealValue(), a(3).RealValue())); - stayfirst = Standard_True; - break; - } - case 'P': - { - if (n1 != 7) goto badargs; - gp_Vec vn(a(1).RealValue(), a(2).RealValue(), a(3).RealValue()); - gp_Vec vx(a(4).RealValue(), a(5).RealValue(), a(6).RealValue()); - if (vn.Magnitude() <= Precision::Confusion() || vx.Magnitude() <= Precision::Confusion()) { - MESSAGE("profile : null direction"); - return; - } - gp_Ax2 ax(P.Location(), vn, vx); - P.SetPosition(ax); - stayfirst = Standard_True; - break; - } - case 'X': - { - if (n1 != 2) goto badargs; - length = a(1).RealValue(); - if (a(0) == "XX") - length -= x; - dx = 1; dy = 0; - move = line; - break; - } - case 'Y': - { - if (n1 != 2) goto badargs; - length = a(1).RealValue(); - if (a(0) == "YY") - length -= y; - dx = 0; dy = 1; - move = line; - break; - } - case 'L': - { - if (n1 != 2) goto badargs; - length = a(1).RealValue(); - if (Abs(length) > Precision::Confusion()) - move = line; - else - move = none; - break; - } - case 'T': - { - if (n1 != 3) goto badargs; - Standard_Real vx = a(1).RealValue(); - Standard_Real vy = a(2).RealValue(); - if (a(0) == "TT") { - vx -= x; - vy -= y; - } - length = Sqrt(vx * vx + vy * vy); - if (length > Precision::Confusion()) { - move = line; - dx = vx / length; - dy = vy / length; - } - else - move = none; - break; - } - case 'R': - { - if (n1 != 2) goto badargs; - angle = a(1).RealValue() * PI180; - if (a(0) == "RR") { - dx = Cos(angle); - dy = Sin(angle); - } - else { - Standard_Real c = Cos(angle); - Standard_Real s = Sin(angle); - Standard_Real t = c * dx - s * dy; - dy = s * dx + c * dy; - dx = t; - } - break; - } - case 'D': - { - if (n1 != 3) goto badargs; - Standard_Real vx = a(1).RealValue(); - Standard_Real vy = a(2).RealValue(); - length = Sqrt(vx * vx + vy * vy); - if (length > Precision::Confusion()) { - dx = vx / length; - dy = vy / length; - } - else - move = none; - break; - } - case 'C': - { - if (n1 != 3) goto badargs; - radius = a(1).RealValue(); - if (Abs(radius) > Precision::Confusion()) { - angle = a(2).RealValue() * PI180; - move = circle; - } - else - move = none; - break; - } - case 'I': - { - if (n1 != 2) goto badargs; - length = a(1).RealValue(); - if (a(0) == "IX") { - if (Abs(dx) < Precision::Confusion()) { - MESSAGE("profile : cannot intersect, arg "< Precision::Confusion()) - move = line; - else - move = none; - break; - } - case 'W': - { - if (a(0) == "WW") - close = Standard_True; - else if(a(0) == "WF") { - close = Standard_True; - face = Standard_True; - } - i = n - 1; - break; - } - default: - { - MESSAGE("profile : unknown code " << a(i)); - return; - } - } - -again : - switch (move) - { - case line : - { - if (length < 0) { - length = -length; - dx = -dx; - dy = -dy; - } - Handle(Geom2d_Line) l = new Geom2d_Line(gp_Pnt2d(x,y),gp_Dir2d(dx,dy)); - BRepBuilderAPI_MakeEdge ME (GeomAPI::To3d(l,P),0,length); - if (!ME.IsDone()) - return; - MW.Add(ME); - x += length*dx; - y += length*dy; - break; - } - case circle : - { - Standard_Boolean sense = Standard_True; - if (radius < 0) { - radius = -radius; - sense = !sense; - dx = -dx; - dy = -dy; - } - gp_Ax2d ax(gp_Pnt2d(x-radius*dy,y+radius*dx),gp_Dir2d(dy,-dx)); - if (angle < 0) { - angle = -angle; - sense = !sense; - } - Handle(Geom2d_Circle) c = new Geom2d_Circle(ax,radius,sense); - BRepBuilderAPI_MakeEdge ME (GeomAPI::To3d(c,P),0,angle); - if (!ME.IsDone()) - return; - MW.Add(ME); - gp_Pnt2d p; - gp_Vec2d v; - c->D1(angle,p,v); - x = p.X(); - y = p.Y(); - dx = v.X() / radius; - dy = v.Y() / radius; - break; - } - case point: - { - MP = BRepBuilderAPI_MakeVertex(gp_Pnt(x, y, 0.0)); - break; - } - case none: - { - i = n - 1; - break; - } - } - - // update first - first = stayfirst; - stayfirst = Standard_False; - - if(!(dx == 0 && dy == 0)) - myLastDir.SetCoord(dx, dy, 0.0); - else - return; - myLastPoint.SetX(x); - myLastPoint.SetY(y); - - // next segment.... - i++; - if ((i == n) && close) { - // the closing segment - dx = x0 - x; - dy = y0 - y; - length = Sqrt(dx * dx + dy * dy); - move = line; - if (length > Precision::Confusion()) { - dx = dx / length; - dy = dy / length; - goto again; - } - } - } - - // get the result, face or wire - if (move == none) { - return; - } else if (move == point) { - S = MP; - } else if (face) { - if (!MW.IsDone()) { - return; - } - BRepBuilderAPI_MakeFace MF (P, MW.Wire()); - if (!MF.IsDone()) { - return; - } - S = MF; - } else { - if (!MW.IsDone()) { - return; - } - S = MW; - } - - if(!TheLocation.IsIdentity()) - S.Move(TheLocation); - - myShape = S; - myOK = true; - return; - - badargs : - MESSAGE("profile : bad number of arguments"); - return; -} diff --git a/src/SKETCHER/Sketcher_Profile.hxx b/src/SKETCHER/Sketcher_Profile.hxx deleted file mode 100644 index 79762a9d1..000000000 --- a/src/SKETCHER/Sketcher_Profile.hxx +++ /dev/null @@ -1,54 +0,0 @@ -// GEOM SKETCHER : basic sketcher -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : Sketcher_Profile.h -// Author : Damien COQUERET -// Module : GEOM -// $Header: - -#include -#include -#include - -class Sketcher_Profile -{ - -public: - Standard_EXPORT Sketcher_Profile(); - Standard_EXPORT Sketcher_Profile(const char* aCmd); - -private: - gp_Pnt myLastPoint; - gp_Dir myLastDir; - - TopoDS_Shape myShape; - bool myOK; - -public: - Standard_EXPORT gp_Pnt GetLastPoint(){return myLastPoint;}; - Standard_EXPORT gp_Dir GetLastDir(){return myLastDir;}; - - Standard_EXPORT const TopoDS_Shape& GetShape(){return myShape;}; - Standard_EXPORT bool IsDone(){return myOK;}; - -}; diff --git a/src/STEPExport/Makefile.in b/src/STEPExport/Makefile.in deleted file mode 100644 index bd977ab07..000000000 --- a/src/STEPExport/Makefile.in +++ /dev/null @@ -1,45 +0,0 @@ -# Copyright (C) 2003 CEA -# -# 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. -# -# 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.org -# -# -# -# File : Makefile.in -# Author : Pavel TELKOV -# Module : GEOM -# $Header$ - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - -@COMMENCE@ - -# Libraries targets - -LIB= libSTEPExport.la - -LIB_SRC = STEPExport.cxx - -# additionnal information to compil and link file -CPPFLAGS+= $(OCC_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome -CXXFLAGS+= $(OCC_CXXFLAGS) -I${KERNEL_ROOT_DIR}/include/salome - -LDFLAGS+= $(CAS_LDPATH) -lTKSTEP -L${KERNEL_ROOT_DIR}/lib/salome - -@CONCLUDE@ diff --git a/src/STEPExport/STEPExport.cxx b/src/STEPExport/STEPExport.cxx deleted file mode 100644 index 7614e4bda..000000000 --- a/src/STEPExport/STEPExport.cxx +++ /dev/null @@ -1,53 +0,0 @@ -// File: STEPExport.cxx -// Created: Wed May 19 14:53:52 2004 -// Author: Pavel TELKOV -// - -#include "utilities.h" - -#include - -#include - -#include -#include - -#ifdef WNT -#include -#else -#define SALOME_WNT_EXPORT -#endif - -//============================================================================= -/*! - * - */ -//============================================================================= - -extern "C" -{ -SALOME_WNT_EXPORT - int Export(const TopoDS_Shape& theShape, const TCollection_AsciiString& theFileName) - { - MESSAGE("Export STEP into file " << theFileName.ToCString()); - - try - { - IFSelect_ReturnStatus status ; - //VRV: OCC 4.0 migration - STEPControl_Writer aWriter; -//JFA: PAL6162 status = aWriter.Transfer( theShape, STEPControl_ManifoldSolidBrep ); - status = aWriter.Transfer( theShape, STEPControl_AsIs ); - //VRV: OCC 4.0 migration - if ( status == IFSelect_RetDone ) - status = aWriter.Write( theFileName.ToCString() ) ; - if ( status == IFSelect_RetDone ) - return 1; - } - catch(Standard_Failure) - { - //THROW_SALOME_CORBA_EXCEPTION("Exception catched in STEPExport", SALOME::BAD_PARAM); - } - return 0; - } -} diff --git a/src/STEPImport/Makefile.in b/src/STEPImport/Makefile.in deleted file mode 100644 index 4881cc07b..000000000 --- a/src/STEPImport/Makefile.in +++ /dev/null @@ -1,45 +0,0 @@ -# Copyright (C) 2003 CEA -# -# 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. -# -# 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.org -# -# -# -# File : Makefile.in -# Author : Pavel TELKOV -# Module : GEOM -# $Header$ - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - -@COMMENCE@ - -# Libraries targets - -LIB= libSTEPImport.la - -LIB_SRC = STEPImport.cxx - -# additionnal information to compil and link file -CPPFLAGS+= $(OCC_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome -CXXFLAGS+= $(OCC_CXXFLAGS) -I${KERNEL_ROOT_DIR}/include/salome - -LDFLAGS+= $(CAS_LDPATH) -lTKSTEP -L${KERNEL_ROOT_DIR}/lib/salome - -@CONCLUDE@ diff --git a/src/STEPImport/STEPImport.cxx b/src/STEPImport/STEPImport.cxx deleted file mode 100644 index 653524126..000000000 --- a/src/STEPImport/STEPImport.cxx +++ /dev/null @@ -1,114 +0,0 @@ -// File: STEPImport.cxx -// Created: Wed May 19 14:41:10 2004 -// Author: Pavel TELKOV -// - -#include "utilities.h" - -#include - -#include - -#include - -#include -#include -#include - -#include // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC - -#ifdef WNT -#include -#else -#define SALOME_WNT_EXPORT -#endif - -//============================================================================= -/*! - * Import() - */ -//============================================================================= - -extern "C" -{ -SALOME_WNT_EXPORT - TopoDS_Shape Import (const TCollection_AsciiString& theFileName, - TCollection_AsciiString& theError) - { - MESSAGE("Import STEP model from file " << theFileName.ToCString()); - TopoDS_Shape aResShape; - //VRV: OCC 4.0 migration - STEPControl_Reader aReader; - //VRV: OCC 4.0 migration - TopoDS_Compound compound; - BRep_Builder B; - B.MakeCompound( compound ); - try { - IFSelect_ReturnStatus status = aReader.ReadFile(theFileName.ToCString()); - - if (status == IFSelect_RetDone) { - Standard_Boolean failsonly = Standard_False ; - aReader.PrintCheckLoad (failsonly, IFSelect_ItemsByEntity); - /* Root transfers */ - Standard_Integer nbr = aReader.NbRootsForTransfer(); - aReader.PrintCheckTransfer (failsonly, IFSelect_ItemsByEntity); - - for ( Standard_Integer n=1; n <= nbr; n++) { - Standard_Boolean ok = aReader.TransferRoot(n); - /* Collecting resulting entities */ - Standard_Integer nbs = aReader.NbShapes(); - if (!ok || nbs == 0) - { - // THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::ImportStep", SALOME::BAD_PARAM); - continue; // skip empty root - } - /* For a single entity */ - else if (nbr == 1 && nbs == 1) { - aResShape = aReader.Shape(1); - break; - } - - for ( Standard_Integer i=1; i<=nbs; i++ ) { - TopoDS_Shape aShape = aReader.Shape(i); - if ( aShape.IsNull() ) { - // THROW_SALOME_CORBA_EXCEPTION("Null shape in GEOM_Gen_i::ImportStep", SALOME::BAD_PARAM) ; - //return aResShape; - continue; - } - else { - B.Add( compound, aShape ) ; - } - } - } - if ( aResShape.IsNull() ) - aResShape = compound; - - } else { -// switch (status) { -// case IFSelect_RetVoid: -// theError = "Nothing created or No data to process"; -// break; -// case IFSelect_RetError: -// theError = "Error in command or input data"; -// break; -// case IFSelect_RetFail: -// theError = "Execution was run, but has failed"; -// break; -// case IFSelect_RetStop: -// theError = "Execution has been stopped. Quite possible, an exception was raised"; -// break; -// default: -// break; -// } - theError = "Wrong format of the imported file. Can't import file."; - aResShape.Nullify(); - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - theError = aFail->GetMessageString(); - aResShape.Nullify(); - } - return aResShape; - } -} diff --git a/src/ShHealOper/Makefile.in b/src/ShHealOper/Makefile.in deleted file mode 100644 index efaf07c3c..000000000 --- a/src/ShHealOper/Makefile.in +++ /dev/null @@ -1,80 +0,0 @@ -# GEOM ShHealOper : Shape Healing -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.org -# -# -# -# File : Makefile.in -# Author : Alexander SLADKOV -# Module : GEOM -# $Header: - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@ - - -@COMMENCE@ - -# Libraries targets -LIB = libShHealOper.la - -LIB_SRC = \ - ShHealOper_CloseContour.cxx \ - ShHealOper_EdgeDivide.cxx \ - ShHealOper_FillHoles.cxx \ - ShHealOper_RemoveFace.cxx \ - ShHealOper_RemoveInternalWires.cxx \ - ShHealOper_Sewing.cxx \ - ShHealOper_ShapeProcess.cxx \ - ShHealOper_SplitCurve2d.cxx \ - ShHealOper_SplitCurve3d.cxx \ - ShHealOper_Tool.cxx \ - -LIB_CLIENT_IDL = -LIB_SERVER_IDL = - -# header files -EXPORT_HEADERS = \ - ShHealOper_CloseContour.hxx \ - ShHealOper_EdgeDivide.hxx \ - ShHealOper_FillHoles.hxx \ - ShHealOper_RemoveFace.hxx \ - ShHealOper_RemoveInternalWires.hxx \ - ShHealOper_Sewing.hxx \ - ShHealOper_ShapeProcess.hxx \ - ShHealOper_SpiltCurve2d.hxx \ - ShHealOper_SplitCurve2d.hxx \ - ShHealOper_SplitCurve3d.hxx \ - ShHealOper_Tool.hxx - -# idl files -EXPORT_IDLS= - -CPPFLAGS += $(OCC_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome -CXXFLAGS += $(OCC_CXXFLAGS) -I${KERNEL_ROOT_DIR}/include/salome - -LDFLAGS += $(CAS_LDPATH) -lTKernel -lTKGeomAlgo -lTKG3d -lTKG2d -lTKGeomBase -lTKShHealing -lTKMath -lTKBRep -lTKTopAlgo -lTKBool - -%_moc.cxx: %.h - $(MOC) $< -o $@ - -@CONCLUDE@ diff --git a/src/ShHealOper/ShHealOper_CloseContour.cxx b/src/ShHealOper/ShHealOper_CloseContour.cxx deleted file mode 100644 index e5f008393..000000000 --- a/src/ShHealOper/ShHealOper_CloseContour.cxx +++ /dev/null @@ -1,407 +0,0 @@ -// File: ShHealOper_CloseContour.cxx -// Created: 20.04.04 11:36:01 -// Author: Galina KULIKOVA -// Copyright: Airbus Industries 2004 - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -//======================================================================= -//function : ShHealOper_CloseContour() -//purpose : Constructor -//======================================================================= - -ShHealOper_CloseContour::ShHealOper_CloseContour (const TopoDS_Shape& theShape ) -{ - Init(theShape); -} -//======================================================================= -//function : Init -//purpose : -//======================================================================= - -void ShHealOper_CloseContour::Init(const TopoDS_Shape& theShape) -{ - ShHealOper_Tool::Init(theShape); - myTolerance = Precision::Confusion(); - myMaxTolerance = 1.0; - TopExp::MapShapesAndAncestors(theShape,TopAbs_EDGE,TopAbs_FACE,myMapEdgesFace); -} -//======================================================================= -//function : Perform -//purpose : -//======================================================================= - -Standard_Boolean ShHealOper_CloseContour::Perform(const TopTools_SequenceOfShape& theSeqEdges, - const Standard_Boolean theModeVertex, - const Standard_Boolean theModeFixGapsCurves) -{ - myFreeEdges.Clear(); - myDone = Standard_False; - myErrorStatus =ShHealOper_NotError; - if(myInitShape.IsNull()) { - myErrorStatus = ShHealOper_InvalidParameters; - return myDone; - } - Handle(ShapeExtend_WireData) asewd = new ShapeExtend_WireData; - Standard_Integer i =1; - for ( ; i <= theSeqEdges.Length(); i++) - asewd->Add(theSeqEdges.Value(i)); - - myModeVertex = theModeVertex; - myModeFixGapsCurves = theModeFixGapsCurves; - - build(asewd); - - return myDone; -} -//======================================================================= -//function : Perform -//purpose : -//======================================================================= - -Standard_Boolean ShHealOper_CloseContour::Perform(const TopoDS_Wire& theWire, - const Standard_Boolean theModeVertex, - const Standard_Boolean theModeFixGapsCurves) -{ - myFreeEdges.Clear(); - myDone = Standard_False; - if(myInitShape.IsNull()) { - myErrorStatus = ShHealOper_InvalidParameters; - return myDone; - } - Handle(ShapeExtend_WireData) asewd = new ShapeExtend_WireData(theWire); - myModeVertex = theModeVertex; - myModeFixGapsCurves = theModeFixGapsCurves; - build(asewd); - return myDone; -} -//======================================================================= -//function : Build -//purpose : -//======================================================================= - -void ShHealOper_CloseContour::build(Handle(ShapeExtend_WireData)& theSewd) -{ - TopTools_SequenceOfShape aCommonFaces; - //checks that all specified edges belong the one face or not. - Standard_Boolean isOneFace = checkOneFace(theSewd,aCommonFaces); - - //add edge or increase max tolerance in dependance on specified VertexMode. - //if all edges belong the one face that gap will be closed in the 2D by line - //else gap will be closed in the 3D by line. - myDone = fixGaps(theSewd,aCommonFaces); - updateWire(theSewd); - Handle(ShapeFix_Wire) sfw = new ShapeFix_Wire; - sfw->SetContext(myContext); - sfw->Load(theSewd); - - sfw->ClosedWireMode() = Standard_True; - sfw->SetPrecision(myTolerance); - sfw->SetMaxTolerance(myMaxTolerance); - - if(isOneFace) { - Standard_Integer ii =1; - for( ; ii <= aCommonFaces.Length(); ii++) { - TopoDS_Face aFace = TopoDS::Face(aCommonFaces.Value(ii)); - sfw->SetFace(aFace); - myDone = (sfw->Perform() || myDone); - //if Mode for fix gaps is equal to true that - //curve 3D and curve 2D will be pull to each other. - if(myModeFixGapsCurves) { - Standard_Boolean isFixgaps = Standard_False; - if(ii ==1) { - sfw->FixGaps3d(); - isFixgaps = sfw->StatusGaps3d(ShapeExtend_DONE); - if(!isFixgaps && sfw->StatusGaps3d(ShapeExtend_FAIL)) - myErrorStatus = ShHealOper_ErrorExecution; - } - if(sfw->FixGaps2d()) - sfw->FixSelfIntersection(); - else if(sfw->StatusGaps2d(ShapeExtend_FAIL)) - myErrorStatus = ShHealOper_ErrorExecution; - - isFixgaps = (isFixgaps || sfw->StatusGaps2d(ShapeExtend_DONE)); - myDone = (myDone || isFixgaps); - if(isFixgaps) { - Handle(ShapeExtend_WireData) sbwd = sfw->WireData(); - Handle(ShapeFix_Edge) sfe = new ShapeFix_Edge; - for (Standard_Integer iedge = 1; iedge <= sbwd->NbEdges(); iedge++) { - TopoDS_Edge aEdge = TopoDS::Edge(sbwd->Edge(iedge)); - sfe->FixVertexTolerance(aEdge,aFace); - sfe->FixSameParameter(aEdge); - } - } - } - } - } - else { - myDone = (sfw->Perform() || myDone); - if(myModeFixGapsCurves) { - //if Mode for fix gaps is equal to true that - //curve 3D will be pull to each other. - if(sfw->FixGaps3d()) { - Handle(ShapeExtend_WireData) sbwd = sfw->WireData(); - Handle(ShapeFix_Edge) sfe = new ShapeFix_Edge; - for (Standard_Integer iedge = 1; iedge <= sbwd->NbEdges(); iedge++) { - TopoDS_Edge aEdge = TopoDS::Edge(sbwd->Edge(iedge)); - sfe->FixVertexTolerance(aEdge); - sfe->FixSameParameter(aEdge); - } - } - else if(sfw->StatusGaps3d(ShapeExtend_FAIL)) - myErrorStatus = ShHealOper_ErrorExecution; - myDone = (sfw->StatusGaps3d(ShapeExtend_DONE) || myDone); - } - } - - if(myDone) { - TopoDS_Shape aoldShape = myInitShape; - //if free edges were added they will be added to the result shape - //and type of result shape should be change if initial shape is not COMPOUND. - if( myFreeEdges.Length()) { - BRep_Builder aB; - TopoDS_Compound aComp; - aB.MakeCompound(aComp); - if(aoldShape.ShapeType() == TopAbs_COMPOUND) { - TopoDS_Iterator aIt(aoldShape); - for( ;aIt.More();aIt.Next() ) - aB.Add(aComp,aIt.Value()); - } - else - aB.Add(aComp,aoldShape); - - Standard_Integer i=1; - for ( ; i <= myFreeEdges.Length(); i++ ) - aB.Add(aComp,myFreeEdges.Value(i)); - aoldShape = aComp; - - } - myResultShape = myContext->Apply(aoldShape); - } - return; -} -//======================================================================= -//function : checkGaps -//purpose : -//======================================================================= - -Standard_Boolean ShHealOper_CloseContour::fixGaps(const Handle(ShapeExtend_WireData)& theWire, - const TopTools_SequenceOfShape& theCommonFaces) -{ - Handle(ShapeAnalysis_Wire) asaw = new ShapeAnalysis_Wire; - asaw->Load(theWire); - - Standard_Integer i =1; - Standard_Boolean hasGaps = Standard_False; - for ( ; i <= asaw->NbEdges(); i++) { - if(asaw->CheckGap3d(i)) { - Standard_Real dist = asaw->MinDistance3d(); - if(dist > myMaxTolerance) { - hasGaps = Standard_True; - Standard_Integer ind2 = (i ==0 ? theWire->NbEdges() :i); - Standard_Integer ind1 = (ind2 >1 ? ind2 -1 : theWire->NbEdges()); - TopoDS_Edge aE1= theWire->Edge(ind1); - TopoDS_Edge aE2= theWire->Edge(ind2); - if(!myModeVertex) - buildEdge(aE1,aE2,theCommonFaces); - else - myMaxTolerance = RealLast(); - if(ind2 == ind1) break; - } - } - - } - return hasGaps; -} - -//======================================================================= -//function : checkOneFace -//purpose : -//======================================================================= - -Standard_Boolean ShHealOper_CloseContour::checkOneFace(const Handle(ShapeExtend_WireData)& theSewd, - TopTools_SequenceOfShape& theCommonFaces) const -{ - - TopTools_IndexedMapOfShape amapfaces; - TopoDS_Edge aEdge1 = theSewd->Edge(1); - Standard_Boolean isOneFace = myMapEdgesFace.Contains(aEdge1 ); - if(!isOneFace) - return isOneFace; - - //check that all specified edges belong to one face. - const TopTools_ListOfShape& alfaces = myMapEdgesFace.FindFromKey(aEdge1); - isOneFace = isOneFace && (!alfaces.IsEmpty()); - if(!isOneFace) - return Standard_False; - - TopTools_ListIteratorOfListOfShape litr(alfaces); - for( ; litr.More();litr.Next() ) - amapfaces.Add(litr.Value()); - - TColStd_MapOfInteger amapIndex; - Standard_Integer ind =0; - Standard_Integer i =2; - for( ; i <= theSewd->NbEdges() && isOneFace; i++) { - isOneFace = myMapEdgesFace.Contains(theSewd->Edge(i)); - if(isOneFace) { - const TopTools_ListOfShape& alfaces1 = myMapEdgesFace.FindFromKey(theSewd->Edge(i)); - - TColStd_MapOfInteger aTmpInd; - for(litr.Initialize(alfaces1) ; litr.More() ;litr.Next() ) { - if(amapfaces.Contains(litr.Value())) { - ind = amapfaces.FindIndex(litr.Value()); - if( i == 2) - amapIndex.Add(ind); - else - aTmpInd.Add(ind); - } - } - if(i ==2) { - isOneFace = (amapIndex.Extent()); - continue; - } - else { - TColStd_MapIteratorOfMapOfInteger aMi(amapIndex); - for( ; aMi.More();aMi.Next()) { - if(!aTmpInd.Contains(aMi.Key())) - amapIndex.Remove(aMi.Key()); - } - isOneFace = (amapIndex.Extent()); - - } - } - } - if(theSewd->NbEdges() >1) { - Standard_Integer j =1; - for( ; j <= amapfaces.Extent(); j++) { - if(!amapIndex.Contains(j)) continue; - TopoDS_Shape aF = amapfaces.FindKey(j); - theCommonFaces.Append(aF); - } - } - return isOneFace; -} -//======================================================================= -//function : buildEdge -//purpose : -//======================================================================= - -void ShHealOper_CloseContour::buildEdge(const TopoDS_Edge& aE1, - const TopoDS_Edge& aE2, - const TopTools_SequenceOfShape& theCommonFaces) -{ - ShapeAnalysis_Edge asae; - TopoDS_Vertex aV1 = asae.LastVertex(aE1); - TopoDS_Vertex aV2 = asae.FirstVertex(aE2); - gp_Pnt p1 = BRep_Tool::Pnt(aV1); - gp_Pnt p2 = BRep_Tool::Pnt(aV2); - BRepBuilderAPI_MakeVertex mkver1( p1 ); - TopoDS_Vertex newV1 = mkver1.Vertex(); - - BRepBuilderAPI_MakeVertex mkver2( p2 ); - TopoDS_Vertex newV2 = mkver2.Vertex(); - BRep_Builder B; - B.UpdateVertex ( newV1,Precision::Confusion()); - B.UpdateVertex ( newV2, Precision::Confusion()); - Standard_Boolean isBuild = Standard_False; - TopoDS_Edge edge; - B.MakeEdge ( edge ); - ShapeBuild_Edge sbe; - //if all edges belong to one face that gap will be closed in the 2D by line - //than 3D curve will be built by 2D curve - if(theCommonFaces.Length()) { - - TopoDS_Face aF1 = TopoDS::Face(theCommonFaces.Value(1)); - Handle(Geom2d_Curve) c2d1,c2d2; - gp_Pnt2d p2d1,p2d2; - Standard_Real a1, b1,a2, b2; - if ( asae.PCurve ( aE1, aF1, c2d1, a1, b1, Standard_True ) && - asae.PCurve ( aE2, aF1, c2d2, a2, b2, Standard_True )) { - - c2d1->D0 ( b1, p2d1); - c2d2->D0 ( a2, p2d2); - gp_Vec2d v12 ( p2d1, p2d2 ); - - Handle(Geom2d_Line) aLine2d = new Geom2d_Line ( p2d1, gp_Dir2d ( v12 ) ); - B.UpdateEdge ( edge, aLine2d, aF1, ::Precision::Confusion() ); - B.Range ( edge, aF1, 0.0, v12.Magnitude() ); - - isBuild = sbe.BuildCurve3d ( edge ); - } - } - //else gap will be closed in the 3D by line. - if(!isBuild) { - gp_Vec v1 ( p1, p2 ); - Handle(Geom_Line) aLine = new Geom_Line ( p1, gp_Dir ( v1 ) ); - B.UpdateEdge ( edge, aLine, ::Precision::Confusion() ); - B.Range ( edge,0.0, v1.Magnitude()); - } - B.Add ( edge, newV1.Oriented ( TopAbs_FORWARD ) ); - B.Add ( edge, newV2.Oriented ( TopAbs_REVERSED ) ); - myContext->Replace(aV1, newV1.Oriented (aV1.Orientation())); - myContext->Replace(aV2, newV2.Oriented (aV2.Orientation())); - if(isBuild) { - newV1.Orientation(aV1.Orientation()); - TopoDS_Edge newEdge = sbe.CopyReplaceVertices ( aE1,TopoDS_Vertex(), newV1); - TopoDS_Wire aw; - B.MakeWire(aw); - B.Add(aw,newEdge); - B.Add(aw,edge); - TopoDS_Shape anE1 = myContext->Apply(aE1); - myContext->Replace(anE1,aw); - } - else { - myFreeEdges.Append(edge); - } -} -//======================================================================= -//function : UpdateWire -//purpose : -//======================================================================= - -void ShHealOper_CloseContour::updateWire (Handle(ShapeExtend_WireData)& sbwd) -{ - Standard_Integer i=1; - for ( ; i <= sbwd->NbEdges(); i++ ) { - TopoDS_Edge E = sbwd->Edge(i); - TopoDS_Shape S = myContext->Apply ( E ); - if ( S == E ) continue; - for ( TopExp_Explorer exp(S,TopAbs_EDGE); exp.More(); exp.Next() ) - sbwd->Add ( exp.Current(), i++ ); - sbwd->Remove ( i-- ); - } - for ( i =1; i <= myFreeEdges.Length(); i++ ) { - sbwd->Add(TopoDS::Edge(myFreeEdges.Value(i))); - } -} diff --git a/src/ShHealOper/ShHealOper_CloseContour.hxx b/src/ShHealOper/ShHealOper_CloseContour.hxx deleted file mode 100644 index aab0fa3dd..000000000 --- a/src/ShHealOper/ShHealOper_CloseContour.hxx +++ /dev/null @@ -1,140 +0,0 @@ -// File: ShHealOper_CloseContour.hxx -// Created: 20.04.04 10:25:46 -// Author: Galina KULIKOVA -// < MODULE = KERNEL> : -// Copyright (C) 2003 CEA -// -// 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. -// - -// 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 -// - - -#ifndef ShHealOper_CloseContour_HeaderFile -#define ShHealOper_CloseContour_HeaderFile - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -/// Class ShHealOper_CloseContour -// - -class ShHealOper_CloseContour : public ShHealOper_Tool -{ - public: - // ---------- PUBLIC METHODS ---------- - Standard_EXPORT ShHealOper_CloseContour() : ShHealOper_Tool() {} - - Standard_EXPORT ShHealOper_CloseContour (const TopoDS_Shape& theShape); - //Initalizes by whole shape. - - Standard_EXPORT virtual void Init(const TopoDS_Shape& theShape); - //Method for initalization by whole shape. - - Standard_EXPORT Standard_Boolean Perform(const TopTools_SequenceOfShape& theSeqEdges, - const Standard_Boolean theModeVertex = Standard_False, - const Standard_Boolean theModeFixGapsCurves = Standard_True); - - //Build wire from specified edges and close gap between edges by segment of line - // or by vertex in according to specified mode. - - Standard_EXPORT Standard_Boolean Perform(const TopoDS_Wire& theWire, - const Standard_Boolean theModeVertex= Standard_False, - const Standard_Boolean theModeFixGapsCurves = Standard_True); - - //Close gap into specified wire by segment of line or by vertex in according - //to specified mode. - - inline void SetTolerance(const Standard_Real theTolerance) - { - myTolerance = theTolerance; - } - //Sets tolerance for checking closure of the contour. - - inline Standard_Real GetTolerance() - { - return myTolerance; - } - //Returns value of the tolerance. - - inline void SetMaxTolerance(const Standard_Real theMaxTolerance) - { - myMaxTolerance = theMaxTolerance; - } - //Sets tolerance for checking closure of the contour. - - inline Standard_Real GetMaxTolerance() - { - return myMaxTolerance; - } - //Returns value of the tolerance. - - inline void SetModeVertex(const Standard_Boolean theModeVertex) - { - myModeVertex = theModeVertex; - } - //Sets mode for closure of the contour. - - inline Standard_Boolean GetModeVertex() - { - return myModeVertex; - } - //Get mode for closure of the contour. - - - private: - // ---------- PRIVATE METHODS ---------- - - void build(Handle(ShapeExtend_WireData)& theSewd); - - Standard_Boolean fixGaps(const Handle(ShapeExtend_WireData)& theWire, - const TopTools_SequenceOfShape& theCommonFaces); - - Standard_Boolean checkOneFace(const Handle(ShapeExtend_WireData)& theSewd, - TopTools_SequenceOfShape& theCommonFaces) const; - - void buildEdge(const TopoDS_Edge& aE1, - const TopoDS_Edge& aE2, - const TopTools_SequenceOfShape& theCommonFaces); - - void updateWire (Handle(ShapeExtend_WireData)& sbwd); - private: - // ---------- PRIVATE FIELDS ---------- - - - Standard_Boolean myModeVertex; - Standard_Boolean myModeFixGapsCurves; - - Standard_Real myMaxTolerance; - Standard_Real myTolerance; - TopTools_IndexedDataMapOfShapeListOfShape myMapEdgesFace; - TopTools_SequenceOfShape myFreeEdges; - public: -// Declaration of CASCADE RTTI -//DEFINE_STANDARD_RTTI (ShHealOper_CloseContour) -}; - -// Definition of HANDLE object using Standard_DefineHandle.hxx -//DEFINE_STANDARD_HANDLE (ShHealOper_CloseContour, ) - - -#endif diff --git a/src/ShHealOper/ShHealOper_EdgeDivide.cxx b/src/ShHealOper/ShHealOper_EdgeDivide.cxx deleted file mode 100644 index 183b68d32..000000000 --- a/src/ShHealOper/ShHealOper_EdgeDivide.cxx +++ /dev/null @@ -1,256 +0,0 @@ -// File: ShHealOper_EdgeDivide.cxx -// Created: 30.04.04 16:44:47 -// Author: Galina KULIKOVA -// < MODULE = KERNEL> : -// Copyright (C) 2003 CEA -// -// 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. -// - -// 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 -// - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -//#include <.hxx> -//#include <.hxx> -//======================================================================= -//function : ShHealOper_EdgeDivide() -//purpose : Constructor -//======================================================================= - -ShHealOper_EdgeDivide::ShHealOper_EdgeDivide (const TopoDS_Shape& theShape) -{ - Init(theShape); -} -//======================================================================= -//function : Init -//purpose : -//======================================================================= - -void ShHealOper_EdgeDivide::Init(const TopoDS_Shape& theShape) -{ - ShHealOper_Tool::Init(theShape); - myDivideParamMode = Standard_True; - myMapEdgesFace.Clear(); - TopExp::MapShapesAndAncestors(theShape,TopAbs_EDGE,TopAbs_FACE,myMapEdgesFace); - -} - -//======================================================================= -//function : Perform -//purpose : -//======================================================================= -Standard_Boolean ShHealOper_EdgeDivide::Perform(const TopoDS_Shape& theEdge, - const TColStd_SequenceOfReal& theValues, - const Standard_Boolean theDivideParamMode) -{ - myDone = Standard_False; - myDivideParamMode = theDivideParamMode; - if(theEdge.ShapeType() != TopAbs_EDGE) { - myErrorStatus = ShHealOper_InvalidParameters; - return myDone; - } - myEdge = TopoDS::Edge(theEdge); - Standard_Integer i =1; - Handle(TColStd_HSequenceOfReal) aSeqValues = new TColStd_HSequenceOfReal; - for( ; i <= theValues.Length(); i++) - aSeqValues->Append(theValues.Value(i)); - myDone = build(aSeqValues); - return myDone; - -} -//======================================================================= -//function : Perform -//purpose : -//======================================================================= - -Standard_Boolean ShHealOper_EdgeDivide::Perform(const TopoDS_Shape& theEdge, - const Standard_Real theValue, - const Standard_Boolean theDivideParamMode) -{ - myDone = Standard_False; - myErrorStatus = ShHealOper_NotError; - if(theEdge.ShapeType() != TopAbs_EDGE) { - myErrorStatus = ShHealOper_InvalidParameters; - return myDone; - } - myDivideParamMode = theDivideParamMode; - myEdge = TopoDS::Edge(theEdge); - Handle(TColStd_HSequenceOfReal) aSeqValues = new TColStd_HSequenceOfReal; - aSeqValues->Append(theValue); - myDone = build(aSeqValues); - return myDone; -} -//======================================================================= -//function : build -//purpose : -//======================================================================= - -Standard_Boolean ShHealOper_EdgeDivide::build(const Handle(TColStd_HSequenceOfReal)& theValues) -{ - if(myEdge.IsNull() || !theValues->Length()) { - myErrorStatus = ShHealOper_InvalidParameters; - return Standard_False; - } - - Standard_Boolean has3d = Standard_False, - has2d = Standard_False, - hasPCurves = Standard_False; - - //computation of the split values in dependance from specified mode and values. - if(!computeValues(theValues, has3d,has2d,hasPCurves)) { - myErrorStatus = ShHealOper_InvalidParameters; - return Standard_False; - } - - //setting split values in the splitting curve tools. - Handle(ShapeUpgrade_WireDivide) aSplitTool = new ShapeUpgrade_WireDivide; - aSplitTool->Load(myEdge); - aSplitTool->SetContext(myContext); - if(has3d) { - Handle(ShHealOper_SplitCurve3d) aSplitCurve3d = new ShHealOper_SplitCurve3d; - aSplitCurve3d->SetValues(theValues); - aSplitTool->SetSplitCurve3dTool(aSplitCurve3d); - } - else if(has2d) { - Handle(ShHealOper_SplitCurve2d) aSplitCurve2d = new ShHealOper_SplitCurve2d; - aSplitCurve2d->SetValues(theValues); - aSplitTool->SetSplitCurve2dTool(aSplitCurve2d); - } - else { - myErrorStatus = ShHealOper_InvalidParameters; - return Standard_False; - } - - //split 3d curve and pcurve for each face reffering to edge. - Standard_Boolean isDone = Standard_True; - if(hasPCurves) { - const TopTools_ListOfShape& lfaces = myMapEdgesFace.FindFromKey(myEdge); - TopTools_ListIteratorOfListOfShape aItf(lfaces); - for( ; aItf.More() && isDone; aItf.Next()) { - TopoDS_Face aFace = TopoDS::Face(aItf.Value()); - aSplitTool->SetFace(aFace); - aSplitTool->Perform(); - isDone = aSplitTool->Status( ShapeExtend_DONE ); - if( aSplitTool->Status( ShapeExtend_FAIL )) - myErrorStatus = ShHealOper_ErrorExecution; - } - } - else { - aSplitTool->Perform(); - isDone = aSplitTool->Status( ShapeExtend_DONE ); - if( aSplitTool->Status( ShapeExtend_FAIL )) - myErrorStatus = ShHealOper_ErrorExecution; - } - if(isDone) - myResultShape = myContext->Apply(myInitShape); - return isDone; - -} -//======================================================================= -//function : computeValues -//purpose : -//======================================================================= - -Standard_Boolean ShHealOper_EdgeDivide::computeValues(const Handle(TColStd_HSequenceOfReal)& theValues, - Standard_Boolean& theHas3d, - Standard_Boolean& theHas2d, - Standard_Boolean& hasPCurves) -{ - hasPCurves = (myMapEdgesFace.Contains(myEdge) && - myMapEdgesFace.FindFromKey(myEdge).Extent()); - if(hasPCurves && (!BRep_Tool::SameRange(myEdge) || !BRep_Tool::SameParameter(myEdge))) { - ShapeFix_Edge sfe; - sfe.FixSameParameter(myEdge); - } - - Standard_Real aFirst =0.,aLast=0.; - - //computation of the split values if edge should be splitted by parameter. - if(myDivideParamMode) { - BRep_Tool::Range(myEdge,aFirst,aLast); - Handle(Geom_Curve) aCurve = BRep_Tool::Curve(myEdge,aFirst,aLast); - - theHas3d = (!aCurve.IsNull()); - theHas2d = (aCurve.IsNull() && (fabs(aLast-aFirst) > Precision::PConfusion() )); - Standard_Integer i = 1; - for( ; i <= theValues->Length();i++) { - Standard_Real aVal = theValues->Value(i); - theValues->ChangeValue(i) = aFirst+ aVal*fabs(aLast - aFirst); - } - } - else { - //computation of the split values if edge should be splitted by length. - ShapeAnalysis_Edge sae; - Handle(Geom_Curve) aCurve; - Standard_Real aCurLen =0.; - GeomAdaptor_Curve aAdC; - Geom2dAdaptor_Curve aAdC2d; - if(sae.Curve3d(myEdge,aCurve,aFirst,aLast,Standard_False)) { - aAdC.Load(aCurve,aFirst,aLast); - aCurLen = GCPnts_AbscissaPoint::Length(aAdC,aFirst,aLast); - theHas3d = Standard_True; - } - else { - if(hasPCurves) { - TopoDS_Face aFace = TopoDS::Face(myMapEdgesFace.FindFromKey(myEdge).First()); - Handle(Geom2d_Curve) aCurve2d; - if(sae.PCurve(myEdge,aFace,aCurve2d,aFirst,aLast)) { - aAdC2d.Load(aCurve2d,aFirst,aLast); - aCurLen = GCPnts_AbscissaPoint::Length(aAdC,aFirst,aLast); - theHas2d = Standard_True; - } - - } - } - if(!theHas3d && !theHas2d) - return Standard_False; - - Standard_Integer i = 1; - for( ; i <= theValues->Length();i++) { - Standard_Real aLen = theValues->Value(i)*aCurLen; - if(theHas3d) { - GCPnts_AbscissaPoint anAbsc(aAdC,aLen,aFirst); - if(anAbsc.IsDone()) - theValues->ChangeValue(i) = anAbsc.Parameter(); - else - theValues->Remove(i--); - } - else if(theHas2d) { - GCPnts_AbscissaPoint anAbsc(aAdC2d,aLen,aFirst); - if(anAbsc.IsDone()) - theValues->ChangeValue(i) = anAbsc.Parameter(); - else - theValues->Remove(i--); - } - } - } - return (theValues->Length()); -} diff --git a/src/ShHealOper/ShHealOper_EdgeDivide.hxx b/src/ShHealOper/ShHealOper_EdgeDivide.hxx deleted file mode 100644 index 37b40e751..000000000 --- a/src/ShHealOper/ShHealOper_EdgeDivide.hxx +++ /dev/null @@ -1,94 +0,0 @@ -// File: ShHealOper_EdgeDivide.hxx -// Created: 30.04.04 16:06:25 -// Author: Galina KULIKOVA -// < MODULE = KERNEL> : -// Copyright (C) 2003 CEA -// -// 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. -// - -// 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 -// - - -#ifndef ShHealOper_EdgeDivide_HeaderFile -#define ShHealOper_EdgeDivide_HeaderFile - -#include -#include -#include -#include -#include -#include - -/// Class ShHealOper_EdgeDivide -//Intended for spitting edge in accordance to the specified mode and value. - -class ShHealOper_EdgeDivide : public ShHealOper_Tool -{ - public: - // ---------- PUBLIC METHODS ---------- - - - Standard_EXPORT ShHealOper_EdgeDivide () : ShHealOper_Tool() {} - /// Empty constructor - - Standard_EXPORT ShHealOper_EdgeDivide (const TopoDS_Shape& theShape); - /// Constructor initializes by shape. - - Standard_EXPORT virtual void Init(const TopoDS_Shape& theShape); - //Method for initalization by whole shape. - - Standard_EXPORT Standard_Boolean Perform(const TopoDS_Shape& theEdge, - const Standard_Real theValue, - const Standard_Boolean theDivideParamMode = Standard_True); - //Performs spitting of the specified edge in the accoradnce to - //specified mode and value. - //If theDivideParamMode is equal to true edge will be splitted by parameter. - //Else edge will be spliited by length (default true). - //theValue is koefficient for splitting from 0 to 1. - - Standard_EXPORT Standard_Boolean Perform(const TopoDS_Shape& theEdge, - const TColStd_SequenceOfReal& theValues, - const Standard_Boolean theDivideParamMode = Standard_True); - //Performs spitting of the specified edge in the accoradnce to - //specified mode and sequence of values the same way as previous. - - protected: - // ---------- PROTECTED METHODS ---------- - - - Standard_Boolean build(const Handle(TColStd_HSequenceOfReal)& theValues); - - Standard_Boolean computeValues(const Handle(TColStd_HSequenceOfReal)& theValues, - Standard_Boolean& theHas3d, - Standard_Boolean& theHas2d, - Standard_Boolean& hasPCurves); - - private: - // ---------- PRIVATE FIELDS ---------- - - TopTools_IndexedDataMapOfShapeListOfShape myMapEdgesFace; - Standard_Boolean myDivideParamMode; - TopoDS_Edge myEdge; - - public: -// Declaration of CASCADE RTTI -//DEFINE_STANDARD_RTTI (ShHealOper_EdgeDivide) -}; - -// Definition of HANDLE object using Standard_DefineHandle.hxx -//DEFINE_STANDARD_HANDLE (ShHealOper_EdgeDivide, ) - - -#endif diff --git a/src/ShHealOper/ShHealOper_FillHoles.cxx b/src/ShHealOper/ShHealOper_FillHoles.cxx deleted file mode 100644 index d80857e74..000000000 --- a/src/ShHealOper/ShHealOper_FillHoles.cxx +++ /dev/null @@ -1,468 +0,0 @@ -// File: ShHealOper_FillHoles.cxx -// Created: 26.04.04 17:35:30 -// Author: Galina KULIKOVA -// < MODULE = KERNEL> : -// Copyright (C) 2003 CEA -// -// 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. -// - -// 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 -// - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -//======================================================================= -//function : ShHealOper_FillHoles() -//purpose : Constructor -//======================================================================= -ShHealOper_FillHoles::ShHealOper_FillHoles () -{ - InitParameters(); -} - -//======================================================================= -//function : ShHealOper_FillHoles -//purpose : -//======================================================================= - -ShHealOper_FillHoles::ShHealOper_FillHoles (const TopoDS_Shape& theShape) -{ - - Init(theShape); - InitParameters(); -} -//======================================================================= -//function : Init -//purpose : -//======================================================================= - -void ShHealOper_FillHoles::Init(const TopoDS_Shape& theShape) -{ - ShHealOper_Tool::Init(theShape); - TopExp::MapShapesAndAncestors( myInitShape, TopAbs_EDGE,TopAbs_SHELL , myEdgeShells); - TopExp::MapShapesAndAncestors ( myInitShape, TopAbs_EDGE,TopAbs_COMPOUND, myEdgeComps ); - - TopExp::MapShapesAndAncestors ( myInitShape, TopAbs_EDGE,TopAbs_FACE, myEdgeFaces ); -} -//======================================================================= -//function : InitParameters -//purpose : -//======================================================================= - -void ShHealOper_FillHoles::InitParameters(Standard_Integer theDegree, - Standard_Integer theNbPtsOnCur, - Standard_Integer theNbIter, - Standard_Real theTol3d, - Standard_Real theTol2d, - Standard_Real theTolAng, - Standard_Real theTolCrv, - Standard_Integer theMaxDeg, - Standard_Integer theMaxSeg) -{ - myNbPtsOnCur = theNbPtsOnCur; - myNbIter = theNbIter; - myDegree =theDegree; - myTol2d = theTol2d; - myTol3d = theTol3d; - myTolAng = theTolAng; - myTolCrv = theTolCrv; - myMaxDeg = theMaxDeg; - myMaxSeg =theMaxSeg; -} -//======================================================================= -//function : Fill -//purpose : -//======================================================================= - -Standard_Boolean ShHealOper_FillHoles::Fill() -{ - ShapeAnalysis_FreeBounds sab(myInitShape); - TopoDS_Compound aCompClosed = sab.GetClosedWires(); - TopoDS_Compound aCompOpen = sab.GetOpenWires(); - TopTools_SequenceOfShape aFillWires; - if(!aCompClosed.IsNull()) { - TopoDS_Iterator aIt(aCompClosed); - - for( ; aIt.More(); aIt.Next()) - aFillWires.Append(aIt.Value()); - } - if(!aCompOpen.IsNull()) { - TopoDS_Iterator aIt(aCompOpen); - for( ; aIt.More(); aIt.Next()) - aFillWires.Append(aIt.Value()); - } - - TopExp_Explorer aExp(myInitShape,TopAbs_EDGE,TopAbs_FACE); - - for( ; aExp.More(); aExp.Next()) - aFillWires.Append(aExp.Current()); - - return Fill(aFillWires); -} - -//======================================================================= -//function : Fill -//purpose : -//======================================================================= - -Standard_Boolean ShHealOper_FillHoles::Fill(const TopTools_SequenceOfShape& theFillShapes) -{ - myDone = Standard_False; - myErrorStatus = ShHealOper_NotError; - if(myInitShape.IsNull()) { - myErrorStatus = ShHealOper_InvalidParameters; - return myDone; - } - if(!theFillShapes.Length()) { - return myDone; - } - - Handle(TopTools_HSequenceOfShape) aSeqWires = new TopTools_HSequenceOfShape; - if(!prepareWires(theFillShapes,aSeqWires)) { - myErrorStatus = ShHealOper_InvalidParameters; - return myDone; - } - - myResultShape = myInitShape; - Standard_Integer i =1; - for( ; i <= aSeqWires->Length(); i++) { - TopoDS_Wire aWire = TopoDS::Wire(aSeqWires->Value(i)); - Handle(TColGeom2d_HArray1OfCurve) aCurves2d; - Handle(TColStd_HArray1OfInteger) aOrders; - Handle(TColStd_HArray1OfInteger) aSenses; - Handle(Geom_Surface) aSurf = buildSurface(aWire,aCurves2d,aOrders,aSenses); - if(aSurf.IsNull()) - myErrorStatus = ShHealOper_ErrorExecution; - else - myDone = (addFace(aSurf,aWire,aCurves2d,aOrders,aSenses) || myDone); - } - if(myDone) - myResultShape = myContext->Apply(myResultShape); - return myDone; -} -//======================================================================= -//function : isCircle -//purpose : -//======================================================================= -static Standard_Boolean isCircle(const TopoDS_Edge theEdge) -{ - Standard_Real aFirst, aLast; - Handle(Geom_Curve) aC3D = BRep_Tool::Curve(theEdge,aFirst, aLast ); - if(aC3D.IsNull()) return Standard_False; - Standard_Boolean isCirc = (aC3D->Value(aFirst).Distance(aC3D->Value(aLast)) < - aC3D->Value(aFirst).Distance(aC3D->Value((aFirst +aLast)/2))); - return isCirc; -} -//======================================================================= -//function : prepareWires -//purpose : -//======================================================================= - -Standard_Boolean ShHealOper_FillHoles::prepareWires(const TopTools_SequenceOfShape& theFillShapes, - Handle(TopTools_HSequenceOfShape)& theSeqWires) -{ - Handle(TopTools_HSequenceOfShape) aSeqEdges = new TopTools_HSequenceOfShape; - BRep_Builder aB; - Standard_Integer i =1; - for( ; i <= theFillShapes.Length(); i++) { - TopExp_Explorer aExp; - for (aExp.Init (theFillShapes.Value(i),TopAbs_WIRE); aExp.More(); aExp.Next()) { - TopoDS_Iterator aIt(aExp.Current()); - Standard_Boolean isAdd = Standard_True; - for( ; aIt.More() && isAdd; aIt.Next()) { - if(myEdgeFaces.Contains(aIt.Value())) - isAdd = (myEdgeFaces.FindFromKey(aIt.Value()).Extent() <2); - } - if(isAdd) - theSeqWires->Append(aExp.Current()); - } - for (aExp.Init (theFillShapes.Value(i),TopAbs_EDGE, TopAbs_WIRE); aExp.More(); aExp.Next()) { - if (!BRep_Tool::Degenerated (TopoDS::Edge (aExp.Current()))) - if(myEdgeFaces.Contains(aExp.Current()) && myEdgeFaces.FindFromKey(aExp.Current()).Extent() >1) - continue; - aSeqEdges->Append(aExp.Current()); - } - } - - if(aSeqEdges->Length()) - { - Standard_Real aTol = 0.; - Standard_Boolean aShared = Standard_True; - Handle(TopTools_HSequenceOfShape) aTmpWires = new TopTools_HSequenceOfShape; - ShapeAnalysis_FreeBounds::ConnectEdgesToWires(aSeqEdges, aTol, aShared, aTmpWires); - Handle(TopTools_HSequenceOfShape) anWiresClosed = new TopTools_HSequenceOfShape, - anWiresOpen = new TopTools_HSequenceOfShape; - ShapeAnalysis_FreeBounds::SplitWires(aTmpWires, aTol, aShared, anWiresClosed, anWiresOpen); - - for (i = 1; i <= anWiresClosed->Length(); i++) - theSeqWires->Append (anWiresClosed->Value (i)); - for (i = 1; i <= anWiresOpen->Length(); i++) - theSeqWires->Append (anWiresOpen->Value (i)); - } - - - - for( i =1; i <= theSeqWires->Length(); i++) { - TopoDS_Wire aWire = TopoDS::Wire(theSeqWires->Value(i)); - - TopoDS_Iterator aIt(aWire); - Standard_Integer ne =0; - TopoDS_Edge ae; - for( ; aIt.More(); aIt.Next(), ne++) - ae = TopoDS::Edge(aIt.Value()); - if((ne == 1) && ( !isCircle(ae))) { - theSeqWires->Remove(i--); - continue; - } - } - return (theSeqWires->Length()); -} -//======================================================================= -//function : buildSurface -//purpose : -//======================================================================= - -Handle(Geom_Surface) ShHealOper_FillHoles::buildSurface(const TopoDS_Wire& theWire, - Handle(TColGeom2d_HArray1OfCurve)& theCurves2d, - Handle(TColStd_HArray1OfInteger)& theOrders, - Handle(TColStd_HArray1OfInteger)& theSenses) -{ - Handle(Geom_BSplineSurface) aSurf; - try { - - GeomPlate_BuildPlateSurface aBuilder(myDegree, myNbPtsOnCur, myNbIter, - myTol2d, myTol3d, myTolAng, myTolCrv); - TopoDS_Iterator aIter; - for(aIter.Initialize (theWire); aIter.More(); aIter.Next()) { - - TopoDS_Edge ae = TopoDS::Edge(aIter.Value()); - BRepAdaptor_Curve adC(ae); - Handle(BRepAdaptor_HCurve) aHAD= new BRepAdaptor_HCurve(adC); - Handle(BRepFill_CurveConstraint) aConst = - new BRepFill_CurveConstraint (aHAD, (Standard_Integer) GeomAbs_C0, myNbPtsOnCur, myTol3d); - //Handle(GeomPlate_CurveConstraint) aConst = - // new GeomPlate_CurveConstraint(aHAD, (Standard_Integer) GeomAbs_C0, myNbPtsOnCur, myTol3d); - aBuilder.Add (aConst); - } - aBuilder.Perform(); - if(!aBuilder.IsDone()) - return aSurf; - Handle(GeomPlate_Surface) aPlSurf = aBuilder.Surface(); - - //for filling holes without initial specified surface - //the initial surface should be build by GeomPlate itself - //following code was taken from BRepFill_Filling::Build - - Standard_Real aDist = aBuilder.G0Error(); - TColgp_SequenceOfXY S2d; - TColgp_SequenceOfXYZ S3d; - S2d.Clear(); - S3d.Clear(); - aBuilder.Disc2dContour(4,S2d); - aBuilder.Disc3dContour(4,0,S3d); - Standard_Real amaxTol = Max( myTol3d, 10* aDist); - GeomPlate_PlateG0Criterion Criterion( S2d, S3d, amaxTol ); - GeomPlate_MakeApprox Approx( aPlSurf, Criterion, myTol3d, myMaxSeg, myMaxDeg ); - aSurf = Approx.Surface(); - if(aSurf.IsNull()) - return aSurf; - - theCurves2d = aBuilder.Curves2d(); - theOrders = aBuilder.Order(); - theSenses = aBuilder.Sense(); - - } - - catch (Standard_Failure) { - aSurf.Nullify(); - return aSurf; - } - return aSurf; -} - -//======================================================================= -//function : addFace -//purpose : -//======================================================================= - -Standard_Boolean ShHealOper_FillHoles::addFace(const Handle(Geom_Surface)& theSurf, - const TopoDS_Wire& theWire, - const Handle(TColGeom2d_HArray1OfCurve)& theCurves2d, - const Handle(TColStd_HArray1OfInteger)& theOrders, - const Handle(TColStd_HArray1OfInteger)& theSenses) -{ - BRepBuilderAPI_MakeFace aMakeFace (theSurf); - TopoDS_Face aFace = aMakeFace.Face(); - aFace.EmptyCopy(); - - - TopoDS_Wire aWire; - BRep_Builder aB; - aB.MakeWire(aWire); - - TopTools_IndexedMapOfShape aMapParent; - Standard_Integer aInd = 1; - Standard_Boolean hasShell = Standard_False; - TopoDS_Iterator aIter(theWire); - for ( ; aIter.More(); aIter.Next(), aInd++) { - TopoDS_Edge anEdge = TopoDS::Edge (aIter.Value()); - Standard_Real aF, aL; - BRep_Tool::Range (anEdge, aF, aL); - TopLoc_Location aLoc; - aB.UpdateEdge (anEdge, theCurves2d->Value (aInd),aFace, 0.); - - aB.Range (anEdge, aFace, aF, aL); - - // Set orientation of the edge: orientation should be changed - // if its orientation does not make sence with curve orientation - // recommended by GeomPlate - if ((anEdge.Orientation() == TopAbs_FORWARD) == - (theSenses->Value (theOrders->Value (aInd)) == 1)) { - anEdge.Reverse(); - } - aB.SameParameter(anEdge,Standard_False); - aB.Add (aWire, anEdge); - Standard_Boolean isAdd = Standard_False; - TopoDS_Shape aParent; - if(!myEdgeFaces.Contains(anEdge)) - continue; - - if(myEdgeFaces.FindFromKey(anEdge).Extent() >1) - continue; - - if(myEdgeShells.Contains(anEdge)) { - if(myEdgeShells.FindFromKey(anEdge).Extent()) { - aParent = myEdgeShells.FindFromKey(anEdge).First(); - hasShell = Standard_True; - aMapParent.Add(aParent); - } - } - else if(myEdgeComps.Contains(anEdge)) { - if(myEdgeComps.FindFromKey(anEdge).Extent()) { - aParent = myEdgeComps.FindFromKey(anEdge).First(); - aMapParent.Add(aParent); - } - } - - } - aB.Add(aFace,aWire); - Handle(ShapeFix_Face) aSff = new ShapeFix_Face(aFace); - aSff->SetContext(myContext); - aSff->SetPrecision(myTol3d); - aSff->Perform(); - if(aSff->Status(ShapeExtend_FAIL)) { - myErrorStatus = ShHealOper_ErrorExecution; - return Standard_False; - } - //theFace = aSff->Face(); - TopoDS_Shape aResShape = aSff->Result(); - getResShape(aResShape,aMapParent,hasShell); - return Standard_True; -} - -//======================================================================= -//function : getResShape -//purpose : -//======================================================================= - -void ShHealOper_FillHoles::getResShape(const TopoDS_Shape& theAddShape, - const TopTools_IndexedMapOfShape& aMapParent, - const Standard_Boolean theHasShell) -{ - BRep_Builder aB; - - if(!aMapParent.Extent()) { - TopoDS_Compound aComp; - aB.MakeCompound(aComp); - TopoDS_Shape aresShape = myContext->Apply(myResultShape); - aB.Add(aComp,aresShape); - aB.Add(aComp,theAddShape); - myResultShape = aComp; - return ; - } - Standard_Boolean anhasShell = theHasShell; - TopoDS_Shell aTmpShell; - aB.MakeShell(aTmpShell); - TopTools_SequenceOfShape aseqShells; - if(anhasShell) { - - aB.Add(aTmpShell,theAddShape); - Standard_Integer i =1; - for( ; i <= aMapParent.Extent(); i++) { - TopoDS_Shape aParShape = myContext->Apply(aMapParent.FindKey(i)); - if(aParShape.ShapeType() == TopAbs_SHELL) { - TopExp_Explorer aexp(aParShape,TopAbs_FACE); - for( ; aexp.More(); aexp.Next()) - aB.Add(aTmpShell,aexp.Current()); - aseqShells.Append(aParShape); - } - } - anhasShell = aseqShells.Length(); - } - if(anhasShell) { - Handle(ShapeFix_Shell) asfs = new ShapeFix_Shell; - asfs->FixFaceOrientation(aTmpShell); - TopoDS_Shape anshape = asfs->Shape(); - myContext->Replace(aseqShells.Value(1),anshape); - Standard_Integer i =2; - for( ; i<= aseqShells.Length(); i++) - myContext->Remove(aseqShells.Value(i)); - - } - else { - TopoDS_Compound aComp; - aB.MakeCompound(aComp); - TopoDS_Shape oldshape = myContext->Apply(aMapParent.FindKey(1)); - TopoDS_Iterator aIt(oldshape); - for( ; aIt.More(); aIt.Next()) - aB.Add(aComp,aIt.Value()); - aB.Add(aComp,theAddShape); - myContext->Replace( oldshape,aComp); - - } -} diff --git a/src/ShHealOper/ShHealOper_FillHoles.hxx b/src/ShHealOper/ShHealOper_FillHoles.hxx deleted file mode 100644 index 9d43402ab..000000000 --- a/src/ShHealOper/ShHealOper_FillHoles.hxx +++ /dev/null @@ -1,119 +0,0 @@ -// File: ShHealOper_FillHoles.hxx -// Created: 26.04.04 17:15:10 -// Author: Galina KULIKOVA -// < MODULE = KERNEL> : -// Copyright (C) 2003 CEA -// -// 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. -// - -// 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 -// - - - -#ifndef ShHealOper_FillHoles_HeaderFile -#define ShHealOper_FillHoles_HeaderFile - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/// Class ShHealOper_FillHoles -//Intended for filling holes. - -class ShHealOper_FillHoles : public ShHealOper_Tool -{ - public: - // ---------- PUBLIC METHODS ---------- - - Standard_EXPORT ShHealOper_FillHoles (); - // Empty constructor initializes class by default parameters. - - Standard_EXPORT ShHealOper_FillHoles (const TopoDS_Shape& theShape); - - Standard_EXPORT virtual void Init(const TopoDS_Shape& theShape); - //Method for initalization by whole shape. - - Standard_EXPORT void InitParameters(Standard_Integer theDegree = 3,//3(2) - Standard_Integer theNbPtsOnCur =5,//3, - Standard_Integer theNbIter = 12,//3 - Standard_Real theTol3d = 0.0001,//0.001, - Standard_Real theTol2d = 1.e-5, - Standard_Real theTolAng = 0.01, - Standard_Real theTolCrv = 0.01, - Standard_Integer theMaxDeg = 8, - Standard_Integer theMaxSeg =9); - //Initialization of the parameters for creation of the surface by GeomPlate. - - Standard_EXPORT Standard_Boolean Fill(); - //Fill all holes detectected as free boundaries. - - Standard_EXPORT Standard_Boolean Fill(const TopTools_SequenceOfShape& theFillShapes); - //Fill hole specified by wires or edges. - - - private: - // ---------- PRIVATE METHODS ---------- - - Standard_Boolean prepareWires(const TopTools_SequenceOfShape& theFillShapes, - Handle(TopTools_HSequenceOfShape)& theSeqWires); - - Handle(Geom_Surface) buildSurface(const TopoDS_Wire& theWire, - Handle(TColGeom2d_HArray1OfCurve)& theCurves2d, - Handle(TColStd_HArray1OfInteger)& theOrders, - Handle(TColStd_HArray1OfInteger)& theSenses); - - Standard_Boolean addFace(const Handle(Geom_Surface)& theSurf, - const TopoDS_Wire& theWire, - const Handle(TColGeom2d_HArray1OfCurve)& theCurves2d, - const Handle(TColStd_HArray1OfInteger)& theOrders, - const Handle(TColStd_HArray1OfInteger)& theSenses); - - void getResShape(const TopoDS_Shape& theAddShape, - const TopTools_IndexedMapOfShape& aMapParent, - const Standard_Boolean theHasShell); - private: - // ---------- PRIVATE FIELDS ---------- - - TopTools_IndexedDataMapOfShapeListOfShape myEdgeShells; - - TopTools_IndexedDataMapOfShapeListOfShape myEdgeComps; - TopTools_IndexedDataMapOfShapeListOfShape myEdgeFaces; - Standard_Integer myNbPtsOnCur; - Standard_Integer myNbIter; - Standard_Integer myDegree; - Standard_Real myTol2d; - Standard_Real myTol3d; - Standard_Real myTolAng; - Standard_Real myTolCrv; - Standard_Integer myMaxDeg; - Standard_Integer myMaxSeg; - public: -// Declaration of CASCADE RTTI -//DEFINE_STANDARD_RTTI (ShHealOper_FillHoles) -}; - -// Definition of HANDLE object using Standard_DefineHandle.hxx -//DEFINE_STANDARD_HANDLE (ShHealOper_FillHoles, ) - - -#endif diff --git a/src/ShHealOper/ShHealOper_RemoveFace.cxx b/src/ShHealOper/ShHealOper_RemoveFace.cxx deleted file mode 100644 index 3501fe024..000000000 --- a/src/ShHealOper/ShHealOper_RemoveFace.cxx +++ /dev/null @@ -1,444 +0,0 @@ -// File: ShHealOper_RemoveFace.cxx -// Created: 16.04.04 12:12:38 -// Author: Galina KULIKOVA -// < MODULE = KERNEL> : -// Copyright (C) 2003 CEA -// -// 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. -// - -// 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 -// - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -//======================================================================= -//function : ShHealOper_RemoveFace() -//purpose : Constructor -//======================================================================= -ShHealOper_RemoveFace::ShHealOper_RemoveFace () : - ShHealOper_Tool() -{ -} -//======================================================================= -//function : ShHealOper_RemoveFace -//purpose : -//======================================================================= - -ShHealOper_RemoveFace::ShHealOper_RemoveFace ( const TopoDS_Shape& theShape ) - //ShHealOper_Tool(theShape) -{ - Init(theShape); -} -//======================================================================= -//function : Init -//purpose : -//======================================================================= - -void ShHealOper_RemoveFace::Init(const TopoDS_Shape& theShape) -{ - //myDone = Standard_False; - //myInitShape = theShape; - //myContext->Apply(myInitShape); - ShHealOper_Tool::Init(theShape); - myMapEdgesFace.Clear(); - TopExp::MapShapesAndAncestors(theShape,TopAbs_EDGE,TopAbs_FACE,myMapEdgesFace); -} -//======================================================================= -//function : Perform -//purpose : remove all faces from initial shape -//======================================================================= - -Standard_Boolean ShHealOper_RemoveFace::Perform() -{ - myDone = Standard_False; - myErrorStatus = ShHealOper_NotError; - if(myInitShape.IsNull()) { - myErrorStatus = ShHealOper_InvalidParameters; - return myDone; - } - TopExp_Explorer aExp(myInitShape,TopAbs_FACE); - for( ; aExp.More(); aExp.Next()) { - removePCurve(TopoDS::Face(aExp.Current())); - myContext->Remove(aExp.Current()); - myDone = Standard_True; - } - if(myDone) { - TopoDS_Shape aNewShape = myContext->Apply(myInitShape); - isReplace(aNewShape,myResultShape); - myContext->Replace(aNewShape,myResultShape); - } - return myDone; -} -//======================================================================= -//function : Perform -//purpose : remove faces specified by sequence of faces from initial shape. -//======================================================================= - -Standard_Boolean ShHealOper_RemoveFace::Perform(const TopTools_SequenceOfShape& theRemoveFaces) -{ - myDone = Standard_False; - myErrorStatus = ShHealOper_NotError; - if(myInitShape.IsNull()) { - myErrorStatus = ShHealOper_InvalidParameters; - return myDone; - } - if(theRemoveFaces.IsEmpty()) - return Standard_False; - myMapFaces.Clear(); - - Standard_Integer i=1; - for( ; i <= theRemoveFaces.Length(); i++) - myMapFaces.Add(theRemoveFaces.Value(i)); - - myDone = removeFaces(myInitShape,myResultShape); - return myDone; -} - -//======================================================================= -//function : removeFaces -//purpose : -//======================================================================= - -Standard_Boolean ShHealOper_RemoveFace::removeFaces(const TopoDS_Shape& theShape, - TopoDS_Shape& theNewShape) -{ - Standard_Boolean isDone = Standard_False; - - TopAbs_ShapeEnum aType = theShape.ShapeType(); - theNewShape = theShape; - if(!myMapFaces.Extent()) - return isDone; - if( aType == TopAbs_WIRE || aType == TopAbs_EDGE || aType == TopAbs_VERTEX) - return isDone; - if(aType == TopAbs_FACE && myMapFaces.Contains(theShape)) { - removePCurve(TopoDS::Face(theShape)); - - myContext->Remove(theShape); - myMapFaces.Remove(theShape); - //theNewShape = TopoDS_Shape(); - theNewShape.Nullify(); - isDone = Standard_True; - } - else if(aType == TopAbs_SHELL) { - isDone = removeFaces(TopoDS::Shell(theShape),theNewShape); - return isDone; - } - else if(aType == TopAbs_SOLID) { - isDone = removeFaces(TopoDS::Solid(theShape),theNewShape); - myContext->Replace(theShape,theNewShape); - } - else if(aType == TopAbs_COMPSOLID) { - - //in the case of compsolid method for removing faces for solid - //will be used. - - TopExp_Explorer aExpShell(theShape,TopAbs_SHELL); - TopoDS_Solid aSol; - BRep_Builder aB; - aB.MakeSolid(aSol); - for( ; aExpShell.More(); aExpShell.Next()) { - aB.Add(aSol,aExpShell.Current()); - } - TopoDS_Shape aNewShape; - isDone = removeFaces(aSol,aNewShape); - if(isDone) - myContext->Replace(theShape,theNewShape); - - } - else if(aType == TopAbs_COMPOUND) { - //in the case of compounf faces will be removed from each part of compound separately - - TopoDS_Compound aComp; - TopoDS_Iterator aItShape(theShape,Standard_False); - BRep_Builder aB; - aB.MakeCompound(aComp); - Standard_Integer nbs =0; - for( ; aItShape.More() ; aItShape.Next()) { - - TopoDS_Shape aNShape; - if( removeFaces(aItShape.Value(),aNShape)) { - isDone = Standard_True; - myContext->Replace(aItShape.Value(),aNShape); - } - if(!aNShape.IsNull()) { - aB.Add(aComp,aNShape); - nbs++; - } - } - if(isDone) { - if(nbs) - theNewShape = aComp; - else - theNewShape =TopoDS_Shape(); - myContext->Replace(theShape,theNewShape); - } - - } - return isDone; -} -//======================================================================= -//function : removeFaces -//purpose : function for removing faces from solid -//======================================================================= - -Standard_Boolean ShHealOper_RemoveFace::removeFaces(const TopoDS_Solid& theShape, - TopoDS_Shape& theNewShape) -{ - Standard_Boolean isDone = Standard_False; - TopoDS_Solid aSol; - BRep_Builder aB; - aB.MakeSolid(aSol); - TopoDS_Compound aComp; - aB.MakeCompound(aComp); - Standard_Boolean isAddSol = Standard_False, isAddComp = Standard_False; - - //firslty faces will be deleted from each shell. - TopoDS_Iterator aItSol(theShape,Standard_False); - for( ; aItSol.More(); aItSol.Next()) { - TopoDS_Shape aSh = aItSol.Value(); - TopoDS_Shape aNewShape; - if(removeFaces(aSh,aNewShape)) - isDone = Standard_True; - - if(aNewShape.IsNull()) - continue; - else if(aNewShape.ShapeType() == TopAbs_SHELL ) { - aB.Add(aSol,aNewShape); - isAddSol = Standard_True; - } - else { - aB.Add(aComp,aNewShape); - isAddComp = Standard_True; - } - - } - if(isDone) { - //for getting correct solids class ShapeFix_Solid will be used. - if(isAddSol) { - Handle(ShapeFix_Solid) aSfSol = new ShapeFix_Solid(aSol); - aSfSol->FixShellMode()= Standard_False; - aSfSol->Perform(); - TopoDS_Shape aresSol = aSfSol->Shape(); - if(!isAddComp) - theNewShape = aresSol; - else - aB.Add(aComp,aresSol); - } - else if(isAddComp) - theNewShape = aComp; - else - theNewShape.Nullify(); - } - else - theNewShape = theShape; - return isDone; -} -//======================================================================= -//function : IsManifold -//purpose : function for definition manifold shell -//======================================================================= -Standard_Boolean ShHealOper_RemoveFace::isManifold(const TopoDS_Shell& aShell) -{ - Standard_Boolean IsManifold = Standard_True; - TopExp_Explorer aExp(aShell,TopAbs_EDGE); - for( ; aExp.More() && IsManifold; aExp.Next()) { - const TopTools_ListOfShape& als = myMapEdgesFace.FindFromKey(aExp.Current()); - IsManifold = (als.Extent() <=2 ); - } - return IsManifold; -} - -//======================================================================= -//function : getResultShell -//purpose : function for avoiding empty shall or shell containing one face. -//======================================================================= -static TopoDS_Shape getResultShell(const TopoDS_Shape& theNewShell) -{ - TopoDS_Shape rs; - Standard_Integer NbFacesShell =0; - TopoDS_Shape aF; - TopoDS_Iterator aI(theNewShell,Standard_False); - for(; aI.More(); aI.Next(),NbFacesShell++) - aF = aI.Value(); - if(NbFacesShell >1) - rs = theNewShell; - else if(!aF.IsNull()) - rs = aF; - return rs; -} - -//======================================================================= -//function : removeFaces -//purpose : function for removing faces from shell -//======================================================================= - -Standard_Boolean ShHealOper_RemoveFace::removeFaces(const TopoDS_Shell& theShell, - TopoDS_Shape& theNewShape) -{ - - Standard_Boolean aIsRemove = Standard_False; - //TopoDS_Shape aShape = myReShape->Apply(theShape); - //removing faces from shell. - TopoDS_Iterator aIterFaces(theShell,Standard_False); - for(; aIterFaces.More() && myMapFaces.Extent(); aIterFaces.Next()) { - - if(!myMapFaces.Contains(aIterFaces.Value())) - continue; - TopoDS_Face aFace = TopoDS::Face( aIterFaces.Value()); - removePCurve(aFace); - aIsRemove = Standard_True; - myContext->Remove(aFace); - myMapFaces.Remove(aFace); - } - if(aIsRemove) { - TopoDS_Shape aNewShape = myContext->Apply(theShell); - //avoiding empty shell and shell containing one face. - TopoDS_Shape aresShape = getResultShell(aNewShape); - if(aresShape.IsNull()) { - myContext->Remove(aNewShape); - theNewShape.Nullify(); - } - else if(aresShape.ShapeType() == TopAbs_FACE) { - myContext->Replace(aNewShape,aresShape); - theNewShape = aresShape; - } - else if(aresShape.ShapeType() == TopAbs_SHELL) { - //obtaining correct shell or compound with help class ShapeFix_Shell. - Standard_Boolean isManifShell = isManifold(theShell); - Handle(ShapeFix_Shell) aFixShell = new ShapeFix_Shell; - aFixShell->FixFaceOrientation(TopoDS::Shell(aresShape),Standard_True,!isManifShell); - TopoDS_Shape aFixShape = aFixShell->Shape(); - TopoDS_Shape areplShape; - isReplace(aFixShape,areplShape); - myContext->Replace(aNewShape,areplShape); - theNewShape = areplShape; - } - } - else theNewShape = theShell; - return aIsRemove; -} -//======================================================================= -//function : isReplace -//purpose : method to avoiding empty compounds and shells. -//======================================================================= - -Standard_Boolean ShHealOper_RemoveFace::isReplace(const TopoDS_Shape& theShape, - TopoDS_Shape& theNewShape) -{ - - Standard_Boolean isChange = Standard_False; - TopTools_SequenceOfShape aSeqShapes; - if(theShape.ShapeType() == TopAbs_COMPOUND || theShape.ShapeType() == TopAbs_COMPSOLID || - theShape.ShapeType() == TopAbs_SOLID) { - TopoDS_Iterator aEs(theShape); - for( ; aEs.More(); aEs.Next()) { - TopoDS_Shape aNewShell = aEs.Value(); - if(aNewShell.ShapeType()!= TopAbs_SHELL) { - aSeqShapes.Append(aNewShell); - continue; - } - TopoDS_Shape as = getResultShell(TopoDS::Shell(aNewShell)); - isChange = (as.IsNull() || (as.ShapeType() == TopAbs_FACE)); - if(!as.IsNull()) { - aSeqShapes.Append(as); - } - } - } - else if(theShape.ShapeType() == TopAbs_SHELL) { - TopoDS_Shape aSh = getResultShell(TopoDS::Shell(theShape)); - isChange = (aSh.IsNull() || (aSh.ShapeType() == TopAbs_FACE)); - if(!aSh.IsNull()) - aSeqShapes.Append(aSh); - } - else aSeqShapes.Append(theShape); - - if(aSeqShapes.IsEmpty()) - return Standard_True; - - if(isChange) { - if(aSeqShapes.Length() == 1) - theNewShape = aSeqShapes.Value(1); - else if (aSeqShapes.Length() > 1) { - TopoDS_Compound aComp1; - BRep_Builder aBB; - aBB.MakeCompound(aComp1); - Standard_Integer kk =1; - for( ; kk <= aSeqShapes.Length(); kk++) - aBB.Add(aComp1,aSeqShapes.Value(kk)); - if(aSeqShapes.Length()) - theNewShape = aComp1; - } - } - else - theNewShape = theShape; - return isChange; -} -//======================================================================= -//function : removePCurve -//purpose : -//======================================================================= - -void ShHealOper_RemoveFace::removePCurve(const TopoDS_Face& theFace) -{ - //removing pcurves belonging removed face. - Handle(Geom_Surface) aSurfDel = BRep_Tool::Surface(theFace); - for(TopExp_Explorer aExpEdges(theFace,TopAbs_EDGE); aExpEdges.More(); aExpEdges.Next()) { - const TopTools_ListOfShape& alFaces = myMapEdgesFace.FindFromKey(aExpEdges.Current()); - Standard_Boolean aIsDeleted = Standard_True; - - //pcurve will be removed if containing this edge faces have different surfaces. - TopTools_ListIteratorOfListOfShape aIterOtherFace(alFaces); - for(; aIterOtherFace.More() && aIsDeleted ; aIterOtherFace.Next()) { - if(aIterOtherFace.Value().IsSame(theFace)) - continue; - TopoDS_Face aFaceOther = TopoDS::Face(aIterOtherFace.Value()); - Handle(Geom_Surface) aSurf = BRep_Tool::Surface( aFaceOther); - aIsDeleted = (aSurf != aSurfDel); - } - - TopoDS_Edge aEdge = TopoDS::Edge(myContext->Apply(aExpEdges.Current())); - ShapeBuild_Edge aSbe; - TopoDS_Edge aNewEdge = aSbe.Copy(aEdge,Standard_False); - if(aIsDeleted) { - aSbe.RemovePCurve(aNewEdge,aSurfDel); - myContext->Replace(aEdge,aNewEdge); - - } - - } -} - diff --git a/src/ShHealOper/ShHealOper_RemoveFace.hxx b/src/ShHealOper/ShHealOper_RemoveFace.hxx deleted file mode 100644 index 22b2923e8..000000000 --- a/src/ShHealOper/ShHealOper_RemoveFace.hxx +++ /dev/null @@ -1,86 +0,0 @@ -// File: ShHealOper_RemoveFace.hxx -// Created: 15.04.04 18:10:16 -// Author: Galina KULIKOVA -// < MODULE = KERNEL> : -// Copyright (C) 2003 CEA -// -// 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. -// - -// 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 -// - - - -#ifndef ShHealOper_RemoveFace_HeaderFile -#define ShHealOper_RemoveFace_HeaderFile - -#include -#include -#include -#include -#include -#include -#include -#include -#include -/// Class ShHealOper_RemoveFace -//Class intended to removing faces from shape. - -class ShHealOper_RemoveFace : public ShHealOper_Tool -{ - public: - // ---------- PUBLIC METHODS ---------- - - Standard_EXPORT ShHealOper_RemoveFace (); - //Empty constructor. - - Standard_EXPORT ShHealOper_RemoveFace (const TopoDS_Shape& theShape); - // Constructor initialized by shape from which faces will be removed. - Standard_EXPORT virtual void Init(const TopoDS_Shape& theShape); - //Method for initalization by whole shape. - Standard_EXPORT Standard_Boolean Perform(); - //Removes all faces from specified shape. - - Standard_EXPORT Standard_Boolean Perform(const TopTools_SequenceOfShape& theRemovedFaces); - //Removes faces specified in the sequence of faces from specified shape. - - - private: - - Standard_Boolean removeFaces(const TopoDS_Shape& theShape,TopoDS_Shape& theNewShape); - Standard_Boolean removeFaces(const TopoDS_Solid& theShape,TopoDS_Shape& theNewShape); - Standard_Boolean removeFaces(const TopoDS_Shell& theShell,TopoDS_Shape& theNewShape); - Standard_Boolean isReplace(const TopoDS_Shape& theOldShape,TopoDS_Shape& theNewShape); - //Methods for removing faces from sub-shapes. - - void removePCurve(const TopoDS_Face& theFace); - //method for removing pcurves belonging to face - - Standard_Boolean isManifold(const TopoDS_Shell& aShell); - //denenes manifold shell. - private: - // ---------- PRIVATE FIELDS ---------- - - TopTools_MapOfShape myMapFaces; - TopTools_IndexedDataMapOfShapeListOfShape myMapEdgesFace; - public: -// Declaration of CASCADE RTTI -//DEFINE_STANDARD_RTTI (ShHealOper_RemoveFace) -}; - -// Definition of HANDLE object using Standard_DefineHandle.hxx -//DEFINE_STANDARD_HANDLE (ShHealOper_RemoveFace, ) - - -#endif diff --git a/src/ShHealOper/ShHealOper_RemoveInternalWires.cxx b/src/ShHealOper/ShHealOper_RemoveInternalWires.cxx deleted file mode 100644 index 9fbb71c5f..000000000 --- a/src/ShHealOper/ShHealOper_RemoveInternalWires.cxx +++ /dev/null @@ -1,154 +0,0 @@ -// File: ShHealOper_RemoveInternalWires.cxx -// Created: 26.04.04 14:46:45 -// Author: Galina KULIKOVA -// < MODULE = KERNEL> : -// Copyright (C) 2003 CEA -// -// 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. -// - -// 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 -// - - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//======================================================================= -//function : ShHealOper_RemoveInternalWires() -//purpose : Constructor -//======================================================================= - -ShHealOper_RemoveInternalWires::ShHealOper_RemoveInternalWires ( const TopoDS_Shape& theShape ) -{ - Init(theShape); -} -//======================================================================= -//function : Init -//purpose : -//======================================================================= - -void ShHealOper_RemoveInternalWires::Init(const TopoDS_Shape& theShape) -{ - ShHealOper_Tool::Init(theShape); - myMapWiresFace.Clear(); - TopExp::MapShapesAndAncestors(theShape,TopAbs_WIRE,TopAbs_FACE,myMapWiresFace); -} -//======================================================================= -//function : Remove -//purpose : -//======================================================================= - -Standard_Boolean ShHealOper_RemoveInternalWires::Remove() -{ - TopExp_Explorer aexpFaces(myInitShape,TopAbs_FACE); - //removes internal wires from all faces in the shape - Standard_Boolean isDone = Standard_False; - for( ; aexpFaces.More(); aexpFaces.Next()) - isDone = removeWire(TopoDS::Face(aexpFaces.Current()),TopoDS_Wire()) || isDone; - if(isDone ) { - TopoDS_Shape aNewShape = myContext->Apply(myInitShape); - //fix not-connected shell and solids obtained after removing wires - fixShape(aNewShape); - } - myDone = isDone; - return myDone; -} -//======================================================================= -//function : Remove -//purpose : -//======================================================================= - -Standard_Boolean ShHealOper_RemoveInternalWires::Remove(const TopTools_SequenceOfShape& theRemovedShapes) -{ - myDone = Standard_False; - - Standard_Integer i =1; - for( ; i <= theRemovedShapes.Length(); i++) { - //removes internal wires from specified faces. - if(theRemovedShapes.Value(i).ShapeType() == TopAbs_FACE) - myDone = (removeWire(TopoDS::Face(theRemovedShapes.Value(i)),TopoDS_Wire()) || myDone) ; - else if(theRemovedShapes.Value(i).ShapeType() == TopAbs_WIRE) - { - //removes specified internal wires. - TopoDS_Wire awire = TopoDS::Wire(theRemovedShapes.Value(i)); - if(myMapWiresFace.Contains(awire)) { - const TopTools_ListOfShape& aLfaces = myMapWiresFace.FindFromKey(awire); - TopTools_ListIteratorOfListOfShape liter(aLfaces); - for( ; liter.More(); liter.Next()) - myDone = (removeWire(TopoDS::Face(liter.Value()),awire) || myDone); - } - } - } - if(myDone ) { - TopoDS_Shape aNewShape = myContext->Apply(myInitShape); - - //fix not-connected shell and solids obtained after removing wires - fixShape(aNewShape); - - } - return myDone; -} -//======================================================================= -//function : removeWire -//purpose : -//======================================================================= - -Standard_Boolean ShHealOper_RemoveInternalWires::removeWire(const TopoDS_Face& theFace, - const TopoDS_Wire& theWire) -{ - TopoDS_Wire aBoundWire = ShapeAnalysis::OuterWire(theFace); - if(!theWire.IsNull() && aBoundWire.IsSame(theWire)) { - myErrorStatus = ShHealOper_InvalidParameters; - return Standard_False; - } - - Standard_Boolean isremove = Standard_False; - if(!theWire.IsNull()) { - myContext->Remove(theWire); - isremove= Standard_True; - } - else { - TopExp_Explorer aExpW(theFace,TopAbs_WIRE); - for( ; aExpW.More(); aExpW.Next()) { - if(!aBoundWire.IsSame(aExpW.Current())) { - myContext->Remove(aExpW.Current()); - isremove= Standard_True; - } - } - } - return isremove; -} -//======================================================================= -//function : fixShape -//purpose : -//======================================================================= - -void ShHealOper_RemoveInternalWires::fixShape(const TopoDS_Shape& theShape ) -{ - Handle(ShapeFix_Shape) aFixTool = new ShapeFix_Shape(theShape); - aFixTool->SetContext(myContext); - aFixTool->FixShellTool()->FixFaceMode() = Standard_False; - aFixTool->FixFreeFaceMode() = Standard_False; - aFixTool->FixFreeWireMode() = Standard_False; - aFixTool->FixSameParameterMode() = Standard_False; - aFixTool->Perform(); - myResultShape = aFixTool->Shape(); -} diff --git a/src/ShHealOper/ShHealOper_RemoveInternalWires.hxx b/src/ShHealOper/ShHealOper_RemoveInternalWires.hxx deleted file mode 100644 index fec59375c..000000000 --- a/src/ShHealOper/ShHealOper_RemoveInternalWires.hxx +++ /dev/null @@ -1,83 +0,0 @@ -// File: ShHealOper_RemoveInternalWires.hxx -// Created: 26.04.04 11:22:26 -// Author: Galina KULIKOVA -// < MODULE = KERNEL> : -// Copyright (C) 2003 CEA -// -// 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. -// - -// 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 -// - - -#ifndef ShHealOper_RemoveInternalWires_HeaderFile -#define ShHealOper_RemoveInternalWires_HeaderFile - -#include -#include -#include -#include -#include -#include -#include - -/// Class ShHealOper_RemoveInternalWires -// Intended for removing internal wires from faces. - -class ShHealOper_RemoveInternalWires : public ShHealOper_Tool -{ - public: - // ---------- PUBLIC METHODS ---------- - - /// Empty constructor - Standard_EXPORT ShHealOper_RemoveInternalWires () {} - - /// Copy constructor - Standard_EXPORT ShHealOper_RemoveInternalWires (const TopoDS_Shape& theShape); - //Method for initalization by whole shape. - - Standard_EXPORT virtual void Init(const TopoDS_Shape& theShape); - //Method for initalization by whole shape. - - Standard_EXPORT Standard_Boolean Remove(); - //Removes all internal wires from all faces of the shape - - Standard_EXPORT Standard_Boolean Remove(const TopTools_SequenceOfShape& theRemovedShapes); - //Removes wires specified in the sequence of shapes or internal wires - //belonging faces specified in the sequence of shape. - - - private: - // ---------- PRIVATE METHODS ---------- - - Standard_Boolean removeWire(const TopoDS_Face& theFace, - const TopoDS_Wire& theWire); - void fixShape(const TopoDS_Shape& theShape ); - - private: - // ---------- PRIVATE FIELDS ---------- - TopTools_IndexedDataMapOfShapeListOfShape myMapWiresFace; - - - - public: -// Declaration of CASCADE RTTI -//DEFINE_STANDARD_RTTI (ShHealOper_RemoveInternalWires) -}; - -// Definition of HANDLE object using Standard_DefineHandle.hxx -//DEFINE_STANDARD_HANDLE (ShHealOper_RemoveInternalWires, ) - - -#endif diff --git a/src/ShHealOper/ShHealOper_Sewing.cxx b/src/ShHealOper/ShHealOper_Sewing.cxx deleted file mode 100644 index 62ed52e49..000000000 --- a/src/ShHealOper/ShHealOper_Sewing.cxx +++ /dev/null @@ -1,282 +0,0 @@ -// File: ShHealOper_Sewing.cxx -// Created: 29.04.04 15:07:10 -// Author: Galina KULIKOVA -// < MODULE = KERNEL> : -// Copyright (C) 2003 CEA -// -// 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. -// - -// 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 -// - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -//======================================================================= -//function : ShHealOper_Sewing() -//purpose : Constructor -//======================================================================= - - -ShHealOper_Sewing::ShHealOper_Sewing (const TopoDS_Shape& theShape, - const Standard_Real theTolerance) -{ - Init(theShape); - myTolerance = theTolerance; -} -//======================================================================= -//function : Init -//purpose : -//======================================================================= - -void ShHealOper_Sewing::Init(const TopoDS_Shape& theShape) -{ - ShHealOper_Tool::Init(theShape); - myTolerance = Precision::Confusion(); - myEdgesMode = Standard_False; - myFacesMode = Standard_True; - myNonManifoldMode = Standard_False; - myHistoryLevel = TopAbs_FACE; -} -//======================================================================= -//function : Perform -//purpose : -//======================================================================= - -Standard_Boolean ShHealOper_Sewing::Perform() -{ - TopTools_SequenceOfShape theSeqShapes; - return sewing(theSeqShapes); -} -//======================================================================= -//function : Perform -//purpose : -//======================================================================= - -Standard_Boolean ShHealOper_Sewing::Perform(const TopTools_SequenceOfShape& theSeqShapes) -{ - return sewing(theSeqShapes); -} - -//======================================================================= -//function : sewing -//purpose : -//======================================================================= - -Standard_Boolean ShHealOper_Sewing::sewing(const TopTools_SequenceOfShape& theSeqShapes) -{ - myDone = Standard_False; - myErrorStatus = ShHealOper_NotError; - if(myInitShape.IsNull()) { - myErrorStatus = ShHealOper_InvalidParameters; - return myDone; - } - //sewing shape - Handle(BRepBuilderAPI_Sewing) aSewing = new BRepBuilderAPI_Sewing; - aSewing->Load(myInitShape); - aSewing->SetTolerance(myTolerance); - aSewing->SetFaceMode(myFacesMode); - aSewing->SetFloatingEdgesMode(myEdgesMode); - aSewing->SetNonManifoldMode(myNonManifoldMode); - Standard_Integer j =1; - for( ; j <= theSeqShapes.Length();j++) - aSewing->Add(theSeqShapes.Value(j)); - - aSewing->Perform(); - const TopoDS_Shape aSewShape = aSewing->SewedShape(); - if(aSewShape.IsNull()) { - myErrorStatus = ShHealOper_ErrorExecution; - return myDone; - } - if(aSewShape.IsSame(myInitShape)) - return myDone; - - //analysis either sewing was made by changing number of shells - myDone = isSewed(aSewShape); - - //keep modification of the subshapes in the Context. - TopExp_Explorer aExp(myInitShape,TopAbs_FACE); - for( ; aExp.More(); aExp.Next()) - myDone = (getModifications( aExp.Current(),aSewing) || myDone); - - TopoDS_Shape aTempShape = myContext->Apply(aSewShape); - //obtained shells with fixed orientation for manifold and nonmanifold shells - if(myFacesMode) - myDone = getShells(aTempShape) || myDone; - - //obtained manifold wires if sewing edges was performed. - if(myEdgesMode) - myDone = getWires(aTempShape) || myDone; - - if(myDone) - myResultShape = myContext->Apply(aTempShape); - - return myDone; -} -//======================================================================= -//function : getShells -//purpose : -//======================================================================= - -Standard_Boolean ShHealOper_Sewing::getShells(const TopoDS_Shape& theSewShape) const -{ - Standard_Boolean isDone = Standard_False; - TopoDS_Shape aTmpShape = theSewShape; - if(myNonManifoldMode) { - TopoDS_Shell tempShell; - BRep_Builder aB; - aB.MakeShell(tempShell); - - for(TopExp_Explorer aExpf(theSewShape,TopAbs_FACE);aExpf.More(); aExpf.Next()) - aB.Add(tempShell,aExpf.Current()); - aTmpShape = tempShell; - myContext->Replace(theSewShape,aTmpShape); - } - - Handle(ShapeFix_Shell) asfs = new ShapeFix_Shell; - asfs->SetContext(myContext); - TopExp_Explorer aexpShell(aTmpShape,TopAbs_SHELL); - for ( ; aexpShell.More(); aexpShell.Next()) - isDone = (asfs->FixFaceOrientation(TopoDS::Shell(aexpShell.Current()), - Standard_True,myNonManifoldMode) || isDone); - - return isDone; -} -//======================================================================= -//function : getWires -//purpose : -//======================================================================= - -Standard_Boolean ShHealOper_Sewing::getWires(const TopoDS_Shape& theSewShape) const -{ - if(theSewShape.ShapeType() != TopAbs_COMPOUND) - return Standard_False; - - Handle(TopTools_HSequenceOfShape) aSeqEdges = new TopTools_HSequenceOfShape; - TopExp_Explorer aexpEdges(theSewShape,TopAbs_EDGE,TopAbs_WIRE); - for ( ; aexpEdges.More(); aexpEdges.Next()) { - aSeqEdges->Append(aexpEdges.Current()); - } - if(aSeqEdges->Length() <2) - return Standard_False; - //get manifold wires from sewed edges. - Standard_Real aTol = 0.; - Standard_Boolean aShared = Standard_True; - Handle(TopTools_HSequenceOfShape) aTmpWires = new TopTools_HSequenceOfShape; - ShapeAnalysis_FreeBounds::ConnectEdgesToWires(aSeqEdges, aTol, aShared, aTmpWires); - - TopTools_MapOfShape aMapEdges; - Standard_Integer i =1; - for( ; i <= aSeqEdges->Length(); i++) - aMapEdges.Add(aSeqEdges->Value(i)); - - //remove free edges from result shape. - TopoDS_Compound aNewComp; - deleteFreeEdges(theSewShape,aMapEdges,aNewComp); - - //add new wires in the result shape. - BRep_Builder aB; - for( i =1; i <= aTmpWires->Length(); i++) { - TopoDS_Iterator aite(aTmpWires->Value(i)); - Standard_Integer nbe =0; - TopoDS_Shape aE; - for( ; aite.More() && nbe < 3; aite.Next(),nbe++) - aE = aite.Value(); - if(!nbe) - continue; - else if(nbe ==1) - aB.Add(aNewComp,aE); - else - aB.Add(aNewComp,aTmpWires->Value(i)); - } - - myContext->Replace(theSewShape,aNewComp); - return Standard_True; -} -//======================================================================= -//function : getHistory -//purpose : -//======================================================================= - -Standard_Boolean ShHealOper_Sewing::getModifications(const TopoDS_Shape& theShape, - const Handle(BRepBuilderAPI_Sewing)& theSewing) const -{ - if((Standard_Integer)theShape.ShapeType() > (Standard_Integer)myHistoryLevel) - return Standard_False; - - Standard_Boolean isDone = theSewing->IsModifiedSubShape(theShape); - if(isDone) { - TopoDS_Shape aNewShape = theSewing->ModifiedSubShape(theShape); - myContext->Replace(theShape,aNewShape); - } - TopoDS_Iterator aIt(theShape); - for( ; aIt.More(); aIt.Next()) { - isDone = (getModifications( aIt.Value(),theSewing) || isDone); - } - return isDone; - -} -//======================================================================= -//function : isSewed -//purpose : -//======================================================================= - -Standard_Boolean ShHealOper_Sewing::isSewed(const TopoDS_Shape& theShape) const -{ - Standard_Integer nbNewShells =0; - Standard_Integer nbOldShells =0; - TopExp_Explorer aExpShells(theShape,TopAbs_SHELL); - for( ; aExpShells.More(); aExpShells.Next()) - nbNewShells++; - for( aExpShells.Init(myInitShape,TopAbs_SHELL); aExpShells.More(); aExpShells.Next()) - nbOldShells++; - return (nbNewShells != nbOldShells); -} -//======================================================================= -//function : deleteFreeEdges -//purpose : -//======================================================================= - -void ShHealOper_Sewing::deleteFreeEdges(const TopoDS_Shape& theSewShape, - TopTools_MapOfShape& theMapEdges, - TopoDS_Compound& theNewComp) const -{ - - BRep_Builder aB; - aB.MakeCompound(theNewComp); - TopoDS_Iterator aIt(theSewShape); - - for( ; aIt.More(); aIt.Next()) { - if((aIt.Value().ShapeType() == TopAbs_EDGE ) && theMapEdges.Contains(aIt.Value())) - continue; - else if(aIt.Value().ShapeType() == TopAbs_COMPOUND) { - TopoDS_Compound aC; - deleteFreeEdges(aIt.Value(),theMapEdges,aC); - aB.Add(theNewComp,aC); - } - else - aB.Add(theNewComp,aIt.Value()); - } -} diff --git a/src/ShHealOper/ShHealOper_Sewing.hxx b/src/ShHealOper/ShHealOper_Sewing.hxx deleted file mode 100644 index 8872e294d..000000000 --- a/src/ShHealOper/ShHealOper_Sewing.hxx +++ /dev/null @@ -1,152 +0,0 @@ -// File: ShHealOper_Sewing.hxx -// Created: 29.04.04 13:29:10 -// Author: Galina KULIKOVA -// < MODULE = KERNEL> : -// Copyright (C) 2003 CEA -// -// 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. -// - -// 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 -// - - -#ifndef ShHealOper_Sewing_HeaderFile -#define ShHealOper_Sewing_HeaderFile - -#include -#include -#include -#include -#include -#include -#include -#include - -/// Class ShHealOper_Sewing -//Intended for sewing of shapes. - -class ShHealOper_Sewing : public ShHealOper_Tool -{ - public: - // ---------- PUBLIC METHODS ---------- - - - Standard_EXPORT ShHealOper_Sewing () : ShHealOper_Tool() {} - // Empty constructor - - Standard_EXPORT ShHealOper_Sewing (const TopoDS_Shape& theShape, - const Standard_Real theTolerance); - //Constructor for initalization by shape and tolerance. - - Standard_EXPORT virtual void Init(const TopoDS_Shape& theShape); - //Method for initalization by whole shape. - - Standard_EXPORT Standard_Boolean Perform(); - //Performs sewing specified whole shape. - - Standard_EXPORT Standard_Boolean Perform(const TopTools_SequenceOfShape& theSeqShapes); - //Performs local sewing specified sub-shapes from whole shape. - - inline void SetFacesMode(const Standard_Boolean theFacesMode ) - { - myFacesMode = theFacesMode; - } - //Set mode for sewing faces.(by default true) - - inline Standard_Boolean GetFacesMode( ) - { - return myFacesMode; - } - //Get mode for sewing of faces. - - inline void SetFloatingEdgesMode(const Standard_Boolean theEdgesMode ) - { - myEdgesMode = theEdgesMode; - } - //Set mode for sewing floating edges.(by default false) - - inline Standard_Boolean GetFloatingEdgesMode( ) - { - return myEdgesMode; - } - //Get mode for sewing of floating edges. - - inline void SetNonManifoldMode(const Standard_Boolean theNonManifoldMode ) - { - myNonManifoldMode = theNonManifoldMode; - } - //Set NonManifoldMode mode for sewing (by default false) - - inline Standard_Boolean GetNonManifoldMode( ) - { - return myNonManifoldMode; - } - //Get NonManifoldMode mode for sewing. - - inline void SetTolerance(const Standard_Real theToler) - { - myTolerance = theToler; - } - //set tolerance for sewing. - - inline Standard_Real GetTolerance() - { - return myTolerance; - } - //get tolerance set for sewing. - - inline void SetHistoryLevel(TopAbs_ShapeEnum theHistLevel) - { - myHistoryLevel =theHistLevel; - } - //set shape level (default TopAbs_FACE) for keeping modifications of the shapes. - - inline TopAbs_ShapeEnum GetHistoryLevel() - { - return myHistoryLevel; - } - //get specified shape level for keeping history. - - private: - // ---------- PRIVATE METHODS ---------- - - Standard_Boolean sewing(const TopTools_SequenceOfShape& theSeqShapes); - Standard_Boolean getShells(const TopoDS_Shape& theSewShape) const; - Standard_Boolean getWires(const TopoDS_Shape& theSewShape) const; - Standard_Boolean getModifications(const TopoDS_Shape& theShape, - const Handle(BRepBuilderAPI_Sewing)& theSewing) const; - - Standard_Boolean isSewed(const TopoDS_Shape& theShape) const; - - void deleteFreeEdges(const TopoDS_Shape& theSewShape, - TopTools_MapOfShape& theMapEdges, - TopoDS_Compound& theNewComp) const; - private: - // ---------- PRIVATE FIELDS ---------- - - Standard_Boolean myNonManifoldMode; - Standard_Boolean myEdgesMode; - Standard_Boolean myFacesMode; - Standard_Real myTolerance; - TopAbs_ShapeEnum myHistoryLevel; - public: -// Declaration of CASCADE RTTI -//DEFINE_STANDARD_RTTI (ShHealOper_Sewing) -}; - -// Definition of HANDLE object using Standard_DefineHandle.hxx -//DEFINE_STANDARD_HANDLE (ShHealOper_Sewing, ) - - -#endif diff --git a/src/ShHealOper/ShHealOper_ShapeProcess.cxx b/src/ShHealOper/ShHealOper_ShapeProcess.cxx deleted file mode 100644 index 061d8811e..000000000 --- a/src/ShHealOper/ShHealOper_ShapeProcess.cxx +++ /dev/null @@ -1,180 +0,0 @@ -// File: ShHealOper_ShapeProcess.cxx -// Created: 14.04.04 10:58:04 -// Author: Galina KULIKOVA -// < MODULE = KERNEL> : -// Copyright (C) 2003 CEA -// -// 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. -// - -// 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 -// - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//======================================================================= -//function : ShHealOper_ShapeProcess() -//purpose : Constructor -//======================================================================= - -ShHealOper_ShapeProcess::ShHealOper_ShapeProcess ( ) : - myOperations(TCollection_AsciiString("ShHealing").ToCString(), - TCollection_AsciiString("ShapeProcess").ToCString()) -{ - //myResource = new Resource_Manager("ShHealing"); - myPrefix = "ShapeProcess"; - mySaveHistoryMode = Standard_False; - myLevel = TopAbs_FACE; - myDone = Standard_False; -} - -//======================================================================= -//function : ShHealOper_ShapeProcess -//purpose : -//======================================================================= - -ShHealOper_ShapeProcess::ShHealOper_ShapeProcess (const TCollection_AsciiString& theNameResource, - const TCollection_AsciiString& thePrefix ) : - myOperations(theNameResource.ToCString(),thePrefix.ToCString()) -{ - //myResource = new Resource_Manager(theNameResource); - myPrefix = thePrefix; - mySaveHistoryMode = Standard_False; - myLevel = TopAbs_FACE; - myDone = Standard_False; -} - -//======================================================================= -//function : Perform -//purpose : -//======================================================================= -void ShHealOper_ShapeProcess::Perform(const TopoDS_Shape& theOldShape, - TopoDS_Shape& theNewShape) -{ - - myMapModifications.Clear(); - //ShapeProcessAPI_ApplySequence aOperations(myResource,myPrefix.ToCString()); - //myDone = Standard_False; - myOperations.ClearMap(); - ShapeAnalysis_ShapeTolerance aSatol; - Standard_Real ainitTol = aSatol.Tolerance(theOldShape,0); - - // PAL6487: san -- preserve the original shape from being modified - TopoDS_Shape anOldShape; - TColStd_IndexedDataMapOfTransientTransient aMap; - TNaming_CopyShape::CopyTool(theOldShape, aMap, anOldShape); - // PAL6487: san -- preserve the original shape from being modified - - theNewShape = myOperations.PrepareShape(anOldShape,mySaveHistoryMode,myLevel); - if(mySaveHistoryMode) - myMapModifications = myOperations.Map(); - myDone = !anOldShape.IsSame(theNewShape); - if(!myDone) { - Standard_Real aendTol =aSatol.Tolerance(theNewShape,0); - myDone = (fabs(ainitTol - aendTol) > Precision::Confusion()); - } -} -//======================================================================= -//function : SetOperators -//purpose : -//======================================================================= - -void ShHealOper_ShapeProcess::SetOperators(const TColStd_SequenceOfAsciiString& theSeqOperators) -{ - - TCollection_AsciiString anameParam(myPrefix); - anameParam += "."; - anameParam += "exec.op"; - TCollection_AsciiString aseq; - Standard_Integer i =1; - for( ; i <= theSeqOperators.Length(); i++) { - aseq += theSeqOperators.Value(i); - aseq += " "; - } - - myOperations.Context()->ResourceManager()->SetResource(anameParam.ToCString(),aseq.ToCString()); -} -//======================================================================= -//function : SetParameter -//purpose : -//======================================================================= - -void ShHealOper_ShapeProcess::SetParameter(const TCollection_AsciiString& theNameParam, - const TCollection_AsciiString& theVal) -{ - TCollection_AsciiString anameParam(myPrefix); - anameParam += "."; - anameParam+= theNameParam; - if(theVal.IsIntegerValue()) - myOperations.Context()->ResourceManager()-> - SetResource(anameParam.ToCString(),theVal.IntegerValue()); - else if(theVal.IsRealValue()) - myOperations.Context()->ResourceManager()-> - SetResource(anameParam.ToCString(),theVal.RealValue()); - else - myOperations.Context()->ResourceManager()-> - SetResource(anameParam.ToCString(),theVal.ToCString()); - -} -//======================================================================= -//function : GetOperators -//purpose : -//======================================================================= - -Standard_Boolean ShHealOper_ShapeProcess::GetOperators(TColStd_SequenceOfAsciiString& theSeqOperators) -{ - TCollection_AsciiString nameSeq(myPrefix); - nameSeq +=".exec.op"; - if(!myOperations.Context()->ResourceManager()->Find(nameSeq.ToCString())) - return Standard_False; - - TCollection_AsciiString seqoper = myOperations.Context()->ResourceManager()->Value(nameSeq.ToCString()); - Standard_Integer i; - for ( i=1; ; i++ ) { - TCollection_AsciiString anOper = seqoper.Token ( " \t,;", i ); - if ( anOper.Length() <=0 ) break; - theSeqOperators.Append(anOper); - } - return (theSeqOperators.Length()); -} -//======================================================================= -//function : GetParameter -//purpose : -//======================================================================= - -Standard_Boolean ShHealOper_ShapeProcess::GetParameter(const TCollection_AsciiString& theNameParam, - TCollection_AsciiString& theVal) -{ - TCollection_AsciiString namePar(myPrefix); - namePar += "."; - namePar += theNameParam; - if(!myOperations.Context()->ResourceManager()->Find(namePar.ToCString())) - return Standard_False; - - theVal = myOperations.Context()->ResourceManager()->Value(namePar.ToCString()); - return Standard_True; -} diff --git a/src/ShHealOper/ShHealOper_ShapeProcess.hxx b/src/ShHealOper/ShHealOper_ShapeProcess.hxx deleted file mode 100644 index 62f2c3abb..000000000 --- a/src/ShHealOper/ShHealOper_ShapeProcess.hxx +++ /dev/null @@ -1,131 +0,0 @@ -// File: ShHealOper_ShapeProcess.hxx -// Created: 13.04.04 11:45:20 -// Author: Galina KULIKOVA -// < MODULE = KERNEL> : -// Copyright (C) 2003 CEA -// -// 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. -// - -// 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 -// - - -#ifndef ShHealOper_ShapeProcess_HeaderFile -#define ShHealOper_ShapeProcess_HeaderFile - -#include -#include -#include -#include -#include -#include -#include - -/// Class ShHealOper_ShapeProcess -//Class for performing Shape healing operations on the shape. - -class ShHealOper_ShapeProcess -{ - public: - // ---------- PUBLIC METHODS ---------- - - /// Empty constructor - Standard_EXPORT ShHealOper_ShapeProcess(); - //Constuctor initializes by defaults parameters - // (name of resource file - ShHealing, prefix - ShapeProcess, - // SaveHistory = Standard_False, level = TopAbs_FACE) - - /// Copy constructor - Standard_EXPORT ShHealOper_ShapeProcess - (const TCollection_AsciiString& theNameResource, - const TCollection_AsciiString& thePrefix = "ShapeProcess"); - //Constuctor initializes by specified name of resource file and prefix - - Standard_EXPORT void Perform(const TopoDS_Shape& theOldShape, - TopoDS_Shape& theNewShape); - //Perform modifications of specified shape. - - Standard_EXPORT void SetOperators(const TColStd_SequenceOfAsciiString& theSeqOperators); - //Set sequence of operatotrs different than sequence written in the resourse file. - - Standard_EXPORT Standard_Boolean GetOperators(TColStd_SequenceOfAsciiString& theSeqOperators); - //Get sequence of operators. - - Standard_EXPORT void SetParameter(const TCollection_AsciiString& theNameParam, - const TCollection_AsciiString& theVal); - //Set value of specified parameter different than value written in the resourse file. - - Standard_EXPORT Standard_Boolean GetParameter(const TCollection_AsciiString& theNameParam, - TCollection_AsciiString& theVal); - //Get value of parameter by it's name. - - inline void SetSaveHistoryMode(const Standard_Boolean theSaveHistory, - TopAbs_ShapeEnum theuntil = TopAbs_FACE) - { - mySaveHistoryMode = theSaveHistory; - myLevel = theuntil; - } - //Set SaveHistoryMode nnd level of the shapes until history will be saved to the - //specified values. - - - inline Standard_Boolean GetSaveHistoryMode() - { - return mySaveHistoryMode; - } - //Returns SaveHistoryMode. - - inline Standard_Boolean GetModifiedShape(const TopoDS_Shape& theOldShape, - TopoDS_Shape& theNewShape) - { - Standard_Boolean isModif = (!myMapModifications.IsEmpty() && - myMapModifications.IsBound(theOldShape)); - if(isModif) - theNewShape = myMapModifications.Find(theOldShape); - else - theNewShape = theOldShape; - return isModif; - } - //Get modified shape for any specified shape - - inline Standard_Boolean isDone() - { - return myDone; - } - //returns status of operation. - protected: - // ---------- PROTECTED METHODS ---------- - - - - private: - // ---------- PRIVATE FIELDS ---------- - - //Handle(Resource_Manager) myResource; - ShapeProcessAPI_ApplySequence myOperations; - TCollection_AsciiString myPrefix; - TopTools_DataMapOfShapeShape myMapModifications; - Standard_Boolean mySaveHistoryMode; - TopAbs_ShapeEnum myLevel; - Standard_Boolean myDone; - public: -// Declaration of CASCADE RTTI -//DEFINE_STANDARD_RTTI (ShHealOper_ShapeProcess) -}; - -// Definition of HANDLE object using Standard_DefineHandle.hxx -//DEFINE_STANDARD_HANDLE (ShHealOper_ShapeProcess, ) - - -#endif diff --git a/src/ShHealOper/ShHealOper_SpiltCurve2d.hxx b/src/ShHealOper/ShHealOper_SpiltCurve2d.hxx deleted file mode 100644 index e7cd704a1..000000000 --- a/src/ShHealOper/ShHealOper_SpiltCurve2d.hxx +++ /dev/null @@ -1,66 +0,0 @@ -// File: ShHealOper_SplitCurve2d.hxx -// Created: 05.05.04 12:56:01 -// Author: Galina KULIKOVA -// < MODULE = KERNEL> : -// Copyright (C) 2003 CEA -// -// 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. -// - -// 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 -// - - -#ifndef ShHealOper_SplitCurve2d_HeaderFile -#define ShHealOper_SplitCurve2d_HeaderFile - -#include -#include - -/// Class ShHealOper_SplitCurve2d -//Auxiliary class for class ShHealOper_EdgeDivide - -class ShHealOper_SplitCurve2d : public ShapeUpgrade_SplitCurve2d -{ - public: - // ---------- PUBLIC METHODS ---------- - - - Standard_EXPORT ShHealOper_SplitCurve2d () : ShapeUpgrade_SplitCurve2d {} - // Empty constructor - - Standard_EXPORT virtual void Compute(); - - inline void SetValues(const Handle(TColStd_HSequenceOfReal)& theValues) - { - myValues = theValues; - } - - - - private: - // ---------- PRIVATE FIELDS ---------- - - Handle(TColStd_HSequenceOfReal) myValues; - - - public: -// Declaration of CASCADE RTTI -DEFINE_STANDARD_RTTI (ShHealOper_SplitCurve2d) -}; - -// Definition of HANDLE object using Standard_DefineHandle.hxx -DEFINE_STANDARD_HANDLE (ShHealOper_SplitCurve2d,ShapeUpgrade_SplitCurve2d ) - - -#endif diff --git a/src/ShHealOper/ShHealOper_SplitCurve2d.cxx b/src/ShHealOper/ShHealOper_SplitCurve2d.cxx deleted file mode 100644 index 2cc261fa2..000000000 --- a/src/ShHealOper/ShHealOper_SplitCurve2d.cxx +++ /dev/null @@ -1,47 +0,0 @@ -// File: ShHealOper_SplitCurve2d.cxx -// Created: 05.05.04 13:03:10 -// Author: Galina KULIKOVA -// < MODULE = KERNEL> : -// Copyright (C) 2003 CEA -// -// 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. -// - -// 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 -// - - -#include -#include -#include - -IMPLEMENT_STANDARD_HANDLE (ShHealOper_SplitCurve2d,ShapeUpgrade_SplitCurve2d) -IMPLEMENT_STANDARD_RTTIEXT(ShHealOper_SplitCurve2d,ShapeUpgrade_SplitCurve2d) - -//======================================================================= -//function : Compute -//purpose : -//======================================================================= - -void ShHealOper_SplitCurve2d::Compute() -{ - if(myValues.IsNull()) - myStatus = ShapeExtend::EncodeStatus (ShapeExtend_FAIL); - else { - SetSplitValues(myValues); - myStatus = ShapeExtend::EncodeStatus (ShapeExtend_DONE1); - } -} - - - diff --git a/src/ShHealOper/ShHealOper_SplitCurve2d.hxx b/src/ShHealOper/ShHealOper_SplitCurve2d.hxx deleted file mode 100644 index ca1f7aa35..000000000 --- a/src/ShHealOper/ShHealOper_SplitCurve2d.hxx +++ /dev/null @@ -1,66 +0,0 @@ -// File: ShHealOper_SplitCurve2d.hxx -// Created: 05.05.04 12:56:01 -// Author: Galina KULIKOVA -// < MODULE = KERNEL> : -// Copyright (C) 2003 CEA -// -// 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. -// - -// 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 -// - - -#ifndef ShHealOper_SplitCurve2d_HeaderFile -#define ShHealOper_SplitCurve2d_HeaderFile - -#include -#include -#include -/// Class ShHealOper_SplitCurve2d -//Auxiliary class for class ShHealOper_EdgeDivide - -class ShHealOper_SplitCurve2d : public ShapeUpgrade_SplitCurve2d -{ - public: - // ---------- PUBLIC METHODS ---------- - - - Standard_EXPORT ShHealOper_SplitCurve2d () : ShapeUpgrade_SplitCurve2d() {} - // Empty constructor - - Standard_EXPORT virtual void Compute(); - - inline void SetValues(const Handle(TColStd_HSequenceOfReal)& theValues) - { - myValues = theValues; - } - - - - private: - // ---------- PRIVATE FIELDS ---------- - - Handle(TColStd_HSequenceOfReal) myValues; - - - public: -// Declaration of CASCADE RTTI -DEFINE_STANDARD_RTTI (ShHealOper_SplitCurve2d) -}; - -// Definition of HANDLE object using Standard_DefineHandle.hxx -DEFINE_STANDARD_HANDLE (ShHealOper_SplitCurve2d,ShapeUpgrade_SplitCurve2d ) - - -#endif diff --git a/src/ShHealOper/ShHealOper_SplitCurve3d.cxx b/src/ShHealOper/ShHealOper_SplitCurve3d.cxx deleted file mode 100644 index 67405daea..000000000 --- a/src/ShHealOper/ShHealOper_SplitCurve3d.cxx +++ /dev/null @@ -1,46 +0,0 @@ -// File: ShHealOper_SplitCurve3d.cxx -// Created: 05.05.04 12:48:36 -// Author: Galina KULIKOVA -// < MODULE = KERNEL> : -// Copyright (C) 2003 CEA -// -// 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. -// - -// 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 -// - - -#include -#include -#include - -IMPLEMENT_STANDARD_HANDLE (ShHealOper_SplitCurve3d,ShapeUpgrade_SplitCurve3d) -IMPLEMENT_STANDARD_RTTIEXT(ShHealOper_SplitCurve3d,ShapeUpgrade_SplitCurve3d) - -//======================================================================= -//function : Compute -//purpose : -//======================================================================= - -void ShHealOper_SplitCurve3d::Compute() -{ - if(myValues.IsNull()) - myStatus = ShapeExtend::EncodeStatus (ShapeExtend_FAIL); - else { - SetSplitValues(myValues); - myStatus = ShapeExtend::EncodeStatus (ShapeExtend_DONE1); - } -} - - diff --git a/src/ShHealOper/ShHealOper_SplitCurve3d.hxx b/src/ShHealOper/ShHealOper_SplitCurve3d.hxx deleted file mode 100644 index 97feb74f8..000000000 --- a/src/ShHealOper/ShHealOper_SplitCurve3d.hxx +++ /dev/null @@ -1,66 +0,0 @@ -// File: ShHealOper_SplitCurve3d.hxx -// Created: 05.05.04 12:28:13 -// Author: Galina KULIKOVA -// < MODULE = KERNEL> : -// Copyright (C) 2003 CEA -// -// 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. -// - -// 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 -// - - -#ifndef ShHealOper_SplitCurve3d_HeaderFile -#define ShHealOper_SplitCurve3d_HeaderFile - -#include -#include -#include - -/// Class ShHealOper_SplitCurve3d -//Auxiliary class for class ShHealOper_EdgeDivide - -class ShHealOper_SplitCurve3d : public ShapeUpgrade_SplitCurve3d -{ - public: - // ---------- PUBLIC METHODS ---------- - - - Standard_EXPORT ShHealOper_SplitCurve3d () : ShapeUpgrade_SplitCurve3d() {} - // Empty constructor - - Standard_EXPORT virtual void Compute(); - - inline void SetValues(const Handle(TColStd_HSequenceOfReal)& theValues) - { - myValues = theValues; - } - - - private: - // ---------- PRIVATE FIELDS ---------- - Handle(TColStd_HSequenceOfReal) myValues; - - - - public: -// Declaration of CASCADE RTTI -DEFINE_STANDARD_RTTI (ShHealOper_SplitCurve3d) -}; - -// Definition of HANDLE object using Standard_DefineHandle.hxx -DEFINE_STANDARD_HANDLE (ShHealOper_SplitCurve3d,ShapeUpgrade_SplitCurve3d) - - -#endif diff --git a/src/ShHealOper/ShHealOper_Tool.cxx b/src/ShHealOper/ShHealOper_Tool.cxx deleted file mode 100644 index dd3164d73..000000000 --- a/src/ShHealOper/ShHealOper_Tool.cxx +++ /dev/null @@ -1,60 +0,0 @@ -// File: ShHealOper_Tool.cxx -// Created: 26.04.04 12:11:33 -// Author: Galina KULIKOVA -// < MODULE = KERNEL> : -// Copyright (C) 2003 CEA -// -// 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. -// - -// 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 -// - - - -#include - -//======================================================================= -//function : ShHealOper_Tool() -//purpose : Constructor -//======================================================================= - -ShHealOper_Tool::ShHealOper_Tool ( ) -{ - myContext = new ShapeBuild_ReShape; - myDone = Standard_False; - myErrorStatus =ShHealOper_NotError; -} -//======================================================================= -//function : ShHealOper_Tool -//purpose : -//======================================================================= - -ShHealOper_Tool::ShHealOper_Tool ( const TopoDS_Shape& theShape ) -{ - - myContext = new ShapeBuild_ReShape; - Init(theShape); -} -//======================================================================= -//function : Init -//purpose : -//======================================================================= - -void ShHealOper_Tool::Init(const TopoDS_Shape& theShape) -{ - myDone = Standard_False; - myErrorStatus =ShHealOper_NotError; - myInitShape = theShape; - myContext->Apply(myInitShape); -} diff --git a/src/ShHealOper/ShHealOper_Tool.hxx b/src/ShHealOper/ShHealOper_Tool.hxx deleted file mode 100644 index 7ec0febed..000000000 --- a/src/ShHealOper/ShHealOper_Tool.hxx +++ /dev/null @@ -1,108 +0,0 @@ -// File: ShHealOper_Tool.hxx -// Created: 26.04.04 11:36:04 -// Author: Galina KULIKOVA -// < MODULE = KERNEL> : -// Copyright (C) 2003 CEA -// -// 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. -// - -// 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 -// - - -#ifndef ShHealOper_Tool_HeaderFile -#define ShHealOper_Tool_HeaderFile - -#include -#include -#include - -/// Class ShHealOper_Tool -// -//enumeration for definition of the status of the error if operation failed -enum ShHealOper_Error { - ShHealOper_NotError, - ShHealOper_InvalidParameters, - ShHealOper_ErrorExecution -}; - -class ShHealOper_Tool -{ - public: - // ---------- PUBLIC METHODS ---------- - - /// Empty constructor - Standard_EXPORT ShHealOper_Tool () ; - - Standard_EXPORT ShHealOper_Tool (const TopoDS_Shape& theShape); - // Constructor initialized by shape from which faces will be removed. - - Standard_EXPORT virtual void Init(const TopoDS_Shape& theShape); - //Method for initalization by whole shape. - - inline const TopoDS_Shape& GetResultShape() const - { - return myResultShape; - - } - //Returns result shape. - - inline Standard_Boolean GetModifiedShape(const TopoDS_Shape& theOldShape, - TopoDS_Shape& theNewShape) const - { - theNewShape = myContext->Apply(theOldShape); - return (!theNewShape.IsSame(theOldShape)); - } - //Returns modified shape obtained after operation from initial shape. - - inline Standard_Boolean IsDone() const - { - return myDone; - } - //Returns status of the operation. - - inline void SetContext(Handle(ShapeBuild_ReShape)& theContext) - { - myContext = theContext; - } - //Initialization by context keeping modification of sub-shapes. - - inline Handle(ShapeBuild_ReShape) Context() - { - return myContext; - } - //Returns context keeping modification of sub-shapes - - inline Standard_Integer GetErrorStatus() - { - return myErrorStatus; - } - protected: - // ---------- PROTECTED FIELDS ---------- - - Handle(ShapeBuild_ReShape) myContext; - TopoDS_Shape myInitShape; - TopoDS_Shape myResultShape; - Standard_Boolean myDone; - ShHealOper_Error myErrorStatus; - public: -// Declaration of CASCADE RTTI -//DEFINE_STANDARD_RTTI (ShHealOper_Tool) -}; - -// Definition of HANDLE object using Standard_DefineHandle.hxx -//DEFINE_STANDARD_HANDLE (ShHealOper_Tool, ) - - -#endif diff --git a/src/TransformationGUI/Makefile.in b/src/TransformationGUI/Makefile.in deleted file mode 100644 index 22de12a82..000000000 --- a/src/TransformationGUI/Makefile.in +++ /dev/null @@ -1,74 +0,0 @@ -# GEOM TRANSFORMATIONGUI : -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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. -# -# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Author : Damien COQUERET (OCC) -# Module : GEOM -# $Header: - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -# header files -EXPORT_HEADERS= - -# Libraries targets -LIB = libTransformationGUI.la - -LIB_SRC = TransformationGUI.cxx \ - TransformationGUI_MultiTranslationDlg.cxx \ - TransformationGUI_MultiRotationDlg.cxx \ - TransformationGUI_TranslationDlg.cxx \ - TransformationGUI_RotationDlg.cxx \ - TransformationGUI_MirrorDlg.cxx \ - TransformationGUI_ScaleDlg.cxx \ - TransformationGUI_OffsetDlg.cxx \ - TransformationGUI_PositionDlg.cxx - -LIB_MOC = \ - TransformationGUI_MultiTranslationDlg.h \ - TransformationGUI_MultiRotationDlg.h \ - TransformationGUI_TranslationDlg.h \ - TransformationGUI_RotationDlg.h \ - TransformationGUI_MirrorDlg.h \ - TransformationGUI_ScaleDlg.h \ - TransformationGUI_OffsetDlg.h \ - TransformationGUI_PositionDlg.h - -LIB_CLIENT_IDL = SALOME_GenericObj.idl SALOME_Component.idl SALOME_Exception.idl - -LIB_SERVER_IDL = - -# additionnal information to compil and link file - -CPPFLAGS += $(QT_INCLUDES) $(VTK_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES) $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome -CXXFLAGS += -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome - -LDFLAGS += -lGEOMFiltersSelection -lGEOMBase - -@CONCLUDE@ diff --git a/src/TransformationGUI/TransformationGUI.cxx b/src/TransformationGUI/TransformationGUI.cxx deleted file mode 100644 index 84c79078f..000000000 --- a/src/TransformationGUI/TransformationGUI.cxx +++ /dev/null @@ -1,156 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : TransformationGUI.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header$ - -#include "TransformationGUI.h" -#include "GeometryGUI.h" - -#include "SUIT_Session.h" -#include "SUIT_Desktop.h" - -#include "TransformationGUI_MultiTranslationDlg.h" // Method MULTI TRANSLATION -#include "TransformationGUI_MultiRotationDlg.h" // Method MULTI ROTATION -#include "TransformationGUI_TranslationDlg.h" // Method TRANSLATION -#include "TransformationGUI_RotationDlg.h" // Method ROTATION -#include "TransformationGUI_MirrorDlg.h" // Method MIRROR -#include "TransformationGUI_ScaleDlg.h" // Method SCALE -#include "TransformationGUI_OffsetDlg.h" // Method OFFSET -#include "TransformationGUI_PositionDlg.h" // Method POSITION - -using namespace std; - -TransformationGUI* TransformationGUI::myGUIObject = 0; - -//======================================================================= -// function : GetTransformationGUI() -// purpose : Get the only TransformationGUI object [ static ] -//======================================================================= -TransformationGUI* TransformationGUI::GetTransformationGUI( GeometryGUI* parent ) -{ - if ( myGUIObject == 0 ) { - // init TransformationGUI only once - myGUIObject = new TransformationGUI( parent ); - } - return myGUIObject; -} - -//======================================================================= -// function : TransformationGUI() -// purpose : Constructor -//======================================================================= -TransformationGUI::TransformationGUI(GeometryGUI* parent) : GEOMGUI(parent) -{ -} - - -//======================================================================= -// function : ~TransformationGUI() -// purpose : Destructor -//======================================================================= -TransformationGUI::~TransformationGUI() -{ -} - - -//======================================================================= -// function : OnGUIEvent() -// purpose : -//======================================================================= -bool TransformationGUI::OnGUIEvent(int theCommandID, SUIT_Desktop* parent) -{ - getGeometryGUI()->EmitSignalDeactivateDialog(); - QDialog* aDlg = NULL; - - switch (theCommandID) - { - case 5021: // TRANSLATION - { - aDlg = new TransformationGUI_TranslationDlg( getGeometryGUI(), parent, "" ); - break; - } - case 5022: // ROTATION - { - aDlg = new TransformationGUI_RotationDlg( parent, "" ); - break; - } - case 5023: // POSITION - { - aDlg = new TransformationGUI_PositionDlg( parent, "" ); - break; - } - case 5024: // MIRROR - { - aDlg = new TransformationGUI_MirrorDlg( parent, "" ); - break; - } - case 5025: // SCALE - { - aDlg = new TransformationGUI_ScaleDlg( getGeometryGUI(), parent, "" ); - break; - } - case 5026: // OFFSET - { - aDlg = new TransformationGUI_OffsetDlg( parent, "" ); - break; - } - case 5027: // MULTI TRANSLATION - { - aDlg = new TransformationGUI_MultiTranslationDlg( getGeometryGUI(), parent, "" ); - break; - } - case 5028: // MULTI ROTATION - { - aDlg = new TransformationGUI_MultiRotationDlg( getGeometryGUI(), parent, "" ); - break; - } - default: - { - SUIT_Session::session()->activeApplication()->putInfo(tr("GEOM_PRP_COMMAND").arg(theCommandID)); - break; - } - } - - if ( aDlg != NULL ) - aDlg->show(); - - return true; -} - - -//===================================================================================== -// EXPORTED METHODS -//===================================================================================== -extern "C" -{ -#ifdef WNT - __declspec( dllexport ) -#endif - GEOMGUI* GetLibGUI( GeometryGUI* parent ) - { - return TransformationGUI::GetTransformationGUI( parent ); - } -} diff --git a/src/TransformationGUI/TransformationGUI.h b/src/TransformationGUI/TransformationGUI.h deleted file mode 100644 index 96f48970b..000000000 --- a/src/TransformationGUI/TransformationGUI.h +++ /dev/null @@ -1,56 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : TransformationGUI.h -// Author : Damien COQUERET -// Module : GEOM -// $Header$ - -#ifndef TRANSFORMATIONGUI_H -#define TRANSFORMATIONGUI_H - -#include "GEOMGUI.h" - - -//================================================================================= -// class : TransformationGUI -// purpose : -//================================================================================= -class TransformationGUI : public GEOMGUI -{ -protected: - TransformationGUI( GeometryGUI* parent ); // hide constructor to avoid direct creation - -public : - ~TransformationGUI(); - - // Get the only TransformationGUI object - static TransformationGUI* GetTransformationGUI( GeometryGUI* parent ); - - bool OnGUIEvent(int theCommandID, SUIT_Desktop* parent); - -private: - static TransformationGUI* myGUIObject; // the only TransformationGUI object -}; - -#endif diff --git a/src/TransformationGUI/TransformationGUI_MirrorDlg.cxx b/src/TransformationGUI/TransformationGUI_MirrorDlg.cxx deleted file mode 100644 index d255e8f0b..000000000 --- a/src/TransformationGUI/TransformationGUI_MirrorDlg.cxx +++ /dev/null @@ -1,452 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : TransformationGUI_MirrorDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "TransformationGUI_MirrorDlg.h" - -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include -#include - -#include "GEOMImpl_Types.hxx" - -#include "utilities.h" - -using namespace std; - -//================================================================================= -// class : TransformationGUI_MirrorDlg() -// purpose : Constructs a TransformationGUI_MirrorDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -TransformationGUI_MirrorDlg::TransformationGUI_MirrorDlg(QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_MIRROR_POINT"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_MIRROR_AXE"))); - QPixmap image2(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_MIRROR_PLANE"))); - QPixmap image3(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_MIRROR_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_MIRROR")); - RadioButton1->setPixmap(image0); - RadioButton2->setPixmap(image1); - RadioButton3->setPixmap(image2); - - GroupPoints = new DlgRef_2Sel1Spin2Check(this, "GroupPoints"); - GroupPoints->SpinBox_DX->hide(); - GroupPoints->TextLabel3->hide(); - GroupPoints->CheckButton2->hide(); - GroupPoints->GroupBox1->setTitle(tr("GEOM_ARGUMENTS")); - GroupPoints->TextLabel1->setText(tr("GEOM_OBJECTS")); - GroupPoints->TextLabel2->setText(tr("GEOM_POINT_MIRROR")); - GroupPoints->TextLabel2->setFixedWidth(74); - GroupPoints->PushButton1->setPixmap(image3); - GroupPoints->PushButton2->setPixmap(image3); - GroupPoints->CheckButton1->setText(tr("GEOM_CREATE_COPY")); - Layout1->addWidget(GroupPoints, 2, 0); - - /***************************************************************/ - - Init(); -} - - -//================================================================================= -// function : ~TransformationGUI_MirrorDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -TransformationGUI_MirrorDlg::~TransformationGUI_MirrorDlg() -{ - /* no need to delete child widgets, Qt does it all for us */ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void TransformationGUI_MirrorDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = GroupPoints->LineEdit1; - GroupPoints->LineEdit1->setReadOnly(true); - GroupPoints->LineEdit2->setReadOnly(true); - - myArgument = GEOM::GEOM_Object::_nil(); - - // Activate Create a Copy mode - GroupPoints->CheckButton1->setChecked(true); - CreateCopyModeChanged(true); - - /* signals and slots connections */ - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - connect(GroupConstructors, SIGNAL(clicked(int)), SLOT(ConstructorsClicked(int))); - - connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupPoints->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - - connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(GroupPoints->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect(GroupPoints->CheckButton1, SIGNAL(toggled(bool)), this, SLOT(CreateCopyModeChanged(bool))); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - initName( tr( "GEOM_MIRROR" ) ); - ConstructorsClicked( 0 ); -} - - - -//================================================================================= -// function : ConstructorsClicked() -// purpose : Radio button management -//================================================================================= -void TransformationGUI_MirrorDlg::ConstructorsClicked(int constructorId) -{ - disconnect( ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), 0, this, 0 ); - - globalSelection(); - myEditCurrentArgument = GroupPoints->LineEdit1; - GroupPoints->LineEdit2->clear(); - myArgument = GEOM::GEOM_Object::_nil(); - - switch (constructorId) - { - case 0: /* mirror an object by point */ - { - GroupPoints->TextLabel2->setText(tr("GEOM_POINT_MIRROR")); - break; - } - case 1: /* mirror an object by axe */ - { - GroupPoints->TextLabel2->setText(tr("GEOM_AXE_MIRROR")); - break; - } - case 2: /* mirror an object by plane */ - { - GroupPoints->TextLabel2->setText(tr("GEOM_PLANE_MIRROR")); - break; - } - } - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); -} - - - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void TransformationGUI_MirrorDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool TransformationGUI_MirrorDlg::ClickOnApply() -{ - if ( !onAccept(GroupPoints->CheckButton1->isChecked()) ) - return false; - - initName(); - ConstructorsClicked( getConstructorId() ); - return true; -} - - -//======================================================================= -// function : ClickOnCancel() -// purpose : -//======================================================================= -void TransformationGUI_MirrorDlg::ClickOnCancel() -{ - GEOMBase_Skeleton::ClickOnCancel(); -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection has changed -//================================================================================= -void TransformationGUI_MirrorDlg::SelectionIntoArgument() -{ - myEditCurrentArgument->setText(""); - QString aName; - - if(myEditCurrentArgument == GroupPoints->LineEdit1) - { - int aNbSel = GEOMBase::GetNameOfSelectedIObjects(selectedIO(), aName); - if(aNbSel < 1) - { - myObjects.length(0); - return; - } - GEOMBase::ConvertListOfIOInListOfGO(selectedIO(), myObjects); - if (!myObjects.length()) - return; - if(aNbSel != 1) - aName = tr("%1_objects").arg(aNbSel); - } - else if(myEditCurrentArgument == GroupPoints->LineEdit2) - { - if(IObjectCount() != 1) - { - myArgument = GEOM::GEOM_Object::_nil(); - return; - } - Standard_Boolean testResult = Standard_False; - myArgument = GEOMBase::ConvertIOinGEOMObject(firstIObject(), testResult ); - if(!testResult || CORBA::is_nil( myArgument )) - return; - aName = GEOMBase::GetName( myArgument ); - } - myEditCurrentArgument->setText( aName ); - - displayPreview(); -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void TransformationGUI_MirrorDlg::LineEditReturnPressed() -{ - QLineEdit* send = (QLineEdit*)sender(); - if(send == GroupPoints->LineEdit1 || - send == GroupPoints->LineEdit2) - { - myEditCurrentArgument = send; - GEOMBase_Skeleton::LineEditReturnPressed(); - } -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void TransformationGUI_MirrorDlg::SetEditCurrentArgument() -{ - QPushButton* send = (QPushButton*)sender(); - - if(send == GroupPoints->PushButton1){ - myEditCurrentArgument = GroupPoints->LineEdit1; - globalSelection(); - } - else if(send == GroupPoints->PushButton2) { - myEditCurrentArgument = GroupPoints->LineEdit2; - switch(getConstructorId()) - { - case 0: - { - globalSelection( GEOM_POINT ); - break; - } - case 1: - { - globalSelection( GEOM_LINE ); - break; - } - case 2: - { - globalSelection( GEOM_PLANE ); - break; - } - } - } - - myEditCurrentArgument->setFocus(); - SelectionIntoArgument(); -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void TransformationGUI_MirrorDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - ConstructorsClicked( getConstructorId() ); -} - - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : public slot to deactivate if active -//================================================================================= -void TransformationGUI_MirrorDlg::DeactivateActiveDialog() -{ - GEOMBase_Skeleton::DeactivateActiveDialog(); -} - - -//================================================================================= -// function : enterEvent() -// purpose : when mouse enter onto the QWidget -//================================================================================= -void TransformationGUI_MirrorDlg::enterEvent(QEvent * e) -{ - if(!GroupConstructors->isEnabled()) - ActivateThisDialog(); -} - - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr TransformationGUI_MirrorDlg::createOperation() -{ - return getGeomEngine()->GetITransformOperations( getStudyId() ); -} - - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool TransformationGUI_MirrorDlg::isValid( QString& msg ) -{ - return !(myObjects.length() == 0 || myArgument->_is_nil()); -} - - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool TransformationGUI_MirrorDlg::execute( ObjectList& objects ) -{ - bool res = false; - bool toCreateCopy = IsPreview() || GroupPoints->CheckButton1->isChecked(); - - GEOM::GEOM_Object_var anObj; - - switch ( getConstructorId() ) - { - case 0 : - { - if (toCreateCopy) - for (int i = 0; i < myObjects.length(); i++) - { - anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->MirrorPointCopy( myObjects[i], myArgument ); - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - } - else - for (int i = 0; i < myObjects.length(); i++) - { - anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->MirrorPoint( myObjects[i], myArgument ); - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - } - res = true; - break; - } - case 1 : - { - if (toCreateCopy) - for (int i = 0; i < myObjects.length(); i++) - { - anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->MirrorAxisCopy( myObjects[i], myArgument ); - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - } - else - for (int i = 0; i < myObjects.length(); i++) - { - anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->MirrorAxis( myObjects[i], myArgument ); - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - } - res = true; - break; - } - case 2: - { - if (toCreateCopy) - for (int i = 0; i < myObjects.length(); i++) - { - anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->MirrorPlaneCopy( myObjects[i], myArgument ); - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - } - else - for (int i = 0; i < myObjects.length(); i++) - { - anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->MirrorPlane( myObjects[i], myArgument ); - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - } - res = true; - break; - } - } - - return res; -} - -//================================================================================= -// function : closeEvent -// purpose : -//================================================================================= -void TransformationGUI_MirrorDlg::closeEvent( QCloseEvent* e ) -{ - GEOMBase_Skeleton::closeEvent( e ); -} - - -//================================================================================= -// function : CreateCopyModeChanged() -// purpose : -//================================================================================= -void TransformationGUI_MirrorDlg::CreateCopyModeChanged(bool isCreateCopy) -{ - this->GroupBoxName->setEnabled(isCreateCopy); -} diff --git a/src/TransformationGUI/TransformationGUI_MirrorDlg.h b/src/TransformationGUI/TransformationGUI_MirrorDlg.h deleted file mode 100644 index 150d3edae..000000000 --- a/src/TransformationGUI/TransformationGUI_MirrorDlg.h +++ /dev/null @@ -1,80 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : TransformationGUI_MirrorDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_MIRROR_H -#define DIALOGBOX_MIRROR_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_2Sel1Spin2Check.h" - -#include "TransformationGUI.h" - - -//================================================================================= -// class : TransformationGUI_MirrorDlg -// purpose : -//================================================================================= -class TransformationGUI_MirrorDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - TransformationGUI_MirrorDlg(QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~TransformationGUI_MirrorDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& ); - virtual bool execute( ObjectList& objects ); - - virtual void closeEvent( QCloseEvent* e ); - -private : - void Init(); - void enterEvent(QEvent* e); - - GEOM::GEOM_Object_var myArgument; - GEOM::ListOfGO myObjects; - - DlgRef_2Sel1Spin2Check* GroupPoints; - -private slots : - void ClickOnOk(); - bool ClickOnApply(); - void ClickOnCancel(); - void ActivateThisDialog(); - void DeactivateActiveDialog(); - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - void ConstructorsClicked(int constructorId); - void CreateCopyModeChanged(bool isCreateCopy); -}; - -#endif // DIALOGBOX_MIRROR_H diff --git a/src/TransformationGUI/TransformationGUI_MultiRotationDlg.cxx b/src/TransformationGUI/TransformationGUI_MultiRotationDlg.cxx deleted file mode 100644 index aa5024141..000000000 --- a/src/TransformationGUI/TransformationGUI_MultiRotationDlg.cxx +++ /dev/null @@ -1,483 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : TransformationGUI_MultiRotationDlg.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header$ - -#include "TransformationGUI_MultiRotationDlg.h" - -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include -#include - -#include "GEOMImpl_Types.hxx" - -#include "utilities.h" - -using namespace std; - -//================================================================================= -// class : TransformationGUI_MultiRotationDlg() -// purpose : Constructs a TransformationGUI_MultiRotationDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -TransformationGUI_MultiRotationDlg::TransformationGUI_MultiRotationDlg(GeometryGUI* theGeometryGUI, QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu), myGeometryGUI(theGeometryGUI) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_MULTIROTATION_SIMPLE"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_MULTIROTATION_DOUBLE"))); - QPixmap image2(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_MULTIROTATION_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_MULTIROTATION")); - RadioButton1->setPixmap(image0); - RadioButton2->setPixmap(image1); - RadioButton3->close(TRUE); - - GroupPoints = new DlgRef_2Sel1Spin(this, "GroupPoints"); - GroupPoints->GroupBox1->setTitle(tr("GEOM_MULTIROTATION_SIMPLE")); - GroupPoints->TextLabel1->setText(tr("GEOM_MAIN_OBJECT")); - GroupPoints->TextLabel2->setText(tr("GEOM_VECTOR")); - GroupPoints->TextLabel3->setText(tr("GEOM_NB_TIMES")); - GroupPoints->PushButton1->setPixmap(image2); - GroupPoints->PushButton2->setPixmap(image2); - GroupPoints->LineEdit1->setReadOnly(true); - GroupPoints->LineEdit2->setReadOnly(true); - - GroupDimensions = new DlgRef_2Sel4Spin1Check(this, "GroupDimensions"); - GroupDimensions->GroupBox1->setTitle(tr("GEOM_MULTIROTATION_DOUBLE")); - GroupDimensions->TextLabel1->setText(tr("GEOM_MAIN_OBJECT")); - GroupDimensions->TextLabel2->setText(tr("GEOM_VECTOR")); - GroupDimensions->TextLabel3->setText(tr("GEOM_ANGLE")); - GroupDimensions->TextLabel4->setText(tr("GEOM_NB_TIMES")); - GroupDimensions->TextLabel5->setText(tr("GEOM_STEP")); - GroupDimensions->TextLabel6->setText(tr("GEOM_NB_TIMES")); - GroupDimensions->CheckButton1->setText(tr("GEOM_REVERSE")); - GroupDimensions->PushButton1->setPixmap(image2); - GroupDimensions->PushButton2->setPixmap(image2); - GroupDimensions->LineEdit1->setReadOnly(true); - GroupDimensions->LineEdit2->setReadOnly(true); - - Layout1->addWidget(GroupPoints, 2, 0); - Layout1->addWidget(GroupDimensions, 2, 0); - /***************************************************************/ - - Init(); -} - - -//================================================================================= -// function : ~TransformationGUI_MultiRotationDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -TransformationGUI_MultiRotationDlg::~TransformationGUI_MultiRotationDlg() -{ - // no need to delete child widgets, Qt does it all for us -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void TransformationGUI_MultiRotationDlg::Init() -{ - /* Get setting of step value from file configuration */ - SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); - double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100); - - double SpecificStep1 = 5; - double SpecificStep2 = 1; - /* min, max, step and decimals for spin boxes & initial values */ - GroupPoints->SpinBox_DX->RangeStepAndValidator(1.0, 999.999, SpecificStep2, 3); - GroupPoints->SpinBox_DX->SetValue(myNbTimes1); - - GroupDimensions->SpinBox_DX1->RangeStepAndValidator(-999.999, 999.999, SpecificStep1, 3); - GroupDimensions->SpinBox_DY1->RangeStepAndValidator(1.0, 999.999, SpecificStep2, 3); - GroupDimensions->SpinBox_DX2->RangeStepAndValidator(-999.999, 999.999, step, 3); - GroupDimensions->SpinBox_DY2->RangeStepAndValidator(1.0, 999.999, SpecificStep2, 3); - GroupDimensions->SpinBox_DX1->SetValue(myAng); - GroupDimensions->SpinBox_DY1->SetValue(myNbTimes1); - GroupDimensions->SpinBox_DX2->SetValue(myStep); - GroupDimensions->SpinBox_DY2->SetValue(myNbTimes2); - - /* signals and slots connections */ - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - connect(GroupConstructors, SIGNAL(clicked(int)), this, SLOT(ConstructorsClicked(int))); - - connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupPoints->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupDimensions->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupDimensions->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - - connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(GroupPoints->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(GroupDimensions->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(GroupDimensions->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect(GroupPoints->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - connect(GroupDimensions->SpinBox_DX1, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - connect(GroupDimensions->SpinBox_DY1, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - connect(GroupDimensions->SpinBox_DX2, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - connect(GroupDimensions->SpinBox_DY2, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupPoints->SpinBox_DX, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupDimensions->SpinBox_DX1, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupDimensions->SpinBox_DY1, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupDimensions->SpinBox_DX2, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupDimensions->SpinBox_DY2, SLOT(SetStep(double))); - - connect(GroupDimensions->CheckButton1, SIGNAL(toggled(bool)), this, SLOT(ReverseAngle())); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - initName( tr( "GEOM_MULTIROTATION" ) ); - ConstructorsClicked( 0 ); -} - - -//================================================================================= -// function : ConstructorsClicked() -// purpose : Radio button management -//================================================================================= -void TransformationGUI_MultiRotationDlg::ConstructorsClicked(int constructorId) -{ - disconnect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), 0, this, 0); - - myAng = 45.0; - myStep = 50.0; - myNbTimes1 = myNbTimes2 = 2; - - globalSelection( GEOM_ALLSHAPES ); - - switch (constructorId) - { - case 0: /* Rotate simple */ - { - GroupDimensions->hide(); - resize(0, 0); - GroupPoints->show(); - - myEditCurrentArgument = GroupPoints->LineEdit1; - GroupPoints->LineEdit1->setText(""); - GroupPoints->LineEdit2->setText(""); - - GroupPoints->SpinBox_DX->SetValue(myNbTimes1); - - break; - } - case 1: /* Rotate double */ - { - GroupPoints->hide(); - resize(0, 0); - GroupDimensions->show(); - - myEditCurrentArgument = GroupDimensions->LineEdit1; - GroupDimensions->LineEdit1->setText(""); - GroupDimensions->LineEdit2->setText(""); - - GroupDimensions->SpinBox_DX1->SetValue(myAng); - GroupDimensions->SpinBox_DY1->SetValue(myNbTimes1); - GroupDimensions->SpinBox_DX2->SetValue(myStep); - GroupDimensions->SpinBox_DY2->SetValue(myNbTimes2); - - break; - } - } - - myEditCurrentArgument->setFocus(); - myBase = myVector = GEOM::GEOM_Object::_nil(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void TransformationGUI_MultiRotationDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool TransformationGUI_MultiRotationDlg::ClickOnApply() -{ - if ( !onAccept() ) - return false; - - initName(); - ConstructorsClicked( getConstructorId() ); - return true; -} - - -//======================================================================= -// function : ClickOnCancel() -// purpose : -//======================================================================= -void TransformationGUI_MultiRotationDlg::ClickOnCancel() -{ - GEOMBase_Skeleton::ClickOnCancel(); -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection as changed or other case -//================================================================================= -void TransformationGUI_MultiRotationDlg::SelectionIntoArgument() -{ - myEditCurrentArgument->setText(""); - - if(IObjectCount() != 1) { - if(myEditCurrentArgument == GroupPoints->LineEdit1 || myEditCurrentArgument == GroupDimensions->LineEdit1) - myBase = GEOM::GEOM_Object::_nil(); - else if(myEditCurrentArgument == GroupPoints->LineEdit2 || myEditCurrentArgument == GroupDimensions->LineEdit2) - myVector = GEOM::GEOM_Object::_nil(); - return; - } - - // nbSel == 1 - Standard_Boolean testResult = Standard_False;; - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject(firstIObject(), testResult ); - - if ( !testResult || CORBA::is_nil( aSelectedObject ) || !GEOMBase::IsShape( aSelectedObject ) ) - return; - - - if(myEditCurrentArgument == GroupPoints->LineEdit1 || myEditCurrentArgument == GroupDimensions->LineEdit1) - myBase = aSelectedObject; - else if(myEditCurrentArgument == GroupPoints->LineEdit2 || myEditCurrentArgument == GroupDimensions->LineEdit2) - myVector = aSelectedObject; - - myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) ); - - displayPreview(); -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void TransformationGUI_MultiRotationDlg::SetEditCurrentArgument() -{ - QPushButton* send = (QPushButton*)sender(); - - if(send == GroupPoints->PushButton1) { - myEditCurrentArgument = GroupPoints->LineEdit1; - globalSelection( GEOM_ALLSHAPES ); - } - else if(send == GroupPoints->PushButton2) { - myEditCurrentArgument = GroupPoints->LineEdit2; - globalSelection( GEOM_LINE ); - } - else if(send == GroupDimensions->PushButton1) { - myEditCurrentArgument = GroupDimensions->LineEdit1; - globalSelection( GEOM_ALLSHAPES ); - } - else if(send == GroupDimensions->PushButton2) { - myEditCurrentArgument = GroupDimensions->LineEdit2; - globalSelection( GEOM_LINE ); - } - - myEditCurrentArgument->setFocus(); - SelectionIntoArgument(); -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void TransformationGUI_MultiRotationDlg::LineEditReturnPressed() -{ - QLineEdit* send = (QLineEdit*)sender(); - if(send == GroupPoints->LineEdit1 || send == GroupDimensions->LineEdit1 || - send == GroupPoints->LineEdit2 || send == GroupDimensions->LineEdit2) - { - myEditCurrentArgument = send; - GEOMBase_Skeleton::LineEditReturnPressed(); - } -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void TransformationGUI_MultiRotationDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - ConstructorsClicked( getConstructorId() ); -} - - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : public slot to deactivate if active -//================================================================================= -void TransformationGUI_MultiRotationDlg::DeactivateActiveDialog() -{ - GEOMBase_Skeleton::DeactivateActiveDialog(); -} - - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void TransformationGUI_MultiRotationDlg::enterEvent(QEvent* e) -{ - if(!GroupConstructors->isEnabled()) - ActivateThisDialog(); -} - - -//================================================================================= -// function : ValueChangedInSpinBox() -// purpose : -//================================================================================= -void TransformationGUI_MultiRotationDlg::ValueChangedInSpinBox(double newValue) -{ - QObject* send = (QObject*)sender(); - - if(send == GroupPoints->SpinBox_DX || send == GroupDimensions->SpinBox_DY1) - myNbTimes1 = (int)newValue; - else if(send == GroupDimensions->SpinBox_DX1) - myAng = newValue; - else if(send == GroupDimensions->SpinBox_DX2) - myStep = newValue; - else if(send == GroupDimensions->SpinBox_DY2) - myNbTimes2 = (int)newValue; - - displayPreview(); -} - - -//================================================================================= -// function : ReverseAngle() -// purpose : 'state' not used here -//================================================================================= -void TransformationGUI_MultiRotationDlg::ReverseAngle() -{ - myAng = -myAng; - - int aConstructorId = getConstructorId(); - - if(aConstructorId == 0) - GroupPoints->SpinBox_DX->SetValue(myAng); - else if(aConstructorId == 1) - GroupDimensions->SpinBox_DX1->SetValue(myAng); - - displayPreview(); -} - - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr TransformationGUI_MultiRotationDlg::createOperation() -{ - return myGeometryGUI->GetGeomGen()->GetITransformOperations( getStudyId() ); -} - - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool TransformationGUI_MultiRotationDlg::isValid( QString& msg ) -{ - return !(myBase->_is_nil() || myVector->_is_nil()); -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool TransformationGUI_MultiRotationDlg::execute( ObjectList& objects ) -{ - bool res = false; - - GEOM::GEOM_Object_var anObj; - - switch ( getConstructorId() ) - { - case 0 : - { - if ( !CORBA::is_nil( myBase ) && !CORBA::is_nil( myVector ) ) { - anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->MultiRotate1D( myBase, myVector, myNbTimes1 ); - res = true; - } - break; - } - case 1 : - { - if ( !CORBA::is_nil( myBase ) && !CORBA::is_nil( myVector ) ) - { - anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->MultiRotate2D( myBase, myVector, myAng, myNbTimes1, myStep, myNbTimes2 ); - res = true; - } - break; - } - } - - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - - return res; -} - - -//================================================================================= -// function : closeEvent -// purpose : -//================================================================================= -void TransformationGUI_MultiRotationDlg::closeEvent( QCloseEvent* e ) -{ - // myGeomGUI->SetState( -1 ); - GEOMBase_Skeleton::closeEvent( e ); -} diff --git a/src/TransformationGUI/TransformationGUI_MultiRotationDlg.h b/src/TransformationGUI/TransformationGUI_MultiRotationDlg.h deleted file mode 100644 index c122bc3eb..000000000 --- a/src/TransformationGUI/TransformationGUI_MultiRotationDlg.h +++ /dev/null @@ -1,87 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : TransformationGUI_MultiRotationDlg.h -// Author : Damien COQUERET -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_MULTIROTATION_H -#define DIALOGBOX_MULTIROTATION_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_2Sel4Spin1Check.h" -#include "DlgRef_2Sel1Spin.h" - - -//================================================================================= -// class : TransformationGUI_MultiRotationDlg -// purpose : -//================================================================================= -class TransformationGUI_MultiRotationDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - TransformationGUI_MultiRotationDlg(GeometryGUI* theGeometryGUI, QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~TransformationGUI_MultiRotationDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& ); - virtual bool execute( ObjectList& objects ); - - virtual void closeEvent( QCloseEvent* e ); - -private : - void Init(); - void enterEvent(QEvent* e); - - GeometryGUI* myGeometryGUI; - - GEOM::GEOM_Object_var myBase, myVector; - int myNbTimes1; - int myNbTimes2; - Standard_Real myAng; - Standard_Real myStep; - - DlgRef_2Sel1Spin* GroupPoints; - DlgRef_2Sel4Spin1Check* GroupDimensions; - -private slots: - void ClickOnOk(); - bool ClickOnApply(); - void ClickOnCancel(); - void ActivateThisDialog(); - void DeactivateActiveDialog(); - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - void ReverseAngle(); - void ValueChangedInSpinBox(double newValue); - void ConstructorsClicked(int constructorId); - -}; - -#endif // DIALOGBOX_MULTIROTATION_H diff --git a/src/TransformationGUI/TransformationGUI_MultiTranslationDlg.cxx b/src/TransformationGUI/TransformationGUI_MultiTranslationDlg.cxx deleted file mode 100644 index 61671b818..000000000 --- a/src/TransformationGUI/TransformationGUI_MultiTranslationDlg.cxx +++ /dev/null @@ -1,546 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : TransformationGUI_MultiTranslationDlg.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header$ - -#include "TransformationGUI_MultiTranslationDlg.h" - -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include - -#include "GEOMImpl_Types.hxx" - -#include - -#include "utilities.h" - -using namespace std; - -//================================================================================= -// class : TransformationGUI_MultiTranslationDlg() -// purpose : Constructs a TransformationGUI_MultiTranslationDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -TransformationGUI_MultiTranslationDlg::TransformationGUI_MultiTranslationDlg(GeometryGUI* theGeometryGUI, QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu), myGeometryGUI(theGeometryGUI) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM",tr("ICON_DLG_MULTITRANSLATION_SIMPLE"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM",tr("ICON_DLG_MULTITRANSLATION_DOUBLE"))); - QPixmap image2(SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_MULTITRANSLATION_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_MULTITRANSLATION")); - RadioButton1->setPixmap(image0); - RadioButton2->setPixmap(image1); - RadioButton3->close(TRUE); - - GroupPoints = new DlgRef_2Sel2Spin1Check(this, "GroupPoints"); - GroupPoints->GroupBox1->setTitle(tr("GEOM_MULTITRANSLATION_SIMPLE")); - GroupPoints->TextLabel1->setText(tr("GEOM_MAIN_OBJECT")); - GroupPoints->TextLabel2->setText(tr("GEOM_VECTOR_U")); - GroupPoints->TextLabel3->setText(tr("GEOM_STEP_U")); - GroupPoints->TextLabel4->setText(tr("GEOM_NB_TIMES_U")); - GroupPoints->CheckButton1->setText(tr("GEOM_REVERSE_U")); - GroupPoints->PushButton1->setPixmap(image2); - GroupPoints->PushButton2->setPixmap(image2); - GroupPoints->LineEdit1->setReadOnly(true); - GroupPoints->LineEdit2->setReadOnly(true); - - GroupDimensions = new DlgRef_3Sel4Spin2Check(this, "GroupDimensions"); - GroupDimensions->GroupBox1->setTitle(tr("GEOM_MULTITRANSLATION_DOUBLE")); - GroupDimensions->TextLabel1->setText(tr("GEOM_MAIN_OBJECT")); - GroupDimensions->TextLabel2->setText(tr("GEOM_VECTOR_U")); - GroupDimensions->TextLabel3->setText(tr("GEOM_VECTOR_V")); - GroupDimensions->TextLabel4->setText(tr("GEOM_STEP_U")); - GroupDimensions->TextLabel5->setText(tr("GEOM_NB_TIMES_U")); - GroupDimensions->TextLabel6->setText(tr("GEOM_STEP_V")); - GroupDimensions->TextLabel7->setText(tr("GEOM_NB_TIMES_V")); - GroupDimensions->CheckButton1->setText(tr("GEOM_REVERSE_U")); - GroupDimensions->CheckButton2->setText(tr("GEOM_REVERSE_V")); - GroupDimensions->PushButton1->setPixmap(image2); - GroupDimensions->PushButton2->setPixmap(image2); - GroupDimensions->PushButton3->setPixmap(image2); - GroupDimensions->LineEdit1->setReadOnly(true); - GroupDimensions->LineEdit2->setReadOnly(true); - GroupDimensions->LineEdit3->setReadOnly(true); - - Layout1->addWidget(GroupPoints, 2, 0); - Layout1->addWidget(GroupDimensions, 2, 0); - /***************************************************************/ - - Init(); -} - - -//================================================================================= -// function : ~TransformationGUI_MultiTranslationDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -TransformationGUI_MultiTranslationDlg::~TransformationGUI_MultiTranslationDlg() -{ - // no need to delete child widgets, Qt does it all for us -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void TransformationGUI_MultiTranslationDlg::Init() -{ - /* Get setting of step value from file configuration */ - SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); - double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100); - - double SpecificStep = 1; - /* min, max, step and decimals for spin boxes & initial values */ - GroupPoints->SpinBox_DX->RangeStepAndValidator(-999.999, 999.999, step, 3); - GroupPoints->SpinBox_DY->RangeStepAndValidator(1.0, 999.999, SpecificStep, 3); - GroupPoints->SpinBox_DX->SetValue(myStepU); - GroupPoints->SpinBox_DY->SetValue(myNbTimesU); - - GroupDimensions->SpinBox_DX1->RangeStepAndValidator(-999.999, 999.999, step, 3); - GroupDimensions->SpinBox_DY1->RangeStepAndValidator(1.0, 999.999, SpecificStep, 3); - GroupDimensions->SpinBox_DX2->RangeStepAndValidator(-999.999, 999.999, step, 3); - GroupDimensions->SpinBox_DY2->RangeStepAndValidator(1.0, 999.999, SpecificStep, 3); - GroupDimensions->SpinBox_DX1->SetValue(myStepU); - GroupDimensions->SpinBox_DY1->SetValue(myNbTimesU); - GroupDimensions->SpinBox_DX2->SetValue(myStepV); - GroupDimensions->SpinBox_DY2->SetValue(myNbTimesV); - - /* signals and slots connections */ - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - connect(GroupConstructors, SIGNAL(clicked(int)), this, SLOT(ConstructorsClicked(int))); - - connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupPoints->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupDimensions->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupDimensions->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupDimensions->PushButton3, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - - connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(GroupPoints->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(GroupDimensions->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(GroupDimensions->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(GroupDimensions->LineEdit3, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect(GroupPoints->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - connect(GroupPoints->SpinBox_DY, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - connect(GroupDimensions->SpinBox_DX1, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - connect(GroupDimensions->SpinBox_DY1, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - connect(GroupDimensions->SpinBox_DX2, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - connect(GroupDimensions->SpinBox_DY2, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); - - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupPoints->SpinBox_DX, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupPoints->SpinBox_DY, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupDimensions->SpinBox_DX1, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupDimensions->SpinBox_DY1, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupDimensions->SpinBox_DX2, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupDimensions->SpinBox_DY2, SLOT(SetStep(double))); - - connect(GroupPoints->CheckButton1, SIGNAL(toggled(bool)), this, SLOT(ReverseStepU())); - connect(GroupDimensions->CheckButton1, SIGNAL(toggled(bool)), this, SLOT(ReverseStepU())); - connect(GroupDimensions->CheckButton2, SIGNAL(toggled(bool)), this, SLOT(ReverseStepV())); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - - initName( tr( "GEOM_MULTITRANSLATION" ) ); - ConstructorsClicked( 0 ); -} - - -//================================================================================= -// function : ConstructorsClicked() -// purpose : Radio button management -//================================================================================= -void TransformationGUI_MultiTranslationDlg::ConstructorsClicked(int constructorId) -{ - disconnect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), 0, this, 0); - - myStepU = myStepV = 50.0; - myNbTimesU = myNbTimesV = 2; - - globalSelection( GEOM_ALLSHAPES ); - - switch (constructorId) - { - case 0: /* Translate simple */ - { - GroupDimensions->hide(); - resize(0, 0); - GroupPoints->show(); - - myEditCurrentArgument = GroupPoints->LineEdit1; - GroupPoints->LineEdit1->setText(""); - GroupPoints->LineEdit2->setText(""); - - GroupPoints->SpinBox_DX->SetValue(myStepU); - GroupPoints->SpinBox_DY->SetValue(myNbTimesU); - - break; - } - case 1: /* Translate double */ - { - GroupPoints->hide(); - resize(0, 0); - GroupDimensions->show(); - - myEditCurrentArgument = GroupDimensions->LineEdit1; - GroupDimensions->LineEdit1->setText(""); - GroupDimensions->LineEdit2->setText(""); - GroupDimensions->LineEdit3->setText(""); - - GroupDimensions->SpinBox_DX1->SetValue(myStepU); - GroupDimensions->SpinBox_DY1->SetValue(myNbTimesU); - GroupDimensions->SpinBox_DX2->SetValue(myStepV); - GroupDimensions->SpinBox_DY2->SetValue(myNbTimesV); - - myVectorV = GEOM::GEOM_Object::_nil(); - break; - } - } - - myEditCurrentArgument->setFocus(); - myBase = myVectorU = GEOM::GEOM_Object::_nil(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void TransformationGUI_MultiTranslationDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool TransformationGUI_MultiTranslationDlg::ClickOnApply() -{ - if ( !onAccept() ) - return false; - - initName(); - ConstructorsClicked( getConstructorId() ); - return true; -} - - -//======================================================================= -// function : ClickOnCancel() -// purpose : -//======================================================================= -void TransformationGUI_MultiTranslationDlg::ClickOnCancel() -{ - GEOMBase_Skeleton::ClickOnCancel(); -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection as changed or other case -//================================================================================= -void TransformationGUI_MultiTranslationDlg::SelectionIntoArgument() -{ - myEditCurrentArgument->setText(""); - - if(IObjectCount() != 1) { - if(myEditCurrentArgument == GroupPoints->LineEdit1 || myEditCurrentArgument == GroupDimensions->LineEdit1) - myBase = GEOM::GEOM_Object::_nil(); - else if(myEditCurrentArgument == GroupPoints->LineEdit2 || myEditCurrentArgument == GroupDimensions->LineEdit2) - myVectorU = GEOM::GEOM_Object::_nil(); - else if(myEditCurrentArgument == GroupDimensions->LineEdit3) - myVectorV = GEOM::GEOM_Object::_nil(); - return; - } - - // nbSel == 1 - Standard_Boolean testResult = Standard_False;; - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject(firstIObject(), testResult ); - - if ( !testResult || CORBA::is_nil( aSelectedObject ) || !GEOMBase::IsShape( aSelectedObject ) ) - return; - - if(myEditCurrentArgument == GroupPoints->LineEdit1 || myEditCurrentArgument == GroupDimensions->LineEdit1) - myBase = aSelectedObject; - else if(myEditCurrentArgument == GroupPoints->LineEdit2 || myEditCurrentArgument == GroupDimensions->LineEdit2) - myVectorU = aSelectedObject; - else if(myEditCurrentArgument == GroupDimensions->LineEdit3) - myVectorV = aSelectedObject; - - myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) ); - - displayPreview(); -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void TransformationGUI_MultiTranslationDlg::SetEditCurrentArgument() -{ - QPushButton* send = (QPushButton*)sender(); - - - if(send == GroupPoints->PushButton1) { - myEditCurrentArgument = GroupPoints->LineEdit1; - globalSelection( GEOM_ALLSHAPES ); - } - else if(send == GroupPoints->PushButton2) { - myEditCurrentArgument = GroupPoints->LineEdit2; - globalSelection( GEOM_LINE ); - } - else if(send == GroupDimensions->PushButton1) { - myEditCurrentArgument = GroupDimensions->LineEdit1; - globalSelection( GEOM_ALLSHAPES ); - } - else if(send == GroupDimensions->PushButton2) { - myEditCurrentArgument = GroupDimensions->LineEdit2; - globalSelection( GEOM_LINE ); - } - else if(send == GroupDimensions->PushButton3) { - myEditCurrentArgument = GroupDimensions->LineEdit3; - globalSelection( GEOM_LINE ); - } - - myEditCurrentArgument->setFocus(); - SelectionIntoArgument(); -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void TransformationGUI_MultiTranslationDlg::LineEditReturnPressed() -{ - QLineEdit* send = (QLineEdit*)sender(); - if(send == GroupPoints->LineEdit1 || send == GroupDimensions->LineEdit1 || - send == GroupPoints->LineEdit2 || send == GroupDimensions->LineEdit2 || - send == GroupDimensions->LineEdit3) - { - myEditCurrentArgument = send; - GEOMBase_Skeleton::LineEditReturnPressed(); - } -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void TransformationGUI_MultiTranslationDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - ConstructorsClicked( getConstructorId() ); -} - - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : public slot to deactivate if active -//================================================================================= -void TransformationGUI_MultiTranslationDlg::DeactivateActiveDialog() -{ - GEOMBase_Skeleton::DeactivateActiveDialog(); -} - - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void TransformationGUI_MultiTranslationDlg::enterEvent(QEvent* e) -{ - if(!GroupConstructors->isEnabled()) - ActivateThisDialog(); -} - - -//================================================================================= -// function : ValueChangedInSpinBox() -// purpose : -//================================================================================= -void TransformationGUI_MultiTranslationDlg::ValueChangedInSpinBox(double newValue) -{ - QObject* send = (QObject*)sender(); - - switch(getConstructorId()) - { - case 0 : - { - if(send == GroupPoints->SpinBox_DX) - myStepU = newValue; - else if(send == GroupPoints->SpinBox_DY) - myNbTimesU = (int)newValue; - break; - } - case 1 : - { - if(send == GroupDimensions->SpinBox_DX1) - myStepU = newValue; - else if(send == GroupDimensions->SpinBox_DY1) - myNbTimesU = (int)newValue; - else if(send == GroupDimensions->SpinBox_DX2) - myStepV = newValue; - else if(send == GroupDimensions->SpinBox_DY2) - myNbTimesV = (int)newValue; - break; - } - } - - displayPreview(); -} - - -//================================================================================= -// function : ReverseStepU() -// purpose : 'state' not used here -//================================================================================= -void TransformationGUI_MultiTranslationDlg::ReverseStepU() -{ - myStepU = -myStepU; - - int aConstructorId = getConstructorId(); - - if(aConstructorId == 0) - GroupPoints->SpinBox_DX->SetValue(myStepU); - else if(aConstructorId == 1) - GroupDimensions->SpinBox_DX1->SetValue(myStepU); - - displayPreview(); -} - - -//================================================================================= -// function : ReverseStepV -// purpose : 'state' not used here -//================================================================================= -void TransformationGUI_MultiTranslationDlg::ReverseStepV() -{ - myStepV = -myStepV; - - GroupDimensions->SpinBox_DX2->SetValue(myStepV); - - displayPreview(); -} - - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr TransformationGUI_MultiTranslationDlg::createOperation() -{ - return myGeometryGUI->GetGeomGen()->GetITransformOperations( getStudyId() ); -} - - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool TransformationGUI_MultiTranslationDlg::isValid( QString& msg ) -{ - int aConstructorId = getConstructorId(); - - if(aConstructorId == 0) - return !(myBase->_is_nil() || myVectorU->_is_nil()); - else if(aConstructorId == 1) - return !(myBase->_is_nil() || myVectorU->_is_nil() || myVectorV->_is_nil()); - return 0; -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool TransformationGUI_MultiTranslationDlg::execute( ObjectList& objects ) -{ - bool res = false; - - GEOM::GEOM_Object_var anObj; - - switch ( getConstructorId() ) - { - case 0 : - { - if ( !CORBA::is_nil( myBase ) && !CORBA::is_nil( myVectorU ) ) { - anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->MultiTranslate1D( myBase, myVectorU, myStepU, myNbTimesU ); - res = true; - } - break; - } - case 1 : - { - if ( !CORBA::is_nil( myBase ) && !CORBA::is_nil( myVectorU ) && !CORBA::is_nil( myVectorV ) ) - { - anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->MultiTranslate2D( myBase, myVectorU, myStepU, myNbTimesU, - myVectorV, myStepV, myNbTimesV ); - res = true; - } - break; - } - } - - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - - return res; -} - - -//================================================================================= -// function : closeEvent -// purpose : -//================================================================================= -void TransformationGUI_MultiTranslationDlg::closeEvent( QCloseEvent* e ) -{ - // myGeomGUI->SetState( -1 ); - GEOMBase_Skeleton::closeEvent( e ); -} diff --git a/src/TransformationGUI/TransformationGUI_MultiTranslationDlg.h b/src/TransformationGUI/TransformationGUI_MultiTranslationDlg.h deleted file mode 100644 index 8fd449628..000000000 --- a/src/TransformationGUI/TransformationGUI_MultiTranslationDlg.h +++ /dev/null @@ -1,88 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : TransformationGUI_MultiTranslationDlg.h -// Author : Damien COQUERET -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_MULTITRANSLATION_H -#define DIALOGBOX_MULTITRANSLATION_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_2Sel2Spin1Check.h" -#include "DlgRef_3Sel4Spin2Check.h" - - -//================================================================================= -// class : TransformationGUI_MultiTranslationDlg -// purpose : -//================================================================================= -class TransformationGUI_MultiTranslationDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - TransformationGUI_MultiTranslationDlg(GeometryGUI* theGeometryGUI, QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~TransformationGUI_MultiTranslationDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& ); - virtual bool execute( ObjectList& objects ); - - virtual void closeEvent( QCloseEvent* e ); - -private : - void Init(); - void enterEvent(QEvent* e); - - GeometryGUI* myGeometryGUI; - - GEOM::GEOM_Object_var myBase, myVectorU, myVectorV ; - int myNbTimesU; - int myNbTimesV; - Standard_Real myStepU; - Standard_Real myStepV; - - DlgRef_2Sel2Spin1Check* GroupPoints; - DlgRef_3Sel4Spin2Check* GroupDimensions; - -private slots: - void ClickOnOk(); - bool ClickOnApply(); - void ClickOnCancel(); - void ActivateThisDialog(); - void DeactivateActiveDialog(); - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - void ReverseStepU(); - void ReverseStepV(); - void ValueChangedInSpinBox(double newValue); - void ConstructorsClicked(int constructorId); - -}; - -#endif // DIALOGBOX_MULTITRANSLATION_H diff --git a/src/TransformationGUI/TransformationGUI_OffsetDlg.cxx b/src/TransformationGUI/TransformationGUI_OffsetDlg.cxx deleted file mode 100644 index 3b4d896b5..000000000 --- a/src/TransformationGUI/TransformationGUI_OffsetDlg.cxx +++ /dev/null @@ -1,352 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : TransformationGUI_OffsetDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "TransformationGUI_OffsetDlg.h" - -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include -#include - -#include "utilities.h" - -using namespace std; - -//================================================================================= -// class : TransformationGUI_OffsetDlg() -// purpose : Constructs a TransformationGUI_OffsetDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -TransformationGUI_OffsetDlg::TransformationGUI_OffsetDlg(QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_OFFSET"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_OFFSET_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_OFFSET")); - RadioButton1->setPixmap(image0); - RadioButton2->close(TRUE); - RadioButton3->close(TRUE); - - GroupPoints = new DlgRef_1Sel1Spin1Check(this, "GroupPoints"); - GroupPoints->GroupBox1->setTitle(tr("GEOM_ARGUMENTS")); - GroupPoints->TextLabel1->setText(tr("GEOM_OBJECTS")); - GroupPoints->TextLabel2->setText(tr("GEOM_OFFSET")); - GroupPoints->CheckButton1->setText(tr("GEOM_CREATE_COPY")); - - // san -- modification of an exisitng object by offset is not allowed - GroupPoints->CheckButton1->hide(); - - GroupPoints->PushButton1->setPixmap(image1); - - Layout1->addWidget(GroupPoints, 2, 0); - - /***************************************************************/ - - Init(); -} - - -//================================================================================= -// function : ~TransformationGUI_OffsetDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -TransformationGUI_OffsetDlg::~TransformationGUI_OffsetDlg() -{ - /* no need to delete child widgets, Qt does it all for us */ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void TransformationGUI_OffsetDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = GroupPoints->LineEdit1; - GroupPoints->LineEdit1->setReadOnly( true ); - - /* Get setting of step value from file configuration */ - double step = 1; - - /* min, max, step and decimals for spin boxes & initial values */ - GroupPoints->SpinBox_DX->RangeStepAndValidator(-999.999, 999.999, step, 3); - GroupPoints->SpinBox_DX->setPrecision(5); - //@ GroupPoints->SpinBox_DX->setDblPrecision(1e-05); - GroupPoints->SpinBox_DX->SetValue(1e-05); - - // Activate Create a Copy mode - GroupPoints->CheckButton1->setChecked(true); - CreateCopyModeChanged(true); - - /* signals and slots connections */ - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - - connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - connect(GroupPoints->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox())); - connect(GroupPoints->CheckButton1, SIGNAL(toggled(bool)), this, SLOT(CreateCopyModeChanged(bool))); - - initName( tr( "GEOM_OFFSET" ) ); - - globalSelection( GEOM_ALLSHAPES ); - -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void TransformationGUI_OffsetDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool TransformationGUI_OffsetDlg::ClickOnApply() -{ - if ( !onAccept( GroupPoints->CheckButton1->isChecked() ) ) - return false; - - initName(); - return true; -} - - -//======================================================================= -// function : ClickOnCancel() -// purpose : -//======================================================================= -void TransformationGUI_OffsetDlg::ClickOnCancel() -{ - GEOMBase_Skeleton::ClickOnCancel(); -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection has changed -//================================================================================= -void TransformationGUI_OffsetDlg::SelectionIntoArgument() -{ - myEditCurrentArgument->setText(""); - QString aName; - - int aNbSel = GEOMBase::GetNameOfSelectedIObjects(selectedIO(), aName); - if(aNbSel < 1) - { - myObjects.length(0); - return; - } - - // nbSel > 0 - GEOMBase::ConvertListOfIOInListOfGO(selectedIO(), myObjects); - if (!myObjects.length()) - return; - - myEditCurrentArgument->setText( aName ); - - displayPreview(); -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void TransformationGUI_OffsetDlg::LineEditReturnPressed() -{ - QLineEdit* send = (QLineEdit*)sender(); - if ( send == GroupPoints->LineEdit1 ) - { - myEditCurrentArgument = GroupPoints->LineEdit1; - GEOMBase_Skeleton::LineEditReturnPressed(); - } -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void TransformationGUI_OffsetDlg::SetEditCurrentArgument() -{ - QPushButton* send = (QPushButton*)sender(); - - if(send == GroupPoints->PushButton1) - { - myEditCurrentArgument = GroupPoints->LineEdit1; - myEditCurrentArgument->setFocus(); - SelectionIntoArgument(); - } -} - - -//================================================================================= -// function : enterEvent() -// purpose : when mouse enter onto the QWidget -//================================================================================= -void TransformationGUI_OffsetDlg::enterEvent(QEvent * e) -{ - if ( !GroupConstructors->isEnabled() ) - ActivateThisDialog(); -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void TransformationGUI_OffsetDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - globalSelection( GEOM_ALLSHAPES ); - myEditCurrentArgument = GroupPoints->LineEdit1; - myEditCurrentArgument->setFocus(); -} - - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : public slot to deactivate if active -//================================================================================= -void TransformationGUI_OffsetDlg::DeactivateActiveDialog() -{ - GEOMBase_Skeleton::DeactivateActiveDialog(); -} - - -//================================================================================= -// function : ValueChangedInSpinBox() -// purpose : -//================================================================================= -void TransformationGUI_OffsetDlg::ValueChangedInSpinBox() -{ - displayPreview(); -} - - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr TransformationGUI_OffsetDlg::createOperation() -{ - return getGeomEngine()->GetITransformOperations( getStudyId() ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool TransformationGUI_OffsetDlg::isValid( QString& msg ) -{ - return !(myObjects.length() == 0); -} - - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool TransformationGUI_OffsetDlg::execute( ObjectList& objects ) -{ - bool res = false; - - GEOM::GEOM_Object_var anObj; - - - if (GroupPoints->CheckButton1->isChecked() || IsPreview()) - for (int i = 0; i < myObjects.length(); i++) - { - anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->OffsetShapeCopy( myObjects[i], GetOffset() ); - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - } - else - for (int i = 0; i < myObjects.length(); i++) - { - anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->OffsetShape( myObjects[i], GetOffset() ); - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - } - - res = true; - - return res; -} - -//================================================================================= -// function : closeEvent -// purpose : -//================================================================================= -void TransformationGUI_OffsetDlg::closeEvent( QCloseEvent* e ) -{ - // myGeomGUI->SetState( -1 ); - GEOMBase_Skeleton::closeEvent( e ); -} - - -//================================================================================= -// function : GetOffset() -// purpose : -//================================================================================= -double TransformationGUI_OffsetDlg::GetOffset() const -{ - return GroupPoints->SpinBox_DX->GetValue(); -} - - -//================================================================================= -// function : CreateCopyModeChanged() -// purpose : -//================================================================================= -void TransformationGUI_OffsetDlg::CreateCopyModeChanged(bool isCreateCopy) -{ - this->GroupBoxName->setEnabled(isCreateCopy); -} diff --git a/src/TransformationGUI/TransformationGUI_OffsetDlg.h b/src/TransformationGUI/TransformationGUI_OffsetDlg.h deleted file mode 100644 index da127fbc0..000000000 --- a/src/TransformationGUI/TransformationGUI_OffsetDlg.h +++ /dev/null @@ -1,79 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : TransformationGUI_OffsetDlg.h -// Author : Michael Zorin -// Module : GEOM -// $Header: /dn05/salome/PAL/GEOM/GEOM_SRC/src/TransformationGUI/TransformationGUI_Offset.h - -#ifndef DIALOGBOX_OFFSET_H -#define DIALOGBOX_OFFSET_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_1Sel1Spin1Check.h" - - -//================================================================================= -// class : TransformationGUI_OffsetDlg -// purpose : -//================================================================================= -class TransformationGUI_OffsetDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - TransformationGUI_OffsetDlg(QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~TransformationGUI_OffsetDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& ); - virtual bool execute( ObjectList& objects ); - - virtual void closeEvent( QCloseEvent* e ); - -private : - void Init(); - void enterEvent(QEvent* e); - double GetOffset() const; - - GEOM::ListOfGO myObjects; - - DlgRef_1Sel1Spin1Check* GroupPoints; - -private slots : - void ClickOnOk(); - bool ClickOnApply(); - void ClickOnCancel(); - void ActivateThisDialog(); - void DeactivateActiveDialog(); - void SelectionIntoArgument(); - void LineEditReturnPressed(); - void SetEditCurrentArgument(); - void ValueChangedInSpinBox(); - void CreateCopyModeChanged(bool isCreateCopy); -}; - -#endif // DIALOGBOX_OFFSET_H - diff --git a/src/TransformationGUI/TransformationGUI_PositionDlg.cxx b/src/TransformationGUI/TransformationGUI_PositionDlg.cxx deleted file mode 100644 index dc8a9b583..000000000 --- a/src/TransformationGUI/TransformationGUI_PositionDlg.cxx +++ /dev/null @@ -1,445 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : TransformationGUI_PositionDlg.cxx -// Author : Damien COQUERET -// Module : GEOM -// $Header$ - -#include "TransformationGUI_PositionDlg.h" - -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include -#include - -#include "TColStd_MapOfInteger.hxx" - -#include "GEOMImpl_Types.hxx" - -#include "utilities.h" - -using namespace std; - -//================================================================================= -// class : TransformationGUI_PositionDlg() -// purpose : Constructs a TransformationGUI_PositionDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -TransformationGUI_PositionDlg::TransformationGUI_PositionDlg(QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_POSITION"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_POSITION2"))); - QPixmap imageselect(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_POSITION_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_POSITION")); - RadioButton1->setPixmap(image0); - RadioButton2->setPixmap(image1); - RadioButton3->close(TRUE); - - Group1 = new DlgRef_3Sel3Spin1Check(this, "Group1"); - Group1->SpinBox1->hide(); - Group1->SpinBox2->hide(); - Group1->SpinBox3->hide(); - Group1->TextLabel4->hide(); - Group1->TextLabel5->hide(); - Group1->TextLabel6->hide(); - Group1->GroupBox1->setTitle(tr("GEOM_ARGUMENTS")); - Group1->TextLabel1->setText(tr("GEOM_OBJECTS")); - Group1->TextLabel2->setText(tr("GEOM_START_LCS")); - Group1->TextLabel3->setText(tr("GEOM_END_LCS")); - Group1->PushButton1->setPixmap(imageselect); - Group1->PushButton2->setPixmap(imageselect); - Group1->PushButton3->setPixmap(imageselect); - Group1->CheckBox1->setText(tr("GEOM_CREATE_COPY")); - - Layout1->addWidget(Group1, 2, 0); - - /***************************************************************/ - - Init(); -} - - -//================================================================================= -// function : ~TransformationGUI_PositionDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -TransformationGUI_PositionDlg::~TransformationGUI_PositionDlg() -{ - /* no need to delete child widgets, Qt does it all for us */ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void TransformationGUI_PositionDlg::Init() -{ - /* init variables */ - Group1->LineEdit1->setReadOnly(true); - Group1->LineEdit2->setReadOnly(true); - Group1->LineEdit3->setReadOnly(true); - - myStartLCS = GEOM::GEOM_Object::_nil(); - myEndLCS = GEOM::GEOM_Object::_nil(); - - // Activate Create a Copy mode - Group1->CheckBox1->setChecked(true); - CreateCopyModeChanged(true); - - /* signals and slots connections */ - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - connect(GroupConstructors, SIGNAL(clicked(int)), SLOT(ConstructorsClicked(int))); - - connect(Group1->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(Group1->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(Group1->PushButton3, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - - connect(Group1->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(Group1->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(Group1->LineEdit3, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect(Group1->CheckBox1, SIGNAL(toggled(bool)), this, SLOT(CreateCopyModeChanged(bool))); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - initName( tr( "GEOM_POSITION" ) ); - ConstructorsClicked( 0 ); -} - - - -//================================================================================= -// function : ConstructorsClicked() -// purpose : Radio button management -//================================================================================= -void TransformationGUI_PositionDlg::ConstructorsClicked(int constructorId) -{ - disconnect( ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), 0, this, 0 ); - - globalSelection(); - myEditCurrentArgument = Group1->LineEdit1; - Group1->LineEdit2->clear(); - Group1->LineEdit3->clear(); - myStartLCS = GEOM::GEOM_Object::_nil(); - myEndLCS = GEOM::GEOM_Object::_nil(); - - switch (constructorId) - { - case 0: - { - Group1->LineEdit2->hide(); - Group1->TextLabel2->hide(); - Group1->PushButton2->hide(); - break; - } - case 1: - { - Group1->LineEdit2->show(); - Group1->TextLabel2->show(); - Group1->PushButton2->show(); - break; - } - } - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - SelectionIntoArgument(); -} - - - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void TransformationGUI_PositionDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool TransformationGUI_PositionDlg::ClickOnApply() -{ - if ( !onAccept(Group1->CheckBox1->isChecked()) ) - return false; - - initName(); - ConstructorsClicked( getConstructorId() ); - return true; -} - - -//======================================================================= -// function : ClickOnCancel() -// purpose : -//======================================================================= -void TransformationGUI_PositionDlg::ClickOnCancel() -{ - GEOMBase_Skeleton::ClickOnCancel(); -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection has changed -//================================================================================= -void TransformationGUI_PositionDlg::SelectionIntoArgument() -{ - myEditCurrentArgument->setText(""); - QString aName; - - if(myEditCurrentArgument == Group1->LineEdit1) { - int aNbSel = GEOMBase::GetNameOfSelectedIObjects(selectedIO(), aName); - if(aNbSel < 1) { - myObjects.length(0); - displayPreview(); - return; - } - GEOMBase::ConvertListOfIOInListOfGO(selectedIO(), myObjects); - if (!myObjects.length()) { - displayPreview(); - return; - } - } - else if(myEditCurrentArgument == Group1->LineEdit2) { - myStartLCS = GEOM::GEOM_Object::_nil(); - if(IObjectCount() != 1) { - displayPreview(); - return; - } - - Standard_Boolean testResult = Standard_False; - myStartLCS = GEOMBase::ConvertIOinGEOMObject(firstIObject(), testResult ); - if(!testResult || CORBA::is_nil( myStartLCS )) { - displayPreview(); - return; - } - aName = GEOMBase::GetName( myStartLCS ); - } - else if(myEditCurrentArgument == Group1->LineEdit3) { - myEndLCS = GEOM::GEOM_Object::_nil(); - if(IObjectCount() != 1) { - displayPreview(); - return; - } - - Standard_Boolean testResult = Standard_False; - myEndLCS = GEOMBase::ConvertIOinGEOMObject(firstIObject(), testResult ); - if(!testResult || CORBA::is_nil( myEndLCS )) { - displayPreview(); - return; - } - aName = GEOMBase::GetName( myEndLCS ); - } - - myEditCurrentArgument->setText( aName ); - displayPreview(); -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void TransformationGUI_PositionDlg::LineEditReturnPressed() -{ - QLineEdit* send = (QLineEdit*)sender(); - if(send == Group1->LineEdit1 || send == Group1->LineEdit2 || send == Group1->LineEdit3) { - myEditCurrentArgument = send; - GEOMBase_Skeleton::LineEditReturnPressed(); - } -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void TransformationGUI_PositionDlg::SetEditCurrentArgument() -{ - QPushButton* send = (QPushButton*)sender(); - - if(send == Group1->PushButton1){ - myEditCurrentArgument = Group1->LineEdit1; - globalSelection(); - } - else if(send == Group1->PushButton2) { - myEditCurrentArgument = Group1->LineEdit2; - TColStd_MapOfInteger aMap; - aMap.Add( GEOM_PLANE ); - aMap.Add( GEOM_MARKER ); - globalSelection( aMap ); - } - else if(send == Group1->PushButton3) { - myEditCurrentArgument = Group1->LineEdit3; - TColStd_MapOfInteger aMap; - aMap.Add( GEOM_PLANE ); - aMap.Add( GEOM_MARKER ); - globalSelection( aMap ); - } - - myEditCurrentArgument->setFocus(); - SelectionIntoArgument(); -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void TransformationGUI_PositionDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - ConstructorsClicked( getConstructorId() ); -} - - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : public slot to deactivate if active -//================================================================================= -void TransformationGUI_PositionDlg::DeactivateActiveDialog() -{ - GEOMBase_Skeleton::DeactivateActiveDialog(); -} - - -//================================================================================= -// function : enterEvent() -// purpose : when mouse enter onto the QWidget -//================================================================================= -void TransformationGUI_PositionDlg::enterEvent(QEvent * e) -{ - if(!GroupConstructors->isEnabled()) - ActivateThisDialog(); -} - - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr TransformationGUI_PositionDlg::createOperation() -{ - return getGeomEngine()->GetITransformOperations( getStudyId() ); -} - - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool TransformationGUI_PositionDlg::isValid( QString& msg ) -{ - bool res; - if (getConstructorId() == 0) - res = !(myObjects.length() == 0 || myEndLCS->_is_nil()); - else - res = !(myObjects.length() == 0 || myStartLCS->_is_nil() || myEndLCS->_is_nil()); - - return res; -} - - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool TransformationGUI_PositionDlg::execute( ObjectList& objects ) -{ - bool res = false; - bool toCreateCopy = IsPreview() || Group1->CheckBox1->isChecked(); - GEOM::GEOM_Object_var anObj; - - switch ( getConstructorId() ) - { - case 0 : - { - for (int i = 0; i < myObjects.length(); i++) { - if (toCreateCopy) - anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->PositionShapeCopy( myObjects[i], myObjects[i], myEndLCS ); - else - anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->PositionShape( myObjects[i], myObjects[i], myEndLCS ); - - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - } - res = true; - break; - } - case 1 : - { - for (int i = 0; i < myObjects.length(); i++) { - if (toCreateCopy) - anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->PositionShapeCopy( myObjects[i], myStartLCS, myEndLCS ); - else - anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->PositionShape( myObjects[i], myStartLCS, myEndLCS ); - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - } - res = true; - break; - } - } - - return res; -} - -//================================================================================= -// function : closeEvent -// purpose : -//================================================================================= -void TransformationGUI_PositionDlg::closeEvent( QCloseEvent* e ) -{ - GEOMBase_Skeleton::closeEvent( e ); -} - - -//================================================================================= -// function : CreateCopyModeChanged() -// purpose : -//================================================================================= -void TransformationGUI_PositionDlg::CreateCopyModeChanged(bool isCreateCopy) -{ - this->GroupBoxName->setEnabled(isCreateCopy); -} diff --git a/src/TransformationGUI/TransformationGUI_PositionDlg.h b/src/TransformationGUI/TransformationGUI_PositionDlg.h deleted file mode 100644 index 2e5e499b4..000000000 --- a/src/TransformationGUI/TransformationGUI_PositionDlg.h +++ /dev/null @@ -1,81 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : TransformationGUI_PositionDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_POSITION_H -#define DIALOGBOX_POSITION_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_3Sel3Spin1Check.h" - -#include "TransformationGUI.h" - - -//================================================================================= -// class : TransformationGUI_PositionDlg -// purpose : -//================================================================================= -class TransformationGUI_PositionDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - TransformationGUI_PositionDlg(QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~TransformationGUI_PositionDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& ); - virtual bool execute( ObjectList& objects ); - - virtual void closeEvent( QCloseEvent* e ); - -private : - void Init(); - void enterEvent(QEvent* e); - - GEOM::GEOM_Object_var myStartLCS; - GEOM::GEOM_Object_var myEndLCS; - GEOM::ListOfGO myObjects; - - DlgRef_3Sel3Spin1Check* Group1; - -private slots : - void ClickOnOk(); - bool ClickOnApply(); - void ClickOnCancel(); - void ActivateThisDialog(); - void DeactivateActiveDialog(); - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - void ConstructorsClicked(int constructorId); - void CreateCopyModeChanged(bool isCreateCopy); -}; - -#endif // DIALOGBOX_MIRROR_H diff --git a/src/TransformationGUI/TransformationGUI_RotationDlg.cxx b/src/TransformationGUI/TransformationGUI_RotationDlg.cxx deleted file mode 100644 index 03f9cd8d1..000000000 --- a/src/TransformationGUI/TransformationGUI_RotationDlg.cxx +++ /dev/null @@ -1,386 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : TransformationGUI_RotationDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "TransformationGUI_RotationDlg.h" - -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include -#include - -#include "GEOMImpl_Types.hxx" - -#include "utilities.h" - -using namespace std; - -//================================================================================= -// class : TransformationGUI_RotationDlg() -// purpose : Constructs a TransformationGUI_RotationDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -TransformationGUI_RotationDlg::TransformationGUI_RotationDlg(QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_ROTATION"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_ROTATION_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_ROTATION")); - RadioButton1->setPixmap(image0); - RadioButton2->close(TRUE); - RadioButton3->close(TRUE); - - GroupPoints = new DlgRef_2Sel1Spin2Check(this, "GroupPoints"); - GroupPoints->GroupBox1->setTitle(tr("GEOM_ARGUMENTS")); - GroupPoints->TextLabel1->setText(tr("GEOM_OBJECTS")); - GroupPoints->TextLabel2->setText(tr("GEOM_AXIS")); - GroupPoints->TextLabel3->setText(tr("GEOM_ANGLE")); - GroupPoints->LineEdit1->setReadOnly(true); - GroupPoints->LineEdit2->setReadOnly(true); - GroupPoints->PushButton1->setPixmap(image1); - GroupPoints->PushButton2->setPixmap(image1); - GroupPoints->CheckButton1->setText(tr("GEOM_CREATE_COPY")); - GroupPoints->CheckButton2->setText(tr("GEOM_REVERSE")); - - Layout1->addWidget(GroupPoints, 2, 0); - /***************************************************************/ - double anAngle = 0; - double SpecificStep = 5; - /* min, max, step and decimals for spin boxes & initial values */ - GroupPoints->SpinBox_DX->RangeStepAndValidator(-999.999, 999.999, SpecificStep, 3); - GroupPoints->SpinBox_DX->SetValue(anAngle); - - // Activate Create a Copy mode - GroupPoints->CheckButton1->setChecked(true); - CreateCopyModeChanged(true); - - /* signals and slots connections */ - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - - connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupPoints->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - - connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(GroupPoints->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect(GroupPoints->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox())); - connect(GroupPoints->CheckButton1, SIGNAL(toggled(bool)), this, SLOT(CreateCopyModeChanged(bool))); - connect(GroupPoints->CheckButton2, SIGNAL(toggled(bool)), this, SLOT(onReverse())); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - - Init(); -} - - -//================================================================================= -// function : ~TransformationGUI_RotationDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -TransformationGUI_RotationDlg::~TransformationGUI_RotationDlg() -{ - // no need to delete child widgets, Qt does it all for us -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void TransformationGUI_RotationDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = GroupPoints->LineEdit1; - GroupPoints->LineEdit2->clear(); - - myAxis = GEOM::GEOM_Object::_nil(); - - initName( tr( "GEOM_ROTATION" ) ); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void TransformationGUI_RotationDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool TransformationGUI_RotationDlg::ClickOnApply() -{ - if ( !onAccept( GroupPoints->CheckButton1->isChecked()) ) - return false; - - Init(); - return true; -} - - -//======================================================================= -// function : ClickOnCancel() -// purpose : -//======================================================================= -void TransformationGUI_RotationDlg::ClickOnCancel() -{ - GEOMBase_Skeleton::ClickOnCancel(); -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection as changed or other case -//================================================================================= -void TransformationGUI_RotationDlg::SelectionIntoArgument() -{ - myEditCurrentArgument->setText(""); - QString aName; - - if(myEditCurrentArgument == GroupPoints->LineEdit1) - { - int aNbSel = GEOMBase::GetNameOfSelectedIObjects(selectedIO(), aName); - if(aNbSel < 1) - { - myObjects.length(0); - return; - } - GEOMBase::ConvertListOfIOInListOfGO(selectedIO(), myObjects); - if (!myObjects.length()) - return; - } - else if(myEditCurrentArgument == GroupPoints->LineEdit2) - { - if(IObjectCount() != 1) - { - myAxis = GEOM::GEOM_Object::_nil(); - return; - } - Standard_Boolean testResult = Standard_False; - myAxis = GEOMBase::ConvertIOinGEOMObject(firstIObject(), testResult ); - if(!testResult || CORBA::is_nil( myAxis )) - return; - aName = GEOMBase::GetName( myAxis ); - } - myEditCurrentArgument->setText( aName ); - - displayPreview(); -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void TransformationGUI_RotationDlg::SetEditCurrentArgument() -{ - QPushButton* send = (QPushButton*)sender(); - - if(send == GroupPoints->PushButton1) { - myEditCurrentArgument = GroupPoints->LineEdit1; - globalSelection(); - } - else if(send == GroupPoints->PushButton2) { - myEditCurrentArgument = GroupPoints->LineEdit2; - globalSelection( GEOM_LINE ); - } - - myEditCurrentArgument->setFocus(); - SelectionIntoArgument(); -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void TransformationGUI_RotationDlg::LineEditReturnPressed() -{ - QLineEdit* send = (QLineEdit*)sender(); - if(send == GroupPoints->LineEdit1 || - send == GroupPoints->LineEdit2) - { - myEditCurrentArgument = send; - GEOMBase_Skeleton::LineEditReturnPressed(); - } -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void TransformationGUI_RotationDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - globalSelection(); - GroupPoints->LineEdit1->setFocus(); - myEditCurrentArgument = GroupPoints->LineEdit1; - GroupPoints->LineEdit2->clear(); - myAxis = GEOM::GEOM_Object::_nil(); -} - - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : public slot to deactivate if active -//================================================================================= -void TransformationGUI_RotationDlg::DeactivateActiveDialog() -{ - GEOMBase_Skeleton::DeactivateActiveDialog(); -} - - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void TransformationGUI_RotationDlg::enterEvent(QEvent* e) -{ - if (!GroupConstructors->isEnabled()) - ActivateThisDialog(); -} - - -//================================================================================= -// function : ValueChangedInSpinBox() -// purpose : -//================================================================================= -void TransformationGUI_RotationDlg::ValueChangedInSpinBox() -{ - displayPreview(); -} - - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr TransformationGUI_RotationDlg::createOperation() -{ - return getGeomEngine()->GetITransformOperations( getStudyId() ); -} - - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool TransformationGUI_RotationDlg::isValid( QString& msg ) -{ - return !(myObjects.length() == 0 || myAxis->_is_nil()); -} - - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool TransformationGUI_RotationDlg::execute( ObjectList& objects ) -{ - bool res = false; - - GEOM::GEOM_Object_var anObj; - - if (GroupPoints->CheckButton1->isChecked() || IsPreview()) - for (int i = 0; i < myObjects.length(); i++) - { - anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->RotateCopy( myObjects[i], myAxis, GetAngle() * PI180 ); - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - } - else - for (int i = 0; i < myObjects.length(); i++) - { - anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->Rotate( myObjects[i], myAxis, GetAngle() * PI180 ); - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - } - res = true; - - return res; -} - - -//================================================================================= -// function : closeEvent -// purpose : -//================================================================================= -void TransformationGUI_RotationDlg::closeEvent( QCloseEvent* e ) -{ - GEOMBase_Skeleton::closeEvent( e ); -} - - -//================================================================================= -// function : GetAngle() -// purpose : -//================================================================================= -double TransformationGUI_RotationDlg::GetAngle() const -{ - return GroupPoints->SpinBox_DX->GetValue(); -} - - -//================================================================================= -// function : CreateCopyModeChanged() -// purpose : -//================================================================================= -void TransformationGUI_RotationDlg::CreateCopyModeChanged(bool isCreateCopy) -{ - this->GroupBoxName->setEnabled(isCreateCopy); -} - - -//================================================================================= -// function : onReverse() -// purpose : -//================================================================================= -void TransformationGUI_RotationDlg::onReverse() -{ - double anOldValue = GroupPoints->SpinBox_DX->GetValue(); - GroupPoints->SpinBox_DX->SetValue( -anOldValue ); -} diff --git a/src/TransformationGUI/TransformationGUI_RotationDlg.h b/src/TransformationGUI/TransformationGUI_RotationDlg.h deleted file mode 100644 index 173ce35de..000000000 --- a/src/TransformationGUI/TransformationGUI_RotationDlg.h +++ /dev/null @@ -1,79 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : TransformationGUI_RotationDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_ROTATION_H -#define DIALOGBOX_ROTATION_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_2Sel1Spin2Check.h" - -//================================================================================= -// class : TransformationGUI_RotationDlg -// purpose : -//================================================================================= -class TransformationGUI_RotationDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - TransformationGUI_RotationDlg(QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~TransformationGUI_RotationDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& ); - virtual bool execute( ObjectList& objects ); - - virtual void closeEvent( QCloseEvent* e ); - -private : - void Init(); - void enterEvent(QEvent* e); - double GetAngle() const; - - GEOM::ListOfGO myObjects; - GEOM::GEOM_Object_var myAxis; - - DlgRef_2Sel1Spin2Check* GroupPoints; - -private slots: - void ClickOnOk(); - bool ClickOnApply(); - void ClickOnCancel(); - void ActivateThisDialog(); - void DeactivateActiveDialog(); - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - void ValueChangedInSpinBox(); - void CreateCopyModeChanged(bool isCreateCopy); - void onReverse(); -}; - -#endif // DIALOGBOX_ROTATION_H diff --git a/src/TransformationGUI/TransformationGUI_ScaleDlg.cxx b/src/TransformationGUI/TransformationGUI_ScaleDlg.cxx deleted file mode 100644 index 1690ae6d3..000000000 --- a/src/TransformationGUI/TransformationGUI_ScaleDlg.cxx +++ /dev/null @@ -1,374 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : TransformationGUI_ScaleDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "TransformationGUI_ScaleDlg.h" - -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include -#include - -#include "GEOMImpl_Types.hxx" - -#include "utilities.h" - -using namespace std; - -//================================================================================= -// class : TransformationGUI_ScaleDlg() -// purpose : Constructs a TransformationGUI_ScaleDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -TransformationGUI_ScaleDlg::TransformationGUI_ScaleDlg(GeometryGUI* theGeometryGUI, QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu), myGeometryGUI(theGeometryGUI) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_SCALE"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_SCALE_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_SCALE")); - RadioButton1->setPixmap(image0); - RadioButton2->close(TRUE); - RadioButton3->close(TRUE); - - GroupPoints = new DlgRef_2Sel1Spin2Check(this, "GroupPoints"); - GroupPoints->CheckButton2->hide(); - GroupPoints->GroupBox1->setTitle(tr("GEOM_ARGUMENTS")); - GroupPoints->TextLabel1->setText(tr("GEOM_OBJECTS")); - GroupPoints->TextLabel2->setText(tr("GEOM_CENTRAL_POINT")); - GroupPoints->TextLabel3->setText(tr("GEOM_SCALE_FACTOR")); - GroupPoints->LineEdit1->setReadOnly( true ); - GroupPoints->LineEdit2->setReadOnly( true ); - GroupPoints->PushButton1->setPixmap(image1); - GroupPoints->PushButton2->setPixmap(image1); - GroupPoints->CheckButton1->setText(tr("GEOM_CREATE_COPY")); - - // san -- modification of an exisitng object by offset is not allowed - GroupPoints->CheckButton1->hide(); - - Layout1->addWidget(GroupPoints, 2, 0); - /***************************************************************/ - double aFactor = 2.0; - double SpecificStep = 0.5; - /* min, max, step and decimals for spin boxes & initial values */ - GroupPoints->SpinBox_DX->RangeStepAndValidator(-999.999, 999.999, SpecificStep, 3); - GroupPoints->SpinBox_DX->SetValue(aFactor); - - // Activate Create a Copy mode - GroupPoints->CheckButton1->setChecked(true); - CreateCopyModeChanged(true); - - /* signals and slots connections */ - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - - connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupPoints->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - - connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(GroupPoints->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - - connect(GroupPoints->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox())); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupPoints->SpinBox_DX, SLOT(SetStep(double))); - connect(GroupPoints->CheckButton1, SIGNAL(toggled(bool)), this, SLOT(CreateCopyModeChanged(bool))); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - - Init(); -} - - -//================================================================================= -// function : ~TransformationGUI_ScaleDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -TransformationGUI_ScaleDlg::~TransformationGUI_ScaleDlg() -{ - /* no need to delete child widgets, Qt does it all for us */ -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void TransformationGUI_ScaleDlg::Init() -{ - myEditCurrentArgument = GroupPoints->LineEdit1; - GroupPoints->LineEdit2->clear(); - - myPoint = GEOM::GEOM_Object::_nil(); - - initName( tr( "GEOM_SCALE" ) ); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void TransformationGUI_ScaleDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool TransformationGUI_ScaleDlg::ClickOnApply() -{ - if ( !onAccept(GroupPoints->CheckButton1->isChecked()) ) - return false; - - Init(); - return true; -} - - -//======================================================================= -// function : ClickOnCancel() -// purpose : -//======================================================================= -void TransformationGUI_ScaleDlg::ClickOnCancel() -{ - GEOMBase_Skeleton::ClickOnCancel(); -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection as changed or other case -//================================================================================= -void TransformationGUI_ScaleDlg::SelectionIntoArgument() -{ - myEditCurrentArgument->setText(""); - QString aName; - - if(myEditCurrentArgument == GroupPoints->LineEdit1) - { - int aNbSel = GEOMBase::GetNameOfSelectedIObjects(selectedIO(), aName); - if(aNbSel < 1) - { - myObjects.length(0); - return; - } - GEOMBase::ConvertListOfIOInListOfGO(selectedIO(), myObjects); - if (!myObjects.length()) - return; - } - else if(myEditCurrentArgument == GroupPoints->LineEdit2) - { - if(IObjectCount() != 1) - { - myPoint = GEOM::GEOM_Object::_nil(); - return; - } - Standard_Boolean testResult = Standard_False; - myPoint = GEOMBase::ConvertIOinGEOMObject(firstIObject(), testResult ); - if(!testResult || CORBA::is_nil( myPoint )) - return; - aName = GEOMBase::GetName( myPoint ); - } - myEditCurrentArgument->setText( aName ); - - displayPreview(); -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void TransformationGUI_ScaleDlg::LineEditReturnPressed() -{ - QLineEdit* send = (QLineEdit*)sender(); - if(send == GroupPoints->LineEdit1 || - send == GroupPoints->LineEdit2) - { - myEditCurrentArgument = send; - GEOMBase_Skeleton::LineEditReturnPressed(); - } -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void TransformationGUI_ScaleDlg::SetEditCurrentArgument() -{ - QPushButton* send = (QPushButton*)sender(); - - if(send == GroupPoints->PushButton1) { - myEditCurrentArgument = GroupPoints->LineEdit1; - globalSelection(); - } - else if(send == GroupPoints->PushButton2) { - myEditCurrentArgument = GroupPoints->LineEdit2; - globalSelection( GEOM_POINT ); - } - - myEditCurrentArgument->setFocus(); - SelectionIntoArgument(); -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void TransformationGUI_ScaleDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - globalSelection(); - GroupPoints->LineEdit1->setFocus(); - myEditCurrentArgument = GroupPoints->LineEdit1; -} - - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : public slot to deactivate if active -//================================================================================= -void TransformationGUI_ScaleDlg::DeactivateActiveDialog() -{ - GEOMBase_Skeleton::DeactivateActiveDialog(); -} - - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void TransformationGUI_ScaleDlg::enterEvent(QEvent* e) -{ - if( !GroupConstructors->isEnabled() ) - ActivateThisDialog(); -} - - -//================================================================================= -// function : ValueChangedInSpinBox() -// purpose : -//================================================================================= -void TransformationGUI_ScaleDlg::ValueChangedInSpinBox() -{ - displayPreview(); -} - - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr TransformationGUI_ScaleDlg::createOperation() -{ - return myGeometryGUI->GetGeomGen()->GetITransformOperations( getStudyId() ); -} - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool TransformationGUI_ScaleDlg::isValid( QString& msg ) -{ - return !(myObjects.length() == 0 || myPoint->_is_nil() || fabs(GetFactor()) <= 0.00001); -} - - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool TransformationGUI_ScaleDlg::execute( ObjectList& objects ) -{ - bool res = false; - - GEOM::GEOM_Object_var anObj; - - if (GroupPoints->CheckButton1->isChecked() || IsPreview()) - for (int i = 0; i < myObjects.length(); i++) - { - anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->ScaleShapeCopy( myObjects[i], myPoint, GetFactor() ); - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - } - else - for (int i = 0; i < myObjects.length(); i++) - { - anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->ScaleShape( myObjects[i], myPoint, GetFactor() ); - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - } - res = true; - - return res; -} - - -//================================================================================= -// function : closeEvent -// purpose : -//================================================================================= -void TransformationGUI_ScaleDlg::closeEvent( QCloseEvent* e ) -{ - GEOMBase_Skeleton::closeEvent( e ); -} - - -//================================================================================= -// function : GetFactor() -// purpose : -//================================================================================= -double TransformationGUI_ScaleDlg::GetFactor() const -{ - return GroupPoints->SpinBox_DX->GetValue(); -} - - -//================================================================================= -// function : CreateCopyModeChanged() -// purpose : -//================================================================================= -void TransformationGUI_ScaleDlg::CreateCopyModeChanged(bool isCreateCopy) -{ - this->GroupBoxName->setEnabled(isCreateCopy); -} diff --git a/src/TransformationGUI/TransformationGUI_ScaleDlg.h b/src/TransformationGUI/TransformationGUI_ScaleDlg.h deleted file mode 100644 index 8f0e61c07..000000000 --- a/src/TransformationGUI/TransformationGUI_ScaleDlg.h +++ /dev/null @@ -1,81 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : TransformationGUI_ScaleDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_SCALE_H -#define DIALOGBOX_SCALE_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_2Sel1Spin2Check.h" - - -//================================================================================= -// class : TransformationGUI_ScaleDlg -// purpose : -//================================================================================= -class TransformationGUI_ScaleDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - TransformationGUI_ScaleDlg(GeometryGUI* theGeometryGUI, QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~TransformationGUI_ScaleDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& ); - virtual bool execute( ObjectList& objects ); - - virtual void closeEvent( QCloseEvent* e ); - -private : - void Init(); - void enterEvent(QEvent* e); - double GetFactor() const; - - GeometryGUI* myGeometryGUI; - - GEOM::ListOfGO myObjects; - GEOM::GEOM_Object_var myPoint; /* Central Point */ - - DlgRef_2Sel1Spin2Check* GroupPoints; - -private slots : - void ClickOnOk(); - bool ClickOnApply(); - void ClickOnCancel(); - void ActivateThisDialog(); - void DeactivateActiveDialog(); - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - void ValueChangedInSpinBox(); - void CreateCopyModeChanged(bool isCreateCopy); -}; - -#endif // DIALOGBOX_SCALE_H diff --git a/src/TransformationGUI/TransformationGUI_TranslationDlg.cxx b/src/TransformationGUI/TransformationGUI_TranslationDlg.cxx deleted file mode 100644 index c56d2e402..000000000 --- a/src/TransformationGUI/TransformationGUI_TranslationDlg.cxx +++ /dev/null @@ -1,527 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : TransformationGUI_TranslationDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#include "TransformationGUI_TranslationDlg.h" - -#include "SUIT_Desktop.h" -#include "SUIT_Session.h" -#include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" - -#include -#include - -#include "GEOMImpl_Types.hxx" - -#include "utilities.h" - -using namespace std; - -//================================================================================= -// class : TransformationGUI_TranslationDlg() -// purpose : Constructs a TransformationGUI_TranslationDlg which is a child of 'parent', with the -// name 'name' and widget flags set to 'f'. -// The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. -//================================================================================= -TransformationGUI_TranslationDlg::TransformationGUI_TranslationDlg(GeometryGUI* theGeometryGUI, QWidget* parent, const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu), myGeometryGUI(theGeometryGUI) -{ - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_TRANSLATION_DXYZ"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_TRANSLATION_POINTS"))); - QPixmap image2(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_TRANSLATION_VECTOR"))); - QPixmap image3(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - - setCaption(tr("GEOM_TRANSLATION_TITLE")); - - /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_TRANSLATION")); - RadioButton1->setPixmap(image0); - RadioButton2->setPixmap(image1); - RadioButton3->setPixmap(image2); - - RadioButton1->setChecked(true); - - GroupPoints = new DlgRef_3Sel3Spin1Check(this, "GroupPoints"); - GroupPoints->GroupBox1->setTitle(tr("GEOM_ARGUMENTS")); - GroupPoints->TextLabel1->setText(tr("GEOM_OBJECTS")); - GroupPoints->TextLabel3->setText(tr("GEOM_POINT_I").arg("2")); - GroupPoints->TextLabel4->setText(tr("GEOM_DX")); - GroupPoints->TextLabel5->setText(tr("GEOM_DY")); - GroupPoints->TextLabel6->setText(tr("GEOM_DZ")); - GroupPoints->PushButton1->setPixmap(image3); - GroupPoints->PushButton2->setPixmap(image3); - GroupPoints->PushButton3->setPixmap(image3); - GroupPoints->CheckBox1->setText(tr("GEOM_CREATE_COPY")); - - Layout1->addWidget(GroupPoints, 2, 0); - /***************************************************************/ - - Init(); -} - - -//================================================================================= -// function : ~TransformationGUI_TranslationDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= -TransformationGUI_TranslationDlg::~TransformationGUI_TranslationDlg() -{ - // no need to delete child widgets, Qt does it all for us -} - - -//================================================================================= -// function : Init() -// purpose : -//================================================================================= -void TransformationGUI_TranslationDlg::Init() -{ - /* init variables */ - myEditCurrentArgument = GroupPoints->LineEdit1; - GroupPoints->LineEdit1->setReadOnly(true); - GroupPoints->LineEdit2->setReadOnly(true); - GroupPoints->LineEdit3->setReadOnly(true); - - myVector = myPoint1 = myPoint2 = GEOM::GEOM_Object::_nil(); - - // Activate Create a Copy mode - GroupPoints->CheckBox1->setChecked(true); - CreateCopyModeChanged(true); - - /* Get setting of step value from file configuration */ - SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); - double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100); - - /* min, max, step and decimals for spin boxes & initial values */ - GroupPoints->SpinBox1->RangeStepAndValidator(-999.999, 999.999, step, 3); - GroupPoints->SpinBox2->RangeStepAndValidator(-999.999, 999.999, step, 3); - GroupPoints->SpinBox3->RangeStepAndValidator(-999.999, 999.999, step, 3); - - GroupPoints->SpinBox1->SetValue(0.0); - GroupPoints->SpinBox2->SetValue(0.0); - GroupPoints->SpinBox3->SetValue(0.0); - - /* signals and slots connections */ - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - connect(GroupConstructors, SIGNAL(clicked(int)), SLOT(ConstructorsClicked(int))); - - connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupPoints->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupPoints->PushButton3, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - - connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); //@ Delete ? - - connect(GroupPoints->SpinBox1, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox())); - connect(GroupPoints->SpinBox2, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox())); - connect(GroupPoints->SpinBox3, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox())); - - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupPoints->SpinBox1, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupPoints->SpinBox2, SLOT(SetStep(double))); - connect(myGeometryGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupPoints->SpinBox3, SLOT(SetStep(double))); - - connect(GroupPoints->CheckBox1, SIGNAL(toggled(bool)), this, SLOT(CreateCopyModeChanged(bool))); - - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - - initName( tr( "GEOM_TRANSLATION" ) ); - ConstructorsClicked( 0 ); -} - - -//================================================================================= -// function : ConstructorsClicked() -// purpose : Radio button management -//================================================================================= -void TransformationGUI_TranslationDlg::ConstructorsClicked(int constructorId) -{ - disconnect( ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), 0, this, 0 ); - - myEditCurrentArgument = GroupPoints->LineEdit1; - globalSelection(); - - switch (constructorId) - { - case 0: /* translation an object by dx, dy, dz */ - { - GroupPoints->ShowRows(1,2,false); - resize(0,0); - GroupPoints->ShowRows(3,5,true); - break; - } - case 1: /* translation an object by 2 points */ - { - GroupPoints->ShowRows(3,5,false); - resize(0,0); - GroupPoints->ShowRows(0,2,true); - GroupPoints->TextLabel2->setText(tr("GEOM_POINT_I").arg("1")); - GroupPoints->LineEdit2->clear(); - GroupPoints->LineEdit3->clear(); - myPoint1 = myPoint2 = GEOM::GEOM_Object::_nil(); - break; - } - case 2: /* translation an object by vector */ - { - GroupPoints->ShowRows(2,5,false); - resize(0,0); - GroupPoints->ShowRows(0,1,true); - GroupPoints->TextLabel2->setText(tr("GEOM_VECTOR")); - GroupPoints->LineEdit2->clear(); - myVector = GEOM::GEOM_Object::_nil(); - break; - } - } - - myEditCurrentArgument->setFocus(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); -} - - -//================================================================================= -// function : ClickOnOk() -// purpose : -//================================================================================= -void TransformationGUI_TranslationDlg::ClickOnOk() -{ - if ( ClickOnApply() ) - ClickOnCancel(); -} - - -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= -bool TransformationGUI_TranslationDlg::ClickOnApply() -{ - if ( !onAccept(GroupPoints->CheckBox1->isChecked()) ) - return false; - - initName(); - ConstructorsClicked( getConstructorId() ); - return true; -} - - -//======================================================================= -// function : ClickOnCancel() -// purpose : -//======================================================================= -void TransformationGUI_TranslationDlg::ClickOnCancel() -{ - GEOMBase_Skeleton::ClickOnCancel(); -} - - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection as changed or other case -//================================================================================= -void TransformationGUI_TranslationDlg::SelectionIntoArgument() -{ - myEditCurrentArgument->setText(""); - QString aName; - - if(myEditCurrentArgument == GroupPoints->LineEdit1) - { - int aNbSel = GEOMBase::GetNameOfSelectedIObjects(selectedIO(), aName); - - if(aNbSel < 1) - { - myObjects.length(0); - return; - } - GEOMBase::ConvertListOfIOInListOfGO(selectedIO(), myObjects); - if (!myObjects.length()) - return; - } - else - { - if (IObjectCount() != 1) { - if(myEditCurrentArgument == GroupPoints->LineEdit2 && getConstructorId() == 1) - myPoint1 = GEOM::GEOM_Object::_nil(); - else if(myEditCurrentArgument == GroupPoints->LineEdit2 && getConstructorId() == 2) - myVector = GEOM::GEOM_Object::_nil(); - else if(myEditCurrentArgument == GroupPoints->LineEdit3) - myPoint2 = GEOM::GEOM_Object::_nil(); - return; - } - - Standard_Boolean testResult = Standard_False;; - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject(firstIObject(), testResult ); - - if (!testResult || CORBA::is_nil( aSelectedObject )) - return; - - if(myEditCurrentArgument == GroupPoints->LineEdit2 && getConstructorId() == 1) - myPoint1 = aSelectedObject; - else if(myEditCurrentArgument == GroupPoints->LineEdit2 && getConstructorId() == 2) - myVector = aSelectedObject; - else if(myEditCurrentArgument == GroupPoints->LineEdit3) - myPoint2 = aSelectedObject; - - aName = GEOMBase::GetName( aSelectedObject ); - } - - myEditCurrentArgument->setText( aName ); - - displayPreview(); -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void TransformationGUI_TranslationDlg::LineEditReturnPressed() -{ - QLineEdit* send = (QLineEdit*)sender(); - if(send == GroupPoints->LineEdit1) - { - myEditCurrentArgument = send; - GEOMBase_Skeleton::LineEditReturnPressed(); - } -} - - -//================================================================================= -// function : SetEditCurrentArgument() -// purpose : -//================================================================================= -void TransformationGUI_TranslationDlg::SetEditCurrentArgument() -{ - QPushButton* send = (QPushButton*)sender(); - - if(send == GroupPoints->PushButton1) - { - myEditCurrentArgument = GroupPoints->LineEdit1; - globalSelection(); - } - else if (send == GroupPoints->PushButton2) - { - myEditCurrentArgument = GroupPoints->LineEdit2; - getConstructorId() == 1 ? globalSelection( GEOM_POINT ) : - globalSelection( GEOM_LINE ); - } - else if (send == GroupPoints->PushButton3) - { - myEditCurrentArgument = GroupPoints->LineEdit3; - globalSelection( GEOM_POINT ); - } - - myEditCurrentArgument->setFocus(); - SelectionIntoArgument(); -} - - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void TransformationGUI_TranslationDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - - ConstructorsClicked( getConstructorId() ); -} - - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : public slot to deactivate if active -//================================================================================= -void TransformationGUI_TranslationDlg::DeactivateActiveDialog() -{ - GEOMBase_Skeleton::DeactivateActiveDialog(); -} - - -//================================================================================= -// function : enterEvent() -// purpose : -//================================================================================= -void TransformationGUI_TranslationDlg::enterEvent(QEvent* e) -{ - if(!GroupConstructors->isEnabled()) - ActivateThisDialog(); -} - - -//================================================================================= -// function : ValueChangedInSpinBox() -// purpose : -//================================================================================= -void TransformationGUI_TranslationDlg::ValueChangedInSpinBox() -{ - displayPreview(); -} - - -//================================================================================= -// function : createOperation -// purpose : -//================================================================================= -GEOM::GEOM_IOperations_ptr TransformationGUI_TranslationDlg::createOperation() -{ - return myGeometryGUI->GetGeomGen()->GetITransformOperations( getStudyId() ); -} - - -//================================================================================= -// function : isValid -// purpose : -//================================================================================= -bool TransformationGUI_TranslationDlg::isValid( QString& msg ) -{ - int aConstructorId = getConstructorId(); - - switch (aConstructorId) - { - case 0: - { - return !(myObjects.length() == 0 ); - break; - } - case 1: - { - return !(myObjects.length() == 0 || myPoint1->_is_nil() || myPoint2->_is_nil() ); - break; - } - case 2: - { - return !(myObjects.length() == 0 || myVector->_is_nil()); - break; - } - default: return false; - } -} - -//================================================================================= -// function : execute -// purpose : -//================================================================================= -bool TransformationGUI_TranslationDlg::execute( ObjectList& objects ) -{ - bool res = false; - bool toCreateCopy = IsPreview() || GroupPoints->CheckBox1->isChecked(); - - GEOM::GEOM_Object_var anObj; - - switch ( getConstructorId() ) - { - case 0 : - { - double dx = GroupPoints->SpinBox1->GetValue(); - double dy = GroupPoints->SpinBox2->GetValue(); - double dz = GroupPoints->SpinBox3->GetValue(); - - if (toCreateCopy) - for (int i = 0; i < myObjects.length(); i++) - { - anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->TranslateDXDYDZCopy( myObjects[i], dx, dy, dz ); - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - } - else - for (int i = 0; i < myObjects.length(); i++) - { - anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->TranslateDXDYDZ( myObjects[i], dx, dy, dz ); - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - } - res = true; - break; - } - case 1 : - { - if (toCreateCopy) - for (int i = 0; i < myObjects.length(); i++) - { - anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->TranslateTwoPointsCopy( myObjects[i], myPoint1, myPoint2 ); - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - } - else - for (int i = 0; i < myObjects.length(); i++) - { - anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->TranslateTwoPoints( myObjects[i], myPoint1, myPoint2 ); - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - } - res = true; - break; - } - case 2: - { - if (toCreateCopy) - for (int i = 0; i < myObjects.length(); i++) - { - anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->TranslateVectorCopy( myObjects[i], myVector ); - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - } - else - for (int i = 0; i < myObjects.length(); i++) - { - anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->TranslateVector( myObjects[i], myVector ); - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); - } - res = true; - break; - } - } - - return res; -} - - -//================================================================================= -// function : closeEvent -// purpose : -//================================================================================= -void TransformationGUI_TranslationDlg::closeEvent( QCloseEvent* e ) -{ - // myGeomGUI->SetState( -1 ); - GEOMBase_Skeleton::closeEvent( e ); -} - - -//================================================================================= -// function : CreateCopyModeChanged() -// purpose : -//================================================================================= -void TransformationGUI_TranslationDlg::CreateCopyModeChanged(bool isCreateCopy) -{ - GroupBoxName->setEnabled(isCreateCopy); -} diff --git a/src/TransformationGUI/TransformationGUI_TranslationDlg.h b/src/TransformationGUI/TransformationGUI_TranslationDlg.h deleted file mode 100644 index 069c33435..000000000 --- a/src/TransformationGUI/TransformationGUI_TranslationDlg.h +++ /dev/null @@ -1,81 +0,0 @@ -// GEOM GEOMGUI : GUI for Geometry component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : TransformationGUI_TranslationDlg.h -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ - -#ifndef DIALOGBOX_TRANSLATION_H -#define DIALOGBOX_TRANSLATION_H - -#include "GEOMBase_Skeleton.h" -#include "DlgRef_3Sel3Spin1Check.h" - - -//================================================================================= -// class : TransformationGUI_TranslationDlg -// purpose : -//================================================================================= -class TransformationGUI_TranslationDlg : public GEOMBase_Skeleton -{ - Q_OBJECT - -public: - TransformationGUI_TranslationDlg(GeometryGUI* theGeometryGUI, QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); - ~TransformationGUI_TranslationDlg(); - -protected: - // redefined from GEOMBase_Helper - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool isValid( QString& ); - virtual bool execute( ObjectList& objects ); - - virtual void closeEvent( QCloseEvent* e ); - -private : - void Init(); - void enterEvent(QEvent* e); - - GeometryGUI* myGeometryGUI; - - GEOM::GEOM_Object_var myVector, myPoint1, myPoint2; - GEOM::ListOfGO myObjects; - - DlgRef_3Sel3Spin1Check* GroupPoints; - -private slots : - void ClickOnOk(); - bool ClickOnApply(); - void ClickOnCancel(); - void ActivateThisDialog(); - void DeactivateActiveDialog(); - void LineEditReturnPressed(); - void SelectionIntoArgument(); - void SetEditCurrentArgument(); - void ValueChangedInSpinBox(); - void ConstructorsClicked(int constructorId); - void CreateCopyModeChanged(bool isCreateCopy); -}; - -#endif // DIALOGBOX_TRANSLATION_H -- 2.39.2

    Creating basic geometrical objects