feat: cad_mcp_aec 增加爬梯工具,query 支持 climb_stair
第 4 项(按 sys/*.mnu 扩工具)的第一步:从菜单命令里筛出一类参数清晰的实体先做通。 - 新增 add_aec_climb_stair / update_aec_climb_stair(AecDbClimbStair,对应菜单命令 PL_ZXPT 直爬梯、PL_YHZT 圆护爬梯)。建模序列照抄 pool3dcmdCmd.cpp:5742 的命令实现: SetSection(踏管直径) -> SetBaseCurve(底->顶) -> SetClimbStairData(参数体), 再写专业数据 2dStyle / 朝向(KEY_MAJBR)。工具直接收两个端点,不需要复现 "放置点+朝向"那套偏移算法。 参数:start/end、width、cage_diameter、height、bottom_elevation、type(0/1)、 bar_diameter、step_height、step_spacing、wall_distance、facing、material、layer。 - query_aec_entities / get_aec_entity_detail 支持 climb_stair(读 GetClimbStairData)。 - mcp_config.json 增加这两个工具(40 -> 42),query 的 type 枚举补 climb_stair。 实测(AutoCAD 2020 / R230 Debug): - tools/list = 42;add_aec_climb_stair 建出 handle 3A0(宽 450 / 护笼 700 / 高 3000); - get_aec_entity_detail 读回 type=0/width=450/cage=700/height=3000/bar=20/step=300; - update 改 width=600、step_height=250 后读回一致;query type=climb_stair 命中 1 条。
This commit is contained in:
1 parent
25e09eec58
commit
ed01f00dc6
2 files changed
+1239
-1141
No files matched your search
File diff suppressed because it is too large.
Load diff
@@ -167,3 +167,101 @@ MCP 工具是通过 `PostMessage` 在主线程的消息里跑的,**不在命
|
||||
`cannot open target space for write`(`eLockViolation`)—— 补了 `dwg_annotate::DocLock`;
|
||||
2. 上游 `cadsdk.h` 带 `NOMINMAX`,本仓库 `KTCad.h` 没有,
|
||||
`std::min/std::max` 被 windows 宏顶掉 —— 在用到它们的三个文件里 `#undef min/max`。
|
||||
|
||||
## 8. 菜单命令 → 实体 → 工具 对照表
|
||||
|
||||
来源:`c:\ShangHuaSoft\Envi3D-2026-M\sys\*.mnu`(8 个文件、674 条命令、GBK 编码)。
|
||||
做法:解析 `ID_xxx [四字说明]命令` → 用命令名在源码里找注册的 handler
|
||||
(`ADD_CMD` / `acedRegCmds->addCommand`)→ 在 handler(含一层直接调用)里找 `new AecDbXxx`
|
||||
→ 得到"会新建实体的命令"共 74 条、涉及 44 个实体类。
|
||||
|
||||
已实现的实体:管道/墙/板/柱/梁/爬梯(每类一个 `add_*` + 一个 `update_*`)。
|
||||
其余实体的创建参数还没梳理(多数要读对话框),标"(未实现)",
|
||||
要补的话照 `add_aec_climb_stair` 的写法:命令实现里抄建模序列 → 抽出参数 → 加工具。
|
||||
|
||||
|cad命令|4字中文名称|实体名称|工具名称1|工具名称2|
|
||||
| --- | --- | --- | --- | --- |
|
||||
|PL_CRJZ|插入角柱|AecDbColumn|add_aec_column|update_aec_column|
|
||||
|PL_GZZZ|构造柱子|AecDbColumn|add_aec_column|update_aec_column|
|
||||
|PL_DXBQ|单线变墙|AecDbXWall|add_aec_wall|update_aec_wall|
|
||||
|PL_HZMQ|绘制幕墙|AecDbGlassCurtainWall|(未实现)||
|
||||
|PL_QTDJ|墙体倒角|AecDbX3dPartEntity|(内部构件,不单独建)||
|
||||
|PL_QTDY|墙体倒圆|AecDbX3dPartEntity|(内部构件,不单独建)||
|
||||
|PL_ZXPT|直段爬梯|AecDbClimbStair|add_aec_climb_stair|update_aec_climb_stair|
|
||||
|PL_YHZT|圆护爬梯|AecDbClimbStair|add_aec_climb_stair|update_aec_climb_stair|
|
||||
|PL_PTLT|直线钢梯|AecDbLineStair|(内部构件,不单独建)||
|
||||
|PL_SPLT|双跑楼梯|AecDbZLineStair|(未实现)||
|
||||
|PL_SFPX|双平行梯|AecDbParaLlelStair|(未实现)||
|
||||
|PL_SFZJ|双分转角|AecDbCornerStair|(未实现)||
|
||||
|PL_SFSP|双分三跑|AecDbDoubleMulStair|(未实现)||
|
||||
|PL_JCLT|交叉楼梯|AecDbScissorsStair|(未实现)||
|
||||
|PL_JDLT|剪刀楼梯|AecDbCrossStair|(未实现)||
|
||||
|PL_SJLT|三角楼梯|AecDbTriangleStair|(未实现)||
|
||||
|PL_JXZJ|矩形转角|AecDbRectCornerStair|(未实现)||
|
||||
|PL_DDLT|多段楼梯|AecDbMRPLineStair|(未实现)||
|
||||
|PL_YHLT|圆弧楼梯|AecDbArcStair|(未实现)||
|
||||
|PL_ZXLT|直线楼梯|AecDbLineSegStair|(未实现)||
|
||||
|PL_RYPD|任意屋顶|AecDbXRoof|(未实现)||
|
||||
|PL_RZPD|人字屋顶|AecDbXRoof|(未实现)||
|
||||
|PL_ZJPD|攒尖屋顶|AecDbXRoof|(未实现)||
|
||||
|PL_JXPD|<-矩形屋顶|AecDbXRoof|(未实现)||
|
||||
|PL_ZHMC|组合门窗|AecDbGroupXOpening|(未实现)||
|
||||
|PL_ZHMC|组合门窗|AecDbXOpening|(未实现)||
|
||||
|PL_DXCH|带形窗户|AecDbZLineXOpening|(未实现)||
|
||||
|PL_ZJCH|转角窗户|AecDbZLineXOpening|(未实现)||
|
||||
|PL_JLHC|加老虎窗|AecDbXDormerWindow|(未实现)||
|
||||
|PL_JBWC|加保温层|AecDbInsulation|(未实现)||
|
||||
|PL_CBKD|墙体开洞|AecDbX3dPartEntity|(内部构件,不单独建)||
|
||||
|PL_CDKD|平板开洞|AecDbX3dPartEntity|(内部构件,不单独建)||
|
||||
|PL_YXKD|异形开洞|AecDbX3dPart|(内部构件,不单独建)||
|
||||
|PL_YXKD|异形开洞|AecDbX3dPartEntity|(内部构件,不单独建)||
|
||||
|PL_YXKD|异形开洞|AecDbXEquipment|(未实现)||
|
||||
|PL_ZLKD|阵列开洞|AecDbX3dPartEntity|(内部构件,不单独建)||
|
||||
|PL_YXCG|穿管开洞|AecDbX3dPart|(内部构件,不单独建)||
|
||||
|PL_YXCG|穿管开洞|AecDbX3dPartEntity|(内部构件,不单独建)||
|
||||
|PL_YXCG|穿管开洞|AecDbXEquipment|(未实现)||
|
||||
|PL_FZYT|放置阳台|AecDbBalcony|(未实现)||
|
||||
|PL_FZTJ|放置台阶|AecDbXStep|(未实现)||
|
||||
|PL_FZPD|放置坡道|AecDbAscent|(未实现)||
|
||||
|PL_FZSS|放置散水|AecDbXApron|(未实现)||
|
||||
|PL_FZHN|放置护栏|AecDbGuardBar|(内部构件,不单独建)||
|
||||
|PL_QXHN|<-曲线护栏|AecDbGuardBar|(内部构件,不单独建)||
|
||||
|PL_JFZJ|添加方井|AecDbX3dPartEntity|(内部构件,不单独建)||
|
||||
|PL_JYZJ|添加圆井|AecDbX3dPartEntity|(内部构件,不单独建)||
|
||||
|PL_JFYJ|加方圆井|AecDbX3dPartEntity|(内部构件,不单独建)||
|
||||
|PL_JYXJ|加异形井|AecDbX3dPartEntity|(内部构件,不单独建)||
|
||||
|PL_JJSK|加集水坑|AecDbX3dPartEntity|(内部构件,不单独建)||
|
||||
|PL_LSJM|绘制沟渠|AecDbEwPipeBase|(未实现)||
|
||||
|PL_YXGZ|<-异形构筑|AecDbMultiPartEntity|(未实现)||
|
||||
|PL_FZZJ|放置支架|AecDbHolder|(未实现)||
|
||||
|PL_LGGJ|立管固架|AecDbHolder|(未实现)||
|
||||
|PL_FZDJ|放置吊架|AecDbHanger|(未实现)||
|
||||
|PL_FZZD|<-放置支墩|AecDbBossHolder|(未实现)||
|
||||
|EL_HZXG|绘制线管|AecDb3dRoadAxisLine|(未实现)||
|
||||
|EL_HZXG|绘制线管|AecDbEwFlexiblePipe|(未实现)||
|
||||
|EL_JYZW|<-加乙字弯|AecDbEcFitting|(未实现)||
|
||||
|EL_HBLW|绘避雷网|AecDbEwEquipment|(未实现)||
|
||||
|EL_HBLW|绘避雷网|AecDbEwFlexiblePipe|(未实现)||
|
||||
|EL_HBLD|绘避雷带|AecDbEwEquipment|(未实现)||
|
||||
|EL_HBLD|绘避雷带|AecDbEwFlexiblePipe|(未实现)||
|
||||
|EL_JSSJ|加伸缩缝|AecDb3dRoadAxisLine|(未实现)||
|
||||
|EL_FWBR|<-翻弯避让|AecDb3dRoadAxisLine|(未实现)||
|
||||
|PL_DGTJ|单管托架|AecDbPipeHanger|(未实现)||
|
||||
|PL_SGTJ|双管托架|AecDbPipeHanger|(未实现)||
|
||||
|PL_LGTJ|立管托架|AecDbPipeHanger|(未实现)||
|
||||
|PL_PGZZ|平管支座|AecDbPipeHanger|(未实现)||
|
||||
|PL_WGZZ|弯管支座|AecDbPipeHanger|(未实现)||
|
||||
|PL_SBLG|设备连管|AecDbEwPipe|add_aec_pipe|update_aec_pipe|
|
||||
|PL_RYGZ|任意管嘴|AecDbEwEquipment|(未实现)||
|
||||
|PL_XHBZ|序号标注|AecDbEwPipeDim|(未实现)||
|
||||
|PL_XHPB|序号批标|AecDbEwPipeDim|(未实现)||
|
||||
|DI_JDBZ|角度标注|AecDbDimension|(未实现)||
|
||||
|DI_JDBZ|角度标注|AecDbX3dPart|(内部构件,不单独建)||
|
||||
|DI_JDBZ|角度标注|AecDbXEquipment|(未实现)||
|
||||
|PL_DKBZ|洞口标注|AecDbEwPipeDim|(未实现)||
|
||||
|PL_TGBZ|套管标注|AecDbEwPipeDim|(未实现)||
|
||||
|PL_YHBZ|翼环标注|AecDbEwPipeDim|(未实现)||
|
||||
|PL_FMBZ|阀门标注|AecDbEwPipeDim|(未实现)||
|
||||
|HA_FBBZ|风管标注|AecDbEwPipeDim|(未实现)||
|
||||
|IS_BZFM|标注阀门|AecDbEwPipeDim|(未实现)||
|
||||
|IS_GZGJ|标注管件|AecDbEwPipeDim|(未实现)||
|
||||
Reference in new issue
Block a user