← Commit history
RC0402FR-075K1L.stepadded+1049
@@ -0,0 +1,1049 @@+ISO-10303-21;+HEADER;+/* R_0402_1005Metric.step 3D STEP model for use in ECAD systems+ * Copyright (C) 2018, kicad StepUp+ * + * This work is licensed under the [Creative Commons CC-BY-SA 4.0 License](https://creativecommons.org/licenses/by-sa/4.0/legalcode), + * with the following exception:+ * To the extent that the creation of electronic designs that use 'Licensed Material' can be considered to be 'Adapted Material', + * then the copyright holder waives article 3 of the license with respect to these designs and any generated files which use data provided + * as part of the 'Licensed Material'.+ * You are free to use the library data in your own projects without the obligation to share your project files under this or any other license agreement.+ * However, if you wish to redistribute these libraries, or parts thereof (including in modified form) as a collection then the exception above does not apply. + * Please refer to https://github.com/KiCad/kicad-packages3D/blob/master/LICENSE.md for further clarification of the exception.+ * Disclaimer of Warranties and Limitation of Liability.+ * These libraries are provided in the hope that they will be useful, but are provided without warranty of any kind, express or implied.+ * *USE 3D CAD DATA AT YOUR OWN RISK*+ * *DO NOT RELY UPON ANY INFORMATION FOUND HERE WITHOUT INDEPENDENT VERIFICATION.*+ * + */++FILE_DESCRIPTION(+/* description */ ('model of R_0402_1005Metric'),+/* implementation_level */ '2;1');++FILE_NAME(+/* name */ 'R_0402_1005Metric.step',+/* time_stamp */ '2018-01-04T00:45:35',+/* author */ ('kicad StepUp','ksu'),+/* organization */ ('FreeCAD'),+/* preprocessor_version */ 'OCC',+/* originating_system */ 'kicad StepUp',+/* authorisation */ '');++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('R_0402_1005Metric','R_0402_1005Metric','',(#8));+#8 = PRODUCT_CONTEXT('',#2,'mechanical');+#9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design');+#10 = ADVANCED_BREP_SHAPE_REPRESENTATION('',(#11,#15),#805);+#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,#57,#140,#165,#190,#257,#274,#291,#340,#357,+#374,#423,#440,#509,#540,#564,#633,#657,#674,#691,#708,#725,#742,+#759,#776,#793));+#17 = ADVANCED_FACE('',(#18),#52,.F.);+#18 = FACE_BOUND('',#19,.F.);+#19 = EDGE_LOOP('',(#20,#30,#38,#46));+#20 = ORIENTED_EDGE('',*,*,#21,.F.);+#21 = EDGE_CURVE('',#22,#24,#26,.T.);+#22 = VERTEX_POINT('',#23);+#23 = CARTESIAN_POINT('',(-0.5,-0.25,3.5E-02));+#24 = VERTEX_POINT('',#25);+#25 = CARTESIAN_POINT('',(-0.5,-0.25,0.315));+#26 = LINE('',#27,#28);+#27 = CARTESIAN_POINT('',(-0.5,-0.25,0.));+#28 = VECTOR('',#29,1.);+#29 = DIRECTION('',(0.,0.,1.));+#30 = ORIENTED_EDGE('',*,*,#31,.T.);+#31 = EDGE_CURVE('',#22,#32,#34,.T.);+#32 = VERTEX_POINT('',#33);+#33 = CARTESIAN_POINT('',(-0.5,0.25,3.5E-02));+#34 = LINE('',#35,#36);+#35 = CARTESIAN_POINT('',(-0.5,-0.25,3.5E-02));+#36 = VECTOR('',#37,1.);+#37 = DIRECTION('',(0.,1.,0.));+#38 = ORIENTED_EDGE('',*,*,#39,.T.);+#39 = EDGE_CURVE('',#32,#40,#42,.T.);+#40 = VERTEX_POINT('',#41);+#41 = CARTESIAN_POINT('',(-0.5,0.25,0.315));+#42 = LINE('',#43,#44);+#43 = CARTESIAN_POINT('',(-0.5,0.25,0.));+#44 = VECTOR('',#45,1.);+#45 = DIRECTION('',(0.,0.,1.));+#46 = ORIENTED_EDGE('',*,*,#47,.F.);+#47 = EDGE_CURVE('',#24,#40,#48,.T.);+#48 = LINE('',#49,#50);+#49 = CARTESIAN_POINT('',(-0.5,-0.25,0.315));+#50 = VECTOR('',#51,1.);+#51 = DIRECTION('',(0.,1.,0.));+#52 = PLANE('',#53);+#53 = AXIS2_PLACEMENT_3D('',#54,#55,#56);+#54 = CARTESIAN_POINT('',(-0.5,-0.25,0.));+#55 = DIRECTION('',(1.,0.,0.));+#56 = DIRECTION('',(0.,0.,1.));+#57 = ADVANCED_FACE('',(#58),#135,.F.);+#58 = FACE_BOUND('',#59,.F.);+#59 = EDGE_LOOP('',(#60,#70,#77,#78,#87,#95,#104,#112,#120,#128));+#60 = ORIENTED_EDGE('',*,*,#61,.F.);+#61 = EDGE_CURVE('',#62,#64,#66,.T.);+#62 = VERTEX_POINT('',#63);+#63 = CARTESIAN_POINT('',(-0.465,-0.25,-2.775557561563E-17));+#64 = VERTEX_POINT('',#65);+#65 = CARTESIAN_POINT('',(-0.335,-0.25,-2.775557561563E-17));+#66 = LINE('',#67,#68);+#67 = CARTESIAN_POINT('',(-0.5,-0.25,0.));+#68 = VECTOR('',#69,1.);+#69 = DIRECTION('',(1.,0.,0.));+#70 = ORIENTED_EDGE('',*,*,#71,.F.);+#71 = EDGE_CURVE('',#22,#62,#72,.T.);+#72 = CIRCLE('',#73,3.5E-02);+#73 = AXIS2_PLACEMENT_3D('',#74,#75,#76);+#74 = CARTESIAN_POINT('',(-0.465,-0.25,3.5E-02));+#75 = DIRECTION('',(0.,-1.,0.));+#76 = DIRECTION('',(0.,0.,1.));+#77 = ORIENTED_EDGE('',*,*,#21,.T.);+#78 = ORIENTED_EDGE('',*,*,#79,.T.);+#79 = EDGE_CURVE('',#24,#80,#82,.T.);+#80 = VERTEX_POINT('',#81);+#81 = CARTESIAN_POINT('',(-0.465,-0.25,0.35));+#82 = CIRCLE('',#83,3.5E-02);+#83 = AXIS2_PLACEMENT_3D('',#84,#85,#86);+#84 = CARTESIAN_POINT('',(-0.465,-0.25,0.315));+#85 = DIRECTION('',(0.,1.,0.));+#86 = DIRECTION('',(0.,0.,1.));+#87 = ORIENTED_EDGE('',*,*,#88,.T.);+#88 = EDGE_CURVE('',#80,#89,#91,.T.);+#89 = VERTEX_POINT('',#90);+#90 = CARTESIAN_POINT('',(-0.335,-0.25,0.35));+#91 = LINE('',#92,#93);+#92 = CARTESIAN_POINT('',(-0.5,-0.25,0.35));+#93 = VECTOR('',#94,1.);+#94 = DIRECTION('',(1.,0.,0.));+#95 = ORIENTED_EDGE('',*,*,#96,.F.);+#96 = EDGE_CURVE('',#97,#89,#99,.T.);+#97 = VERTEX_POINT('',#98);+#98 = CARTESIAN_POINT('',(-0.3,-0.25,0.315));+#99 = CIRCLE('',#100,3.5E-02);+#100 = AXIS2_PLACEMENT_3D('',#101,#102,#103);+#101 = CARTESIAN_POINT('',(-0.335,-0.25,0.315));+#102 = DIRECTION('',(0.,-1.,0.));+#103 = DIRECTION('',(0.,0.,1.));+#104 = ORIENTED_EDGE('',*,*,#105,.F.);+#105 = EDGE_CURVE('',#106,#97,#108,.T.);+#106 = VERTEX_POINT('',#107);+#107 = CARTESIAN_POINT('',(-0.465,-0.25,0.315));+#108 = LINE('',#109,#110);+#109 = CARTESIAN_POINT('',(-0.465,-0.25,0.315));+#110 = VECTOR('',#111,1.);+#111 = DIRECTION('',(1.,0.,0.));+#112 = ORIENTED_EDGE('',*,*,#113,.F.);+#113 = EDGE_CURVE('',#114,#106,#116,.T.);+#114 = VERTEX_POINT('',#115);+#115 = CARTESIAN_POINT('',(-0.465,-0.25,3.5E-02));+#116 = LINE('',#117,#118);+#117 = CARTESIAN_POINT('',(-0.465,-0.25,3.5E-02));+#118 = VECTOR('',#119,1.);+#119 = DIRECTION('',(0.,0.,1.));+#120 = ORIENTED_EDGE('',*,*,#121,.T.);+#121 = EDGE_CURVE('',#114,#122,#124,.T.);+#122 = VERTEX_POINT('',#123);+#123 = CARTESIAN_POINT('',(-0.3,-0.25,3.5E-02));+#124 = LINE('',#125,#126);+#125 = CARTESIAN_POINT('',(-0.465,-0.25,3.5E-02));+#126 = VECTOR('',#127,1.);+#127 = DIRECTION('',(1.,0.,0.));+#128 = ORIENTED_EDGE('',*,*,#129,.T.);+#129 = EDGE_CURVE('',#122,#64,#130,.T.);+#130 = CIRCLE('',#131,3.5E-02);+#131 = AXIS2_PLACEMENT_3D('',#132,#133,#134);+#132 = CARTESIAN_POINT('',(-0.335,-0.25,3.5E-02));+#133 = DIRECTION('',(0.,1.,0.));+#134 = DIRECTION('',(0.,0.,1.));+#135 = PLANE('',#136);+#136 = AXIS2_PLACEMENT_3D('',#137,#138,#139);+#137 = CARTESIAN_POINT('',(-0.5,-0.25,0.));+#138 = DIRECTION('',(0.,1.,0.));+#139 = DIRECTION('',(0.,0.,1.));+#140 = ADVANCED_FACE('',(#141),#160,.T.);+#141 = FACE_BOUND('',#142,.F.);+#142 = EDGE_LOOP('',(#143,#144,#152,#159));+#143 = ORIENTED_EDGE('',*,*,#71,.T.);+#144 = ORIENTED_EDGE('',*,*,#145,.T.);+#145 = EDGE_CURVE('',#62,#146,#148,.T.);+#146 = VERTEX_POINT('',#147);+#147 = CARTESIAN_POINT('',(-0.465,0.25,-2.775557561563E-17));+#148 = LINE('',#149,#150);+#149 = CARTESIAN_POINT('',(-0.465,-0.25,-2.775557561563E-17));+#150 = VECTOR('',#151,1.);+#151 = DIRECTION('',(0.,1.,0.));+#152 = ORIENTED_EDGE('',*,*,#153,.F.);+#153 = EDGE_CURVE('',#32,#146,#154,.T.);+#154 = CIRCLE('',#155,3.5E-02);+#155 = AXIS2_PLACEMENT_3D('',#156,#157,#158);+#156 = CARTESIAN_POINT('',(-0.465,0.25,3.5E-02));+#157 = DIRECTION('',(0.,-1.,0.));+#158 = DIRECTION('',(0.,0.,1.));+#159 = ORIENTED_EDGE('',*,*,#31,.F.);+#160 = CYLINDRICAL_SURFACE('',#161,3.5E-02);+#161 = AXIS2_PLACEMENT_3D('',#162,#163,#164);+#162 = CARTESIAN_POINT('',(-0.465,-0.25,3.5E-02));+#163 = DIRECTION('',(0.,1.,0.));+#164 = DIRECTION('',(-1.,0.,0.));+#165 = ADVANCED_FACE('',(#166),#185,.T.);+#166 = FACE_BOUND('',#167,.T.);+#167 = EDGE_LOOP('',(#168,#169,#177,#184));+#168 = ORIENTED_EDGE('',*,*,#79,.T.);+#169 = ORIENTED_EDGE('',*,*,#170,.T.);+#170 = EDGE_CURVE('',#80,#171,#173,.T.);+#171 = VERTEX_POINT('',#172);+#172 = CARTESIAN_POINT('',(-0.465,0.25,0.35));+#173 = LINE('',#174,#175);+#174 = CARTESIAN_POINT('',(-0.465,-0.25,0.35));+#175 = VECTOR('',#176,1.);+#176 = DIRECTION('',(0.,1.,0.));+#177 = ORIENTED_EDGE('',*,*,#178,.F.);+#178 = EDGE_CURVE('',#40,#171,#179,.T.);+#179 = CIRCLE('',#180,3.5E-02);+#180 = AXIS2_PLACEMENT_3D('',#181,#182,#183);+#181 = CARTESIAN_POINT('',(-0.465,0.25,0.315));+#182 = DIRECTION('',(0.,1.,0.));+#183 = DIRECTION('',(0.,0.,1.));+#184 = ORIENTED_EDGE('',*,*,#47,.F.);+#185 = CYLINDRICAL_SURFACE('',#186,3.5E-02);+#186 = AXIS2_PLACEMENT_3D('',#187,#188,#189);+#187 = CARTESIAN_POINT('',(-0.465,-0.25,0.315));+#188 = DIRECTION('',(0.,1.,0.));+#189 = DIRECTION('',(-1.,0.,0.));+#190 = ADVANCED_FACE('',(#191),#252,.T.);+#191 = FACE_BOUND('',#192,.T.);+#192 = EDGE_LOOP('',(#193,#201,#202,#203,#204,#212,#221,#229,#237,#245)+);+#193 = ORIENTED_EDGE('',*,*,#194,.F.);+#194 = EDGE_CURVE('',#146,#195,#197,.T.);+#195 = VERTEX_POINT('',#196);+#196 = CARTESIAN_POINT('',(-0.335,0.25,-2.775557561563E-17));+#197 = LINE('',#198,#199);+#198 = CARTESIAN_POINT('',(-0.5,0.25,0.));+#199 = VECTOR('',#200,1.);+#200 = DIRECTION('',(1.,0.,0.));+#201 = ORIENTED_EDGE('',*,*,#153,.F.);+#202 = ORIENTED_EDGE('',*,*,#39,.T.);+#203 = ORIENTED_EDGE('',*,*,#178,.T.);+#204 = ORIENTED_EDGE('',*,*,#205,.T.);+#205 = EDGE_CURVE('',#171,#206,#208,.T.);+#206 = VERTEX_POINT('',#207);+#207 = CARTESIAN_POINT('',(-0.335,0.25,0.35));+#208 = LINE('',#209,#210);+#209 = CARTESIAN_POINT('',(-0.5,0.25,0.35));+#210 = VECTOR('',#211,1.);+#211 = DIRECTION('',(1.,0.,0.));+#212 = ORIENTED_EDGE('',*,*,#213,.F.);+#213 = EDGE_CURVE('',#214,#206,#216,.T.);+#214 = VERTEX_POINT('',#215);+#215 = CARTESIAN_POINT('',(-0.3,0.25,0.315));+#216 = CIRCLE('',#217,3.5E-02);+#217 = AXIS2_PLACEMENT_3D('',#218,#219,#220);+#218 = CARTESIAN_POINT('',(-0.335,0.25,0.315));+#219 = DIRECTION('',(0.,-1.,0.));+#220 = DIRECTION('',(0.,0.,1.));+#221 = ORIENTED_EDGE('',*,*,#222,.F.);+#222 = EDGE_CURVE('',#223,#214,#225,.T.);+#223 = VERTEX_POINT('',#224);+#224 = CARTESIAN_POINT('',(-0.465,0.25,0.315));+#225 = LINE('',#226,#227);+#226 = CARTESIAN_POINT('',(-0.465,0.25,0.315));+#227 = VECTOR('',#228,1.);+#228 = DIRECTION('',(1.,0.,0.));+#229 = ORIENTED_EDGE('',*,*,#230,.F.);+#230 = EDGE_CURVE('',#231,#223,#233,.T.);+#231 = VERTEX_POINT('',#232);+#232 = CARTESIAN_POINT('',(-0.465,0.25,3.5E-02));+#233 = LINE('',#234,#235);+#234 = CARTESIAN_POINT('',(-0.465,0.25,3.5E-02));+#235 = VECTOR('',#236,1.);+#236 = DIRECTION('',(0.,0.,1.));+#237 = ORIENTED_EDGE('',*,*,#238,.T.);+#238 = EDGE_CURVE('',#231,#239,#241,.T.);+#239 = VERTEX_POINT('',#240);+#240 = CARTESIAN_POINT('',(-0.3,0.25,3.5E-02));+#241 = LINE('',#242,#243);+#242 = CARTESIAN_POINT('',(-0.465,0.25,3.5E-02));+#243 = VECTOR('',#244,1.);+#244 = DIRECTION('',(1.,0.,0.));+#245 = ORIENTED_EDGE('',*,*,#246,.T.);+#246 = EDGE_CURVE('',#239,#195,#247,.T.);+#247 = CIRCLE('',#248,3.5E-02);+#248 = AXIS2_PLACEMENT_3D('',#249,#250,#251);+#249 = CARTESIAN_POINT('',(-0.335,0.25,3.5E-02));+#250 = DIRECTION('',(0.,1.,0.));+#251 = DIRECTION('',(0.,0.,1.));+#252 = PLANE('',#253);+#253 = AXIS2_PLACEMENT_3D('',#254,#255,#256);+#254 = CARTESIAN_POINT('',(-0.5,0.25,0.));+#255 = DIRECTION('',(0.,1.,0.));+#256 = DIRECTION('',(0.,0.,1.));+#257 = ADVANCED_FACE('',(#258),#269,.F.);+#258 = FACE_BOUND('',#259,.F.);+#259 = EDGE_LOOP('',(#260,#261,#262,#263));+#260 = ORIENTED_EDGE('',*,*,#194,.F.);+#261 = ORIENTED_EDGE('',*,*,#145,.F.);+#262 = ORIENTED_EDGE('',*,*,#61,.T.);+#263 = ORIENTED_EDGE('',*,*,#264,.T.);+#264 = EDGE_CURVE('',#64,#195,#265,.T.);+#265 = LINE('',#266,#267);+#266 = CARTESIAN_POINT('',(-0.335,-0.25,-2.775557561563E-17));+#267 = VECTOR('',#268,1.);+#268 = DIRECTION('',(0.,1.,0.));+#269 = PLANE('',#270);+#270 = AXIS2_PLACEMENT_3D('',#271,#272,#273);+#271 = CARTESIAN_POINT('',(-0.5,-0.25,0.));+#272 = DIRECTION('',(0.,0.,1.));+#273 = DIRECTION('',(1.,0.,0.));+#274 = ADVANCED_FACE('',(#275),#286,.T.);+#275 = FACE_BOUND('',#276,.T.);+#276 = EDGE_LOOP('',(#277,#278,#279,#280));+#277 = ORIENTED_EDGE('',*,*,#129,.T.);+#278 = ORIENTED_EDGE('',*,*,#264,.T.);+#279 = ORIENTED_EDGE('',*,*,#246,.F.);+#280 = ORIENTED_EDGE('',*,*,#281,.F.);+#281 = EDGE_CURVE('',#122,#239,#282,.T.);+#282 = LINE('',#283,#284);+#283 = CARTESIAN_POINT('',(-0.3,-0.25,3.5E-02));+#284 = VECTOR('',#285,1.);+#285 = DIRECTION('',(0.,1.,0.));+#286 = CYLINDRICAL_SURFACE('',#287,3.5E-02);+#287 = AXIS2_PLACEMENT_3D('',#288,#289,#290);+#288 = CARTESIAN_POINT('',(-0.335,-0.25,3.5E-02));+#289 = DIRECTION('',(0.,1.,0.));+#290 = DIRECTION('',(1.,0.,0.));+#291 = ADVANCED_FACE('',(#292),#335,.F.);+#292 = FACE_BOUND('',#293,.F.);+#293 = EDGE_LOOP('',(#294,#295,#296,#297,#305,#313,#321,#329));+#294 = ORIENTED_EDGE('',*,*,#121,.F.);+#295 = ORIENTED_EDGE('',*,*,#113,.T.);+#296 = ORIENTED_EDGE('',*,*,#105,.T.);+#297 = ORIENTED_EDGE('',*,*,#298,.T.);+#298 = EDGE_CURVE('',#97,#299,#301,.T.);+#299 = VERTEX_POINT('',#300);+#300 = CARTESIAN_POINT('',(0.3,-0.25,0.315));+#301 = LINE('',#302,#303);+#302 = CARTESIAN_POINT('',(-0.3,-0.25,0.315));+#303 = VECTOR('',#304,1.);+#304 = DIRECTION('',(1.,0.,0.));+#305 = ORIENTED_EDGE('',*,*,#306,.T.);+#306 = EDGE_CURVE('',#299,#307,#309,.T.);+#307 = VERTEX_POINT('',#308);+#308 = CARTESIAN_POINT('',(0.465,-0.25,0.315));+#309 = LINE('',#310,#311);+#310 = CARTESIAN_POINT('',(-0.465,-0.25,0.315));+#311 = VECTOR('',#312,1.);+#312 = DIRECTION('',(1.,0.,0.));+#313 = ORIENTED_EDGE('',*,*,#314,.F.);+#314 = EDGE_CURVE('',#315,#307,#317,.T.);+#315 = VERTEX_POINT('',#316);+#316 = CARTESIAN_POINT('',(0.465,-0.25,3.5E-02));+#317 = LINE('',#318,#319);+#318 = CARTESIAN_POINT('',(0.465,-0.25,3.5E-02));+#319 = VECTOR('',#320,1.);+#320 = DIRECTION('',(0.,0.,1.));+#321 = ORIENTED_EDGE('',*,*,#322,.F.);+#322 = EDGE_CURVE('',#323,#315,#325,.T.);+#323 = VERTEX_POINT('',#324);+#324 = CARTESIAN_POINT('',(0.3,-0.25,3.5E-02));+#325 = LINE('',#326,#327);+#326 = CARTESIAN_POINT('',(-0.465,-0.25,3.5E-02));+#327 = VECTOR('',#328,1.);+#328 = DIRECTION('',(1.,0.,0.));+#329 = ORIENTED_EDGE('',*,*,#330,.F.);+#330 = EDGE_CURVE('',#122,#323,#331,.T.);+#331 = LINE('',#332,#333);+#332 = CARTESIAN_POINT('',(-0.465,-0.25,3.5E-02));+#333 = VECTOR('',#334,1.);+#334 = DIRECTION('',(1.,0.,0.));+#335 = PLANE('',#336);+#336 = AXIS2_PLACEMENT_3D('',#337,#338,#339);+#337 = CARTESIAN_POINT('',(-0.465,-0.25,3.5E-02));+#338 = DIRECTION('',(0.,1.,0.));+#339 = DIRECTION('',(0.,0.,1.));+#340 = ADVANCED_FACE('',(#341),#352,.T.);+#341 = FACE_BOUND('',#342,.T.);+#342 = EDGE_LOOP('',(#343,#344,#345,#346));+#343 = ORIENTED_EDGE('',*,*,#205,.F.);+#344 = ORIENTED_EDGE('',*,*,#170,.F.);+#345 = ORIENTED_EDGE('',*,*,#88,.T.);+#346 = ORIENTED_EDGE('',*,*,#347,.T.);+#347 = EDGE_CURVE('',#89,#206,#348,.T.);+#348 = LINE('',#349,#350);+#349 = CARTESIAN_POINT('',(-0.335,-0.25,0.35));+#350 = VECTOR('',#351,1.);+#351 = DIRECTION('',(0.,1.,0.));+#352 = PLANE('',#353);+#353 = AXIS2_PLACEMENT_3D('',#354,#355,#356);+#354 = CARTESIAN_POINT('',(-0.5,-0.25,0.35));+#355 = DIRECTION('',(0.,0.,1.));+#356 = DIRECTION('',(1.,0.,0.));+#357 = ADVANCED_FACE('',(#358),#369,.T.);+#358 = FACE_BOUND('',#359,.F.);+#359 = EDGE_LOOP('',(#360,#361,#362,#363));+#360 = ORIENTED_EDGE('',*,*,#96,.T.);+#361 = ORIENTED_EDGE('',*,*,#347,.T.);+#362 = ORIENTED_EDGE('',*,*,#213,.F.);+#363 = ORIENTED_EDGE('',*,*,#364,.F.);+#364 = EDGE_CURVE('',#97,#214,#365,.T.);+#365 = LINE('',#366,#367);+#366 = CARTESIAN_POINT('',(-0.3,-0.25,0.315));+#367 = VECTOR('',#368,1.);+#368 = DIRECTION('',(0.,1.,0.));+#369 = CYLINDRICAL_SURFACE('',#370,3.5E-02);+#370 = AXIS2_PLACEMENT_3D('',#371,#372,#373);+#371 = CARTESIAN_POINT('',(-0.335,-0.25,0.315));+#372 = DIRECTION('',(0.,1.,0.));+#373 = DIRECTION('',(1.,0.,0.));+#374 = ADVANCED_FACE('',(#375),#418,.T.);+#375 = FACE_BOUND('',#376,.T.);+#376 = EDGE_LOOP('',(#377,#378,#379,#380,#388,#396,#404,#412));+#377 = ORIENTED_EDGE('',*,*,#238,.F.);+#378 = ORIENTED_EDGE('',*,*,#230,.T.);+#379 = ORIENTED_EDGE('',*,*,#222,.T.);+#380 = ORIENTED_EDGE('',*,*,#381,.T.);+#381 = EDGE_CURVE('',#214,#382,#384,.T.);+#382 = VERTEX_POINT('',#383);+#383 = CARTESIAN_POINT('',(0.3,0.25,0.315));+#384 = LINE('',#385,#386);+#385 = CARTESIAN_POINT('',(-0.3,0.25,0.315));+#386 = VECTOR('',#387,1.);+#387 = DIRECTION('',(1.,0.,0.));+#388 = ORIENTED_EDGE('',*,*,#389,.T.);+#389 = EDGE_CURVE('',#382,#390,#392,.T.);+#390 = VERTEX_POINT('',#391);+#391 = CARTESIAN_POINT('',(0.465,0.25,0.315));+#392 = LINE('',#393,#394);+#393 = CARTESIAN_POINT('',(-0.465,0.25,0.315));+#394 = VECTOR('',#395,1.);+#395 = DIRECTION('',(1.,0.,0.));+#396 = ORIENTED_EDGE('',*,*,#397,.F.);+#397 = EDGE_CURVE('',#398,#390,#400,.T.);+#398 = VERTEX_POINT('',#399);+#399 = CARTESIAN_POINT('',(0.465,0.25,3.5E-02));+#400 = LINE('',#401,#402);+#401 = CARTESIAN_POINT('',(0.465,0.25,3.5E-02));+#402 = VECTOR('',#403,1.);+#403 = DIRECTION('',(0.,0.,1.));+#404 = ORIENTED_EDGE('',*,*,#405,.F.);+#405 = EDGE_CURVE('',#406,#398,#408,.T.);+#406 = VERTEX_POINT('',#407);+#407 = CARTESIAN_POINT('',(0.3,0.25,3.5E-02));+#408 = LINE('',#409,#410);+#409 = CARTESIAN_POINT('',(-0.465,0.25,3.5E-02));+#410 = VECTOR('',#411,1.);+#411 = DIRECTION('',(1.,0.,0.));+#412 = ORIENTED_EDGE('',*,*,#413,.F.);+#413 = EDGE_CURVE('',#239,#406,#414,.T.);+#414 = LINE('',#415,#416);+#415 = CARTESIAN_POINT('',(-0.465,0.25,3.5E-02));+#416 = VECTOR('',#417,1.);+#417 = DIRECTION('',(1.,0.,0.));+#418 = PLANE('',#419);+#419 = AXIS2_PLACEMENT_3D('',#420,#421,#422);+#420 = CARTESIAN_POINT('',(-0.465,0.25,3.5E-02));+#421 = DIRECTION('',(0.,1.,0.));+#422 = DIRECTION('',(0.,0.,1.));+#423 = ADVANCED_FACE('',(#424),#435,.F.);+#424 = FACE_BOUND('',#425,.F.);+#425 = EDGE_LOOP('',(#426,#427,#428,#434));+#426 = ORIENTED_EDGE('',*,*,#281,.F.);+#427 = ORIENTED_EDGE('',*,*,#330,.T.);+#428 = ORIENTED_EDGE('',*,*,#429,.T.);+#429 = EDGE_CURVE('',#323,#406,#430,.T.);+#430 = LINE('',#431,#432);+#431 = CARTESIAN_POINT('',(0.3,-0.25,3.5E-02));+#432 = VECTOR('',#433,1.);+#433 = DIRECTION('',(0.,1.,0.));+#434 = ORIENTED_EDGE('',*,*,#413,.F.);+#435 = PLANE('',#436);+#436 = AXIS2_PLACEMENT_3D('',#437,#438,#439);+#437 = CARTESIAN_POINT('',(-0.465,-0.25,3.5E-02));+#438 = DIRECTION('',(0.,0.,1.));+#439 = DIRECTION('',(1.,0.,0.));+#440 = ADVANCED_FACE('',(#441),#504,.F.);+#441 = FACE_BOUND('',#442,.F.);+#442 = EDGE_LOOP('',(#443,#453,#460,#461,#462,#463,#472,#480,#489,#497)+);+#443 = ORIENTED_EDGE('',*,*,#444,.F.);+#444 = EDGE_CURVE('',#445,#447,#449,.T.);+#445 = VERTEX_POINT('',#446);+#446 = CARTESIAN_POINT('',(0.335,-0.25,-2.775557561563E-17));+#447 = VERTEX_POINT('',#448);+#448 = CARTESIAN_POINT('',(0.465,-0.25,-2.775557561563E-17));+#449 = LINE('',#450,#451);+#450 = CARTESIAN_POINT('',(0.3,-0.25,0.));+#451 = VECTOR('',#452,1.);+#452 = DIRECTION('',(1.,0.,0.));+#453 = ORIENTED_EDGE('',*,*,#454,.F.);+#454 = EDGE_CURVE('',#323,#445,#455,.T.);+#455 = CIRCLE('',#456,3.5E-02);+#456 = AXIS2_PLACEMENT_3D('',#457,#458,#459);+#457 = CARTESIAN_POINT('',(0.335,-0.25,3.5E-02));+#458 = DIRECTION('',(0.,-1.,0.));+#459 = DIRECTION('',(0.,0.,1.));+#460 = ORIENTED_EDGE('',*,*,#322,.T.);+#461 = ORIENTED_EDGE('',*,*,#314,.T.);+#462 = ORIENTED_EDGE('',*,*,#306,.F.);+#463 = ORIENTED_EDGE('',*,*,#464,.T.);+#464 = EDGE_CURVE('',#299,#465,#467,.T.);+#465 = VERTEX_POINT('',#466);+#466 = CARTESIAN_POINT('',(0.335,-0.25,0.35));+#467 = CIRCLE('',#468,3.5E-02);+#468 = AXIS2_PLACEMENT_3D('',#469,#470,#471);+#469 = CARTESIAN_POINT('',(0.335,-0.25,0.315));+#470 = DIRECTION('',(0.,1.,0.));+#471 = DIRECTION('',(0.,0.,1.));+#472 = ORIENTED_EDGE('',*,*,#473,.T.);+#473 = EDGE_CURVE('',#465,#474,#476,.T.);+#474 = VERTEX_POINT('',#475);+#475 = CARTESIAN_POINT('',(0.465,-0.25,0.35));+#476 = LINE('',#477,#478);+#477 = CARTESIAN_POINT('',(0.3,-0.25,0.35));+#478 = VECTOR('',#479,1.);+#479 = DIRECTION('',(1.,0.,0.));+#480 = ORIENTED_EDGE('',*,*,#481,.F.);+#481 = EDGE_CURVE('',#482,#474,#484,.T.);+#482 = VERTEX_POINT('',#483);+#483 = CARTESIAN_POINT('',(0.5,-0.25,0.315));+#484 = CIRCLE('',#485,3.5E-02);+#485 = AXIS2_PLACEMENT_3D('',#486,#487,#488);+#486 = CARTESIAN_POINT('',(0.465,-0.25,0.315));+#487 = DIRECTION('',(0.,-1.,0.));+#488 = DIRECTION('',(0.,0.,1.));+#489 = ORIENTED_EDGE('',*,*,#490,.F.);+#490 = EDGE_CURVE('',#491,#482,#493,.T.);+#491 = VERTEX_POINT('',#492);+#492 = CARTESIAN_POINT('',(0.5,-0.25,3.5E-02));+#493 = LINE('',#494,#495);+#494 = CARTESIAN_POINT('',(0.5,-0.25,0.));+#495 = VECTOR('',#496,1.);+#496 = DIRECTION('',(0.,0.,1.));+#497 = ORIENTED_EDGE('',*,*,#498,.T.);+#498 = EDGE_CURVE('',#491,#447,#499,.T.);+#499 = CIRCLE('',#500,3.5E-02);+#500 = AXIS2_PLACEMENT_3D('',#501,#502,#503);+#501 = CARTESIAN_POINT('',(0.465,-0.25,3.5E-02));+#502 = DIRECTION('',(0.,1.,0.));+#503 = DIRECTION('',(0.,0.,1.));+#504 = PLANE('',#505);+#505 = AXIS2_PLACEMENT_3D('',#506,#507,#508);+#506 = CARTESIAN_POINT('',(0.3,-0.25,0.));+#507 = DIRECTION('',(0.,1.,0.));+#508 = DIRECTION('',(0.,0.,1.));+#509 = ADVANCED_FACE('',(#510),#535,.F.);+#510 = FACE_BOUND('',#511,.F.);+#511 = EDGE_LOOP('',(#512,#513,#521,#529));+#512 = ORIENTED_EDGE('',*,*,#298,.F.);+#513 = ORIENTED_EDGE('',*,*,#514,.T.);+#514 = EDGE_CURVE('',#97,#515,#517,.T.);+#515 = VERTEX_POINT('',#516);+#516 = CARTESIAN_POINT('',(-0.3,-0.25,0.35));+#517 = LINE('',#518,#519);+#518 = CARTESIAN_POINT('',(-0.3,-0.25,0.315));+#519 = VECTOR('',#520,1.);+#520 = DIRECTION('',(0.,0.,1.));+#521 = ORIENTED_EDGE('',*,*,#522,.T.);+#522 = EDGE_CURVE('',#515,#523,#525,.T.);+#523 = VERTEX_POINT('',#524);+#524 = CARTESIAN_POINT('',(0.3,-0.25,0.35));+#525 = LINE('',#526,#527);+#526 = CARTESIAN_POINT('',(-0.3,-0.25,0.35));+#527 = VECTOR('',#528,1.);+#528 = DIRECTION('',(1.,0.,0.));+#529 = ORIENTED_EDGE('',*,*,#530,.F.);+#530 = EDGE_CURVE('',#299,#523,#531,.T.);+#531 = LINE('',#532,#533);+#532 = CARTESIAN_POINT('',(0.3,-0.25,0.315));+#533 = VECTOR('',#534,1.);+#534 = DIRECTION('',(0.,0.,1.));+#535 = PLANE('',#536);+#536 = AXIS2_PLACEMENT_3D('',#537,#538,#539);+#537 = CARTESIAN_POINT('',(-0.3,-0.25,0.315));+#538 = DIRECTION('',(0.,1.,0.));+#539 = DIRECTION('',(0.,0.,1.));+#540 = ADVANCED_FACE('',(#541),#559,.F.);+#541 = FACE_BOUND('',#542,.F.);+#542 = EDGE_LOOP('',(#543,#544,#545,#553));+#543 = ORIENTED_EDGE('',*,*,#514,.F.);+#544 = ORIENTED_EDGE('',*,*,#364,.T.);+#545 = ORIENTED_EDGE('',*,*,#546,.T.);+#546 = EDGE_CURVE('',#214,#547,#549,.T.);+#547 = VERTEX_POINT('',#548);+#548 = CARTESIAN_POINT('',(-0.3,0.25,0.35));+#549 = LINE('',#550,#551);+#550 = CARTESIAN_POINT('',(-0.3,0.25,0.315));+#551 = VECTOR('',#552,1.);+#552 = DIRECTION('',(0.,0.,1.));+#553 = ORIENTED_EDGE('',*,*,#554,.F.);+#554 = EDGE_CURVE('',#515,#547,#555,.T.);+#555 = LINE('',#556,#557);+#556 = CARTESIAN_POINT('',(-0.3,-0.25,0.35));+#557 = VECTOR('',#558,1.);+#558 = DIRECTION('',(0.,1.,0.));+#559 = PLANE('',#560);+#560 = AXIS2_PLACEMENT_3D('',#561,#562,#563);+#561 = CARTESIAN_POINT('',(-0.3,-0.25,0.315));+#562 = DIRECTION('',(1.,0.,0.));+#563 = DIRECTION('',(0.,0.,1.));+#564 = ADVANCED_FACE('',(#565),#628,.T.);+#565 = FACE_BOUND('',#566,.T.);+#566 = EDGE_LOOP('',(#567,#577,#584,#585,#586,#587,#596,#604,#613,#621)+);+#567 = ORIENTED_EDGE('',*,*,#568,.F.);+#568 = EDGE_CURVE('',#569,#571,#573,.T.);+#569 = VERTEX_POINT('',#570);+#570 = CARTESIAN_POINT('',(0.335,0.25,-2.775557561563E-17));+#571 = VERTEX_POINT('',#572);+#572 = CARTESIAN_POINT('',(0.465,0.25,-2.775557561563E-17));+#573 = LINE('',#574,#575);+#574 = CARTESIAN_POINT('',(0.3,0.25,0.));+#575 = VECTOR('',#576,1.);+#576 = DIRECTION('',(1.,0.,0.));+#577 = ORIENTED_EDGE('',*,*,#578,.F.);+#578 = EDGE_CURVE('',#406,#569,#579,.T.);+#579 = CIRCLE('',#580,3.5E-02);+#580 = AXIS2_PLACEMENT_3D('',#581,#582,#583);+#581 = CARTESIAN_POINT('',(0.335,0.25,3.5E-02));+#582 = DIRECTION('',(0.,-1.,0.));+#583 = DIRECTION('',(0.,0.,1.));+#584 = ORIENTED_EDGE('',*,*,#405,.T.);+#585 = ORIENTED_EDGE('',*,*,#397,.T.);+#586 = ORIENTED_EDGE('',*,*,#389,.F.);+#587 = ORIENTED_EDGE('',*,*,#588,.T.);+#588 = EDGE_CURVE('',#382,#589,#591,.T.);+#589 = VERTEX_POINT('',#590);+#590 = CARTESIAN_POINT('',(0.335,0.25,0.35));+#591 = CIRCLE('',#592,3.5E-02);+#592 = AXIS2_PLACEMENT_3D('',#593,#594,#595);+#593 = CARTESIAN_POINT('',(0.335,0.25,0.315));+#594 = DIRECTION('',(0.,1.,0.));+#595 = DIRECTION('',(0.,0.,1.));+#596 = ORIENTED_EDGE('',*,*,#597,.T.);+#597 = EDGE_CURVE('',#589,#598,#600,.T.);+#598 = VERTEX_POINT('',#599);+#599 = CARTESIAN_POINT('',(0.465,0.25,0.35));+#600 = LINE('',#601,#602);+#601 = CARTESIAN_POINT('',(0.3,0.25,0.35));+#602 = VECTOR('',#603,1.);+#603 = DIRECTION('',(1.,0.,0.));+#604 = ORIENTED_EDGE('',*,*,#605,.F.);+#605 = EDGE_CURVE('',#606,#598,#608,.T.);+#606 = VERTEX_POINT('',#607);+#607 = CARTESIAN_POINT('',(0.5,0.25,0.315));+#608 = CIRCLE('',#609,3.5E-02);+#609 = AXIS2_PLACEMENT_3D('',#610,#611,#612);+#610 = CARTESIAN_POINT('',(0.465,0.25,0.315));+#611 = DIRECTION('',(0.,-1.,0.));+#612 = DIRECTION('',(0.,0.,1.));+#613 = ORIENTED_EDGE('',*,*,#614,.F.);+#614 = EDGE_CURVE('',#615,#606,#617,.T.);+#615 = VERTEX_POINT('',#616);+#616 = CARTESIAN_POINT('',(0.5,0.25,3.5E-02));+#617 = LINE('',#618,#619);+#618 = CARTESIAN_POINT('',(0.5,0.25,0.));+#619 = VECTOR('',#620,1.);+#620 = DIRECTION('',(0.,0.,1.));+#621 = ORIENTED_EDGE('',*,*,#622,.T.);+#622 = EDGE_CURVE('',#615,#571,#623,.T.);+#623 = CIRCLE('',#624,3.5E-02);+#624 = AXIS2_PLACEMENT_3D('',#625,#626,#627);+#625 = CARTESIAN_POINT('',(0.465,0.25,3.5E-02));+#626 = DIRECTION('',(0.,1.,0.));+#627 = DIRECTION('',(0.,0.,1.));+#628 = PLANE('',#629);+#629 = AXIS2_PLACEMENT_3D('',#630,#631,#632);+#630 = CARTESIAN_POINT('',(0.3,0.25,0.));+#631 = DIRECTION('',(0.,1.,0.));+#632 = DIRECTION('',(0.,0.,1.));+#633 = ADVANCED_FACE('',(#634),#652,.T.);+#634 = FACE_BOUND('',#635,.T.);+#635 = EDGE_LOOP('',(#636,#637,#638,#646));+#636 = ORIENTED_EDGE('',*,*,#381,.F.);+#637 = ORIENTED_EDGE('',*,*,#546,.T.);+#638 = ORIENTED_EDGE('',*,*,#639,.T.);+#639 = EDGE_CURVE('',#547,#640,#642,.T.);+#640 = VERTEX_POINT('',#641);+#641 = CARTESIAN_POINT('',(0.3,0.25,0.35));+#642 = LINE('',#643,#644);+#643 = CARTESIAN_POINT('',(-0.3,0.25,0.35));+#644 = VECTOR('',#645,1.);+#645 = DIRECTION('',(1.,0.,0.));+#646 = ORIENTED_EDGE('',*,*,#647,.F.);+#647 = EDGE_CURVE('',#382,#640,#648,.T.);+#648 = LINE('',#649,#650);+#649 = CARTESIAN_POINT('',(0.3,0.25,0.315));+#650 = VECTOR('',#651,1.);+#651 = DIRECTION('',(0.,0.,1.));+#652 = PLANE('',#653);+#653 = AXIS2_PLACEMENT_3D('',#654,#655,#656);+#654 = CARTESIAN_POINT('',(-0.3,0.25,0.315));+#655 = DIRECTION('',(0.,1.,0.));+#656 = DIRECTION('',(0.,0.,1.));+#657 = ADVANCED_FACE('',(#658),#669,.T.);+#658 = FACE_BOUND('',#659,.F.);+#659 = EDGE_LOOP('',(#660,#661,#667,#668));+#660 = ORIENTED_EDGE('',*,*,#454,.T.);+#661 = ORIENTED_EDGE('',*,*,#662,.T.);+#662 = EDGE_CURVE('',#445,#569,#663,.T.);+#663 = LINE('',#664,#665);+#664 = CARTESIAN_POINT('',(0.335,-0.25,-2.775557561563E-17));+#665 = VECTOR('',#666,1.);+#666 = DIRECTION('',(0.,1.,0.));+#667 = ORIENTED_EDGE('',*,*,#578,.F.);+#668 = ORIENTED_EDGE('',*,*,#429,.F.);+#669 = CYLINDRICAL_SURFACE('',#670,3.5E-02);+#670 = AXIS2_PLACEMENT_3D('',#671,#672,#673);+#671 = CARTESIAN_POINT('',(0.335,-0.25,3.5E-02));+#672 = DIRECTION('',(0.,1.,0.));+#673 = DIRECTION('',(-1.,0.,0.));+#674 = ADVANCED_FACE('',(#675),#686,.F.);+#675 = FACE_BOUND('',#676,.F.);+#676 = EDGE_LOOP('',(#677,#678,#679,#680));+#677 = ORIENTED_EDGE('',*,*,#568,.F.);+#678 = ORIENTED_EDGE('',*,*,#662,.F.);+#679 = ORIENTED_EDGE('',*,*,#444,.T.);+#680 = ORIENTED_EDGE('',*,*,#681,.T.);+#681 = EDGE_CURVE('',#447,#571,#682,.T.);+#682 = LINE('',#683,#684);+#683 = CARTESIAN_POINT('',(0.465,-0.25,-2.775557561563E-17));+#684 = VECTOR('',#685,1.);+#685 = DIRECTION('',(0.,1.,0.));+#686 = PLANE('',#687);+#687 = AXIS2_PLACEMENT_3D('',#688,#689,#690);+#688 = CARTESIAN_POINT('',(0.3,-0.25,0.));+#689 = DIRECTION('',(0.,0.,1.));+#690 = DIRECTION('',(1.,0.,0.));+#691 = ADVANCED_FACE('',(#692),#703,.T.);+#692 = FACE_BOUND('',#693,.T.);+#693 = EDGE_LOOP('',(#694,#695,#696,#697));+#694 = ORIENTED_EDGE('',*,*,#498,.T.);+#695 = ORIENTED_EDGE('',*,*,#681,.T.);+#696 = ORIENTED_EDGE('',*,*,#622,.F.);+#697 = ORIENTED_EDGE('',*,*,#698,.F.);+#698 = EDGE_CURVE('',#491,#615,#699,.T.);+#699 = LINE('',#700,#701);+#700 = CARTESIAN_POINT('',(0.5,-0.25,3.5E-02));+#701 = VECTOR('',#702,1.);+#702 = DIRECTION('',(0.,1.,0.));+#703 = CYLINDRICAL_SURFACE('',#704,3.5E-02);+#704 = AXIS2_PLACEMENT_3D('',#705,#706,#707);+#705 = CARTESIAN_POINT('',(0.465,-0.25,3.5E-02));+#706 = DIRECTION('',(0.,1.,0.));+#707 = DIRECTION('',(1.,0.,0.));+#708 = ADVANCED_FACE('',(#709),#720,.T.);+#709 = FACE_BOUND('',#710,.T.);+#710 = EDGE_LOOP('',(#711,#712,#713,#714));+#711 = ORIENTED_EDGE('',*,*,#490,.F.);+#712 = ORIENTED_EDGE('',*,*,#698,.T.);+#713 = ORIENTED_EDGE('',*,*,#614,.T.);+#714 = ORIENTED_EDGE('',*,*,#715,.F.);+#715 = EDGE_CURVE('',#482,#606,#716,.T.);+#716 = LINE('',#717,#718);+#717 = CARTESIAN_POINT('',(0.5,-0.25,0.315));+#718 = VECTOR('',#719,1.);+#719 = DIRECTION('',(0.,1.,0.));+#720 = PLANE('',#721);+#721 = AXIS2_PLACEMENT_3D('',#722,#723,#724);+#722 = CARTESIAN_POINT('',(0.5,-0.25,0.));+#723 = DIRECTION('',(1.,0.,0.));+#724 = DIRECTION('',(0.,0.,1.));+#725 = ADVANCED_FACE('',(#726),#737,.T.);+#726 = FACE_BOUND('',#727,.F.);+#727 = EDGE_LOOP('',(#728,#729,#735,#736));+#728 = ORIENTED_EDGE('',*,*,#481,.T.);+#729 = ORIENTED_EDGE('',*,*,#730,.T.);+#730 = EDGE_CURVE('',#474,#598,#731,.T.);+#731 = LINE('',#732,#733);+#732 = CARTESIAN_POINT('',(0.465,-0.25,0.35));+#733 = VECTOR('',#734,1.);+#734 = DIRECTION('',(0.,1.,0.));+#735 = ORIENTED_EDGE('',*,*,#605,.F.);+#736 = ORIENTED_EDGE('',*,*,#715,.F.);+#737 = CYLINDRICAL_SURFACE('',#738,3.5E-02);+#738 = AXIS2_PLACEMENT_3D('',#739,#740,#741);+#739 = CARTESIAN_POINT('',(0.465,-0.25,0.315));+#740 = DIRECTION('',(0.,1.,0.));+#741 = DIRECTION('',(1.,0.,0.));+#742 = ADVANCED_FACE('',(#743),#754,.T.);+#743 = FACE_BOUND('',#744,.T.);+#744 = EDGE_LOOP('',(#745,#746,#752,#753));+#745 = ORIENTED_EDGE('',*,*,#597,.F.);+#746 = ORIENTED_EDGE('',*,*,#747,.F.);+#747 = EDGE_CURVE('',#465,#589,#748,.T.);+#748 = LINE('',#749,#750);+#749 = CARTESIAN_POINT('',(0.335,-0.25,0.35));+#750 = VECTOR('',#751,1.);+#751 = DIRECTION('',(0.,1.,0.));+#752 = ORIENTED_EDGE('',*,*,#473,.T.);+#753 = ORIENTED_EDGE('',*,*,#730,.T.);+#754 = PLANE('',#755);+#755 = AXIS2_PLACEMENT_3D('',#756,#757,#758);+#756 = CARTESIAN_POINT('',(0.3,-0.25,0.35));+#757 = DIRECTION('',(0.,0.,1.));+#758 = DIRECTION('',(1.,0.,0.));+#759 = ADVANCED_FACE('',(#760),#771,.T.);+#760 = FACE_BOUND('',#761,.T.);+#761 = EDGE_LOOP('',(#762,#763,#764,#765));+#762 = ORIENTED_EDGE('',*,*,#464,.T.);+#763 = ORIENTED_EDGE('',*,*,#747,.T.);+#764 = ORIENTED_EDGE('',*,*,#588,.F.);+#765 = ORIENTED_EDGE('',*,*,#766,.F.);+#766 = EDGE_CURVE('',#299,#382,#767,.T.);+#767 = LINE('',#768,#769);+#768 = CARTESIAN_POINT('',(0.3,-0.25,0.315));+#769 = VECTOR('',#770,1.);+#770 = DIRECTION('',(0.,1.,0.));+#771 = CYLINDRICAL_SURFACE('',#772,3.5E-02);+#772 = AXIS2_PLACEMENT_3D('',#773,#774,#775);+#773 = CARTESIAN_POINT('',(0.335,-0.25,0.315));+#774 = DIRECTION('',(0.,1.,0.));+#775 = DIRECTION('',(-1.,0.,0.));+#776 = ADVANCED_FACE('',(#777),#788,.T.);+#777 = FACE_BOUND('',#778,.T.);+#778 = EDGE_LOOP('',(#779,#780,#781,#782));+#779 = ORIENTED_EDGE('',*,*,#530,.F.);+#780 = ORIENTED_EDGE('',*,*,#766,.T.);+#781 = ORIENTED_EDGE('',*,*,#647,.T.);+#782 = ORIENTED_EDGE('',*,*,#783,.F.);+#783 = EDGE_CURVE('',#523,#640,#784,.T.);+#784 = LINE('',#785,#786);+#785 = CARTESIAN_POINT('',(0.3,-0.25,0.35));+#786 = VECTOR('',#787,1.);+#787 = DIRECTION('',(0.,1.,0.));+#788 = PLANE('',#789);+#789 = AXIS2_PLACEMENT_3D('',#790,#791,#792);+#790 = CARTESIAN_POINT('',(0.3,-0.25,0.315));+#791 = DIRECTION('',(1.,0.,0.));+#792 = DIRECTION('',(0.,0.,1.));+#793 = ADVANCED_FACE('',(#794),#800,.T.);+#794 = FACE_BOUND('',#795,.T.);+#795 = EDGE_LOOP('',(#796,#797,#798,#799));+#796 = ORIENTED_EDGE('',*,*,#554,.F.);+#797 = ORIENTED_EDGE('',*,*,#522,.T.);+#798 = ORIENTED_EDGE('',*,*,#783,.T.);+#799 = ORIENTED_EDGE('',*,*,#639,.F.);+#800 = PLANE('',#801);+#801 = AXIS2_PLACEMENT_3D('',#802,#803,#804);+#802 = CARTESIAN_POINT('',(-0.3,-0.25,0.35));+#803 = DIRECTION('',(0.,0.,1.));+#804 = DIRECTION('',(1.,0.,0.));+#805 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3)+GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#809)) GLOBAL_UNIT_ASSIGNED_CONTEXT+((#806,#807,#808)) REPRESENTATION_CONTEXT('Context #1',+'3D Context with UNIT and UNCERTAINTY') );+#806 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) );+#807 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) );+#808 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() );+#809 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#806,+'distance_accuracy_value','confusion accuracy');+#810 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7));+#811 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#812,+#820,#827,#834,#841,#848,#855,#862,#870,#877,#884,#891,#898,#905,+#913,#920,#927,#934,#941,#948,#955,#962,#969,#976,#983,#990),#805);+#812 = STYLED_ITEM('color',(#813),#17);+#813 = PRESENTATION_STYLE_ASSIGNMENT((#814));+#814 = SURFACE_STYLE_USAGE(.BOTH.,#815);+#815 = SURFACE_SIDE_STYLE('',(#816));+#816 = SURFACE_STYLE_FILL_AREA(#817);+#817 = FILL_AREA_STYLE('',(#818));+#818 = FILL_AREA_STYLE_COLOUR('',#819);+#819 = COLOUR_RGB('',0.824000000954,0.819999992847,0.78100001812);+#820 = STYLED_ITEM('color',(#821),#57);+#821 = PRESENTATION_STYLE_ASSIGNMENT((#822));+#822 = SURFACE_STYLE_USAGE(.BOTH.,#823);+#823 = SURFACE_SIDE_STYLE('',(#824));+#824 = SURFACE_STYLE_FILL_AREA(#825);+#825 = FILL_AREA_STYLE('',(#826));+#826 = FILL_AREA_STYLE_COLOUR('',#819);+#827 = STYLED_ITEM('color',(#828),#140);+#828 = PRESENTATION_STYLE_ASSIGNMENT((#829));+#829 = SURFACE_STYLE_USAGE(.BOTH.,#830);+#830 = SURFACE_SIDE_STYLE('',(#831));+#831 = SURFACE_STYLE_FILL_AREA(#832);+#832 = FILL_AREA_STYLE('',(#833));+#833 = FILL_AREA_STYLE_COLOUR('',#819);+#834 = STYLED_ITEM('color',(#835),#165);+#835 = PRESENTATION_STYLE_ASSIGNMENT((#836));+#836 = SURFACE_STYLE_USAGE(.BOTH.,#837);+#837 = SURFACE_SIDE_STYLE('',(#838));+#838 = SURFACE_STYLE_FILL_AREA(#839);+#839 = FILL_AREA_STYLE('',(#840));+#840 = FILL_AREA_STYLE_COLOUR('',#819);+#841 = STYLED_ITEM('color',(#842),#190);+#842 = PRESENTATION_STYLE_ASSIGNMENT((#843));+#843 = SURFACE_STYLE_USAGE(.BOTH.,#844);+#844 = SURFACE_SIDE_STYLE('',(#845));+#845 = SURFACE_STYLE_FILL_AREA(#846);+#846 = FILL_AREA_STYLE('',(#847));+#847 = FILL_AREA_STYLE_COLOUR('',#819);+#848 = STYLED_ITEM('color',(#849),#257);+#849 = PRESENTATION_STYLE_ASSIGNMENT((#850));+#850 = SURFACE_STYLE_USAGE(.BOTH.,#851);+#851 = SURFACE_SIDE_STYLE('',(#852));+#852 = SURFACE_STYLE_FILL_AREA(#853);+#853 = FILL_AREA_STYLE('',(#854));+#854 = FILL_AREA_STYLE_COLOUR('',#819);+#855 = STYLED_ITEM('color',(#856),#274);+#856 = PRESENTATION_STYLE_ASSIGNMENT((#857));+#857 = SURFACE_STYLE_USAGE(.BOTH.,#858);+#858 = SURFACE_SIDE_STYLE('',(#859));+#859 = SURFACE_STYLE_FILL_AREA(#860);+#860 = FILL_AREA_STYLE('',(#861));+#861 = FILL_AREA_STYLE_COLOUR('',#819);+#862 = STYLED_ITEM('color',(#863),#291);+#863 = PRESENTATION_STYLE_ASSIGNMENT((#864));+#864 = SURFACE_STYLE_USAGE(.BOTH.,#865);+#865 = SURFACE_SIDE_STYLE('',(#866));+#866 = SURFACE_STYLE_FILL_AREA(#867);+#867 = FILL_AREA_STYLE('',(#868));+#868 = FILL_AREA_STYLE_COLOUR('',#869);+#869 = COLOUR_RGB('',0.894999980927,0.89099997282,0.813000023365);+#870 = STYLED_ITEM('color',(#871),#340);+#871 = PRESENTATION_STYLE_ASSIGNMENT((#872));+#872 = SURFACE_STYLE_USAGE(.BOTH.,#873);+#873 = SURFACE_SIDE_STYLE('',(#874));+#874 = SURFACE_STYLE_FILL_AREA(#875);+#875 = FILL_AREA_STYLE('',(#876));+#876 = FILL_AREA_STYLE_COLOUR('',#819);+#877 = STYLED_ITEM('color',(#878),#357);+#878 = PRESENTATION_STYLE_ASSIGNMENT((#879));+#879 = SURFACE_STYLE_USAGE(.BOTH.,#880);+#880 = SURFACE_SIDE_STYLE('',(#881));+#881 = SURFACE_STYLE_FILL_AREA(#882);+#882 = FILL_AREA_STYLE('',(#883));+#883 = FILL_AREA_STYLE_COLOUR('',#819);+#884 = STYLED_ITEM('color',(#885),#374);+#885 = PRESENTATION_STYLE_ASSIGNMENT((#886));+#886 = SURFACE_STYLE_USAGE(.BOTH.,#887);+#887 = SURFACE_SIDE_STYLE('',(#888));+#888 = SURFACE_STYLE_FILL_AREA(#889);+#889 = FILL_AREA_STYLE('',(#890));+#890 = FILL_AREA_STYLE_COLOUR('',#869);+#891 = STYLED_ITEM('color',(#892),#423);+#892 = PRESENTATION_STYLE_ASSIGNMENT((#893));+#893 = SURFACE_STYLE_USAGE(.BOTH.,#894);+#894 = SURFACE_SIDE_STYLE('',(#895));+#895 = SURFACE_STYLE_FILL_AREA(#896);+#896 = FILL_AREA_STYLE('',(#897));+#897 = FILL_AREA_STYLE_COLOUR('',#869);+#898 = STYLED_ITEM('color',(#899),#440);+#899 = PRESENTATION_STYLE_ASSIGNMENT((#900));+#900 = SURFACE_STYLE_USAGE(.BOTH.,#901);+#901 = SURFACE_SIDE_STYLE('',(#902));+#902 = SURFACE_STYLE_FILL_AREA(#903);+#903 = FILL_AREA_STYLE('',(#904));+#904 = FILL_AREA_STYLE_COLOUR('',#819);+#905 = STYLED_ITEM('color',(#906),#509);+#906 = PRESENTATION_STYLE_ASSIGNMENT((#907));+#907 = SURFACE_STYLE_USAGE(.BOTH.,#908);+#908 = SURFACE_SIDE_STYLE('',(#909));+#909 = SURFACE_STYLE_FILL_AREA(#910);+#910 = FILL_AREA_STYLE('',(#911));+#911 = FILL_AREA_STYLE_COLOUR('',#912);+#912 = COLOUR_RGB('',8.200000226498E-02,8.600000292063E-02,+9.399999678135E-02);+#913 = STYLED_ITEM('color',(#914),#540);+#914 = PRESENTATION_STYLE_ASSIGNMENT((#915));+#915 = SURFACE_STYLE_USAGE(.BOTH.,#916);+#916 = SURFACE_SIDE_STYLE('',(#917));+#917 = SURFACE_STYLE_FILL_AREA(#918);+#918 = FILL_AREA_STYLE('',(#919));+#919 = FILL_AREA_STYLE_COLOUR('',#912);+#920 = STYLED_ITEM('color',(#921),#564);+#921 = PRESENTATION_STYLE_ASSIGNMENT((#922));+#922 = SURFACE_STYLE_USAGE(.BOTH.,#923);+#923 = SURFACE_SIDE_STYLE('',(#924));+#924 = SURFACE_STYLE_FILL_AREA(#925);+#925 = FILL_AREA_STYLE('',(#926));+#926 = FILL_AREA_STYLE_COLOUR('',#819);+#927 = STYLED_ITEM('color',(#928),#633);+#928 = PRESENTATION_STYLE_ASSIGNMENT((#929));+#929 = SURFACE_STYLE_USAGE(.BOTH.,#930);+#930 = SURFACE_SIDE_STYLE('',(#931));+#931 = SURFACE_STYLE_FILL_AREA(#932);+#932 = FILL_AREA_STYLE('',(#933));+#933 = FILL_AREA_STYLE_COLOUR('',#912);+#934 = STYLED_ITEM('color',(#935),#657);+#935 = PRESENTATION_STYLE_ASSIGNMENT((#936));+#936 = SURFACE_STYLE_USAGE(.BOTH.,#937);+#937 = SURFACE_SIDE_STYLE('',(#938));+#938 = SURFACE_STYLE_FILL_AREA(#939);+#939 = FILL_AREA_STYLE('',(#940));+#940 = FILL_AREA_STYLE_COLOUR('',#819);+#941 = STYLED_ITEM('color',(#942),#674);+#942 = PRESENTATION_STYLE_ASSIGNMENT((#943));+#943 = SURFACE_STYLE_USAGE(.BOTH.,#944);+#944 = SURFACE_SIDE_STYLE('',(#945));+#945 = SURFACE_STYLE_FILL_AREA(#946);+#946 = FILL_AREA_STYLE('',(#947));+#947 = FILL_AREA_STYLE_COLOUR('',#819);+#948 = STYLED_ITEM('color',(#949),#691);+#949 = PRESENTATION_STYLE_ASSIGNMENT((#950));+#950 = SURFACE_STYLE_USAGE(.BOTH.,#951);+#951 = SURFACE_SIDE_STYLE('',(#952));+#952 = SURFACE_STYLE_FILL_AREA(#953);+#953 = FILL_AREA_STYLE('',(#954));+#954 = FILL_AREA_STYLE_COLOUR('',#819);+#955 = STYLED_ITEM('color',(#956),#708);+#956 = PRESENTATION_STYLE_ASSIGNMENT((#957));+#957 = SURFACE_STYLE_USAGE(.BOTH.,#958);+#958 = SURFACE_SIDE_STYLE('',(#959));+#959 = SURFACE_STYLE_FILL_AREA(#960);+#960 = FILL_AREA_STYLE('',(#961));+#961 = FILL_AREA_STYLE_COLOUR('',#819);+#962 = STYLED_ITEM('color',(#963),#725);+#963 = PRESENTATION_STYLE_ASSIGNMENT((#964));+#964 = SURFACE_STYLE_USAGE(.BOTH.,#965);+#965 = SURFACE_SIDE_STYLE('',(#966));+#966 = SURFACE_STYLE_FILL_AREA(#967);+#967 = FILL_AREA_STYLE('',(#968));+#968 = FILL_AREA_STYLE_COLOUR('',#819);+#969 = STYLED_ITEM('color',(#970),#742);+#970 = PRESENTATION_STYLE_ASSIGNMENT((#971));+#971 = SURFACE_STYLE_USAGE(.BOTH.,#972);+#972 = SURFACE_SIDE_STYLE('',(#973));+#973 = SURFACE_STYLE_FILL_AREA(#974);+#974 = FILL_AREA_STYLE('',(#975));+#975 = FILL_AREA_STYLE_COLOUR('',#819);+#976 = STYLED_ITEM('color',(#977),#759);+#977 = PRESENTATION_STYLE_ASSIGNMENT((#978));+#978 = SURFACE_STYLE_USAGE(.BOTH.,#979);+#979 = SURFACE_SIDE_STYLE('',(#980));+#980 = SURFACE_STYLE_FILL_AREA(#981);+#981 = FILL_AREA_STYLE('',(#982));+#982 = FILL_AREA_STYLE_COLOUR('',#819);+#983 = STYLED_ITEM('color',(#984),#776);+#984 = PRESENTATION_STYLE_ASSIGNMENT((#985));+#985 = SURFACE_STYLE_USAGE(.BOTH.,#986);+#986 = SURFACE_SIDE_STYLE('',(#987));+#987 = SURFACE_STYLE_FILL_AREA(#988);+#988 = FILL_AREA_STYLE('',(#989));+#989 = FILL_AREA_STYLE_COLOUR('',#912);+#990 = STYLED_ITEM('color',(#991),#793);+#991 = PRESENTATION_STYLE_ASSIGNMENT((#992));+#992 = SURFACE_STYLE_USAGE(.BOTH.,#993);+#993 = SURFACE_SIDE_STYLE('',(#994));+#994 = SURFACE_STYLE_FILL_AREA(#995);+#995 = FILL_AREA_STYLE('',(#996));+#996 = FILL_AREA_STYLE_COLOUR('',#912);+ENDSEC;+END-ISO-10303-21;
README.mdadded+77
@@ -0,0 +1,77 @@+# RC0402FR-075K1L++Yageo RC0402FR-075K1L: Thick film chip resistor, 5.1 kohm, 1%, 1/16 W, 0402 (1005 metric), RC_L series.++[Manufacturer reference](https://www.yageogroup.com/content/datasheet/asset/file/PYU-RC_GROUP_51_ROHS_L)++| Field | Value |+|---|---|+| Manufacturer | Yageo |+| Manufacturer part number | RC0402FR-075K1L |+| Reference | https://www.yageogroup.com/content/datasheet/asset/file/PYU-RC_GROUP_51_ROHS_L |+| Link check | Yageo RC_L datasheet PDF, HTTP 200, application/pdf (2026-10-18) |++## Pin functions++| Pin | Function |+|---|---|+| 1 | ~ |+| 2 | ~ |++Pin numbering and names follow resistor. Consult the manufacturer datasheet for ratings, operating conditions and assembly limits.++## Assets++The symbol is an original KiCad symbol made from the manufacturer pin list. The footprint and STEP are generic KiCad standard-library package geometry (CC-BY-SA 4.0 with the KiCad library exception), not manufacturer-issued exact CAD; check them against the manufacturer land pattern.++This is a development catalog record, not manufacturing approval.++## Where this page came from++Made on 2026-10-24 for the capstone-bldc-1mm sensor rev B (the USB-C CC pull-downs), from+[john/rc0402fr-0710kl](https://wiki.adom.inc/john/rc0402fr-0710kl): the same Yageo RC_L series, the same 0402 package and+datasheet, so the footprint, the STEP (KiCad's R_0402_1005Metric, byte for byte), the GLBs, the level-of-detail models and+the dimension check carry over unchanged. Only the resistance (5.1 kohm, 1 %, the USB Type-C Rd value), the part+number and the distributor numbers differ. Mouser 603-RC0402FR-075K1L (1,898,556 in stock, 2026-10-24), DigiKey+311-5.10KLRTR-ND (653,539).++Found a problem? Open an issue on this page with the file name and hash, the dimension or pin you dispute, your source+and a screenshot.++## Sources and license++- Yageo RC_L series datasheet (RC0402 row)+- Manufacturer reference: https://www.yageogroup.com/content/datasheet/asset/file/PYU-RC_GROUP_51_ROHS_L++Original symbol and text: MIT. KiCad library footprint and package files keep their upstream license (CC-BY-SA 4.0 with the KiCad library exception). provenance.json records sources and file hashes.++## 3D model++This page has one 3D model and it carries no marking: `RC0402FR-075K1L.step` (board CAD) and+`package-reference.glb` (page viewer), plus four clean board-use levels of detail in `lod/`.+Yageo states 'No Marking' for RC0402 (the top is the plain black overcoat) (Yageo RC_L product specification V.14 p.3, MARKING, Fig. 1), so the model shows a plain body, as the real part looks.+Adom's rule is that a 3D chip shows only the manufacturer's real part marking; an AI-added+part-number etch that was published here on 2026-10-19 was removed for that reason (see provenance.json).++::adom-models{src="/john/rc0402fr-075k1l/render/models.json"}++## Model checked against the datasheet++The datasheet gives a dimension table with an unscaled sketch, so the model was rendered in+orthographic top, bottom, side and end views at a true 300 px/mm and laid over a drawing made at the+same scale from the printed table (nominal outline, tolerance limits, allowed terminal band). Every+dimension is inside the printed range: L 1.000 mm (datasheet 0.95 to 1.05); W 0.500 mm (datasheet 0.45 to 0.55); T/H 0.350 mm (datasheet 0.30 to 0.40); I1 (top terminal) 0.165 mm (datasheet 0.10 to 0.30); I2 (bottom terminal) 0.165 mm (datasheet 0.15 to 0.35). The model is Z-up, seated on z = 0, centred on the+footprint origin, long axis on X.++![Model over the datasheet dimensions](docs/verify/rc0402fr-075k1l-overlay.png)++Source: Yageo RC_L product specification V.14 p.4 Table 1 and Fig. 9, RC0402: L 1.00 +/-0.05, W 0.50 +/-0.05, H 0.35 +/-0.05, I1 0.20 +/-0.10, I2 0.25 +/-0.10 (mm). [Datasheet PDF](docs/rc0402fr-075k1l-datasheet.pdf)++::adom-verified{src="/john/rc0402fr-075k1l/render/verification.json"}++## Board levels of detail++Clean board-use GLBs (no footprint pads, outlines, labels or silkscreen; no marking) in four levels,+all in the same Z-up, metre, footprint-origin pose as the STEP. Previews are rendered from each GLB.++::adom-component-lod{src="/john/rc0402fr-075k1l/render/lod/manifest.json"}
R_0402_1005Metric_RC0402FR-075K1L.kicad_modadded+112
@@ -0,0 +1,112 @@+(footprint "R_0402_1005Metric_RC0402FR-075K1L"+	(version 20260206)+	(generator "kicad-footprint-generator")+	(layer "F.Cu")+	(descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)")+	(tags "resistor")+	(property "Reference" "REF**"+		(at 0 -1.17 0)+		(layer "F.SilkS")+		(effects+			(font+				(size 1 1)+				(thickness 0.15)+			)+		)+	)+	(property "Value" "R_0402_1005Metric"+		(at 0 1.17 0)+		(layer "F.Fab")+		(effects+			(font+				(size 1 1)+				(thickness 0.15)+			)+		)+	)+	(property "KiLib_Generator" "SMD_2terminal_chip_molded"+		(at 0 0 0)+		(layer "F.SilkS")+		(hide yes)+		(effects+			(font+				(size 1 1)+				(thickness 0.15)+			)+		)+	)+	(attr smd)+	(duplicate_pad_numbers_are_jumpers no)+	(fp_line+		(start -0.153641 -0.38)+		(end 0.153641 -0.38)+		(stroke+			(width 0.12)+			(type solid)+		)+		(layer "F.SilkS")+	)+	(fp_line+		(start -0.153641 0.38)+		(end 0.153641 0.38)+		(stroke+			(width 0.12)+			(type solid)+		)+		(layer "F.SilkS")+	)+	(fp_rect+		(start -0.93 -0.47)+		(end 0.93 0.47)+		(stroke+			(width 0.05)+			(type solid)+		)+		(fill no)+		(layer "F.CrtYd")+	)+	(fp_rect+		(start -0.525 -0.27)+		(end 0.525 0.27)+		(stroke+			(width 0.1)+			(type solid)+		)+		(fill no)+		(layer "F.Fab")+	)+	(fp_text user "${REFERENCE}"+		(at 0 0 0)+		(layer "F.Fab")+		(effects+			(font+				(size 0.26 0.26)+				(thickness 0.04)+			)+		)+	)+	(pad "1" smd roundrect+		(at -0.51 0)+		(size 0.54 0.64)+		(layers "F.Cu" "F.Mask" "F.Paste")+		(roundrect_rratio 0.25)+	)+	(pad "2" smd roundrect+		(at 0.51 0)+		(size 0.54 0.64)+		(layers "F.Cu" "F.Mask" "F.Paste")+		(roundrect_rratio 0.25)+	)+	(embedded_fonts no)+	(model "${KIPRJMOD}/RC0402FR-075K1L.step"+		(offset+			(xyz 0 0 0)+		)+		(scale+			(xyz 1 1 1)+		)+		(rotate+			(xyz 0 0 0)+		)+	)+)
component.kicad_symadded+13
@@ -0,0 +1,13 @@+(kicad_symbol_lib (version 20241209) (generator "hand_written")+  (symbol "RC0402FR-075K1L" (in_bom yes) (on_board yes)+    (property "Reference" "R" (at 0 5.08 0) (effects (font (size 1.27 1.27))))+    (property "Value" "RC0402FR-075K1L" (at 0 -5.08 0) (effects (font (size 1.27 1.27))))+    (property "Footprint" "R_0402_1005Metric_RC0402FR-075K1L" (at 0 0 0) (effects (font (size 1.27 1.27)) hide))+    (property "Datasheet" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide))+    (symbol "RC0402FR-075K1L_0_1" (rectangle (start -2.54 2.54) (end 2.54 -2.54) (stroke (width 0.254) (type default)) (fill (type background))))+    (symbol "RC0402FR-075K1L_1_1"+      (pin passive line (at -5.08 0.00 0) (length 2.54) (name "~" (effects (font (size 1.27 1.27)))) (number "1" (effects (font (size 1.27 1.27)))))+      (pin passive line (at 5.08 0.00 180) (length 2.54) (name "~" (effects (font (size 1.27 1.27)))) (number "2" (effects (font (size 1.27 1.27)))))+    )+  )+)
docs/HERO.mdadded+1
@@ -0,0 +1 @@+Hero image: step2glb thumbnail of RC0402FR-075K1L.step (exit 0).
docs/hero.pngadded
⋯ 1 unchanged line ⋯
docs/models/package-reference-step.pngadded
⋯ 1 unchanged line ⋯
docs/rc0402fr-075k1l-datasheet.pdfadded
⋯ 1 unchanged line ⋯
docs/verify/rc0402fr-075k1l-check.jsonadded+51
@@ -0,0 +1,51 @@+{+ "step": "RC0402FR-075K1L.step",+ "bbox_mm": [+  -0.5,+  0.5,+  -0.25,+  0.25,+  -0.0,+  0.35+ ],+ "checks": [+  {+   "dim": "L",+   "model_mm": 1.0,+   "datasheet_min": 0.95,+   "datasheet_max": 1.05,+   "pass": true+  },+  {+   "dim": "W",+   "model_mm": 0.5,+   "datasheet_min": 0.45,+   "datasheet_max": 0.55,+   "pass": true+  },+  {+   "dim": "T/H",+   "model_mm": 0.35,+   "datasheet_min": 0.3,+   "datasheet_max": 0.39999999999999997,+   "pass": true+  },+  {+   "dim": "I1 (top terminal)",+   "model_mm": 0.165,+   "datasheet_min": 0.1,+   "datasheet_max": 0.3,+   "pass": true+  },+  {+   "dim": "I2 (bottom terminal)",+   "model_mm": 0.165,+   "datasheet_min": 0.15,+   "datasheet_max": 0.35,+   "pass": true+  }+ ],+ "z_up_seated_centred": true,+ "long_axis_x": true,+ "all_pass": true+}\ No newline at end of file
docs/verify/rc0402fr-075k1l-overlay.pngadded
⋯ 1 unchanged line ⋯
lod/high.glbadded
⋯ 1 unchanged line ⋯
lod/high.pngadded
⋯ 1 unchanged line ⋯
lod/low.glbadded
⋯ 1 unchanged line ⋯
lod/low.pngadded
⋯ 1 unchanged line ⋯
lod/manifest.jsonadded+178
@@ -0,0 +1,178 @@+{+ "schema": "adom/component-lod@1",+ "mpn": "RC0402FR-075K1L",+ "upAxis": "Z",+ "units": "metres",+ "status": "candidate (AI-checked, not human-reviewed)",+ "purpose": "clean board-use component models: no footprint pads, outlines, labels or silkscreen; no marking (none per datasheet)",+ "source": {+  "path": "RC0402FR-075K1L.step",+  "sha256": "91507e5af4251cb4ef38e04889c9b98da29904432bd83786bba13ae9b605eacb"+ },+ "sourceToDisplay": "uniform scale 0.001 (mm to m); no rotation, no translation; origin = footprint origin, seat z = 0",+ "generator": "lod.py (capencoder passives, OCCT via cadquery-ocp)",+ "removedHelpers": [],+ "levels": [+  {+   "level": "high",+   "path": "lod/high.glb",+   "sha256": "378cb8b4bc78cb2a91222849b61c9574bed726a613da74c1c18afc003b2c8f17",+   "sizeBytes": 48096,+   "decodedBufferBytes": 45432,+   "triangles": 1076,+   "primitives": 3,+   "bounds": {+    "min": [+     -0.0005,+     -0.00025,+     -0.0+    ],+    "max": [+     0.0005,+     0.00025,+     0.00035+    ]+   },+   "approximation": {+    "method": "OCCT BRepMesh_IncrementalMesh",+    "linearDeflectionMm": 0.0005,+    "angularDeflectionRad": 0.1+   },+   "detailVisibility": {+    "virtualMpn": false,+    "note": "no marking: the datasheet specifies none"+   },+   "review": "Candidate: rendered preview checked by AI (silhouette, terminals, seat z=0); not human-reviewed",+   "preview": {+    "path": "lod/high.png",+    "sha256": "03b4d4b37c9842733e90fac901934d4b9c2c1ef678dbd506e4422c9da5d96286",+    "sizeBytes": 10208,+    "width": 400,+    "height": 300,+    "view": "iso",+    "sourceLevelSha256": "378cb8b4bc78cb2a91222849b61c9574bed726a613da74c1c18afc003b2c8f17"+   }+  },+  {+   "level": "medium",+   "path": "lod/medium.glb",+   "sha256": "3e80f58d8fb019e06727393fd0fe8fcec5d8557b778cbb6d973ac619093e0764",+   "sizeBytes": 17180,+   "decodedBufferBytes": 14520,+   "triangles": 340,+   "primitives": 3,+   "bounds": {+    "min": [+     -0.0005,+     -0.00025,+     -0.0+    ],+    "max": [+     0.0005,+     0.00025,+     0.00035+    ]+   },+   "approximation": {+    "method": "OCCT BRepMesh_IncrementalMesh",+    "linearDeflectionMm": 0.004,+    "angularDeflectionRad": 0.35+   },+   "detailVisibility": {+    "virtualMpn": false,+    "note": "no marking: the datasheet specifies none"+   },+   "review": "Candidate: rendered preview checked by AI (silhouette, terminals, seat z=0); not human-reviewed",+   "preview": {+    "path": "lod/medium.png",+    "sha256": "f049fe2b97734d7ddb334b93900a5cf5b84e2f1dc1da7315a2efeff7f236f473",+    "sizeBytes": 9977,+    "width": 400,+    "height": 300,+    "view": "iso",+    "sourceLevelSha256": "3e80f58d8fb019e06727393fd0fe8fcec5d8557b778cbb6d973ac619093e0764"+   }+  },+  {+   "level": "low",+   "path": "lod/low.glb",+   "sha256": "254ee645af639ec36ee0992e15cc06ade3a0be575ea8505f5ea2f8d27000c9bf",+   "sizeBytes": 10448,+   "decodedBufferBytes": 7800,+   "triangles": 180,+   "primitives": 3,+   "bounds": {+    "min": [+     -0.0005,+     -0.00025,+     -0.0+    ],+    "max": [+     0.0005,+     0.00025,+     0.00035+    ]+   },+   "approximation": {+    "method": "OCCT BRepMesh_IncrementalMesh",+    "linearDeflectionMm": 0.02,+    "angularDeflectionRad": 0.9+   },+   "detailVisibility": {+    "virtualMpn": false,+    "note": "no marking: the datasheet specifies none"+   },+   "review": "Candidate: rendered preview checked by AI (silhouette, terminals, seat z=0); not human-reviewed",+   "preview": {+    "path": "lod/low.png",+    "sha256": "1a9830a03f3abc552005ad1a382b5bc63826b11f9b2360e029249d577030a502",+    "sizeBytes": 10083,+    "width": 400,+    "height": 300,+    "view": "iso",+    "sourceLevelSha256": "254ee645af639ec36ee0992e15cc06ade3a0be575ea8505f5ea2f8d27000c9bf"+   }+  },+  {+   "level": "super-low",+   "path": "lod/super-low.glb",+   "sha256": "03b75ebf90c22ceb66cb690ae3ba47a6522435830753e98511ed0c426301154d",+   "sizeBytes": 5232,+   "decodedBufferBytes": 2592,+   "triangles": 48,+   "primitives": 3,+   "bounds": {+    "min": [+     -0.0005,+     -0.00025,+     -0.0+    ],+    "max": [+     0.0005,+     0.00025,+     0.00035+    ]+   },+   "approximation": {+    "method": "per-material bounding boxes split at the part centre (terminals, body, overcoat)"+   },+   "detailVisibility": {+    "virtualMpn": false,+    "note": "no marking: the datasheet specifies none"+   },+   "review": "Candidate: rendered preview checked by AI (silhouette, terminals, seat z=0); not human-reviewed",+   "preview": {+    "path": "lod/super-low.png",+    "sha256": "2b5e64c2a87d0a650c6de41268667d5885ead95db8842584d8eef99773745415",+    "sizeBytes": 7430,+    "width": 400,+    "height": 300,+    "view": "iso",+    "sourceLevelSha256": "03b75ebf90c22ceb66cb690ae3ba47a6522435830753e98511ed0c426301154d"+   }+  }+ ],+ "hints": [+  "All four levels share pose and units; super-low is boxes per material group, chosen for board overviews."+ ]+}\ No newline at end of file
lod/medium.glbadded
⋯ 1 unchanged line ⋯
lod/medium.pngadded
⋯ 1 unchanged line ⋯
lod/super-low.glbadded
⋯ 1 unchanged line ⋯
lod/super-low.pngadded
⋯ 1 unchanged line ⋯
models.jsonadded+125
@@ -0,0 +1,125 @@+{+ "schema": "adom/models@1",+ "part": "RC0402FR-075K1L",+ "models": [+  {+   "path": "RC0402FR-075K1L.step",+   "format": "step",+   "title": "Package model (STEP)",+   "status": "current",+   "slot": "step",+   "variant": "plain",+   "role": "derived",+   "use": [+    "board-cad"+   ],+   "marking": null,+   "unique": "The board CAD model: KiCad library package geometry, checked against the datasheet table, no marking (the part has none)",+   "source": "KiCad packages3D Resistor_SMD.3dshapes/R_0402_1005Metric.step (CC-BY-SA 4.0 with exception)",+   "sha256": "91507e5af4251cb4ef38e04889c9b98da29904432bd83786bba13ae9b605eacb",+   "git_blob": "7f0c353f8ebaa364e1f12149ab1768d9da85f02a",+   "bytes": 40756,+   "thumb": "docs/models/package-reference-step.png"+  },+  {+   "path": "package-reference.glb",+   "format": "glb",+   "title": "Package model (GLB)",+   "status": "current",+   "slot": "model_3d",+   "variant": "plain",+   "role": "derived",+   "use": [+    "render"+   ],+   "marking": null,+   "derived_from": "RC0402FR-075K1L.step",+   "unique": "The same model for the page viewer (step2glb)",+   "source": "KiCad packages3D Resistor_SMD.3dshapes/R_0402_1005Metric.step (CC-BY-SA 4.0 with exception)",+   "sha256": "e0f0a1b3f86b307421456f2e9945d22b4d3e222a7ec62e602fc97c5e6a7f34c3",+   "git_blob": "da98434ac21cc7113fb563af37be5c23aebe32d0",+   "bytes": 15808+  },+  {+   "path": "lod/high.glb",+   "format": "glb",+   "title": "Board LOD, high",+   "status": "current",+   "variant": "lod",+   "role": "derived",+   "use": [+    "board-insertion",+    "render"+   ],+   "marking": null,+   "derived_from": "RC0402FR-075K1L.step",+   "unique": "high detail for board and scaffold viewers: 1076 triangles, 3 primitives",+   "thumb": "lod/high.png",+   "source": "KiCad packages3D Resistor_SMD.3dshapes/R_0402_1005Metric.step (CC-BY-SA 4.0 with exception)",+   "sha256": "378cb8b4bc78cb2a91222849b61c9574bed726a613da74c1c18afc003b2c8f17",+   "git_blob": "bcdd6629378ca946b286b7918c999bbeecfac4c4",+   "bytes": 48096+  },+  {+   "path": "lod/medium.glb",+   "format": "glb",+   "title": "Board LOD, medium",+   "status": "current",+   "variant": "lod",+   "role": "derived",+   "use": [+    "board-insertion",+    "render"+   ],+   "marking": null,+   "derived_from": "RC0402FR-075K1L.step",+   "unique": "medium detail for board and scaffold viewers: 340 triangles, 3 primitives",+   "thumb": "lod/medium.png",+   "source": "KiCad packages3D Resistor_SMD.3dshapes/R_0402_1005Metric.step (CC-BY-SA 4.0 with exception)",+   "sha256": "3e80f58d8fb019e06727393fd0fe8fcec5d8557b778cbb6d973ac619093e0764",+   "git_blob": "f3958a2bf3e9b7abc876bf9da126c2184e0069cf",+   "bytes": 17180+  },+  {+   "path": "lod/low.glb",+   "format": "glb",+   "title": "Board LOD, low",+   "status": "current",+   "variant": "lod",+   "role": "derived",+   "use": [+    "board-insertion",+    "render"+   ],+   "marking": null,+   "derived_from": "RC0402FR-075K1L.step",+   "unique": "low detail for board and scaffold viewers: 180 triangles, 3 primitives",+   "thumb": "lod/low.png",+   "source": "KiCad packages3D Resistor_SMD.3dshapes/R_0402_1005Metric.step (CC-BY-SA 4.0 with exception)",+   "sha256": "254ee645af639ec36ee0992e15cc06ade3a0be575ea8505f5ea2f8d27000c9bf",+   "git_blob": "055a816fb27ea527ab06b810e99bf204cb7ce14f",+   "bytes": 10448+  },+  {+   "path": "lod/super-low.glb",+   "format": "glb",+   "title": "Board LOD, super-low",+   "status": "current",+   "variant": "lod",+   "role": "derived",+   "use": [+    "board-insertion",+    "render"+   ],+   "marking": null,+   "derived_from": "RC0402FR-075K1L.step",+   "unique": "super-low detail for board and scaffold viewers: 48 triangles, 3 primitives",+   "thumb": "lod/super-low.png",+   "source": "KiCad packages3D Resistor_SMD.3dshapes/R_0402_1005Metric.step (CC-BY-SA 4.0 with exception)",+   "sha256": "03b75ebf90c22ceb66cb690ae3ba47a6522435830753e98511ed0c426301154d",+   "git_blob": "d97757462a92187f2c6e3c7b99d54a6fc318a0f8",+   "bytes": 5232+  }+ ],+ "updated": "2026-10-19"+}\ No newline at end of file
package-reference.glbadded
⋯ 1 unchanged line ⋯
package.jsonadded+59
@@ -0,0 +1,59 @@+{+  "slug": "rc0402fr-075k1l",+  "title": "RC0402FR-075K1L - Yageo",+  "type": "hardware",+  "kind": "component",+  "version": "0.1.0",+  "description": "Thick film chip resistor, 5.1 kohm, 1%, 1/16 W, 0402 (1005 metric), RC_L series",+  "tags": [+    "hardware",+    "component"+  ],+  "dependencies": {},+  "license": "MIT; third-party CAD retains its upstream license",+  "hero": {+    "path": "docs/hero.png",+    "chrome": false+  },+  "component": {+    "mpn": "RC0402FR-075K1L",+    "manufacturer": "Yageo",+    "package": "R_0402_1005Metric",+    "manufacturer_links": {+      "datasheet": "https://www.yageogroup.com/content/datasheet/asset/file/PYU-RC_GROUP_51_ROHS_L",+      "datasheet_pdf": "https://yageogroup.com/content/datasheet/asset/file/PYU-RC_GROUP_51_ROHS_L"+    },+    "pins": [+      {+        "number": "1",+        "name": "~"+      },+      {+        "number": "2",+        "name": "~"+      }+    ],+    "pin_count": 2,+    "parts": {+      "symbol": "component.kicad_sym",+      "footprint": "R_0402_1005Metric_RC0402FR-075K1L.kicad_mod",+      "step": "RC0402FR-075K1L.step",+      "model_3d": "rc0402fr-075k1l-hero.glb",+      "datasheet": "docs/rc0402fr-075k1l-datasheet.pdf",+      "model_3d_plain": "package-reference.glb"+    },+    "provenance": {+      "omitted": []+    },+    "distributor_links": {+      "mouser": "603-RC0402FR-075K1L",+      "digikey": "311-5.10KLRTR-ND",+      "lcsc": false+    },+    "marking": {+      "text": null,+      "statement": "Yageo states 'No Marking' for RC0402 (the top is the plain black overcoat)",+      "source": "Yageo RC_L product specification V.14 p.3, MARKING, Fig. 1"+    }+  }+}
page.jsonadded+65
@@ -0,0 +1,65 @@+{+  "slug": "rc0402fr-075k1l",+  "title": "RC0402FR-075K1L - Yageo",+  "type": "component",+  "kind": "component",+  "version": "0.1.0",+  "description": "Thick film chip resistor, 5.1 kohm, 1%, 1/16 W, 0402 (1005 metric), RC_L series",+  "tags": [+    "hardware",+    "component"+  ],+  "dependencies": {},+  "license": "MIT; third-party CAD retains its upstream license",+  "hero": {+    "type": "image",+    "path": "docs/hero.png",+    "chrome": false+  },+  "component": {+    "mpn": "RC0402FR-075K1L",+    "manufacturer": "Yageo",+    "package": "R_0402_1005Metric",+    "manufacturer_links": {+      "datasheet": "https://www.yageogroup.com/content/datasheet/asset/file/PYU-RC_GROUP_51_ROHS_L",+      "datasheet_pdf": "https://yageogroup.com/content/datasheet/asset/file/PYU-RC_GROUP_51_ROHS_L"+    },+    "pins": [+      {+        "number": "1",+        "name": "~"+      },+      {+        "number": "2",+        "name": "~"+      }+    ],+    "pin_count": 2,+    "parts": {+      "symbol": "component.kicad_sym",+      "footprint": "R_0402_1005Metric_RC0402FR-075K1L.kicad_mod",+      "step": "RC0402FR-075K1L.step",+      "model_3d": "rc0402fr-075k1l-hero.glb",+      "datasheet": "docs/rc0402fr-075k1l-datasheet.pdf",+      "model_3d_plain": "package-reference.glb"+    },+    "provenance": {+      "omitted": []+    },+    "distributor_links": {+      "mouser": "603-RC0402FR-075K1L",+      "digikey": "311-5.10KLRTR-ND",+      "lcsc": false+    },+    "marking": {+      "text": null,+      "statement": "Yageo states 'No Marking' for RC0402 (the top is the plain black overcoat)",+      "source": "Yageo RC_L product specification V.14 p.3, MARKING, Fig. 1"+    }+  },+  "visibility": "public",+  "author": {+    "name": "John Lauer",+    "email": "[email protected]"+  }+}\ No newline at end of file
provenance.jsonadded+114
@@ -0,0 +1,114 @@+{+ "manufacturer_reference": "https://www.yageogroup.com/content/datasheet/asset/file/PYU-RC_GROUP_51_ROHS_L",+ "datasheet_link_check": "Yageo RC_L datasheet PDF, HTTP 200, application/pdf (2026-10-18)",+ "symbol_source": "Original, hand-written from the pin list (resistor). MIT.",+ "footprint_source": "KiCad standard library Resistor_SMD:R_0402_1005Metric (CC-BY-SA 4.0 with the KiCad library exception)",+ "package_source": "KiCad packages3D Resistor_SMD.3dshapes/R_0402_1005Metric.step (CC-BY-SA 4.0 with exception)",+ "geometry_status": "Generic KiCad package geometry; not manufacturer-issued exact-ordering-code CAD. Verify against the manufacturer land pattern before use.",+ "glb": {+  "tool": "step2glb convert",+  "exit": 0,+  "stderr_tail": "Large file queued for async conversion (job e12a00a08402a36a). Polling...\nJob e12a00a08402a36a complete (0s). Downloading GLB...\n"+ },+ "files": {+  "RC0402FR-075K1L.step": "91507e5af4251cb4ef38e04889c9b98da29904432bd83786bba13ae9b605eacb",+  "README.md": "df7c9faca0ae20182eea5563cfea5e641dbdc439aecf170da742c59faa1ee83f",+  "R_0402_1005Metric_RC0402FR-075K1L.kicad_mod": "23cf5b6c838dc176ce3ff041b1330716cc0cb846d3922a05660c6bc5b98390d4",+  "component.kicad_sym": "02ad8bb9dd5499cbe9c93c168dbb89884227964003f988740dd9a96e150dbbd2",+  "docs/HERO.md": "9da0a654e00e60b02b70d7b7b8c213d69125ac3ed3d380bbb0e7038dc3f52273",+  "docs/hero.png": "abf9a824e98a7370433a39bfb576d288c0e370ca2b3f9b0564dc5730e0139472",+  "docs/models/package-reference-step.png": "b35ce5c346994af44caac940433d15498be886cac3c60520722b20aaa7ddfae8",+  "docs/rc0402fr-075k1l-datasheet.pdf": "7b6f0ae72708ca4b38126f84b5407a3e970a94cb60bc1a0afdaeb25a23d839bb",+  "docs/verify/rc0402fr-075k1l-check.json": "38762b73dffb69ea17987737382186312c6d88e2135603a0cd4bd625fd7fe589",+  "docs/verify/rc0402fr-075k1l-overlay.png": "a234e5d3d97b9d24987f45c448ce633e67cd19b7122fe0cdc4f5c73684b31ddb",+  "lod/high.glb": "378cb8b4bc78cb2a91222849b61c9574bed726a613da74c1c18afc003b2c8f17",+  "lod/high.png": "03b4d4b37c9842733e90fac901934d4b9c2c1ef678dbd506e4422c9da5d96286",+  "lod/low.glb": "254ee645af639ec36ee0992e15cc06ade3a0be575ea8505f5ea2f8d27000c9bf",+  "lod/low.png": "1a9830a03f3abc552005ad1a382b5bc63826b11f9b2360e029249d577030a502",+  "lod/manifest.json": "08c4155afe22b7a657c032fa30b5340e6921225bf2392c96d93eb3610685eb07",+  "lod/medium.glb": "3e80f58d8fb019e06727393fd0fe8fcec5d8557b778cbb6d973ac619093e0764",+  "lod/medium.png": "f049fe2b97734d7ddb334b93900a5cf5b84e2f1dc1da7315a2efeff7f236f473",+  "lod/super-low.glb": "03b75ebf90c22ceb66cb690ae3ba47a6522435830753e98511ed0c426301154d",+  "lod/super-low.png": "2b5e64c2a87d0a650c6de41268667d5885ead95db8842584d8eef99773745415",+  "models.json": "920dd3dfde4b43cd05cb1cbf33dde01f71481a02baaf5268c725597ebb5d3f3d",+  "package-reference.glb": "e0f0a1b3f86b307421456f2e9945d22b4d3e222a7ec62e602fc97c5e6a7f34c3",+  "package.json": "60bf37ca2f71a583b249ad44fab1eb879d5b9f9eaf4c2c7104e6f096e3de37aa",+  "page.json": "f2febc3f3f16c4ff857bf3f4dbcb7643330ac47d3693ac3ff3950f97e215083d",+  "provenance/tools/lod.py": "fc3eb9db56947d002d1dda328a6ee53032eae39f700521d00d18477f9915135c",+  "provenance/tools/ortho.py": "c5a44e74fa447e1ece13190840c90d453cbb004f6c4608efb6e8cdb1ba2cbb6d",+  "provenance/tools/overlay_chip.py": "ed6a4e871ff09d8c41550b3cd9fc853be174f9212ced43c0206835bdc847a222",+  "provenance/tools/rc0402fr-075k1l-overlay-spec.json": "0f0b82c67deb7f22af6e8195a74c57f310ed2e2d3a85dc915af1c962c499c252",+  "verification.json": "af84d40976e82cf7e3593a2613a3df12253aeea5223b8ca8f706c5a5ae40ed4c"+ },+ "marking": {+  "real_marking": null,+  "statement": "Yageo states 'No Marking' for RC0402 (the top is the plain black overcoat)",+  "source": "Yageo RC_L product specification V.14 p.3, MARKING, Fig. 1"+ },+ "mpn_marked_model_removed": {+  "date": "2026-10-19",+  "files": [+   {+    "path": "rc0402fr-075k1l-mpn.step",+    "sha256": "0ef6ac56caad662b755ddb58f62dbc9a44c89312de72f1350c7262270085fdc4"+   },+   {+    "path": "rc0402fr-075k1l-mpn.glb",+    "sha256": "0dead36515ca4072f804a596b3fd9bf7f236875120ea37017a3b8182e7d2bef4"+   },+   {+    "path": "docs/rc0402fr-075k1l-mpn.check.png",+    "sha256": "07b8c36d646dec1a27f846e912e3aefe55e76895630e478c17431f5e94accf99"+   }+  ],+  "reason": "John's rule: every chip shows only its real laser marking from the manufacturer's datasheet. Yageo states 'No Marking' for RC0402 (the top is the plain black overcoat) (Yageo RC_L product specification V.14 p.3, MARKING, Fig. 1), so the AI-added MPN etch misrepresented the part and was deleted.",+  "removed_by": "Claude (AI agent) for John Lauer"+ },+ "datasheet": {+  "file": "docs/rc0402fr-075k1l-datasheet.pdf",+  "sha256": "7b6f0ae72708ca4b38126f84b5407a3e970a94cb60bc1a0afdaeb25a23d839bb",+  "url": "https://yageogroup.com/content/datasheet/asset/file/PYU-RC_GROUP_51_ROHS_L",+  "title": "Yageo RC_L series product specification V.14 (Nov. 14, 2025)",+  "retrieved": "2026-10-19"+ },+ "datasheet_check": {+  "overlay": "docs/verify/rc0402fr-075k1l-overlay.png",+  "numbers": "docs/verify/rc0402fr-075k1l-check.json",+  "tools": "provenance/tools/ (ortho.py, overlay_chip.py, spec json)",+  "result": "PASS"+ },+ "lod": {+  "manifest": "lod/manifest.json",+  "generator": "provenance/tools/lod.py",+  "source_sha256": "91507e5af4251cb4ef38e04889c9b98da29904432bd83786bba13ae9b605eacb"+ },+ "files_note": "page.json, package.json and README.md hashes are as written before this provenance file; provenance.json itself is not listed.",+ "renamed_for_library_export": {+  "date": "2026-10-20",+  "files": {+   "package-reference.step": "RC0402FR-075K1L.step",+   "component.kicad_mod": "R_0402_1005Metric_RC0402FR-075K1L.kicad_mod"+  },+  "footprint_name": {+   "R_0402_1005Metric": "R_0402_1005Metric_RC0402FR-075K1L"+  },+  "reason": "Cloud Library exports merge every board part into one folder; the generic package-reference.step and footprint name collided with other parts. The STEP is byte-identical (same sha256); the footprint geometry is unchanged, only its name and (model) path changed.",+  "by": "Claude (AI agent) for John Lauer"+ },+ "derived_from": {+  "page": "john/rc0402fr-0710kl",+  "date": "2026-10-24",+  "by": "Claude (Encoder forum boards thread) for John Lauer",+  "what": "same RC_L series and 0402 package: footprint, STEP, GLBs, LODs and the datasheet dimension check reused; value, MPN and distributor numbers changed",+  "stock_checked_2026-10-24": {+   "mouser": {+    "pn": "603-RC0402FR-075K1L",+    "stock": 1898556+   },+   "digikey": {+    "pn": "311-5.10KLRTR-ND",+    "stock": 653539+   }+  }+ }+}\ No newline at end of file
provenance/tools/lod.pyadded+170
@@ -0,0 +1,170 @@+"""Board-use LOD GLBs (high, medium, low, super-low) for a small two-terminal chip.++Input: the page's board-use STEP (Z-up, mm, seated on z=0, centred).+Output (in <outdir>/lod/): high.glb medium.glb low.glb super-low.glb, a 400x300+PNG preview of each rendered from that GLB's own triangles, manifest.json+(schema adom/component-lod@1).++Every level: Z-up, metres, the same origin and pose as the STEP (no recentring,+no rotation), primitives batched by material (one per material), the STEP's own+colours.  No footprint, pad outline, label or silkscreen helpers exist in the+source, so nothing is removed.  high/medium/low are OCCT tessellations of the+exact B-rep at decreasing deflection; super-low replaces each material group by+its bounding box per side of the part (terminals, body, overcoat), which keeps+the silhouette, the terminal bands and the seating plane.++usage: lod.py part.step MPN outdir [source_label]+"""+import sys, os, json, struct, hashlib+import numpy as np+from PIL import Image, ImageDraw+sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))+import ortho+from OCP.BRepMesh import BRepMesh_IncrementalMesh+from OCP.BRepTools import BRepTools++step, mpn, outdir = sys.argv[1], sys.argv[2], sys.argv[3]+src_label = sys.argv[4] if len(sys.argv) > 4 else os.path.basename(step)+lod_dir = os.path.join(outdir, "lod"); os.makedirs(lod_dir, exist_ok=True)++LEVELS = [("high", 0.0005, 0.1), ("medium", 0.004, 0.35), ("low", 0.02, 0.9)]++def tris_at(lin, ang):+    # ortho.load_tris meshes with fixed params; clean and remesh by patching BRepMesh call+    orig = ortho.BRepMesh_IncrementalMesh+    def mesh(shp, _l, rel, _a, par):+        BRepTools.Clean_s(shp)+        return orig(shp, lin, False, ang, True)+    ortho.BRepMesh_IncrementalMesh = mesh+    try:+        return ortho.load_tris(step)+    finally:+        ortho.BRepMesh_IncrementalMesh = orig++def boxes_from(tris):+    groups = {}+    for p, c in tris:+        groups.setdefault(c, []).append(p)+    allp = np.concatenate([p for p, _ in tris]); xmax = allp[:, 0].max()+    endc = {}+    for p, c in tris:+        if np.allclose(p[:, 0], xmax, atol=1e-4): endc[c] = endc.get(c, 0) + 1+    tcol = max(endc, key=endc.get)+    boxes = []+    for c, ps in groups.items():+        T = np.stack(ps)+        crosses = ((T[:, :, 0].min(1) < -1e-6) & (T[:, :, 0].max(1) > 1e-6)).any()+        P = T.reshape(-1, 3)+        parts = [P] if crosses else [P[P[:, 0] < 0], P[P[:, 0] > 0]]+        for Q in parts:+            if len(Q):+                boxes.append([Q.min(0), Q.max(0), c])+    tin = min(min(abs(lo[0]), abs(hi[0])) for lo, hi, c in boxes if c == tcol)+    out = []+    for lo, hi, c in boxes:+        if c != tcol:+            lo = lo.copy(); hi = hi.copy(); lo[0] = max(lo[0], -tin); hi[0] = min(hi[0], tin)+        v = np.array([[x, y, z] for x in (lo[0], hi[0]) for y in (lo[1], hi[1]) for z in (lo[2], hi[2])])+        for a_, b_, cc, d in [(0, 1, 3, 2), (4, 6, 7, 5), (0, 4, 5, 1), (2, 3, 7, 6), (0, 2, 6, 4), (1, 5, 7, 3)]:+            out.append((v[[a_, b_, cc]], c)); out.append((v[[a_, cc, d]], c))+    return out++def write_glb(tris, path, name):+    mats = []; groups = {}+    for p, c in tris:+        if c not in groups:+            groups[c] = []; mats.append(c)+        groups[c].append(p)+    bin_ = b""; views = []; accs = []; prims = []+    def add_view(data, target):+        nonlocal bin_+        off = len(bin_); bin_ += data+        while len(bin_) % 4: bin_ += b"\0"+        views.append({"buffer": 0, "byteOffset": off, "byteLength": len(data), "target": target})+        return len(views) - 1+    decoded = 0; ntri = 0+    for mi, c in enumerate(mats):+        P = np.concatenate(groups[c]).reshape(-1, 3, 3)+        n = np.cross(P[:, 1] - P[:, 0], P[:, 2] - P[:, 0]); n /= np.linalg.norm(n, axis=1, keepdims=True) + 1e-30+        pos = (P.reshape(-1, 3) / 1000.0).astype(np.float32)          # mm -> metres+        nor = np.repeat(n, 3, axis=0).astype(np.float32)+        # weld identical (position, normal) vertices+        key = np.concatenate([np.round(pos, 9), np.round(nor, 5)], 1)+        uniq, inv = np.unique(key, axis=0, return_inverse=True)+        upos = uniq[:, :3].astype(np.float32); unor = uniq[:, 3:].astype(np.float32)+        idx = inv.astype(np.uint16 if len(uniq) < 65535 else np.uint32).ravel()+        vp = add_view(upos.tobytes(), 34962); vn = add_view(unor.tobytes(), 34962); vi = add_view(idx.tobytes(), 34963)+        accs.append({"bufferView": vp, "componentType": 5126, "count": len(upos), "type": "VEC3",+                     "min": upos.min(0).tolist(), "max": upos.max(0).tolist()})+        accs.append({"bufferView": vn, "componentType": 5126, "count": len(unor), "type": "VEC3"})+        accs.append({"bufferView": vi, "componentType": 5123 if idx.dtype == np.uint16 else 5125, "count": len(idx), "type": "SCALAR"})+        prims.append({"attributes": {"POSITION": len(accs) - 3, "NORMAL": len(accs) - 2}, "indices": len(accs) - 1, "material": mi})+        decoded += upos.nbytes + unor.nbytes + idx.nbytes; ntri += len(idx) // 3+    gl = {"asset": {"version": "2.0", "generator": "capencoder passives lod.py (OCCT tessellation)"},+          "scene": 0, "scenes": [{"nodes": [0]}],+          "nodes": [{"name": name, "mesh": 0, "extras": {"adomUpAxis": "Z", "units": "metres"}}],+          "meshes": [{"name": name, "primitives": prims}],+          "materials": [{"name": f"mat_{i}", "pbrMetallicRoughness": {"baseColorFactor": [*c, 1.0], "metallicFactor": 0.0, "roughnessFactor": 0.6}} for i, c in enumerate(mats)],+          "accessors": accs, "bufferViews": views, "buffers": [{"byteLength": len(bin_)}]}+    js = json.dumps(gl, separators=(",", ":")).encode()+    while len(js) % 4: js += b" "+    glb = struct.pack("<III", 0x46546C67, 2, 12 + 8 + len(js) + 8 + len(bin_)) + struct.pack("<II", len(js), 0x4E4F534A) + js + struct.pack("<II", len(bin_), 0x004E4942) + bin_+    open(path, "wb").write(glb)+    return {"decodedBufferBytes": decoded, "triangles": ntri, "primitives": len(prims)}++def read_glb_tris(path):+    b = open(path, "rb").read(); n = struct.unpack("<I", b[12:16])[0]+    j = json.loads(b[20:20 + n]); binc = b[20 + n + 8:]+    def acc(i, dt, w):+        a = j["accessors"][i]; v = j["bufferViews"][a["bufferView"]]+        return np.frombuffer(binc, dt, a["count"] * w, v["byteOffset"]).reshape(-1, w) if w > 1 else np.frombuffer(binc, dt, a["count"], v["byteOffset"])+    out = []+    for p in j["meshes"][0]["primitives"]:+        pos = acc(p["attributes"]["POSITION"], np.float32, 3) * 1000.0+        ia = j["accessors"][p["indices"]]+        idx = acc(p["indices"], np.uint16 if ia["componentType"] == 5123 else np.uint32, 1)+        col = tuple(j["materials"][p["material"]]["pbrMetallicRoughness"]["baseColorFactor"][:3])+        for t in idx.reshape(-1, 3):+            out.append((pos[t].astype(float), col))+    return out++ortho.VIEWS["iso"] = (tuple(np.array([0.7071, -0.7071, 0])), tuple(np.array([-0.4082, -0.4082, 0.8165])), tuple(np.array([0.5774, 0.5774, 0.5774])))+def preview(path, png):+    tris = read_glb_tris(path)+    allp = np.concatenate([t[0] for t in tris]); ext = np.abs(allp).max()+    img = ortho.render(tris, "iso", 300 / (3.3 * ext), size=(400, 300))+    bg = Image.new("RGBA", img.size, (48, 57, 68, 255)); bg.alpha_composite(img); bg.convert("RGB").save(png)++sha = lambda f: hashlib.sha256(open(f, "rb").read()).hexdigest()+levels = []+src_tris = None+for name, lin, ang in LEVELS + [("super-low", None, None)]:+    if name == "super-low":+        tris = boxes_from(src_tris)+    else:+        tris = tris_at(lin, ang)+        if name == "high":+            src_tris = tris+    path = os.path.join(lod_dir, f"{name}.glb")+    st = write_glb(tris, path, mpn)+    back = read_glb_tris(path); P = np.concatenate([t[0] for t in back])+    png = os.path.join(lod_dir, f"{name}.png"); preview(path, png)+    rec = {"level": name, "path": f"lod/{name}.glb", "sha256": sha(path), "sizeBytes": os.path.getsize(path), **st,+           "bounds": {"min": (P.min(0) / 1000).round(7).tolist(), "max": (P.max(0) / 1000).round(7).tolist()},+           "approximation": ({"method": "OCCT BRepMesh_IncrementalMesh", "linearDeflectionMm": lin, "angularDeflectionRad": ang}+                             if lin else {"method": "per-material bounding boxes split at the part centre (terminals, body, overcoat)"}),+           "detailVisibility": {"virtualMpn": False, "note": "no marking: the datasheet specifies none"},+           "review": "Candidate: rendered preview checked by AI (silhouette, terminals, seat z=0); not human-reviewed",+           "preview": {"path": f"lod/{name}.png", "sha256": sha(png), "sizeBytes": os.path.getsize(png), "width": 400, "height": 300,+                       "view": "iso", "sourceLevelSha256": sha(path)}}+    levels.append(rec)+    print(name, st, rec["bounds"])+manifest = {"schema": "adom/component-lod@1", "mpn": mpn, "upAxis": "Z", "units": "metres",+            "status": "candidate (AI-checked, not human-reviewed)",+            "purpose": "clean board-use component models: no footprint pads, outlines, labels or silkscreen; no marking (none per datasheet)",+            "source": {"path": src_label, "sha256": sha(step)},+            "sourceToDisplay": "uniform scale 0.001 (mm to m); no rotation, no translation; origin = footprint origin, seat z = 0",+            "generator": "lod.py (capencoder passives, OCCT via cadquery-ocp)",+            "removedHelpers": [], "levels": levels,+            "hints": ["All four levels share pose and units; super-low is boxes per material group, chosen for board overviews."]}+json.dump(manifest, open(os.path.join(lod_dir, "manifest.json"), "w"), indent=1)
provenance/tools/ortho.pyadded+123
@@ -0,0 +1,123 @@+"""Orthographic renderer for small component STEPs (face colours kept).++render(step, view, ppmm) -> PIL RGBA image, model origin at the image centre.+views: top (look down -Z, +X right, +Y up), bottom (look up +Z, +X right, +Y down,+i.e. the part flipped about X), front (look +Y, +X right, +Z up),+end (look -X, +Y right... from +X end: -Y right, +Z up).+"""+import sys+import numpy as np+from PIL import Image, ImageDraw+from OCP.STEPCAFControl import STEPCAFControl_Reader+from OCP.TDocStd import TDocStd_Document+from OCP.TCollection import TCollection_ExtendedString+from OCP.XCAFDoc import XCAFDoc_DocumentTool, XCAFDoc_ColorType+from OCP.TDF import TDF_LabelSequence+from OCP.TopExp import TopExp_Explorer+from OCP.TopAbs import TopAbs_FACE, TopAbs_REVERSED+from OCP.TopoDS import TopoDS+from OCP.Quantity import Quantity_Color+from OCP.BRepMesh import BRepMesh_IncrementalMesh+from OCP.BRep import BRep_Tool+from OCP.TopLoc import TopLoc_Location+++def load_tris(path):+    doc = TDocStd_Document(TCollection_ExtendedString("x"))+    r = STEPCAFControl_Reader(); r.SetColorMode(True); r.SetNameMode(True)+    r.ReadFile(path); r.Transfer(doc)+    st = XCAFDoc_DocumentTool.ShapeTool_s(doc.Main())+    ct = XCAFDoc_DocumentTool.ColorTool_s(doc.Main())+    labs = TDF_LabelSequence(); st.GetFreeShapes(labs)+    out = []+    leaves = []+    def walk(lab, loc, pcol):+        c = Quantity_Color(); col = pcol+        for t in (XCAFDoc_ColorType.XCAFDoc_ColorSurf, XCAFDoc_ColorType.XCAFDoc_ColorGen):+            if ct.GetColor_s(lab, t, c):+                col = (c.Red(), c.Green(), c.Blue()); break+        if st.IsReference_s(lab):+            ref = type(lab)(); st.GetReferredShape_s(lab, ref)+            walk(ref, loc.Multiplied(st.GetLocation_s(lab)), col); return+        kids = TDF_LabelSequence(); st.GetComponents_s(lab, kids)+        if kids.Length() > 0:+            for i in range(1, kids.Length() + 1): walk(kids.Value(i), loc, col)+            return+        leaves.append((st.GetShape_s(lab).Moved(loc), col))+    for li in range(1, labs.Length() + 1):+        walk(labs.Value(li), TopLoc_Location(), None)+    for shp, pcol in leaves:+        BRepMesh_IncrementalMesh(shp, 0.002, False, 0.2, True)+        e = TopExp_Explorer(shp, TopAbs_FACE)+        while e.More():+            f = TopoDS.Face_s(e.Current())+            c = Quantity_Color(); col = None+            for t in (XCAFDoc_ColorType.XCAFDoc_ColorSurf, XCAFDoc_ColorType.XCAFDoc_ColorGen):+                if ct.GetColor(f, t, c):+                    col = (c.Red(), c.Green(), c.Blue()); break+            if col is None:+                col = pcol or (0.6, 0.6, 0.6)+            loc = TopLoc_Location()+            tri = BRep_Tool.Triangulation_s(f, loc)+            if tri is not None:+                trsf = loc.Transformation()+                pts = np.array([(lambda p: (p.X(), p.Y(), p.Z()))(tri.Node(i).Transformed(trsf)) for i in range(1, tri.NbNodes() + 1)])+                rev = f.Orientation() == TopAbs_REVERSED+                for i in range(1, tri.NbTriangles() + 1):+                    a, b, cc = tri.Triangle(i).Get()+                    if rev:+                        b, cc = cc, b+                    out.append((pts[[a - 1, b - 1, cc - 1]], col))+            e.Next()+    return out+++VIEWS = {+    # (right axis vector, up axis vector, toward-viewer vector)+    "top": ((1, 0, 0), (0, 1, 0), (0, 0, 1)),+    "bottom": ((1, 0, 0), (0, -1, 0), (0, 0, -1)),+    "front": ((1, 0, 0), (0, 0, 1), (0, -1, 0)),+    "end": ((0, -1, 0), (0, 0, 1), (1, 0, 0)),+}+++def render(tris, view, ppmm, size=None, shade=True, ss=3):+    R, U, V = [np.array(v, float) for v in VIEWS[view]]+    allp = np.concatenate([t[0] for t in tris])+    ext = max(np.abs(allp @ R).max(), np.abs(allp @ U).max())+    if size is None:+        size = (int(2 * ext * ppmm + 40), int(2 * ext * ppmm + 40))+    W, H = size[0] * ss, size[1] * ss+    img = Image.new("RGBA", (W, H), (0, 0, 0, 0))+    d = ImageDraw.Draw(img)+    items = []+    light = np.array([0.3, 0.4, 0.85]); light /= np.linalg.norm(light)+    for p, col in tris:+        n = np.cross(p[1] - p[0], p[2] - p[0])+        nn = np.linalg.norm(n)+        if nn == 0:+            continue+        n /= nn+        if n @ V <= 1e-6:+            continue  # back face+        depth = (p @ V).mean()+        lv = 0.55 + 0.45 * abs(n @ (R * light[0] + U * light[1] + V * light[2])) if shade else 1.0+        rgb = tuple(int(255 * min(1, c * lv)) for c in col)+        xy = [(W / 2 + (q @ R) * ppmm * ss, H / 2 - (q @ U) * ppmm * ss) for q in p]+        items.append((depth, xy, rgb))+    items.sort(key=lambda x: x[0])+    for _, xy, rgb in items:+        d.polygon(xy, fill=rgb + (255,), outline=rgb + (255,))+    return img.resize(size, Image.LANCZOS)+++if __name__ == "__main__":+    tris = load_tris(sys.argv[1])+    out = sys.argv[2]+    ppmm = float(sys.argv[3]) if len(sys.argv) > 3 else 300+    imgs = [render(tris, v, ppmm) for v in ("top", "bottom", "front", "end")]+    w = sum(i.width for i in imgs); h = max(i.height for i in imgs)+    sheet = Image.new("RGBA", (w, h), (255, 255, 255, 255)); x = 0+    for i in imgs:+        sheet.alpha_composite(i, (x, 0)); x += i.width+    sheet.save(out)
provenance/tools/overlay_chip.pyadded+146
@@ -0,0 +1,146 @@+"""Prove a two-terminal chip model (MLCC / chip resistor) against its datasheet table.++The maker prints a dimension table with an unscaled sketch, so the overlay is made+against a true-scale drawing generated from the printed table (300 px/mm):+nominal outline solid black, tolerance limits dashed blue, the allowed range of+the terminal inner edge shaded amber.  The model is rendered at the same scale+(50 % fill, red outline) on top.  The numeric check measures the STEP itself.++usage: overlay_chip.py spec.json model.step out.png+spec: {"label","mpn","source","L":[nom,tol],"W":[nom,tol],"T":[nom,tol],+       "band_top":[min,max],"band_bot":[min,max],"crops":[[png,[x0,y0,x1,y1]],...],+       "marking": "..."}+"""+import sys, json+import numpy as np+from PIL import Image, ImageDraw, ImageFont, ImageFilter+sys.path.insert(0, __file__.rsplit("/", 1)[0])+from ortho import load_tris, render+from OCP.STEPControl import STEPControl_Reader+from OCP.TopExp import TopExp_Explorer+from OCP.TopAbs import TopAbs_FACE+from OCP.TopoDS import TopoDS+from OCP.Bnd import Bnd_Box+from OCP.BRepBndLib import BRepBndLib+from OCP.BRepAdaptor import BRepAdaptor_Surface+from OCP.GeomAbs import GeomAbs_Plane++PP = 300.0+spec = json.load(open(sys.argv[1])); step = sys.argv[2]; out = sys.argv[3]+F = "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf"+font = ImageFont.truetype(F, 22); fsm = ImageFont.truetype(F, 18); fbig = ImageFont.truetype(F, 26)++# ---------- numeric measurement of the STEP ----------+tris = load_tris(step)+allp = np.concatenate([t[0] for t in tris])+x0, y0, z0 = allp.min(0); x1, y1, z1 = allp.max(0)+Lm, Wm, Tm = x1 - x0, y1 - y0, z1 - z0+# terminal colour = colour of triangles lying on the +X end face+endcols = {}+for p, c in tris:+    if np.allclose(p[:, 0], x1, atol=1e-4):+        endcols[c] = endcols.get(c, 0) + 1+tcol = max(endcols, key=endcols.get)+def band(zlev):+    xs = [p[:, 0] for p, c in tris if c == tcol and np.allclose(p[:, 2], zlev, atol=1e-4)]+    if not xs:+        return None+    xs = np.concatenate(xs)+    pos = xs[xs > 0]; neg = xs[xs < 0]+    return round(min(x1 - pos.min(), -x0 + neg.max() if len(neg) else 9), 3)+bt, bb = band(z1), band(z0)++def rng(v):+    return (v[0] - v[1], v[0] + v[1]) if len(v) == 2 and v[1] < v[0] else tuple(v)+checks = []+def chk(name, val, lo, hi):+    ok = val is not None and lo - 1e-6 <= val <= hi + 1e-6+    checks.append((name, val, lo, hi, ok))+chk("L", round(Lm, 3), *rng(spec["L"]))+chk("W", round(Wm, 3), *rng(spec["W"]))+chk("T/H", round(Tm, 3), *rng(spec["T"]))+chk(spec.get("band_top_name", "terminal band, top"), bt, *spec["band_top"])+chk(spec.get("band_bot_name", "terminal band, bottom"), bb, *spec["band_bot"])+centred = bool(abs(x0 + x1) < 1e-3 and abs(y0 + y1) < 1e-3 and abs(z0) < 1e-3)+longx = bool(Lm > Wm)++# ---------- true-scale drawing + model per view ----------+def view_panel(view, a_len, a_tol, b_len, b_tol, bands, title):+    im = render(tris, view, PP, size=(560, 420))+    W_, H_ = im.size; cx = W_ / 2+    panel = Image.new("RGBA", (W_, H_), (255, 255, 255, 255))+    d = ImageDraw.Draw(panel)+    seat = view in ("front", "end")+    def rect(a, b, **kw):+        # a along horizontal, b along vertical; for side views the box sits on the seat line+        if seat:+            return [cx - a * PP / 2, H_ / 2 - b * PP, cx + a * PP / 2, H_ / 2]+        return [cx - a * PP / 2, H_ / 2 - b * PP / 2, cx + a * PP / 2, H_ / 2 + b * PP / 2]+    # allowed inner-edge range for the terminals (relative to nominal length)+    for (lo, hi, where) in bands:+        for s in (-1, 1):+            xa = cx + s * (a_len / 2 - hi) * PP; xb = cx + s * (a_len / 2 - lo) * PP+            if where == "full":+                ya, yb = rect(a_len, b_len)[1], rect(a_len, b_len)[3]+            elif where == "top":+                r_ = rect(a_len, b_len); ya, yb = r_[1] - 12, r_[1] + 12+            else:+                r_ = rect(a_len, b_len); ya, yb = r_[3] - 12, r_[3] + 12+            d.rectangle([min(xa, xb), ya, max(xa, xb), yb], fill=(255, 196, 80, 255))+    def dashed(box, col):+        xa, ya, xb, yb = box+        for (p, q) in (((xa, ya), (xb, ya)), ((xb, ya), (xb, yb)), ((xb, yb), (xa, yb)), ((xa, yb), (xa, ya))):+            n = int(max(abs(q[0] - p[0]), abs(q[1] - p[1])) / 8) or 1+            for i in range(0, n, 2):+                t0, t1 = i / n, min(1, (i + 1) / n)+                d.line([(p[0] + (q[0] - p[0]) * t0, p[1] + (q[1] - p[1]) * t0),+                        (p[0] + (q[0] - p[0]) * t1, p[1] + (q[1] - p[1]) * t1)], fill=col, width=2)+    dashed(rect(a_len - a_tol, b_len - b_tol), (30, 90, 220))+    dashed(rect(a_len + a_tol, b_len + b_tol), (30, 90, 220))+    d.rectangle(rect(a_len, b_len), outline=(0, 0, 0), width=2)+    arr = np.asarray(im).copy(); alpha = arr[:, :, 3].copy(); arr[:, :, 3] = (alpha * 0.5).astype(np.uint8)+    panel.alpha_composite(Image.fromarray(arr))+    m = Image.fromarray(((alpha > 128) * 255).astype(np.uint8))+    edge = (np.asarray(m, int) - np.asarray(m.filter(ImageFilter.MinFilter(3)), int)) > 0+    red = np.zeros((H_, W_, 4), np.uint8); red[edge] = (220, 30, 30, 255)+    panel.alpha_composite(Image.fromarray(red))+    d = ImageDraw.Draw(panel); d.text((10, 8), title, fill=(0, 0, 0), font=fsm)+    return panel++L, W, T = spec["L"], spec["W"], spec["T"]+bt_r, bb_r = spec["band_top"], spec["band_bot"]+panels = [+    view_panel("top", L[0], L[1], W[0], W[1], [(bt_r[0], bt_r[1], "full")], "TOP (looking down, X right)"),+    view_panel("bottom", L[0], L[1], W[0], W[1], [(bb_r[0], bb_r[1], "full")], "BOTTOM (flipped about X)"),+    view_panel("front", L[0], L[1], T[0], T[1], [(bt_r[0], bt_r[1], "top"), (bb_r[0], bb_r[1], "bot")], "SIDE (looking +Y)"),+    view_panel("end", W[0], W[1], T[0], T[1], [], "END (looking -X)"),+]+pw, ph = panels[0].size+sheet_w = pw * 4 + 50+crops = [Image.open(p).convert("RGB").crop(tuple(b)) for p, b in spec["crops"]]+crop_h = 0; scaled = []+for c in crops:+    s = min(1.0, (sheet_w - 40) / c.width, 420 / c.height)+    c2 = c.resize((int(c.width * s), int(c.height * s)), Image.LANCZOS); scaled.append(c2); crop_h += c2.height + 20+text_h = 120 + 30 * len(checks) + 90+sheet = Image.new("RGB", (sheet_w, 80 + ph + text_h + crop_h), (255, 255, 255))+d = ImageDraw.Draw(sheet)+d.text((20, 15), f"{spec['label']}: model vs datasheet table, true scale {int(PP)} px/mm", fill=(0, 0, 0), font=fbig)+d.text((20, 50), f"Model: {step.rsplit('/', 1)[-1]}   Datasheet: {spec['source']}", fill=(70, 70, 70), font=fsm)+for i, p in enumerate(panels):+    sheet.paste(p.convert("RGB"), (10 + i * (pw + 10), 80))+y = 90 + ph+d.text((20, y), "Legend: black = printed nominal, blue dashed = printed tolerance limits, amber = allowed position of the terminal inner edge, red outline + 50% fill = the 3D model.", fill=(0, 0, 0), font=fsm); y += 34+d.text((20, y), "Measured on the STEP              value     datasheet range     result", fill=(0, 0, 0), font=font); y += 32+for name, val, lo, hi, ok in checks:+    d.text((20, y), f"{name:<34}{'-' if val is None else f'{val:.3f}':>8}     {lo:.2f} to {hi:.2f}       {'PASS' if ok else 'FAIL'}",+           fill=(0, 120, 40) if ok else (200, 0, 0), font=font); y += 30+d.text((20, y + 4), f"Frame: Z-up, seated z=0, centred: {'yes' if centred else 'NO'}; long axis on X: {'yes' if longx else 'NO'}.   Marking: {spec['marking']}", fill=(0, 0, 0), font=fsm)+y += 50+for c in scaled:+    sheet.paste(c, (20, y)); d.rectangle([20, y, 20 + c.width, y + c.height], outline=(150, 150, 150)); y += c.height + 20+sheet.save(out)+res = {"step": step, "bbox_mm": [round(float(v), 4) for v in (x0, x1, y0, y1, z0, z1)],+       "checks": [{"dim": n, "model_mm": v, "datasheet_min": lo, "datasheet_max": hi, "pass": bool(ok)} for n, v, lo, hi, ok in checks],+       "z_up_seated_centred": bool(centred), "long_axis_x": bool(longx), "all_pass": bool(all(c[4] for c in checks) and centred and longx)}+print(json.dumps(res))
provenance/tools/rc0402fr-075k1l-overlay-spec.jsonadded+56
@@ -0,0 +1,56 @@+{+ "label": "RC0402FR-075K1L",+ "source": "Yageo RC_L series product specification V.14 (Nov. 14, 2025) p.4 Table 1 + Fig. 9; marking p.3 Fig. 1",+ "L": [+  1.0,+  0.05+ ],+ "W": [+  0.5,+  0.05+ ],+ "T": [+  0.35,+  0.05+ ],+ "band_top": [+  0.1,+  0.3+ ],+ "band_bot": [+  0.15,+  0.35+ ],+ "band_top_name": "I1 (top terminal)",+ "band_bot_name": "I2 (bottom terminal)",+ "crops": [+  [+   "p-03.png",+   [+    120,+    370,+    1540,+    560+   ]+  ],+  [+   "p-04.png",+   [+    840,+    365,+    1512,+    990+   ]+  ],+  [+   "p-04.png",+   [+    135,+    1040,+    1512,+    1250+   ]+  ]+ ],+ "marking": "'No Marking' for RC0402 (p.3 Fig. 1)"+}\ No newline at end of file
rc0402fr-075k1l-hero.glbadded
⋯ 1 unchanged line ⋯
rc0402fr-075k1l-hero.overlay.jsonadded+125
@@ -0,0 +1,125 @@+{+  "spec": "adom-hero 1.4",+  "mpn": "RC0402FR-075K1L",+  "kind": "component + footprint reference art",+  "board_use": false,+  "plane_z_mm": -0.02,+  "units": "metre",+  "upAxis": "Z",+  "layers": {+    "pad_outlines": {+      "material": "Footprint pads - teal dashed outlines - 50 percent opacity",+      "rgba": [+        0.0,+        0.902,+        0.863,+        0.5+      ],+      "pads": 2,+      "span_mm": 1.56,+      "dash_mm": 0.12,+      "gap_mm": 0.072,+      "pad_stroke_mm": 0.03+    },+    "silkscreen": {+      "material": "Silkscreen reference lines - 30 percent opacity",+      "rgba": [+        0.92,+        0.96,+        1.0,+        0.3+      ],+      "footprint_items": 2,+      "pin1": null+    },+    "signal_names": {+      "material": "Signal names - 50 percent opacity",+      "rgba": [+        0.92,+        0.96,+        1.0,+        0.5+      ],+      "font": "DejaVu Sans Mono",+      "labels": 2,+      "sides": "top + mirrored underside (single-sided)",+      "fallback_to_pad_number": 2+    }+  },+  "align": {+    "ok": true,+    "centre_offset_mm": 0.0,+    "tolerance_mm": 0.25,+    "orientation_flipped": false,+    "contacts_bbox_mm": [+      -0.5,+      0.5,+      -0.25,+      0.25+    ],+    "pads_bbox_mm": [+      -0.78,+      0.78,+      -0.32,+      0.32+    ],+    "seating_z_mm": -0.0+  },+  "sources": {+    "glb": "package-reference.glb",+    "glb_sha256": "e0f0a1b3f86b307421456f2e9945d22b4d3e222a7ec62e602fc97c5e6a7f34c3",+    "footprint": "R_0402_1005Metric_RC0402FR-075K1L.kicad_mod",+    "footprint_sha256": "23cf5b6c838dc176ce3ff041b1330716cc0cb846d3922a05660c6bc5b98390d4",+    "pins": "page.json component.pins",+    "pins_sha256": "30da8c176bce6fc4080c622c80e9a214aeb2ac4afd9447b1817db8f9099455e9"+  },+  "generator": "adom-wiki 1.8.0 (component_hero)",+  "labels": [+    {+      "pad": "1",+      "text": "1",+      "x": -0.88,+      "y": 0.0,+      "align": "right",+      "vertical": false,+      "h": 0.378+    },+    {+      "pad": "2",+      "text": "2",+      "x": 0.88,+      "y": 0.0,+      "align": "left",+      "vertical": false,+      "h": 0.378+    }+  ],+  "pads": [+    {+      "number": "1",+      "shape": "roundrect",+      "center_mm": [+        -0.51,+        0.0+      ],+      "size_mm": [+        0.54,+        0.64+      ],+      "rot": 0.0+    },+    {+      "number": "2",+      "shape": "roundrect",+      "center_mm": [+        0.51,+        0.0+      ],+      "size_mm": [+        0.54,+        0.64+      ],+      "rot": 0.0+    }+  ]+}
verification.jsonadded+147
@@ -0,0 +1,147 @@+{+ "schema": "adom/verification@1",+ "part": "RC0402FR-075K1L",+ "variants": [],+ "entries": [+  {+   "date": "2026-10-19",+   "by": {+    "name": "Claude (AI agent) for John Lauer",+    "handle": "john"+   },+   "status": "verified",+   "title": "3D model matches the datasheet package dimensions",+   "scope": [+    "3d-model"+   ],+   "variants": [+    "*"+   ],+   "checks": [+    {+     "text": "L: model 1.000 mm, datasheet 0.95 to 1.05 mm",+     "result": "pass"+    },+    {+     "text": "W: model 0.500 mm, datasheet 0.45 to 0.55 mm",+     "result": "pass"+    },+    {+     "text": "T/H: model 0.350 mm, datasheet 0.30 to 0.40 mm",+     "result": "pass"+    },+    {+     "text": "I1 (top terminal): model 0.165 mm, datasheet 0.10 to 0.30 mm",+     "result": "pass"+    },+    {+     "text": "I2 (bottom terminal): model 0.165 mm, datasheet 0.15 to 0.35 mm",+     "result": "pass"+    },+    {+     "text": "Z-up, seated on z = 0, centred on the footprint origin, long axis on X",+     "result": "pass"+    },+    {+     "text": "the maker's sketch is not to scale; the overlay is against a true-scale drawing of the printed table",+     "result": "note"+    }+   ],+   "evidence": [+    {+     "label": "overlay (top, bottom, side, end at 300 px/mm)",+     "href": "docs/verify/rc0402fr-075k1l-overlay.png"+    },+    {+     "label": "numbers",+     "href": "docs/verify/rc0402fr-075k1l-check.json"+    },+    {+     "label": "datasheet (Yageo RC_L series product specification V.14 (Nov. 14, 2025))",+     "href": "docs/rc0402fr-075k1l-datasheet.pdf"+    }+   ],+   "files": {+    "RC0402FR-075K1L.step": "91507e5af4251cb4ef38e04889c9b98da29904432bd83786bba13ae9b605eacb",+    "package-reference.glb": "e0f0a1b3f86b307421456f2e9945d22b4d3e222a7ec62e602fc97c5e6a7f34c3",+    "docs/rc0402fr-075k1l-datasheet.pdf": "7b6f0ae72708ca4b38126f84b5407a3e970a94cb60bc1a0afdaeb25a23d839bb"+   }+  },+  {+   "date": "2026-10-19",+   "by": {+    "name": "Claude (AI agent) for John Lauer",+    "handle": "john"+   },+   "status": "verified",+   "title": "Marking: the model shows the real part, which is unmarked",+   "scope": [+    "3d-model",+    "marking"+   ],+   "variants": [+    "*"+   ],+   "checks": [+    {+     "text": "Yageo states 'No Marking' for RC0402 (the top is the plain black overcoat) (Yageo RC_L product specification V.14 p.3, MARKING, Fig. 1)",+     "result": "pass"+    },+    {+     "text": "AI-added MPN etch removed (rc0402fr-075k1l-mpn.step, rc0402fr-075k1l-mpn.glb, docs/rc0402fr-075k1l-mpn.check.png)",+     "result": "pass"+    }+   ],+   "evidence": [+    {+     "label": "datasheet",+     "href": "docs/rc0402fr-075k1l-datasheet.pdf"+    }+   ],+   "files": {+    "RC0402FR-075K1L.step": "91507e5af4251cb4ef38e04889c9b98da29904432bd83786bba13ae9b605eacb"+   }+  },+  {+   "date": "2026-10-19",+   "by": {+    "name": "Claude (AI agent) for John Lauer",+    "handle": "john"+   },+   "status": "verified",+   "title": "Board-use LOD GLBs are clean and share the STEP pose",+   "scope": [+    "lod"+   ],+   "variants": [+    "*"+   ],+   "checks": [+    {+     "text": "four levels written, read back, bounds equal the STEP (Z-up, metres, seat z = 0)",+     "result": "pass"+    },+    {+     "text": "no footprint, pad outline, label or silkscreen helpers; terminals present at every level",+     "result": "pass"+    },+    {+     "text": "previews looked at by the AI agent, not yet by a person",+     "result": "note"+    }+   ],+   "evidence": [+    {+     "label": "manifest",+     "href": "lod/manifest.json"+    }+   ],+   "files": {+    "lod/high.glb": "378cb8b4bc78cb2a91222849b61c9574bed726a613da74c1c18afc003b2c8f17",+    "lod/medium.glb": "3e80f58d8fb019e06727393fd0fe8fcec5d8557b778cbb6d973ac619093e0764",+    "lod/low.glb": "254ee645af639ec36ee0992e15cc06ade3a0be575ea8505f5ea2f8d27000c9bf",+    "lod/super-low.glb": "03b75ebf90c22ceb66cb690ae3ba47a6522435830753e98511ed0c426301154d"+   }+  }+ ]+}