#pragma once #include "OCCStructDataMD.h" #include "InterfaceCal.h" #include "OCC/OCCLib/Calculation.h" #include "OCC/OCCLib/Geometry.h" #include "nlohmann/json.hpp" #include "Common/BusinessGlobal.h" #include //#define DLLEXPORT extern "C" __declspec(dllexport) namespace OCCModeling { /*************************** Interface Definition *****************************/ //******************** Display ************************* //*** ReInit Data:重新Load数据时调用 *** DLLEXPORT void ReInitData(); DLLEXPORT BOOL AddObjAppendage(int cmdID, vector order, vector &apd); DLLEXPORT BOOL AddObjSpace(int cmdID, vector order, vector &sp); DLLEXPORT BOOL AddObjHull(int cmdID, vector order, vector &hull); //*** DeleteObj:删除数据时调用 *** DLLEXPORT BOOL DeleteObj(int cmdID, vector order, vector del); //*** AddObj:加载数据时调用 图元验证生成*** DLLEXPORT BOOL AddObj(int cmdID, vector order, vector &pnt, vector &crv, vector &srf, vector& sld // int norder, int order[] , // int ndel, int del[], // int npnt,Point3D pnt[], // int ncrv,Curve crv[], // int nsrf,Surface srf[], // int nsld,Solid sld[], // int nmds, MainDeckSurf mds[], // int nss, ShellSurf ss[], // int nds, DeckSurf ds[], // int nbs, BoundSurf bs[], // int nsds, SubdivSurf sds[], // int nocr, OpenCargoRegion ocr[], // int nsp, Space sp[], // int napd, Appendage apd[], // int nh, Hull h[], // int nrenameObj, RenameObject renameObj[] ); //处理进水点,极限静倾角,限界线,浸水开口 DLLEXPORT BOOL AddCalObj(int cmdID,int norder, int order[] , int ndel, int del[], int npnts, Point3D pnts[], int npnt, HydroInletPoint pnt[], int ncrv, HydroLimitAng ang[], int nmargin, MarginLine marginpnts[], int nopen, ImmersionOpen opens[]); //*** RemoveObj:删除数据时调用 *** DLLEXPORT void RemoveObj(int nid,int id[]); DLLEXPORT void UnRedo(int flag, int cmdID); //*** InitData 打开文件架构数据时调用 *** //DLLEXPORT bool InitData(int npnt, Point3D pnt[], // int ncrv, Curve crv[] /*, int nsrf, Surface srf[], int nsld, Solid sld[], int nmds, MainDeckSurf mds[], int nss, ShellSurf ss[], int nds, DeckSurf ds[], int nbs, BoundSurf bs[], int nsds, SubdivSurf sds[], int nocr, OpenCargoRegion ocr[], int nsp, Space sp[], int napd, Appendage apd[], int nh, Hull h[]*/ // ); DLLEXPORT bool InitHullData( vector& h, vector& sp, vector& apd ); DLLEXPORT bool InitData(vector& pnt, vector& crv, vector& srf, vector& sld /*, int nsrf, Surface srf[], int nsld, Solid sld[], int nmds, MainDeckSurf mds[], int nss, ShellSurf ss[], int nds, DeckSurf ds[], int nbs, BoundSurf bs[], int nsds, SubdivSurf sds[], int nocr, OpenCargoRegion ocr[], int nsp, Space sp[], int napd, Appendage apd[], int nh, Hull h[]*/ ); //*** InitData 打开文件关于计算的数据时调用 *** DLLEXPORT bool InitCalData(int npnt, HydroInletPoint pnt[], int ncrv, HydroLimitAng ang[], int nmargin, MarginLine marginpnts[],int nopen, ImmersionOpen opens[]); //******************** Check ************************* //*** CheckPoint点验证,并返回点pnt: *** DLLEXPORT BOOL CheckPoint(Point3D *pnt); //***GetErrInfo:返回错误信息** DLLEXPORT const char* GetErrInfo(); //重设主尺度信息 DLLEXPORT 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[]); //主尺度信息 DLLEXPORT void SetPrincipal(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[]); //型值数据 DLLEXPORT int GetOffsetTableData(int upperDeckID, int foldingLinesID[], int isBilge, double BilgeHC, int shiptype, int asymmetricType, int ids[], int lens[], OffsetTablePoint *pnts); //面的面积 DLLEXPORT double GetS(int id); //体的体积 DLLEXPORT double GetV(int id); //船壳与主甲板围成的体的体积 DLLEXPORT double GetTonnageV1(); //拓扑对象保存为step格式 DLLEXPORT bool SaveTopoToStep(char* path,int ids[]); //拓扑对象保存为step格式,20161227 新增 by czb DLLEXPORT bool SaveTopoToStep2(char* path); //获取拓扑对象保存为brep格式时的OCIDX, 20161214 新增 by czb DLLEXPORT void GetOCIDXOfTopo(int ids[]); //拓扑对象保存为brep格式 DLLEXPORT bool SaveTopoToBrep(char* path); //从step格式读取拓扑对象 DLLEXPORT bool LoadTopoFromStep(char* path,QVector ids); //从设置船壳静水力计算参数 DLLEXPORT bool SetHullPara(int zCnt,double zStep[],int xCnt,double xStep[],int heelCnt,double heelStep[],double heelC[], double heelFMax,double heelFMin,double heelDai,int trimCnt,double trimStep[], double trimFMax,double trimFMin,double trimDai,int startType); //设置舱室静水力计算参数 DLLEXPORT bool SetCompartmentPara(int ComID,int CStatus); DLLEXPORT bool CreateCompData(); DLLEXPORT bool CreateInterHullXml(); DLLEXPORT bool CreateInterCompXml(); DLLEXPORT bool CreateHullSolid(); //自动提取限界线,方法是把甲板沿z轴负方向移动76mm后和船壳求交得到半船壳交线,然后根据站线定义,得到每站和此交线的交点 DLLEXPORT int GetMarginLineleData(int lens[], OffsetTablePoint *pnts); DLLEXPORT bool CreateCXml(); //浸水开口,根据X,Y和甲板相对位置,取得实际Z位置 DLLEXPORT double GetImmersionOpenPos(double X, double Y, double oppositZ); //加载静水力计算接口xml DLLEXPORT void LoadCalculationXML(char* path); //保存静水力计算接口xml DLLEXPORT void SaveCalculationXML(char* path); //保存静水力计算接口xml DLLEXPORT void CloseCalulation(); //进水点计算接口 DLLEXPORT void SetInletPoint(int delpnts,Point3D delpnt[],int addpnts,Point3D addpnt[], int updCnt, int oldIDs[], Point3D newIDs[]); //舭部点计算接口 DLLEXPORT void SetDeckBilgePoint(int Cnt, Point3D addDeck[], Point3D addBilge[]); //导出船壳计算数据文件 //DLLEXPORT bool ExportHullCalFile(char* fileName, char* path, int hullCount, int hullIDs[]); DLLEXPORT bool ExportHullCalFile(string fileName, string path, vector& hullIDs); //导出舱室计算数据文件 DLLEXPORT bool ExportSpaceCalFile(string fileName, string path, vector& spaceIDs); //导出体计算数据文件 DLLEXPORT bool ExportSolidCalFile(char* fileNameWithExtension, char* path, int count, int ids[]);//20190601 added by czb //导出计算数据文件 //DLLEXPORT void ExportIGES(char* fileName); //获取曲线首尾端点和肋位或站位点 type=1,肋位;type=2,站位 DLLEXPORT int GetCurvePointByFS(int curveID, int xlen, double xSet[], int lens[], Point3D *pnts); DLLEXPORT int GetCurvePointByFSEx(int curveID, int xlen, vector& xSet,vector& pnts); //数据接口 Lvxj //导入型值表 DLLEXPORT void ImportOffsetData(bool bImportCtrlPnt,float xSubSectionLen); //导出型值表 DLLEXPORT void ExportOffsetData(double* shipSize,double* expParam, int* expType); //导入CAD文件 DLLEXPORT void ImportCAD(char* fileName); //导入IGES文件 DLLEXPORT long ImportIGES(char* fileName, int impType, float*transfromParams); //导出IGES文件 DLLEXPORT void ExportIGES(char* fileName,int expOption,int selectCnt,int*selectLst); //转换CAD型线 DLLEXPORT void TransfCADLine(int selectedCnt, int* selectLst, int lineType, float* fCADPar, int lens[], Point3D *pnts); //计算两条线交点 DLLEXPORT int GetIntersectPnt(int selectedCnt, int* selectLst,double *pPnt); //数据接口 Lvxj DLLEXPORT OCCStructDataMD *GetDataMD(); DLLEXPORT bool SetObjVisibel(std::vector& ids,int value); DLLEXPORT bool SetObjVisibel(int id,int value); }