component
RC0402FR-075K1L - Yageo
Public Unreviewedby John Lauer
Thick film chip resistor, 5.1 kohm, 1%, 1/16 W, 0402 (1005 metric), RC_L series
← Commit history
Publish 0.1.0
31 files changed
+2611
RC0402FR-075K1L.step+1049README.md+77R_0402_1005Metric_RC0402FR-075K1L.kicad_mod+112component.kicad_sym+13docs/HERO.md+1docs/hero.pngdocs/models/package-reference-step.pngdocs/rc0402fr-075k1l-datasheet.pdfdocs/verify/rc0402fr-075k1l-check.json+51docs/verify/rc0402fr-075k1l-overlay.pnglod/high.glblod/high.pnglod/low.glblod/low.pnglod/manifest.json+178lod/medium.glblod/medium.pnglod/super-low.glblod/super-low.pngmodels.json+125package-reference.glbpackage.json+59page.json+65provenance.json+114provenance/tools/lod.py+170provenance/tools/ortho.py+123provenance/tools/overlay_chip.py+146provenance/tools/rc0402fr-075k1l-overlay-spec.json+56rc0402fr-075k1l-hero.glbrc0402fr-075k1l-hero.overlay.json+125verification.json+147RC0402FR-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.++++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+}
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."+ ]+}
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"+}
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]"+ }+}
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+ }+ }+ }+}
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)"+}
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"+ }+ }+ ]+}