From 474d5830acd4c33576ac39aadfb9ddd0cc694b40 Mon Sep 17 00:00:00 2001 From: admin Date: Thu, 16 Jul 2026 10:37:58 +0000 Subject: [PATCH] schlib_write: auto-fill the symbol's Type parameter with the component type (taxonomy Class) from the typeid --- SKILL.md | 6 ++++++ assets/CHANGELOG.xlsx | Bin 5664 -> 5665 bytes scripts/schlib_write.py | 21 +++++++++++++++++++++ 3 files changed, 27 insertions(+) diff --git a/SKILL.md b/SKILL.md index 1b9a087..c3a72b6 100644 --- a/SKILL.md +++ b/SKILL.md @@ -376,6 +376,12 @@ optional if you'd rather hand-build the whole set in `params.json` — give at l `Description` written onto the symbol (and into the component's ComponentDescription field) is the exact one from the Excel, which was built to `references/description_format.md`. +Passing `--typeid` also fills the symbol's **`Type`** parameter with the component type for that +typeid — the taxonomy **Class** (e.g. `Resistor`, `Capacitor`, `Diode`, `Transistor`, +`Relay / Contactor`, `Inductor / Magnetics`, `Integrated Circuit (IC)`) — so the symbol +self-describes what kind of part it is. It's derived from the typeid (which came from the +datasheet), so it's set automatically; only an explicit `Type` in the Excel/params overrides it. + Deliver the resulting `.SchLib`; the engineer opens it in Altium once to confirm it loads, then **Saves to Server** with a revision note. The full parameter set, each value's source, the `params.json` shape (incl. the `remove` list), and the mini-stream size caveat are in diff --git a/assets/CHANGELOG.xlsx b/assets/CHANGELOG.xlsx index 721e44557c64d74192d91a7b1be6b8ec4140952e..822d23111c5a732160864de0f0ea91289c09eca2 100644 GIT binary patch delta 1835 zcmY*ac{tSj8vl)v24jgCjpfK*L_^t!vJEl}bzEES5Lt(0a57ON;^+=VV+t8%=N^$Q zOSUmxLe{P@m@q(=PTnTB zX3qL>-pk~HDq%#oPm_%2GG*{`-;R|zpwePfa`CL%-q_?XL+Ub5!VjB&6sxm5VN^+1 zR4=fl^S|k^xKgd-v6%dirs!9)Ez^vEkbumgI4$F?jHj=Ky$RU}QIh3EyRu1@B~)t7WVB2K;eV%39}BdMNT6u;JorFi}J@@pTM zqKaHjsjQ9<6FOCaxiHo0SkboE-%)Yq7d(>Dkel)wwSgNHE0H0x*C@YT4l!n?I-|jtu>HpwODT=j2=QfVwbQa*9u{94e)ksyb`M_HfGXY zD}TqntL!7wcK2@<^2a)fo&9o*Pq27P&~k$-Ly z!ULUWk$c`R)zJ|z%46|^6@|qt<(a!rB>GQxry$Fu&v|SLK^vz@7B}oLd3W3RF`O$i zMYP*Jir79GMLJ>(ik$0CLP&;fF6xrQ&-RGi#E)I|$cIt;u#V6!1Sz5U^4_(OI+oo7 zHes99mOUugFJ$Xp zP29({2e*6F7dYZ`F-B6MWtQ7T0bh3`Kw6*7eRGnUh8crNRg$*4ss6r>9ZPDvlm=X{ zd}5R7qN=VxkF5Y}q10Y!$>MxC0gziwY`h!_@Tj0mq+881<-x(hM@dl~D@i%gES&95 zVGUiDiU(6$IkrVU+*f?6OTD8m4Z!hopph_0ES&HB++bAII(agc zt(~G&o*%U2oaPfnR@x1>Vbp@aq+W0q&J`b9zadI&6nk!Zv&`~2b(WU=3|6V9u-XJt zzBlzU^#e%Yg|OS2*{$pHi|Pi)p_g5CLdRrNl*3aL2g$4QsY->$MEjQBZJV^L#DNHP+&nLHjqQ>LHRxWdl;Z>v(Cz)X)F?AU#A{YP6e03fn&NPk8g2toM@lRGGs zhRYdW6axS+f?r4k^3=iUgaPrvz<(Opy628=QJX#p0Mz&ZV4wLT;y@@$7+n6~mHTix mP%fn$uKxX7zck_l>HUI%eOXKXpaVc0D1ovCR}<*_p8Nw?yjElY delta 1816 zcmY*aX*3&%7ETaJkcuTJDb*ltEop0O?4@mLt9{S2rL|0iu@njOqNcW|6zQgI>=8;) zv|9UmY^AkEXr-1X(mq8gieZ{LZ|1$ZKkhx>IrrWl-?`uY3N;Ee#O$pFg`@!h00h8r z$QJ8>FdWwKVS72r*%PO!!44N39t^5oJ+6Ef+O28Ttm!#+InAM|fvM>QP6U6H+k4A> zn?sZ;;hiw))$&zI;RUSOJ}!Z(M;{lFJf15^p?^I)k~#Db*_P7vqucO$>?dRM4l+p5 z(#uv}%~wX|gwqS%(Tn5bJ=(L6KuRY5+Fg~vkaq-Y=tZrB@?ih-RG2Nytz8Ip+vFF- zJFV{5yXfdI07G=j;(ce%HrZ$RbvPIpW_Jg((U?n=;!S?sQO8;`6V#(~_dTohXTYT* z-p)tc28B2xT4ACdvu$=&ru$W$t#zT?gOqUHqv?(!>q9#y%6{6pA^S<{|7lpm=i;BB z;KFsk0riEUd_rCdiNG7`j3H}4YExj*tqW6OV4rDvg3$J_q1Pfg67%8b>d341Ew}V~ zt0jhrBiJE}95`Jdl#tnb*FQF5@oZMxV6%bNv}b+r%YZCmV#-N&!ds<_#j=O>_ZYvhvhE${236B$+l5Z1*<#tF5+$W(51iGoy)kwG+Y+eE6s$D zamzExEv^SrGJOcUGkx>r(L=~2THO}2$5sGnyFD7 z3kHRHVSrL)S?2mLR$=c+tEqj6Yq#Iz=YKIA`TPvVBzOmg?}q)$aHH;H?ttbXV$MB? zU`gEuvC=9B=NfM!esSp<{}%i0;rxWis95{9!p(ktn3H+lKUZ%bg8qILQ~ByBkhmZK zpi9GuDFbV04r0>OQtRE%+&ZW-z1j+GJFRAh*lLN3dCNsX8hPW{V|&Jo0mJcTo+P!} zc~2SA7;i@$ZIRF<={SmbNHLhTB8{$&j!|Y$$u*uDMFnb=>kW@ft7Be#YQ}G7SnVe% zh3GSahVS1CgH7KXACFTpT6gO7P|ICc)m^|5y>BYZ;;C2cf=}tJKk(({X*Abs+he=S zJy0rgf{*8tjM#9(JV}claCR8?x-bkjV{3i4sFux3o0D6>Wa-~l%6vBIWf_65n*Hu3 zWzgXPJXJAX>E)WMH9xPnyK@jg>a-~%*hh{GXe*1J##oVTXJAamXjK1GWBk3KLWub( zhtC%}s8>|w{bi#4ZF2L1bGqH)>iWMYy*&2hvcjt)*s5!CJ}9nL;+7GwHOG&R7F7^# z^v3>sUokOWy|+m7MwtbVZF1mjCK~rnj#*f>d8Xd)KSGkW#q23sO+`Z+f<>;8-wTl--;oF0<%-}a5}Gtfy`%rc#nyIZzWVB`4_Q)gXGHt+qV!%B zN016ew-w8sHS*mHE~b3_c4Uix;v$Ngod(7+%t^&-7mpoLDubt=CdrxXtxof}KsytaHL0R9e>Qc|4hEtCE z?8(-v7`ut19`110Wj$+JGjY|1Cwo5LP^2cW9vckWuVF+!FD(FjmUKD0vU`|Haez5& zt#*n+$9b7ZRDvJ*3`nlGw#Mjij54`Q(MS&VGR)Q;@F+$OMktqKpBsfRhf`>3-(f;Z^L|AH5XnQJQ zJCs09xVa)QX_&>KgDC?;P>U%S8--}_!WAR|vRTxGD~6O`6=KFwYnoKV7N#-)ORn%_ zIe{2drmu*ZVDha(@)46bMG%wg{PO{BWDET_QP6zEmjoCNbvU>m@JFRRl~~}zJCas^ zz!@o{zZ`|8B(2YHahEpz-&3U(NE<8hUo2l-e`re{0D%4Qqdy}7C`;RyM)C*c5l90E zaR9(4;(ACVMvI^At$_m4f`9tg8h%TM(WVCk0MrBkfFGTIMFP-(_A^3}za.xlsx`) — row 1 is the headers, row 2 is the single data row this skill writes. Returns {header: value} for every @@ -302,6 +316,13 @@ def write_params(schlib, params_json, out, typeid=None, template=None, from_xlsx # consistent parameter set the template defines — not just whatever was hand-listed. typeid = typeid or params_json.get("typeid") template = template or params_json.get("template") + # Set the symbol's `Type` parameter to the component type for this typeid (Resistor, Capacitor, + # Relay / Contactor, ...), from the taxonomy Class — unless one was explicitly provided. This + # makes the symbol self-describe what kind of part it is. + if typeid: + ct = component_type_for(typeid) + if ct: + fields.setdefault("Type", ct) if typeid and template: for name in template_param_names(template, typeid): fields.setdefault(name, "")