From b315e4c78c31ede880b5cde8d6505c9552b017ee Mon Sep 17 00:00:00 2001 From: mpv Date: Fri, 28 Sep 2018 09:29:28 +0300 Subject: [PATCH] User's documentation for Fuse Faces feature --- .../doc/TUI_fusefacesFeature.rst | 12 +++++ src/FeaturesPlugin/doc/examples/fuse_faces.py | 42 ++++++++++++++++ src/FeaturesPlugin/doc/fuseFeatureFaces.rst | 45 ++++++++++++++++++ .../doc/images/CreatedFuseFaces.png | Bin 0 -> 11022 bytes src/FeaturesPlugin/doc/images/FuseFaces.png | Bin 0 -> 5562 bytes .../doc/images/fusion_faces.png | Bin 0 -> 807 bytes 6 files changed, 99 insertions(+) create mode 100644 src/FeaturesPlugin/doc/TUI_fusefacesFeature.rst create mode 100644 src/FeaturesPlugin/doc/examples/fuse_faces.py create mode 100644 src/FeaturesPlugin/doc/fuseFeatureFaces.rst create mode 100644 src/FeaturesPlugin/doc/images/CreatedFuseFaces.png create mode 100644 src/FeaturesPlugin/doc/images/FuseFaces.png create mode 100644 src/FeaturesPlugin/doc/images/fusion_faces.png diff --git a/src/FeaturesPlugin/doc/TUI_fusefacesFeature.rst b/src/FeaturesPlugin/doc/TUI_fusefacesFeature.rst new file mode 100644 index 000000000..00b1a9f9b --- /dev/null +++ b/src/FeaturesPlugin/doc/TUI_fusefacesFeature.rst @@ -0,0 +1,12 @@ + + .. _tui_create_fuse_faces: + +Fuse Faces +========== + +.. literalinclude:: examples/fuse_faces.py + :linenos: + :language: python + +:download:`Download this script ` + diff --git a/src/FeaturesPlugin/doc/examples/fuse_faces.py b/src/FeaturesPlugin/doc/examples/fuse_faces.py new file mode 100644 index 000000000..888480992 --- /dev/null +++ b/src/FeaturesPlugin/doc/examples/fuse_faces.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- + +from SketchAPI import * + +from salome.shaper import model + +model.begin() +partSet = model.moduleDocument() +Part_1 = model.addPart(partSet) +Part_1_doc = Part_1.document() +Sketch_1 = model.addSketch(Part_1_doc, model.defaultPlane("XOZ")) +SketchLine_1 = Sketch_1.addLine(0, 75.67806267806267, 34.24216524216526, 75.67806267806267) +SketchProjection_1 = Sketch_1.addProjection(model.selection("EDGE", "PartSet/OZ"), False) +SketchLine_2 = SketchProjection_1.createdFeature() +SketchConstraintCoincidence_1 = Sketch_1.setCoincident(SketchLine_1.startPoint(), SketchLine_2.result()) +SketchLine_3 = Sketch_1.addLine(34.24216524216526, 75.67806267806267, 34.24216524216526, 46.03988603988604) +SketchConstraintCoincidence_2 = Sketch_1.setCoincident(SketchLine_1.endPoint(), SketchLine_3.startPoint()) +SketchLine_4 = Sketch_1.addLine(34.24216524216526, 46.03988603988604, 63.30484330484332, 46.03988603988604) +SketchConstraintCoincidence_3 = Sketch_1.setCoincident(SketchLine_3.endPoint(), SketchLine_4.startPoint()) +SketchLine_5 = Sketch_1.addLine(63.30484330484332, 46.03988603988604, 63.30484330484332, -2.775557561562891e-17) +SketchConstraintCoincidence_4 = Sketch_1.setCoincident(SketchLine_4.endPoint(), SketchLine_5.startPoint()) +SketchProjection_2 = Sketch_1.addProjection(model.selection("EDGE", "PartSet/OX"), False) +SketchLine_6 = SketchProjection_2.createdFeature() +SketchConstraintCoincidence_5 = Sketch_1.setCoincident(SketchLine_5.endPoint(), SketchLine_6.result()) +SketchLine_7 = Sketch_1.addLine(63.30484330484332, -2.775557561562891e-17, 0, 0) +SketchConstraintCoincidence_6 = Sketch_1.setCoincident(SketchLine_5.endPoint(), SketchLine_7.startPoint()) +SketchConstraintCoincidence_7 = Sketch_1.setCoincident(SketchAPI_Line(SketchLine_2).startPoint(), SketchLine_7.endPoint()) +SketchLine_8 = Sketch_1.addLine(0, 75.67806267806267, 0, 0) +SketchConstraintCoincidence_8 = Sketch_1.setCoincident(SketchLine_1.startPoint(), SketchLine_8.startPoint()) +SketchConstraintCoincidence_9 = Sketch_1.setCoincident(SketchAPI_Line(SketchLine_2).startPoint(), SketchLine_8.endPoint()) +SketchConstraintVertical_1 = Sketch_1.setVertical(SketchLine_3.result()) +SketchConstraintVertical_2 = Sketch_1.setVertical(SketchLine_5.result()) +SketchConstraintHorizontal_1 = Sketch_1.setHorizontal(SketchLine_1.result()) +SketchConstraintHorizontal_2 = Sketch_1.setHorizontal(SketchLine_4.result()) +model.do() +Extrusion_1 = model.addExtrusion(Part_1_doc, [model.selection("COMPOUND", "Sketch_1")], model.selection(), 50, 0) +Extrusion_2 = model.addExtrusion(Part_1_doc, [model.selection("FACE", "Sketch_1/Face-SketchLine_1r-SketchLine_3r-SketchLine_4r-SketchLine_5r-SketchLine_7r-SketchLine_8f")], model.selection(), 0, 50) +Fuse_1 = model.addFuse(Part_1_doc, [model.selection("SOLID", "Extrusion_1_1")], [model.selection("SOLID", "Extrusion_2_1")]) +FusionFaces_1 = model.addFusionFaces(Part_1_doc, model.selection("SOLID", "Fuse_1_1")) +Export_1 = model.exportToXAO(Part_1_doc, '/tmp/shaper_gjzkis0q.xao', 'automatic_shaper_export_to_XAO') +model.do() +model.end() diff --git a/src/FeaturesPlugin/doc/fuseFeatureFaces.rst b/src/FeaturesPlugin/doc/fuseFeatureFaces.rst new file mode 100644 index 000000000..10be04ed0 --- /dev/null +++ b/src/FeaturesPlugin/doc/fuseFeatureFaces.rst @@ -0,0 +1,45 @@ + +Fuse Faces +========== + +The feature **Fuse Faces** eliminates the edges between adjacent same-domain faces lying on the same geometrical surface. This feature is useful for processing the results of **Fuse**, **Union** or **Partition** operations. + +To perform operation **Fuse Faces** in the active part: + +#. select in the Main Menu *Features - > Fuse Faces* item or +#. click **Fuse Faces** button in the toolbar + +.. image:: images/fusion_faces.png + :align: center + +.. centered:: + **Fuse Faces** button + +The following property panel appears: + +.. image:: images/FuseFaces.png + :align: center + +.. centered:: + **Fuse Faces** property panel + +Input fields: + +- **Shape** contains object selected in the Object Browser or in the Viewer, on which faces will be fused. + +**TUI Command**: *model.addFusionFaces(Part_doc, shape)* + +**Arguments**: Part + shape in format *model.selection(TYPE, shape)*. + +Result +"""""" + +The Result of the operation will be a shape with eliminated edges: + +.. image:: images/CreatedFuseFaces.png + :align: center + +.. centered:: + Shape before and after operation **Fuse Faces** + +**See Also** a sample TUI Script of a :ref:`tui_create_fuse_faces` operation. diff --git a/src/FeaturesPlugin/doc/images/CreatedFuseFaces.png b/src/FeaturesPlugin/doc/images/CreatedFuseFaces.png new file mode 100644 index 0000000000000000000000000000000000000000..e76e32dd723db68de7f94660ef4ffdfa75092a19 GIT binary patch literal 11022 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 JiGlOo{{u9AOZWf) literal 0 HcmV?d00001 diff --git a/src/FeaturesPlugin/doc/images/FuseFaces.png b/src/FeaturesPlugin/doc/images/FuseFaces.png new file mode 100644 index 0000000000000000000000000000000000000000..0c84d28bb8850c0c95353ffe3eacb9522e2d1381 GIT binary patch literal 5562 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 literal 0 HcmV?d00001 diff --git a/src/FeaturesPlugin/doc/images/fusion_faces.png b/src/FeaturesPlugin/doc/images/fusion_faces.png new file mode 100644 index 0000000000000000000000000000000000000000..b5cb25f7659608c24d7e9719e8c0cd0d3ea3f342 GIT binary patch literal 807 zcmV+?1K9kDP)6gmr9 z)P+P6n$$%^-3DERc+pJ}6s1_11eKLk21}D7NT?_fn{K7#3H`QtX#2kRd%7@X8Rq}; zdHMZ#4ll!>tSs7>qZsXFj5b;}7%HYQd8fa&*{)2&Sy?DwKU*xnn8)y1fZ&pwam*StX5BI3sB>Y6=UHfms6qa!o3*5pn_>hk!@w%1Y$%kB*KS`ppW_=VHR zde{Q(Kqb_vvoKw&ad_^D1Bed<0ws;DcZ%PG*D&{<%I_|hE3IN*IWpYo001*@J(9Dx zA$YZE@yJn4Dms4VWRDa=1gei#rM10iN7Magq^3BqW+q zng$sQCt(apiHR8cIfRm;VmMYf&^O@4q&A7*R0s+2amaAz4@PUwu)L*v^ zN5Z(-d<%6aY9XaWR_3}T_rN$LClf|=vGZ*=v|s?bt}hABM=-&;sSFie?D^OO0Eifo z;eEJ&_Wkf1S}62M0Km*Z@5hOXgY}kP|1;e*J^=Lf zo3}qP9RB67S*>KV#t;_*Q&U0J@AJ_MPlsx3x!a}d;p%_C*?h{&g;R@^Frr-mOD7