Files
envi-code/SourceCode/Code2026/CoreLibrary/cmakelists.txt
T
company-desktop 3afc2dd7c1 perf: 增加截面恢复路径的 Phase 0 计数器(Debug 探针)
按 pipe-section-region-performance-plan.md 的 Phase 0 落地。目的不是提速,而是先拿到
三个决定性数字,再判断截面缓存(Phase 1)到底值不值得做:
1) 每次截面恢复多贵(µs),一次开图共多少次;
2) 同一份 SAT 文本被重复恢复多少次(唯一 hash 数 / 模拟命中率)——直接决定缓存收益上限;
3) 临时文件写入次数与字节数(杀软扫描影响面),以及打开图纸时的回写次数。

改动:
- 新增 inc/SectionPerfCounter.h + CoreLibrary/SectionPerfCounter.cpp
  - Scope(QPC 计时)+ NoteRegionText(FNV-1a 64 位 hash,统计唯一数与模拟命中)
    + NoteTempFile + NoteWriteBack + Dump/Reset
  - 计数器实例放在函数内 static:CoreLibrary 是静态库且只被 CoreCommand 链接,
    所以 CoreCommand.arx 里只有一份,两个入口共用
- AecDbEwPipeBase.cpp:RegionAcisInDwgInFields / RegionAcisoutDwgOutFields 接入
- CoreTools.cpp:StringToRegion 两个重载 / RegionToString 接入
- EarthWorm.cpp:注册 ENVIPERFDUMP / ENVIPERFRESET(仅 Debug)
- CoreLibrary/cmakelists.txt 加一个源文件
- 计划文档的 Phase 0 补上实际命令与采集项

开关:启动 CAD 前 set AEC_PERF_COUNTER=1;命令 ENVIPERFDUMP 打印并追加到
%TEMP%\aec_section_perf.txt,ENVIPERFRESET 清零。
Release 下 Enabled() 恒为 false,调用点只剩一次 bool 判断。

不改任何几何逻辑与存盘格式。

验证:R230 Debug 编译通过(CoreLibrary_BAL_REMOTE、CoreCommand_BAL_REMOTE,无新增 warning),
产物已自动部署到 c:\ShangHuaSoft\Envi3D-2026-M\R230\。
R190 未在本机编译(缺 v100 工具集);代码刻意只用 C++98 特性,控制台输出改走 %hs,
避开了 &wstring[0] 这类老 STL 上的写法问题。
尚未做 CAD 实测:需要开图后跑 ENVIPERFDUMP 才看得到数据。
2026-10-28 19:31:27 +08:00

187 lines
4.6 KiB
CMake

cmake_minimum_required(VERSION 3.16)
project(CoreLibrary)
set(SOURCES
"AcDbProxyAcGiEntity.cpp"
"AcDbX3dSolid.cpp"
"AcDbXFloorFrame.cpp"
"AcPolylineJig.cpp"
"Aec3dFaceplan.cpp"
"AECAngleWatch.cpp"
"AecComplexCurveDraw.cpp"
"AecCoverBooleanOper.cpp"
"SectionPerfCounter.cpp"
"AecDb3dRoad.cpp"
"AecDb3dRoadAxisLine.cpp"
"AecDb3dRoadFitting.cpp"
"AecDbArcStair.cpp"
"AecDbAssembleWell.cpp"
"AecDbBDPipeBase.cpp"
"AecDbBeam.cpp"
"AecDbBlackHoleEntity.cpp"
"AecDbBossHolder.cpp"
"AecDbBuriedOutletDoghouse.cpp"
"AecDbCableDoghouse.cpp"
"AecDbClimbStair.cpp"
"AecDbColumn.cpp"
"AecDbConnectDoghouse.cpp"
"AecDbCornerStair.cpp"
"AecDbCrossStair.cpp"
"AecDbDirPosition.cpp"
"AecDbDoubleMulStair.cpp"
"AecDbEarthWorm.cpp"
"AecDbEarthWormFitting.cpp"
"AecDbECableTray.cpp"
"AecDbECFitting.cpp"
"AecDbEscapeHatchHouse.cpp"
"AecDbEwCable.cpp"
"AecDbEwEquipment.cpp"
"AecDbEwFitting.cpp"
"AecDbEwFlexiblePipe.cpp"
"AecDbEwPipe.cpp"
"AecDbEwPipeBase.cpp"
"AecDbEwPipeDim.cpp"
"AecDbExtendedEntity.cpp"
"AecDbFlume.cpp"
"AecDbGlassCurtainWall.cpp"
"AecDbGuardBar.cpp"
"AecDbHanger.cpp"
"AecDbHolder.cpp"
"AecDbHvacDuct.cpp"
"AecDbHvacFitting.cpp"
"AecDbInsulation.cpp"
"AecDbLandForm.cpp"
"AecDbLineStair.cpp"
"AecDbMRPLineStair.cpp"
"AecDbMultiPartEntity.cpp"
"AecDbOpening.cpp"
"AecDbParaLlelStair.cpp"
"AecDbParamEquipment.cpp"
"AecDbPathSectionSymbDim.cpp"
"AecDbPipeDoghouse.cpp"
"aecdbpipehanger.cpp"
"AecDbPoolCell.cpp"
"AecDbPortRoom.cpp"
"AecDbRectCornerStair.cpp"
"AecDbRiverGroove.cpp"
"AecDbRoof.cpp"
"AecDbScissorsStair.cpp"
"AecDbSectionView.cpp"
"AecDbShEarthWorm.cpp"
"AecDbSlab.cpp"
"AecDbSludgePipe.cpp"
"AecDbTongWall.cpp"
"AecDbTriangleStair.cpp"
"AecDbVenDoghouse.cpp"
"AecDbWall.cpp"
"AecDbWeir.cpp"
"AecDbWell.cpp"
"AecDbX3dGroup.cpp"
"AecDbX3dPart.cpp"
"AecDbX3dPartEntity.cpp"
"AecDbXApron.cpp"
"AecDbXBG.cpp"
"AecDbXDormerWindow.cpp"
"AecDbXEquipment.cpp"
"AecDbXStep.cpp"
"AecDbXXXDoghouse.cpp"
"AecDbZLineStair.cpp"
"AecEwEndDeepCloneAssocMake.cpp"
"AecFloorViewDataRecord.cpp"
"AecInfCmdGrip.cpp"
"AecMInterfaces.cpp"
"AecNodeDoubleClickEdit.cpp"
"AECStatusRecord.cpp"
"AecSupportFunc.cpp"
"AecUnknownContext.cpp"
"AecUnknownSubEntityTraits.cpp"
"AecUnknownViewportDraw.cpp"
"AecUnknownViewportGeometry.cpp"
"AecUnknownWorldDraw.cpp"
"AecUnknownWorldGeometry.cpp"
"AecWall2DJoin.cpp"
"AecWall3DJoin.cpp"
"AecWallJoinDraw.cpp"
"AuxTools.cpp"
"BCMenu.cpp"
"BitAnswer.cpp"
"BrepOper.cpp"
"DrawingFlowData.cpp"
"encryption.cpp"
"EquInsDirJig.cpp"
"Geom.cpp"
"geometry2json.cpp"
"hzip.cpp"
"ImpHvacCross.cpp"
"ImpHvacElbow.cpp"
"ImpHvacOffset.cpp"
"ImpHvacReducer.cpp"
"ImpHvacTee.cpp"
"ImpMD5.cpp"
"InternetSessionEx.cpp"
"KTCadTempOverrides.cpp"
"KTCadUtility.cpp"
"KTCADUtilityEx.cpp"
"KTEntityDragMgr.cpp"
"KTEntityDumb.cpp"
"KTInfoMonitor.cpp"
"KTObjLifeMgr.cpp"
"KTSetting.cpp"
"KTTempTol.cpp"
"MFCDbDwgFiler.cpp"
"ParamEquImpl.cpp"
"parseFamilyForRevit.cpp"
"PointInPoly.cpp"
"UIIBorderLine.cpp"
"UIIBoundary.cpp"
"UIITable.cpp"
"unzip.cpp"
"XEquipmentImpl.cpp"
"aecdbterrain.cpp"
"aecdbgroupopening.cpp"
"aecdbzlinexopening.cpp"
"aecdblinesegstair.cpp"
"aecdbbasestair.cpp"
"./hgrid/dimension.cxx"
"./hgrid/hgrid.cxx"
"./hgrid/hpolygon.cxx"
"./hgrid/mgconst.cxx"
"./hgrid/mgexcept.cxx"
"./implement/stdafx.cpp"
"aecdbarcsegstair.cpp"
"aecdbrectstair.cpp"
"aecdbascent.cpp"
"aecdbbalcony.cpp"
"breptools.cpp"
"aecdbcamera.cpp"
"hlrcutoption.cpp"
"aecdbpingfadim.cpp"
"aecdbdimscalezone.cpp"
"aecdbjoggedcamera.cpp"
)
get_encryption_modes(ENCRYPTION_MODES)
foreach(MODE IN LISTS ENCRYPTION_MODES)
set(_Target "CoreLibrary_${MODE}")
add_library(${_Target} STATIC ${SOURCES})
target_precompile_headers(${_Target} PRIVATE ./implement/StdAfx.h)
target_link_objectarx(${_Target} EARTHWORM_EXPORT ".lib")
target_include_directories(${_Target} PRIVATE "./implement")
target_link_libraries(${_Target} PRIVATE
$<$<CONFIG:Debug>:CoreImplement>
ThirdParty::modernGlue
)
set_encryption_definitions_and_output_path(${_Target} "${MODE}")
set_target_properties(${_Target} PROPERTIES FOLDER "SH/Core/CoreLibrary")
endforeach()