1#ifndef LIBS_CAD_CDxf_HPP_
2#define LIBS_CAD_CDxf_HPP_
27 SLayerDxf(
const std::string &nameLayer,
bool isColorRGB, uint64_t colorIndex,
bool isVisible, int64_t lineWidth);
43 bool exists(
const std::string &itemSearch, uint32_t *ind)
const;
52 std::vector<std::vector<iv::math::geometry::Point3d>> **polylines);
55 std::vector<std::vector<iv::math::geometry::Point3d>> *
movePolylines();
58 std::vector<std::vector<iv::math::geometry::Point3d>> *
m_polylines;
63 SBlockDxf(std::string nameBlock,
double xOrg,
double yOrg,
double zOrg);
77 SEntity(
const std::string &nameLayer,
bool isColorRGB, uint64_t colorIndex, int64_t lineWidth,
double Nx,
double Ny,
81 void drawEntity(uint64_t colorBlocRGB, int64_t lineWidthBlock, std::vector<SBlockDxf *> *blocks,
82 const std::vector<SLayerDxf *> *layers,
IGraphics *graphics);
86 const std::string &nameLayerOpt)
const = 0;
90 [[nodiscard]]
bool isLayer(
const std::string &nameLayer)
const;
111 SEntityInsert(
const std::string &nameLayer,
const std::string &nameBlock,
double xInsert,
double yInsert,
112 double xScale,
double yScale,
double angle,
bool isColorRGB, uint64_t colorIndex, int64_t lineWidth,
113 double Nx,
double Ny,
double Nz);
116 void drawBlock(uint64_t colorBlock, int64_t lineWidth, std::vector<SBlockDxf *> *blocks,
117 const std::vector<SLayerDxf *> *layers,
IGraphics *graphics)
const;
131 const std::string &nameLayerOpt)
const override;
137 SEntityPoint(
const std::string &nameLayer,
double x,
double y,
double z,
bool isColorRGB, uint64_t colorIndex,
138 int64_t lineWidth,
double Nx,
double Ny,
double Nz);
149 const std::string &nameLayerOpt)
const override;
154 SEntityLine(
const std::string &nameLayer,
double x1,
double y1,
double x2,
double y2,
bool isColorRGB,
155 uint64_t colorIndex, int64_t lineWidth,
double Nx,
double Ny,
double Nz);
167 const std::string &nameLayerOpt)
const override;
172 SEntityPolyline(
const std::string &nameLayer,
float **vertex, uint64_t numVertex,
bool isColorRGB,
173 uint64_t colorRGB, int64_t lineWidth,
double Nx,
double Ny,
double Nz,
double elevation);
185 const std::string &nameLayerOpt)
const override;
190 SEntityArc(
const std::string &nameLayer,
double xCenter,
double yCenter,
double radius,
double startAngle,
191 double endAngle, uint64_t numVertex,
float **vertex,
bool isColorRGB, uint64_t colorIndex,
192 int64_t lineWidth,
double Nx,
double Ny,
double Nz);
203 SEntityCircle(
const std::string &nameLayer,
double xCenter,
double yCenter,
double radius, uint64_t numVertex,
204 float **vertex,
bool isColorRGB, uint64_t colorIndex, int64_t lineWidth,
double Nx,
double Ny,
214 SEntityEllipse(
const std::string &nameLayer,
double xCenter,
double yCenter,
double mx,
double my,
double mz,
215 double ratio,
double startAngle,
double endAngle, uint64_t numVertex,
float **vertex,
216 bool isColorRGB, uint64_t colorIndex, int64_t lineWidth,
double Nx,
double Ny,
double Nz);
230 SEntityLeader(
const std::string &nameLayer,
float **vertex, uint64_t numVertex,
bool isColorRGB, uint64_t colorRGB,
231 int64_t lineWidth,
double Nx,
double Ny,
double Nz);
237 std::vector<std::shared_ptr<std::vector<iv::math::geometry::Point3d>>> **contoursHatch,
CMesh **mesh,
238 bool isColorRGB, uint64_t colorRGB, int64_t lineWidth,
double Nx,
double Ny,
double Nz);
242 std::vector<std::shared_ptr<std::vector<iv::math::geometry::Point3d>>> *
m_contoursHatch;
249 const std::string &nameLayerOpt)
const override;
254 SEntityText(
const std::string &nameLayer,
const std::string &text,
double x,
double y,
double z,
double height,
255 unsigned char justify,
double angle, uint64_t colorIndex,
bool isColorRGB, int64_t lineWidth,
double Nx,
256 double Ny,
double Nz);
272 const std::string &nameLayerOpt)
const override;
277 SEntitySolid(
const std::string &nameLayer,
double x1,
double y1,
double x2,
double y2,
double x3,
double y3,
278 double x4,
double y4,
bool isColorRGB, uint64_t colorRGB, int64_t lineWidth,
double Nx,
double Ny,
295 const std::string &nameLayerOpt)
const override;
317 explicit CDxf(std::string_view nameFileDxf);
318 explicit CDxf(
const std::shared_ptr<iv::streams::IInputStream> &inputStream);
322 void addLine(
double x1,
double y1,
double z1,
double x2,
double y2,
double z2)
const;
323 [[maybe_unused]]
void addPoint(
double x,
double y,
double z)
const;
324 void addPolyLine(
float **vertex, uint64_t numVertex)
const;
325 void addRectangle(
double x1,
double y1,
double x2,
double y2)
const;
326 void addSolid(
double x1,
double y1,
double z1,
double x2,
double y2,
double z2,
double x3,
double y3,
double z3,
327 double x4,
double y4,
double z4)
const;
328 void addText(
const std::string &text,
double x,
double y,
double z,
double height,
unsigned char justify)
const;
329 void addTriangle(
double x1,
double y1,
double z1,
double x2,
double y2,
double z2,
double x3,
double y3,
335 [[maybe_unused]] [[nodiscard]] std::vector<std::vector<iv::math::geometry::Point3d>> *
getAllPolylines()
const;
336 [[nodiscard]] std::vector<std::vector<iv::math::geometry::Point3d>> *
339 [[nodiscard]] std::vector<CGeoBlock *>
getGeoBlocksByNames(
const std::vector<std::string> &nameBlocks)
const;
340 [[maybe_unused]] [[nodiscard]] std::string
getNameDXF()
const;
341 [[nodiscard]] std::vector<iv::math::geometry::Point2d>
347 [[nodiscard]]
bool existLayer(
const std::string &nameLayer)
const;
349 bool hasCapture(
double x,
double y,
double radiusCapture,
double *xCaptured,
double *yCaptured)
const;
351 double radiusCapture)
const;
353 double radiusCapture)
const;
355 double radiusCapture)
const;
~CDxf()
Definition CDxf.cpp:2207
EPrvUnits
Definition CDxf.hpp:302
void addLine(double x1, double y1, double z1, double x2, double y2, double z2) const
Definition CDxf.cpp:2217
std::vector< SBlockDxf * > * m_blocks
Definition CDxf.hpp:362
bool hasCaptureNoInclusive(double xMin, double yMin, double xMax, double yMax, double radiusCapture) const
Definition CDxf.cpp:3214
void addPoint(double x, double y, double z) const
Definition CDxf.cpp:2232
void addRectangle(double x1, double y1, double x2, double y2) const
Definition CDxf.cpp:2260
std::vector< std::vector< iv::math::geometry::Point3d > > * getAllPolylines() const
Definition CDxf.cpp:2401
CDxf()
Definition CDxf.cpp:1939
bool hasCapture(double x, double y, double radiusCapture, double *xCaptured, double *yCaptured) const
Definition CDxf.cpp:2898
void setVisibleLayer(const std::string &nameLayer, bool isVisible)
Definition CDxf.cpp:2587
void addText(const std::string &text, double x, double y, double z, double height, unsigned char justify) const
Definition CDxf.cpp:2297
std::string getNameDXF() const
Definition CDxf.cpp:2517
std::vector< std::string > getAllBlocksNames() const
Definition CDxf.cpp:2352
bool hasCaptureByGraphic(double xMin, double yMin, double xMax, double yMax, double radiusCapture) const
Definition CDxf.cpp:3234
void addSolid(double x1, double y1, double z1, double x2, double y2, double z2, double x3, double y3, double z3, double x4, double y4, double z4) const
Definition CDxf.cpp:2282
std::vector< std::vector< iv::math::geometry::Point3d > > * getAllPolylinesInLayer(const std::string &nameLayer) const
Definition CDxf.cpp:2433
bool existLayer(const std::string &nameLayer) const
Definition CDxf.cpp:2598
void addPolyLine(float **vertex, uint64_t numVertex) const
Definition CDxf.cpp:2246
std::vector< CGeoBlock * > getGeoBlocksByNames(const std::vector< std::string > &nameBlocks) const
Definition CDxf.cpp:2487
SBlockDxf * m_modelBlock
Definition CDxf.hpp:360
std::vector< iv::math::geometry::Point2d > getPositionsDigitalChannel(const std::string &nameBlock) const
Definition CDxf.cpp:2522
CGeoBlock * getOnlyOneGeoBlock(const std::string &nameBlock) const
Definition CDxf.cpp:2567
std::vector< SLayerDxf * > * m_layers
Definition CDxf.hpp:361
bool existOnlyOneGeoBlock(const std::string &nameBlock) const
Definition CDxf.cpp:2606
void draw(IGraphics *graphics) const
Definition CDxf.cpp:2334
EPrvUnits m_units
Definition CDxf.hpp:359
EEndEntityType
Definition CDxf.hpp:310
bool hasCaptureInclusive(double xMin, double yMin, double xMax, double yMax, double radiusCapture) const
Definition CDxf.cpp:3070
std::string m_nameDXF
Definition CDxf.hpp:358
IBlockExportDxf * getEntityLogicExpression(const std::string &nameBlock) const
Definition CDxf.cpp:2473
void addTriangle(double x1, double y1, double z1, double x2, double y2, double z2, double x3, double y3, double z3) const
Definition CDxf.cpp:2312
Definition CGeoBlock.hpp:12
virtual void setColorARgb(iv::types::color colorARgb)=0
virtual ~IBlockExportDxf()=default
Definition IGraphics.hpp:20
uint32_t color
Definition types.hpp:12
double m_zOrg
Definition CDxf.hpp:70
std::vector< SEntity * > m_entities
Definition CDxf.hpp:72
double m_xOrg
Definition CDxf.hpp:68
double m_yOrg
Definition CDxf.hpp:69
std::string m_name
Definition CDxf.hpp:67
SBlockDxf(std::string nameBlock, double xOrg, double yOrg, double zOrg)
Definition CDxf.cpp:1633
uint64_t m_idBlock
Definition CDxf.hpp:71
SEntityArc(const std::string &nameLayer, double xCenter, double yCenter, double radius, double startAngle, double endAngle, uint64_t numVertex, float **vertex, bool isColorRGB, uint64_t colorIndex, int64_t lineWidth, double Nx, double Ny, double Nz)
Definition CDxf.cpp:3322
double m_xCenter
Definition CDxf.hpp:194
double m_yCenter
Definition CDxf.hpp:195
double m_endAngle
Definition CDxf.hpp:198
double m_radius
Definition CDxf.hpp:196
double m_startAngle
Definition CDxf.hpp:197
double m_yCenter
Definition CDxf.hpp:208
double m_xCenter
Definition CDxf.hpp:207
double m_radius
Definition CDxf.hpp:209
SEntityCircle(const std::string &nameLayer, double xCenter, double yCenter, double radius, uint64_t numVertex, float **vertex, bool isColorRGB, uint64_t colorIndex, int64_t lineWidth, double Nx, double Ny, double Nz)
Definition CDxf.cpp:3418
double m_ratio
Definition CDxf.hpp:223
SEntityEllipse(const std::string &nameLayer, double xCenter, double yCenter, double mx, double my, double mz, double ratio, double startAngle, double endAngle, uint64_t numVertex, float **vertex, bool isColorRGB, uint64_t colorIndex, int64_t lineWidth, double Nx, double Ny, double Nz)
Definition CDxf.cpp:3429
double m_mx
Definition CDxf.hpp:220
double m_mz
Definition CDxf.hpp:222
double m_yCenter
Definition CDxf.hpp:219
double m_startAngle
Definition CDxf.hpp:224
double m_endAngle
Definition CDxf.hpp:225
double m_xCenter
Definition CDxf.hpp:218
double m_my
Definition CDxf.hpp:221
SEntityHatch(const std::string &nameLayer, std::vector< std::shared_ptr< std::vector< iv::math::geometry::Point3d > > > **contoursHatch, CMesh **mesh, bool isColorRGB, uint64_t colorRGB, int64_t lineWidth, double Nx, double Ny, double Nz)
Definition CDxf.cpp:3446
~SEntityHatch() override
Definition CDxf.cpp:3456
void processEntityGeoBlock(CGeoBlock *currentGeoBlock, std::vector< SBlockDxf * > *blocks, SProcessEntitiesGeoBlocks *dataProcess) const override
Definition CDxf.cpp:3491
CMesh * m_mesh
Definition CDxf.hpp:241
std::vector< std::shared_ptr< std::vector< iv::math::geometry::Point3d > > > * m_contoursHatch
Definition CDxf.hpp:242
void processEntityPolyline(const std::vector< SBlockDxf * > *blocks, SProcessEntitiesPolylines *dataProcess, const std::string &nameLayerOpt) const override
Definition CDxf.cpp:3508
void draw(IGraphics *graphics) const override
Definition CDxf.cpp:3464
double m_xScale
Definition CDxf.hpp:123
SEntityInsert(const std::string &nameLayer, const std::string &nameBlock, double xInsert, double yInsert, double xScale, double yScale, double angle, bool isColorRGB, uint64_t colorIndex, int64_t lineWidth, double Nx, double Ny, double Nz)
Definition CDxf.cpp:1797
uint64_t m_colorIndex
Definition CDxf.hpp:120
std::string m_nameBlock
Definition CDxf.hpp:119
void drawBlock(uint64_t colorBlock, int64_t lineWidth, std::vector< SBlockDxf * > *blocks, const std::vector< SLayerDxf * > *layers, IGraphics *graphics) const
Definition CDxf.cpp:1834
void processEntityGeoBlock(CGeoBlock *currentGeoBlock, std::vector< SBlockDxf * > *blocks, SProcessEntitiesGeoBlocks *dataProcess) const override
Definition CDxf.cpp:1855
double m_yInsert
Definition CDxf.hpp:122
double m_angle
Definition CDxf.hpp:125
void draw(IGraphics *graphics) const override
Definition CDxf.cpp:1934
void processEntityPolyline(const std::vector< SBlockDxf * > *blocks, SProcessEntitiesPolylines *dataProcess, const std::string &nameLayerOpt) const override
Definition CDxf.cpp:1897
~SEntityInsert() override=default
double m_xInsert
Definition CDxf.hpp:121
double m_yScale
Definition CDxf.hpp:124
SEntityLeader(const std::string &nameLayer, float **vertex, uint64_t numVertex, bool isColorRGB, uint64_t colorRGB, int64_t lineWidth, double Nx, double Ny, double Nz)
Definition CDxf.cpp:3513
void processEntityGeoBlock(CGeoBlock *currentGeoBlock, std::vector< SBlockDxf * > *blocks, SProcessEntitiesGeoBlocks *dataProcess) const override
Definition CDxf.cpp:3303
void processEntityPolyline(const std::vector< SBlockDxf * > *blocks, SProcessEntitiesPolylines *dataProcess, const std::string &nameLayerOpt) const override
Definition CDxf.cpp:3317
double m_x2
Definition CDxf.hpp:158
double m_y1
Definition CDxf.hpp:159
double m_y2
Definition CDxf.hpp:160
void draw(IGraphics *graphics) const override
Definition CDxf.cpp:3297
SEntityLine(const std::string &nameLayer, double x1, double y1, double x2, double y2, bool isColorRGB, uint64_t colorIndex, int64_t lineWidth, double Nx, double Ny, double Nz)
Definition CDxf.cpp:3286
double m_x1
Definition CDxf.hpp:157
void processEntityPolyline(const std::vector< SBlockDxf * > *blocks, SProcessEntitiesPolylines *dataProcess, const std::string &nameLayerOpt) const override
Definition CDxf.cpp:3281
SEntityPoint(const std::string &nameLayer, double x, double y, double z, bool isColorRGB, uint64_t colorIndex, int64_t lineWidth, double Nx, double Ny, double Nz)
Definition CDxf.cpp:3253
void draw(IGraphics *graphics) const override
Definition CDxf.cpp:3263
void processEntityGeoBlock(CGeoBlock *currentGeoBlock, std::vector< SBlockDxf * > *blocks, SProcessEntitiesGeoBlocks *dataProcess) const override
Definition CDxf.cpp:3269
double m_y
Definition CDxf.hpp:141
double m_x
Definition CDxf.hpp:140
double m_z
Definition CDxf.hpp:142
float * m_vertex
Definition CDxf.hpp:177
void processEntityGeoBlock(CGeoBlock *currentGeoBlock, std::vector< SBlockDxf * > *blocks, SProcessEntitiesGeoBlocks *dataProcess) const override
Definition CDxf.cpp:3357
uint64_t m_numVertex
Definition CDxf.hpp:176
~SEntityPolyline() override
Definition CDxf.cpp:3345
void draw(IGraphics *graphics) const override
Definition CDxf.cpp:3351
void processEntityPolyline(const std::vector< SBlockDxf * > *blocks, SProcessEntitiesPolylines *dataProcess, const std::string &nameLayerOpt) const override
Definition CDxf.cpp:3390
SEntityPolyline(const std::string &nameLayer, float **vertex, uint64_t numVertex, bool isColorRGB, uint64_t colorRGB, int64_t lineWidth, double Nx, double Ny, double Nz, double elevation)
Definition CDxf.cpp:3335
double m_elevation
Definition CDxf.hpp:178
double m_x4
Definition CDxf.hpp:287
double m_y4
Definition CDxf.hpp:288
void processEntityPolyline(const std::vector< SBlockDxf * > *blocks, SProcessEntitiesPolylines *dataProcess, const std::string &nameLayerOpt) const override
Definition CDxf.cpp:3606
SEntitySolid(const std::string &nameLayer, double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4, bool isColorRGB, uint64_t colorRGB, int64_t lineWidth, double Nx, double Ny, double Nz)
Definition CDxf.cpp:3562
double m_y1
Definition CDxf.hpp:282
double m_y3
Definition CDxf.hpp:286
double m_y2
Definition CDxf.hpp:284
double m_x1
Definition CDxf.hpp:281
double m_x3
Definition CDxf.hpp:285
void draw(IGraphics *graphics) const override
Definition CDxf.cpp:3581
double m_x2
Definition CDxf.hpp:283
void processEntityGeoBlock(CGeoBlock *currentGeoBlock, std::vector< SBlockDxf * > *blocks, SProcessEntitiesGeoBlocks *dataProcess) const override
Definition CDxf.cpp:3587
std::string m_text
Definition CDxf.hpp:259
SEntityText(const std::string &nameLayer, const std::string &text, double x, double y, double z, double height, unsigned char justify, double angle, uint64_t colorIndex, bool isColorRGB, int64_t lineWidth, double Nx, double Ny, double Nz)
Definition CDxf.cpp:3520
double m_angleGrd
Definition CDxf.hpp:265
unsigned char m_justify
Definition CDxf.hpp:264
double m_x
Definition CDxf.hpp:260
~SEntityText() override=default
void processEntityPolyline(const std::vector< SBlockDxf * > *blocks, SProcessEntitiesPolylines *dataProcess, const std::string &nameLayerOpt) const override
Definition CDxf.cpp:3557
double m_y
Definition CDxf.hpp:261
void draw(IGraphics *graphics) const override
Definition CDxf.cpp:3537
void processEntityGeoBlock(CGeoBlock *currentGeoBlock, std::vector< SBlockDxf * > *blocks, SProcessEntitiesGeoBlocks *dataProcess) const override
Definition CDxf.cpp:3552
double m_height
Definition CDxf.hpp:263
double m_z
Definition CDxf.hpp:262
double m_Nx
Definition CDxf.hpp:101
double m_Nz
Definition CDxf.hpp:103
bool isLayer(const std::string &nameLayer) const
Definition CDxf.cpp:1792
uint64_t m_colorIndex
Definition CDxf.hpp:95
virtual void draw(IGraphics *graphics) const =0
virtual void processEntityGeoBlock(CGeoBlock *currentGeoBlock, std::vector< SBlockDxf * > *blocks, SProcessEntitiesGeoBlocks *dataProcess) const =0
bool m_isColorRGB
Definition CDxf.hpp:98
iv::types::color m_colorARGBCalculated
Definition CDxf.hpp:99
bool m_hasLineWidthCalculated
Definition CDxf.hpp:105
int64_t m_lineWidthCalculated
Definition CDxf.hpp:106
int64_t m_lineWidth
Definition CDxf.hpp:104
void drawEntity(uint64_t colorBlocRGB, int64_t lineWidthBlock, std::vector< SBlockDxf * > *blocks, const std::vector< SLayerDxf * > *layers, IGraphics *graphics)
Definition CDxf.cpp:1712
void setColorARGB(iv::types::color colorARGB)
Definition CDxf.cpp:1787
bool m_isAttributedCalculated
Definition CDxf.hpp:97
double m_Ny
Definition CDxf.hpp:102
std::string m_nameLayer
Definition CDxf.hpp:96
virtual void processEntityPolyline(const std::vector< SBlockDxf * > *blocks, SProcessEntitiesPolylines *dataProcess, const std::string &nameLayerOpt) const =0
virtual ~SEntity()=default
SEntity(const std::string &nameLayer, bool isColorRGB, uint64_t colorIndex, int64_t lineWidth, double Nx, double Ny, double Nz)
Definition CDxf.cpp:1660
bool m_isVisibleByLayer
Definition CDxf.hpp:100
SLayerDxf(const std::string &nameLayer, bool isColorRGB, uint64_t colorIndex, bool isVisible, int64_t lineWidth)
Definition CDxf.cpp:1562
std::string m_name
Definition CDxf.hpp:31
bool m_isColorRGB
Definition CDxf.hpp:34
SLayerDxf(const SLayerDxf &other)=default
uint64_t m_colorIndex
Definition CDxf.hpp:32
int64_t m_lineWidth
Definition CDxf.hpp:35
bool m_isVisible
Definition CDxf.hpp:33
std::vector< CGeoBlock * > * m_geoBlocks
Definition CDxf.hpp:46
CStackTransformation * m_stackTransformation
Definition CDxf.hpp:45
bool exists(const std::string &itemSearch, uint32_t *ind) const
Definition CDxf.cpp:1586
~SProcessEntitiesGeoBlocks()
Definition CDxf.cpp:1579
SProcessEntitiesGeoBlocks(CStackTransformation **stackTransformation, std::vector< CGeoBlock * > **geoBlocks)
Definition CDxf.cpp:1572
SProcessEntitiesPolylines(CStackTransformation **stackTransformation, std::vector< std::vector< iv::math::geometry::Point3d > > **polylines)
Definition CDxf.cpp:1610
std::vector< std::vector< iv::math::geometry::Point3d > > * movePolylines()
Definition CDxf.cpp:1624
CStackTransformation * m_stackTransformation
Definition CDxf.hpp:57
~SProcessEntitiesPolylines()
Definition CDxf.cpp:1617
std::vector< std::vector< iv::math::geometry::Point3d > > * m_polylines
Definition CDxf.hpp:58