From 0eeaed469a5b7b41148756c3c27c5da6490d1945 Mon Sep 17 00:00:00 2001 From: rraphael Date: Wed, 20 Jan 2021 12:12:21 +0100 Subject: [PATCH] add icons. Rectangle: link start/center and end points to picked points --- .../doc/images/group_shape.png | Bin 0 -> 843 bytes .../doc/images/group_shape_property_panel.png | Bin 0 -> 11996 bytes src/CollectionPlugin/icons/group_shape.png | Bin 0 -> 843 bytes .../icons/svg/group_shape.svg | 230 ++++++++++++++++++ .../SketchPlugin_MacroRectangle.cpp | 49 +++- .../SketchPlugin_MacroRectangle.h | 25 ++ .../icons/rectangle_center_end.png | Bin 0 -> 1143 bytes .../icons/rectangle_start_end.png | Bin 0 -> 437 bytes .../icons/svg/rectangle_center_end.svg | 116 +++++++++ .../icons/svg/rectangle_start_end.svg | 102 ++++++++ src/SketchPlugin/plugin-Sketch.xml | 14 +- 11 files changed, 527 insertions(+), 9 deletions(-) create mode 100644 src/CollectionPlugin/doc/images/group_shape.png create mode 100644 src/CollectionPlugin/doc/images/group_shape_property_panel.png create mode 100644 src/CollectionPlugin/icons/group_shape.png create mode 100644 src/CollectionPlugin/icons/svg/group_shape.svg create mode 100644 src/SketchPlugin/icons/rectangle_center_end.png create mode 100644 src/SketchPlugin/icons/rectangle_start_end.png create mode 100644 src/SketchPlugin/icons/svg/rectangle_center_end.svg create mode 100644 src/SketchPlugin/icons/svg/rectangle_start_end.svg diff --git a/src/CollectionPlugin/doc/images/group_shape.png b/src/CollectionPlugin/doc/images/group_shape.png new file mode 100644 index 0000000000000000000000000000000000000000..73b474f8ba51de02b5e4ad34959b501f9fe5d459 GIT binary patch literal 843 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 literal 0 HcmV?d00001 diff --git a/src/CollectionPlugin/icons/group_shape.png b/src/CollectionPlugin/icons/group_shape.png new file mode 100644 index 0000000000000000000000000000000000000000..73b474f8ba51de02b5e4ad34959b501f9fe5d459 GIT binary patch literal 843 zcmV-R1GM~!P)r5q)89=6ipbZ$|tNbU*mSZjZtc?z@{khxyF1SLY^2UsAJqduiat+;t?0 zTDIW+d2pS{ikGMJMSBXuvydOAC7EjS^Ll-w8}At$6~n_}`}day5yt|Wh?BysP>+jV z+;7h6X>fV`SNLkUJB|@=J^%A*L~owv$CvO^^KZTO8}K?n&*O(T#2($_ih2ciV!qwQ zh1zm{U%eVFbX-&4kY~}4+T2&p946)J1m6a_D16$*3^~(j?W(U^*QXu9{TS%sC`66m zws&THWNK&M;B{$|UkW&R9O;?wPM_SlsHJsgRyHvUx`UvJq^9G)^ zUG9FOy{&z~+qU3~|icV`dK1^$H*rZdYLxc6Vl`9LBPUMM6j z8`CVU3AQSP8-kRy6bgMS$F^y2={dmw()Dikm5VbdIwx}nC>9GnaU9Rh@j+De}1^ + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/SketchPlugin/SketchPlugin_MacroRectangle.cpp b/src/SketchPlugin/SketchPlugin_MacroRectangle.cpp index cd3a06c26..ff1c97321 100644 --- a/src/SketchPlugin/SketchPlugin_MacroRectangle.cpp +++ b/src/SketchPlugin/SketchPlugin_MacroRectangle.cpp @@ -21,6 +21,7 @@ #include "SketchPlugin_Rectangle.h" #include "SketchPlugin_Sketch.h" #include "SketchPlugin_Tools.h" +#include "SketchPlugin_Line.h" #include #include @@ -53,12 +54,20 @@ void SketchPlugin_MacroRectangle::initAttributes() { data()->addAttribute(AUXILIARY_ID(), ModelAPI_AttributeBoolean::typeId()); data()->addAttribute(START1_ID(), GeomDataAPI_Point2D::typeId()); + data()->addAttribute(START1_REF_ID(), ModelAPI_AttributeRefAttr::typeId()); data()->addAttribute(END1_ID(), GeomDataAPI_Point2D::typeId()); + data()->addAttribute(END1_REF_ID(), ModelAPI_AttributeRefAttr::typeId()); data()->addAttribute(END2_ID(), GeomDataAPI_Point2D::typeId()); + data()->addAttribute(END2_REF_ID(), ModelAPI_AttributeRefAttr::typeId()); data()->addAttribute(CENTER_ID(), GeomDataAPI_Point2D::typeId()); + data()->addAttribute(CENTER_REF_ID(), ModelAPI_AttributeRefAttr::typeId()); data()->addAttribute(RECTANGLE_TYPE_ID(), ModelAPI_AttributeString::typeId()); data()->addAttribute(EDIT_RECTANGLE_TYPE_ID(), ModelAPI_AttributeString::typeId()); ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), EDIT_RECTANGLE_TYPE_ID()); + ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), CENTER_REF_ID()); + ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), END2_REF_ID()); + ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), END1_REF_ID()); + ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), START1_REF_ID()); string(EDIT_RECTANGLE_TYPE_ID())->setValue(""); } @@ -131,7 +140,7 @@ void SketchPlugin_MacroRectangle::execute() if(myHasCenterPoint){ std::dynamic_pointer_cast( myRectangleFeature->attribute(SketchPlugin_Rectangle::CENTER_ID()))->setValue(myCenterPoint->x(), - myCenterPoint->y()); + myCenterPoint->y()); } std::dynamic_pointer_cast( @@ -145,9 +154,32 @@ void SketchPlugin_MacroRectangle::execute() ->setValue(boolean(AUXILIARY_ID())->value()); myRectangleFeature->execute(); + /// create coincidences with rectangle start/center and end points + AttributeRefListPtr aLinesList = myRectangleFeature->reflist(SketchPlugin_Rectangle::LINES_LIST_ID()); + FeaturePtr aRectangleStartLineFeature = std::dynamic_pointer_cast(aLinesList->object(0)); + FeaturePtr aRectangleEndLineFeature = std::dynamic_pointer_cast(aLinesList->object(2)); + std::shared_ptr aRectanglePointEndAttr = + std::dynamic_pointer_cast(aRectangleEndLineFeature->attribute(SketchPlugin_Line::END_ID())); + std::shared_ptr aRectanglePointStartAttr = + std::dynamic_pointer_cast(aRectangleStartLineFeature->attribute(SketchPlugin_Line::END_ID())); + + if(myHasCenterPoint){ + FeaturePtr aCenterPointFeature = std::dynamic_pointer_cast(myRectangleFeature->refattr(CENTER_REF_ID())->object()); + SketchPlugin_Tools::createCoincidenceOrTangency( + this, CENTER_REF_ID(), AttributePtr(), aCenterPointFeature, false); + SketchPlugin_Tools::createCoincidenceOrTangency( + this, END2_REF_ID(), aRectanglePointEndAttr, ObjectPtr(), false); + } + else{ + SketchPlugin_Tools::createCoincidenceOrTangency( + this, START1_REF_ID(), aRectanglePointStartAttr, ObjectPtr(), false); + SketchPlugin_Tools::createCoincidenceOrTangency( + this, END1_REF_ID(), aRectanglePointEndAttr, ObjectPtr(), false); + } + /// Send events to update the sub-features by the solver. if (isUpdateFlushed) - Events_Loop::loop()->setFlushed(anUpdateEvent, true); + Events_Loop::loop()->setFlushed(anUpdateEvent, true); } void SketchPlugin_MacroRectangle::attributeChanged(const std::string& theID) @@ -157,9 +189,19 @@ void SketchPlugin_MacroRectangle::attributeChanged(const std::string& theID) SketchPlugin_Tools::resetAttribute(this, END1_ID()); SketchPlugin_Tools::resetAttribute(this, CENTER_ID()); SketchPlugin_Tools::resetAttribute(this, END2_ID()); + SketchPlugin_Tools::resetAttribute(this, START1_REF_ID()); + SketchPlugin_Tools::resetAttribute(this, END1_REF_ID()); + SketchPlugin_Tools::resetAttribute(this, CENTER_REF_ID()); + SketchPlugin_Tools::resetAttribute(this, END2_REF_ID()); + myStartPoint.reset(); + myEndPoint.reset(); + myCenterPoint.reset(); + myHasCenterPoint = false; } else if (theID == START1_ID() || theID == END1_ID() || - theID == END2_ID() || theID == CENTER_ID()) + theID == START1_REF_ID() || theID == END1_REF_ID() || + theID == END2_ID() || theID == CENTER_ID() || + theID == END2_REF_ID() || theID == CENTER_REF_ID()) { // update points startPoint(); @@ -229,4 +271,3 @@ AISObjectPtr SketchPlugin_MacroRectangle::getAISObject(AISObjectPtr thePrevious) return anAIS; } - diff --git a/src/SketchPlugin/SketchPlugin_MacroRectangle.h b/src/SketchPlugin/SketchPlugin_MacroRectangle.h index 46208f862..fc78a1cde 100644 --- a/src/SketchPlugin/SketchPlugin_MacroRectangle.h +++ b/src/SketchPlugin/SketchPlugin_MacroRectangle.h @@ -72,12 +72,25 @@ public: return ID; } + inline static const std::string& START1_REF_ID() + { + static const std::string ID("rectangle_start_point1_ref"); + return ID; + } + /// 2D point - end point of the Rectangle inline static const std::string& END1_ID() { static const std::string ID("rectangle_end_point1"); return ID; } + + inline static const std::string& END1_REF_ID() + { + static const std::string ID("rectangle_end_point1_ref"); + return ID; + } + /// 2D point - start point of the second Rectangle type inline static const std::string& END2_ID() { @@ -85,12 +98,24 @@ public: return ID; } + inline static const std::string& END2_REF_ID() + { + static const std::string ID("rectangle_end_point2_ref"); + return ID; + } + /// 2D point - center point of the second Rectangle type inline static const std::string& CENTER_ID() { static const std::string ID("rectangle_center_point"); return ID; } + /// Reference for center point selection. + inline static const std::string& CENTER_REF_ID() + { + static const std::string ID("rectangle_center_point_ref"); + return ID; + } /// Returns the kind of a feature SKETCHPLUGIN_EXPORT virtual const std::string& getKind() diff --git a/src/SketchPlugin/icons/rectangle_center_end.png b/src/SketchPlugin/icons/rectangle_center_end.png new file mode 100644 index 0000000000000000000000000000000000000000..44728111ae38064d5f1f9daac2420e9d5d7be423 GIT binary patch literal 1143 zcmV--1c>{IP)iT!swS!0HYPNY7;tUl zgo>s#qN30eFb`IWO9dB1!RnKiKBd|qmP)IA2=yr_3bi&=NnIvJXh4i9q2NNBCX-C| zWab_p?ianLon)3wa^S+;?>p!GfAg(}E5T5`RzxF|M+Z4xScJ0lRyh=*Yx+9A6R;v0@i%vcAHHRL^hSV~2xY^Abgl>>!BD-fnwq4gv;9Kp z@KA|~=@z&{V0y72mrLp+I{9u~*D1;UKS%UmT;i!TLj0#kF zpz(aZf6VP?%?=b8GzkI<2L$#D44Jl!ca(xpjjlMO7Xo&=wP)K^kS^E(ff}I6B;TUY ztMGURfEyLg0WTYkE`j@i*16&mLYgFD0o(lhPk}WGC*#f(El&~fS%nUuQsEtiGPg$B zkS^FMfdfF)yg#k*i^9ev;Cwc;Dl`LmfGQjTdXmvj8q$Cr7bpk5b;bUbMBJ3ZfO+i` z*y(}i1jduq_9p9S1TQMo*zkr0-v9+Rgn^YfqdfheD*=TsJ+Rw?7i^fa;7x(csc5DQ zY1CuD+W_Vaz14IDuHjy5Vxqt^scOww($k%$d?pAn2;gCWlaLH6oc|hMRS07*t zL;!3!3iM;jv8+M@Z9vS1CJ!{=+$3|F!jlS52;7^7UUJi|&=7|cu99k(1&346IU}%p zrUX>j6NmR*%VtiSb0ih~HhiG4%Pgj|z=r}qr2vSzWm-(m5`}{T%N1(Wf&V!zNQJHH z+}G<((*S8)Y1c3h(2cXEHz~BMGb<+@SvcI?Rr>krwE)~daOHM_p?VF5>UDMK(RXJ- zHrk-(IjvB*0Dv>Oy>ZxYJ8N5Q7;$M`^;ollHz`yBh*LAR2)rUtEAYocK?=k?PQ@Pr zeq^2*`rmZh@RGoT3R?t*J@C{*fhB-#1FCKKeNM<#QU1^%-8O#ai`-m0p0Ho4@2=H-y}$8dX(a&pu^7YNbdJyT?OgjQipEA0_FKJq z*Ap%Xu(jV=7K;s-jCpOWx?}5#@u-T8EXnt(;N-+dz}iIp{{UC~S>~l}4DB7*~N4SWCRBI*;181N9gxQ6c+pF9r$P#XuU{|WjCU}JXf4f^qM z*P7K^15K=cO1Z7ggVw7FNZ7lOl9fMgl28J77_@ZMqTcfbRD-c{ZqMokhqpwzwrR+E fI5`DSR?WWwZ#hYpmYP&-00000NkvXXu0mjfmKe8s literal 0 HcmV?d00001 diff --git a/src/SketchPlugin/icons/svg/rectangle_center_end.svg b/src/SketchPlugin/icons/svg/rectangle_center_end.svg new file mode 100644 index 000000000..143fbe2a7 --- /dev/null +++ b/src/SketchPlugin/icons/svg/rectangle_center_end.svg @@ -0,0 +1,116 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/src/SketchPlugin/icons/svg/rectangle_start_end.svg b/src/SketchPlugin/icons/svg/rectangle_start_end.svg new file mode 100644 index 000000000..784d3aa45 --- /dev/null +++ b/src/SketchPlugin/icons/svg/rectangle_start_end.svg @@ -0,0 +1,102 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/src/SketchPlugin/plugin-Sketch.xml b/src/SketchPlugin/plugin-Sketch.xml index 813607e51..628801e68 100644 --- a/src/SketchPlugin/plugin-Sketch.xml +++ b/src/SketchPlugin/plugin-Sketch.xml @@ -87,34 +87,38 @@ helpfile="rectangleFeature.html"> - - + - +