43 #ifndef MY_DXF_ENTITIES_HPP
44 #define MY_DXF_ENTITIES_HPP 1
55 #define MYDXF_PERT_EPS 1.1e-12
121 virtual void write(
class MyDXFFile *dxf, std::ofstream &ostr ) = 0;
133 void set_layer(
const std::string &layer ) { _layer = layer; }
137 std::string
get_layer(
void )
const {
return( _layer ); }
145 void set_handle(
const std::string &handle ) { _handle = handle; }
158 virtual void plot(
const class MyDXFFile *dxf, cairo_t *cairo,
168 virtual void debug_print( std::ostream &os )
const = 0;
201 virtual Vec3D end(
void )
const = 0;
219 virtual int ray_cross(
double x,
double y )
const = 0;
233 std::vector<uint32_t> _selection;
247 uint32_t
size()
const {
return( _selection.size() ); }
256 if( a < 0 || a >= (
int)_selection.size() )
258 return( _selection[a] );
264 if( a < 0 || a >= (
int)_selection.size() )
266 return( _selection[a] );
283 std::vector<MyDXFEntity *> _entities;
321 uint32_t
size()
const {
return( _entities.size() ); }
362 double eps = 1.0e-6 );
373 bool geom_same( uint32_t a, uint32_t b,
double eps = 1.0e-6 )
const;
395 cairo_t *cairo,
const Transformation *t,
const double range[4] )
const;
uint32_t size() const
Return number of entities.
Definition: mydxfentities.hpp:321
MyDXFPathEntity()
Definition: mydxfentities.hpp:185
bool geom_same(uint32_t a, uint32_t b, double eps=1.0e-6) const
Check if two entities are geometrically same.
std::string _handle
Definition: mydxfentities.hpp:82
Basic error class.
Definition: error.hpp:142
virtual void explode(class MyDXFEntities *ent, MyDXFFile *dxf, const Transformation *t) const =0
Explode into entities.
static void bbox_ppoint(Vec3D &min, Vec3D &max, const Vec3D &p)
Propose a point to bounding box.
void constructor_debug_print(void) const
Definition: mydxfentities.hpp:68
virtual Vec3D end(void) const =0
Get end point of path entity.
void debug_print(std::ostream &os) const
Print debugging information to os.
std::string get_handle(void) const
Get entity handle.
Definition: mydxfentities.hpp:149
MyDXFEntitySelection * selection_all(void) const
Make a new selection containg all entities from database.
void translate(MyDXFEntitySelection *selection, class MyDXFFile *dxf, const Vec3D &dx)
Translate selected entities by dx.
void plot(const MyDXFEntitySelection *selection, const class MyDXFFile *dxf, cairo_t *cairo, const Transformation *t, const double range[4]) const
Plot selected entities with cairo.
const MyDXFEntity * get_entity(uint32_t a) const
Return const pointer to entity a.
Definition: mydxfentities.hpp:325
friend std::ostream & operator<<(std::ostream &os, const MyDXFEntitySelection &sel)
~MyDXFEntitySelection()
Destructor.
Definition: mydxfentities.hpp:243
virtual MyDXFEntity * copy(void) const =0
Get a new copy of entity.
Three dimensional vectors.
virtual void set_start(const Vec3D &s)=0
Set start point of path entity.
virtual void scale(class MyDXFFile *dxf, double s)=0
Scale entity by factor s.
void write(class MyDXFFile *dxf, std::ofstream &ostr)
Write entities section of dxf file to stream.
const uint32_t & operator()(int a) const
Get a const reference to entity number in selection at location a.
Definition: mydxfentities.hpp:255
void set_handle(const std::string &handle)
Set entity handle.
Definition: mydxfentities.hpp:145
uint32_t size() const
Return number of entities in selection.
Definition: mydxfentities.hpp:247
DXF file class.
Definition: mydxffile.hpp:68
virtual void write(class MyDXFFile *dxf, std::ofstream &ostr)=0
Write dxf file to stream.
MyDXFEntities(class MyDXFFile *dxf)
Construct empty entities database.
void write_entities(class MyDXFFile *dxf, std::ofstream &ostr)
Write a list of entities to stream.
DXF path entity base class.
Definition: mydxfentities.hpp:180
#define ERROR_LOCATION
Macro for setting error location when throwing errors.
Definition: error.hpp:72
MyDXFEntitySelection()
Construct empty selection.
Definition: mydxfentities.hpp:239
virtual void get_bbox(Vec3D &min, Vec3D &max, const class MyDXFFile *dxf, const Transformation *t) const =0
Return bounding box of entity.
Definition: mydxfentities.hpp:65
bool inside_loop(MyDXFEntitySelection *selection, double x, double y, double eps=1.0e-6)
void get_bbox(const MyDXFEntitySelection *selection, Vec3D &min, Vec3D &max, const class MyDXFFile *dxf, const Transformation *t) const
Get bounding box containing all entities in selection.
void process_group(class MyDXFFile *dxf)
void debug_print_base(std::ostream &os) const
virtual int ray_cross(double x, double y) const =0
Check for ray crossing.
MyDXFEntity * get_entity(uint32_t a)
Return pointer to entity a.
Definition: mydxfentities.hpp:329
~MyDXFEntities()
Destructor.
uint32_t & operator()(int a)
Get reference to entity number in selection at location a.
Definition: mydxfentities.hpp:263
virtual ~MyDXFEntity()
Virtual destructor.
Definition: mydxfentities.hpp:105
MyDXFEntitySelection * selection_layer(const std::string &layername) const
Make a new selection containg entities from named layer.
virtual Vec3D start(void) const =0
Get start point of path entity.
virtual EntityType get_type(void) const =0
Get entity type.
virtual void translate(class MyDXFFile *dxf, const Vec3D &dx)=0
Translate entity by dx.
void write_common(class MyDXFFile *dxf, std::ofstream &ostr)
friend std::ostream & operator<<(std::ostream &os, const MyDXFEntity &ent)
Definition: mydxfentities.hpp:62
void scale(MyDXFEntitySelection *selection, class MyDXFFile *dxf, double s)
Scale selected entities by factor s.
virtual void debug_print(std::ostream &os) const =0
Print debugging information to stream os.
DXF entity selection.
Definition: mydxfentities.hpp:230
MyDXFPathEntity(const MyDXFEntity &ent)
Definition: mydxfentities.hpp:187
Definition: mydxfentities.hpp:63
virtual ~MyDXFPathEntity()
Virtual destructor.
Definition: mydxfentities.hpp:193
Definition: mydxfentities.hpp:61
void add_entity(uint32_t a)
Add entity number a in selection.
Definition: mydxfentities.hpp:251
DXF entity database.
Definition: mydxfentities.hpp:279
Definition: mydxfentities.hpp:64
MyDXFEntitySelection * selection_path_loop(MyDXFEntitySelection *selection, double eps=1.0e-6)
Build complete loops.
virtual void plot(const class MyDXFFile *dxf, cairo_t *cairo, const Transformation *t, const double range[4]) const =0
Plot entity with cairo.
Definition: mydxfentities.hpp:67
std::string get_layer(void) const
Get layer.
Definition: mydxfentities.hpp:137
virtual void set_end(const Vec3D &e)=0
Set end point of path entity.
MyDXFEntitySelection * selection_type(EntityType type) const
Make a new selection containg entities of given type.
Three dimensional vector.
Definition: vec3d.hpp:58
void set_layer(const std::string &layer)
Set layer.
Definition: mydxfentities.hpp:133
std::string _layer
Definition: mydxfentities.hpp:83
Definition: mydxfentities.hpp:66
DXF entity base class.
Definition: mydxfentities.hpp:77
void explode(MyDXFEntitySelection *selection, class MyDXFFile *dxf)
Explode selected insert entities.
void add_entity(MyDXFEntity *e)
Add entity to list.
Definition: mydxfentities.hpp:338
EntityType
Entity type.
Definition: mydxfentities.hpp:60