#if !defined(GROUPCODE_H) #define GROUPCODE_H #include #include #include #include //#include #define MAX_LINESTRING 2048 //一行中最大的字符数 #define OriginPoint (0, 0) #define MIN_SAMEPOINTDISTANCE 0.001 //单位跟当前读入文件一致,用于判断点是否为同一个点,两个点的X/Y差都小于这个值就认为相同 20181009 从0.15改为0.01,用于QPointData类中的==判断 //20221102 XQ 将值由0.01改为0.001 绣花精度比较高,存在很小的圆 //#define MAX_SAMEPOINTDISTANCE 0.15 //20190221 寻找闭合曲线时, 判断两条曲线端点为同一个点的最大距离, 单位跟当前读入文件一致 0.15与V9保持一致 #define MIN_MAXDISTANCE 1 //单位跟当前读入文件一致, 误差最大值, 用于判断两条曲线距离,判断两条线是否为同一条 #define V10_G_MAX_SPLINE_ERROR 0.05 //曲线的逼近最大误差,单位:mm #define V10_G_MAX_SPLINECTRL_ERROR 0.1 //反求样条曲线控制点的逼近最大误差,单位:mm ////////////////////////////////////////////////////////////////////////// //点类型 #define POINT_TURN 0 //转折点 #define POINT_CURVE 1 //曲线点 #define POINT_ARC 2 //圆弧点 #define POINT_SPILINE 3 //三次样条 //组码类型 #define CODE_NULL -1 #define CODE_POLYLINE 0 #define CODE_LWPOLYLINE 1 #define CODE_LINE 2 #define CODE_MLINE 3 #define CODE_SPILINE 4 #define CODE_TEXT 5 #define CODE_MTEXT 6 #define CODE_ARC 7 #define CODE_CIRCLE 8 #define CODE_ELLIPSE 9 #define CODE_DIMENSION 10 //单位 #define CONST_MM 0 #define CONST_INCH 1 ////////////////////////////////////////////////////////////////////////// class CTextDataList; class CPDSNurbsPointList; class QPointData : public QObject { public: double m_dX; double m_dY; //点的坐标 QString m_strLayer; //点所属层 AutoCAD文件中层可以为字符串 /* 点类型 =POINT_TURN 转折点; =POINT_CURVE曲线点; =POINT_ARC圆弧点; =POINT_SPILINE三次样条 默认转折点 */ int m_iType; int m_iGradeID; //放码ID public: QPointData(void); QPointData(QPointData& a); ~QPointData(void); void operator=(QPointData& a); bool operator==(QPointData& a); //判断点坐标是否相等,按范围 MIN_SAMEPOINTDISTANCE bool operator!=(QPointData& a); //按范围 MIN_SAMEPOINTDISTANCE void Initial(void); //20190221 判断两个点是否相等,按照给定的范围判断 //输入参数: // a // dMaxValue 范围 //返回值: // =true 相等 =false不相等 bool Equal(QPointData&a, double dMaxValue); //将点信息偏移 //输入参数: //dOffsetX/dOffsetY 偏移量 //dSin/dCos 旋转角度, 旋转点为QPoint(dOffsetX, dOffsetY), 水平为零度 //dScaleX/dScaleY 放大缩小 20220408 XQ //说明: // 偏移->旋转->放大缩小 void SetRotateOffset(double dOffsetX, double dOffsetY, double dSin, double dCos, double dScaleX, double dScaleY); //设置放大 //输入参数: //dScale 放大缩小比例 void SetScale(double dScale); QPoint GetIntPoint(); //设置放码ID //输入参数: // listPointGrade 查找点链 void SetGradeID(CTextDataList &listPointGrade); }; class CCurveNotchInforList; class QPointDataList : public QList { public: QPointDataList& operator=(QPointDataList& rhs); // 赋值 //获取指定索引值上的项 //输入参数: // iIndex 索引值,从0开始,不可越界 //返回值: QPointData& operator[](int iIndex); //将曲线点链所有点信息偏移 //输入参数: //dOffsetX/dOffsetY 偏移量 //dSin/dCos 旋转角度, 旋转点为QPoint(dOffsetX, dOffsetY), 水平为零度 //dScaleX/dScaleY 放大缩小 20220408 XQ //说明: // 偏移->旋转->放大缩小 void SetRotateOffset(double dOffsetX, double dOffsetY, double dSin, double dCos, double dScaleX, double dScaleY); //设置放大 //输入参数: //dScale 放大缩小比例 void SetScale(double dScale); //得到矩形 QRect GetRect(); void GetIntPoint(QList &listPoint); //设置放码ID //输入参数: // listPointGrade 查找点链 void SetGradeID(CTextDataList &listPointGrade); //设置点类型 //输入参数: // listTurnPoint 转折点链 // listCurvePoint 曲线点链 void SetPointType(QPointDataList &listTurnPoint, QPointDataList &listCurvePoint); //查找给定坐标点 //输入参数: // PointData 点 //返回值: // =true 找到;=false没有找到 bool FindSamePoint(QPointData PointData); //将每一个点转成一个曲线链 void GetCurveInforList(CCurveNotchInforList &listCurveInfor); //20201021 XQ 移除相邻的相同点,头尾点不处理 void RemoveSamePoint(); }; class CGroupCode : public QObject { public: //在Auto CAD中颜色和线型都是使用符号表示的 int m_iType; //类型CODE_NULL.... QString m_strLayer; //所属层 QString m_strColor; //所属颜色, 如果为空,为所属层颜色 QString m_strViewCurveType; //通过查找对应表得到线类型..... 如果为空表示默认线型 public: CGroupCode(void); CGroupCode(CGroupCode& a); ~CGroupCode(void); void operator=(CGroupCode& a); void Initial(void); void CopyData(CGroupCode &a); }; ////////////////////////////////////////////////////////////////////////// //曲线信息 class CCurveInfor : public CGroupCode { public: QPointDataList m_listCtrlCurve; bool m_bClose; //=true 闭合曲线;=false 开口曲线 //下面三个变量目前只有m_iCurveType为CODE_SPILINE时有效 int m_iCtrlPointType; //= 0表示曲线经过控制点;=1 不经过,三次样条; =2 表示 CODE_SPILINE已经被处理过; 默认1 QList m_listdCode40; //存放组码为40的值 结点数 QList m_listdCode41; //存放组码为41的值 权值 如果为空权值为1 QPointDataList m_listReadCurve; //存放读入的拟合点, 不做任何处理,读入什么数据存放什么数据 QList m_listPoint; //实际点链 public: CCurveInfor(void); CCurveInfor(CCurveInfor& a); ~CCurveInfor(void); void operator=(CCurveInfor& a); void Initial(void); //将曲线点链所有点信息偏移 //输入参数: //dOffsetX/dOffsetY 偏移量 //dSin/dCos 旋转角度, 旋转点为QPoint(dOffsetX, dOffsetY), 水平为零度 //dScaleX/dScaleY 放大缩小 20220408 XQ //说明: // 偏移->旋转->放大缩小 void SetRotateOffset(double dOffsetX, double dOffsetY, double dSin, double dCos, double dScaleX, double dScaleY); //设置放大 //输入参数: //dScale 放大缩小比例 void SetScale(double dScale); //得到矩形 QRect GetRect(); //翻转头点变尾点,尾点变头点 void Reverse(); //得到闭合曲线的中心点(将所有点的X/Y坐标加起来取平局值) void GetMiddlePoint(QPointData &PDMiddle); //计算CODE_SPILINE的控制点 void CalcuateSPlineCurve(); //将曲线控制点链分段 void Segmentation(QList &listPointDataList); //设置曲线链中的点类型和放码ID //输入参数: // listPointGrade 放码点 // listTurnPointLayer 转折点 // listCurvePointLayer 曲线点 void SetPointTypeGradeID(CTextDataList &listPointGrade, QPointDataList &listTurnPointLayer, QPointDataList &listCurvePointLayer); //计算曲线实际点链 //[输入] iDPMM 放大比例 void CalcuateActualPoint(int iDPMM); //20200219 XQ 获取实际点链 //输出参数: // listCurve 实际点链 //说明: // 调用该函数之前必须调用计算实际点链函数 void GetCurve(QList &listCurve); //20201021 XQ 移除相邻的相同点,只对控制点操作 void RemoveSamePoint(); private: //计算实际点链 //[输入] iDPMM 放大比例 //[输入] listCtrlPoint 控制点 只有一种类型(头尾点除外,中间点只有一种类型转折点,曲线点,圆弧点) //[输出] listPoint实际点链 void CalcuateCurveInfor(int iDPMM, QPointDataList &listCtrlPoint, QList &listPoint); //计算三次样条 // [输入] listPoint 三次样条的四个控制点, // [输出] listCtrl 逼近的控制点 //返回值: // =ture 计算成功;=false 计算失败 //说明: // 不管是否计算成功;两头点为转折点,中间点为控制点 bool CalculateSPLine(QPointDataList &listPoint, QPointDataList &listCtrl); //设置点类型 //输入参数: // listPoint 需要处理的点链 // bTurn =true所有点处理为转折点;=false两头点为转折点,中间点为曲线点 void SetPointType(QPointDataList &listPoint, bool bTurn); //计算方程 t*t*t*ptPoint0+2*t*t*(1-t)ptPoint1+3*t*(1-t)*(1-t)ptPoint2+(1-t)*(1-t)*(1-t)ptPoint3 //[输入] ptPoint0,ptPoint1,ptPoint2,ptPoint3方程的四个已知点 //[输入] dPro 比值t的值(该值范围在0到1) //返回值: // 方程的结果点 QPointData CalcuateEquation(QPointData ptPoint0, QPointData ptPoint1, QPointData ptPoint2, QPointData ptPoint3, double dPro); //QPointData转CPDSNurbsPoint void PointDataToNurbsPoint(QPointDataList &listPointData, CPDSNurbsPointList &listNurbsPoint); //CPDSNurbsPoint转QPoint void NurbsPointToPoint(CPDSNurbsPointList &listNurbsPoint, int iDPMM, QList &listPoint); //QPoint转QPointData void PointToPointData(QList &listPoint, int iDPMM, QPointDataList &listPointData); //根据listDataPoint中点类型将listDataPoint,listRealPoint分段 void NurbsSegmention(CPDSNurbsPointList &listDataPoint, CPDSNurbsPointList &listRealPoint, int iDPMM, CArray < QList , QList > &arCtrlPoint, CArray < QList , QList > &arRealPoint, bool &bClose); }; ////////////////////////////////////////////////////////////////////////// //剪口信息 class CNotchInfor : public QObject { public: QPointData m_ptNotch; int m_iNotchLayer; //剪口层 =4 I型; = 80 T型;= 81 Box型 =82 V型; =83 U型; double m_dNotchWidth; bool m_bNotchWidth; //=true 按读入数据处理;=false 按系统默认数据处理 double m_dNotchDepth; bool m_bNotchDepth; //=true 按读入数据处理;=false 按系统默认数据处理 double m_dNotchAngle; bool m_bAngle; //=true 表示角度可以用,=false 表示角度不可用 public: CNotchInfor(void); CNotchInfor(CNotchInfor& a); ~CNotchInfor(void); void operator=(CNotchInfor& a); void Initial(void); //位置偏移,旋转和放缩 //输入参数: //dOffsetX/dOffsetY 偏移量 //dSin/dCos 旋转角度, 旋转点为QPoint(dOffsetX, dOffsetY), 水平为零度 //dScaleX/dScaleY 放大缩小 20220408 XQ //说明: // 偏移->旋转->放大缩小 void SetRotateOffset(double dOffsetX, double dOffsetY, double dSin, double dCos, double dScaleX, double dScaleY); //设置放大 //输入参数: //dScale 放大缩小比例 void SetScale(double dScale); //设置点放码ID void SetGradeID(CTextDataList &listGradePoint); }; class CNotchInforList : public QList { public: CNotchInforList& operator=(CNotchInforList& rhs); // 赋值 //获取指定索引值上的项 //输入参数: // iIndex 索引值,从0开始,不可越界 //返回值: CNotchInfor& operator[](int iIndex); //位置偏移和放缩 //输入参数: //dOffsetX/dOffsetY 偏移量 //dSin/dCos 旋转角度, 旋转点为QPoint(dOffsetX, dOffsetY), 水平为零度 //dScaleX/dScaleY 放大缩小 20220408 XQ //说明: // 偏移->旋转->放大缩小 void SetRotateOffset(double dOffsetX, double dOffsetY, double dSin, double dCos, double dScaleX, double dScaleY); //设置放大 //输入参数: //dScale 放大缩小比例 void SetScale(double dScale); //设置点放码ID void SetGradeID(CTextDataList &listGradePoint); }; ////////////////////////////////////////////////////////////////////////// //线及其线上附带信息(例如:剪口) class CCurveNotchInfor : public QObject { public: CCurveInfor m_CurveInfor; CNotchInforList m_listNotch; public: CCurveNotchInfor(void); CCurveNotchInfor(CCurveNotchInfor& a); ~CCurveNotchInfor(void); void operator=(CCurveNotchInfor& a); void Initial(void); //位置偏移和放缩 //输入参数: //dOffsetX/dOffsetY 偏移量 //dSin/dCos 旋转角度, 旋转点为QPoint(dOffsetX, dOffsetY), 水平为零度 //dScaleX/dScaleY 放大缩小 20220408 XQ //说明: // 偏移->旋转->放大缩小 void SetRotateOffset(double dOffsetX, double dOffsetY, double dSin, double dCos, double dScaleX, double dScaleY); //设置放大 //输入参数: //dScale 放大缩小比例 void SetScale(double dScale); //设置曲线链中的点类型和放码ID //输入参数: // listPointGrade 放码点 // listTurnPointLayer 转折点 // listCurvePointLayer 曲线点 void SetPointTypeGradeID(CTextDataList &listPointGrade, QPointDataList &listTurnPointLayer, QPointDataList &listCurvePointLayer); //得到矩形 QRect GetRect(); //翻转头点变尾点,尾点变头点 void Reverse(); //20200219 XQ 获取实际点链 //输出参数: // listCurve 实际点链 //说明: // 调用该函数之前必须调用计算实际点链函数 void GetCurve(QList &listCurve); }; class CCurveNotchInforList: public QList { public: CCurveNotchInforList& operator=(CCurveNotchInforList& rhs); // 赋值 //获取指定索引值上的项 //输入参数: // iIndex 索引值,从0开始,不可越界 //返回值: CCurveNotchInfor& operator[](int iIndex); //位置偏移和放缩 //输入参数: //dOffsetX/dOffsetY 偏移量 //dSin/dCos 旋转角度, 旋转点为QPoint(dOffsetX, dOffsetY), 水平为零度 //dScaleX/dScaleY 放大缩小 20220408 XQ //说明: // 偏移->旋转->放大缩小 void SetRotateOffset(double dOffsetX, double dOffsetY, double dSin, double dCos, double dScaleX, double dScaleY); //设置放大 //输入参数: //dScale 放大缩小比例 void SetScale(double dScale); //设置曲线链中的点类型和放码ID //输入参数: // listPointGrade 放码点 // listTurnPointLayer 转折点 // listCurvePointLayer 曲线点 void SetPointTypeGradeID(CTextDataList &listPointGrade, QPointDataList &listTurnPointLayer, QPointDataList &listCurvePointLayer); //得到矩形 QRect GetRect(); //得到所有点 void GetAllPointData(QPointDataList &listPointData); //20200220 XQ 得到所有剪口点 void GetAllNotchPoint(CNotchInforList &listNotchInfor); //得到实际点链 //[输入] bClose =true 闭合 //[输出] listCurve 实际点链 //说明: // 按照链表的顺序连接所有链, 除去相同点 void GetCurve(QList &listCurve, bool bClose); //计算实际点链 //[输入] iDPMM 放大比例 void CalcuateActualPoint(int iDPMM); //20201021 XQ 移除相邻的相同点,头尾点不处理 void RemoveSamePoint(); }; ////////////////////////////////////////////////////////////////////////// //文字 class CTextData : public CGroupCode { public: QPointData m_PointData; QString m_strText; bool m_bReadHeight; double m_dHeight; double m_dAngle; public: CTextData(void); CTextData(CTextData& a); ~CTextData(void); bool operator==(CTextData& a); void operator=(CTextData& a); void Initial(void); //文字位置偏移 //输入参数: //dOffsetX/dOffsetY 偏移量 //dSin/dCos 旋转角度, 旋转点为QPoint(dOffsetX, dOffsetY), 水平为零度 //dScaleX/dScaleY 放大缩小 20220408 XQ //说明: // 偏移->旋转->放大缩小 void SetRotateOffset(double dOffsetX, double dOffsetY, double dSin, double dCos, double dScaleX, double dScaleY); //设置放大 //输入参数: //dScale 放大缩小比例 void SetScale(double dScale); //得到矩形 QRect GetRect(); //设置点放码ID void SetGradeID(CTextDataList &listGradePoint); }; class CTextDataList : public QList { public: CTextDataList& operator=(CTextDataList& rhs); // 赋值 //获取指定索引值上的项 //输入参数: // iIndex 索引值,从0开始,不可越界 //返回值: CTextData& operator[](int iIndex); //文字位置偏移 //输入参数: //dOffsetX/dOffsetY 偏移量 //dSin/dCos 旋转角度, 旋转点为QPoint(dOffsetX, dOffsetY), 水平为零度 //dScaleX/dScaleY 放大缩小 20220408 XQ //说明: // 偏移->旋转->放大缩小 void SetRotateOffset(double dOffsetX, double dOffsetY, double dSin, double dCos, double dScaleX, double dScaleY); //设置放大 //输入参数: //dScale 放大缩小比例 void SetScale(double dScale); //得到矩形 QRect GetRect(); //设置点放码ID void SetGradeID(CTextDataList &listGradePoint); //查找给定坐标的字符串 //输入参数: // PointData坐标 //输出参数: // TextData 找到文本 ;返回值为true有效 //返回值: // =true 找到;=false没有找到 bool FindSamePointText(QPointData PointData, CTextData &TextData); }; ////////////////////////////////////////////////////////////////////////// //钻孔信息 class CDrillInfor : public QObject { public: QPointData m_ptDrill; bool m_bRadius; //=true 按读入数据处理钻孔;=false 按系统默认数据处理钻孔 double m_dRadius; int m_iCommand; // =0 GP_DCM_DRILL = 1 GP_DCM_DRAW public: CDrillInfor(void); CDrillInfor(CDrillInfor& a); ~CDrillInfor(void); void operator=(CDrillInfor& a); void Initial(void); //位置偏移和放缩 //输入参数: //dOffsetX/dOffsetY 偏移量 //dSin/dCos 旋转角度, 旋转点为QPoint(dOffsetX, dOffsetY), 水平为零度 //dScaleX/dScaleY 放大缩小 20220408 XQ //说明: // 偏移->旋转->放大缩小 void SetRotateOffset(double dOffsetX, double dOffsetY, double dSin, double dCos, double dScaleX, double dScaleY); //设置放大 //输入参数: //dScale 放大缩小比例 void SetScale(double dScale); //设置点放码ID void SetGradeID(CTextDataList &listGradePoint); }; class CDrillInforList : public QList { public: CDrillInforList& operator=(CDrillInforList& rhs); // 赋值 //获取指定索引值上的项 //输入参数: // iIndex 索引值,从0开始,不可越界 //返回值: CDrillInfor& operator[](int iIndex); //位置偏移和放缩 //输入参数: //dOffsetX/dOffsetY 偏移量 //dSin/dCos 旋转角度, 旋转点为QPoint(dOffsetX, dOffsetY), 水平为零度 //dScaleX/dScaleY 放大缩小 20220408 XQ //说明: // 偏移->旋转->放大缩小 void SetRotateOffset(double dOffsetX, double dOffsetY, double dSin, double dCos, double dScaleX, double dScaleY); //设置放大 //输入参数: //dScale 放大缩小比例 void SetScale(double dScale); //设置点放码ID void SetGradeID(CTextDataList &listGradePoint); }; ////////////////////////////////////////////////////////////////////////// //INSERT标识符信息 class CInsertData : public CGroupCode { public: QString m_strBlockName; QPointData m_InsertPoint; double m_dScaleX; //20191012 XQ double m_dScaleY; double m_dRotateAngle; //旋转角度 public: CInsertData(void); CInsertData(CInsertData& a); ~CInsertData(void); bool operator==(CInsertData& a); void operator=(CInsertData& a); void Initial(void); }; class CInsertDataList : public QList { public: CInsertDataList& operator=(CInsertDataList& rhs); // 赋值 //获取指定索引值上的项 //输入参数: // iIndex 索引值,从0开始,不可越界 //返回值: CInsertData& operator[](int iIndex); //根据给定的块名找出对应的块 //[输入] strBlockName 块名 //[输出] InsertData 插入位置 //返回值: // 找到插入位置, 没有找到返回NULL POSITION FindBlockName(QString strBlockName, CInsertData &InsertData); }; ////////////////////////////////////////////////////////////////////////// class CCurveNotchInforList; //寻找纸样边线所用到的结构 class CCloseCurveInfor : public QObject { public: CCurveNotchInforList m_listCurveInfor; double m_dAreaRect; //所在矩形面积 public: CCloseCurveInfor(void); CCloseCurveInfor(CCloseCurveInfor& a); ~CCloseCurveInfor(void); void operator=(CCloseCurveInfor& a); void Initial(void); void GetAreaRect(); void GetHeadTail(QPointData &PointDataH, QPointData &PointDataT); //得到点链 //说明: // 将链表中的m_listCurveInfor放到一个链中 void GetPointList(QPointDataList &listPointData); //得到闭合曲线的中心点(将所有点的X/Y坐标加起来取平局值) void GetMiddlePoint(QPointData &PDMiddle); }; class CCloseCurveInforList: public QList { public: CCloseCurveInforList& operator=(CCloseCurveInforList& rhs); // 赋值 //获取指定索引值上的项 //输入参数: // iIndex 索引值,从0开始,不可越界 //返回值: CCloseCurveInfor& operator[](int iIndex); //找列表中面积最大的 POSITION FindMaxAreaRect(); }; ///////////////////////////////////////////////////////////////////////// //纸样块, 该类主要用于读入数据之后处理纸样数据时用到的 //说明: //该类没有SetRotateOffsetScale的原因, 在类中不需要对数据进行偏移->旋转->放大缩小, 偏移和旋转 放在m_ptOffset,m_dAngle中 class CPatternBlock : public QObject { public: QString m_strPatternName; //纸样名 QString m_strSizeName; //号型名 QString m_strComment; //注释COMMENT/ANNOTATION CStringArray m_arrMaterial; //布料名 CUIntArray m_arrQuantity; //总片布料份数 Quantity: CUIntArray m_arrLQuantity; //左片布料份数 Quantity: //m_arrQuantity, m_arrLQuantity大小保持一致 bool m_bFlip; //翻转信息 =true 允许翻转 double m_dRotation; //最大倾斜角 Rotation<0...360> bool m_bFold; //折叠 Fold: =true 允许折叠 double m_dTilt; //最大倾斜角度 Tilt:<+/-0..90> CCurveNotchInforList m_listBorder; //边线 CCurveNotchInforList m_listSeam; //缝份线 CCurveNotchInforList m_listAssistantCurve; //辅助线 CTextDataList m_listText; //字符串 //读AutoCAD文件 //CNotchInforList m_listNotch; //剪口 CDrillInforList m_listDrill; //钻孔 CCurveNotchInfor m_GrainLine; //布纹线 CCurveNotchInfor m_SymmetryLine; //对称轴 //下面变量只用于读ASTM/AAMA CCurveNotchInfor m_GradeLine; //放码线 //纸样的偏移和旋转角度,旋转点为QPoint(0,0), 水平为零度 QPointData m_ptOffset; double m_dAngle; public: CPatternBlock(void); CPatternBlock(CPatternBlock& a); ~CPatternBlock(void); void operator=(CPatternBlock& a); void Initial(void); //位置偏移和放缩 //输入参数: //dOffsetX/dOffsetY 偏移量 //dSin/dCos 旋转角度, 旋转点为QPoint(dOffsetX, dOffsetY), 水平为零度 //dScaleX/dScaleY 放大缩小 20220408 XQ //说明: // 偏移->旋转->放大缩小 void SetRotateOffset(double dOffsetX, double dOffsetY, double dSin, double dCos, double dScaleX, double dScaleY); //放缩 //输入参数: //dScale 放大缩小比例 void SetScale( double dScale); QRect GetRect(); //计算实际点链 //[输入] iDPMM 放大比例 void CalcuateActualPoint(int iDPMM); private: //拷贝 void CopyPatternInfor(CPatternBlock& a); }; class CPatternBlockList : public QList { public: CPatternBlockList& operator=(CPatternBlockList& rhs); // 赋值 //获取指定索引值上的项 //输入参数: // iIndex 索引值,从0开始,不可越界 //返回值: CPatternBlock& operator[](int iIndex); //位置偏移和放缩 //输入参数: //dOffsetX/dOffsetY 偏移量 //dSin/dCos 旋转角度, 旋转点为QPoint(dOffsetX, dOffsetY), 水平为零度 //dScaleX/dScaleY 放大缩小 20220408 XQ //说明: // 偏移->旋转->放大缩小 void SetRotateOffset(double dOffsetX, double dOffsetY, double dSin, double dCos, double dScaleX, double dScaleY); //放缩 //输入参数: //dScale 放大缩小比例 void SetScale(double dScale); QRect GetRect(); //下列函数用于V10系统中创建纸样所用 //得到列表中所有纸样的号型名 //输出参数: // listAllSizeName 号型名,大小与this列表一样, 顺序也一致 void GetAllSizeName(QList &listAllSizeName); //找给定名称的号型的在列表中的位置 //输入参数: // strSizeName 号型名 //返回值: // 号型名的在列表中的位置, 找到的第一个; NULL表示没有 POSITION FindSizeName(QString strSizeName); //计算实际点链 //[输入] iDPMM 放大比例 void CalcuateActualPoint(int iDPMM); }; //读一行字符串 //[输入] bReadWindowText =true 回车是用0x0A表示的;=false 回车则是0x0D0A //[输入] iMaxCount 一行中最大的长度 //[输入] fFile 文件 //返回值: // 读入的文字 QString GetALineOfFile(bool bReadWindowText, int iMaxCount, FILE *fFile); //读两行字符串 //[输入] bReadWindowText =true 回车是用0x0A表示的;=false 回车则是0x0D0A //[输入] fFile 文件 //[输出] strString1/strString2 连续两行数据 void ReadTwoLineString(bool bReadWindowText, FILE *fFile, QString &strString1, QString &strString2); //判断给定的字符串是否为一个数据块的开始标识符(strValue1是否为0,strValue2是否为 POLYLINE, LINE...) //[输入] strValue1 需要判断的字符串 //[输入] strValue2 需要判断的字符串 //返回值: // =true 是;false 不是 //说明: //strValue1为空的话不判断不为空 判断是否为0, 为0继续strValue2的判断 bool JudgeCode(QString strValue1, QString strValue2); #endif