BIMHome v1.0.0
BIMHome接口文档说明
dxfAnalysis.h
浏览该文件的文档.
1/************************************************************************
2* @file dxfAnalysis.h
3*
4* @brief dxfAnalysis类
5*
6* @details dxfAnalysis类
7*
8* @author zhaojuan
9*
10* @version 版本号 V0.1
11*
12* @date 2023-2-9
13*
14* @license 北京华科软科技有限公司
15*
16*************************************************************************/
17#ifndef TECHDRAWAPP_DXFANALYSIS_H
18#define TECHDRAWAPP_DXFANALYSIS_H
19
20#include <QHash>
21#include <map>
22
23#include <Base/Tools2D.h>
24#include "dxf/Setting.h"
25//#include <Mod/TechDraw/App/Geometry.h>
26
27#include <libdrfx/drw_interface.h>
28
30
37namespace TechDraw {
38enum class DxfExportType;
39enum class DwgExportType;
40class DxfAttribute;
41class DxfBlock;
42class DxfDimension;
43class DxfEntity;
44class DxfHeader;
45class DxfLayer;
46class DxfLType;
47class DxfInsert;
48class DxfDimStyle;
49class DxfTextStyle;
50class DxfVector;
51class DxfVPoint;
52class DxfEntityContainer;
53class DxfPattern;
54class DxfSolid;
55class DxfLayout;
56class Dxf3DFace;
57class TechDrawExport dxfAnalysis : public DRW_Interface {
58public:
63public:
65 virtual void addHeader(const DRW_Header* data) override;
67 virtual void addLType(const DRW_LType& data) override;
69 virtual void addLayer(const DRW_Layer& data) override;
71 virtual void addDimStyle(const DRW_Dimstyle& data) override;
73 virtual void addVport(const DRW_Vport& data) override;
75 virtual void addTextStyle(const DRW_Textstyle& data) override;
77 virtual void addAppId(const DRW_AppId& data) override;
79 virtual void addBlock(const DRW_Block& data) override;
81 virtual void setBlock(const int handle) override;
83 virtual void endBlock() override;
85 virtual void addPoint(const DRW_Point& data) override;
87 virtual void addLine(const DRW_Line& data) override;
89 virtual void addRay(const DRW_Ray& data) override;
91 virtual void addXline(const DRW_Xline& data) override;
93 virtual void addCircle(const DRW_Circle& data) override;
95 virtual void addArc(const DRW_Arc& data) override;
97 virtual void addEllipse(const DRW_Ellipse& data) override;
99 virtual void addLWPolyline(const DRW_LWPolyline& data) override;
101 virtual void addPolyline(const DRW_Polyline& data) override;
103 virtual void addSpline(const DRW_Spline* data) override;
105 virtual void addKnot(const DRW_Entity& data) override;
107 virtual void addInsert(const DRW_Insert& data) override;
109 virtual void addTrace(const DRW_Trace& data) override;
111 virtual void add3dFace(const DRW_3Dface& data) override;
113 virtual void addSolid(const DRW_Solid& data) override;
115 virtual void addMText(const DRW_MText& data) override;
117 virtual void addText(const DRW_Text& data) override;
119 virtual void addLayout(const DRW_Layout& data) override;
121 virtual void addDimAlign(const DRW_DimAligned* data) override;
123 virtual void addDimLinear(const DRW_DimLinear* data) override;
125 virtual void addDimRadial(const DRW_DimRadial* data) override;
127 virtual void addDimDiametric(const DRW_DimDiametric* data) override;
129 virtual void addDimAngular(const DRW_DimAngular* data) override;
131 virtual void addDimAngular3P(const DRW_DimAngular3p* data) override;
133 virtual void addDimOrdinate(const DRW_DimOrdinate* data) override;
135 virtual void addLeader(const DRW_Leader* data) override;
137 virtual void addHatch(const DRW_Hatch* data) override;
139 virtual void addViewport(const DRW_Viewport& data) override;
141 virtual void addImage(const DRW_Image* data) override;
143 virtual void linkImage(const DRW_ImageDef* data) override;
145 virtual void addComment(const char* comment) override;
147 virtual void addPlotSettings(const DRW_PlotSettings* data) override;
149 virtual void writeHeader(DRW_Header& data) override;
151 virtual void writeBlocks() override;
153 virtual void writeBlockRecords() override;
155 virtual void writeEntities() override;
157 virtual void writeLTypes() override;
159 virtual void writeLayers() override;
161 virtual void writeTextstyles() override;
163 virtual void writeVports() override;
165 virtual void writeDimstyles() override;
167 virtual void writeObjects() override;
169 virtual void writeAppId() override;
170public:
172 DxfLayer* FindLayerByName(const std::string& name);
174 void addLayer(const std::string& layerName);
175public:
176 // 添加HKR字体样式
178 // 添加复杂线型样式(目前添加双折线和波浪线)
180
182
183 void setDimensionStyleName(const std::string& name);
184
185 void setTextStyleName(const std::string& name);
186
187 void setTextFontFamily(const std::string& name);
188
189 void setTextBigFontFamily(const std::string& name);
190
191 void setTextWidthFactor(const std::string& name, float factor);
192
193 void setTemplateEntityContainer(const std::vector<DxfEntity*>& entities);
194
195public:
196 int getDXFVersion() { return m_Version; }
197 DxfBlock* addBlock(const std::string& name,
198 const Base::Vector3d& iPt);
199 void addInsert(const std::string& name,
200 const Base::Vector3d& iPt,
201 double angle);
204 const Base::Vector3d& center,
205 double radius,
206 double angle1,
207 double angle2,
208 bool reversed);
209
211 const Base::Vector3d& center,
212 double radius,
213 bool needScale = true);
215 void addMText(DxfBlock* block,
216 const std::string& text,
217 const Base::Vector3d& position2,
218 double height,
219 int widthscale,
220 double angle = 0.0);
222 void addText(DxfBlock* block,
223 const std::string& text,
224 const Base::Vector3d& position1,
225 const Base::Vector3d& position2,
226 double height,
227 double angle = 0.0,
228 int colorIndex = 0,
229 int widthscale = 1.0);
232 const Base::Vector3d& position1,
233 const Base::Vector3d& position2,
234 double lineWidth,
235 bool needScale = true);
238 const std::vector< std::pair<DxfVector, double> >& positionList,
239 bool bClosed,
240 double lineWidth,
241 bool needScale = true);
243 void getArrowSizeAndTextSize(const std::string& styleName,
244 const std::map<std::string, DxfDimStyle*>& styleContainer,
245 double& arrowSizeInDxf,
246 double& textSizeInDxf);
248 void addLineDim(const Base::Vector3d& textLocn,
249 const Base::Vector3d& lineLocn,
250 const Base::Vector3d& extLine1Start,
251 const Base::Vector3d& extLine2Start,
252 char* dimText,
253 double angle,
254 int userPosition,
255 int dimArrowStyle,
256 Base::Color dimTextColor,
257 Base::Color dimHorizonColor,
258 Base::Color dimVerticalColor,
259 double arrowSize,
260 double textSize);
261
262 // 添加对齐标注
263 void addDimAligned(const Base::Vector3d& textLocn,
264 const Base::Vector3d& lineLocn,
265 const Base::Vector3d& extLine1Start,
266 const Base::Vector3d& extLine2Start,
267 char* dimText,
268 double angle,
269 int userPosition,
270 int dimArrowStyle,
271 Base::Color dimTextColor,
272 Base::Color dimHorizonColor,
273 Base::Color dimVerticalColor,
274 double arrowSize,
275 double textSize);
277 //textLocn: 标注文本的位置
278 //lineLocn : 角度标注线的起始位置
279 //extLine1End : 第一条延伸线的终点
280 //extLine2End : 第二条延伸线的终点
281 //apexPoint : 角度的顶点
282 //dimText : 标注文本
283 //userPosition : 用户指定的标注位置
284 //dimArrowStyle : 标注箭头的样式
285 //dimTextColor : 标注文本的颜色
286 //dimHorizonColor : 水平标注线的颜色
287 //dimVerticalColor : 垂直标注线的颜色
288 //arrowSize : 箭头的大小
289 //textSize : 文本的大小
290 void addAngularDim(const Base::Vector3d& textLocn,
291 const Base::Vector3d& lineLocn,
292 const Base::Vector3d& extLine1End,
293 const Base::Vector3d& extLine2End,
294 const Base::Vector3d& apexPoint,
295 char* dimText,
296 int userPosition,
297 int dimArrowStyle,
298 Base::Color dimTextColor,
299 Base::Color dimHorizonColor,
300 Base::Color dimVerticalColor,
301 double arrowSize,
302 double textSize);
303 //
305 void addRadialDim(const Base::Vector3d& centerPoint,
306 const Base::Vector3d& textLocn,
307 const Base::Vector3d& arcPoint,
308 char* dimText,
309 int userPosition,
310 int dimArrowStyle,
311 Base::Color dimTextColor,
312 Base::Color dimHorizonColor,
313 Base::Color dimVerticalColor,
314 double arrowSize,
315 double textSize);
317 void addDiametricDim(const Base::Vector3d& textLocn,
318 const Base::Vector3d& arcPoint1,
319 const Base::Vector3d& arcPoint2,
320 char* dimText,
321 int userPosition,
322 int dimArrowStyle,
323 Base::Color dimTextColor,
324 Base::Color dimHorizonColor,
325 Base::Color dimVerticalColor,
326 double arrowSize,
327 double textSize);
329 const char* leaderType,
330 const Base::Vector3d& textPt,
331 const Base::Vector3d& tailPt,
332 const Base::Vector3d& dxfPt,
333 TechDraw::DxfEntity* bubble,
334 TechDraw::DxfText* label,
335 TechDraw::DxfPolyline* leader,
336 double pagescale,
337 double rotateAngle,
338 double fontHeight,
339 double inkTextWidth,
340 double circleTextWidth,
341 double leaderArrowOffsetX,
342 double leaderArrowOffsetY,
343 const std::vector<TechDraw::DxfText*>& attachedLabels,
344 const std::vector<DxfLine*>& attachedLines,
345 bool showLine,
346 const std::vector<Base::Vector3d>& leaderInterval,
347 double arrowSize,
348 Base::Color dimTextColor,
349 Base::Color dimLineColor);
351 //void addEntity(const Base::Vector3d& centerPoint,
352 // const std::vector<TechDraw::FacePtr>& sectionFaces);
355 const std::string& tableName,
356 const Base::Vector3d& tablePosition,
357 int rowCount,
358 int colCount,
359 std::vector<double> rowWidths,
360 double colHeight,
361 const std::map<int, std::map<int, std::string>>& tableContents,
362 const std::vector<TableSpanInfo>& TableSpandata);
364 void addXLine();
366 void addRay();
368 void addSpline();
370 void addPoint();
373 DxfBlock* block,
374 const Base::Vector3d& v1,
375 const Base::Vector3d& v2,
376 const Base::Vector3d& v3,
377 const Base::Vector3d& v4,
378 bool needScale);
390 void addEntity(Base::Vector3d basePt, const std::vector<DxfEntity*>& entities, double scale = 1.0, double rotate=0.0, double hatchScale = 1.0);
393 //
418 std::string getBlockByHandle(const std::string& handle);
420 bool readFile(const std::string& fileName);
422 bool writeDxfFile(const QString& fileName, TechDraw::DxfExportType type);
424 bool writeDwgFile(const QString& fileName, TechDraw::DwgExportType type);
426 void setTopoStructData(const std::vector<TechDraw::DxfEntity*>& entityVec);
428 void setEntityAttribute(DxfEntity* entity, const DRW_Entity& data);
445 //
446 double getWidth() const;
448 double getHeight() const;
450 const std::string& getCodePage();
452 const std::string& getTextStyleInHeader();
454 const std::string& getDimStyleInHeader();
460 const std::vector<DxfBlock*>& getTemplateBlockContainer();
462 const std::vector<DxfEntity*>& getTemplateEntityContainer();
463 //得到所有从模板实体插入点的数组
464 const std::vector<DxfInsert*>& getTemplateBlockInsertContainer();
465 //得到所有用户自定义块数组
466 const std::vector<DxfBlock*>& getCustomBlockContainer();
467 //得到所有用户自定义实体数组
468 const std::vector<DxfEntity*>& getCustomEntityContainer();
469 //得到所有用户自定义块插入点数组
470 const std::vector<DxfInsert*>& getCustomBlockInsertContainer();
471 //得到所有拷贝块数组
472 const std::vector<DxfBlock*>& getCopyBlockContainer();
473 //得到所有拷贝实体数组
474 const std::vector<DxfEntity*>& getCopyEntityContainer();
475 //得到所有拷贝块插入点数组
476 const std::vector<DxfInsert*>& getCopyBlockInsertContainer();
477 //得到所有布局数组
478 std::vector<DxfLayout*> getTemplateLayoutContainer();
479 // 从名称获取块数据
480 DxfBlock* getBlockByName(const std::string& name);
484 void setTemplateScale(double scale);
485 //
486 void setAmplifyScale(float times);
487 //
488 float getAmplifyScale() { return m_Amplify; }
489 //
490 double getTemplateScale() { return m_XScale; }
492 void modifyIntValueInHeader(const std::string&, int var);
493
496 // 设置图框分图组名称
497 void setTemplateGraphicsName(const std::string& name);
499 void copyTemplateEntities(double step, int num = 0, bool isSplit = false, const std::string& dir = "X",const std::string& graphicsName="");
511 //写流
512 void readString(const std::string& buf);
513 std::string writeString();
514private:
516 bool readDxfFile(const std::string& fileName);
518 bool readDwgFile(const std::string& fileName);
520 void addToTemplateContainer(DxfEntity* entity, const DRW_Entity& data);
522 double round(const double v, const double precision);
524 void addTextStyle(const std::vector<DxfEntity*>& entities, std::vector<std::string>& styles);
526 std::string toNativeString(const std::string& data);
528 bool convDimensionData(const DRW_Dimension* data,
529 DxfVector& definitionPoint,
530 DxfVector& middleOfText,
531 VAlign& valign,
532 HAlign& halign,
533 MTextLineSpacingStyle& lineSpacingStyle,
534 double& lineSpacingFactor,
535 std::string& text,
536 std::string& style,
537 double& angle);
538 void setDimensionArrowInfo(DxfDimension* dim, const DRW_DimLinear* data);
540 std::string getFontFromStyle(const std::string& style) const;
542 std::string toUtf8(const std::string& s);
544 std::string encodeText(const std::string& stmp);
546 std::string decodeText(int c);
548 std::string encodeNum(int c);
550 int decodeNum(const std::string& s, int* b);
552 QString cadUnicode(const QString& str);
554 QByteArray escapeUnicode(const QString& str);
556 double getTableWidth(int start, int end, const std::vector<double>& rowWidths);
558 void getTableCombInfo(bool& totalTableWidth, int& colNeedCut, int& colCount, int row, const std::vector<TableSpanInfo>& TableSpandata);
562 void decreaseTotal(int& total);
564 void loadPatDir(const QString& dirName);
565 public:
567 void loadAllFromPatFile(const QString& fileName);
568 private:
577public:
578 static TechDraw::DxfPattern* getPatternByName(const std::string& patternName);
579 static std::map<std::string, DxfPattern*> m_DxfPatternLists;
580private:
582 std::vector<DxfLayout*> m_TemplateLayoutContainer;
584 std::vector<DxfBlock*> m_TemplateBlockContainer;
586 std::vector<DxfEntity*> m_TemplateEntityContainer;
588 std::vector<TechDraw::DxfInsert*> m_TemplateBlockInsertContainer;
590 std::vector<DxfBlock*> m_TableBlockContainer;
592 std::vector<DxfLayer*> m_LayerContainer;
594 std::map<std::string, DxfTextStyle*> m_TextStyleContainer;
596 std::map<std::string, DxfDimStyle*> m_DimensionStyleContainer;
598 std::vector<DxfLType*> m_LTypeContainer;
600 std::vector<DxfBlock*> m_CustomBlockContainer;
602 std::vector<TechDraw::DxfInsert*> m_CustomBlockInsertContainer;
604 std::vector<DxfEntity*> m_CustomEntityContainer;
606 std::vector<DxfBlock*> m_CopyBlockContainer;
608 std::vector<DxfEntity*> m_CopyEntityContainer;
610 std::vector<TechDraw::DxfInsert*> m_CopyBlockInsertContainer;
612 std::vector<DxfBlock*> m_AllCopyBlockContainer;
614 std::vector<DxfEntity*> m_AllCopyEntityContainer;
616 std::vector<TechDraw::DxfInsert*> m_AllCopyBlockInsertContainer;
626 std::string m_CodePage;
636 std::map<std::string, std::string> m_FontList;
642 double m_XScale;
644 double m_YScale;
652 std::string m_TextStyleName;
654 std::string m_TextFontFamily;
660 std::map<std::string, std::string> m_DimensionArrowBlockHandleMap;
662 int mGraphCount; // 当前分图组中已经绘制图纸的个数
663 double mGroupGraphMaxX;// 每一个分图组的最大X坐标
664 double mCurrentGraphBaseX; //当前分图组偏移的基准X坐标
665 std::string mStrDrawName; // 每一个分图组的名称
666 double mCurrentPageX; // 当前复制的最新图框的相对移动的X距离
667 double mCurrentPageY; // 当前复制的最新图框的相对移动的Y距离
668};
669}
670
671#endif // !TECHDRAWAPP_DXFANALYSIS_H
TechDraw中DxfEntity类
TechDraw中DxfArc类
Definition DxfEntity.h:1582
TechDraw中DxfBlock类
Definition DxfEntity.h:706
TechDraw中DxfCircle类
Definition DxfEntity.h:1556
Definition DxfEntity.h:251
Definition DxfEntity.h:1005
TechDraw中DxfEntityContainer类
Definition DxfEntity.h:675
TechDraw中DxfEntity类
Definition DxfEntity.h:511
TechDraw中DxfHeader类
Definition DxfEntity.h:457
TechDraw中DxfLayer类
Definition DxfEntity.h:150
TechDraw中DxfLine类
Definition DxfEntity.h:924
Definition DxfEntity.h:805
TechDraw中DxfPolyline类
Definition DxfEntity.h:1777
Definition DxfEntity.h:2060
TechDraw中DxfText类
Definition DxfEntity.h:1861
Definition DxfEntity.h:342
Definition DxfVector.h:61
virtual void addHeader(const DRW_Header *data) override
从libdxfrw解析出来的接口中读取Header,并存入自己的类中
void addDimStyle(DxfDimStyle *)
void addLineDim(const Base::Vector3d &textLocn, const Base::Vector3d &lineLocn, const Base::Vector3d &extLine1Start, const Base::Vector3d &extLine2Start, char *dimText, double angle, int userPosition, int dimArrowStyle, Base::Color dimTextColor, Base::Color dimHorizonColor, Base::Color dimVerticalColor, double arrowSize, double textSize)
自定义添加线性标注
float getAmplifyScale()
Definition dxfAnalysis.h:488
double m_Coefficient
像素值和磅之间的系数
Definition dxfAnalysis.h:646
std::vector< TechDraw::DxfInsert * > m_AllCopyBlockInsertContainer
存放块插入点的数组
Definition dxfAnalysis.h:616
void addSpline()
根据传入的拓扑结构添加Spline
virtual void addPolyline(const DRW_Polyline &data) override
从libdxfrw解析出来的接口中读取Polyline,并存入自己的类中
DxfVPoint * getVPoint() const
返回dxfVp信息
virtual void addSolid(const DRW_Solid &data) override
从libdxfrw解析出来的接口中读取Solid,并存入自己的类中
void addText(DxfBlock *block, const std::string &text, const Base::Vector3d &position1, const Base::Vector3d &position2, double height, double angle=0.0, int colorIndex=0, int widthscale=1.0)
自定义添加单行文字
void addDimensionArrowBlock()
添加标注箭头块
QByteArray escapeUnicode(const QString &str)
编码转换
float m_Amplify
存放page放大或缩小倍数
Definition dxfAnalysis.h:648
void addTable(const std::string &tableName, const Base::Vector3d &tablePosition, int rowCount, int colCount, std::vector< double > rowWidths, double colHeight, const std::map< int, std::map< int, std::string > > &tableContents, const std::vector< TableSpanInfo > &TableSpandata)
todo
std::vector< DxfBlock * > m_CustomBlockContainer
存放用户自定义块的数组
Definition dxfAnalysis.h:600
Base::Vector3d m_MinExtAfterCopy
存放图框复制后图形最小范围,先单独存一个变量中,以免影响目前的管井出图逻辑
Definition dxfAnalysis.h:622
void addDotSmallArrowBlock()
小点
double getWidth() const
double round(const double v, const double precision)
对传入的数值做计算后四舍五入
void removeCustomEntities()
删除用户自定义实体
void addNoneArrowBlock()
添加NONE
float m_TextWidthFactor
Definition dxfAnalysis.h:658
DxfBlock * addBlock(const std::string &name, const Base::Vector3d &iPt)
void decreaseTotal(int &total)
std::vector< DxfLayout * > getTemplateLayoutContainer()
std::vector< DxfBlock * > m_AllCopyBlockContainer
存放块的数组
Definition dxfAnalysis.h:612
void addDatumFilledArrowBlock()
基准三角形
bool readDxfFile(const std::string &fileName)
读取dxf文件
int decodeNum(const std::string &s, int *b)
解码数字
virtual void addTrace(const DRW_Trace &data) override
从libdxfrw解析出来的接口中读取Trace,并存入自己的类中
std::vector< DxfEntity * > m_TemplateEntityContainer
存放实体的数组
Definition dxfAnalysis.h:586
std::string getBlockByHandle(const std::string &handle)
通过句柄找块名
virtual void writeLTypes() override
将LTypes文件写入dxf文件
double getHeight() const
virtual void writeTextstyles() override
将TextStyle文件写入dxf文件
void addToTemplateContainer(DxfEntity *entity, const DRW_Entity &data)
将实体加入数组
double getCurrentCopyPageYDis()
获取当前复制的最新图框的相对Y坐标位置
void addAngularDim(const Base::Vector3d &textLocn, const Base::Vector3d &lineLocn, const Base::Vector3d &extLine1End, const Base::Vector3d &extLine2End, const Base::Vector3d &apexPoint, char *dimText, int userPosition, int dimArrowStyle, Base::Color dimTextColor, Base::Color dimHorizonColor, Base::Color dimVerticalColor, double arrowSize, double textSize)
自定义添加角度标注
virtual void addRay(const DRW_Ray &data) override
从libdxfrw解析出来的接口中读取Ray,并存入自己的类中
std::vector< DxfLayout * > m_TemplateLayoutContainer
存放Layout的数组
Definition dxfAnalysis.h:582
void addPoint()
添加Point
virtual void add3dFace(const DRW_3Dface &data) override
从libdxfrw解析出来的接口中读取3Dface,并存入自己的类中
void setTextBigFontFamily(const std::string &name)
void addArchTickArrowBlock()
建筑标记
void setDimensionStyleName(const std::string &name)
void setEntityAttribute(DxfEntity *entity, const DRW_Entity &data)
为DXF实体设置属性
virtual void addHatch(const DRW_Hatch *data) override
从libdxfrw解析出来的接口中读取Hatch,并存入自己的类中
void addMText(DxfBlock *block, const std::string &text, const Base::Vector3d &position2, double height, int widthscale, double angle=0.0)
自定义添加多行文字
DxfLine * addLine(DxfBlock *block, const Base::Vector3d &position1, const Base::Vector3d &position2, double lineWidth, bool needScale=true)
自定义添加单行线条
std::vector< DxfBlock * > m_TableBlockContainer
存放块表数据
Definition dxfAnalysis.h:590
virtual void addViewport(const DRW_Viewport &data) override
从libdxfrw解析出来的接口中读取Viewport,并存入自己的类中
static std::map< std::string, DxfPattern * > m_DxfPatternLists
Definition dxfAnalysis.h:579
virtual void addBlock(const DRW_Block &data) override
从libdxfrw解析出来的接口中读取Block,并存入自己的类中
virtual void addText(const DRW_Text &data) override
从libdxfrw解析出来的接口中读取Text,并存入自己的类中
virtual void addXline(const DRW_Xline &data) override
从libdxfrw解析出来的接口中读取Xline,并存入自己的类中
virtual void addLine(const DRW_Line &data) override
从libdxfrw解析出来的接口中读取Line,并存入自己的类中
void loadAllFromPatFile(const QString &fileName)
加载所有Pat模板
DxfCircle * addCircle(DxfBlock *block, const Base::Vector3d &center, double radius, bool needScale=true)
void addXLine()
根据传入的拓扑结构添加XLine
DxfHeader * m_Header
dxf头指针
Definition dxfAnalysis.h:632
bool readDwgFile(const std::string &fileName)
读取dwg文件
virtual void setBlock(const int handle) override
DxfHeader * getHeader() const
返回dxf头部信息
const std::string & getDimStyleInHeader()
得到DimStyle
virtual void addAppId(const DRW_AppId &data) override
从libdxfrw解析出来的接口中读取AppId,并存入自己的类中
virtual void addVport(const DRW_Vport &data) override
从libdxfrw解析出来的接口中读取Vport,并存入自己的类中
bool convDimensionData(const DRW_Dimension *data, DxfVector &definitionPoint, DxfVector &middleOfText, VAlign &valign, HAlign &halign, MTextLineSpacingStyle &lineSpacingStyle, double &lineSpacingFactor, std::string &text, std::string &style, double &angle)
处理标注数据
std::vector< DxfEntity * > m_CustomEntityContainer
存放用户自定义实体的
Definition dxfAnalysis.h:604
std::string m_DimensionStyleName
Definition dxfAnalysis.h:650
virtual void addPoint(const DRW_Point &data) override
从libdxfrw解析出来的接口中读取Point,并存入自己的类中
void setTemplateGraphicsName(const std::string &name)
const std::vector< DxfInsert * > & getTemplateBlockInsertContainer()
std::string decodeText(int c)
解码文字
void loadPatDir(const QString &dirName)
加载所有Pat模板
bool writeDwgFile(const QString &fileName, TechDraw::DwgExportType type)
读取dwg文件
std::string getFontFromStyle(const std::string &style) const
根据传入的样式返回样式对应的字体
virtual void addLayer(const DRW_Layer &data) override
从libdxfrw解析出来的接口中读取Layer,并存入自己的类中
int m_Version
当前dxf的版本
Definition dxfAnalysis.h:634
virtual void writeEntities() override
将Header文件写入dxf文件
std::string toNativeString(const std::string &data)
将DXF编码的字符串转换为本机Unicode字符串
std::vector< DxfBlock * > m_TemplateBlockContainer
存放块的数组
Definition dxfAnalysis.h:584
const std::vector< DxfBlock * > & getCopyBlockContainer()
virtual void writeVports() override
将Vports文件写入dxf文件
double mCurrentPageY
Definition dxfAnalysis.h:667
DxfSolid * addSolid(DxfBlock *block, const Base::Vector3d &v1, const Base::Vector3d &v2, const Base::Vector3d &v3, const Base::Vector3d &v4, bool needScale)
void addDiametricDim(const Base::Vector3d &textLocn, const Base::Vector3d &arcPoint1, const Base::Vector3d &arcPoint2, char *dimText, int userPosition, int dimArrowStyle, Base::Color dimTextColor, Base::Color dimHorizonColor, Base::Color dimVerticalColor, double arrowSize, double textSize)
添加自定义标注信息
void addLayer(const std::string &layerName)
通过名称添加一个Layer
std::map< std::string, std::string > m_FontList
字体列表
Definition dxfAnalysis.h:636
virtual void addImage(const DRW_Image *data) override
从libdxfrw解析出来的接口中读取Image,并存入自己的类中
double mCurrentGraphBaseX
Definition dxfAnalysis.h:664
void getEntitiesMinAndMax(TechDraw::DxfVector &MinV, TechDraw::DxfVector &MaxV)
获取所有Entity的边界最大最小值
const std::vector< DxfBlock * > & getTemplateBlockContainer()
得到所有从模板获得的块数组
void releaseCopiedTemplateEntities()
如果需要删除拷贝的图框数据,直接从m_AllCopyBlockContainer等三个数组中删除就行
std::string m_CodePage
存放Page的编码
Definition dxfAnalysis.h:626
Base::Vector3d m_MaxExtAfterCopy
存放图框复制后图形最大范围,先单独存一个变量中,以免影响目前的管井出图逻辑
Definition dxfAnalysis.h:624
std::vector< DxfLType * > m_LTypeContainer
存放LType的数组
Definition dxfAnalysis.h:598
virtual void addLeader(const DRW_Leader *data) override
从libdxfrw解析出来的接口中读取Leader,并存入自己的类中
const std::vector< DxfInsert * > & getCopyBlockInsertContainer()
virtual void writeLayers() override
将Layers文件写入dxf文件
void readString(const std::string &buf)
double m_XScale
X方向缩放比例
Definition dxfAnalysis.h:642
void removeCopyEntities()
清空临时数组中拷贝的数据 m_AllCopyBlockContainer等三个数组中存放了全部拷贝的图框数据
Base::Vector3d getMaxExtAfterCopy() const
拷贝后的边界最大值
void removeAllEntities()
删除实体
double mGroupGraphMaxX
Definition dxfAnalysis.h:663
virtual void addTextStyle(const DRW_Textstyle &data) override
从libdxfrw解析出来的接口中读取Textstyle,并存入自己的类中
void getBlocksMinAndMax(TechDraw::DxfVector &MinV, TechDraw::DxfVector &MaxV)
获取所有块的边界最大最小值
virtual void writeBlockRecords() override
将BlockRecords文件写入dxf文件
const std::vector< DxfInsert * > & getCustomBlockInsertContainer()
std::map< std::string, DxfTextStyle * > m_TextStyleContainer
存放TextStyle的数组
Definition dxfAnalysis.h:594
virtual void addCircle(const DRW_Circle &data) override
从libdxfrw解析出来的接口中读取Circle,并存入自己的类中
std::vector< DxfEntity * > m_AllCopyEntityContainer
存放实体的数组
Definition dxfAnalysis.h:614
void modifyIntValueInHeader(const std::string &, int var)
修改Header中指定字段的值
DxfLayer * FindLayerByName(const std::string &name)
通过名称查找Layer
Base::Vector3d getMinExtAfterCopy() const
拷贝后的边界最小值
virtual void writeObjects() override
将Objects文件写入dxf文件
virtual void writeBlocks() override
将Block文件写入dxf文件
void setTextWidthFactor(const std::string &name, float factor)
double getCurrentCopyPageXDis()
获取当前复制的最新图框的相对X坐标位置
static TechDraw::DxfPattern * getPatternByName(const std::string &patternName)
void copyTemplateEntities(double step, int num=0, bool isSplit=false, const std::string &dir="X", const std::string &graphicsName="")
拷贝图框
void sortHatchLoop(DxfEntityContainer *hatchLoop)
填充线条排序
const std::string & getCodePage()
得到Page的编码
virtual void writeAppId() override
将AppId文件写入dxf文件
std::vector< DxfEntity * > m_CopyEntityContainer
存放实体的数组
Definition dxfAnalysis.h:608
virtual void addDimStyle(const DRW_Dimstyle &data) override
从libdxfrw解析出来的接口中读取Dimstyle,并存入自己的类中
std::map< std::string, DxfDimStyle * > m_DimensionStyleContainer
存放DimensionStyle的数组
Definition dxfAnalysis.h:596
std::string m_TextBigFontFamily
Definition dxfAnalysis.h:656
void addObliqueArrowBlock()
倾斜
virtual void addEllipse(const DRW_Ellipse &data) override
从libdxfrw解析出来的接口中读取Ellipse,并存入自己的类中
std::string m_TextStyleName
Definition dxfAnalysis.h:652
std::vector< TechDraw::DxfInsert * > m_CustomBlockInsertContainer
存放用户自定义块插入点的数组
Definition dxfAnalysis.h:602
void setMinExtAfterCopy(const Base::Vector3d &)
设置拷贝后的边界最小值
std::string toUtf8(const std::string &s)
编码转换
DxfVPoint * m_VPoint
vp指针
Definition dxfAnalysis.h:640
std::vector< TechDraw::DxfInsert * > m_TemplateBlockInsertContainer
存放块插入点的数组
Definition dxfAnalysis.h:588
dxfW * m_DxfWriter
写dxf的指针
Definition dxfAnalysis.h:638
void releaseDxfPatternLists()
释放dxf样式列表
const std::vector< DxfEntity * > & getCustomEntityContainer()
void addOpenArrowBlock()
打开
void setTopoStructData(const std::vector< TechDraw::DxfEntity * > &entityVec)
设置拓扑结构数据
void addBlockEntity(DxfBlock *pBlock)
void addSquareArrowBlock()
方框
void setMinExt(const Base::Vector3d &)
设置边界最小值
virtual void addDimAlign(const DRW_DimAligned *data) override
从libdxfrw解析出来的接口中读取DimAligned,并存入自己的类中
void getTableCombInfo(bool &totalTableWidth, int &colNeedCut, int &colCount, int row, const std::vector< TableSpanInfo > &TableSpandata)
获得表格详细信息
virtual void addLayout(const DRW_Layout &data) override
从libdxfrw解析出来的接口中读取Layout,并存入自己的类中
virtual void addInsert(const DRW_Insert &data) override
从libdxfrw解析出来的接口中读取Insert,并存入自己的类中
void setTemplateScale(double scale)
设置XScale和YScale的比例
virtual void addDimOrdinate(const DRW_DimOrdinate *data) override
从libdxfrw解析出来的接口中读取DimOrdinate,并存入自己的类中
virtual void addDimAngular3P(const DRW_DimAngular3p *data) override
从libdxfrw解析出来的接口中读取DimAngular3p,并存入自己的类中
DxfArc * addArc(DxfBlock *block, const Base::Vector3d &center, double radius, double angle1, double angle2, bool reversed)
自定义添加圆弧
std::string m_TextStyleInHeader
存放TextStyle
Definition dxfAnalysis.h:628
void addLeader(const char *leaderType, const Base::Vector3d &textPt, const Base::Vector3d &tailPt, const Base::Vector3d &dxfPt, TechDraw::DxfEntity *bubble, TechDraw::DxfText *label, TechDraw::DxfPolyline *leader, double pagescale, double rotateAngle, double fontHeight, double inkTextWidth, double circleTextWidth, double leaderArrowOffsetX, double leaderArrowOffsetY, const std::vector< TechDraw::DxfText * > &attachedLabels, const std::vector< DxfLine * > &attachedLines, bool showLine, const std::vector< Base::Vector3d > &leaderInterval, double arrowSize, Base::Color dimTextColor, Base::Color dimLineColor)
std::map< std::string, std::string > m_DimensionArrowBlockHandleMap
Definition dxfAnalysis.h:660
std::string encodeText(const std::string &stmp)
编码文字
virtual void addDimAngular(const DRW_DimAngular *data) override
从libdxfrw解析出来的接口中读取DimAngular,并存入自己的类中
void addEntity(Base::Vector3d basePt, const std::vector< DxfEntity * > &entities, double scale=1.0, double rotate=0.0, double hatchScale=1.0)
添加实体集合
virtual void addKnot(const DRW_Entity &data) override
从libdxfrw解析出来的接口中读取Entity,并存入自己的类中
double m_YScale
Y方向缩放比例
Definition dxfAnalysis.h:644
void addRadialDim(const Base::Vector3d &centerPoint, const Base::Vector3d &textLocn, const Base::Vector3d &arcPoint, char *dimText, int userPosition, int dimArrowStyle, Base::Color dimTextColor, Base::Color dimHorizonColor, Base::Color dimVerticalColor, double arrowSize, double textSize)
自定义添加半径标注
virtual void writeHeader(DRW_Header &data) override
将Header文件写入dxf文件
void addRay()
根据传入的拓扑结构添加Ray
QString cadUnicode(const QString &str)
编码转换
int getDXFVersion()
Definition dxfAnalysis.h:196
double mCurrentPageX
Definition dxfAnalysis.h:666
void addDotArrowBlock()
const Base::Vector3d & getMaxExt()
得到从dxf或者dwg文件读取到的边界最大值
virtual void addLType(const DRW_LType &data) override
从libdxfrw解析出来的接口中读取LType,并存入自己的类中
bool readFile(const std::string &fileName)
根据传入的文件名读取文件
const std::vector< DxfBlock * > & getCustomBlockContainer()
std::string mStrDrawName
Definition dxfAnalysis.h:665
Base::Vector3d m_MaxExt
存放从dxf或者dwg中读取出来的图形范围最大值
Definition dxfAnalysis.h:620
const std::string & getTextStyleInHeader()
得到TextStyle
Base::Vector3d m_MinExt
存放从dxf或者dwg中读取出来的图形范围最小值
Definition dxfAnalysis.h:618
virtual void endBlock() override
读取一个块结束
DxfBlock * getBlockByName(const std::string &name)
std::vector< DxfLayer * > m_LayerContainer
存放Layer的数组
Definition dxfAnalysis.h:592
void setAmplifyScale(float times)
virtual void addMText(const DRW_MText &data) override
从libdxfrw解析出来的接口中读取MText,并存入自己的类中
void addInsert(const std::string &name, const Base::Vector3d &iPt, double angle)
std::vector< TechDraw::DxfInsert * > m_CopyBlockInsertContainer
存放块插入点的数组
Definition dxfAnalysis.h:610
void getArrowSizeAndTextSize(const std::string &styleName, const std::map< std::string, DxfDimStyle * > &styleContainer, double &arrowSizeInDxf, double &textSizeInDxf)
获取箭头大小、文字大小
const std::vector< DxfEntity * > & getTemplateEntityContainer()
得到所有从模板实体数组
std::string m_DimStyleInHeader
存放DimStyle
Definition dxfAnalysis.h:630
void setTemplateEntityContainer(const std::vector< DxfEntity * > &entities)
bool writeDxfFile(const QString &fileName, TechDraw::DxfExportType type)
读取dxf文件
virtual void linkImage(const DRW_ImageDef *data) override
从libdxfrw解析出来的接口中读取ImageDef,并存入自己的类中
double getTemplateScale()
Definition dxfAnalysis.h:490
std::string writeString()
virtual void addArc(const DRW_Arc &data) override
从libdxfrw解析出来的接口中读取Arc,并存入自己的类中
double getTableWidth(int start, int end, const std::vector< double > &rowWidths)
获得表格宽度
std::string m_TextFontFamily
Definition dxfAnalysis.h:654
bool isReadFile()
是否已经从文件读取过
virtual void addDimLinear(const DRW_DimLinear *data) override
从libdxfrw解析出来的接口中读取DimLinear,并存入自己的类中
virtual void addLWPolyline(const DRW_LWPolyline &data) override
从libdxfrw解析出来的接口中读取LWPolyline,并存入自己的类中
void setMaxExt(const Base::Vector3d &)
设置边界最大值
void addDimAligned(const Base::Vector3d &textLocn, const Base::Vector3d &lineLocn, const Base::Vector3d &extLine1Start, const Base::Vector3d &extLine2Start, char *dimText, double angle, int userPosition, int dimArrowStyle, Base::Color dimTextColor, Base::Color dimHorizonColor, Base::Color dimVerticalColor, double arrowSize, double textSize)
virtual void addComment(const char *comment) override
从libdxfrw解析出来的接口中读取comment
void setTextFontFamily(const std::string &name)
virtual void addSpline(const DRW_Spline *data) override
从libdxfrw解析出来的接口中读取Spline,并存入自己的类中
virtual void addDimDiametric(const DRW_DimDiametric *data) override
从libdxfrw解析出来的接口中读取DimDiametric,并存入自己的类中
void setDimensionArrowInfo(DxfDimension *dim, const DRW_DimLinear *data)
virtual void addPlotSettings(const DRW_PlotSettings *data) override
从libdxfrw解析出来的接口中读取PlotSettings,并存入自己的类中
std::string encodeNum(int c)
编码数字
void addDotBlankArrowBlock()
空心圆
void setMaxExtAfterCopy(const Base::Vector3d &)
设置拷贝后的边界最大值
virtual void writeDimstyles() override
将Dimstyles文件写入dxf文件
const Base::Vector3d & getMinExt()
得到从dxf或者dwg文件读取到的边界最小值
virtual void addDimRadial(const DRW_DimRadial *data) override
从libdxfrw解析出来的接口中读取DimRadial,并存入自己的类中
DxfPolyline * addPolyLine(DxfBlock *block, const std::vector< std::pair< DxfVector, double > > &positionList, bool bClosed, double lineWidth, bool needScale=true)
自定义添加多段线
void addClosedBlankArrowBlock()
空心闭合
int mGraphCount
分图功能用到的成员变量
Definition dxfAnalysis.h:662
void setTextWidthFactor(DxfText *text)
设置文字的宽度因子
std::vector< DxfBlock * > m_CopyBlockContainer
存放块的数组
Definition dxfAnalysis.h:606
void setTextStyleName(const std::string &name)
const std::vector< DxfEntity * > & getCopyEntityContainer()
void addTextStyle(const std::vector< DxfEntity * > &entities, std::vector< std::string > &styles)
添加TextStyle
Definition dxfAnalysis.h:57
Definition ArrowPropEnum.h:26