#pragma once #include "Stdafx.h" #include "Stdafx_M.h" //#include //#include //#include #include "OCC/OCCLib/Geometry.h" #include "OCC/OCCLib/Hull.h" #include "OCC/OCCLib/SplitAllInsectionCurves.h" //#include ".\cxml\xml.h" //2016srq //#include "ISession_Text.h" // DELETE BY XUEFENG 20180731 // FOR CODES COMBINE /* #include "Node/AStoctNodePtrDef.h" #include "Scene/AScenePtrDef.h" #include "Style/AStylePtrDef.h" */ // END DELETE //end // ADDED BY XUEFENG 20180731 // FOR CODES COMBINE #include "Prs3d_Presentation.hxx" #include //#include "Handle_AIS_Shape.hxx" // XUEFENG DELETE 202009 #include "AIS_Shape.hxx" // XUEFENG ADDED 202009 #include // XUEFENG ADDED 202009 #include "Graphic3d_NameOfMaterial.hxx" #include "Quantity_Color.hxx" // END ADDED #include "OCC/OCCLib/Calculation.h" // Lvxj #include "dl_dxf.h" #include "dl_creationadapter.h" #include "test_creationclass.h" #include // Lvxj // //using namespace std; //using namespace JWXml; class SpaceCurve { public: SpaceCurve(){}; ~SpaceCurve(){}; public: vector pSet; //节点坐标 vector dSet_in; //切入方向矢量 vector dSet_out; //切出方向矢量 int count_first; int count_second;//双向投影 int flag;// 1,多段线 vector Type; //点类型,0-非分段点,>0-分段点 /// 0-无限制(c2) //20170501 by czb /// 1-角度(c1) //20170501 by czb /// 2-折点(c0) //20170501 by czb /// 3-多段线(c0) vector flag_in; //切入标志 20170501 by czb 新增,对应KnotDir vector flag_out; //切出标志,对应KnotDirII }; // Lvxj //高度表单元 class HeightTableCell { public: int rowIndex; int colIndex; char stationName[32]; char blName[32]; vector data; }; //半宽表单元 class HalfBreadthTableCell { public: int rowIndex; int colIndex; char stationName[32]; char wlName[32]; vector data; }; // Lvxj class OCCStructDataMD { public: OCCStructDataMD(void); ~OCCStructDataMD(void); public: void clearData(); //***初始化数据 void InitList(); //***初始化船舶主尺度信息:loa船长、lpp垂线间长,b船宽,d船深,t 设计吃水,f0x初始肋位,nfrm肋骨个数,frm肋骨数据,nsta站个数,sta站,nwl水线个数,wl水线,nbl纵剖线个数,bl纵剖线 void ResetPrincipal(double loa,double lpp, double b, double d,double t, double f0x,int iFrame, int nfrm, Frame frm[], int nsta, Station sta[],int nwl, WaterlinePos wl[],int nbl,ButtocklinePos bl[]);//主尺度 //***Undo Redo flag:0:UNDO,1:REDO void UnRedo(int flag, int cmdID); void UnRedoPreAction(int cmdID,int id); void UnRedoAfterAction(int cmdID,int id); //***显示横剖面位置 void ShowSectionPos(double x,bool bdrawprofle);//型线 //***删除垃圾图元 void DelObj(int cmdID,int nid); //删除垃圾点图元 void DelPoint( int ID); //删除垃圾线图元 void DelCurve(int ID); //删除垃圾面图元 void DelSurface(int ID); //删除垃圾体图元 void DelSolid(int ID); //删除垃圾主甲板面 void DelMainDeckSurf(int ID); //删除垃圾外板面 void DelShellSurf(int ID); //删除垃圾主船体 void DelHull(int ID); //删除垃圾平台面 void DelDeckSurf(int ID); //删除垃圾上建外围面 void DelBoundSurf(int ID); //删除垃圾分舱面 void DelSubdivSurf(int ID); //删除垃圾开敞客货区 void DelOpenCargoRegion(int ID); //删除垃圾舱室 void DelSpace(int ID); //删除垃圾附体 void DelAppendage(int ID); //删除进水力点 void DelHydroInletPoint(int ID); void DelHydroLimitAng(int ID); //修改时,根据ID重新验证生成图元, BOOL ModifyObj(int cmdID,int id); //增加舱室 void InsertSpace( Space& space);// 舱室 //简单点验证 BOOL CheckSimplePoint(Point3D *pnt); //相交点验证 BOOL CheckCrossPoint(Point3D *pnt); //线上点验证 BOOL CheckOnLinePoint(Point3D *pnt); //线面交点验证 BOOL CheckLineFacePoint(Point3D *pnt); ////线引用点C/N=? BOOL CheckLineRefPoint(Point3D *pnt); //20161117 by czb,镜像点 TopoDS_Shape CheckMirrorPoint(Point3D& pnt); //增加topo点 BOOL AddTopoPoint(int cmdID,Point3D pnt,bool bchecked=false); //创建折线 TopoDS_Wire CreatePolyline(vector& pSet); //增加静水力点 BOOL AddTopoInletPoint(int cmdID, HydroInletPoint& pnt,bool bchecked=false); //***极限静倾角 BOOL AddLimitAng(int cmdID, HydroLimitAng& limit); //***限界线 BOOL AddMarginLine(int cmdID, MarginLine& margin); //***浸水开口 BOOL AddImmersionOpen(int cmdID, ImmersionOpen& Iopen1); //***线验证 BOOL CheckCurve(int cmdID,Curve& crv); //20161117 by czb,镜像线 TopoDS_Shape CheckMirrorCurve(Curve& crv); //20170901 by czb,复制线 TopoDS_Shape CheckCopyCurve(Curve& crv); //基本样条曲线验证 TopoDS_Shape CheckSpaceCurve( Curve& crv,int linetype=0);//linetype =0 =1 临时显示 =2样条曲线双投影曲线中的第一条=3样条曲线双投影曲线中的第二条 TopoDS_Shape CheckSpaceCurve1( Curve& crv,int linetype); SpaceCurve GetSpaceCurve( Curve& crv, int linetype); //TopoDS_Wire CreateWire( SpaceCurve& curve, int startId, int count); TopoDS_Edge CreateEdge( SpaceCurve& curve, int startId, int count); TopoDS_Edge CreateEdge2( SpaceCurve& curve, int startId, int count); //折线 TopoDS_Shape CheckPolygon( Curve& crv); //椭圆弧 TopoDS_Shape CheckEllipse( Curve& crv); //三点椭圆弧 TopoDS_Shape CheckEllipse1( Curve& crv); //抛物线 TopoDS_Shape CheckParabola( Curve& crv); //三点抛物线 TopoDS_Shape CheckParabola1(gp_Pnt p1, gp_Pnt p2, gp_Pnt p3, bool full); //双投影曲线 TopoDS_Shape CheckDProjectCurve( Curve& crv); //拼接线 TopoDS_Shape CheckJoinCurve( Curve& crv); //剪切线 TopoDS_Shape CheckTrimCurve( Curve& crv); //面相交线 TopoDS_Shape CheckInterFaceCurve( Curve& crv); // XUEFENG ADDED 20211008 TopoDS_Shape CheckBoundCurve(Curve& crv); //基本样条曲线分段数据获取 vector GetHarryList( Curve& crv, vector &vectorList, vector &boolList,int linetype=0);//linetype =0 样条曲线双投影曲线中的第一条 =1 临时显示 =2样条曲线双投影曲线中的第一条=3样条曲线双投影曲线中的第二条 //两直线点之间数据插值 void AddPointforStraight( vector &pntlist,int & i,gp_Pnt startp,gp_Pnt endp); //***面验证 BOOL CheckSurface(int cmdID, Surface& srf); //网格面,用居工算法 TopoDS_Shape CheckGeneralSurface( Surface& srf); //放样面验证 TopoDS_Shape CheckLoftSurface( Surface& srf); //扫掠面验证 TopoDS_Shape CheckSweptSurface( Surface& srf); TopoDS_Shape CreateSweptSurface(TopoDS_Shape gEdge, TopoDS_Shape bEdge); //旋转面 TopoDS_Shape CheckRotationSurface( Surface& srf); //4管道, TopoDS_Shape CheckPipedSurface( Surface& srf); //5球面, TopoDS_Shape CheckSphereSurface( Surface& srf); //镜像面 TopoDS_Shape CheckMirrorSurface( Surface& srf); //复制面 TopoDS_Shape CheckCopySurface( Surface& srf); //缝合面 TopoDS_Shape CheckJoinSurface( Surface& srf); //剪切面 TopoDS_Shape CheckTrimSurface( Surface& srf); TopoDS_Shape CheckTrimSurfaceTranslateOcc( Surface& srf); TopoDS_Shape CheckTrimSurfaceTranslateInsec( Surface& srf); TopoDS_Shape CheckTrimSurfaceTranslate( Surface& srf); TopoDS_Shape CheckTrimSurfaceByTranslate(TopoDS_Shape TopoSrf,TopoDS_Shape TopoTemp,gp_Pnt ptcut,bool & bfindsec); //拆分面 TopoDS_Shape CheckSpliteSurface( Surface& srf); //双投影临时面 TopoDS_Shape CheckTempSurface( Surface& srf); //***体验证 BOOL CheckSolid(int cmdID, Solid& sld); //组合体 TopoDS_Shape CheckSolidBool(Solid &sld); //20170801 新增 by czb //围拢体 TopoDS_Shape CheckCell( Solid& sld); TopoDS_Shape CloseSolid( Solid& sld); vector ClearEdges(map& edges); //TopoDS_Shape CloseSolid1(Solid sld); //扫掠体 TopoDS_Shape CheckSweptCell( Solid& sld); //旋转体 TopoDS_Shape CheckRotationCell( Solid& sld); //圆球 TopoDS_Shape CheckSphereCell( Solid& sld); //圆柱 TopoDS_Shape CheckCylinderCell( Solid& sld); //圆罐 TopoDS_Shape CheckRTankCell( Solid& sld); //长方体 TopoDS_Shape CheckCubeCell( Solid& sld); //剪切体 TopoDS_Shape CheckTrimSolid( Solid& sld); //镜像体 TopoDS_Shape CheckMirrorSolid( Solid& sld); //复制体 TopoDS_Shape CheckCopySolid( Solid& sld); //***船壳模型 // 主甲板面 BOOL CheckMainDeckSurf(int cmdID, MainDeckSurf& srf); // 外板面 BOOL CheckShellSurf(int cmdID, ShellSurf& srf); // 主船体 BOOL CheckHull(int cmdID, Hull& srf); // 平台面 BOOL CheckDeckSurf(int cmdID, DeckSurf& srf); // 上建外围面 BOOL CheckBoundSurf(int cmdID, BoundSurf& srf); // 分舱面 BOOL CheckSubdivSurf(int cmdID, SubdivSurf& srf); //获取槽型舱壁的边线,dir1:=0横向 =1纵向 dir2 =0水平 =1 垂向 TopoDS_Wire GetCorrugatedEdgeByRegion(double v,int dir1,int dir2,double s,double a,double d,double f,double x1,double x2,double y1,double y2,double z1,double z2); // 开敞客货区 BOOL CheckOpenCargoRegion(int cmdID, OpenCargoRegion& srf); // 舱室 BOOL CheckSpace(int cmdID, Space& sld); // 附体 BOOL CheckAppendage(int cmdID, Appendage& sld); //体的bool运算 TopoDS_Shape TopoSolidBrepAlgo(int type,TopoDS_Shape solid1,TopoDS_Shape solid2); TopoDS_Shape TopoSolidBool(int type,TopoDS_Shape solid1,TopoDS_Shape solid2); TopoDS_Shape SplitShell(TopoDS_Shape& solid1,TopoDS_Shape& solid2, vector& faceIn, vector& faceOut, vector& faceOn); //肋位 BOOL CheckFrameRuler(); BOOL CheckFrameRulerPriv(); //临时对象显隐 void ShowTempCurve(bool show, Curve& crv, int npnt, Point3D pnt[]); //***查询 //查询两点距离 double Get2PointDistance(int id1,int id2); //查询曲面面积 double GetS(int id); //查询体的体积 double GetV(int id); //查询船体总吨位(有主甲板和船壳围城的封闭船体) double GetTonnageV1(); //判断点集合是不是顺时针 bool IsClockwise(vector& pointSet); //判断线是不是顺时针 bool IsClockwise(gp_Pnt delPT,TopoDS_Shape face); //写XML //void BuilderXmlData(CXml &xml, CSplitAllInsectionCurves& m_tool ); //写网格面数据到XML BOOL WriteXMLData( CSplitAllInsectionCurves& m_tool); //获取系统路径 std::string GetSystemPath(); //获取图元显示信息 OccAisVar ReturnOccDisplayVars(int id); //获取图元的形心信息 gp_Pnt ReturnOccPropVars(TopoDS_Shape toposhape,int id); //int转为Quantity_Color或RGB //2016srq // ADDED BY XUEFENG 20180731 // FOR CODES COMBINE Quantity_Color TransIntToRGB(int color); // END ADDED // DELETE BY XUEFENG 20180731 // FOR CODES COMBINE //AnyCore::ColorValue TransIntToRGB(int color); // END DELETE //反色 // ADDED BY XUEFENG 20180731 // FOR CODES COMBINE Quantity_Color ReverseRGB(Quantity_Color color); // END ADDED // DELETE BY XUEFENG 20180731 // FOR CODES COMBINE //AnyCore::ColorValue ReverseRGB(AnyCore::ColorValue color); //20171001 added by czb // END DELETE //角度弧度转换 double ConvertDegreesToRadians(double degrees); //截取抛物线上的一段 TopoDS_Edge ParabSegMent(gp_Parab Parab,gp_Dir dir,gp_Pnt p1,gp_Pnt p2); //拓扑对象的显示 // DELETE BY XUEFENG 20190402 //bool OccDisplayAis(int ID,TopoDS_Shape tppoint); //20170601 by czb,返回true表示可见,false表示不可见 // END DELETE // ADDED BY XUEFENG 20190402 bool OccDisplayAis(int id,TopoDS_Shape toposhape,int fitWin=1); // END ADDED //求交线,并将交线转为B样条曲线 Handle(Geom_BSplineCurve) GetIntersectionOf2Toposhapes(TopoDS_Shape shape1,TopoDS_Shape shape2,bool &bsucess); //拓扑存为Brep。path:保存路径,从上层界面获取;ids[]topo_compound里面依次存的拓扑对象对应的id,要返回给上层界面 bool SaveTopoToStep(char* path,int ids[]); //拓扑存为Brep。path:保存路径,从上层界面获取;20161227 新增 by czb bool SaveTopoToStep2(char* path); //获取拓扑对象保存为brep格式时的OCIDX;ids[]topo_compound里面依次存的拓扑对象对应的id,要返回给上层界面,20161214 新增 by czb void GetOCIDXOfTopo(int ids[]); //拓扑存为Brep。path:保存路径,从上层界面获取 bool SaveTopoToBrep(char* path); //从step读取topo对象。path:文件路径,从上层界面获取;ids[]topo_compound里面依次存的拓扑对象对应的id,从上层界面获取 bool LoadTopoFromStep(char* path, QVector ids); //拓扑存为Iges。path:保存路径,从上层界面获取;ids[]topo_compound里面依次存的拓扑对象对应的id,要返回给上层界面 目的:JAVA用,3dmax->三方工具->flash bool SaveTopoToIges(char* path,int ids[]); //从Iges读取topo对象。path:文件路径,从上层界面获取;ids[]topo_compound里面依次存的拓扑对象对应的id,从上层界面获取 bool LoadTopoFromIges(char* path,int ids[]); //由交线得到wire的ege序列 void GetInsectWirePts(TopoDS_Shape splitResult,list&edgeList ); //将交线wire的无序edge序列转为有序 void GetInsectWirePts(vector& edgeSet,list&edgeList); //将交线的有序序列转为拓扑线 TopoDS_Edge SetInsectWireToEdge(list&edgeList); //将交线的有序序列转为拓扑线上的组成B样条的点集合 vector SetInsectWireToEdgePnts(list&edgeList); //由两点截取曲线上的一段 bool TrimEdgeBy2Points(Handle(Geom_Curve) curve, gp_Pnt& pt1, gp_Pnt& pt2,Handle(Geom_Curve)& newCurve ); //所有类型CURVE转为样条曲线 扫掠面不支持抛物线和圆弧 Handle(Geom_BSplineCurve) ConvertToBSplineCurve( TopoDS_Edge edge ); //20170601 by czb //所有类型CURVE转为样条曲线 扫掠面不支持抛物线和圆弧 TopoDS_Edge ConvertToBSplineTopo( TopoDS_Edge edge ); //将曲面转为样条曲面 TopoDS_Shape ConvertToBSplineSurfTopo( TopoDS_Face edge ); BOOL GetTrimSurfaceAllOf2Toposhapes(TopoDS_Shape shape1,TopoDS_Shape shape2,TopoDS_Shape &leftSurface,TopoDS_Shape &rightSurface); //根据交线区分面的集合 TopoDS_Shape GetCutResult(map& mapFace,TopoDS_Shape& InterSecLine); //计算联通的面的集合 void GetFaceSet( vector &resultSet, map& mapFaceSign, map>& mapConnectFace, vector& tempFaceSet); // 判断重边 bool CheckTwoEdgeOverlapByLinePointProject(TopoDS_Edge& tedgeA,TopoDS_Edge& tedgeB); vector GetIntersectionLines(TopoDS_Shape& line, TopoDS_Face& face); //void GetEdgeStartEndPoint( TopoDS_Edge& edge, gp_Pnt& sp, gp_Pnt& ep); //void GetWireSingleEdges(map& mapEdge,vector& edgeIndex); //void GetWireSingleEdges(map& mapEdge,vector>& edgeIndex); //*舱室生成 yc 20140818 vector CreatePointSet(vector p2dSet, double d); TopoDS_Shell CreateSplitShell(vector pSet1, vector pSet2); vector ConvertPoint2dSet(double* values); TopoDS_Shape MakeCabin( Space& space); TopoDS_Shape CreateHull(); //*/ TopoDS_Edge RebuildEdge(TopoDS_Edge edge, gp_Pnt startP, gp_Pnt endP, bool isReverse); //*舱室生成 布尔操作yc 20140929 TopoDS_Shape MakeCabin1( Space& space); vector ConvertPoint2dSet(double* values, double width, double height); TopoDS_Face CutEndFace(TopoDS_Face face, TopoDS_Shape shell, vector pSet,bool isLeft); bool IsReversed(TopoDS_Solid solid); ///* 特殊单元体 TopoDS_Shape MakeRegularCabin ( Space& space); //计算浸水开口 double GetImmersionOpenPos(double X, double Y, double oppositZ); //写计算接口参数xml void SetCalParaXml(string nodeName, vector step, double max = 0, double min = 0, double dai = 0); void SetCalParaXml(string nodeName, vector step, vector c, double max = 0, double min = 0, double dai = 0); void SetCalParaXml( string nodeName, double w = 0, double l = 0, double t = 0 ); void RefreshShape(TopoDS_Shape& shape); //计算船壳静水力数据 void ShellHydrostaticCalculation(); //计算数据 //加载模型的静水力计算结果文件到临时文件夹中 void LoadCalculationXML(char* file); //保存模型的静水力计算结果文件 void SaveCalculationXML(char* file); //关闭静水力计算进程 void CloseCalculation(); //获取已计算舱室id vector GetCalculatedCompID(); //获取已计算船壳id vector GetCalculated(); //获取已计算点id vector GetCalculatedPointID(); //将船体表面(主甲板和外板面)模型写到brep中,保存在临时文件中 void WriteHull(); //将临时舱室静水力结果文件根据舱室id拆分成独立的结果文件 void SplitResultCompXML(); //将临时点静水力结果文件根据点d拆分成独立的结果文件 void SplitResultPointXML(); //将临时船壳静水力结果文件根据拆分成独立的结果文件 void SplitResultXML(); //将独立的舱室静水力结果文件合成完整的舱室静水力结果文件 void RebuildResultCompXML(); //将独立的船壳静水力结果文件合成完整船的壳静水力结果文件 void RebuildResultXML(); //将独立的舱室静水力结果文件合成完整的舱室静水力结果文件 void RebuildResultPointXML(); //保存静水力计算中船长,船宽和设计吃水 void SaveCalPara(double w, double l, double t); //极限静倾角计算接口 void SetDeckBilgePoint(int Cnt, Point3D addDeck[], Point3D addBilge[]); //进水点计算接口 void SetInletPoint(int delpnts,Point3D delpnt[],int addpnts,Point3D addpnt[], int updCnt, int oldIDs[], Point3D newIDs[]); // TopoDS_Edge RebuildEdge(TopoDS_Edge edge); //导出计算数据文件 bool ExportSpace(string fileName, string path,vector& ids); //bool ExportHull(char* fileName, char* path, int count, int ids[]); bool ExportHull(string fileName, string path, vector& ids); bool ExportSolidSTL(char* fileNameWithExtension, char* path, int count, int ids[]); //20190601 added by czb // 数据接口 Lvxj //导入型值表 void ImportOffsetData(bool bImportCtrlPnt,float xSubSectionLen); //导出型值表 void ExportOffsetData(double* shipSize,double* expParam, int* expType); //导出所有型值 void ExportAllOffsetData(double* shipSize,double* expParam, int* expType); //导出指定型值 void ExportSpecialOffsetData(double* shipSize,double* expParam, int* expType); //导入CAD void ImportCAD(char* fileName); //导入IGES long ImportIGES(char* fileName, int impType, float*transfromParams); //将IGES读入的内容缓存到xml中,方便界面层读取。 void WriteIGESXML(char* fileName); //导出IGES void ExportIGES(char* fileName,int expOption,int selectCnt,int* selectLst); //转换CAD型线 void TransfCADLine(int selectedCnt, int* selectLst, int lineType, float* fCADPar, int lens[], Point3D *pnts); //计算两条线交点 int GetIntersectPnt(int selectedCnt, int* selectLst,double *pPnt); //求平面剪裁面与船体表面的交线 void CalCurveBetweenPlaneAndSurface(TopoDS_Shape& tShape,gp_Pln& gPln,vector&intersectCurve); //求交线与平面剪裁面的交点 void CalIntersectPntCS(TopoDS_Edge&tEg,gp_Pln& gPln,vector&pntLst); //世界坐标系转换,得到dxf文件边界位置 gp_Pnt setWorldCoordinate(vector ::iterator myblock, Point2D32f mypoint); // 数据接口 Lvxj //合并文件 void CombineFile(string file, string fileAll); //判断是否为体 bool IsSolid(TopoDS_Shape solid); //计算体积 double GetV(TopoDS_Shape topo); //主船体来自面组合 TopoDS_Shape CreateHullFromSurf( Hull& srf); //主船体来自体组合 TopoDS_Shape CreateHullFromSolid( Hull& srf); //重命名 BOOL CheckRename(int cmdID,RenameObject& o); Handle(Geom_BSplineCurve) ConcatBSpline( vector& splList,bool bAngleContinue=true); // 生成首尾端带切矢的样条曲线 Handle(Geom_BSplineCurve) MakeBSpline( vector& pSet, bool bStart, bool bEnd, gp_Vec vStart, gp_Vec vEnd); // 生成首尾端带切矢的样条曲线 Handle(Geom_BSplineCurve) MakeBSpline2( vector& pSet, bool bStart, bool bEnd, gp_Vec vStart, gp_Vec vEnd); // 生成节点带切矢的样条曲线 Handle(Geom_BSplineCurve) MakeBSpline(vector& pSet, vector bSet, vector vSet); // 生成多段线的样条曲线,by czb 20161230 Handle(Geom_BSplineCurve) MakePolyBSpline(vector& pSet); Handle(Geom_BSplineCurve) BuildEdge( vector& pSet, vector& bSet, vector& vSet); ////获取曲线首尾端点和肋位或站位点 type=1,肋位;type=2,站位 int GetCurvePointByFS(int curveID, int xlen, double xSet[], int lens[], Point3D *pnts); int GetCurvePointByFSEx(int curveID, int xlen, vector& xSet,vector& pnts); ///获取所有肋位 vector GetAllF(); ///获取所有站位 vector GetAllS(); double GetSTLCoefficient(); public: map m_mapPoints;//所有点图元集合 map::iterator ptit; map m_mapCurves;//所有线图元集合 map::iterator cvit; map m_mapSurfaces;//所有面图元集合 map::iterator sfit; map m_mapSolids;//所有体图元集合 map::iterator sdit; map m_mapAllTopoShapes;//所有topo对象集合 map::iterator tpit; //2016srq //2016srq // ADDED BY XUEFENG 20180731 // FOR CODES COMBINE map m_mapTempAisShapes;// 曲线非引用点临时对象集合(shape)保存曲线高亮时,其临时显示的点集合 map m_mapAllAis;//所有occ显示对象集合 map::iterator aisit; // END ADDED // DELETE BY XUEFENG 20180731 // FOR CODES COMBINE /* map m_mapTempAisShapes;// 曲线非引用点临时对象集合(shape)保存曲线高亮时,其临时显示的点集合 map m_mapAllAis;//所有occ显示对象集合 map::iterator aisit; */ // END DELETE map m_mapMainDeckSurf;// 主甲板面集合 map m_mapShellSurf;// 外板面集合 map m_mapHull;// 主船体 map m_mapDeckSurf;// 平台面集合 map m_mapBoundSurf;// 上建外围面集合 map m_mapSubdivSurf; // 分舱面集合 map m_mapOpenCargoRegion;// 开敞客货区集合 map m_mapSpace;// 舱室集合 map m_mapAppendage;// 附体集合 //add by Yu 2014/8/30 map m_mapInletPoint;// 静水力点集合 map m_mapLimitAng;// 极限静倾角集合 map m_mapMarginLine;//限界线 map m_mapImmersionOpen; //浸水开口 // ADDED BY XUEFENG 20230604 bool b_isAisFrameCreated; // END ADDED TopoDS_Shape m_shapeTopoFrame;//肋位 //2016srq // ADDED BY XUEFENG 20180731 // FOR CODES COMBINE Handle_AIS_Shape m_shapeAisFrame; // END ADDED // DELETE BY XUEFENG 20180731 // FOR CODES COMBINE //AnyCore::ASceneNodePtr m_shapeAisFrame; // END DELETE double m_numF0x;//站初始位置 int m_iFrame; //肋骨定义是递减还是递增 '0 递减 1 递增 map m_mapFrameRuler;//站 map m_mapStation;//站集合 map m_mapWaterlinePos;//水线集合 map m_mapButtocklinePos;//纵剖线集合 TopoDS_Shape m_shapeTopoProfile;//型线 //2016srq // ADDED BY XUEFENG 20180731 // FOR CODES COMBINE Handle_AIS_Shape m_shapeAisProfile; // END ADDED // DELETE BY XUEFENG 20180731 // FOR CODES COMBINE //AnyCore::ASceneNodePtr m_shapeAisProfile; // END DELETE map m_mapAllNames;// 所有拓扑对象对应的名字集合 map::iterator csit; //redo undo map> m_mapUndoPre; map> m_mapUndoAfter; map>::iterator undoit; map::iterator undosubit; //曲线临时显示对象 map m_maptopoTempShowCurve ; //2016srq // ADDED BY XUEFENG 20180731 // FOR CODES COMBINE map m_mapaisTempShowCurve; // END ADDED // DELETE BY XUEFENG 20180731 // FOR CODES COMBINE //map m_mapaisTempShowCurve ; // END DELETE map m_mapTempShowPoints; string errorinfo;//返回上层的错误信息 int m_curInteractType;//设置图形交互类型(可选择对象类型) type可选择对象类型:0所有图元,1屏幕任意位置,2曲线节点(knot) int m_preselid;//上个选中的线的ID double m_shipLength;//船长 double m_shipWidth;//船宽 double m_shipDepth;//船深 double m_shipLpp;//垂线间长 double m_t; //设计吃水 int AutoCrossFlag;//网格面生成时,交点的来源判断,=1线线求交 =2依赖生成 /// 船舶数据每类图元的颜色显示属性 /// 0-点,1-线,2-面,3-体,4-主甲板,5-外板 /// 6~9-待定 /// 10-舱室,11-附体,12-主船体 // 14-高亮色,13-背景色 20171001 by czb ModelDisplayOption displayOptions[15]; //20171001 by czb, 13->15 //2016srq // ADDED BY XUEFENG 20180731 // FOR CODES COMBINE Graphic3d_NameOfMaterial m_shipMaterial; // END ADDED // DELETE BY XUEFENG 20180731 // FOR CODES COMBINE //AnyCore::AFaceStylePtr m_shipMaterial; //AnyCore::APointStylePtr m_pointStyle; // END DELETE bool bCtrlSelect;//是不是CTRL多选 bool m_bshowPoint; bool m_bshowCurve; bool m_bshowSurface; bool m_bshowSolid; bool m_bshowMainDeck; bool m_bshowShell; bool m_bshowDeck; bool m_bshowBound; bool m_bshowSubdiv; bool m_bshowOpenCargoRegion; bool m_bshowSpace; bool m_bshowAppendage; bool m_bshowFrameRuler; bool m_bshowProfile; bool m_bshowHull; bool m_bshowMainHull; //主船体 bool m_bshowSpaceElement; //舱室单元体 //2016srq //map m_mapTextFrameDisplay;//肋位号 //map m_mapTextDisplay;//显示文本列表 //map::iterator txtit; // DELETE BY XUEFENG 20180731 // FOR CODES COMBINE /* map m_mapTextFrameDisplay;//肋位号 map m_mapTextDisplay;//显示文本列表 map m_mapCurveNodeTextDisplay;//显示曲线节点序号,20170801 新增 by czb map::iterator txtit; */ // END DELETE //二维CAD图纸边界 Lvxj float m_cadLeft; float m_cadRight; float m_cadTop; float m_cadBottom; float m_lastCADHeight; // ADDED BY XUEFENG 20180731 // FOR CODES COMBINE /* NOT EXIST IN 7.6.0 map m_mapTextFrameDisplay; map m_mapTextDisplay; map m_mapCurveNodeTextDisplay; map::iterator txtit; */ // XUEFENG ADDED for OCC 7.6.0 map m_mapTextFrameDisplay; map m_mapTextDisplay; map m_mapCurveNodeTextDisplay; map::iterator txtit; // END ADDED // END ADDED // XUEFENG ADDED 202009 // FOR OCC 7.1.0 // BRepTools::Read need UTF-8 filepath. private: int preNUm(unsigned char byte); bool isUtf8(unsigned char* data, int len); bool isGBK(unsigned char* data, int len); std::string GbkToUtf8(const char *src_str); // END ADDED };