Files
envi-code/SourceCode/Code2026/CoreCommand/pcf.h
T
gjm 2b0c2055ff 新增管道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 命令。
2026-10-03 22:20:08 +08:00

32 lines
1.3 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#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);
};