建立方向盘项目初始版本

This commit is contained in:
2026-10-29 22:04:55 +08:00
commit 9962cbfbce
834 changed files with 1519203 additions and 0 deletions

11
.gitignore vendored Normal file
View File

@@ -0,0 +1,11 @@
# FreeCAD automatic backups
*.FCBak
*.FCStd1
# Python temporary files
__pycache__/
*.py[cod]
# Windows file metadata
Thumbs.db
desktop.ini

28
README.md Normal file
View File

@@ -0,0 +1,28 @@
# M9C12 直驱方向盘项目
本页是项目入口。当前方案是 **编码器铜柱版试装方案**,模型和打印文件仍需实物核对;不是已经完成试装或结构强度验证的生产定稿。
## 当前使用
- [总装 FreeCAD](models/assembly_latest_standoff/Assembly.FCStd) · [STEP](models/assembly_latest_standoff/Assembly.step) · [总装预览](models/assembly_latest_standoff/装配全景.png) · [装配说明与限制](models/assembly_latest_standoff/装配说明.md)
- [当前零件和采购清单](零件清单.md)
- [3D 打印包(铜柱版)](deliverables/3D打印文件_铜柱版.zip) · [单件和打印说明](deliverables/3D打印文件_铜柱版/打印和装配说明.md):编码器支架和磁铁座各 1 件,供试装。
- [方案及历史索引](方案索引.md):查找参考件、备选和旧方案。
## 目录
| 目录 | 用途 |
| --- | --- |
| `models/` | 当前总装、零件、参考模型和历史概念;从零件清单和方案索引进入。 |
| `deliverables/` | 当前打印包;旧打印包移至 `历史打印方案/`。旧包中的“当前方案”是历史名称,不代表当前状态。 |
| `images/` | 原始照片和参考图片。 |
| `scripts/` | 建模、导出、渲染和检查脚本,含历史方案脚本。 |
本次保留 `models` 和 `scripts` 的原路径:既有重建脚本引用这些位置,随意移动会使其失效。历史模型保留不等于仍被采用;未列入当前清单的模型应先核对用途。
## 后续维护约定
1. 普通尺寸修改更新当前零件的原文件,重新导出对应 STEP/STL,更新总装、说明和清单;避免以新文件夹表示每次修改。
2. 发布打印文件前核对与当前模型一致,并记录用途、数量、版本及试装状态。备选或被替代的包移入历史目录,保留原因。
3. 重要方案变更记录在方案索引中;不凭修改时间判断是否有效。新建目录仅用于确有独立价值的方案或零件。
4. 模型尺寸、间隙和检查结果只在说明中列出的假设范围内成立,实物配合和动态强度须另行验证。

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

View File

@@ -0,0 +1,31 @@
# 3D 打印清单:编码器铜柱版
本包只整理当前编码器方案的两个试装打印件。每个 STL 是一个零件,单位为 mm,不要缩放;请打印店分别上传,每件打印 1 个。STEP 供需要时查看或报价,FCStd 用于编辑和查看,不是额外的打印数量。
| 文件 | 数量 | 用途 |
| --- | --- | --- |
| 编码器支架_无立柱.stl | 1 | 四个安装孔连接 M4 铜柱,固定 MT6826S 圆形 PCB |
| 磁铁座_单件.stl | 1 | 用 M3 贯穿螺丝和螺母固定在电机旋转中心轴上,安装 Ø10 × 3 mm 径向充磁磁铁 |
建议选择适合电机周围温度的材料,例如 PETG 或耐温更高的材料;请打印店按所选工艺确认能否打印、材料精度和尺寸。打印时保留所有孔与支承结构,不要擅自封孔或缩放。以上是首次试装件,未经实际切片、打印或实物验证。
## 编码器支架与铜柱
支架平板约 49 × 49 × 3.2 mm,四孔中心位于 PCD 50 mm,孔径 4.4 mm;保留 PCB 的三个 Ø1.8 mm 导孔及原设计承托区域。PCB 直径 33 mm、厚 1.6 mm、芯片突出 0.8 mm 仍是建模假设,PCB 孔距、元件和焊线空间以实物为准。
外购 4 根 M4 公母六角铜柱,柱身 10 mm(不含公牙)、对边约 7 mm。公牙长度必须按电机螺纹的实际有效深度选择,不能仅由 M4×8 判断电机孔深;确保装紧后既不会顶到底,又有足够有效啮合。铜柱固定电机 PCD50 孔,电机的四个小角码另用 PCD76 孔。PCD50 与 PCD76 相位、铜柱及实物角码的配合仍需试装。
建议各铜柱与支架之间先放相同厚度的 1 mm 金属平垫片。10 mm 铜柱 + 1 mm 垫片时,按假设 PCB 厚 1.6 mm、芯片突出 0.8 mm、磁铁表面离电机基准面 7.5 mm 计算,名义间隙约 1.1 mm;实物间隙不一定是此数值。增加四处同厚垫片会增加间隙,减少则减小;不要在不知道间隙时直接通电高速旋转。先断电慢转检查碰擦和偏心,再确认角度及磁场读数。
四颗支架固定螺钉的长度根据支架厚度、平垫片及铜柱母牙深选择,必须有有效咬合且不顶底。三个 PCB 孔按 M2 自攻螺钉的旧版方案设计,实际大小、PCB 固定、焊点和电线是否压住均先试配,避免用力拧裂 PCB。
## 磁铁座
磁铁座原试装模型底部 Ø27 mm、总高 7.5 mm;M3 通孔 Ø3.3 mm,磁铁槽 Ø10.3 × 3 mm。螺丝头按厚 2.2 mm、直径不大于 7.2 mm 假设,实物直径需确认。先检查贯穿螺栓及螺母装配空间,固定磁铁后确认其不会松脱;手动转动检查磁铁居中且不碰芯片。中心孔定位与真实磁场需要实物验证。
## 不在本次打印清单内
- 风扇改为直接固定在 2020 型材上,无需原打印风扇支架。
- 编码器调距采用购买的金属垫片,无需旧的薄打印垫片与拼接板。
- 转向灯回正轴套只有概念示意,回正触点位置、拨片形状和键槽相位尚未验证;`回正轴套_仅供参考.png` 不是打印文件。
- 电机转接盘、70 转接盘和轴承固定板使用金属件,不在本打印清单中。

View File

@@ -0,0 +1,391 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('FreeCAD Model'),'2;1');
FILE_NAME('Open CASCADE Shape Model','2026-10-28T09:26:54',(''),(''),
'Open CASCADE STEP processor 7.8','FreeCAD','Unknown');
FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }'));
ENDSEC;
DATA;
#1 = APPLICATION_PROTOCOL_DEFINITION('international standard',
'automotive_design',2000,#2);
#2 = APPLICATION_CONTEXT(
'core data for automotive mechanical design processes');
#3 = SHAPE_DEFINITION_REPRESENTATION(#4,#10);
#4 = PRODUCT_DEFINITION_SHAPE('','',#5);
#5 = PRODUCT_DEFINITION('design','',#6,#9);
#6 = PRODUCT_DEFINITION_FORMATION('','',#7);
#7 = PRODUCT('Magnet holder - print motor face down',
'Magnet holder - print motor face down','',(#8));
#8 = PRODUCT_CONTEXT('',#2,'mechanical');
#9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design');
#10 = ADVANCED_BREP_SHAPE_REPRESENTATION('',(#11,#15),#368);
#11 = AXIS2_PLACEMENT_3D('',#12,#13,#14);
#12 = CARTESIAN_POINT('',(0.,0.,0.));
#13 = DIRECTION('',(0.,0.,1.));
#14 = DIRECTION('',(1.,0.,-0.));
#15 = MANIFOLD_SOLID_BREP('',#16);
#16 = CLOSED_SHELL('',(#17,#50,#70,#90,#149,#174,#206,#230,#265,#282,
#302,#331,#356));
#17 = ADVANCED_FACE('',(#18),#45,.T.);
#18 = FACE_BOUND('',#19,.T.);
#19 = EDGE_LOOP('',(#20,#29,#37,#44));
#20 = ORIENTED_EDGE('',*,*,#21,.F.);
#21 = EDGE_CURVE('',#22,#22,#24,.T.);
#22 = VERTEX_POINT('',#23);
#23 = CARTESIAN_POINT('',(13.5,-3.306546357698E-15,3.));
#24 = CIRCLE('',#25,13.5);
#25 = AXIS2_PLACEMENT_3D('',#26,#27,#28);
#26 = CARTESIAN_POINT('',(0.,0.,3.));
#27 = DIRECTION('',(0.,0.,1.));
#28 = DIRECTION('',(1.,0.,-0.));
#29 = ORIENTED_EDGE('',*,*,#30,.F.);
#30 = EDGE_CURVE('',#31,#22,#33,.T.);
#31 = VERTEX_POINT('',#32);
#32 = CARTESIAN_POINT('',(13.5,-3.306546357698E-15,0.));
#33 = LINE('',#34,#35);
#34 = CARTESIAN_POINT('',(13.5,-3.306546357698E-15,0.));
#35 = VECTOR('',#36,1.);
#36 = DIRECTION('',(0.,0.,1.));
#37 = ORIENTED_EDGE('',*,*,#38,.T.);
#38 = EDGE_CURVE('',#31,#31,#39,.T.);
#39 = CIRCLE('',#40,13.5);
#40 = AXIS2_PLACEMENT_3D('',#41,#42,#43);
#41 = CARTESIAN_POINT('',(0.,0.,0.));
#42 = DIRECTION('',(0.,0.,1.));
#43 = DIRECTION('',(1.,0.,-0.));
#44 = ORIENTED_EDGE('',*,*,#30,.T.);
#45 = CYLINDRICAL_SURFACE('',#46,13.5);
#46 = AXIS2_PLACEMENT_3D('',#47,#48,#49);
#47 = CARTESIAN_POINT('',(0.,0.,0.));
#48 = DIRECTION('',(0.,0.,1.));
#49 = DIRECTION('',(1.,0.,-0.));
#50 = ADVANCED_FACE('',(#51,#54),#65,.T.);
#51 = FACE_BOUND('',#52,.T.);
#52 = EDGE_LOOP('',(#53));
#53 = ORIENTED_EDGE('',*,*,#21,.T.);
#54 = FACE_BOUND('',#55,.T.);
#55 = EDGE_LOOP('',(#56));
#56 = ORIENTED_EDGE('',*,*,#57,.F.);
#57 = EDGE_CURVE('',#58,#58,#60,.T.);
#58 = VERTEX_POINT('',#59);
#59 = CARTESIAN_POINT('',(10.,-2.449293598295E-15,3.));
#60 = CIRCLE('',#61,10.);
#61 = AXIS2_PLACEMENT_3D('',#62,#63,#64);
#62 = CARTESIAN_POINT('',(0.,0.,3.));
#63 = DIRECTION('',(0.,0.,1.));
#64 = DIRECTION('',(1.,0.,-0.));
#65 = PLANE('',#66);
#66 = AXIS2_PLACEMENT_3D('',#67,#68,#69);
#67 = CARTESIAN_POINT('',(0.,0.,3.));
#68 = DIRECTION('',(0.,0.,1.));
#69 = DIRECTION('',(1.,0.,-0.));
#70 = ADVANCED_FACE('',(#71,#74),#85,.F.);
#71 = FACE_BOUND('',#72,.F.);
#72 = EDGE_LOOP('',(#73));
#73 = ORIENTED_EDGE('',*,*,#38,.T.);
#74 = FACE_BOUND('',#75,.F.);
#75 = EDGE_LOOP('',(#76));
#76 = ORIENTED_EDGE('',*,*,#77,.F.);
#77 = EDGE_CURVE('',#78,#78,#80,.T.);
#78 = VERTEX_POINT('',#79);
#79 = CARTESIAN_POINT('',(1.65,-4.041334437186E-16,0.));
#80 = CIRCLE('',#81,1.65);
#81 = AXIS2_PLACEMENT_3D('',#82,#83,#84);
#82 = CARTESIAN_POINT('',(0.,0.,0.));
#83 = DIRECTION('',(0.,0.,1.));
#84 = DIRECTION('',(1.,0.,-0.));
#85 = PLANE('',#86);
#86 = AXIS2_PLACEMENT_3D('',#87,#88,#89);
#87 = CARTESIAN_POINT('',(0.,0.,0.));
#88 = DIRECTION('',(0.,0.,1.));
#89 = DIRECTION('',(1.,0.,-0.));
#90 = ADVANCED_FACE('',(#91),#144,.T.);
#91 = FACE_BOUND('',#92,.T.);
#92 = EDGE_LOOP('',(#93,#104,#112,#121,#127,#128,#129,#138));
#93 = ORIENTED_EDGE('',*,*,#94,.F.);
#94 = EDGE_CURVE('',#95,#97,#99,.T.);
#95 = VERTEX_POINT('',#96);
#96 = CARTESIAN_POINT('',(9.921567416492,1.25,7.5));
#97 = VERTEX_POINT('',#98);
#98 = CARTESIAN_POINT('',(9.921567416492,-1.25,7.5));
#99 = CIRCLE('',#100,10.);
#100 = AXIS2_PLACEMENT_3D('',#101,#102,#103);
#101 = CARTESIAN_POINT('',(0.,0.,7.5));
#102 = DIRECTION('',(0.,0.,1.));
#103 = DIRECTION('',(1.,0.,-0.));
#104 = ORIENTED_EDGE('',*,*,#105,.F.);
#105 = EDGE_CURVE('',#106,#95,#108,.T.);
#106 = VERTEX_POINT('',#107);
#107 = CARTESIAN_POINT('',(9.921567416492,1.25,5.1));
#108 = LINE('',#109,#110);
#109 = CARTESIAN_POINT('',(9.921567416492,1.25,3.));
#110 = VECTOR('',#111,1.);
#111 = DIRECTION('',(0.,0.,1.));
#112 = ORIENTED_EDGE('',*,*,#113,.F.);
#113 = EDGE_CURVE('',#114,#106,#116,.T.);
#114 = VERTEX_POINT('',#115);
#115 = CARTESIAN_POINT('',(10.,-2.449293598295E-15,5.1));
#116 = CIRCLE('',#117,10.);
#117 = AXIS2_PLACEMENT_3D('',#118,#119,#120);
#118 = CARTESIAN_POINT('',(0.,0.,5.1));
#119 = DIRECTION('',(0.,0.,1.));
#120 = DIRECTION('',(1.,0.,-0.));
#121 = ORIENTED_EDGE('',*,*,#122,.F.);
#122 = EDGE_CURVE('',#58,#114,#123,.T.);
#123 = LINE('',#124,#125);
#124 = CARTESIAN_POINT('',(10.,-2.449293598295E-15,3.));
#125 = VECTOR('',#126,1.);
#126 = DIRECTION('',(0.,0.,1.));
#127 = ORIENTED_EDGE('',*,*,#57,.T.);
#128 = ORIENTED_EDGE('',*,*,#122,.T.);
#129 = ORIENTED_EDGE('',*,*,#130,.F.);
#130 = EDGE_CURVE('',#131,#114,#133,.T.);
#131 = VERTEX_POINT('',#132);
#132 = CARTESIAN_POINT('',(9.921567416492,-1.25,5.1));
#133 = CIRCLE('',#134,10.);
#134 = AXIS2_PLACEMENT_3D('',#135,#136,#137);
#135 = CARTESIAN_POINT('',(0.,0.,5.1));
#136 = DIRECTION('',(0.,0.,1.));
#137 = DIRECTION('',(1.,0.,-0.));
#138 = ORIENTED_EDGE('',*,*,#139,.T.);
#139 = EDGE_CURVE('',#131,#97,#140,.T.);
#140 = LINE('',#141,#142);
#141 = CARTESIAN_POINT('',(9.921567416492,-1.25,3.));
#142 = VECTOR('',#143,1.);
#143 = DIRECTION('',(0.,0.,1.));
#144 = CYLINDRICAL_SURFACE('',#145,10.);
#145 = AXIS2_PLACEMENT_3D('',#146,#147,#148);
#146 = CARTESIAN_POINT('',(0.,0.,3.));
#147 = DIRECTION('',(0.,0.,1.));
#148 = DIRECTION('',(1.,0.,-0.));
#149 = ADVANCED_FACE('',(#150),#169,.F.);
#150 = FACE_BOUND('',#151,.F.);
#151 = EDGE_LOOP('',(#152,#161,#167,#168));
#152 = ORIENTED_EDGE('',*,*,#153,.F.);
#153 = EDGE_CURVE('',#154,#154,#156,.T.);
#154 = VERTEX_POINT('',#155);
#155 = CARTESIAN_POINT('',(1.65,-4.041334437186E-16,1.9));
#156 = CIRCLE('',#157,1.65);
#157 = AXIS2_PLACEMENT_3D('',#158,#159,#160);
#158 = CARTESIAN_POINT('',(0.,0.,1.9));
#159 = DIRECTION('',(0.,0.,1.));
#160 = DIRECTION('',(1.,0.,-0.));
#161 = ORIENTED_EDGE('',*,*,#162,.F.);
#162 = EDGE_CURVE('',#78,#154,#163,.T.);
#163 = LINE('',#164,#165);
#164 = CARTESIAN_POINT('',(1.65,-4.041334437186E-16,-5.E-02));
#165 = VECTOR('',#166,1.);
#166 = DIRECTION('',(0.,0.,1.));
#167 = ORIENTED_EDGE('',*,*,#77,.T.);
#168 = ORIENTED_EDGE('',*,*,#162,.T.);
#169 = CYLINDRICAL_SURFACE('',#170,1.65);
#170 = AXIS2_PLACEMENT_3D('',#171,#172,#173);
#171 = CARTESIAN_POINT('',(0.,0.,-5.E-02));
#172 = DIRECTION('',(0.,0.,1.));
#173 = DIRECTION('',(1.,0.,-0.));
#174 = ADVANCED_FACE('',(#175),#201,.T.);
#175 = FACE_BOUND('',#176,.T.);
#176 = EDGE_LOOP('',(#177,#185,#186,#194));
#177 = ORIENTED_EDGE('',*,*,#178,.T.);
#178 = EDGE_CURVE('',#179,#95,#181,.T.);
#179 = VERTEX_POINT('',#180);
#180 = CARTESIAN_POINT('',(4.995998398719,1.25,7.5));
#181 = LINE('',#182,#183);
#182 = CARTESIAN_POINT('',(4.5,1.25,7.5));
#183 = VECTOR('',#184,1.);
#184 = DIRECTION('',(1.,0.,-0.));
#185 = ORIENTED_EDGE('',*,*,#94,.T.);
#186 = ORIENTED_EDGE('',*,*,#187,.F.);
#187 = EDGE_CURVE('',#188,#97,#190,.T.);
#188 = VERTEX_POINT('',#189);
#189 = CARTESIAN_POINT('',(4.995998398719,-1.25,7.5));
#190 = LINE('',#191,#192);
#191 = CARTESIAN_POINT('',(4.5,-1.25,7.5));
#192 = VECTOR('',#193,1.);
#193 = DIRECTION('',(1.,0.,-0.));
#194 = ORIENTED_EDGE('',*,*,#195,.F.);
#195 = EDGE_CURVE('',#179,#188,#196,.T.);
#196 = CIRCLE('',#197,5.15);
#197 = AXIS2_PLACEMENT_3D('',#198,#199,#200);
#198 = CARTESIAN_POINT('',(0.,0.,7.5));
#199 = DIRECTION('',(0.,0.,1.));
#200 = DIRECTION('',(1.,0.,-0.));
#201 = PLANE('',#202);
#202 = AXIS2_PLACEMENT_3D('',#203,#204,#205);
#203 = CARTESIAN_POINT('',(0.,0.,7.5));
#204 = DIRECTION('',(0.,0.,1.));
#205 = DIRECTION('',(1.,0.,-0.));
#206 = ADVANCED_FACE('',(#207),#225,.T.);
#207 = FACE_BOUND('',#208,.T.);
#208 = EDGE_LOOP('',(#209,#217,#223,#224));
#209 = ORIENTED_EDGE('',*,*,#210,.F.);
#210 = EDGE_CURVE('',#211,#131,#213,.T.);
#211 = VERTEX_POINT('',#212);
#212 = CARTESIAN_POINT('',(4.995998398719,-1.25,5.1));
#213 = LINE('',#214,#215);
#214 = CARTESIAN_POINT('',(4.5,-1.25,5.1));
#215 = VECTOR('',#216,1.);
#216 = DIRECTION('',(1.,0.,-0.));
#217 = ORIENTED_EDGE('',*,*,#218,.T.);
#218 = EDGE_CURVE('',#211,#188,#219,.T.);
#219 = LINE('',#220,#221);
#220 = CARTESIAN_POINT('',(4.995998398719,-1.25,4.5));
#221 = VECTOR('',#222,1.);
#222 = DIRECTION('',(0.,0.,1.));
#223 = ORIENTED_EDGE('',*,*,#187,.T.);
#224 = ORIENTED_EDGE('',*,*,#139,.F.);
#225 = PLANE('',#226);
#226 = AXIS2_PLACEMENT_3D('',#227,#228,#229);
#227 = CARTESIAN_POINT('',(4.5,-1.25,5.1));
#228 = DIRECTION('',(-0.,1.,0.));
#229 = DIRECTION('',(0.,0.,1.));
#230 = ADVANCED_FACE('',(#231),#260,.T.);
#231 = FACE_BOUND('',#232,.T.);
#232 = EDGE_LOOP('',(#233,#241,#250,#257,#258,#259));
#233 = ORIENTED_EDGE('',*,*,#234,.F.);
#234 = EDGE_CURVE('',#235,#106,#237,.T.);
#235 = VERTEX_POINT('',#236);
#236 = CARTESIAN_POINT('',(4.995998398719,1.25,5.1));
#237 = LINE('',#238,#239);
#238 = CARTESIAN_POINT('',(4.5,1.25,5.1));
#239 = VECTOR('',#240,1.);
#240 = DIRECTION('',(1.,0.,-0.));
#241 = ORIENTED_EDGE('',*,*,#242,.F.);
#242 = EDGE_CURVE('',#243,#235,#245,.T.);
#243 = VERTEX_POINT('',#244);
#244 = CARTESIAN_POINT('',(5.15,-1.261386203122E-15,5.1));
#245 = CIRCLE('',#246,5.15);
#246 = AXIS2_PLACEMENT_3D('',#247,#248,#249);
#247 = CARTESIAN_POINT('',(0.,0.,5.1));
#248 = DIRECTION('',(0.,0.,1.));
#249 = DIRECTION('',(1.,0.,-0.));
#250 = ORIENTED_EDGE('',*,*,#251,.F.);
#251 = EDGE_CURVE('',#211,#243,#252,.T.);
#252 = CIRCLE('',#253,5.15);
#253 = AXIS2_PLACEMENT_3D('',#254,#255,#256);
#254 = CARTESIAN_POINT('',(0.,0.,5.1));
#255 = DIRECTION('',(0.,0.,1.));
#256 = DIRECTION('',(1.,0.,-0.));
#257 = ORIENTED_EDGE('',*,*,#210,.T.);
#258 = ORIENTED_EDGE('',*,*,#130,.T.);
#259 = ORIENTED_EDGE('',*,*,#113,.T.);
#260 = PLANE('',#261);
#261 = AXIS2_PLACEMENT_3D('',#262,#263,#264);
#262 = CARTESIAN_POINT('',(4.5,-1.25,5.1));
#263 = DIRECTION('',(0.,0.,1.));
#264 = DIRECTION('',(1.,0.,-0.));
#265 = ADVANCED_FACE('',(#266),#277,.F.);
#266 = FACE_BOUND('',#267,.F.);
#267 = EDGE_LOOP('',(#268,#269,#275,#276));
#268 = ORIENTED_EDGE('',*,*,#234,.F.);
#269 = ORIENTED_EDGE('',*,*,#270,.T.);
#270 = EDGE_CURVE('',#235,#179,#271,.T.);
#271 = LINE('',#272,#273);
#272 = CARTESIAN_POINT('',(4.995998398719,1.25,4.5));
#273 = VECTOR('',#274,1.);
#274 = DIRECTION('',(0.,0.,1.));
#275 = ORIENTED_EDGE('',*,*,#178,.T.);
#276 = ORIENTED_EDGE('',*,*,#105,.F.);
#277 = PLANE('',#278);
#278 = AXIS2_PLACEMENT_3D('',#279,#280,#281);
#279 = CARTESIAN_POINT('',(4.5,1.25,5.1));
#280 = DIRECTION('',(-0.,1.,0.));
#281 = DIRECTION('',(0.,0.,1.));
#282 = ADVANCED_FACE('',(#283,#294),#297,.T.);
#283 = FACE_BOUND('',#284,.T.);
#284 = EDGE_LOOP('',(#285));
#285 = ORIENTED_EDGE('',*,*,#286,.T.);
#286 = EDGE_CURVE('',#287,#287,#289,.T.);
#287 = VERTEX_POINT('',#288);
#288 = CARTESIAN_POINT('',(3.6,-8.817456953861E-16,1.9));
#289 = CIRCLE('',#290,3.6);
#290 = AXIS2_PLACEMENT_3D('',#291,#292,#293);
#291 = CARTESIAN_POINT('',(0.,0.,1.9));
#292 = DIRECTION('',(0.,0.,1.));
#293 = DIRECTION('',(1.,0.,-0.));
#294 = FACE_BOUND('',#295,.T.);
#295 = EDGE_LOOP('',(#296));
#296 = ORIENTED_EDGE('',*,*,#153,.F.);
#297 = PLANE('',#298);
#298 = AXIS2_PLACEMENT_3D('',#299,#300,#301);
#299 = CARTESIAN_POINT('',(0.,0.,1.9));
#300 = DIRECTION('',(0.,0.,1.));
#301 = DIRECTION('',(1.,0.,-0.));
#302 = ADVANCED_FACE('',(#303),#326,.F.);
#303 = FACE_BOUND('',#304,.F.);
#304 = EDGE_LOOP('',(#305,#306,#307,#308,#316,#323,#324,#325));
#305 = ORIENTED_EDGE('',*,*,#195,.F.);
#306 = ORIENTED_EDGE('',*,*,#270,.F.);
#307 = ORIENTED_EDGE('',*,*,#242,.F.);
#308 = ORIENTED_EDGE('',*,*,#309,.F.);
#309 = EDGE_CURVE('',#310,#243,#312,.T.);
#310 = VERTEX_POINT('',#311);
#311 = CARTESIAN_POINT('',(5.15,-1.261386203122E-15,4.5));
#312 = LINE('',#313,#314);
#313 = CARTESIAN_POINT('',(5.15,-1.261386203122E-15,4.5));
#314 = VECTOR('',#315,1.);
#315 = DIRECTION('',(0.,0.,1.));
#316 = ORIENTED_EDGE('',*,*,#317,.T.);
#317 = EDGE_CURVE('',#310,#310,#318,.T.);
#318 = CIRCLE('',#319,5.15);
#319 = AXIS2_PLACEMENT_3D('',#320,#321,#322);
#320 = CARTESIAN_POINT('',(0.,0.,4.5));
#321 = DIRECTION('',(0.,0.,1.));
#322 = DIRECTION('',(1.,0.,-0.));
#323 = ORIENTED_EDGE('',*,*,#309,.T.);
#324 = ORIENTED_EDGE('',*,*,#251,.F.);
#325 = ORIENTED_EDGE('',*,*,#218,.T.);
#326 = CYLINDRICAL_SURFACE('',#327,5.15);
#327 = AXIS2_PLACEMENT_3D('',#328,#329,#330);
#328 = CARTESIAN_POINT('',(0.,0.,4.5));
#329 = DIRECTION('',(0.,0.,1.));
#330 = DIRECTION('',(1.,0.,-0.));
#331 = ADVANCED_FACE('',(#332),#351,.F.);
#332 = FACE_BOUND('',#333,.F.);
#333 = EDGE_LOOP('',(#334,#343,#349,#350));
#334 = ORIENTED_EDGE('',*,*,#335,.F.);
#335 = EDGE_CURVE('',#336,#336,#338,.T.);
#336 = VERTEX_POINT('',#337);
#337 = CARTESIAN_POINT('',(3.6,-8.817456953861E-16,4.5));
#338 = CIRCLE('',#339,3.6);
#339 = AXIS2_PLACEMENT_3D('',#340,#341,#342);
#340 = CARTESIAN_POINT('',(0.,0.,4.5));
#341 = DIRECTION('',(0.,0.,1.));
#342 = DIRECTION('',(1.,0.,-0.));
#343 = ORIENTED_EDGE('',*,*,#344,.F.);
#344 = EDGE_CURVE('',#287,#336,#345,.T.);
#345 = LINE('',#346,#347);
#346 = CARTESIAN_POINT('',(3.6,-8.817456953861E-16,1.9));
#347 = VECTOR('',#348,1.);
#348 = DIRECTION('',(0.,0.,1.));
#349 = ORIENTED_EDGE('',*,*,#286,.T.);
#350 = ORIENTED_EDGE('',*,*,#344,.T.);
#351 = CYLINDRICAL_SURFACE('',#352,3.6);
#352 = AXIS2_PLACEMENT_3D('',#353,#354,#355);
#353 = CARTESIAN_POINT('',(0.,0.,1.9));
#354 = DIRECTION('',(0.,0.,1.));
#355 = DIRECTION('',(1.,0.,-0.));
#356 = ADVANCED_FACE('',(#357,#360),#363,.T.);
#357 = FACE_BOUND('',#358,.T.);
#358 = EDGE_LOOP('',(#359));
#359 = ORIENTED_EDGE('',*,*,#317,.T.);
#360 = FACE_BOUND('',#361,.T.);
#361 = EDGE_LOOP('',(#362));
#362 = ORIENTED_EDGE('',*,*,#335,.F.);
#363 = PLANE('',#364);
#364 = AXIS2_PLACEMENT_3D('',#365,#366,#367);
#365 = CARTESIAN_POINT('',(0.,0.,4.5));
#366 = DIRECTION('',(0.,0.,1.));
#367 = DIRECTION('',(1.,0.,-0.));
#368 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3)
GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#372)) GLOBAL_UNIT_ASSIGNED_CONTEXT
((#369,#370,#371)) REPRESENTATION_CONTEXT('Context #1',
'3D Context with UNIT and UNCERTAINTY') );
#369 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) );
#370 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) );
#371 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() );
#372 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#369,
'distance_accuracy_value','confusion accuracy');
#373 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7));
ENDSEC;
END-ISO-10303-21;

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

View File

@@ -0,0 +1,14 @@
# 一体式 4×4 双厚度垫片
打印 `一体式4x4双厚垫片.stl` **1 份**,单位毫米,保持原比例。它是单个连续实体,没有连接杆;整体外包络 48 × 48 mm。
- 低台阶一半厚 **0.5 mm**,分为 8 片;高台阶一半厚 **1 mm**,分为 8 片。
- 按图中的虚线分别在距左边及下边 12、24、36 mm 处裁开,每片名义外形为 12 × 12 mm。虚线只是示意,实际 STL 没有割槽、刻线或厚度标记。
- 每片中心孔为 Ø4.4 mm,保留原设计的 90°扇形开口;单元边缘切开后,开口才能通向外侧。开口的朝向需要按每个安装位置旋转、镜像调整,使缺口对准立柱开口和相邻角码。
- 裁切前先以台阶分清厚度,裁出后分别标记、装袋。裁切和修边时不要损伤孔口、缺口及厚度基准面,且应计入刀口宽度;切割后的外形不能保证仍为精确 12 × 12 mm。先用一片试裁、试装。
模型按 16 个理想单元切分后,每片在原 Ø12 mm 圆垫片范围内与对应原始垫片形状一致,薄厚交界处切出的薄片没有多余的厚台阶。方形垫片在原模型的四个安装方向下均未与模拟角码相交;最小间隙仍小于 1 mm,实际孔相位、角码和打印误差需试装核对。
请打印商评估厚 0.5 mm 和 1 mm 的薄板能否成形、平整并保持精度。虽然本模型为一块连续板,最终是否按拼接件分类及能否下单由打印商决定;此结构不能保证通过平台检查。尚未进行实物打印、裁切或装配验证。
`一体式4x4双厚垫片.FCStd` 保留薄、厚板及各开孔的特征树,`Parameters` 中厚度可修改并重算;开孔和单元间距的数值按原设计建立,修改布局需检查全部特征。STEP 和 STL 与当前模型一致。构建脚本为 `scripts/build_washer_panel_4x4.py`。

View File

@@ -0,0 +1,11 @@
# 打印交付清单:一体垫片版
每个 STL 打印 1 份,单位毫米,不缩放。
- 编码器支架_单件.stl:PCD50 编码器支架,1 件。
- 磁铁座_单件.stl:直径 10 mm、厚 3 mm 磁铁用的磁铁座,1 件。
- 一体式4x4双厚垫片.stl:连续板 1 件,理想裁切后可得 0.5 mm 和 1 mm 垫片各 8 片。无连接杆。详见打印和裁切说明及一体板裁切示意图。
垫片板虚线仅在示意图中,STL 无割线,打印后按照示意图人工裁切。裁切有刀口损耗,不得损伤中心孔、缺口及厚度基准面。薄板能否成型、平整及由商家如何分类,须由打印商确认,不能承诺符合活动或拼件规则。
当前风扇固定方案无需打印风扇支架;转向灯回正轴套仍是示意,尚未定稿,未包含在本包。全部文件尚未实物试印和装配。

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

View File

@@ -0,0 +1,14 @@
# 双板垫片:打印与裁切
两块板分别提交,各打印一份,单位 mm,保持原比例:
- 一体垫片板_0.5mm.stl:48 × 24 × 0.5 mm,裁切后 8 个 0.5 mm 垫片。
- 一体垫片板_1mm.stl:48 × 24 × 1 mm,裁切后 8 个 1 mm 垫片。
每块板均为连续单体,无连接杆。每片按 12 × 12 mm 格子布置,保留原设计的 Ø4.4 mm 螺丝孔及 90° 缺口,裁切后缺口通向外侧。裁切参考:沿长边从端点量 12、24、36 mm 切三刀,沿短边从端点量 12 mm 切一刀;虚线仅在示意图中,STL 没有预制割线。裁切可能产生刀缝及误差,不得损伤孔口和厚度基准面;建议先裁一片试装。
每种厚度各有 8 片,分别标记分袋。编码器四个支点始终采用相同总厚度。按照原模型各片安装角度调整开口朝向后与角码无实体干涉,但模型与实际零件仍可能不同。
尚未实物打印、切割、安装;0.5 mm 薄板的成型、厚度和翘曲由打印商确认。每个文件是单一连续实体,订单分类与能否下单以打印商审核为准。
两个可编辑 FCStd 和 STEP 为对应单板;分别重开验证,每块均为一实体。STL 为闭合单连通网格;按理想格线切出的各片与旧双厚板对应片的几何双向差均为零。

View File

@@ -0,0 +1,12 @@
# 打印交付清单:双板垫片版
每个 STL 各打印 1 份,单位毫米,不缩放。
- 编码器支架_单件.stl:PCD50 编码器支架 1 件。
- 磁铁座_单件.stl:直径 10 mm、厚 3 mm 磁铁用的磁铁座 1 件。
- 一体垫片板_0.5mm.stl:连续板 1 件,裁切后有 8 片 0.5 mm 垫片。
- 一体垫片板_1mm.stl:连续板 1 件,裁切后有 8 片 1 mm 垫片。
两块垫片板均为连续单体,没有连接杆。虚线仅在示意图中,STL 没有预制割线;打印后按示意图人工裁切。注意刀口损耗,不得损伤孔、缺口和厚度基准面。请打印商确认 0.5 mm 薄板能否成型和平整,以及订单分类;不能承诺符合其活动或拼件规则。
当前风扇固定方案无需打印风扇支架;转向灯回正轴套仍是示意,尚未定稿,未包含在本包。全部文件尚未实物试印和装配。

View File

@@ -0,0 +1,18 @@
# 3D 打印交付清单(当前方案)
请分别提交 STL,单位 mm,按原尺寸打印,每个文件各打印 1 份:
1. 编码器支架_单件.stl:电机 PCD50 编码器支架 1 件,四个半开放立柱。
2. 磁铁座_单件.stl:适用于直径 10 mm、厚 3 mm 磁铁的初版座 1 件。
3. 4x4_混合垫片.stl:0.5 mm 厚垫片 8 片、1 mm 厚垫片 8 片,合计 16 片;相邻垫片用 2 × 2 mm 截面的连接杆相连,杆外缘间名义跨度 2 mm。
4. 120mm风扇支架_V2.stl:120 mm 风扇支架,单体 1 件,风扇安装面朝下、支脚朝上。查看切片并确认支撑及深孔清理;具体说明见风扇支架_打印及装配说明.md。
垫片分组见拼件预览:上两行为 0.5 mm,下两行为 1 mm;颜色仅用于区分,不要求双色。分离之前标记并分袋,剪断杆后修平边缘,不得损伤开口、孔或基准面。请勿缩放或自行加厚薄片。
商家提供的拼件规则要求单文件连接数量少于 10 件,本垫片拼件为 16 件,超过该规则;提交前请打印商确认是否接单。连接杆截面为 2 × 2 mm,但其与薄片的接合厚度仅为 0.5 mm 或 1 mm,商家需核对成型与拆除可行性。拼接件按商家规则不支持工程塑料和金属。
文件尚未实物打印及试装,打印工艺、尺寸误差、孔配合和磁铁间隙需要验证。编码器位置需在 PCB 固定后微调,四个支架脚下使用相同厚度垫片。
120 mm 风扇支架已换成 V2 试装版;其 2020 轨道夹角位置、线缆、风扇电机凸起、安装工具、实际间隙和强度需实物检查,旧版不适用于当前装配。转向灯回正轴套目前只有示意并非打印定稿,因此本包不包含轴套。

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

View File

@@ -0,0 +1,23 @@
# 120 mm 风扇支架 V2(试装)
本文件适配 `models/integer_profiles/Assembly.FCStd` 的示意布局:风扇支架直接固定两根电机 2020 型材,每根型材上各有两个固定点。需要打印 `Fan120Mount.stl` 1 件;这是完整的单体支架。FCStd 与 STEP 保存同一支架形状,源构建文件是 `scripts/build_fan120_integer_v2.FCMacro`。
## 相比 V1 的调整
- 原 V1 在当前装配中与两根底部 3030 纵梁及电机底座角码相交,不要把 V1 作为该装配的送印文件。
- V2 的风扇接触面距 2020 型材上表面 26 mm,原支架为 14 mm;型材固定脚沿型材长度方向改为相距 50 mm,避开电机底座角码。支脚螺钉孔是横向长槽,方便调整两型材间距。
- 根据简化装配模型,风扇框和支架与当前可见模型没有正体积相交;支架脚与两根 2020 面接触。支架脚与邻近电机角码的名义间隙只有约 1 mm,风扇框底与纵梁端的名义间隙约 2 mm,实际公差可能改变。
## 打印
- 1 个 STL,单位 mm,不缩放。STL 已放在风扇安装面朝下的打印方向,支脚朝上。
- 支架按 FDM 工艺试装;材料、层高、支撑、边缘和实际公差由打印店根据设备及温度环境确认。不要将拼接垫片的材料限制套用到这个单件。支脚有深孔和局部悬空,请打印商先看切片并确定支撑和孔清理方式。
- 首次打印和装配前核对风扇为 120 × 120 mm、四安装孔中心距 105 × 105 mm,以及 2020 型材的槽型、中心距及平整度。
## 五金
- 4 颗 M5 螺丝及与实际 2020 槽相配的 M5 滑块,用于连接支架和型材。V2 支脚加高,V1 使用的 M5 × 14 不再适用;可从 M5 × 25 试配,按螺钉头、滑块深度、实际有效啮合与槽底间隙复核,避免顶底。头部需进入约 9.8 mm 宽的沉孔。
- 4 颗 M4 螺丝和 4 个 M4 螺母固定风扇。25 mm 厚机箱风扇可从 M4 × 35 试配,实际长度取决于风扇安装孔、垫圈、螺母及防护网。
- 先安装支架并紧固 4 颗型材螺丝,再安装风扇。出风方向朝向电机后部。检查风扇和支架没有接触编码器、线束和旋转件,确认螺母和工具有操作空间。
当前检查采用模型中 120 × 120 × 25 mm 的简化风扇外框;风扇电机凸台、叶片、网罩、接线、真实槽和螺栓均没有完整建模。修改只是提高支架并移动支脚,尚无实物试印、装配或温升测试。轴向增加 12 mm 后风道、风扇与编码器的实际空间及磁场影响需装机检查。

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

View File

@@ -0,0 +1,12 @@
# 一体式 4×2 双厚度垫片(试装版)
打印 `一体式4x2双厚垫片.stl` 1 份,单位毫米,不缩放。板为一个连续实体,没有连接杆,整体 48 × 24 mm;两种厚度各一排,每排 4 片。
- 薄区 0.5 mm:4 片;厚区 1 mm:4 片。四个支点应使用相同总厚度:不垫、0.5 mm、1 mm、或 1.5 mm。每套厚度仅够四个支点一轮使用,没有备用片。
- 四个支点各垫一片 1 mm 时,总体仅升高 1 mm,不是 4 mm;每处增加垫片时要检查螺丝进牙,若接近或碰触停止,不能通电运行。
- 裁切按示意虚线,横向一刀、纵向三刀,目标方格 12 × 12 mm。STL 无预制划线。分离前先标识薄厚,切开后分别装袋。刀缝可能使最终尺寸略小,禁止损伤缺口、厚度基准面。先试裁一片。
- 与原方案一样,孔为 Ø4.4 mm、90° 开口,分开后按立柱开口和角码方向旋转/翻面。四支点与相邻角码几何检查是基于先前 12×12 方案,实物尺寸、装配误差与切割需试装。
- 0.5 mm 薄区很薄,成型平整度与厚度取决于工艺,打印商需确认可实现;更换材料、尺寸及翘曲可能影响效果。结构是单个整体,但打印商会自行决定是否承接及如何计费。
- 按前一编码器模型,初装 0.5 mm 时估算磁铁到芯片约 1 mm,1 mm 时估算约 1.5 mm;这些不是实测,因为 PCB 厚度和芯片突出量为假设。先断电手动转动,确认不碰擦,再检查传感器读数。
STL 单个封闭连通件,STEP 和 FCStd 重开为有效实体且形状一致;按理想零刀缝网格切分的 8 片,均与原 4×4 一体板对应垫片完全一致。 尚未完成实物打印、裁切和装配。

View File

@@ -0,0 +1,13 @@
# 打印交付清单:精简垫片版
每个 STL 打印 1 份,单位毫米,不缩放。
- 编码器支架_单件.stl:PCD50 编码器支架 1 件。
- 磁铁座_单件.stl:直径 10 mm、厚 3 mm 磁铁用的磁铁座 1 件。
- 一体式4x2双厚垫片.stl:连续板 1 件,理想裁切后可得 0.5 mm 和 1 mm 垫片各 4 片。无连接杆,具体参见裁切示意和说明。
垫片板虚线仅在示意图中,STL 无割线,打印后按照示意图人工裁切。裁切有刀口损耗,不得损伤中心孔、缺口及厚度基准面。请打印商确认薄板能否成型、平整,以及如何分类,不能承诺符合其活动或拼件规则。
四个支点必须采用相同厚度,首次试装的磁铁间隙来自模型假设,实物必须校验。0.5 mm 厚板成型精度及翘曲可能影响使用,由打印商确认。
当前风扇固定方案无需打印风扇支架;转向灯回正轴套仍是示意,尚未定稿,未包含在本包。全部文件尚未实物试印和装配。

View File

@@ -0,0 +1,17 @@
# 编码器支架、磁铁座与垫片:打印店交付清单
请分别上传以下三个 STL,每个文件打印 1 份,单位 mm,保持原尺寸,不要缩放。请先确认订单能否制作,再进行打印。
| 文件 | 内容 | 下单数量 |
| --- | --- | --- |
| `编码器支架_单件.stl` | 50 mm 孔圈编码器支架,四根半开放立柱,一体件 | 1 |
| `磁铁座_单件.stl` | 电机中心磁铁座,一体件,适配 Ø10 × 3 mm 磁铁的初版试装尺寸 | 1 |
| `4x4_混合垫片.stl` | 4×4 共 16 片:0.5 mm 厚和 1.0 mm 厚各 8 片,相邻片连接成一体 | 1 组 |
垫片参考 `拼件预览.png`:上两行 0.5 mm,下两行 1.0 mm;不同颜色仅用于区分厚度,不要求双色。打印后请在分离之前将两组分别标记,剪断连接杆并修平边缘后分袋。切片软件可能旋转摆放,请根据模型与切片高度核对分组。
连接杆截面为 2 × 2 mm,沿中心线的名义裸露跨度约 2 mm。为了连接,每端嵌入垫片外缘约 0.8 mm,杆总长约 3.6 mm。垫片本体厚度和中心孔、缺口保持原设计;薄片与杆的结合高度仍受 0.5 mm 或 1 mm 垫片本体限制。请确认所选工艺能否可靠成型、拆分,以及薄片厚度和平整度能否满足要求,不要擅自加厚、缩放或修改孔位。
**商家规则确认:**本垫片拼件有 16 片,超过此前提供的“单个拼件少于 10 件”规则,请先确认是否允许下单。拼接件不支持工程塑料和金属,具体可用材料与工艺请由打印商确认。连接杆及其与薄片的接头也请商家审核。
支架的立柱、M4 孔和 PCB 安装孔,以及磁铁座的 M3 通孔、螺丝头凹腔和磁铁槽均为功能结构,请保留。此包尚未针对指定设备切片、实物打印或试装;电机孔位及实际配合尺寸仍需验证。

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

BIN
images/esp32s3n16r8.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

BIN
images/mks_参数.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 501 KiB

BIN
images/mt6826s.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 409 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 MiB

BIN
images/电机/侧面.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 304 KiB

BIN
images/电机/正面.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 702 KiB

BIN
images/电机/背面.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 704 KiB

BIN
images/电机法兰.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

BIN
images/直角角码.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 268 KiB

BIN
images/角度调节器.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 KiB

BIN
images/长孔角码.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1 @@
OK

View File

@@ -0,0 +1,52 @@
{
"fcstd_valid": true,
"step_valid": true,
"fcstd_solids": 1,
"step_solids": 1,
"step_volume": 22612.0704924005,
"bore_count": 24,
"bore_diameter_mm": 3.3,
"bore_full_depth_mm": 8,
"expected_locations_matched": true,
"counterbores_removed": true,
"source_outline_sections": [
{
"z": 0.2,
"source_minus_new_area": 0.0,
"new_minus_source_area": 0.0
},
{
"z": 1,
"source_minus_new_area": 0.0,
"new_minus_source_area": 0.0
},
{
"z": 2,
"source_minus_new_area": 0.0,
"new_minus_source_area": 0.0
},
{
"z": 4,
"source_minus_new_area": 0.0,
"new_minus_source_area": 0.0
},
{
"z": 6,
"source_minus_new_area": 0.0,
"new_minus_source_area": 0.0
},
{
"z": 7,
"source_minus_new_area": 0.0,
"new_minus_source_area": 0.0
},
{
"z": 7.8,
"source_minus_new_area": 0.0,
"new_minus_source_area": 0.0
}
],
"source_reference_hidden": true,
"parameter_angle_test_movement_mm": 0.36651449093170674,
"parameter_angle_test_saved": false
}

View File

@@ -0,0 +1 @@
OK

View File

@@ -0,0 +1,10 @@
# 70 转接盘:M4 底孔、取消沉头
本版用于嘉立创 CNC 报价识别测试,独立于原盘、真实螺旋牙型版和保留沉头的底孔版。
- PCD 42、48、50.8、70 四圈各六孔,共 24 孔,均改为 Ø3.3 mm、深 8 mm 的圆柱通孔,预期加工为 M4 × 0.7 右旋通牙;STEP 中是光底孔,不包含实体牙型或螺纹语义标注。
- 原 PCD42 六孔的 Ø6.8 mm 沉头已去掉,两个表面均为普通圆孔。轴心孔 Ø32.5 mm、板厚 8 mm、各组孔位及相位、外轮廓和外缘倒角保持原设计。
- `70_M4_drill_plain.FCStd` 是参数化模型,可通过 `Parameters` 调整四组 PCD、相位、孔径、厚度和原轮廓缩放;原始 STEP 作为隐藏参考保留。
- `70_M4_drill_plain.step` 是单零件的报价测试文件。嘉立创能否自动识别及最终显示的孔数、螺纹规格仍需在系统中检查,切勿把识别推测视为已完成。提交前请确认 24 孔均选择 M4 × 0.7 通牙,而非普通光孔。
- 同目录 `validation.json`:重新读取 STEP 验证 24 处 Ø3.3 圆柱、各 8 mm 贯穿,孔心符合原四组孔位;新旧未钻孔外形在 7 个高度的截面一致;重开 FCStd 及修改后不保存的参数测试通过。
- 重建脚本:`scripts/rebuild_70_m4_drill_plain.FCMacro`,实现由 `scripts/build_70_m4_drill_plain.py` 对原始参数建模脚本进行受控修改。

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1 @@
OK

View File

@@ -0,0 +1,185 @@
{
"fcstd_valid": true,
"fcstd_solids": 1,
"step_valid": true,
"step_solids": 1,
"step_volume": 22483.147383878608,
"pilot_diameter_mm": 3.3,
"number_pilot_cylinders": 24,
"positions_and_extents": [
{
"x": -0.0,
"y": -35.0,
"z_min": 0.0,
"z_max": 8.0,
"r": 1.65
},
{
"x": -12.0,
"y": -20.78461,
"z_min": 0.0,
"z_max": 8.0,
"r": 1.65
},
{
"x": -0.0,
"y": -25.4,
"z_min": 0.0,
"z_max": 8.0,
"r": 1.65
},
{
"x": -30.310889,
"y": -17.5,
"z_min": 0.0,
"z_max": 8.0,
"r": 1.65
},
{
"x": -21.997045,
"y": -12.7,
"z_min": 0.0,
"z_max": 8.0,
"r": 1.65
},
{
"x": 12.0,
"y": -20.78461,
"z_min": 0.0,
"z_max": 8.0,
"r": 1.65
},
{
"x": 21.997045,
"y": -12.7,
"z_min": 0.0,
"z_max": 8.0,
"r": 1.65
},
{
"x": 30.310889,
"y": -17.5,
"z_min": 0.0,
"z_max": 8.0,
"r": 1.65
},
{
"x": -24.0,
"y": 0.0,
"z_min": 0.0,
"z_max": 8.0,
"r": 1.65
},
{
"x": -30.310889,
"y": 17.5,
"z_min": 0.0,
"z_max": 8.0,
"r": 1.65
},
{
"x": -21.997045,
"y": 12.7,
"z_min": 0.0,
"z_max": 8.0,
"r": 1.65
},
{
"x": -12.0,
"y": 20.78461,
"z_min": 0.0,
"z_max": 8.0,
"r": 1.65
},
{
"x": 24.0,
"y": 0.0,
"z_min": 0.0,
"z_max": 8.0,
"r": 1.65
},
{
"x": 21.997045,
"y": 12.7,
"z_min": 0.0,
"z_max": 8.0,
"r": 1.65
},
{
"x": 30.310889,
"y": 17.5,
"z_min": 0.0,
"z_max": 8.0,
"r": 1.65
},
{
"x": 0.0,
"y": 25.4,
"z_min": 0.0,
"z_max": 8.0,
"r": 1.65
},
{
"x": 12.0,
"y": 20.78461,
"z_min": 0.0,
"z_max": 8.0,
"r": 1.65
},
{
"x": 0.0,
"y": 35.0,
"z_min": 0.0,
"z_max": 8.0,
"r": 1.65
},
{
"x": -14.849242,
"y": -14.849242,
"z_min": 1.75,
"z_max": 8.0,
"r": 1.65
},
{
"x": 5.4352,
"y": -20.284442,
"z_min": 1.75,
"z_max": 8.0,
"r": 1.65
},
{
"x": 20.284442,
"y": -5.4352,
"z_min": 1.75,
"z_max": 8.0,
"r": 1.65
},
{
"x": -20.284442,
"y": 5.4352,
"z_min": 1.75,
"z_max": 8.0,
"r": 1.65
},
{
"x": -5.4352,
"y": 20.284442,
"z_min": 1.75,
"z_max": 8.0,
"r": 1.65
},
{
"x": 14.849242,
"y": 14.849242,
"z_min": 1.75,
"z_max": 8.0,
"r": 1.65
}
],
"countersink_diameter_mm": 6.8,
"countersink_angle_deg": 90,
"countersink_depth_mm": 1.75,
"pcd42_straight_segment_mm": 6.25,
"other_straight_segment_mm": 8.0,
"interpretation": "These are smooth pilot holes, not semantic or geometric threads. Automatic quotation recognition untested."
}

View File

@@ -0,0 +1,9 @@
# 70 转接盘 M4 底孔报价测试版
本文件供嘉立创 CNC 系统识别测试,四圈 PCD42、48、50.8、70 的各 6 个孔改为 **Ø3.3 mm 圆柱通孔**,其余外形、孔位、板厚 8 mm、中心孔继承原参数化模型。PCD42 六孔背面的 Ø6.8 mm、90° 沉头保留,深度调整为 1.75 mm,与 Ø3.3 孔壁相接。
这些孔是**光滑的攻牙底孔**,STEP 没有螺纹实体或螺纹语义标注;设计意图是在这 24 孔加工 M4×0.7 通螺纹,但是否能被报价系统自动识别为螺纹尚未验证。上传后请逐孔检查识别规格与数量,并向加工方明确螺纹要求。
沉头占用高度后,PCD42 孔的 Ø3.3 圆柱段只有 6.25 mm;其余 18 孔圆柱段为 8 mm。是否满足系统识别要求请以上传结果为准,不得声称所有孔均可自动识别。
`validation.json` 包含重新打开模型和 STEP 后的实体有效性检查、24 处 Ø3.3 圆柱及其坐标和轴向范围。此版本未覆盖原模型和实体螺纹版。可用 `scripts/build_70_m4_drill.FCMacro` 重新生成。

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1 @@
OK

View File

@@ -0,0 +1,44 @@
[
{
"z": 0.2,
"symmetric_difference_area": 0.0,
"source_area": 3687.9966638362816,
"new_area": 3687.9966638362707
},
{
"z": 1.0,
"symmetric_difference_area": 0.0,
"source_area": 3893.523160625497,
"new_area": 3893.523160625502
},
{
"z": 2.0,
"symmetric_difference_area": 0.0,
"source_area": 3893.5231606254993,
"new_area": 3893.523160625501
},
{
"z": 4.0,
"symmetric_difference_area": 0.0,
"source_area": 3893.5231606254993,
"new_area": 3893.523160625501
},
{
"z": 6.0,
"symmetric_difference_area": 0.0,
"source_area": 3893.5231606254993,
"new_area": 3893.523160625501
},
{
"z": 7.0,
"symmetric_difference_area": 0.0,
"source_area": 3893.523160625498,
"new_area": 3893.523160625502
},
{
"z": 7.8,
"symmetric_difference_area": 0.0,
"source_area": 3687.9966638362807,
"new_area": 3687.996663836271
}
]

View File

@@ -0,0 +1,17 @@
{
"before": [
14.849242404917499,
14.849242404917499
],
"after": [
14.587825779638942,
15.106135807111675
],
"delta_mm": 0.36651449093170674,
"thread_valid": true,
"final_valid": true,
"final_state": [
"Up-to-date"
],
"changes_saved": false
}

View File

@@ -0,0 +1,11 @@
{
"reference": [
{
"name": "Part__Feature",
"label": "Original STEP - reference (hidden)",
"visible": false,
"valid": true
}
],
"outer_holes_min_distance_to_outline_at_z4_nominal_m4": 3.0
}

View File

@@ -0,0 +1,67 @@
{
"fcstd_valid": true,
"fcstd_solids": 1,
"fcstd_volume": 22164.462418185798,
"fcstd_faces": 1285,
"step_valid": true,
"step_solids": 1,
"step_volume": 22164.465148707764,
"step_faces": 1285,
"step_surface_types": {
"Cylinder": 299,
"Plane": 56,
"Cone": 72,
"BSplineSurface": 858
},
"thread_feature": {
"size": "M4x0.7",
"thread_type": "ISOMetricProfile",
"threaded": true,
"model_thread": true,
"depth_type": "ThroughAll",
"minor_diameter": 3.3219999999999996,
"thread_diameter": 4.0
},
"circles": 24,
"circle_radii": [
21.0,
21.0,
21.0,
21.0,
21.0,
21.0,
24.0,
24.0,
24.0,
24.0,
24.0,
24.0,
25.4,
25.4,
25.4,
25.4,
25.4,
25.4,
35.0,
35.0,
35.0,
35.0,
35.0,
35.0
],
"countersink_diameter": "6.8 mm",
"countersink_depth": "1.7389999999999999 mm",
"plate_thickness": "8.0 mm",
"pcd_values": [
"42.0 mm",
"48.0 mm",
"50.8 mm",
"70.0 mm"
],
"holes_profile_state": [
"Up-to-date"
],
"final_state": [
"Up-to-date"
]
}

View File

@@ -0,0 +1,19 @@
# 70 转接板 M4 螺纹版本
本目录是新加工打样版本,不覆盖原始 `70转接板.step` 与 `70转接板_参数化.FCStd`。外轮廓、孔位及原板厚继承原参数化重建模型;原 STEP 仍隐藏保留在 FCStd 内供对照。
- 四圈螺丝孔均为 M4×0.7 右旋通螺纹:PCD 42、48、50.8、70,各 6 孔,共 24 孔;各圈原相位不变。中心 Ø32.5 mm 保持光孔。
- 原生 `PartDesign::Hole` 的 `Threaded` 和 `ModelThread` 已启用,FCStd 内的 `ThreadHoles` 控制四圈螺纹规格,STEP 中也包含真实螺旋曲面。`Parameters` 表格继续控制厚度、四圈 PCD、起始角、原轮廓整体缩放与倒角。
- 原 PCD42 六孔的底面沉头保留入口 Ø6.8 mm 和 90°夹角;为了与 M4 模型螺纹底径 Ø3.322 mm 连续衔接,沉头深度从原模型约 1.283 mm 增至约 1.739 mm。`Parameters.HoleDiameter` 只作为沉头锥底的几何参考,不能用来调整螺纹规格;需要改变螺纹时应在 `ThreadHoles` 属性中修改,并同步检查沉头几何。
- 按名义几何,PCD42 沉头外缘与 Ø32.5 中心孔之间最窄净距约 1.35 mm,供与加工方核对,不构成结构强度结论。
- FCStd 与 STEP 重新打开后都为有效单实体,螺纹特征显示 `M4x0.7`、`Threaded=True`、`ModelThread=True`;导入 STEP 含螺旋所需的样条曲面。详见 `validation.json`。
- 实际 CNC 螺纹精度、通规、加工底孔及沉头结合由加工方确认。孔径和旋向应按标注加工,不应把 CAD 中的 Ø3.322 mm 当成必须使用的钻头尺寸。
更新脚本:`scripts/build_70_m4_threaded.py`,可用 `scripts/rebuild_70_m4_threaded.FCMacro` 重建本版本;最终文件对应单一生成版本。
## 附加核验
- `parameter_check.json`:临时把 PCD42 起始角从 45°改到 46°,孔中心随之移动,最终实体有效;更改未保存。
- `reference_check.json`:原始 STEP 参考仍隐藏且有效;板中部外圈孔以 M4 名义外径计算至外轮廓最小净距约 3 mm。
- `outline_check.json`:按原 STEP 与未开孔的外轮廓倒角特征在七个高度比较,外边界截面的对称差面积为 0;这项比较仅验证外轮廓,不代表零件强度。
- `70_M4_isometric.png` 与 `70_M4_thread_detail.png` 分别为等轴测和螺纹局部放大图。

5292
models/70转接板.step Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -0,0 +1,3 @@
Concept only. Assumed dimensions are not production measurements.
Sensor face to magnet gap: 1.0 mm.
No positive-volume intersections above 0.001 mm3 in simplified model.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

View File

@@ -0,0 +1,13 @@
# M9C12 与 MT6826S 后置安装示意
本总装用于讨论布局,不能直接作为加工或 3D 打印文件。原 `MAD_M9C12.FCStd` 未修改。
- 灰色:原有近似电机模型,后端以平面为基准。
- 橙色:随中心轴旋转的磁铁座;接触面直径按用户提供的 27 mm 表示。
- 银色:用户已有的直径 10 mm、厚 3 mm 磁铁,以及示意螺丝。用户已确认磁铁为径向充磁。M3 螺丝头厚度为 2.2 mm,其他紧固件尺寸及贯穿长度为假设。
- 绿色:直径 33 mm 的 MT6826S 圆形 PCB;板厚 1.6 mm 和芯片外形为占位。芯片朝向磁铁,芯片表面至磁铁表面间隙按 1 mm 示意。
- 蓝色:固定于 PCD 50 mm 孔圈的编码器支架;孔相位和支架尺寸待实测。M4×8 螺丝仅示意,孔有效深度未确认。
磁铁座厚度 7.5 mm、螺丝头直径、PCB 焊线空间和端部螺母位置均为示意,需按实物调整。示意中的磁铁压在 M3 螺丝头外侧,实际装配时须先锁紧螺丝再安装磁铁,且要解决日后可拆卸问题;螺丝和电机轴对磁场的影响须实测。现有电机模型的凸台、孔位相位等仍有原说明中的限制。厂家推荐厚度为 2.5 mm,现有 3 mm 厚磁铁是否适用需通过磁场和角度实测确定。
简化几何检查未发现超过 0.001 mm³ 的正体积重叠,不代表已完成运动、受力、螺纹、走线或实物装配验证。重建宏 `scripts/rebuild_encoder_concept.FCMacro` 会覆盖本示意总装和视图文件。

BIN
models/MAD_M9C12.FCStd Normal file

Binary file not shown.

762
models/MAD_M9C12.step Normal file
View File

@@ -0,0 +1,762 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('FreeCAD Model'),'2;1');
FILE_NAME('Open CASCADE Shape Model','2026-10-28T08:32:39',(''),(''),
'Open CASCADE STEP processor 7.8','FreeCAD','Unknown');
FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }'));
ENDSEC;
DATA;
#1 = APPLICATION_PROTOCOL_DEFINITION('international standard',
'automotive_design',2000,#2);
#2 = APPLICATION_CONTEXT(
'core data for automotive mechanical design processes');
#3 = SHAPE_DEFINITION_REPRESENTATION(#4,#10);
#4 = PRODUCT_DEFINITION_SHAPE('','',#5);
#5 = PRODUCT_DEFINITION('design','',#6,#9);
#6 = PRODUCT_DEFINITION_FORMATION('','',#7);
#7 = PRODUCT('MAD M9C12 - center through hole',
'MAD M9C12 - center through hole','',(#8));
#8 = PRODUCT_CONTEXT('',#2,'mechanical');
#9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design');
#10 = ADVANCED_BREP_SHAPE_REPRESENTATION('',(#11,#15),#737);
#11 = AXIS2_PLACEMENT_3D('',#12,#13,#14);
#12 = CARTESIAN_POINT('',(0.,0.,0.));
#13 = DIRECTION('',(0.,0.,1.));
#14 = DIRECTION('',(1.,0.,-0.));
#15 = MANIFOLD_SOLID_BREP('',#16);
#16 = CLOSED_SHELL('',(#17,#50,#158,#178,#203,#228,#253,#278,#303,#328,
#353,#378,#403,#428,#437,#446,#455,#464,#473,#482,#502,#511,#520,
#584,#601,#626,#651,#676,#701,#710,#719,#728));
#17 = ADVANCED_FACE('',(#18),#45,.T.);
#18 = FACE_BOUND('',#19,.F.);
#19 = EDGE_LOOP('',(#20,#30,#37,#38));
#20 = ORIENTED_EDGE('',*,*,#21,.T.);
#21 = EDGE_CURVE('',#22,#24,#26,.T.);
#22 = VERTEX_POINT('',#23);
#23 = CARTESIAN_POINT('',(60.,-1.469576158977E-14,0.));
#24 = VERTEX_POINT('',#25);
#25 = CARTESIAN_POINT('',(60.,-1.469576158977E-14,30.));
#26 = LINE('',#27,#28);
#27 = CARTESIAN_POINT('',(60.,-1.469576158977E-14,0.));
#28 = VECTOR('',#29,1.);
#29 = DIRECTION('',(0.,0.,1.));
#30 = ORIENTED_EDGE('',*,*,#31,.T.);
#31 = EDGE_CURVE('',#24,#24,#32,.T.);
#32 = CIRCLE('',#33,60.);
#33 = AXIS2_PLACEMENT_3D('',#34,#35,#36);
#34 = CARTESIAN_POINT('',(0.,0.,30.));
#35 = DIRECTION('',(0.,0.,1.));
#36 = DIRECTION('',(1.,0.,0.));
#37 = ORIENTED_EDGE('',*,*,#21,.F.);
#38 = ORIENTED_EDGE('',*,*,#39,.F.);
#39 = EDGE_CURVE('',#22,#22,#40,.T.);
#40 = CIRCLE('',#41,60.);
#41 = AXIS2_PLACEMENT_3D('',#42,#43,#44);
#42 = CARTESIAN_POINT('',(0.,0.,0.));
#43 = DIRECTION('',(0.,0.,1.));
#44 = DIRECTION('',(1.,0.,0.));
#45 = CYLINDRICAL_SURFACE('',#46,60.);
#46 = AXIS2_PLACEMENT_3D('',#47,#48,#49);
#47 = CARTESIAN_POINT('',(0.,0.,0.));
#48 = DIRECTION('',(-0.,-0.,-1.));
#49 = DIRECTION('',(1.,0.,0.));
#50 = ADVANCED_FACE('',(#51,#54,#65,#76,#87,#98,#109,#120,#131,#142),
#153,.F.);
#51 = FACE_BOUND('',#52,.F.);
#52 = EDGE_LOOP('',(#53));
#53 = ORIENTED_EDGE('',*,*,#39,.T.);
#54 = FACE_BOUND('',#55,.F.);
#55 = EDGE_LOOP('',(#56));
#56 = ORIENTED_EDGE('',*,*,#57,.F.);
#57 = EDGE_CURVE('',#58,#58,#60,.T.);
#58 = VERTEX_POINT('',#59);
#59 = CARTESIAN_POINT('',(-24.87005768508,-26.87005768508,0.));
#60 = CIRCLE('',#61,2.);
#61 = AXIS2_PLACEMENT_3D('',#62,#63,#64);
#62 = CARTESIAN_POINT('',(-26.87005768508,-26.87005768508,0.));
#63 = DIRECTION('',(0.,0.,1.));
#64 = DIRECTION('',(1.,0.,0.));
#65 = FACE_BOUND('',#66,.F.);
#66 = EDGE_LOOP('',(#67));
#67 = ORIENTED_EDGE('',*,*,#68,.F.);
#68 = EDGE_CURVE('',#69,#69,#71,.T.);
#69 = VERTEX_POINT('',#70);
#70 = CARTESIAN_POINT('',(-15.67766952966,-17.67766952966,0.));
#71 = CIRCLE('',#72,2.);
#72 = AXIS2_PLACEMENT_3D('',#73,#74,#75);
#73 = CARTESIAN_POINT('',(-17.67766952966,-17.67766952966,0.));
#74 = DIRECTION('',(0.,0.,1.));
#75 = DIRECTION('',(1.,0.,0.));
#76 = FACE_BOUND('',#77,.F.);
#77 = EDGE_LOOP('',(#78));
#78 = ORIENTED_EDGE('',*,*,#79,.F.);
#79 = EDGE_CURVE('',#80,#80,#82,.T.);
#80 = VERTEX_POINT('',#81);
#81 = CARTESIAN_POINT('',(28.870057685089,-26.87005768508,0.));
#82 = CIRCLE('',#83,2.);
#83 = AXIS2_PLACEMENT_3D('',#84,#85,#86);
#84 = CARTESIAN_POINT('',(26.870057685089,-26.87005768508,0.));
#85 = DIRECTION('',(0.,0.,1.));
#86 = DIRECTION('',(1.,0.,0.));
#87 = FACE_BOUND('',#88,.F.);
#88 = EDGE_LOOP('',(#89));
#89 = ORIENTED_EDGE('',*,*,#90,.F.);
#90 = EDGE_CURVE('',#91,#91,#93,.T.);
#91 = VERTEX_POINT('',#92);
#92 = CARTESIAN_POINT('',(19.677669529664,-17.67766952966,0.));
#93 = CIRCLE('',#94,2.);
#94 = AXIS2_PLACEMENT_3D('',#95,#96,#97);
#95 = CARTESIAN_POINT('',(17.677669529664,-17.67766952966,0.));
#96 = DIRECTION('',(0.,0.,1.));
#97 = DIRECTION('',(1.,0.,0.));
#98 = FACE_BOUND('',#99,.F.);
#99 = EDGE_LOOP('',(#100));
#100 = ORIENTED_EDGE('',*,*,#101,.F.);
#101 = EDGE_CURVE('',#102,#102,#104,.T.);
#102 = VERTEX_POINT('',#103);
#103 = CARTESIAN_POINT('',(-15.67766952966,17.677669529664,0.));
#104 = CIRCLE('',#105,2.);
#105 = AXIS2_PLACEMENT_3D('',#106,#107,#108);
#106 = CARTESIAN_POINT('',(-17.67766952966,17.677669529664,0.));
#107 = DIRECTION('',(0.,0.,1.));
#108 = DIRECTION('',(1.,0.,0.));
#109 = FACE_BOUND('',#110,.F.);
#110 = EDGE_LOOP('',(#111));
#111 = ORIENTED_EDGE('',*,*,#112,.F.);
#112 = EDGE_CURVE('',#113,#113,#115,.T.);
#113 = VERTEX_POINT('',#114);
#114 = CARTESIAN_POINT('',(-24.87005768508,26.870057685089,0.));
#115 = CIRCLE('',#116,2.);
#116 = AXIS2_PLACEMENT_3D('',#117,#118,#119);
#117 = CARTESIAN_POINT('',(-26.87005768508,26.870057685089,0.));
#118 = DIRECTION('',(0.,0.,1.));
#119 = DIRECTION('',(1.,0.,0.));
#120 = FACE_BOUND('',#121,.F.);
#121 = EDGE_LOOP('',(#122));
#122 = ORIENTED_EDGE('',*,*,#123,.F.);
#123 = EDGE_CURVE('',#124,#124,#126,.T.);
#124 = VERTEX_POINT('',#125);
#125 = CARTESIAN_POINT('',(1.5,-3.673940397442E-16,0.));
#126 = CIRCLE('',#127,1.5);
#127 = AXIS2_PLACEMENT_3D('',#128,#129,#130);
#128 = CARTESIAN_POINT('',(0.,0.,0.));
#129 = DIRECTION('',(0.,0.,1.));
#130 = DIRECTION('',(1.,0.,0.));
#131 = FACE_BOUND('',#132,.F.);
#132 = EDGE_LOOP('',(#133));
#133 = ORIENTED_EDGE('',*,*,#134,.F.);
#134 = EDGE_CURVE('',#135,#135,#137,.T.);
#135 = VERTEX_POINT('',#136);
#136 = CARTESIAN_POINT('',(19.677669529664,17.677669529664,0.));
#137 = CIRCLE('',#138,2.);
#138 = AXIS2_PLACEMENT_3D('',#139,#140,#141);
#139 = CARTESIAN_POINT('',(17.677669529664,17.677669529664,0.));
#140 = DIRECTION('',(0.,0.,1.));
#141 = DIRECTION('',(1.,0.,0.));
#142 = FACE_BOUND('',#143,.F.);
#143 = EDGE_LOOP('',(#144));
#144 = ORIENTED_EDGE('',*,*,#145,.F.);
#145 = EDGE_CURVE('',#146,#146,#148,.T.);
#146 = VERTEX_POINT('',#147);
#147 = CARTESIAN_POINT('',(28.870057685089,26.870057685089,0.));
#148 = CIRCLE('',#149,2.);
#149 = AXIS2_PLACEMENT_3D('',#150,#151,#152);
#150 = CARTESIAN_POINT('',(26.870057685089,26.870057685089,0.));
#151 = DIRECTION('',(0.,0.,1.));
#152 = DIRECTION('',(1.,0.,0.));
#153 = PLANE('',#154);
#154 = AXIS2_PLACEMENT_3D('',#155,#156,#157);
#155 = CARTESIAN_POINT('',(0.,0.,0.));
#156 = DIRECTION('',(0.,0.,1.));
#157 = DIRECTION('',(1.,0.,0.));
#158 = ADVANCED_FACE('',(#159,#162),#173,.T.);
#159 = FACE_BOUND('',#160,.T.);
#160 = EDGE_LOOP('',(#161));
#161 = ORIENTED_EDGE('',*,*,#31,.T.);
#162 = FACE_BOUND('',#163,.T.);
#163 = EDGE_LOOP('',(#164));
#164 = ORIENTED_EDGE('',*,*,#165,.F.);
#165 = EDGE_CURVE('',#166,#166,#168,.T.);
#166 = VERTEX_POINT('',#167);
#167 = CARTESIAN_POINT('',(13.,-3.184081677783E-15,30.));
#168 = CIRCLE('',#169,13.);
#169 = AXIS2_PLACEMENT_3D('',#170,#171,#172);
#170 = CARTESIAN_POINT('',(0.,0.,30.));
#171 = DIRECTION('',(0.,0.,1.));
#172 = DIRECTION('',(1.,0.,0.));
#173 = PLANE('',#174);
#174 = AXIS2_PLACEMENT_3D('',#175,#176,#177);
#175 = CARTESIAN_POINT('',(0.,0.,30.));
#176 = DIRECTION('',(0.,0.,1.));
#177 = DIRECTION('',(1.,0.,0.));
#178 = ADVANCED_FACE('',(#179),#198,.F.);
#179 = FACE_BOUND('',#180,.T.);
#180 = EDGE_LOOP('',(#181,#189,#196,#197));
#181 = ORIENTED_EDGE('',*,*,#182,.T.);
#182 = EDGE_CURVE('',#58,#183,#185,.T.);
#183 = VERTEX_POINT('',#184);
#184 = CARTESIAN_POINT('',(-24.87005768508,-26.87005768508,8.));
#185 = LINE('',#186,#187);
#186 = CARTESIAN_POINT('',(-24.87005768508,-26.87005768508,0.));
#187 = VECTOR('',#188,1.);
#188 = DIRECTION('',(0.,0.,1.));
#189 = ORIENTED_EDGE('',*,*,#190,.T.);
#190 = EDGE_CURVE('',#183,#183,#191,.T.);
#191 = CIRCLE('',#192,2.);
#192 = AXIS2_PLACEMENT_3D('',#193,#194,#195);
#193 = CARTESIAN_POINT('',(-26.87005768508,-26.87005768508,8.));
#194 = DIRECTION('',(0.,0.,1.));
#195 = DIRECTION('',(1.,0.,0.));
#196 = ORIENTED_EDGE('',*,*,#182,.F.);
#197 = ORIENTED_EDGE('',*,*,#57,.F.);
#198 = CYLINDRICAL_SURFACE('',#199,2.);
#199 = AXIS2_PLACEMENT_3D('',#200,#201,#202);
#200 = CARTESIAN_POINT('',(-26.87005768508,-26.87005768508,0.));
#201 = DIRECTION('',(-0.,-0.,-1.));
#202 = DIRECTION('',(1.,0.,0.));
#203 = ADVANCED_FACE('',(#204),#223,.F.);
#204 = FACE_BOUND('',#205,.T.);
#205 = EDGE_LOOP('',(#206,#214,#221,#222));
#206 = ORIENTED_EDGE('',*,*,#207,.T.);
#207 = EDGE_CURVE('',#69,#208,#210,.T.);
#208 = VERTEX_POINT('',#209);
#209 = CARTESIAN_POINT('',(-15.67766952966,-17.67766952966,8.));
#210 = LINE('',#211,#212);
#211 = CARTESIAN_POINT('',(-15.67766952966,-17.67766952966,0.));
#212 = VECTOR('',#213,1.);
#213 = DIRECTION('',(0.,0.,1.));
#214 = ORIENTED_EDGE('',*,*,#215,.T.);
#215 = EDGE_CURVE('',#208,#208,#216,.T.);
#216 = CIRCLE('',#217,2.);
#217 = AXIS2_PLACEMENT_3D('',#218,#219,#220);
#218 = CARTESIAN_POINT('',(-17.67766952966,-17.67766952966,8.));
#219 = DIRECTION('',(0.,0.,1.));
#220 = DIRECTION('',(1.,0.,0.));
#221 = ORIENTED_EDGE('',*,*,#207,.F.);
#222 = ORIENTED_EDGE('',*,*,#68,.F.);
#223 = CYLINDRICAL_SURFACE('',#224,2.);
#224 = AXIS2_PLACEMENT_3D('',#225,#226,#227);
#225 = CARTESIAN_POINT('',(-17.67766952966,-17.67766952966,0.));
#226 = DIRECTION('',(-0.,-0.,-1.));
#227 = DIRECTION('',(1.,0.,0.));
#228 = ADVANCED_FACE('',(#229),#248,.F.);
#229 = FACE_BOUND('',#230,.T.);
#230 = EDGE_LOOP('',(#231,#239,#246,#247));
#231 = ORIENTED_EDGE('',*,*,#232,.T.);
#232 = EDGE_CURVE('',#80,#233,#235,.T.);
#233 = VERTEX_POINT('',#234);
#234 = CARTESIAN_POINT('',(28.870057685089,-26.87005768508,8.));
#235 = LINE('',#236,#237);
#236 = CARTESIAN_POINT('',(28.870057685089,-26.87005768508,0.));
#237 = VECTOR('',#238,1.);
#238 = DIRECTION('',(0.,0.,1.));
#239 = ORIENTED_EDGE('',*,*,#240,.T.);
#240 = EDGE_CURVE('',#233,#233,#241,.T.);
#241 = CIRCLE('',#242,2.);
#242 = AXIS2_PLACEMENT_3D('',#243,#244,#245);
#243 = CARTESIAN_POINT('',(26.870057685089,-26.87005768508,8.));
#244 = DIRECTION('',(0.,0.,1.));
#245 = DIRECTION('',(1.,0.,0.));
#246 = ORIENTED_EDGE('',*,*,#232,.F.);
#247 = ORIENTED_EDGE('',*,*,#79,.F.);
#248 = CYLINDRICAL_SURFACE('',#249,2.);
#249 = AXIS2_PLACEMENT_3D('',#250,#251,#252);
#250 = CARTESIAN_POINT('',(26.870057685089,-26.87005768508,0.));
#251 = DIRECTION('',(-0.,-0.,-1.));
#252 = DIRECTION('',(1.,0.,0.));
#253 = ADVANCED_FACE('',(#254),#273,.F.);
#254 = FACE_BOUND('',#255,.T.);
#255 = EDGE_LOOP('',(#256,#264,#271,#272));
#256 = ORIENTED_EDGE('',*,*,#257,.T.);
#257 = EDGE_CURVE('',#91,#258,#260,.T.);
#258 = VERTEX_POINT('',#259);
#259 = CARTESIAN_POINT('',(19.677669529664,-17.67766952966,8.));
#260 = LINE('',#261,#262);
#261 = CARTESIAN_POINT('',(19.677669529664,-17.67766952966,0.));
#262 = VECTOR('',#263,1.);
#263 = DIRECTION('',(0.,0.,1.));
#264 = ORIENTED_EDGE('',*,*,#265,.T.);
#265 = EDGE_CURVE('',#258,#258,#266,.T.);
#266 = CIRCLE('',#267,2.);
#267 = AXIS2_PLACEMENT_3D('',#268,#269,#270);
#268 = CARTESIAN_POINT('',(17.677669529664,-17.67766952966,8.));
#269 = DIRECTION('',(0.,0.,1.));
#270 = DIRECTION('',(1.,0.,0.));
#271 = ORIENTED_EDGE('',*,*,#257,.F.);
#272 = ORIENTED_EDGE('',*,*,#90,.F.);
#273 = CYLINDRICAL_SURFACE('',#274,2.);
#274 = AXIS2_PLACEMENT_3D('',#275,#276,#277);
#275 = CARTESIAN_POINT('',(17.677669529664,-17.67766952966,0.));
#276 = DIRECTION('',(-0.,-0.,-1.));
#277 = DIRECTION('',(1.,0.,0.));
#278 = ADVANCED_FACE('',(#279),#298,.F.);
#279 = FACE_BOUND('',#280,.T.);
#280 = EDGE_LOOP('',(#281,#289,#296,#297));
#281 = ORIENTED_EDGE('',*,*,#282,.T.);
#282 = EDGE_CURVE('',#102,#283,#285,.T.);
#283 = VERTEX_POINT('',#284);
#284 = CARTESIAN_POINT('',(-15.67766952966,17.677669529664,8.));
#285 = LINE('',#286,#287);
#286 = CARTESIAN_POINT('',(-15.67766952966,17.677669529664,0.));
#287 = VECTOR('',#288,1.);
#288 = DIRECTION('',(0.,0.,1.));
#289 = ORIENTED_EDGE('',*,*,#290,.T.);
#290 = EDGE_CURVE('',#283,#283,#291,.T.);
#291 = CIRCLE('',#292,2.);
#292 = AXIS2_PLACEMENT_3D('',#293,#294,#295);
#293 = CARTESIAN_POINT('',(-17.67766952966,17.677669529664,8.));
#294 = DIRECTION('',(0.,0.,1.));
#295 = DIRECTION('',(1.,0.,0.));
#296 = ORIENTED_EDGE('',*,*,#282,.F.);
#297 = ORIENTED_EDGE('',*,*,#101,.F.);
#298 = CYLINDRICAL_SURFACE('',#299,2.);
#299 = AXIS2_PLACEMENT_3D('',#300,#301,#302);
#300 = CARTESIAN_POINT('',(-17.67766952966,17.677669529664,0.));
#301 = DIRECTION('',(-0.,-0.,-1.));
#302 = DIRECTION('',(1.,0.,0.));
#303 = ADVANCED_FACE('',(#304),#323,.F.);
#304 = FACE_BOUND('',#305,.T.);
#305 = EDGE_LOOP('',(#306,#314,#321,#322));
#306 = ORIENTED_EDGE('',*,*,#307,.T.);
#307 = EDGE_CURVE('',#113,#308,#310,.T.);
#308 = VERTEX_POINT('',#309);
#309 = CARTESIAN_POINT('',(-24.87005768508,26.870057685089,8.));
#310 = LINE('',#311,#312);
#311 = CARTESIAN_POINT('',(-24.87005768508,26.870057685089,0.));
#312 = VECTOR('',#313,1.);
#313 = DIRECTION('',(0.,0.,1.));
#314 = ORIENTED_EDGE('',*,*,#315,.T.);
#315 = EDGE_CURVE('',#308,#308,#316,.T.);
#316 = CIRCLE('',#317,2.);
#317 = AXIS2_PLACEMENT_3D('',#318,#319,#320);
#318 = CARTESIAN_POINT('',(-26.87005768508,26.870057685089,8.));
#319 = DIRECTION('',(0.,0.,1.));
#320 = DIRECTION('',(1.,0.,0.));
#321 = ORIENTED_EDGE('',*,*,#307,.F.);
#322 = ORIENTED_EDGE('',*,*,#112,.F.);
#323 = CYLINDRICAL_SURFACE('',#324,2.);
#324 = AXIS2_PLACEMENT_3D('',#325,#326,#327);
#325 = CARTESIAN_POINT('',(-26.87005768508,26.870057685089,0.));
#326 = DIRECTION('',(-0.,-0.,-1.));
#327 = DIRECTION('',(1.,0.,0.));
#328 = ADVANCED_FACE('',(#329),#348,.F.);
#329 = FACE_BOUND('',#330,.T.);
#330 = EDGE_LOOP('',(#331,#339,#346,#347));
#331 = ORIENTED_EDGE('',*,*,#332,.T.);
#332 = EDGE_CURVE('',#124,#333,#335,.T.);
#333 = VERTEX_POINT('',#334);
#334 = CARTESIAN_POINT('',(1.5,-3.673940397442E-16,44.));
#335 = LINE('',#336,#337);
#336 = CARTESIAN_POINT('',(1.5,-3.673940397442E-16,0.));
#337 = VECTOR('',#338,1.);
#338 = DIRECTION('',(0.,0.,1.));
#339 = ORIENTED_EDGE('',*,*,#340,.T.);
#340 = EDGE_CURVE('',#333,#333,#341,.T.);
#341 = CIRCLE('',#342,1.5);
#342 = AXIS2_PLACEMENT_3D('',#343,#344,#345);
#343 = CARTESIAN_POINT('',(0.,0.,44.));
#344 = DIRECTION('',(0.,0.,1.));
#345 = DIRECTION('',(1.,0.,0.));
#346 = ORIENTED_EDGE('',*,*,#332,.F.);
#347 = ORIENTED_EDGE('',*,*,#123,.F.);
#348 = CYLINDRICAL_SURFACE('',#349,1.5);
#349 = AXIS2_PLACEMENT_3D('',#350,#351,#352);
#350 = CARTESIAN_POINT('',(0.,0.,0.));
#351 = DIRECTION('',(-0.,-0.,-1.));
#352 = DIRECTION('',(1.,0.,0.));
#353 = ADVANCED_FACE('',(#354),#373,.F.);
#354 = FACE_BOUND('',#355,.T.);
#355 = EDGE_LOOP('',(#356,#364,#371,#372));
#356 = ORIENTED_EDGE('',*,*,#357,.T.);
#357 = EDGE_CURVE('',#135,#358,#360,.T.);
#358 = VERTEX_POINT('',#359);
#359 = CARTESIAN_POINT('',(19.677669529664,17.677669529664,8.));
#360 = LINE('',#361,#362);
#361 = CARTESIAN_POINT('',(19.677669529664,17.677669529664,0.));
#362 = VECTOR('',#363,1.);
#363 = DIRECTION('',(0.,0.,1.));
#364 = ORIENTED_EDGE('',*,*,#365,.T.);
#365 = EDGE_CURVE('',#358,#358,#366,.T.);
#366 = CIRCLE('',#367,2.);
#367 = AXIS2_PLACEMENT_3D('',#368,#369,#370);
#368 = CARTESIAN_POINT('',(17.677669529664,17.677669529664,8.));
#369 = DIRECTION('',(0.,0.,1.));
#370 = DIRECTION('',(1.,0.,0.));
#371 = ORIENTED_EDGE('',*,*,#357,.F.);
#372 = ORIENTED_EDGE('',*,*,#134,.F.);
#373 = CYLINDRICAL_SURFACE('',#374,2.);
#374 = AXIS2_PLACEMENT_3D('',#375,#376,#377);
#375 = CARTESIAN_POINT('',(17.677669529664,17.677669529664,0.));
#376 = DIRECTION('',(-0.,-0.,-1.));
#377 = DIRECTION('',(1.,0.,0.));
#378 = ADVANCED_FACE('',(#379),#398,.F.);
#379 = FACE_BOUND('',#380,.T.);
#380 = EDGE_LOOP('',(#381,#389,#396,#397));
#381 = ORIENTED_EDGE('',*,*,#382,.T.);
#382 = EDGE_CURVE('',#146,#383,#385,.T.);
#383 = VERTEX_POINT('',#384);
#384 = CARTESIAN_POINT('',(28.870057685089,26.870057685089,8.));
#385 = LINE('',#386,#387);
#386 = CARTESIAN_POINT('',(28.870057685089,26.870057685089,0.));
#387 = VECTOR('',#388,1.);
#388 = DIRECTION('',(0.,0.,1.));
#389 = ORIENTED_EDGE('',*,*,#390,.T.);
#390 = EDGE_CURVE('',#383,#383,#391,.T.);
#391 = CIRCLE('',#392,2.);
#392 = AXIS2_PLACEMENT_3D('',#393,#394,#395);
#393 = CARTESIAN_POINT('',(26.870057685089,26.870057685089,8.));
#394 = DIRECTION('',(0.,0.,1.));
#395 = DIRECTION('',(1.,0.,0.));
#396 = ORIENTED_EDGE('',*,*,#382,.F.);
#397 = ORIENTED_EDGE('',*,*,#145,.F.);
#398 = CYLINDRICAL_SURFACE('',#399,2.);
#399 = AXIS2_PLACEMENT_3D('',#400,#401,#402);
#400 = CARTESIAN_POINT('',(26.870057685089,26.870057685089,0.));
#401 = DIRECTION('',(-0.,-0.,-1.));
#402 = DIRECTION('',(1.,0.,0.));
#403 = ADVANCED_FACE('',(#404),#423,.T.);
#404 = FACE_BOUND('',#405,.F.);
#405 = EDGE_LOOP('',(#406,#414,#421,#422));
#406 = ORIENTED_EDGE('',*,*,#407,.T.);
#407 = EDGE_CURVE('',#166,#408,#410,.T.);
#408 = VERTEX_POINT('',#409);
#409 = CARTESIAN_POINT('',(13.,-3.184081677783E-15,38.));
#410 = LINE('',#411,#412);
#411 = CARTESIAN_POINT('',(13.,-3.184081677783E-15,30.));
#412 = VECTOR('',#413,1.);
#413 = DIRECTION('',(0.,0.,1.));
#414 = ORIENTED_EDGE('',*,*,#415,.T.);
#415 = EDGE_CURVE('',#408,#408,#416,.T.);
#416 = CIRCLE('',#417,13.);
#417 = AXIS2_PLACEMENT_3D('',#418,#419,#420);
#418 = CARTESIAN_POINT('',(0.,0.,38.));
#419 = DIRECTION('',(0.,0.,1.));
#420 = DIRECTION('',(1.,0.,0.));
#421 = ORIENTED_EDGE('',*,*,#407,.F.);
#422 = ORIENTED_EDGE('',*,*,#165,.F.);
#423 = CYLINDRICAL_SURFACE('',#424,13.);
#424 = AXIS2_PLACEMENT_3D('',#425,#426,#427);
#425 = CARTESIAN_POINT('',(0.,0.,30.));
#426 = DIRECTION('',(-0.,-0.,-1.));
#427 = DIRECTION('',(1.,0.,0.));
#428 = ADVANCED_FACE('',(#429),#432,.F.);
#429 = FACE_BOUND('',#430,.T.);
#430 = EDGE_LOOP('',(#431));
#431 = ORIENTED_EDGE('',*,*,#190,.F.);
#432 = PLANE('',#433);
#433 = AXIS2_PLACEMENT_3D('',#434,#435,#436);
#434 = CARTESIAN_POINT('',(-26.87005768508,-26.87005768508,8.));
#435 = DIRECTION('',(0.,0.,1.));
#436 = DIRECTION('',(1.,0.,0.));
#437 = ADVANCED_FACE('',(#438),#441,.F.);
#438 = FACE_BOUND('',#439,.T.);
#439 = EDGE_LOOP('',(#440));
#440 = ORIENTED_EDGE('',*,*,#215,.F.);
#441 = PLANE('',#442);
#442 = AXIS2_PLACEMENT_3D('',#443,#444,#445);
#443 = CARTESIAN_POINT('',(-17.67766952966,-17.67766952966,8.));
#444 = DIRECTION('',(0.,0.,1.));
#445 = DIRECTION('',(1.,0.,0.));
#446 = ADVANCED_FACE('',(#447),#450,.F.);
#447 = FACE_BOUND('',#448,.T.);
#448 = EDGE_LOOP('',(#449));
#449 = ORIENTED_EDGE('',*,*,#240,.F.);
#450 = PLANE('',#451);
#451 = AXIS2_PLACEMENT_3D('',#452,#453,#454);
#452 = CARTESIAN_POINT('',(26.870057685089,-26.87005768508,8.));
#453 = DIRECTION('',(0.,0.,1.));
#454 = DIRECTION('',(1.,0.,0.));
#455 = ADVANCED_FACE('',(#456),#459,.F.);
#456 = FACE_BOUND('',#457,.T.);
#457 = EDGE_LOOP('',(#458));
#458 = ORIENTED_EDGE('',*,*,#265,.F.);
#459 = PLANE('',#460);
#460 = AXIS2_PLACEMENT_3D('',#461,#462,#463);
#461 = CARTESIAN_POINT('',(17.677669529664,-17.67766952966,8.));
#462 = DIRECTION('',(0.,0.,1.));
#463 = DIRECTION('',(1.,0.,0.));
#464 = ADVANCED_FACE('',(#465),#468,.F.);
#465 = FACE_BOUND('',#466,.T.);
#466 = EDGE_LOOP('',(#467));
#467 = ORIENTED_EDGE('',*,*,#290,.F.);
#468 = PLANE('',#469);
#469 = AXIS2_PLACEMENT_3D('',#470,#471,#472);
#470 = CARTESIAN_POINT('',(-17.67766952966,17.677669529664,8.));
#471 = DIRECTION('',(0.,0.,1.));
#472 = DIRECTION('',(1.,0.,0.));
#473 = ADVANCED_FACE('',(#474),#477,.F.);
#474 = FACE_BOUND('',#475,.T.);
#475 = EDGE_LOOP('',(#476));
#476 = ORIENTED_EDGE('',*,*,#315,.F.);
#477 = PLANE('',#478);
#478 = AXIS2_PLACEMENT_3D('',#479,#480,#481);
#479 = CARTESIAN_POINT('',(-26.87005768508,26.870057685089,8.));
#480 = DIRECTION('',(0.,0.,1.));
#481 = DIRECTION('',(1.,0.,0.));
#482 = ADVANCED_FACE('',(#483,#494),#497,.T.);
#483 = FACE_BOUND('',#484,.T.);
#484 = EDGE_LOOP('',(#485));
#485 = ORIENTED_EDGE('',*,*,#486,.T.);
#486 = EDGE_CURVE('',#487,#487,#489,.T.);
#487 = VERTEX_POINT('',#488);
#488 = CARTESIAN_POINT('',(4.,-9.797174393179E-16,44.));
#489 = CIRCLE('',#490,4.);
#490 = AXIS2_PLACEMENT_3D('',#491,#492,#493);
#491 = CARTESIAN_POINT('',(0.,0.,44.));
#492 = DIRECTION('',(0.,0.,1.));
#493 = DIRECTION('',(1.,0.,0.));
#494 = FACE_BOUND('',#495,.T.);
#495 = EDGE_LOOP('',(#496));
#496 = ORIENTED_EDGE('',*,*,#340,.F.);
#497 = PLANE('',#498);
#498 = AXIS2_PLACEMENT_3D('',#499,#500,#501);
#499 = CARTESIAN_POINT('',(0.,0.,44.));
#500 = DIRECTION('',(0.,0.,1.));
#501 = DIRECTION('',(1.,0.,0.));
#502 = ADVANCED_FACE('',(#503),#506,.F.);
#503 = FACE_BOUND('',#504,.T.);
#504 = EDGE_LOOP('',(#505));
#505 = ORIENTED_EDGE('',*,*,#365,.F.);
#506 = PLANE('',#507);
#507 = AXIS2_PLACEMENT_3D('',#508,#509,#510);
#508 = CARTESIAN_POINT('',(17.677669529664,17.677669529664,8.));
#509 = DIRECTION('',(0.,0.,1.));
#510 = DIRECTION('',(1.,0.,0.));
#511 = ADVANCED_FACE('',(#512),#515,.F.);
#512 = FACE_BOUND('',#513,.T.);
#513 = EDGE_LOOP('',(#514));
#514 = ORIENTED_EDGE('',*,*,#390,.F.);
#515 = PLANE('',#516);
#516 = AXIS2_PLACEMENT_3D('',#517,#518,#519);
#517 = CARTESIAN_POINT('',(26.870057685089,26.870057685089,8.));
#518 = DIRECTION('',(0.,0.,1.));
#519 = DIRECTION('',(1.,0.,0.));
#520 = ADVANCED_FACE('',(#521,#524,#535,#546,#557,#568),#579,.T.);
#521 = FACE_BOUND('',#522,.T.);
#522 = EDGE_LOOP('',(#523));
#523 = ORIENTED_EDGE('',*,*,#415,.T.);
#524 = FACE_BOUND('',#525,.T.);
#525 = EDGE_LOOP('',(#526));
#526 = ORIENTED_EDGE('',*,*,#527,.F.);
#527 = EDGE_CURVE('',#528,#528,#530,.T.);
#528 = VERTEX_POINT('',#529);
#529 = CARTESIAN_POINT('',(1.5,-10.,38.));
#530 = CIRCLE('',#531,1.5);
#531 = AXIS2_PLACEMENT_3D('',#532,#533,#534);
#532 = CARTESIAN_POINT('',(-1.836970198721E-15,-10.,38.));
#533 = DIRECTION('',(0.,0.,1.));
#534 = DIRECTION('',(1.,0.,0.));
#535 = FACE_BOUND('',#536,.T.);
#536 = EDGE_LOOP('',(#537));
#537 = ORIENTED_EDGE('',*,*,#538,.F.);
#538 = EDGE_CURVE('',#539,#539,#541,.T.);
#539 = VERTEX_POINT('',#540);
#540 = CARTESIAN_POINT('',(-8.5,8.572527594031E-16,38.));
#541 = CIRCLE('',#542,1.5);
#542 = AXIS2_PLACEMENT_3D('',#543,#544,#545);
#543 = CARTESIAN_POINT('',(-10.,1.224646799147E-15,38.));
#544 = DIRECTION('',(0.,0.,1.));
#545 = DIRECTION('',(1.,0.,0.));
#546 = FACE_BOUND('',#547,.T.);
#547 = EDGE_LOOP('',(#548));
#548 = ORIENTED_EDGE('',*,*,#549,.F.);
#549 = EDGE_CURVE('',#550,#550,#552,.T.);
#550 = VERTEX_POINT('',#551);
#551 = CARTESIAN_POINT('',(4.,-9.797174393179E-16,38.));
#552 = CIRCLE('',#553,4.);
#553 = AXIS2_PLACEMENT_3D('',#554,#555,#556);
#554 = CARTESIAN_POINT('',(0.,0.,38.));
#555 = DIRECTION('',(0.,0.,1.));
#556 = DIRECTION('',(1.,0.,0.));
#557 = FACE_BOUND('',#558,.T.);
#558 = EDGE_LOOP('',(#559));
#559 = ORIENTED_EDGE('',*,*,#560,.F.);
#560 = EDGE_CURVE('',#561,#561,#563,.T.);
#561 = VERTEX_POINT('',#562);
#562 = CARTESIAN_POINT('',(11.5,-3.673940397442E-16,38.));
#563 = CIRCLE('',#564,1.5);
#564 = AXIS2_PLACEMENT_3D('',#565,#566,#567);
#565 = CARTESIAN_POINT('',(10.,0.,38.));
#566 = DIRECTION('',(0.,0.,1.));
#567 = DIRECTION('',(1.,0.,0.));
#568 = FACE_BOUND('',#569,.T.);
#569 = EDGE_LOOP('',(#570));
#570 = ORIENTED_EDGE('',*,*,#571,.F.);
#571 = EDGE_CURVE('',#572,#572,#574,.T.);
#572 = VERTEX_POINT('',#573);
#573 = CARTESIAN_POINT('',(1.5,10.,38.));
#574 = CIRCLE('',#575,1.5);
#575 = AXIS2_PLACEMENT_3D('',#576,#577,#578);
#576 = CARTESIAN_POINT('',(6.123233995737E-16,10.,38.));
#577 = DIRECTION('',(0.,0.,1.));
#578 = DIRECTION('',(1.,0.,0.));
#579 = PLANE('',#580);
#580 = AXIS2_PLACEMENT_3D('',#581,#582,#583);
#581 = CARTESIAN_POINT('',(0.,0.,38.));
#582 = DIRECTION('',(0.,0.,1.));
#583 = DIRECTION('',(1.,0.,0.));
#584 = ADVANCED_FACE('',(#585),#596,.T.);
#585 = FACE_BOUND('',#586,.F.);
#586 = EDGE_LOOP('',(#587,#593,#594,#595));
#587 = ORIENTED_EDGE('',*,*,#588,.T.);
#588 = EDGE_CURVE('',#550,#487,#589,.T.);
#589 = LINE('',#590,#591);
#590 = CARTESIAN_POINT('',(4.,-9.797174393179E-16,38.));
#591 = VECTOR('',#592,1.);
#592 = DIRECTION('',(0.,0.,1.));
#593 = ORIENTED_EDGE('',*,*,#486,.T.);
#594 = ORIENTED_EDGE('',*,*,#588,.F.);
#595 = ORIENTED_EDGE('',*,*,#549,.F.);
#596 = CYLINDRICAL_SURFACE('',#597,4.);
#597 = AXIS2_PLACEMENT_3D('',#598,#599,#600);
#598 = CARTESIAN_POINT('',(0.,0.,38.));
#599 = DIRECTION('',(-0.,-0.,-1.));
#600 = DIRECTION('',(1.,0.,0.));
#601 = ADVANCED_FACE('',(#602),#621,.F.);
#602 = FACE_BOUND('',#603,.T.);
#603 = EDGE_LOOP('',(#604,#612,#613,#614));
#604 = ORIENTED_EDGE('',*,*,#605,.T.);
#605 = EDGE_CURVE('',#606,#528,#608,.T.);
#606 = VERTEX_POINT('',#607);
#607 = CARTESIAN_POINT('',(1.5,-10.,33.));
#608 = LINE('',#609,#610);
#609 = CARTESIAN_POINT('',(1.5,-10.,33.));
#610 = VECTOR('',#611,1.);
#611 = DIRECTION('',(0.,0.,1.));
#612 = ORIENTED_EDGE('',*,*,#527,.T.);
#613 = ORIENTED_EDGE('',*,*,#605,.F.);
#614 = ORIENTED_EDGE('',*,*,#615,.F.);
#615 = EDGE_CURVE('',#606,#606,#616,.T.);
#616 = CIRCLE('',#617,1.5);
#617 = AXIS2_PLACEMENT_3D('',#618,#619,#620);
#618 = CARTESIAN_POINT('',(-1.836970198721E-15,-10.,33.));
#619 = DIRECTION('',(0.,0.,1.));
#620 = DIRECTION('',(1.,0.,0.));
#621 = CYLINDRICAL_SURFACE('',#622,1.5);
#622 = AXIS2_PLACEMENT_3D('',#623,#624,#625);
#623 = CARTESIAN_POINT('',(-1.836970198721E-15,-10.,33.));
#624 = DIRECTION('',(-0.,-0.,-1.));
#625 = DIRECTION('',(1.,0.,0.));
#626 = ADVANCED_FACE('',(#627),#646,.F.);
#627 = FACE_BOUND('',#628,.T.);
#628 = EDGE_LOOP('',(#629,#637,#638,#639));
#629 = ORIENTED_EDGE('',*,*,#630,.T.);
#630 = EDGE_CURVE('',#631,#539,#633,.T.);
#631 = VERTEX_POINT('',#632);
#632 = CARTESIAN_POINT('',(-8.5,8.572527594031E-16,33.));
#633 = LINE('',#634,#635);
#634 = CARTESIAN_POINT('',(-8.5,8.572527594031E-16,33.));
#635 = VECTOR('',#636,1.);
#636 = DIRECTION('',(0.,0.,1.));
#637 = ORIENTED_EDGE('',*,*,#538,.T.);
#638 = ORIENTED_EDGE('',*,*,#630,.F.);
#639 = ORIENTED_EDGE('',*,*,#640,.F.);
#640 = EDGE_CURVE('',#631,#631,#641,.T.);
#641 = CIRCLE('',#642,1.5);
#642 = AXIS2_PLACEMENT_3D('',#643,#644,#645);
#643 = CARTESIAN_POINT('',(-10.,1.224646799147E-15,33.));
#644 = DIRECTION('',(0.,0.,1.));
#645 = DIRECTION('',(1.,0.,0.));
#646 = CYLINDRICAL_SURFACE('',#647,1.5);
#647 = AXIS2_PLACEMENT_3D('',#648,#649,#650);
#648 = CARTESIAN_POINT('',(-10.,1.224646799147E-15,33.));
#649 = DIRECTION('',(-0.,-0.,-1.));
#650 = DIRECTION('',(1.,0.,0.));
#651 = ADVANCED_FACE('',(#652),#671,.F.);
#652 = FACE_BOUND('',#653,.T.);
#653 = EDGE_LOOP('',(#654,#662,#663,#664));
#654 = ORIENTED_EDGE('',*,*,#655,.T.);
#655 = EDGE_CURVE('',#656,#561,#658,.T.);
#656 = VERTEX_POINT('',#657);
#657 = CARTESIAN_POINT('',(11.5,-3.673940397442E-16,33.));
#658 = LINE('',#659,#660);
#659 = CARTESIAN_POINT('',(11.5,-3.673940397442E-16,33.));
#660 = VECTOR('',#661,1.);
#661 = DIRECTION('',(0.,0.,1.));
#662 = ORIENTED_EDGE('',*,*,#560,.T.);
#663 = ORIENTED_EDGE('',*,*,#655,.F.);
#664 = ORIENTED_EDGE('',*,*,#665,.F.);
#665 = EDGE_CURVE('',#656,#656,#666,.T.);
#666 = CIRCLE('',#667,1.5);
#667 = AXIS2_PLACEMENT_3D('',#668,#669,#670);
#668 = CARTESIAN_POINT('',(10.,0.,33.));
#669 = DIRECTION('',(0.,0.,1.));
#670 = DIRECTION('',(1.,0.,0.));
#671 = CYLINDRICAL_SURFACE('',#672,1.5);
#672 = AXIS2_PLACEMENT_3D('',#673,#674,#675);
#673 = CARTESIAN_POINT('',(10.,0.,33.));
#674 = DIRECTION('',(-0.,-0.,-1.));
#675 = DIRECTION('',(1.,0.,0.));
#676 = ADVANCED_FACE('',(#677),#696,.F.);
#677 = FACE_BOUND('',#678,.T.);
#678 = EDGE_LOOP('',(#679,#687,#688,#689));
#679 = ORIENTED_EDGE('',*,*,#680,.T.);
#680 = EDGE_CURVE('',#681,#572,#683,.T.);
#681 = VERTEX_POINT('',#682);
#682 = CARTESIAN_POINT('',(1.5,10.,33.));
#683 = LINE('',#684,#685);
#684 = CARTESIAN_POINT('',(1.5,10.,33.));
#685 = VECTOR('',#686,1.);
#686 = DIRECTION('',(0.,0.,1.));
#687 = ORIENTED_EDGE('',*,*,#571,.T.);
#688 = ORIENTED_EDGE('',*,*,#680,.F.);
#689 = ORIENTED_EDGE('',*,*,#690,.F.);
#690 = EDGE_CURVE('',#681,#681,#691,.T.);
#691 = CIRCLE('',#692,1.5);
#692 = AXIS2_PLACEMENT_3D('',#693,#694,#695);
#693 = CARTESIAN_POINT('',(6.123233995737E-16,10.,33.));
#694 = DIRECTION('',(0.,0.,1.));
#695 = DIRECTION('',(1.,0.,0.));
#696 = CYLINDRICAL_SURFACE('',#697,1.5);
#697 = AXIS2_PLACEMENT_3D('',#698,#699,#700);
#698 = CARTESIAN_POINT('',(6.123233995737E-16,10.,33.));
#699 = DIRECTION('',(-0.,-0.,-1.));
#700 = DIRECTION('',(1.,0.,0.));
#701 = ADVANCED_FACE('',(#702),#705,.T.);
#702 = FACE_BOUND('',#703,.F.);
#703 = EDGE_LOOP('',(#704));
#704 = ORIENTED_EDGE('',*,*,#615,.F.);
#705 = PLANE('',#706);
#706 = AXIS2_PLACEMENT_3D('',#707,#708,#709);
#707 = CARTESIAN_POINT('',(-1.836970198721E-15,-10.,33.));
#708 = DIRECTION('',(0.,0.,1.));
#709 = DIRECTION('',(1.,0.,0.));
#710 = ADVANCED_FACE('',(#711),#714,.T.);
#711 = FACE_BOUND('',#712,.F.);
#712 = EDGE_LOOP('',(#713));
#713 = ORIENTED_EDGE('',*,*,#640,.F.);
#714 = PLANE('',#715);
#715 = AXIS2_PLACEMENT_3D('',#716,#717,#718);
#716 = CARTESIAN_POINT('',(-10.,1.224646799147E-15,33.));
#717 = DIRECTION('',(0.,0.,1.));
#718 = DIRECTION('',(1.,0.,0.));
#719 = ADVANCED_FACE('',(#720),#723,.T.);
#720 = FACE_BOUND('',#721,.F.);
#721 = EDGE_LOOP('',(#722));
#722 = ORIENTED_EDGE('',*,*,#665,.F.);
#723 = PLANE('',#724);
#724 = AXIS2_PLACEMENT_3D('',#725,#726,#727);
#725 = CARTESIAN_POINT('',(10.,0.,33.));
#726 = DIRECTION('',(0.,0.,1.));
#727 = DIRECTION('',(1.,0.,0.));
#728 = ADVANCED_FACE('',(#729),#732,.T.);
#729 = FACE_BOUND('',#730,.F.);
#730 = EDGE_LOOP('',(#731));
#731 = ORIENTED_EDGE('',*,*,#690,.F.);
#732 = PLANE('',#733);
#733 = AXIS2_PLACEMENT_3D('',#734,#735,#736);
#734 = CARTESIAN_POINT('',(6.123233995737E-16,10.,33.));
#735 = DIRECTION('',(0.,0.,1.));
#736 = DIRECTION('',(1.,0.,0.));
#737 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3)
GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#741)) GLOBAL_UNIT_ASSIGNED_CONTEXT
((#738,#739,#740)) REPRESENTATION_CONTEXT('Context #1',
'3D Context with UNIT and UNCERTAINTY') );
#738 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) );
#739 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) );
#740 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() );
#741 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#738,
'distance_accuracy_value','confusion accuracy');
#742 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7));
ENDSEC;
END-ISO-10303-21;

View File

@@ -0,0 +1,19 @@
# MAD M9C12 电机近似模型
`MAD_M9C12.FCStd` 是可编辑 FreeCAD 模型,`MAD_M9C12.step` 是当前参数下的交换格式快照。模型轴线为 Z 轴,后面板在 Z=0,主体正面在 Z=30 mm;电机主体直径 120 mm、厚 30 mm,均按提供的数据。前方凸台及轴为外观占位,尺寸未测;它们突出于 30 mm 主体之外。前孔从凸台顶面进入。
| 项目 | 当前模型 | 数据性质 |
| --- | --- | --- |
| 正中心通孔 | 直径 3 mm,沿轴线贯穿主体、凸台和轴 | 按用户要求;光孔,不建螺纹 |
| 前面板四孔 | PCD 20 mm、直径 3 mm、首孔 0°、盲孔深 5 mm | 用户确认与转接盘内圈交替四孔对应;孔径、角度、深度待测 |
| 后面板内圈四孔 | PCD 50 mm、直径 4 mm、首孔 45° | PCD 为直尺粗测,角度待测 |
| 后面板外圈四孔 | PCD 76 mm、直径 4 mm、首孔 45° | PCD 为直尺粗测,两圈相对角度待测 |
| 后面板孔深 | 8 mm,盲孔 | 仅为建模占位;M4×8 无论表示 8 个 M4 孔还是 8 mm 长螺钉,都不能据此确定螺纹有效深度 |
所有角度均从正 Z 方向朝原点观察,以 X 正向为 0°,向 Y 正向逆时针递增。孔采用光滑的名义直径表达,不包含螺纹、底孔直径或钻尖。两个后孔圈的 45° 相位只是可修改的假设;在确认前不能作为加工依据。
厂商现行的 [M9C12 IPE V3.1 页面](https://mad-motor.com/products/mad-components-m9c12-ipe-v31waterproof-brushless-motor-drone-sprayer-framing-agriculture-longrange) 所列安装孔与此模型的后面板粗测不同,可能涉及版本差异。建议对照实物测量对角孔中心距(即四孔的 PCD)、孔径、孔圈相对角度和前后可用螺纹深度,再校核螺钉长度与装配干涉。
当前假设的凸台为直径 26 mm、高 8 mm,轴为直径 8 mm、高 6 mm;转接盘中心孔为直径 15 mm、底部凹槽为直径 28 mm、深 2 mm。二者相对位置及电机实物尺寸未确定,孔位对应不代表装配间隙已验证,请实测后判断是否干涉。
在 FreeCAD 中打开 `Parameters` 表修改数值,重新计算并检查模型;`CenterHoleDiameter` 控制中心通孔的直径。参数改动后,STEP 文件不会自动更新。在 FreeCAD 中选中最终 `CenterThrough` 对象后重新导出 STEP;或运行 `scripts/rebuild_mad_m9c12.FCMacro`,按脚本默认值重建并覆盖两个输出文件。修改参数后请另存模型,运行重建宏会恢复脚本默认值。

BIN
models/MAD_M9C12_预览.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1 @@
ok

Some files were not shown because too many files have changed in this diff Show More