LibreCAD
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
dimradial.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "cad/const.h"
5 
7 #include "cad/base/cadentity.h"
9 #include "cad/math/lcmath.h"
10 #include <cad/primitive/point.h>
12 
13 namespace lc {
14  namespace entity {
21  class DimRadial : public std::enable_shared_from_this<DimRadial>, public CADEntity, public Dimension, virtual public Visitable, public Draggable {
22  public:
23 
34  double angle,
35  double const lineSpacingFactor,
37  std::string const &explicitValue,
39  const double leader,
40  const Layer_CSPtr layer,
41  const MetaInfo_CSPtr metaInfo = nullptr,
42  const Block_CSPtr block = nullptr
43  );
44 
48  DimRadial(geo::Coordinate const &definitionPoint,
49  TextConst::AttachmentPoint const &attachmentPoint,
50  double const lineSpacingFactor,
51  TextConst::LineSpacingStyle const &lineSpacingStyle,
52  std::string const &explicitValue,
53  geo::Coordinate const &definitionPoint2,
54  const double leader,
55  const Layer_CSPtr layer,
56  const MetaInfo_CSPtr metaInfo = nullptr,
57  const Block_CSPtr block = nullptr
58  );
59 
60  DimRadial(const DimRadial_CSPtr other, bool sameID = false);
61 
62  public:
68  virtual CADEntity_CSPtr move(const geo::Coordinate &offset) const override;
69 
75  virtual CADEntity_CSPtr copy(const geo::Coordinate &offset) const override;
76 
83  virtual CADEntity_CSPtr rotate(const geo::Coordinate &rotation_center, const double rotation_angle) const override;
84 
91  virtual CADEntity_CSPtr scale(const geo::Coordinate &scale_center,
92  const geo::Coordinate &scale_factor) const override;
93 
94  virtual CADEntity_CSPtr mirror(const geo::Coordinate& axis1,
95  const geo::Coordinate& axis2) const override;
96 
101  virtual const geo::Area boundingBox() const override;
102 
103  virtual CADEntity_CSPtr modify(Layer_CSPtr layer, const MetaInfo_CSPtr metaInfo, Block_CSPtr block) const override;
104 
105  double leader() const;
106 
107  geo::Coordinate definitionPoint2() const; // Where definitionPoint is the center, definitionPoint2 specifies the 'edge'
108 
109  protected:
110  const double _leader;
112  public:
113  virtual void accept(GeoEntityVisitor &v) const override { v.visit(*this); }
114 
115  virtual void dispatch(EntityDispatch &ed) const override {
116  ed.visit(shared_from_this());
117  }
118 
119  public:
120  virtual std::map<unsigned int, lc::geo::Coordinate> dragPoints() const override;
121  virtual CADEntity_CSPtr setDragPoints(std::map<unsigned int, lc::geo::Coordinate> dragPoints) const override;
122  };
123 
124  DECLARE_SHORT_SHARED_PTR(DimRadial)
125  }
126 }
virtual CADEntity_CSPtr modify(Layer_CSPtr layer, const MetaInfo_CSPtr metaInfo, Block_CSPtr block) const override
modify Return a new entity with the same ID bit with possible modified metainfo and/pr layer informat...
Definition: dimradial.cpp:79
TextConst::LineSpacingStyle lineSpacingStyle() const
Definition: dimension.cpp:91
const geo::Coordinate _definitionPoint2
Definition: dimradial.h:111
const geo::Coordinate & definitionPoint() const noexcept
move, moves by an offset
Definition: dimension.cpp:71
const double _leader
Definition: dimradial.h:110
virtual CADEntity_CSPtr move(const geo::Coordinate &offset) const override
move, moves by an offset
Definition: dimradial.cpp:45
virtual void visit(entity::Line_CSPtr)=0
virtual std::map< unsigned int, lc::geo::Coordinate > dragPoints() const override
Get all points of the entity that can be dragged.
Definition: dimradial.cpp:105
virtual CADEntity_CSPtr rotate(const geo::Coordinate &rotation_center, const double rotation_angle) const override
rotate, rotate operation
Definition: dimradial.cpp:56
std::string explicitValue() const
Definition: dimension.cpp:95
Layer_CSPtr layer() const
layer return the layer this entity is placed on
Definition: cadentity.cpp:29
virtual CADEntity_CSPtr setDragPoints(std::map< unsigned int, lc::geo::Coordinate > dragPoints) const override
Return modified entity.
Definition: dimradial.cpp:116
MetaInfo_CSPtr metaInfo() const
Definition: cadentity.h:123
DECLARE_SHORT_SHARED_PTR(Document)
const geo::Coordinate & middleOfText() const noexcept
Definition: dimension.cpp:75
TextConst::AttachmentPoint const & attachmentPoint() const
Definition: dimension.cpp:83
Definition: cadentity.h:12
virtual void dispatch(EntityDispatch &ed) const override
Definition: dimradial.h:115
virtual void accept(GeoEntityVisitor &v) const override
Definition: dimradial.h:113
double lineSpacingFactor() const
Definition: dimension.cpp:87
Block_CSPtr block() const
Return the current entity block.
Definition: cadentity.cpp:33
virtual CADEntity_CSPtr mirror(const geo::Coordinate &axis1, const geo::Coordinate &axis2) const override
Definition: dimradial.cpp:68
double leader() const
Definition: dimradial.cpp:97
virtual CADEntity_CSPtr copy(const geo::Coordinate &offset) const override
copy, copies by an offset
Definition: dimradial.cpp:51
virtual CADEntity_CSPtr scale(const geo::Coordinate &scale_center, const geo::Coordinate &scale_factor) const override
scale, scales the entity
Definition: dimradial.cpp:62
geo::Coordinate definitionPoint2() const
Definition: dimradial.cpp:101
virtual const geo::Area boundingBox() const override
boundingBox of the entity
Definition: dimradial.cpp:74
DimRadial(geo::Coordinate const &definitionPoint, geo::Coordinate const &middleOfText, TextConst::AttachmentPoint const &attachmentPoint, double angle, double const lineSpacingFactor, TextConst::LineSpacingStyle const &lineSpacingStyle, std::string const &explicitValue, geo::Coordinate const &definitionPoint2, const double leader, const Layer_CSPtr layer, const MetaInfo_CSPtr metaInfo=nullptr, const Block_CSPtr block=nullptr)
DimRadial.
Definition: dimradial.cpp:6