using System; using System.Collections.Generic; using Newtonsoft.Json; using Newtonsoft.Json.Linq; namespace JmSetupSheetReceiver.Models { /// /// 程序单对外 POST JSON 的根对象。 /// public class SetupsheetData { /// 串联坐标名称 public string NcWpName { get; set; } /// 项目数据 public ProjectData ProjectData { get; set; } /// 精公火花位 public double ThicknessF { get; set; } /// 中公火花位 public double ThicknessM { get; set; } /// 粗公火花位 public double ThicknessR { get; set; } /// 精公数量 public int NumberF { get; set; } /// 中公数量 public int NumberM { get; set; } /// 粗公数量 public int NumberR { get; set; } /// 精公自动换刀 NC 名称 public string AutoToolChangNcF { get; set; } /// 中公自动换刀 NC 名称 public string AutoToolChangNcM { get; set; } /// 粗公自动换刀 NC 名称 public string AutoToolChangNcR { get; set; } /// 电极头检测尺寸 public string DetectionSize { get; set; } /// 电极基准面 Z 值 public double ReferencePlaneZval { get; set; } /// 程序单生成时间 public string CreatTime { get; set; } /// 工件号(或工件数量相关标识,以实际报文为准) public string PieceNumber { get; set; } /// 工位列表 public List PositionDataList { get; set; } /// 精公二维码 public string CellBarCodeF { get; set; } /// 中公二维码 public string CellBarCodeM { get; set; } /// 粗公二维码 public string CellBarCodeR { get; set; } /// 工件分中 Z 轴取数方式 public string ZType { get; set; } /// NC 串联是否旋转工件 public bool NcRotate { get; set; } /// NC 串联工件旋转角度 public double NcAngle { get; set; } /// NC 串联是否镜像工件 public bool NcMirror { get; set; } /// NC 串联镜像参考平面:0=YZ 平面;1=XZ 平面 public int NcAxis { get; set; } /// 未知或新增字段保留于此,避免丢数据 [JsonExtensionData] public IDictionary ExtensionData { get; set; } /// 工位数量(计算属性,不参与 JSON) [JsonIgnore] public int PositionCount { get { return PositionDataList == null ? 0 : PositionDataList.Count; } } /// 遍历全部工位下的刀路 public IEnumerable EnumerateToolPaths() { if (PositionDataList == null) yield break; foreach (var pos in PositionDataList) { if (pos == null || pos.ToolPathList == null) continue; foreach (var tp in pos.ToolPathList) { if (tp != null) yield return tp; } } } } /// 项目数据 public class ProjectData { /// 不考虑工件数量的项目总时长(一般不使用) public TimeSpan PDTotalTime { get; set; } /// 不考虑工件数量的项目切削移动时长(一般不使用) public TimeSpan PDCutTime { get; set; } /// 项目总时长 public TimeSpan TotalTime { get; set; } /// 项目切削移动时长 public TimeSpan CutTime { get; set; } /// 项目路径 public string PDSession { get; set; } /// NC 输出路径 public string NcprogramPath { get; set; } /// 项目名称 public string Project { get; set; } /// 未知或新增字段 [JsonExtensionData] public IDictionary ExtensionData { get; set; } } /// 工位数据 public class PositionData { /// 当前工位刀路列表 public List ToolPathList { get; set; } /// 当前毛坯最大 Z 值 public double StartBlockMaxZ { get; set; } /// 当前工位名称 public string PositionName { get; set; } /// 当前工位模型尺寸 public EntitySize ModelSizeByPosition { get; set; } /// 当前工位毛料尺寸 public EntitySize BlockSizeByPosition { get; set; } /// 工位总时长 public TimeSpan PositionTotalTime { get; set; } /// 工位切削移动时长 public TimeSpan PositionCutTime { get; set; } /// 工位视图图片(JSON 中多为 Base64,还原后为字节数组) public List ImageBytesList { get; set; } /// 基准角位置:0 左上角;1 左下角;2 右上角;3 右下角 public int DatumMark { get; set; } /// 订料尺寸字符串,如 25*25*20 public string BlockSizeString { get; set; } /// 工位界面配置快照(客户、机床、材质等) public ConfigSetupSheet ConfigSetupSheet { get; set; } /// 未知或新增字段 [JsonExtensionData] public IDictionary ExtensionData { get; set; } /// 刀路数量(计算属性,不参与 JSON) [JsonIgnore] public int ToolPathCount { get { return ToolPathList == null ? 0 : ToolPathList.Count; } } } /// 包围盒(模型 / 毛料 / 刀路尺寸) public class EntitySize { /// X 最小 public double Xmin { get; set; } /// X 最大 public double Xmax { get; set; } /// Y 最小 public double Ymin { get; set; } /// Y 最大 public double Ymax { get; set; } /// Z 最小 public double Zmin { get; set; } /// Z 最大 public double Zmax { get; set; } public override string ToString() { return string.Format("X[{0:0.###},{1:0.###}] Y[{2:0.###},{3:0.###}] Z[{4:0.###},{5:0.###}]", Xmin, Xmax, Ymin, Ymax, Zmin, Zmax); } } /// 工位界面配置快照(常用字段;其余进 ExtensionData) public class ConfigSetupSheet { /// 客户名称 public string Customers { get; set; } /// 机床编号 public string MachineNo { get; set; } /// 材质 public string Material { get; set; } /// 模号 public string MouldNo { get; set; } /// 工件名称 public string PieceName { get; set; } /// 员工姓名 public string EmployeeName { get; set; } /// 装夹方式 public string ClampType { get; set; } /// Excel 相关配置标识 public string Excel { get; set; } /// Html 相关配置标识 public string Html { get; set; } /// 工作平面相关配置 public string YnWorkplane { get; set; } /// 分中类型默认值 public string CenterTypeDefault_Value { get; set; } /// 其余配置字段 [JsonExtensionData] public IDictionary ExtensionData { get; set; } } /// 刀路数据 public class ToolPathData { /// 串联坐标名称 public string NcWpName { get; set; } /// NC 名称 public string Ncprogram { get; set; } /// 刀路名称 public string Toolpath { get; set; } /// 刀具名称 public string ToolID { get; set; } /// 刀尖类型 public string ToolType { get; set; } /// 刀具直径 public double Dia { get; set; } /// 刀尖圆角 public double Tip { get; set; } /// 刀具伸出长度 public double Overhang { get; set; } /// 刀路 Z 最小值 public double TPZMin { get; set; } /// 旧版转速(停用) public double Spindle { get; set; } /// 旧版进给(停用) public double Cut { get; set; } /// 公差 public double Tol { get; set; } /// 总时间 public TimeSpan Totaltime { get; set; } /// 切削时间 public TimeSpan CutTime { get; set; } /// 径向余量 public double Thickness { get; set; } /// 轴向余量 public double AxialThickness { get; set; } /// 是否碰撞检测 public bool CollChecked { get; set; } /// 刀号 public string ToolNumber { get; set; } /// NC 描述 public string Description { get; set; } /// 刃长 public double Len { get; set; } /// 锥度直径 public double TaperDiameter { get; set; } /// 刀具锥度 public double TaperAngle { get; set; } /// 行距 public double Stepover { get; set; } /// 步距 public double Stepdown { get; set; } /// NC 备注 public string NcprogramNotes { get; set; } /// 刀具描述 public string ToolDescription { get; set; } /// 进给(快速相关) public double FeedRateRapid { get; set; } /// 刀头最大 public double THUpper { get; set; } /// 刀柄最大 public double TSUpper { get; set; } /// 刀头最小 public double THLower { get; set; } /// 刀柄最小 public double TSLower { get; set; } /// 刀路坐标 public string WKPLName { get; set; } /// 刀头名称 public string HolderName { get; set; } /// 刀具格式后名称 public string Tool { get; set; } /// 刀具备注 public string ToolNote { get; set; } /// 加工深度(模型最高 Z 与刀路最小 Z 之差) public double Depth { get; set; } /// 刀路备注 public string ToolpathNotes { get; set; } /// 刀头几何列表 public List ToolHolders { get; set; } /// 刀柄几何列表 public List ToolShanks { get; set; } /// NC 路径 public string NcprogramPath { get; set; } /// 圆角盘铣刀刀具上圆角 public double UpperTip { get; set; } /// 刀柄名称 public string ShankName { get; set; } /// 加长杆名称 public string ExtensionName { get; set; } /// 加长杆长度 public double ExtensionLength { get; set; } /// 刀柄长度 public double ShankLength { get; set; } /// 刀头加长杆刀柄 public string HolderExtensioShank { get; set; } /// 刀头加长杆 public string HolderExtensio { get; set; } /// 安全高度 public double SafeZ { get; set; } /// 半径补偿编码 public int CompCode { get; set; } /// 启用半径补偿 public bool RadiusCompNumber_Active { get; set; } /// 半径补偿号 public int RadiusCompNumber_Value { get; set; } /// 夹持名称 public string OldHolderName { get; set; } /// 刀具半径补偿 public bool CncCutterCompensationActive { get; set; } /// NC 文件大小 public string NcFileSize { get; set; } /// NC 输出坐标系 public string NcWorkplane { get; set; } /// 切削长度 public double CutLength { get; set; } /// 标题 public string Title { get; set; } /// 刀具寿命 public double ToolLife { get; set; } /// 刀路 X 最大值 public double TPXmax { get; set; } /// 刀路 X 最小值 public double TPXmin { get; set; } /// 刀路 Y 最大值 public double TPYmax { get; set; } /// 刀路 Y 最小值 public double TPYmin { get; set; } /// 刀路 Z 最大值 public double TPZmax { get; set; } /// 刀路 Z 最小值 public double TPZmin { get; set; } /// 刀路尺寸列表 public List TpSizeList { get; set; } /// 标距长度 public double GaugeLength { get; set; } /// 策略类型 public string Strategy { get; set; } /// 钻孔径向余量 public double DrillThickness { get; set; } /// 钻孔轴向余量 public double DrillAxialThickness { get; set; } /// 径向余量(刀路) public double TpThickness { get; set; } /// 轴向余量(刀路) public double TpAxialThickness { get; set; } /// 钻孔深度类型 public string DrillDepthType { get; set; } /// 钻孔深度是否用户定义 public string DrillDepthUserDefined { get; set; } /// 刀具切削安全状态 public string SafetyToolCuttingStatus { get; set; } /// 刀具切入切出安全状态 public string SafetyToolLeadsStatus { get; set; } /// 刀具连接安全状态 public string SafetyToolLinksStatus { get; set; } /// 刀头切削安全状态 public string SafetyHolderCuttingStatus { get; set; } /// 刀头切入切出安全状态 public string SafetyHolderLeadsStatus { get; set; } /// 刀头连接安全状态 public string SafetyHolderLinksStatus { get; set; } /// 串联二维码 public List NcCodeList { get; set; } /// 转速 public string Rpm { get; set; } /// 进给 public string Frate { get; set; } /// 钻孔循环类型 public string DrillType { get; set; } /// 钻孔啄孔深度 public string PeckDepth { get; set; } /// 标记为单独刀具、不合并 NC 的瞬态标志 public bool NoMerge { get; set; } /// 未知或新增字段 [JsonExtensionData] public IDictionary ExtensionData { get; set; } public override string ToString() { return string.Format("{0} | 刀 {1} Dia={2} | NC={3}", Toolpath ?? "(unnamed)", ToolID ?? Tool ?? "?", Dia, Ncprogram ?? ""); } } /// 刀头 / 刀柄几何段 public class HolderOrShank { /// 上直径 public double UpperDiameter { get; set; } /// 下直径 public double LowerDiameter { get; set; } /// 长度 public double Length { get; set; } } }