LibreCAD
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
lc::Trim Class Reference

#include <trim.h>

Inheritance diagram for lc::Trim:
Collaboration diagram for lc::Trim:

Public Member Functions

 Trim (QList< shared_ptr< const lc::entity::CADEntity > > limitingEntities, shared_ptr< const lc::entity::CADEntity > trimmedShape, geo::Coordinate trimPoint)
 
virtual void visit (shared_ptr< const lc::Line >)
 
virtual void visit (shared_ptr< const lc::Circle >)
 
virtual void visit (shared_ptr< const lc::Arc >)
 
virtual void visit (shared_ptr< const lc::Ellipse >)
 
virtual void visit (shared_ptr< const lc::Text >)
 
virtual void visit (shared_ptr< const lc::Spline >)
 
QList< shared_ptr< const
lc::entity::CADEntity > > 
result ()
 
shared_ptr< const
lc::entity::CADEntity
trimmedShape () const
 
- Public Member Functions inherited from lc::EntityDispatch
virtual void visit (entity::Line_CSPtr)=0
 
virtual void visit (entity::Point_CSPtr)=0
 
virtual void visit (entity::Circle_CSPtr)=0
 
virtual void visit (entity::Arc_CSPtr)=0
 
virtual void visit (entity::Ellipse_CSPtr)=0
 
virtual void visit (entity::Text_CSPtr)=0
 
virtual void visit (entity::Spline_CSPtr)=0
 
virtual void visit (entity::DimAligned_CSPtr)=0
 
virtual void visit (entity::DimAngular_CSPtr)=0
 
virtual void visit (entity::DimDiametric_CSPtr)=0
 
virtual void visit (entity::DimLinear_CSPtr)=0
 
virtual void visit (entity::DimRadial_CSPtr)=0
 
virtual void visit (entity::LWPolyline_CSPtr)=0
 
virtual void visit (entity::Image_CSPtr)=0
 

Private Attributes

QList< shared_ptr< const
lc::entity::CADEntity > > 
_limitingEntities
 
shared_ptr< const
lc::entity::CADEntity
_trimmedShape
 
QList< shared_ptr< const
lc::entity::CADEntity > > 
_newEntities
 
geo::Coordinate _trimPoint
 

Detailed Description

Definition at line 11 of file trim.h.

Constructor & Destructor Documentation

Trim::Trim ( QList< shared_ptr< const lc::entity::CADEntity > >  limitingEntities,
shared_ptr< const lc::entity::CADEntity trimmedShape,
geo::Coordinate  trimPoint 
)

Definition at line 12 of file trim.cpp.

12  : _limitingEntities(limitingEntities), _trimmedShape(trimmedShape), _trimPoint(trimPoint) {
13 
14 }
geo::Coordinate _trimPoint
Definition: trim.h:29
shared_ptr< const lc::entity::CADEntity > trimmedShape() const
Definition: trim.cpp:66
shared_ptr< const lc::entity::CADEntity > _trimmedShape
Definition: trim.h:27
QList< shared_ptr< const lc::entity::CADEntity > > _limitingEntities
Definition: trim.h:26

Member Function Documentation

QList< shared_ptr< const lc::entity::CADEntity > > Trim::result ( )

Definition at line 61 of file trim.cpp.

61  {
62  _trimmedShape->dispatch(*this);
63  return _newEntities;
64 }
QList< shared_ptr< const lc::entity::CADEntity > > _newEntities
Definition: trim.h:28
shared_ptr< const lc::entity::CADEntity > _trimmedShape
Definition: trim.h:27
shared_ptr< const lc::entity::CADEntity > Trim::trimmedShape ( ) const

Definition at line 66 of file trim.cpp.

66  {
67  return this->_trimmedShape;
68 }
shared_ptr< const lc::entity::CADEntity > _trimmedShape
Definition: trim.h:27
void Trim::visit ( shared_ptr< const lc::Line >  line)
virtual

Definition at line 19 of file trim.cpp.

19  {
21  QList<geo::Coordinate> points = im.result();
22  this->_newEntities.clear();
23 
24  if (points.count() > 0) {
25  points.append(this->_trimPoint);
26  qSort(points.begin(), points.end(), lc::geo::CoordinateDistanceSort(line->start()));
27 
28  for (int i = 0; i < points.size(); ++i) {
29  if (points.at(i) == this->_trimPoint) {
30  if (i == 0) {
31  this->_newEntities.append(shared_ptr<const lc::Line>(new Line(points.at(i + 1), line->end())));
32  return;
33  } else if (i == points.size() - 1) {
34  this->_newEntities.append(shared_ptr<const lc::Line>(new Line(line->start(), points.at(i - 1))));
35  return;
36  } else {
37  this->_newEntities.append(shared_ptr<const lc::Line>(new Line(line->start(), points.at(i - 1))));
38  this->_newEntities.append(shared_ptr<const lc::Line>(new Line(points.at(i + 1), line->end())));
39  return;
40  }
41  }
42  }
43  }
44 }
calculate intersection points of many entities
Definition: intersect.h:185
std::vector< geo::Coordinate > result() const
Definition: intersect.cpp:606
QList< shared_ptr< const lc::entity::CADEntity > > _newEntities
Definition: trim.h:28
geo::Coordinate _trimPoint
Definition: trim.h:29
sort a Collection in order of distance to a specific coordinate
QList< shared_ptr< const lc::entity::CADEntity > > _limitingEntities
Definition: trim.h:26
void Trim::visit ( shared_ptr< const lc::Circle >  circle)
virtual

Definition at line 45 of file trim.cpp.

45  {
46 
47 }
void Trim::visit ( shared_ptr< const lc::Arc >  arc)
virtual

Definition at line 16 of file trim.cpp.

16  {
17 
18 }
void Trim::visit ( shared_ptr< const lc::Ellipse >  ellipse)
virtual

Definition at line 49 of file trim.cpp.

49  {
50 
51 }
void Trim::visit ( shared_ptr< const lc::Text >  text)
virtual

Definition at line 53 of file trim.cpp.

53  {
54 
55 }
void Trim::visit ( shared_ptr< const lc::Spline >  Spline)
virtual

Definition at line 57 of file trim.cpp.

57  {
58 
59 }

Member Data Documentation

QList<shared_ptr<const lc::entity::CADEntity> > lc::Trim::_limitingEntities
private

Definition at line 26 of file trim.h.

QList<shared_ptr<const lc::entity::CADEntity> > lc::Trim::_newEntities
private

Definition at line 28 of file trim.h.

shared_ptr<const lc::entity::CADEntity> lc::Trim::_trimmedShape
private

Definition at line 27 of file trim.h.

geo::Coordinate lc::Trim::_trimPoint
private

Definition at line 29 of file trim.h.


The documentation for this class was generated from the following files: