From ec5ae07896e258509a961487399bca84441cf000 Mon Sep 17 00:00:00 2001 From: admin Date: Tue, 14 Jul 2026 13:30:45 +0000 Subject: [PATCH] =?UTF-8?q?Add=20ESD=20Withstand=20Voltage(kV)=20to=20CMC?= =?UTF-8?q?=20template=20(v2)=20=E2=80=94=20for=20EMI814x=20CMF+ESD=20part?= =?UTF-8?q?s=20(by=20admin)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SKILL.md | 8 +--- assets/CHANGELOG.xlsx | Bin 5536 -> 5649 bytes assets/template/template.xlsx | Bin 110219 -> 110238 bytes assets/template/versions.json | 4 +- references/schlib_parameters.md | 35 ++++++----------- scripts/schlib_write.py | 65 +++----------------------------- 6 files changed, 21 insertions(+), 91 deletions(-) diff --git a/SKILL.md b/SKILL.md index ec1a679..65cc783 100644 --- a/SKILL.md +++ b/SKILL.md @@ -340,14 +340,10 @@ Leave any genuinely-unknown field blank — the SOP hides blank parameters, so a empty until filled. The full method for the second-source search is in `references/schlib_parameters.md`. -Write the **full parameter set** — the typeid template's engineering columns **plus** the SOP -params above (see `references/schlib_parameters.md`). Collect your filled values into a -`params.json` and pass `--typeid` so the writer guarantees every template column is present -(blank where the datasheet is silent): +Collect the values into a `params.json` and write them into the symbol: ```bash -python scripts/schlib_write.py --schlib .SchLib --params params.json \ - --out //.SchLib --typeid +python scripts/schlib_write.py --schlib .SchLib --params params.json --out //.SchLib ``` Deliver the resulting `.SchLib`; the engineer opens it in Altium once to confirm it loads, then diff --git a/assets/CHANGELOG.xlsx b/assets/CHANGELOG.xlsx index 2f57f6685b1df084108aaef1648ecf4b1913f4e6..1cc428eab40423467955bf8251a5534276a9ae4e 100644 GIT binary patch delta 2338 zcmZ8j2{_bU7ypla89R}sNMkPvL+Di_yJV?|k!2c&vBcQLShBBUBx}|}@A`_dNI9-zk*GDS*w4=^6L|0AK-z(Ks-H zbr`)2Pd)L;VjDLshwZ#%PGOJZGcdSL=bgywm53UZQF7bbEJZF}S^+eP`)l88XN*EB zcEkINwuHKz8ieh}bSw5^mf{;2;(}96JG3Bg2FEuEvPS*Y^v~C0M{0-acaSY-Tr~Tb0r{K-@nZnaO@5nD(_DcvGtM44v{=eg3auxV^i=w zLCt`0F+8Hq*i9(rp3EG4^m5A>d79MV>HOB1AsJ?ZW4Y{U?w;_&h2 zZU!%ghn29*S5*9>VsmZvV)Dc&>D+DA;tXVZ)4t<9-e>aL7{Lv}|EV-6CC zR^8xsq7W1rp1p!|)yU1fn!^*?sh!CSE9 z>uiPHXd*^+)uJjff?BB_o%B=_Ykn!k3kq|-j3Dt$M+> zi)NOQQ!9Ebz5G0>T+1Xpaj$DJurtNWJ=cvqnHtMD(aO7?>LgL~rJ(qvRgj*YDigjrM&|o%f9-?7DQf2rX z<1uyjnX2gFQ_55&dIO<~^94LtlEs6i=L?K0C@fDab~nc5r=72pX=Vu*an34w z%3Ke2RlnjoeQKE=+DzHTXk66e0f#2zOvX}0hGt$Y>=pr;*1lxYn=dKerZ>fVdF#7e zQu<*x@0x7G?*D~&Q|Q#q<{_wk``9(kgQ4yDjqa6|JAu~Bto>J5u~F5ZIGgG;L9ENn z6J4`SlI_!XoYy`U1+#jj*h}V6ikFY~>ZEh$(|ICNIy0OCeP)!>nn?{BXGd-7TC7`kbwRu1CEF<@_D~ki2V$+N#X%HSM<^t4 ziT|;bVkEl3Vg;UpH8z~qL2C5@-`$PJEnqhJ+PM_wxf1-^`?>s7CPHIxkbYd*Wpry3@E1TYOl9`a$gsfc(e~6nZIz|KbR6Xdr=zOSk{5Db@E$-@!Xdazd55f z)rc4UTGy467}&YG2Q{us;7-!Jf`Vnu_ls2= zWr*7@-aB3inrpS6vwO~v1SYLf2t(`^BPISBY4S~kKrSv$WgqFvr}B3DZGyjL-0bOF z-)|OPHN4uW-^!;A$y&fQw5r}IE}MG$H>L;@q%Z{(pn#!(ji;cj;i+aseoGlrs!@{Ln2 zrTiR9@nSrfQkR_5v>Qmy3!2mQQDb+p^kgMsGz$Vf4`&(3)c+`W>KRR;#=B_ofq5U5 z(7oj(H)`=#n5}=4HYaNHcN9_mtl#6#$9@PkZq#z`&ZD;+SkiOK3;iO`kbD?oQ#-h5 zKEISvA%)P9GLjk5n7zbA%h=`nuOAt z3GRK@92-OXUpw`_uC#tcp6$pho{)b*X*(tk6tU*uM>Y~ZUgq1i+c?bI%{*X-8SsE48^>{4uSvJeHPoWcwX3W^r-YM0cUx2(QB6_(P5K0y zra<1lWc}W64;??jIY&2)t|f9gf(|uamS_6N3{3yp0D$8c;82HyguwWF{31sQ zW%G+_!ngpy-UsQ9Q9OIJn;C=X`00O*Ez9stmB-Cc5CBNg0l*>h9|;G^bK_U|#g4*o l35bGH@CpL5Ka)eI1*IQ9^yoh%_1`am!TSnGF*W`?{1-KbKTQAt delta 2182 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.SchLib --params params.json --out .SchLib --typeid +python scripts/schlib_write.py --schlib .SchLib --params params.json --out .SchLib ``` -`params.json` carries your filled values (and may include a `"remove"` list — defaults to -`["Manufacturer_Name", "Manufacturer_Part_Number"]`, the Ultra-Librarian duplicates that get -stripped). The script targets the component named in `"component"` (its Library Ref / storage -name), or every component if omitted, and self-checks the output re-opens as a valid OLE. It -handles any parameter-set size — small sets stay in Altium's mini-stream, larger ones are written -as a regular stream automatically. Deliver the resulting `.SchLib`; have the engineer open it in -Altium once to confirm it loads, then Save to Server with a revision note per the SOP. +`params.json` may carry a `"remove"` list (defaults to `["Manufacturer_Name", +"Manufacturer_Part_Number"]`); those Ultra-Librarian defaults are stripped and the SOP params +added. The script targets the component named in `"component"` (its Library Ref / storage name), +or every component if omitted, and self-checks the output re-opens as a valid OLE. Deliver the +resulting `.SchLib`, and have the engineer open it in Altium once to confirm it loads, then Save +to Server with a revision note per the SOP. + +Scope note: the direct writer keeps a component's `Data` under Altium's 4096-byte mini-stream +threshold in the common case; a very large parameter set (or an extremely long datasheet URL) +can push it past that, at which point fall back to the `altium_params.py` DXP-script path. Fallback (apply from inside Altium): diff --git a/scripts/schlib_write.py b/scripts/schlib_write.py index 4730cd6..ffc952b 100644 --- a/scripts/schlib_write.py +++ b/scripts/schlib_write.py @@ -29,7 +29,7 @@ IMPORTANT: this writes Altium's own binary format from outside Altium. It is val re-open as a well-formed OLE with every other stream byte-identical, but ALWAYS open the result in Altium once to confirm it loads before relying on it. """ -import argparse, json, os, struct, sys, hashlib +import argparse, json, struct, sys, hashlib import olefile FREESECT=0xFFFFFFFF; ENDOFCHAIN=0xFFFFFFFE; FATSECT=0xFFFFFFFD @@ -42,26 +42,6 @@ def le32(b,o): return struct.unpack('