LibreCAD
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
ftrim.cpp
Go to the documentation of this file.
1 #include "ftrim.h"
2 
3 #include <algorithm>
4 
5 #include "cad/base/cadentity.h"
6 #include "cad/primitive/line.h"
7 #include "cad/primitive/arc.h"
8 #include "cad/primitive/circle.h"
11 
12 using namespace lc;
13 
14 FTrim::FTrim(std::vector<CADEntity_CSPtr> limitingEntities, CADEntity_CSPtr trimmedShape, geo::Coordinate trimPoint) : _limitingEntities(limitingEntities), _trimmedShape(trimmedShape), _trimPoint(trimPoint) {
15 
16 }
17 
18 void FTrim::visit(entity::Arc_CSPtr arc) {
19 
20 }
21 void FTrim::visit(entity::Line_CSPtr line) {
22  /*
23  IntersectMany im = IntersectMany(this->_limitingEntities, Intersect::OnPath);
24  std::vector<geo::Coordinate> points = im.result();
25  this->_newEntities.clear();
26 
27  if (points.size() > 0) {
28  points.push_back(this->_trimPoint);
29  std::sort(points.begin(), points.end(), geo::CoordinateDistanceSort(line->start()));
30 
31  for (int i = 0; i < points.size(); ++i) {
32  if (points.at(i) == this->_trimPoint) {
33  if (i == 0) {
34  this->_newEntities.push_back(Line_CSPtr(new Line(points.at(i + 1), line->end())));
35  return;
36  } else if (i == points.size() - 1) {
37  this->_newEntities.push_back(Line_CSPtr(new Line(line->start(), points.at(i - 1))));
38  return;
39  } else {
40  this->_newEntities.push_back(Line_CSPtr(new Line(line->start(), points.at(i - 1))));
41  this->_newEntities.push_back(Line_CSPtr(new Line(points.at(i + 1), line->end())));
42  return;
43  }
44  }
45  }
46  }
47  */
48 }
49 void FTrim::visit(entity::Circle_CSPtr circle) {
50 
51 }
52 
53 void FTrim::visit(entity::Point_CSPtr coord) {
54 
55 }
56 
57 void FTrim::visit(entity::Ellipse_CSPtr ellipse) {
58 
59 }
60 
61 void FTrim::visit(entity::Text_CSPtr text) {
62 
63 }
64 
65 void FTrim::visit(entity::Spline_CSPtr spline) {
66 
67 }
68 
69 void FTrim::visit(entity::MText_CSPtr mtext) {
70 
71 }
72 
73 void FTrim::visit(entity::DimAligned_CSPtr dimaligned) {
74 
75 }
76 
77 void FTrim::visit(entity::DimAngular_CSPtr dimangular) {
78 
79 }
80 
81 void FTrim::visit(entity::DimDiametric_CSPtr dimdiametric) {
82 
83 }
84 
85 void FTrim::visit(entity::DimLinear_CSPtr dimlinear) {
86 
87 }
88 
89 void FTrim::visit(entity::DimRadial_CSPtr dimrad) {
90 
91 }
92 
93 std::vector<CADEntity_CSPtr> FTrim::result() {
94  _trimmedShape->dispatch(*this);
95  return _newEntities;
96 }
97 
98 CADEntity_CSPtr FTrim::trimmedShape() const {
99  return this->_trimmedShape;
100 }
101 
std::vector< entity::CADEntity_CSPtr > _newEntities
Definition: ftrim.h:33
Definition: cadentity.h:12
entity::CADEntity_CSPtr trimmedShape() const
Definition: ftrim.cpp:98
FTrim(std::vector< entity::CADEntity_CSPtr > limitingEntities, entity::CADEntity_CSPtr trimmedShape, geo::Coordinate trimPoint)
Definition: ftrim.cpp:14
virtual void visit(entity::Line_CSPtr)
Definition: ftrim.cpp:21
entity::CADEntity_CSPtr _trimmedShape
Definition: ftrim.h:32
std::vector< entity::CADEntity_CSPtr > result()
Definition: ftrim.cpp:93