新增管道ISO图PCF导出(EW_PCF/EW_PCFSPLIT),完善ITEM-CODE与WELD
CoreCommand 新增管道 ISO 图 PCF 导出功能: - EW_PCF:整个管道系统导出为单个 PCF 文件。 - EW_PCFSPLIT:按管道系统/连通子网拆分为多张 PCF。 内容完善: - 组件齐全:直管、管件(弯头/三通/变径/管帽等)、法兰、阀门、设备、支吊架。 - ITEM-CODE:按 等级+管径(+类型/类别) 查规格库,写出 ITEM-CODE/ITEM-DESCRIPTION/PIPING-SPEC; 弯头按实测夹角区分 90°/45°,阀门按 VLVTYPE 映射类别过滤。 - WELD:两侧接口连接类型均为焊接(0) 时生成焊口;法兰螺栓面不计焊口。 构建:cmakelists.txt 加入 pcf.cpp;StdArx.h 声明 EW_PCF/EW_PCFSPLIT 命令。
This commit is contained in:
1 parent
851c67b5f7
commit
2b0c2055ff
7 files changed
+2734
-256
No files matched your search
@@ -722,6 +722,12 @@ void InitApplication()
|
||||
ADD_CMD(EW_DWGO, EW_PDWGOUTCmdFnc);
|
||||
ADD_CMD(EW_IGSO, EW_IGSOUTCmdFnc);
|
||||
|
||||
//ISO图: 按管线号导出 PCF 中间文件
|
||||
ADD_CMD(EW_PCF, EW_PCFCmdFnc);
|
||||
|
||||
//ISO图: 自动分图(按管号/连通性/图幅把一个管道系统拆成多张 PCF)
|
||||
ADD_CMD(EW_PCFSPLIT, EW_PCFSPLITCmdFnc);
|
||||
|
||||
//管廊漫游
|
||||
ADD_CMD(EW_GLMY, EW_GLMYCmdFnc);
|
||||
|
||||
|
||||
@@ -128,6 +128,8 @@ void EW_STLOUTCmdFnc();
|
||||
void EW_SALOUTCmdFnc();
|
||||
void EW_PDWGOUTCmdFnc();
|
||||
void EW_IGSOUTCmdFnc();
|
||||
void EW_PCFCmdFnc();
|
||||
void EW_PCFSPLITCmdFnc();
|
||||
void EW_GLMYCmdFnc();
|
||||
void EW_ENODECmdFnc();
|
||||
void EW_CTRLVIEWCmdFnc();
|
||||
|
||||
@@ -99,6 +99,7 @@ set(SOURCES
|
||||
"aecuicontextmenu.cpp"
|
||||
"sortedmenuitemdlg.cpp"
|
||||
"collisiondetection.cpp"
|
||||
"pcf.cpp"
|
||||
"EarthWorm.rc"
|
||||
# CoreCommand.def
|
||||
)
|
||||
|
||||
+2544
-256
File diff suppressed because it is too large.
Load diff
@@ -1,6 +1,31 @@
|
||||
#pragma once
|
||||
|
||||
// PCF (Piping Component File) 导出。
|
||||
// 当前阶段:按“管道系统”收集 管道/管件/设备 并输出 PCF 中间文件,
|
||||
// 供 Isogen / 自研 isoAlgo / 第三方软件生成 ISO 图使用。
|
||||
class PCF
|
||||
{
|
||||
public:
|
||||
// 按管道系统(PIPE_PSYSTEM)导出 PCF 文件。
|
||||
// pszFile : 输出的 .pcf 文件完整路径
|
||||
// pszSystem : 管道系统名,对应实体专业数据里的 PIPE_SYS;
|
||||
// 传入空(NULL 或空串)时自动选取图纸中的第一个管道系统。
|
||||
static bool makePCF(LPCTSTR pszFile, LPCTSTR pszSystem);
|
||||
|
||||
// 自动分图:把一个管道系统拆成多张 ISO 图,每张图导出一个 PCF 文件。
|
||||
//
|
||||
// 拆分规则(按专业出图惯例):
|
||||
// 1) 先按"管号"分组,同一管号归一组(管号取不到时整系统作为一组);
|
||||
// 2) 组内按管道连通性(接口相接)再拆成若干连通子网;
|
||||
// 3) 子网若仍超过 nMaxNodes 个组件、或空间跨度超过 dMaxSpan,
|
||||
// 沿管线走向累加组件,超限时回退到最近的"优先切点"再切:
|
||||
// 优先切点 = 法兰面(eFlange) > 现场焊缝(两管件焊接相连) > 普通接口
|
||||
// 只在组件之间的接口处切,因此绝不会切在弯头/三通内部;
|
||||
// 4) 每个切点两侧互相写入"接图纸 <对方图号>"的接续标识,便于施工拼图。
|
||||
//
|
||||
// pszDir : 输出目录,空时用图纸所在目录
|
||||
// pszSystem : 管道系统名,空时取图纸中第一个管道系统
|
||||
// nMaxNodes : 单张图最大组件数,<=0 表示不限制
|
||||
// dMaxSpan : 单张图最大空间跨度(图纸单位),<=0 表示不限制
|
||||
static bool makePCFSplit(LPCTSTR pszDir, LPCTSTR pszSystem, int nMaxNodes, double dMaxSpan);
|
||||
};
|
||||
Reference in new issue
Block a user