diff --git a/src/Mod/Part/MakeBottle.py b/src/Mod/Part/MakeBottle.py index 92922059a1..22b14ef256 100644 --- a/src/Mod/Part/MakeBottle.py +++ b/src/Mod/Part/MakeBottle.py @@ -15,7 +15,7 @@ def makeBottle(myWidth=50.0, myHeight=70.0, myThickness=30.0): aPnt3=Base.Vector(0,-myThickness/2.,0) aPnt4=Base.Vector(myWidth/2.,-myThickness/4.,0) aPnt5=Base.Vector(myWidth/2.,0,0) - + aArcOfCircle = Part.Arc(aPnt2,aPnt3,aPnt4) aSegment1=Part.LineSegment(aPnt1,aPnt2) aSegment2=Part.LineSegment(aPnt4,aPnt5) @@ -24,26 +24,26 @@ def makeBottle(myWidth=50.0, myHeight=70.0, myThickness=30.0): aEdge2=aArcOfCircle.toShape() aEdge3=aSegment2.toShape() aWire=Part.Wire([aEdge1,aEdge2,aEdge3]) - + aTrsf=Base.Matrix() aTrsf.rotateZ(math.pi) # rotate around the z-axis aMirroredWire=aWire.copy() aMirroredWire.transformShape(aTrsf) myWireProfile=Part.Wire([aWire,aMirroredWire]) - + myFaceProfile=Part.Face(myWireProfile) aPrismVec=Base.Vector(0,0,myHeight) myBody=myFaceProfile.extrude(aPrismVec) - + myBody=myBody.makeFillet(myThickness/12.0,myBody.Edges) - + neckLocation=Base.Vector(0,0,myHeight) neckNormal=Base.Vector(0,0,1) - + myNeckRadius = myThickness / 4. myNeckHeight = myHeight / 10 - myNeck = Part.makeCylinder(myNeckRadius,myNeckHeight,neckLocation,neckNormal) + myNeck = Part.makeCylinder(myNeckRadius,myNeckHeight,neckLocation,neckNormal) myBody = myBody.fuse(myNeck) faceToRemove = 0 diff --git a/src/Mod/PartDesign/App/DatumPlane.cpp b/src/Mod/PartDesign/App/DatumPlane.cpp index b6317b1549..66d8345b77 100644 --- a/src/Mod/PartDesign/App/DatumPlane.cpp +++ b/src/Mod/PartDesign/App/DatumPlane.cpp @@ -1,92 +1,92 @@ /*************************************************************************** * Copyright (c) 2013 * * Jan Rheinländer * - * This file is part of the FreeCAD CAx development system. * - * * - * This library is free software; you can redistribute it and/or * - * modify it under the terms of the GNU Library General Public * - * License as published by the Free Software Foundation; either * - * version 2 of the License, or (at your option) any later version. * - * * - * This library is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU Library General Public License for more details. * - * * - * You should have received a copy of the GNU Library General Public * - * License along with this library; see the file COPYING.LIB. If not, * - * write to the Free Software Foundation, Inc., 59 Temple Place, * - * Suite 330, Boston, MA 02111-1307, USA * - * * - ***************************************************************************/ - - -#include "PreCompiled.h" - -#ifndef _PreComp_ -# include -# include -# include -#endif - -#include "DatumPlane.h" - -using namespace PartDesign; -using namespace Attacher; - -// ============================================================================ - -const char* Plane::ResizeModeEnums[]= {"Automatic","Manual",NULL}; - -PROPERTY_SOURCE(PartDesign::Plane, Part::Datum) - -Plane::Plane() -{ - // These properties are only relevant for the visual appearance. - // Since they are getting changed from within its view provider + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + + +#include "PreCompiled.h" + +#ifndef _PreComp_ +# include +# include +# include +#endif + +#include "DatumPlane.h" + +using namespace PartDesign; +using namespace Attacher; + +// ============================================================================ + +const char* Plane::ResizeModeEnums[]= {"Automatic","Manual",NULL}; + +PROPERTY_SOURCE(PartDesign::Plane, Part::Datum) + +Plane::Plane() +{ + // These properties are only relevant for the visual appearance. + // Since they are getting changed from within its view provider // their type is set to "Output" to avoid that they are marked as - // touched all the time. - ADD_PROPERTY_TYPE(ResizeMode,(static_cast(0)), "Size", App::Prop_Output, "Automatic or manual resizing"); - ResizeMode.setEnums(ResizeModeEnums); - ADD_PROPERTY_TYPE(Length,(20), "Size", App::Prop_Output, "Length of the plane"); - ADD_PROPERTY_TYPE(Width,(20), "Size", App::Prop_Output, "Width of the plane"); - - Length.setReadOnly(true); - Width.setReadOnly(true); - - this->setAttacher(new AttachEnginePlane); - // Create a shape, which will be used by the Sketcher. Them main function is to avoid a dependency of - // Sketcher on the PartDesign module - BRepBuilderAPI_MakeFace builder(gp_Pln(gp_Pnt(0,0,0), gp_Dir(0,0,1))); - if (!builder.IsDone()) - return; - Shape.setValue(builder.Shape()); -} - -Plane::~Plane() -{ -} - -Base::Vector3d Plane::getNormal() -{ - Base::Rotation rot = Placement.getValue().getRotation(); - Base::Vector3d normal; - rot.multVec(Base::Vector3d(0,0,1), normal); - return normal; -} - -void Plane::onChanged(const App::Property *prop) -{ - if (prop == &ResizeMode) { - if (ResizeMode.getValue() == 0) { - Length.setReadOnly(true); - Width.setReadOnly(true); - } - else { - Length.setReadOnly(false); - Width.setReadOnly(false); - } - } - - Datum::onChanged(prop); -} + // touched all the time. + ADD_PROPERTY_TYPE(ResizeMode,(static_cast(0)), "Size", App::Prop_Output, "Automatic or manual resizing"); + ResizeMode.setEnums(ResizeModeEnums); + ADD_PROPERTY_TYPE(Length,(20), "Size", App::Prop_Output, "Length of the plane"); + ADD_PROPERTY_TYPE(Width,(20), "Size", App::Prop_Output, "Width of the plane"); + + Length.setReadOnly(true); + Width.setReadOnly(true); + + this->setAttacher(new AttachEnginePlane); + // Create a shape, which will be used by the Sketcher. Them main function is to avoid a dependency of + // Sketcher on the PartDesign module + BRepBuilderAPI_MakeFace builder(gp_Pln(gp_Pnt(0,0,0), gp_Dir(0,0,1))); + if (!builder.IsDone()) + return; + Shape.setValue(builder.Shape()); +} + +Plane::~Plane() +{ +} + +Base::Vector3d Plane::getNormal() +{ + Base::Rotation rot = Placement.getValue().getRotation(); + Base::Vector3d normal; + rot.multVec(Base::Vector3d(0,0,1), normal); + return normal; +} + +void Plane::onChanged(const App::Property *prop) +{ + if (prop == &ResizeMode) { + if (ResizeMode.getValue() == 0) { + Length.setReadOnly(true); + Width.setReadOnly(true); + } + else { + Length.setReadOnly(false); + Width.setReadOnly(false); + } + } + + Datum::onChanged(prop); +}