310 lines
6.4 KiB
C
310 lines
6.4 KiB
C
|
#pragma once
|
|||
|
//#include "Geometry.h"
|
|||
|
#define MAX_ARRAY_SIZE11 256
|
|||
|
|
|||
|
//***本数据结构定义必须同\Infrastructure\Infrastructure.Data\Model\Hull.cs中数据结构定义完全一致,意义一致
|
|||
|
|
|||
|
enum E_GEO_3D_OBJ_TYPE
|
|||
|
{
|
|||
|
E_GEO_3D_OBJ_TYPE_POINT3D = 0, // 点
|
|||
|
E_GEO_3D_OBJ_TYPE_CURVE, //线
|
|||
|
E_GEO_3D_OBJ_TYPE_SURFACE, //面
|
|||
|
E_GEO_3D_OBJ_TYPE_SOLID, //体
|
|||
|
E_GEO_3D_OBJ_TYPE_MAINDECKSURF, //主甲板面
|
|||
|
E_GEO_3D_OBJ_TYPE_SHELLSURF, //外板面
|
|||
|
E_GEO_3D_OBJ_TYPE_HULL, //主船体
|
|||
|
E_GEO_3D_OBJ_TYPE_DECKSURF, //平台面
|
|||
|
E_GEO_3D_OBJ_TYPE_BOUNDSURF, //上建外围面
|
|||
|
E_GEO_3D_OBJ_TYPE_SUBDIVSURF, //分舱面
|
|||
|
E_GEO_3D_OBJ_TYPE_OPENCARGOREGION, //开敞客货区
|
|||
|
E_GEO_3D_OBJ_TYPE_SPACE, //舱室
|
|||
|
E_GEO_3D_OBJ_TYPE_APPENDAGE, //附体
|
|||
|
E_GEO_3D_OBJ_TYPE_EMPTY, //空体(删除使用)
|
|||
|
E_GEO_3D_OBJ_TYPE_ALL,
|
|||
|
E_GEO_3D_OBJ_TYPE_SIZE
|
|||
|
};
|
|||
|
struct OBJ3D
|
|||
|
{
|
|||
|
public:
|
|||
|
OBJ3D()
|
|||
|
{
|
|||
|
m_objType = E_GEO_3D_OBJ_TYPE_POINT3D;
|
|||
|
Name = "";
|
|||
|
Command = "";
|
|||
|
}
|
|||
|
|
|||
|
void setObjType(E_GEO_3D_OBJ_TYPE type)
|
|||
|
{
|
|||
|
type = m_objType;
|
|||
|
}
|
|||
|
|
|||
|
E_GEO_3D_OBJ_TYPE getObjType()
|
|||
|
{
|
|||
|
return m_objType;
|
|||
|
}
|
|||
|
|
|||
|
E_GEO_3D_OBJ_TYPE m_objType;
|
|||
|
|
|||
|
std::string Name;
|
|||
|
std::string Command;
|
|||
|
};
|
|||
|
|
|||
|
// 主甲板面
|
|||
|
struct MainDeckSurf :public OBJ3D
|
|||
|
{
|
|||
|
public:
|
|||
|
MainDeckSurf()
|
|||
|
{
|
|||
|
setObjType(E_GEO_3D_OBJ_TYPE_MAINDECKSURF);
|
|||
|
}
|
|||
|
int ID;
|
|||
|
int CmdID;
|
|||
|
// char* Name;
|
|||
|
// char* Command;
|
|||
|
int Visible;
|
|||
|
int Color;
|
|||
|
double Transparency;
|
|||
|
int Type;
|
|||
|
int Src[MAX_ARRAY_SIZE11] ; // 依赖:面序列
|
|||
|
};
|
|||
|
|
|||
|
// 外板面
|
|||
|
struct ShellSurf :public OBJ3D
|
|||
|
{
|
|||
|
public:
|
|||
|
ShellSurf()
|
|||
|
{
|
|||
|
setObjType(E_GEO_3D_OBJ_TYPE_SHELLSURF);
|
|||
|
}
|
|||
|
|
|||
|
int ID;
|
|||
|
int CmdID;
|
|||
|
// char* Name;
|
|||
|
// char* Command;
|
|||
|
int Visible;
|
|||
|
int Color;
|
|||
|
double Transparency;
|
|||
|
int Type;
|
|||
|
int Src[MAX_ARRAY_SIZE11] ; // 依赖:面序列
|
|||
|
};
|
|||
|
|
|||
|
// 主船体
|
|||
|
struct Hull :public OBJ3D
|
|||
|
{
|
|||
|
public:
|
|||
|
Hull()
|
|||
|
{
|
|||
|
setObjType(E_GEO_3D_OBJ_TYPE_HULL);
|
|||
|
}
|
|||
|
int ID;
|
|||
|
int CmdID;
|
|||
|
// char* Name;
|
|||
|
// char* Command;
|
|||
|
int Visible;
|
|||
|
int Color;
|
|||
|
double Transparency;
|
|||
|
int Type; //1面围拢,2体组合,10镜像
|
|||
|
int Src[MAX_ARRAY_SIZE11] ; // 依赖:面序列
|
|||
|
int SolidAddMode[MAX_ARRAY_SIZE11];// 体运算方式:0并,1差,2交.
|
|||
|
//20161112 by czb
|
|||
|
int MirrorDir; // 镜像面方向:1-X, 2-Y, 3-Z
|
|||
|
double MirrorOrgin; // 镜像面位置,与MirrorDir匹配的分量坐标
|
|||
|
double CopyOffsetX; // 复制偏移分量,20170901 新增 by czb
|
|||
|
double CopyOffsetY;// 复制偏移分量
|
|||
|
double CopyOffsetZ;// 复制偏移分量
|
|||
|
};
|
|||
|
|
|||
|
// 平台面
|
|||
|
struct DeckSurf :public OBJ3D
|
|||
|
{
|
|||
|
public:
|
|||
|
DeckSurf()
|
|||
|
{
|
|||
|
setObjType(E_GEO_3D_OBJ_TYPE_DECKSURF);
|
|||
|
}
|
|||
|
|
|||
|
int ID;
|
|||
|
int CmdID;
|
|||
|
// char* Name;
|
|||
|
// char* Command;
|
|||
|
int Visible;
|
|||
|
int Color;
|
|||
|
double Transparency;
|
|||
|
int Type;
|
|||
|
int GenType;// 生成方式:0来自几何面,1参数化
|
|||
|
int Src[MAX_ARRAY_SIZE11];// 依赖:面序列
|
|||
|
// 面的位置或面边界起止位置
|
|||
|
double X1;
|
|||
|
double X2;
|
|||
|
double Y1;
|
|||
|
double Y2;
|
|||
|
double Z;
|
|||
|
};
|
|||
|
|
|||
|
// 上建外围面
|
|||
|
struct BoundSurf :public OBJ3D
|
|||
|
{
|
|||
|
public:
|
|||
|
BoundSurf()
|
|||
|
{
|
|||
|
setObjType(E_GEO_3D_OBJ_TYPE_BOUNDSURF);
|
|||
|
}
|
|||
|
|
|||
|
int ID;
|
|||
|
int CmdID;
|
|||
|
// char* Name;
|
|||
|
// char* Command;
|
|||
|
int Visible;
|
|||
|
int Color;
|
|||
|
double Transparency;
|
|||
|
int Type;
|
|||
|
int GenType;// 生成方式:0来自几何面,1参数化
|
|||
|
int Src[MAX_ARRAY_SIZE11];// 依赖:面序列
|
|||
|
// 面的位置或面边界起止位置
|
|||
|
double X1;
|
|||
|
double X2;
|
|||
|
double Y1;
|
|||
|
double Y2;
|
|||
|
double Z1;
|
|||
|
double Z2;
|
|||
|
int Dir;// 上建外围面方向:0横向(X),1纵向(Y)
|
|||
|
};
|
|||
|
|
|||
|
// 分舱面
|
|||
|
struct SubdivSurf :public OBJ3D
|
|||
|
{
|
|||
|
public:
|
|||
|
SubdivSurf()
|
|||
|
{
|
|||
|
setObjType(E_GEO_3D_OBJ_TYPE_SUBDIVSURF);
|
|||
|
}
|
|||
|
|
|||
|
int ID;
|
|||
|
int CmdID;
|
|||
|
// char* Name;
|
|||
|
// char* Command;
|
|||
|
int Visible;
|
|||
|
int Color;
|
|||
|
double Transparency;
|
|||
|
int Type;
|
|||
|
int GenType;// 生成方式:0来自几何面,1参数化
|
|||
|
int Src[MAX_ARRAY_SIZE11] ; // 依赖:面序列
|
|||
|
double XY; // 面的位置或面边界起止位置
|
|||
|
int Dir;// 分舱面方向:0横向(X),1纵向(Y)
|
|||
|
|
|||
|
// 边界定义方式:0坐标,1限制面
|
|||
|
int BndType;
|
|||
|
// 面边界起止位置(坐标)
|
|||
|
double X1;
|
|||
|
double X2;
|
|||
|
double Y1;
|
|||
|
double Y2;
|
|||
|
double Z1;
|
|||
|
double Z2;
|
|||
|
// 面边界起止位置(限制面),若为0,则该方向以船壳(主甲板面+外板面)作为限制
|
|||
|
int RefX1;
|
|||
|
int RefX2;
|
|||
|
int RefY1;
|
|||
|
int RefY2;
|
|||
|
int RefZ1;
|
|||
|
int RefZ2;
|
|||
|
|
|||
|
int Corrugated;// 是否槽形结构:0否,1是
|
|||
|
int CorDir;// 槽条方向:0垂向,1水平
|
|||
|
// 槽形参数
|
|||
|
double S;
|
|||
|
double A;
|
|||
|
double D;
|
|||
|
double F;
|
|||
|
};
|
|||
|
|
|||
|
// 开敞客货区
|
|||
|
struct OpenCargoRegion :public OBJ3D
|
|||
|
{
|
|||
|
public:
|
|||
|
OpenCargoRegion()
|
|||
|
{
|
|||
|
setObjType(E_GEO_3D_OBJ_TYPE_OPENCARGOREGION);
|
|||
|
}
|
|||
|
|
|||
|
int ID;
|
|||
|
int CmdID;
|
|||
|
// char* Name;
|
|||
|
// char* Command;
|
|||
|
int Visible;
|
|||
|
int Color;
|
|||
|
double Transparency;
|
|||
|
int Type;
|
|||
|
int Src[MAX_ARRAY_SIZE11];// 依赖:面序列
|
|||
|
|
|||
|
};
|
|||
|
|
|||
|
// 舱室
|
|||
|
struct Space :public OBJ3D
|
|||
|
{
|
|||
|
public:
|
|||
|
Space()
|
|||
|
{
|
|||
|
setObjType(E_GEO_3D_OBJ_TYPE_SPACE);
|
|||
|
}
|
|||
|
|
|||
|
int ID;
|
|||
|
int CmdID;
|
|||
|
// char* Name;
|
|||
|
// char* Command;
|
|||
|
int Visible;
|
|||
|
int Color;
|
|||
|
double Transparency;
|
|||
|
int Type; //0参数化,1体组合,2面围拢,10镜像
|
|||
|
int GenType;
|
|||
|
int Src[MAX_ARRAY_SIZE11];// 依赖:面序列/体序列
|
|||
|
int SolidAddMode[MAX_ARRAY_SIZE11];// 体运算方式:0并,1差,2交.
|
|||
|
|
|||
|
double X1; //add by yu 14,8.18 新增特征点定义舱室,尾端面位置
|
|||
|
double X2; //首端面位置
|
|||
|
double FCharacterPoints[MAX_ARRAY_SIZE11]; // 1000表示截止
|
|||
|
double LCharacterPoints[MAX_ARRAY_SIZE11]; // 1000表示截止
|
|||
|
double Y; //剪切点坐标
|
|||
|
double Z; //剪切点坐标
|
|||
|
int HullID;
|
|||
|
bool isUnit;
|
|||
|
//20161112 by czb
|
|||
|
int MirrorDir; // 镜像面方向:1-X, 2-Y, 3-Z
|
|||
|
double MirrorOrgin; // 镜像面位置,与MirrorDir匹配的分量坐标
|
|||
|
double CopyOffsetX; // 复制偏移分量,20170901 新增 by czb
|
|||
|
double CopyOffsetY;// 复制偏移分量
|
|||
|
double CopyOffsetZ;// 复制偏移分量
|
|||
|
|
|||
|
// XUEFENG ADDED 202012
|
|||
|
// Max 5 Sections
|
|||
|
int numSections;
|
|||
|
};
|
|||
|
|
|||
|
// 附体
|
|||
|
struct Appendage :public OBJ3D
|
|||
|
{
|
|||
|
public:
|
|||
|
Appendage()
|
|||
|
{
|
|||
|
setObjType(E_GEO_3D_OBJ_TYPE_APPENDAGE);
|
|||
|
}
|
|||
|
|
|||
|
int ID;
|
|||
|
int CmdID;
|
|||
|
// char* Name;
|
|||
|
// char* Command;
|
|||
|
int Visible;
|
|||
|
int Color;
|
|||
|
double Transparency ;
|
|||
|
int Type; //10镜像,
|
|||
|
int Src[MAX_ARRAY_SIZE11];// 依赖:体序列
|
|||
|
int SolidAddMode[MAX_ARRAY_SIZE11];// 体运算方式:0并,1差,2交
|
|||
|
int Minus;// 是否负体:0否,1是
|
|||
|
//20161112 by czb
|
|||
|
int MirrorDir; // 镜像面方向:1-X, 2-Y, 3-Z
|
|||
|
double MirrorOrgin; // 镜像面位置,与MirrorDir匹配的分量坐标
|
|||
|
double CopyOffsetX; // 复制偏移分量,20170901 新增 by czb
|
|||
|
double CopyOffsetY;// 复制偏移分量
|
|||
|
double CopyOffsetZ;// 复制偏移分量
|
|||
|
};
|