component
RC0603FR-078R2L - Yageo
Public Unreviewedby John Lauer
Thick film chip resistor, 8.2 ohm, 1%, 1/10 W, 0603 (1608 metric), RC_L series
← Commit history
Add component files for RC0603FR-078R2L
31 files changed
+2688−2
RC0603FR-078R2L.step+1049README.md+83−2R_0603_1608Metric_RC0603FR-078R2L.kicad_mod+112component.kicad_sym+198docs/HERO.md+1docs/hero.pngdocs/models/package-reference-step.pngdocs/rc0603fr-078r2l-datasheet.pdfdocs/verify/rc0603fr-078r2l-check.json+51docs/verify/rc0603fr-078r2l-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+64provenance.json+95provenance/tools/__pycache__/ortho.cpython-312.pycprovenance/tools/lod.py+170provenance/tools/ortho.py+123provenance/tools/overlay_chip.py+146provenance/tools/rc0603fr-078r2l-overlay-spec.json+17rc0603fr-078r2l-hero.glbrc0603fr-078r2l-hero.overlay.json+125verification.json+151RC0603FR-078R2L.stepadded+1049@@ -0,0 +1,1049 @@+ISO-10303-21;+HEADER;+/* R_0603_1608Metric.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_0603_1608Metric'),+/* implementation_level */ '2;1');++FILE_NAME(+/* name */ 'R_0603_1608Metric.step',+/* time_stamp */ '2018-01-04T00:45:34',+/* 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_0603_1608Metric','R_0603_1608Metric','',(#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.8,-0.4,4.5E-02));+#24 = VERTEX_POINT('',#25);+#25 = CARTESIAN_POINT('',(-0.8,-0.4,0.405));+#26 = LINE('',#27,#28);+#27 = CARTESIAN_POINT('',(-0.8,-0.4,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.8,0.4,4.5E-02));+#34 = LINE('',#35,#36);+#35 = CARTESIAN_POINT('',(-0.8,-0.4,4.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.8,0.4,0.405));+#42 = LINE('',#43,#44);+#43 = CARTESIAN_POINT('',(-0.8,0.4,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.8,-0.4,0.405));+#50 = VECTOR('',#51,1.);+#51 = DIRECTION('',(0.,1.,0.));+#52 = PLANE('',#53);+#53 = AXIS2_PLACEMENT_3D('',#54,#55,#56);+#54 = CARTESIAN_POINT('',(-0.8,-0.4,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.755,-0.4,-2.775557561563E-17));+#64 = VERTEX_POINT('',#65);+#65 = CARTESIAN_POINT('',(-0.545,-0.4,-2.775557561563E-17));+#66 = LINE('',#67,#68);+#67 = CARTESIAN_POINT('',(-0.8,-0.4,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,4.5E-02);+#73 = AXIS2_PLACEMENT_3D('',#74,#75,#76);+#74 = CARTESIAN_POINT('',(-0.755,-0.4,4.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.755,-0.4,0.45));+#82 = CIRCLE('',#83,4.5E-02);+#83 = AXIS2_PLACEMENT_3D('',#84,#85,#86);+#84 = CARTESIAN_POINT('',(-0.755,-0.4,0.405));+#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.545,-0.4,0.45));+#91 = LINE('',#92,#93);+#92 = CARTESIAN_POINT('',(-0.8,-0.4,0.45));+#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.5,-0.4,0.405));+#99 = CIRCLE('',#100,4.5E-02);+#100 = AXIS2_PLACEMENT_3D('',#101,#102,#103);+#101 = CARTESIAN_POINT('',(-0.545,-0.4,0.405));+#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.755,-0.4,0.405));+#108 = LINE('',#109,#110);+#109 = CARTESIAN_POINT('',(-0.755,-0.4,0.405));+#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.755,-0.4,4.5E-02));+#116 = LINE('',#117,#118);+#117 = CARTESIAN_POINT('',(-0.755,-0.4,4.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.5,-0.4,4.5E-02));+#124 = LINE('',#125,#126);+#125 = CARTESIAN_POINT('',(-0.755,-0.4,4.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,4.5E-02);+#131 = AXIS2_PLACEMENT_3D('',#132,#133,#134);+#132 = CARTESIAN_POINT('',(-0.545,-0.4,4.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.8,-0.4,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.755,0.4,-2.775557561563E-17));+#148 = LINE('',#149,#150);+#149 = CARTESIAN_POINT('',(-0.755,-0.4,-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,4.5E-02);+#155 = AXIS2_PLACEMENT_3D('',#156,#157,#158);+#156 = CARTESIAN_POINT('',(-0.755,0.4,4.5E-02));+#157 = DIRECTION('',(0.,-1.,0.));+#158 = DIRECTION('',(0.,0.,1.));+#159 = ORIENTED_EDGE('',*,*,#31,.F.);+#160 = CYLINDRICAL_SURFACE('',#161,4.5E-02);+#161 = AXIS2_PLACEMENT_3D('',#162,#163,#164);+#162 = CARTESIAN_POINT('',(-0.755,-0.4,4.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.755,0.4,0.45));+#173 = LINE('',#174,#175);+#174 = CARTESIAN_POINT('',(-0.755,-0.4,0.45));+#175 = VECTOR('',#176,1.);+#176 = DIRECTION('',(0.,1.,0.));+#177 = ORIENTED_EDGE('',*,*,#178,.F.);+#178 = EDGE_CURVE('',#40,#171,#179,.T.);+#179 = CIRCLE('',#180,4.5E-02);+#180 = AXIS2_PLACEMENT_3D('',#181,#182,#183);+#181 = CARTESIAN_POINT('',(-0.755,0.4,0.405));+#182 = DIRECTION('',(0.,1.,0.));+#183 = DIRECTION('',(0.,0.,1.));+#184 = ORIENTED_EDGE('',*,*,#47,.F.);+#185 = CYLINDRICAL_SURFACE('',#186,4.5E-02);+#186 = AXIS2_PLACEMENT_3D('',#187,#188,#189);+#187 = CARTESIAN_POINT('',(-0.755,-0.4,0.405));+#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.545,0.4,-2.775557561563E-17));+#197 = LINE('',#198,#199);+#198 = CARTESIAN_POINT('',(-0.8,0.4,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.545,0.4,0.45));+#208 = LINE('',#209,#210);+#209 = CARTESIAN_POINT('',(-0.8,0.4,0.45));+#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.5,0.4,0.405));+#216 = CIRCLE('',#217,4.5E-02);+#217 = AXIS2_PLACEMENT_3D('',#218,#219,#220);+#218 = CARTESIAN_POINT('',(-0.545,0.4,0.405));+#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.755,0.4,0.405));+#225 = LINE('',#226,#227);+#226 = CARTESIAN_POINT('',(-0.755,0.4,0.405));+#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.755,0.4,4.5E-02));+#233 = LINE('',#234,#235);+#234 = CARTESIAN_POINT('',(-0.755,0.4,4.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.5,0.4,4.5E-02));+#241 = LINE('',#242,#243);+#242 = CARTESIAN_POINT('',(-0.755,0.4,4.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,4.5E-02);+#248 = AXIS2_PLACEMENT_3D('',#249,#250,#251);+#249 = CARTESIAN_POINT('',(-0.545,0.4,4.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.8,0.4,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.545,-0.4,-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.8,-0.4,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.5,-0.4,4.5E-02));+#284 = VECTOR('',#285,1.);+#285 = DIRECTION('',(0.,1.,0.));+#286 = CYLINDRICAL_SURFACE('',#287,4.5E-02);+#287 = AXIS2_PLACEMENT_3D('',#288,#289,#290);+#288 = CARTESIAN_POINT('',(-0.545,-0.4,4.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.5,-0.4,0.405));+#301 = LINE('',#302,#303);+#302 = CARTESIAN_POINT('',(-0.5,-0.4,0.405));+#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.755,-0.4,0.405));+#309 = LINE('',#310,#311);+#310 = CARTESIAN_POINT('',(-0.755,-0.4,0.405));+#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.755,-0.4,4.5E-02));+#317 = LINE('',#318,#319);+#318 = CARTESIAN_POINT('',(0.755,-0.4,4.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.5,-0.4,4.5E-02));+#325 = LINE('',#326,#327);+#326 = CARTESIAN_POINT('',(-0.755,-0.4,4.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.755,-0.4,4.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.755,-0.4,4.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.545,-0.4,0.45));+#350 = VECTOR('',#351,1.);+#351 = DIRECTION('',(0.,1.,0.));+#352 = PLANE('',#353);+#353 = AXIS2_PLACEMENT_3D('',#354,#355,#356);+#354 = CARTESIAN_POINT('',(-0.8,-0.4,0.45));+#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.5,-0.4,0.405));+#367 = VECTOR('',#368,1.);+#368 = DIRECTION('',(0.,1.,0.));+#369 = CYLINDRICAL_SURFACE('',#370,4.5E-02);+#370 = AXIS2_PLACEMENT_3D('',#371,#372,#373);+#371 = CARTESIAN_POINT('',(-0.545,-0.4,0.405));+#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.5,0.4,0.405));+#384 = LINE('',#385,#386);+#385 = CARTESIAN_POINT('',(-0.5,0.4,0.405));+#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.755,0.4,0.405));+#392 = LINE('',#393,#394);+#393 = CARTESIAN_POINT('',(-0.755,0.4,0.405));+#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.755,0.4,4.5E-02));+#400 = LINE('',#401,#402);+#401 = CARTESIAN_POINT('',(0.755,0.4,4.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.5,0.4,4.5E-02));+#408 = LINE('',#409,#410);+#409 = CARTESIAN_POINT('',(-0.755,0.4,4.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.755,0.4,4.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.755,0.4,4.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.5,-0.4,4.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.755,-0.4,4.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.545,-0.4,-2.775557561563E-17));+#447 = VERTEX_POINT('',#448);+#448 = CARTESIAN_POINT('',(0.755,-0.4,-2.775557561563E-17));+#449 = LINE('',#450,#451);+#450 = CARTESIAN_POINT('',(0.5,-0.4,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,4.5E-02);+#456 = AXIS2_PLACEMENT_3D('',#457,#458,#459);+#457 = CARTESIAN_POINT('',(0.545,-0.4,4.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.545,-0.4,0.45));+#467 = CIRCLE('',#468,4.5E-02);+#468 = AXIS2_PLACEMENT_3D('',#469,#470,#471);+#469 = CARTESIAN_POINT('',(0.545,-0.4,0.405));+#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.755,-0.4,0.45));+#476 = LINE('',#477,#478);+#477 = CARTESIAN_POINT('',(0.5,-0.4,0.45));+#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.8,-0.4,0.405));+#484 = CIRCLE('',#485,4.5E-02);+#485 = AXIS2_PLACEMENT_3D('',#486,#487,#488);+#486 = CARTESIAN_POINT('',(0.755,-0.4,0.405));+#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.8,-0.4,4.5E-02));+#493 = LINE('',#494,#495);+#494 = CARTESIAN_POINT('',(0.8,-0.4,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,4.5E-02);+#500 = AXIS2_PLACEMENT_3D('',#501,#502,#503);+#501 = CARTESIAN_POINT('',(0.755,-0.4,4.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.5,-0.4,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.5,-0.4,0.45));+#517 = LINE('',#518,#519);+#518 = CARTESIAN_POINT('',(-0.5,-0.4,0.405));+#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.5,-0.4,0.45));+#525 = LINE('',#526,#527);+#526 = CARTESIAN_POINT('',(-0.5,-0.4,0.45));+#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.5,-0.4,0.405));+#533 = VECTOR('',#534,1.);+#534 = DIRECTION('',(0.,0.,1.));+#535 = PLANE('',#536);+#536 = AXIS2_PLACEMENT_3D('',#537,#538,#539);+#537 = CARTESIAN_POINT('',(-0.5,-0.4,0.405));+#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.5,0.4,0.45));+#549 = LINE('',#550,#551);+#550 = CARTESIAN_POINT('',(-0.5,0.4,0.405));+#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.5,-0.4,0.45));+#557 = VECTOR('',#558,1.);+#558 = DIRECTION('',(0.,1.,0.));+#559 = PLANE('',#560);+#560 = AXIS2_PLACEMENT_3D('',#561,#562,#563);+#561 = CARTESIAN_POINT('',(-0.5,-0.4,0.405));+#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.545,0.4,-2.775557561563E-17));+#571 = VERTEX_POINT('',#572);+#572 = CARTESIAN_POINT('',(0.755,0.4,-2.775557561563E-17));+#573 = LINE('',#574,#575);+#574 = CARTESIAN_POINT('',(0.5,0.4,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,4.5E-02);+#580 = AXIS2_PLACEMENT_3D('',#581,#582,#583);+#581 = CARTESIAN_POINT('',(0.545,0.4,4.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.545,0.4,0.45));+#591 = CIRCLE('',#592,4.5E-02);+#592 = AXIS2_PLACEMENT_3D('',#593,#594,#595);+#593 = CARTESIAN_POINT('',(0.545,0.4,0.405));+#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.755,0.4,0.45));+#600 = LINE('',#601,#602);+#601 = CARTESIAN_POINT('',(0.5,0.4,0.45));+#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.8,0.4,0.405));+#608 = CIRCLE('',#609,4.5E-02);+#609 = AXIS2_PLACEMENT_3D('',#610,#611,#612);+#610 = CARTESIAN_POINT('',(0.755,0.4,0.405));+#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.8,0.4,4.5E-02));+#617 = LINE('',#618,#619);+#618 = CARTESIAN_POINT('',(0.8,0.4,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,4.5E-02);+#624 = AXIS2_PLACEMENT_3D('',#625,#626,#627);+#625 = CARTESIAN_POINT('',(0.755,0.4,4.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.5,0.4,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.5,0.4,0.45));+#642 = LINE('',#643,#644);+#643 = CARTESIAN_POINT('',(-0.5,0.4,0.45));+#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.5,0.4,0.405));+#650 = VECTOR('',#651,1.);+#651 = DIRECTION('',(0.,0.,1.));+#652 = PLANE('',#653);+#653 = AXIS2_PLACEMENT_3D('',#654,#655,#656);+#654 = CARTESIAN_POINT('',(-0.5,0.4,0.405));+#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.545,-0.4,-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,4.5E-02);+#670 = AXIS2_PLACEMENT_3D('',#671,#672,#673);+#671 = CARTESIAN_POINT('',(0.545,-0.4,4.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.755,-0.4,-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.5,-0.4,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.8,-0.4,4.5E-02));+#701 = VECTOR('',#702,1.);+#702 = DIRECTION('',(0.,1.,0.));+#703 = CYLINDRICAL_SURFACE('',#704,4.5E-02);+#704 = AXIS2_PLACEMENT_3D('',#705,#706,#707);+#705 = CARTESIAN_POINT('',(0.755,-0.4,4.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.8,-0.4,0.405));+#718 = VECTOR('',#719,1.);+#719 = DIRECTION('',(0.,1.,0.));+#720 = PLANE('',#721);+#721 = AXIS2_PLACEMENT_3D('',#722,#723,#724);+#722 = CARTESIAN_POINT('',(0.8,-0.4,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.755,-0.4,0.45));+#733 = VECTOR('',#734,1.);+#734 = DIRECTION('',(0.,1.,0.));+#735 = ORIENTED_EDGE('',*,*,#605,.F.);+#736 = ORIENTED_EDGE('',*,*,#715,.F.);+#737 = CYLINDRICAL_SURFACE('',#738,4.5E-02);+#738 = AXIS2_PLACEMENT_3D('',#739,#740,#741);+#739 = CARTESIAN_POINT('',(0.755,-0.4,0.405));+#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.545,-0.4,0.45));+#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.5,-0.4,0.45));+#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.5,-0.4,0.405));+#769 = VECTOR('',#770,1.);+#770 = DIRECTION('',(0.,1.,0.));+#771 = CYLINDRICAL_SURFACE('',#772,4.5E-02);+#772 = AXIS2_PLACEMENT_3D('',#773,#774,#775);+#773 = CARTESIAN_POINT('',(0.545,-0.4,0.405));+#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.5,-0.4,0.45));+#786 = VECTOR('',#787,1.);+#787 = DIRECTION('',(0.,1.,0.));+#788 = PLANE('',#789);+#789 = AXIS2_PLACEMENT_3D('',#790,#791,#792);+#790 = CARTESIAN_POINT('',(0.5,-0.4,0.405));+#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.5,-0.4,0.45));+#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.md+83−2@@ -1,3 +1,84 @@-# RC0603FR-078R2L - Yageo+# RC0603FR-078R2L -Thick film chip resistor, 8.2 ohm, 1%, 1/10 W, 0603 (1608 metric), RC_L series+Yageo RC0603FR-078R2L: Thick film chip resistor, 8.2 ohm, 1%, 1/10 W, 0603 (1608 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 | RC0603FR-078R2L |+| Resistance | 8.2 ohm |+| Tolerance | 1 % (F) |+| Rated power | 1/10 W (100 mW) |+| Package | 0603 (1608 metric), RC_L series, thick film |+| Mouser | 603-RC0603FR-078R2L (24,769 in stock, USD 0.10 at 1, checked 2026-11-08) |+| DigiKey | 13-RC0603FR-078R2LTR-ND (tape and reel), 13-RC0603FR-078R2LCT-ND (cut tape); 44,821 in stock, checked 2026-11-08 |+| LCSC | none recorded |+| Reference | https://www.yageogroup.com/content/datasheet/asset/file/PYU-RC_GROUP_51_ROHS_L |++## Pin functions++| Pin | Function |+|---|---|+| 1 | ~ (resistor terminal) |+| 2 | ~ (resistor terminal) |++An unpolarised two-terminal resistor; pins 1 and 2 follow the library convention and either orientation works. Consult the manufacturer datasheet for ratings, operating conditions and assembly limits.++## Assets++The symbol is KiCad's standard resistor symbol, renamed to the MPN, with hidden MPN, manufacturer, distributor and datasheet fields. The footprint and STEP are generic KiCad standard-library package geometry (R_0603_1608Metric, 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-11-08. The package geometry comes from [adom/rc0603fr-0712rl](https://wiki.adom.inc/adom/rc0603fr-0712rl)+(RC0603FR-0712RL, 12 ohm): both parts are the same Yageo RC_L series in the same RC0603 package, and the RC_L datasheet+(PYU-RC_GROUP_51_ROHS_L) gives one dimension row for every RC0603 value, so the STEP (KiCad's R_0603_1608Metric, byte for+byte), the plain GLB and the footprint geometry carry over unchanged. The page layout, the datasheet PDF and the checking+tools follow [john/rc0402fr-075k1l](https://wiki.adom.inc/john/rc0402fr-075k1l). The footprint name and model path, the+symbol fields, the hero image and hero GLB, the level-of-detail models and the dimension check were made for this part+number. First used on the Ghost Hand rev 2 board ([john/ghost-hand](https://wiki.adom.inc/john/ghost-hand)).++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 (RC0603 row), product specification V.14+- Manufacturer reference: https://www.yageogroup.com/content/datasheet/asset/file/PYU-RC_GROUP_51_ROHS_L++Original text: MIT. KiCad library symbol, 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: `RC0603FR-078R2L.step` (board CAD) and `package-reference.glb` (page viewer), plus four+clean board-use levels of detail in `lod/`. Unlike RC0402, the real RC0603 part carries a value code on its overcoat+(Yageo RC_L product specification V.14 p.3, MARKING, Figs. 2 to 4). The code for an 8.2 ohm 1 % part is set by Yageo's+separate "Chip resistors marking" sheet, which is not on this page, so the models show a plain top rather than guess a+code. Treat the top of the model as unmarked artwork, not as the real part's appearance.++::adom-models{src="/john/rc0603fr-078r2l/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.600 mm (datasheet 1.50 to 1.70); W 0.800 mm (datasheet 0.70 to 0.90); T/H 0.450 mm (datasheet 0.35 to 0.55); I1 (top terminal) 0.255 mm (datasheet 0.10 to 0.40); I2 (bottom terminal) 0.255 mm (datasheet 0.10 to 0.40). 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, RC0603: L 1.60 +/-0.10, W 0.80 +/-0.10, H 0.45 +/-0.10, I1 0.25 +/-0.15, I2 0.25 +/-0.15 (mm). [Datasheet PDF](docs/rc0603fr-078r2l-datasheet.pdf)++::adom-verified{src="/john/rc0603fr-078r2l/render/verification.json"}++## Board levels of detail++Clean board-use GLBs (no footprint pads, outlines, labels or silkscreen; marking not modelled) 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/rc0603fr-078r2l/render/lod/manifest.json"}
R_0603_1608Metric_RC0603FR-078R2L.kicad_modadded+112@@ -0,0 +1,112 @@+(footprint "R_0603_1608Metric_RC0603FR-078R2L"+ (version 20260206)+ (generator "kicad-footprint-generator")+ (layer "F.Cu")+ (descr "Resistor SMD 0603 (1608 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.43 0)+ (layer "F.SilkS")+ (effects+ (font+ (size 1 1)+ (thickness 0.15)+ )+ )+ )+ (property "Value" "R_0603_1608Metric"+ (at 0 1.43 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.237258 -0.5225)+ (end 0.237258 -0.5225)+ (stroke+ (width 0.12)+ (type solid)+ )+ (layer "F.SilkS")+ )+ (fp_line+ (start -0.237258 0.5225)+ (end 0.237258 0.5225)+ (stroke+ (width 0.12)+ (type solid)+ )+ (layer "F.SilkS")+ )+ (fp_rect+ (start -1.48 -0.73)+ (end 1.48 0.73)+ (stroke+ (width 0.05)+ (type solid)+ )+ (fill no)+ (layer "F.CrtYd")+ )+ (fp_rect+ (start -0.8 -0.4125)+ (end 0.8 0.4125)+ (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.4 0.4)+ (thickness 0.06)+ )+ )+ )+ (pad "1" smd roundrect+ (at -0.825 0)+ (size 0.8 0.95)+ (layers "F.Cu" "F.Mask" "F.Paste")+ (roundrect_rratio 0.25)+ )+ (pad "2" smd roundrect+ (at 0.825 0)+ (size 0.8 0.95)+ (layers "F.Cu" "F.Mask" "F.Paste")+ (roundrect_rratio 0.25)+ )+ (embedded_fonts no)+ (model "${KIPRJMOD}/RC0603FR-078R2L.step"+ (offset+ (xyz 0 0 0)+ )+ (scale+ (xyz 1 1 1)+ )+ (rotate+ (xyz 0 0 0)+ )+ )+)
component.kicad_symadded+198@@ -0,0 +1,198 @@+(kicad_symbol_lib+ (version 20251024)+ (generator "kicad_symbol_editor")+ (generator_version "10.0")+(symbol "RC0603FR-078R2L"+ (pin_numbers+ (hide yes)+ )+ (pin_names+ (offset 0)+ )+ (exclude_from_sim no)+ (in_bom yes)+ (on_board yes)+ (in_pos_files yes)+ (duplicate_pin_numbers_are_jumpers no)+ (property "Reference" "R"+ (at 2.54 0 90)+ (show_name no)+ (do_not_autoplace no)+ (effects+ (font+ (size 1.27 1.27)+ )+ )+ )+ (property "Value" "RC0603FR-078R2L"+ (at -2.54 0 90)+ (show_name no)+ (do_not_autoplace no)+ (effects+ (font+ (size 1.27 1.27)+ )+ )+ )+ (property "Footprint" "R_0603_1608Metric_RC0603FR-078R2L"+ (at 1.016 -0.254 90)+ (show_name no)+ (do_not_autoplace no)+ (hide yes)+ (effects+ (font+ (size 1.27 1.27)+ )+ )+ )+ (property "Datasheet" "https://yageogroup.com/content/datasheet/asset/file/PYU-RC_GROUP_51_ROHS_L"+ (at 0 0 0)+ (show_name no)+ (do_not_autoplace no)+ (hide yes)+ (effects+ (font+ (size 1.27 1.27)+ )+ )+ )+ (property "Description" "Thick film chip resistor, 8.2 ohm, 1%, 1/10 W, 0603 (1608 metric)"+ (at 0 0 0)+ (show_name no)+ (do_not_autoplace no)+ (hide yes)+ (effects+ (font+ (size 1.27 1.27)+ )+ )+ )+ (property "ki_keywords" "R res resistor"+ (at 0 0 0)+ (show_name no)+ (do_not_autoplace no)+ (hide yes)+ (effects+ (font+ (size 1.27 1.27)+ )+ )+ )+ (property "ki_fp_filters" "R_*"+ (at 0 0 0)+ (show_name no)+ (do_not_autoplace no)+ (hide yes)+ (effects+ (font+ (size 1.27 1.27)+ )+ )+ )+ (property "MPN" "RC0603FR-078R2L" (at 0 0 0) (effects (font (size 1.27 1.27)) hide))+ (property "Manufacturer" "Yageo" (at 0 0 0) (effects (font (size 1.27 1.27)) hide))+ (property "DigiKey" "13-RC0603FR-078R2LTR-ND" (at 0 0 0) (effects (font (size 1.27 1.27)) hide))+ (property "Mouser" "603-RC0603FR-078R2L" (at 0 0 0) (effects (font (size 1.27 1.27)) hide))+ (symbol "RC0603FR-078R2L_0_1"+ (polyline+ (pts+ (xy 0 2.286) (xy 0 2.54)+ )+ (stroke+ (width 0)+ (type default)+ )+ (fill+ (type none)+ )+ )+ (polyline+ (pts+ (xy 0 2.286) (xy 1.016 1.905) (xy 0 1.524) (xy -1.016 1.143) (xy 0 0.762)+ )+ (stroke+ (width 0)+ (type default)+ )+ (fill+ (type none)+ )+ )+ (polyline+ (pts+ (xy 0 0.762) (xy 1.016 0.381) (xy 0 0) (xy -1.016 -0.381) (xy 0 -0.762)+ )+ (stroke+ (width 0)+ (type default)+ )+ (fill+ (type none)+ )+ )+ (polyline+ (pts+ (xy 0 -0.762) (xy 1.016 -1.143) (xy 0 -1.524) (xy -1.016 -1.905) (xy 0 -2.286)+ )+ (stroke+ (width 0)+ (type default)+ )+ (fill+ (type none)+ )+ )+ (polyline+ (pts+ (xy 0 -2.286) (xy 0 -2.54)+ )+ (stroke+ (width 0)+ (type default)+ )+ (fill+ (type none)+ )+ )+ )+ (symbol "RC0603FR-078R2L_1_1"+ (pin passive line+ (at 0 3.81 270)+ (length 1.27)+ (name ""+ (effects+ (font+ (size 1.27 1.27)+ )+ )+ )+ (number "1"+ (effects+ (font+ (size 1.27 1.27)+ )+ )+ )+ )+ (pin passive line+ (at 0 -3.81 90)+ (length 1.27)+ (name ""+ (effects+ (font+ (size 1.27 1.27)+ )+ )+ )+ (number "2"+ (effects+ (font+ (size 1.27 1.27)+ )+ )+ )+ )+ )+ (embedded_fonts no)+ )+)
docs/HERO.mdadded+1@@ -0,0 +1 @@+Hero image: step2glb thumbnail of RC0603FR-078R2L.step (iso, 1920x1200, rendered 2026-11-08).
docs/hero.pngadded⋯ 1 unchanged line ⋯
docs/models/package-reference-step.pngadded⋯ 1 unchanged line ⋯
docs/rc0603fr-078r2l-datasheet.pdfadded⋯ 1 unchanged line ⋯
docs/verify/rc0603fr-078r2l-check.jsonadded+51@@ -0,0 +1,51 @@+{+ "step": "RC0603FR-078R2L.step",+ "bbox_mm": [+ -0.8,+ 0.8,+ -0.4,+ 0.4,+ -0.0,+ 0.45+ ],+ "checks": [+ {+ "dim": "L",+ "model_mm": 1.6,+ "datasheet_min": 1.5,+ "datasheet_max": 1.7000000000000002,+ "pass": true+ },+ {+ "dim": "W",+ "model_mm": 0.8,+ "datasheet_min": 0.7000000000000001,+ "datasheet_max": 0.9,+ "pass": true+ },+ {+ "dim": "T/H",+ "model_mm": 0.45,+ "datasheet_min": 0.35,+ "datasheet_max": 0.55,+ "pass": true+ },+ {+ "dim": "I1 (top terminal)",+ "model_mm": 0.255,+ "datasheet_min": 0.1,+ "datasheet_max": 0.4,+ "pass": true+ },+ {+ "dim": "I2 (bottom terminal)",+ "model_mm": 0.255,+ "datasheet_min": 0.1,+ "datasheet_max": 0.4,+ "pass": true+ }+ ],+ "z_up_seated_centred": true,+ "long_axis_x": true,+ "all_pass": true+}
docs/verify/rc0603fr-078r2l-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": "RC0603FR-078R2L",+ "upAxis": "Z",+ "units": "metres",+ "status": "candidate (AI-checked, not human-reviewed)",+ "purpose": "clean board-use component models: no footprint pads, outlines, labels or silkscreen; marking not modelled (the real RC0603 carries a value code, datasheet p.3 Figs. 2 to 4)",+ "source": {+ "path": "RC0603FR-078R2L.step",+ "sha256": "1875571c326d0d9e96f36b4efeb8094068ef7619f0a449c781caf0b49c2e5861"+ },+ "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": "624f77aa67e5c4ea1241ef1884db82f72d497665c1aac1c449145e10874d00d4",+ "sizeBytes": 48104,+ "decodedBufferBytes": 45432,+ "triangles": 1076,+ "primitives": 3,+ "bounds": {+ "min": [+ -0.0008,+ -0.0004,+ -0.0+ ],+ "max": [+ 0.0008,+ 0.0004,+ 0.00045+ ]+ },+ "approximation": {+ "method": "OCCT BRepMesh_IncrementalMesh",+ "linearDeflectionMm": 0.0005,+ "angularDeflectionRad": 0.1+ },+ "detailVisibility": {+ "virtualMpn": false,+ "note": "no marking modelled: the real part carries a value code on the overcoat (datasheet p.3 Figs. 2 to 4) that this generic KiCad body does not show"+ },+ "review": "Candidate: rendered preview checked by AI (silhouette, terminals, seat z=0); not human-reviewed",+ "preview": {+ "path": "lod/high.png",+ "sha256": "a2a55faef9d12522705a980b78fbf9614fffc7310b1fde120177471b2f5e0e67",+ "sizeBytes": 9559,+ "width": 400,+ "height": 300,+ "view": "iso",+ "sourceLevelSha256": "624f77aa67e5c4ea1241ef1884db82f72d497665c1aac1c449145e10874d00d4"+ }+ },+ {+ "level": "medium",+ "path": "lod/medium.glb",+ "sha256": "f38e106e184d2c126de5e26711112048205dcdfa56fb50fc314354d4398792b4",+ "sizeBytes": 17184,+ "decodedBufferBytes": 14520,+ "triangles": 340,+ "primitives": 3,+ "bounds": {+ "min": [+ -0.0008,+ -0.0004,+ -0.0+ ],+ "max": [+ 0.0008,+ 0.0004,+ 0.00045+ ]+ },+ "approximation": {+ "method": "OCCT BRepMesh_IncrementalMesh",+ "linearDeflectionMm": 0.004,+ "angularDeflectionRad": 0.35+ },+ "detailVisibility": {+ "virtualMpn": false,+ "note": "no marking modelled: the real part carries a value code on the overcoat (datasheet p.3 Figs. 2 to 4) that this generic KiCad body does not show"+ },+ "review": "Candidate: rendered preview checked by AI (silhouette, terminals, seat z=0); not human-reviewed",+ "preview": {+ "path": "lod/medium.png",+ "sha256": "2a09aeea9ee47c7eec1c0354683b8fd05416bd31cf8faebc5249dd2a2926684e",+ "sizeBytes": 9514,+ "width": 400,+ "height": 300,+ "view": "iso",+ "sourceLevelSha256": "f38e106e184d2c126de5e26711112048205dcdfa56fb50fc314354d4398792b4"+ }+ },+ {+ "level": "low",+ "path": "lod/low.glb",+ "sha256": "efb3c0777cc27281bdab316a5601c1741ac2f02c064769a31a74971f2a5d5988",+ "sizeBytes": 10456,+ "decodedBufferBytes": 7800,+ "triangles": 180,+ "primitives": 3,+ "bounds": {+ "min": [+ -0.0008,+ -0.0004,+ -0.0+ ],+ "max": [+ 0.0008,+ 0.0004,+ 0.00045+ ]+ },+ "approximation": {+ "method": "OCCT BRepMesh_IncrementalMesh",+ "linearDeflectionMm": 0.02,+ "angularDeflectionRad": 0.9+ },+ "detailVisibility": {+ "virtualMpn": false,+ "note": "no marking modelled: the real part carries a value code on the overcoat (datasheet p.3 Figs. 2 to 4) that this generic KiCad body does not show"+ },+ "review": "Candidate: rendered preview checked by AI (silhouette, terminals, seat z=0); not human-reviewed",+ "preview": {+ "path": "lod/low.png",+ "sha256": "f9d8d54b61a8ce2878babfdf6352e3a82b86f6e7b09b778f4edbe02c172b13f4",+ "sizeBytes": 9026,+ "width": 400,+ "height": 300,+ "view": "iso",+ "sourceLevelSha256": "efb3c0777cc27281bdab316a5601c1741ac2f02c064769a31a74971f2a5d5988"+ }+ },+ {+ "level": "super-low",+ "path": "lod/super-low.glb",+ "sha256": "61bdc3357395724ecfd8c197aa5691f4b846360b7357e7ed4e1db9295b30d645",+ "sizeBytes": 5244,+ "decodedBufferBytes": 2592,+ "triangles": 48,+ "primitives": 3,+ "bounds": {+ "min": [+ -0.0008,+ -0.0004,+ -0.0+ ],+ "max": [+ 0.0008,+ 0.0004,+ 0.00045+ ]+ },+ "approximation": {+ "method": "per-material bounding boxes split at the part centre (terminals, body, overcoat)"+ },+ "detailVisibility": {+ "virtualMpn": false,+ "note": "no marking modelled: the real part carries a value code on the overcoat (datasheet p.3 Figs. 2 to 4) that this generic KiCad body does not show"+ },+ "review": "Candidate: rendered preview checked by AI (silhouette, terminals, seat z=0); not human-reviewed",+ "preview": {+ "path": "lod/super-low.png",+ "sha256": "d71fc48cc690a356ff87914638ea8ac24fef447555f5d3d4e592536bc5c77b62",+ "sizeBytes": 8760,+ "width": 400,+ "height": 300,+ "view": "iso",+ "sourceLevelSha256": "61bdc3357395724ecfd8c197aa5691f4b846360b7357e7ed4e1db9295b30d645"+ }+ }+ ],+ "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": "RC0603FR-078R2L",+ "models": [+ {+ "path": "RC0603FR-078R2L.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; the real part's value marking is not modelled",+ "source": "KiCad packages3D Resistor_SMD.3dshapes/R_0603_1608Metric.step (CC-BY-SA 4.0 with exception)",+ "sha256": "1875571c326d0d9e96f36b4efeb8094068ef7619f0a449c781caf0b49c2e5861",+ "git_blob": "a885593ca3dd3dd354835d6f586626a712c61c2a",+ "bytes": 40618,+ "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": "RC0603FR-078R2L.step",+ "unique": "The same model for the page viewer (step2glb)",+ "source": "KiCad packages3D Resistor_SMD.3dshapes/R_0603_1608Metric.step (CC-BY-SA 4.0 with exception)",+ "sha256": "38a14ef2e18f32857e967bbfaaf464c4dd4091d3e673f46eaaf3079e5fa41ff4",+ "git_blob": "c7eab6b3d36cbbd427016046bf72f9d2cc5816c7",+ "bytes": 16284+ },+ {+ "path": "lod/high.glb",+ "format": "glb",+ "title": "Board LOD, high",+ "status": "current",+ "variant": "lod",+ "role": "derived",+ "use": [+ "board-insertion",+ "render"+ ],+ "marking": null,+ "derived_from": "RC0603FR-078R2L.step",+ "unique": "high detail for board and scaffold viewers: 1076 triangles, 3 primitives",+ "thumb": "lod/high.png",+ "source": "KiCad packages3D Resistor_SMD.3dshapes/R_0603_1608Metric.step (CC-BY-SA 4.0 with exception)",+ "sha256": "624f77aa67e5c4ea1241ef1884db82f72d497665c1aac1c449145e10874d00d4",+ "git_blob": "1786c86f0c3da1f152cbbae7bf519a4f9a68b622",+ "bytes": 48104+ },+ {+ "path": "lod/medium.glb",+ "format": "glb",+ "title": "Board LOD, medium",+ "status": "current",+ "variant": "lod",+ "role": "derived",+ "use": [+ "board-insertion",+ "render"+ ],+ "marking": null,+ "derived_from": "RC0603FR-078R2L.step",+ "unique": "medium detail for board and scaffold viewers: 340 triangles, 3 primitives",+ "thumb": "lod/medium.png",+ "source": "KiCad packages3D Resistor_SMD.3dshapes/R_0603_1608Metric.step (CC-BY-SA 4.0 with exception)",+ "sha256": "f38e106e184d2c126de5e26711112048205dcdfa56fb50fc314354d4398792b4",+ "git_blob": "3983be1fef2488e17fba44fecf4a6666fd2d27fc",+ "bytes": 17184+ },+ {+ "path": "lod/low.glb",+ "format": "glb",+ "title": "Board LOD, low",+ "status": "current",+ "variant": "lod",+ "role": "derived",+ "use": [+ "board-insertion",+ "render"+ ],+ "marking": null,+ "derived_from": "RC0603FR-078R2L.step",+ "unique": "low detail for board and scaffold viewers: 180 triangles, 3 primitives",+ "thumb": "lod/low.png",+ "source": "KiCad packages3D Resistor_SMD.3dshapes/R_0603_1608Metric.step (CC-BY-SA 4.0 with exception)",+ "sha256": "efb3c0777cc27281bdab316a5601c1741ac2f02c064769a31a74971f2a5d5988",+ "git_blob": "1de9279d867ec16bb8e391be18671e854127271c",+ "bytes": 10456+ },+ {+ "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": "RC0603FR-078R2L.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_0603_1608Metric.step (CC-BY-SA 4.0 with exception)",+ "sha256": "61bdc3357395724ecfd8c197aa5691f4b846360b7357e7ed4e1db9295b30d645",+ "git_blob": "bf7d8eb2764b0cdfd54ecd9459e468c482240b07",+ "bytes": 5244+ }+ ],+ "updated": "2026-11-08"+}
package-reference.glbadded⋯ 1 unchanged line ⋯
package.jsonadded+64@@ -0,0 +1,64 @@+{+ "slug": "rc0603fr-078r2l",+ "title": "RC0603FR-078R2L - Yageo",+ "type": "hardware",+ "kind": "component",+ "version": "0.1.0",+ "description": "Thick film chip resistor, 8.2 ohm, 1%, 1/10 W, 0603 (1608 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": "RC0603FR-078R2L",+ "manufacturer": "Yageo",+ "package": "R_0603_1608Metric",+ "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_0603_1608Metric_RC0603FR-078R2L.kicad_mod",+ "step": "RC0603FR-078R2L.step",+ "model_3d": "rc0603fr-078r2l-hero.glb",+ "datasheet": "docs/rc0603fr-078r2l-datasheet.pdf",+ "model_3d_plain": "package-reference.glb"+ },+ "provenance": {+ "omitted": []+ },+ "distributor_links": {+ "mouser": "603-RC0603FR-078R2L",+ "digikey": "13-RC0603FR-078R2LTR-ND",+ "lcsc": false+ },+ "marking": {+ "text": null,+ "statement": "Yageo RC0603 1% parts carry a value marking on the overcoat (RC_L product specification V.14 p.3, Figs. 2 to 4); the exact code for 8.2 ohm is defined in Yageo's separate 'Chip resistors marking' sheet and is not modelled",+ "source": "Yageo RC_L product specification V.14 p.3, MARKING, Figs. 2 to 4"+ }+ },+ "discovery_triggers": [+ "RC0603FR-078R2L",+ "8.2 ohm 0603 resistor yageo",+ "8R2 1% 0603 resistor"+ ]+}
provenance.jsonadded+95@@ -0,0 +1,95 @@+{+ "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, on john/rc0402fr-075k1l)",+ "symbol_source": "KiCad standard resistor symbol as published on adom/rc0603fr-0712rl, renamed to RC0603FR-078R2L with Value, MPN, Manufacturer, Mouser, DigiKey, Description and Footprint fields set for this part; LCSC field removed (no LCSC number recorded). CC-BY-SA 4.0 with the KiCad library exception.",+ "footprint_source": "KiCad standard library Resistor_SMD:R_0603_1608Metric (CC-BY-SA 4.0 with the KiCad library exception), as on adom/rc0603fr-0712rl; geometry unchanged, footprint name R_0603_1608Metric_RC0603FR-078R2L and model path ${KIPRJMOD}/RC0603FR-078R2L.step",+ "package_source": "KiCad packages3D Resistor_SMD.3dshapes/R_0603_1608Metric.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.",+ "files": {+ "RC0603FR-078R2L.step": "1875571c326d0d9e96f36b4efeb8094068ef7619f0a449c781caf0b49c2e5861",+ "README.md": "a9a6056b10234475dcee0640f43d81f3162991c6fbdb5a054462eb46dced0021",+ "R_0603_1608Metric_RC0603FR-078R2L.kicad_mod": "db28c292c5384d279a8d1b3fddfe9739dc72ebffd1feceb38a6cd367447b5dd6",+ "component.kicad_sym": "b25f3d6a7a2d993cb4ececa4772108e35f47a20102eea5f318ffdea1f4436028",+ "docs/HERO.md": "3a98be89a6f4eb503d7f795310c7d47dd1eb3d36a60aecae5f933b8a55630533",+ "docs/hero.png": "3296ba37783c61af6af8c975f960341c8609352a80af1c833ff9413bc0e44bad",+ "docs/models/package-reference-step.png": "305f44b4c4ec2bbb3972c4f7fb61f67284a1e4231e22732a357878a4aa72653d",+ "docs/rc0603fr-078r2l-datasheet.pdf": "7b6f0ae72708ca4b38126f84b5407a3e970a94cb60bc1a0afdaeb25a23d839bb",+ "docs/verify/rc0603fr-078r2l-check.json": "0a491d421ee0f3611805b28f70282deac9511326840c375986e1cc07ae846513",+ "docs/verify/rc0603fr-078r2l-overlay.png": "9e9af270dafa08003bf7057215599aaf46113f95db4492f1ebbb7ffb1821a403",+ "lod/high.glb": "624f77aa67e5c4ea1241ef1884db82f72d497665c1aac1c449145e10874d00d4",+ "lod/high.png": "a2a55faef9d12522705a980b78fbf9614fffc7310b1fde120177471b2f5e0e67",+ "lod/low.glb": "efb3c0777cc27281bdab316a5601c1741ac2f02c064769a31a74971f2a5d5988",+ "lod/low.png": "f9d8d54b61a8ce2878babfdf6352e3a82b86f6e7b09b778f4edbe02c172b13f4",+ "lod/manifest.json": "0f3d6a756c2f543ecc31aff5718b182e88769c443e4c6d21631d9251a6da0158",+ "lod/medium.glb": "f38e106e184d2c126de5e26711112048205dcdfa56fb50fc314354d4398792b4",+ "lod/medium.png": "2a09aeea9ee47c7eec1c0354683b8fd05416bd31cf8faebc5249dd2a2926684e",+ "lod/super-low.glb": "61bdc3357395724ecfd8c197aa5691f4b846360b7357e7ed4e1db9295b30d645",+ "lod/super-low.png": "d71fc48cc690a356ff87914638ea8ac24fef447555f5d3d4e592536bc5c77b62",+ "models.json": "a604830dc1d4d017717251825615c95a8f125325221ec6a679bf25bb45056acb",+ "package-reference.glb": "38a14ef2e18f32857e967bbfaaf464c4dd4091d3e673f46eaaf3079e5fa41ff4",+ "package.json": "3a0af7d9ce7bcc327aaf52b2b89a4358181f210975cba62f90b6f240db3bab88",+ "page.json": "70d163ee38bade7dc57f3bbad3762a8c88fa0101e2318a12a66e97c1b81a2765",+ "provenance/tools/__pycache__/ortho.cpython-312.pyc": "df7a3dfb21dd89c4afda47d395f1fa19ef34aebe95b132e05ebc7cfa8234e8be",+ "provenance/tools/lod.py": "fc3eb9db56947d002d1dda328a6ee53032eae39f700521d00d18477f9915135c",+ "provenance/tools/ortho.py": "c5a44e74fa447e1ece13190840c90d453cbb004f6c4608efb6e8cdb1ba2cbb6d",+ "provenance/tools/overlay_chip.py": "ed6a4e871ff09d8c41550b3cd9fc853be174f9212ced43c0206835bdc847a222",+ "provenance/tools/rc0603fr-078r2l-overlay-spec.json": "c443c276b902fb772c5761cf8f4249ee4f70b3d674960d557b88aefa67d0ea9f",+ "rc0603fr-078r2l-hero.glb": "c881f765c50cba2c3ca19cd92859e27cf3f6350680d46305f78b0d91d91fbb08",+ "rc0603fr-078r2l-hero.overlay.json": "3fea4a43d2da4e3f7f71b1f337cc925415c4cac2fb591adb9b3fe141c538d724",+ "verification.json": "b96a507a606d79b8f320723522756e7c841fcf137a5ea5f87d1875f4e14cfb5b"+ },+ "files_note": "provenance.json itself is not listed; every other file in the page is, as published.",+ "marking": {+ "real_marking": "value code per Yageo 'Chip resistors marking' (not reproduced)",+ "statement": "RC0603 1% parts are marked with a value code (datasheet p.3 Figs. 2 to 4); the models do not show it",+ "source": "Yageo RC_L product specification V.14 p.3, MARKING, Figs. 2 to 4"+ },+ "datasheet": {+ "file": "docs/rc0603fr-078r2l-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 (file carried over from john/rc0402fr-075k1l; byte-identical to the PDF on adom/rc0603fr-0712rl, sha256 7b6f0ae7...)"+ },+ "datasheet_check": {+ "overlay": "docs/verify/rc0603fr-078r2l-overlay.png",+ "numbers": "docs/verify/rc0603fr-078r2l-check.json",+ "tools": "provenance/tools/ (ortho.py, overlay_chip.py, spec json)",+ "result": "PASS",+ "run": "2026-11-08"+ },+ "lod": {+ "manifest": "lod/manifest.json",+ "generator": "provenance/tools/lod.py",+ "source_sha256": "1875571c326d0d9e96f36b4efeb8094068ef7619f0a449c781caf0b49c2e5861",+ "run": "2026-11-08"+ },+ "hero_glb": {+ "tool": "adom-wiki pkg hero --force (component_hero, adom-hero 1.4)",+ "run": "2026-11-08",+ "file": "rc0603fr-078r2l-hero.glb"+ },+ "derived_from": {+ "page": "adom/rc0603fr-0712rl",+ "layout_from": "john/rc0402fr-075k1l",+ "date": "2026-11-08",+ "by": "Claude (AI agent) for John Lauer",+ "what": "Geometry carried over from adom/rc0603fr-0712rl (read only, not edited): the STEP (KiCad R_0603_1608Metric, byte-identical, sha256 1875571c...), package-reference.glb (its rc0603fr-0712rl.glb, byte-identical), the footprint pads, silkscreen, courtyard and fab outline (unchanged), and the symbol body. Page layout, checking tools (provenance/tools) and the datasheet PDF (byte-identical) from john/rc0402fr-075k1l. Made for this MPN: symbol fields, footprint name and model path, docs/hero.png and docs/models/package-reference-step.png (step2glb thumbnail), hero GLB and overlay (adom-wiki pkg hero), LOD GLBs (lod.py), and the datasheet dimension overlay and numbers (overlay_chip.py).",+ "why_valid": "RC0603FR-078R2L and RC0603FR-0712RL are both Yageo RC_L series RC0603 parts; the RC_L datasheet PYU-RC_GROUP_51_ROHS_L (V.14, p.4 Table 1) gives one dimension row for every RC0603 resistance value (L 1.60 +/-0.10, W 0.80 +/-0.10, H 0.45 +/-0.10, I1 0.25 +/-0.15, I2 0.25 +/-0.15 mm), so the package geometry is identical; resistance, MPN, distributor numbers and the printed value code differ."+ },+ "distributors_checked_2026-11-08": {+ "mouser": {+ "pn": "603-RC0603FR-078R2L",+ "stock": 24769,+ "price_usd_qty1": 0.1+ },+ "digikey": {+ "pn": "13-RC0603FR-078R2LTR-ND",+ "cut_tape": "13-RC0603FR-078R2LCT-ND",+ "stock": 44821,+ "url": "https://www.digikey.com/en/products/detail/yageo/RC0603FR-078R2L/5918424",+ "source": "adom-parts-search (DigiKey API)"+ },+ "lcsc": false+ }+}
provenance/tools/__pycache__/ortho.cpython-312.pycadded⋯ 1 unchanged line ⋯
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/rc0603fr-078r2l-overlay-spec.jsonadded+17@@ -0,0 +1,17 @@+{+ "label": "RC0603FR-078R2L",+ "source": "Yageo RC_L series product specification V.14 (Nov. 14, 2025) p.4 Table 1 + Fig. 9; marking p.3 Figs. 2 to 4",+ "L": [1.6, 0.1],+ "W": [0.8, 0.1],+ "T": [0.45, 0.1],+ "band_top": [0.1, 0.4],+ "band_bot": [0.1, 0.4],+ "band_top_name": "I1 (top terminal)",+ "band_bot_name": "I2 (bottom terminal)",+ "crops": [+ ["p-03.png", [127, 590, 1533, 1130]],+ ["p-04.png", [840, 365, 1512, 990]],+ ["p-04.png", [135, 1040, 1512, 1300]]+ ],+ "marking": "RC0603 carries a value marking (p.3 Figs. 2 to 4); not modelled"+}
rc0603fr-078r2l-hero.glbadded⋯ 1 unchanged line ⋯
rc0603fr-078r2l-hero.overlay.jsonadded+125@@ -0,0 +1,125 @@+{+ "spec": "adom-hero 1.4",+ "mpn": "RC0603FR-078R2L",+ "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": 2.45,+ "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.8,+ 0.8,+ -0.4,+ 0.4+ ],+ "pads_bbox_mm": [+ -1.225,+ 1.225,+ -0.475,+ 0.475+ ],+ "seating_z_mm": -0.0+ },+ "sources": {+ "glb": "package-reference.glb",+ "glb_sha256": "38a14ef2e18f32857e967bbfaaf464c4dd4091d3e673f46eaaf3079e5fa41ff4",+ "footprint": "R_0603_1608Metric_RC0603FR-078R2L.kicad_mod",+ "footprint_sha256": "db28c292c5384d279a8d1b3fddfe9739dc72ebffd1feceb38a6cd367447b5dd6",+ "pins": "page.json component.pins",+ "pins_sha256": "30da8c176bce6fc4080c622c80e9a214aeb2ac4afd9447b1817db8f9099455e9"+ },+ "generator": "adom-wiki 1.8.14 (component_hero)",+ "labels": [+ {+ "pad": "1",+ "text": "1",+ "x": -1.365,+ "y": 0.0,+ "align": "right",+ "vertical": false,+ "h": 0.56+ },+ {+ "pad": "2",+ "text": "2",+ "x": 1.365,+ "y": 0.0,+ "align": "left",+ "vertical": false,+ "h": 0.56+ }+ ],+ "pads": [+ {+ "number": "1",+ "shape": "roundrect",+ "center_mm": [+ -0.825,+ 0.0+ ],+ "size_mm": [+ 0.8,+ 0.95+ ],+ "rot": 0.0+ },+ {+ "number": "2",+ "shape": "roundrect",+ "center_mm": [+ 0.825,+ 0.0+ ],+ "size_mm": [+ 0.8,+ 0.95+ ],+ "rot": 0.0+ }+ ]+}
verification.jsonadded+151@@ -0,0 +1,151 @@+{+ "schema": "adom/verification@1",+ "part": "RC0603FR-078R2L",+ "variants": [],+ "entries": [+ {+ "date": "2026-11-08",+ "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.600 mm, datasheet 1.50 to 1.70 mm",+ "result": "pass"+ },+ {+ "text": "W: model 0.800 mm, datasheet 0.70 to 0.90 mm",+ "result": "pass"+ },+ {+ "text": "T/H: model 0.450 mm, datasheet 0.35 to 0.55 mm",+ "result": "pass"+ },+ {+ "text": "I1 (top terminal): model 0.255 mm, datasheet 0.10 to 0.40 mm",+ "result": "pass"+ },+ {+ "text": "I2 (bottom terminal): model 0.255 mm, datasheet 0.10 to 0.40 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"+ },+ {+ "text": "geometry carried over byte for byte from adom/rc0603fr-0712rl (same Yageo RC_L RC0603 package); the check was run on this page's STEP on 2026-11-08",+ "result": "note"+ }+ ],+ "evidence": [+ {+ "label": "overlay (top, bottom, side, end at 300 px/mm)",+ "href": "docs/verify/rc0603fr-078r2l-overlay.png"+ },+ {+ "label": "numbers",+ "href": "docs/verify/rc0603fr-078r2l-check.json"+ },+ {+ "label": "datasheet (Yageo RC_L series product specification V.14 (Nov. 14, 2025))",+ "href": "docs/rc0603fr-078r2l-datasheet.pdf"+ }+ ],+ "files": {+ "RC0603FR-078R2L.step": "1875571c326d0d9e96f36b4efeb8094068ef7619f0a449c781caf0b49c2e5861",+ "package-reference.glb": "38a14ef2e18f32857e967bbfaaf464c4dd4091d3e673f46eaaf3079e5fa41ff4",+ "docs/rc0603fr-078r2l-datasheet.pdf": "7b6f0ae72708ca4b38126f84b5407a3e970a94cb60bc1a0afdaeb25a23d839bb"+ }+ },+ {+ "date": "2026-11-08",+ "by": {+ "name": "Claude (AI agent) for John Lauer",+ "handle": "john"+ },+ "status": "open",+ "title": "Marking: the real part has a value code; the model shows none",+ "scope": [+ "3d-model",+ "marking"+ ],+ "variants": [+ "*"+ ],+ "checks": [+ {+ "text": "Yageo RC0603 1% parts carry a value marking (RC_L product specification V.14 p.3, MARKING, Figs. 2 to 4)",+ "result": "note"+ },+ {+ "text": "the code for 8.2 ohm is set by Yageo's separate 'Chip resistors marking' sheet, not on this page; no code was guessed, the STEP, GLBs and LODs show a plain top",+ "result": "note"+ }+ ],+ "evidence": [+ {+ "label": "datasheet",+ "href": "docs/rc0603fr-078r2l-datasheet.pdf"+ }+ ],+ "files": {+ "RC0603FR-078R2L.step": "1875571c326d0d9e96f36b4efeb8094068ef7619f0a449c781caf0b49c2e5861"+ }+ },+ {+ "date": "2026-11-08",+ "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": "624f77aa67e5c4ea1241ef1884db82f72d497665c1aac1c449145e10874d00d4",+ "lod/medium.glb": "f38e106e184d2c126de5e26711112048205dcdfa56fb50fc314354d4398792b4",+ "lod/low.glb": "efb3c0777cc27281bdab316a5601c1741ac2f02c064769a31a74971f2a5d5988",+ "lod/super-low.glb": "61bdc3357395724ecfd8c197aa5691f4b846360b7357e7ed4e1db9295b30d645"+ }+ }+ ]+}