company-desktop
693d3ed934
feat: add_aec_shape 覆盖 PL_DTYG 对话框上的全部几何体
之前只做了 7 种基本体 + 放样体;这次补齐剩下的 5 种,对话框(DTYGDlg)上
能点出来的造型现在都能用 MCP 建:
- extrude 拉伸体:profile 落在过 position、法向 direction 的平面上,沿该法向拉 height
(命令 CreateExtrude:路径线从轮廓包围盒中心出发)
- revolve 旋转体:profile=[[r,h],...](r=到轴距离、h=沿轴坐标)+ axis_start/axis_end
+ angle(度,缺省 360),内部 CreateRevolve2
- sweep 扫掠体:profile + path=[[u,v],...],u 沿轮廓平面 X、v 沿 direction(前进方向),
起点即轮廓中心;内部 CreateSweep(region, polyline)
- cut 切割:profile + depth(缺省取母体最大尺寸),往 -direction 拉刀,永远按减料
- weir 异形堰:base_curve 给圆/圆弧 handle(命令也只能选 CIRCLE/ARC)+ weir_width/
thickness/height1/height2/type/start_distance,移植 makeRegion4Arc + CreateLoft
关键坑(扫掠体一开始怎么都失败就是因为它):
AcDbPolyline 的 2D 坐标是 OCS 坐标,直接 setNormal(vtZ) 摆放是错的——法向不是 Z 时
OCS 的 X/Y 轴会跟着转(AcGe arbitrary axis 规则),给的 [x,y] 就不再是那个位置。
改成用 AcGeMatrix3d::setToAlignCoordSys 把 XY 平面上的曲线搬到 WCS(PlaceOnFrame),
轮廓/路径/放样截面统一走这条路。
其他细节:
- 切割(kCut)强制减料,与命令 bSub=true 一致;刀长缺省用母体包围盒最大边(getMaxLength)
- 异形堰命令里的循环条件 while (UPEQUAL_ZERO(dist - m_dL - dSp)) 像是把"不等于"写成
"约等于",实际只生成一段;工具按"生成一段"实现,排一圈请自己循环换 start_distance
- update_aec_shape 只对 7 种基本体生效(尺寸存在 AcDbX3dSolid 里),曲线类明确拒绝改造
- 三点定弧不再依赖 KTCADUtilityEx::FormatArc,直接用 AcGeCircArc3d 推 AcDbArc
实测(空图,R230 Debug):摆了 13 个异形构筑物,13 种几何体各建一个
(box/cylinder/cone/pyramid/sphere/drum/wedge/loft/extrude/revolve/sweep/cut/weir,
其中 cut 是在 box 上切掉一半),14 次 add_aec_shape 全部 ok。
2026-10-30 21:38:21 +08:00
..
2026-10-04 00:04:20 +08:00
2026-10-30 19:01:19 +08:00
2026-10-04 00:04:20 +08:00
2026-10-30 21:38:21 +08:00
2026-10-29 06:33:19 +08:00
2026-10-29 22:45:14 +08:00
2026-09-28 15:28:50 +08:00
2026-10-28 22:09:48 +08:00
2026-09-28 15:53:36 +08:00
2026-10-30 19:01:19 +08:00
2026-10-04 00:04:20 +08:00
2026-10-21 23:39:47 +08:00
2026-10-04 00:04:20 +08:00
2026-10-23 10:29:31 +08:00
2026-10-13 09:55:42 +08:00
2026-10-30 19:01:19 +08:00
2026-10-04 00:04:20 +08:00
2026-10-04 00:04:20 +08:00
2026-10-13 09:55:42 +08:00
2026-10-04 00:04:20 +08:00
2026-10-25 11:05:18 +08:00
2026-10-13 09:55:42 +08:00
2026-10-23 10:29:31 +08:00
2026-10-23 10:29:31 +08:00
2026-10-04 00:04:20 +08:00
2026-10-04 00:04:20 +08:00
2026-10-04 00:04:20 +08:00
2026-09-28 15:28:50 +08:00
2026-10-04 00:04:20 +08:00
2026-10-04 00:04:20 +08:00
2026-09-28 15:28:50 +08:00
2026-10-30 19:01:19 +08:00
2026-09-28 15:28:50 +08:00
2026-09-28 15:42:32 +08:00
2026-09-28 15:42:32 +08:00
2026-09-28 15:42:32 +08:00
2026-09-28 15:28:50 +08:00
2026-09-28 15:42:32 +08:00