From 62fdb36f3a9f00ce024cdc5a599c622763c7d992 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 18 Sep 2025 17:52:16 +0800 Subject: [PATCH] tune --- App/Hi.Wpf.dll | Bin 68096 -> 68096 bytes App/HiCbtr.dll | Bin 112128 -> 112128 bytes App/HiDisp.dll | Bin 11440640 -> 11440640 bytes App/HiGeom.dll | Bin 393216 -> 393216 bytes App/HiLicense.dll | Bin 81408 -> 81408 bytes App/HiMech.dll | Bin 716288 -> 716288 bytes App/HiNC-2025-win-desktop.deps.json | 134 +++++++++--------- App/HiNC-2025-win-desktop.dll | Bin 854528 -> 854528 bytes App/HiNC-2025-win-desktop.pdb | Bin 324992 -> 324992 bytes App/HiNc.dll | Bin 354816 -> 354816 bytes App/HiUniNc.dll | Bin 178176 -> 178176 bytes App/en/HiGeom.resources.dll | Bin 4608 -> 4608 bytes App/en/HiMech.resources.dll | Bin 4608 -> 4608 bytes .../api/Hi.MachiningSteps.MachiningStep.html | 22 ++- ...Hi.MillingForces.RakeFacePhysicsBrief.html | 2 +- .../build-hinc/player/player-tool-bar.html | 54 ++++--- App/wwwroot/HiAPI-docsite/index.json | 6 +- App/zh-Hans/HiMech.resources.dll | Bin 13312 -> 13312 bytes App/zh-Hans/HiNc.resources.dll | Bin 4608 -> 4608 bytes App/zh-Hant/HiGeom.resources.dll | Bin 4608 -> 4608 bytes App/zh-Hant/HiMech.resources.dll | Bin 13312 -> 13312 bytes App/zh-Hant/HiNc.resources.dll | Bin 6656 -> 6656 bytes 22 files changed, 121 insertions(+), 97 deletions(-) diff --git a/App/Hi.Wpf.dll b/App/Hi.Wpf.dll index 385ebe542729ba2e7206d8eb699812f3caad7243..afdd5f23600dd4456ed4a07af440747056e0e32b 100644 GIT binary patch delta 312 zcmZpe!qPB>WkLsw{xgf68+#-q8C54Qm9%8kntWd}nNe-Cvy`E*K#TqV+u~*(9-G(P zmVTB0XWr%(U1nAbb3FqF1`|dGePcaCJ!5liOA}*5OH%^_OUoovv&0kwb3+3I z{0S8Vsa87jlDkhOCVIx232l=TL!vhGnOr%?smj2}z|6qFpt}7v6XSeFM)U36ER5ld z!R8Fw43-Qg48{zGK-!eS00=FCFbT*uV@PC30rJg(av*VIplAw1GF+t@P$Uf~mJC*r X2sFhA$TOR6%Eo94v>=;}aVj$amHAoN delta 312 zcmZpe!qPB>WkLr_SNFSh8+#-q8C51Pm9%8koP1w0nNfAKvy`E*Kvinb#pRFsoqAK} z9egS8CcU{umzmYVOwWLU!Gw`P-&oI3&)7^m)zC84$UMc+%)->d!aOb2*wVnnJlQNY z#XQB#AkD%k+1xVCz#`FT@_r*jmURiQ4@~}I6d=I;jW^)<LkTQTFv+KuKnxEPPAkZs0b!C(r+7C?R)P}~?OYrtRvdb&* hX+SkbKv8p`iZmeKf+3N?Xu2sIqbbmWY&OQJ%m7XhTFU?c diff --git a/App/HiCbtr.dll b/App/HiCbtr.dll index cde4ca7f532390a5e75838d30394a23f9d047d3b..7268999c5a0a16915458bf6c652b02b53cc7cdfb 100644 GIT binary patch delta 2078 zcma)7du&r>6hEi8w_OJtV@hy?b7?LYNNqi9hAt59qA{q@KV!R=|ghVtV;Q4MhxQ&T1UwXd#JLh-K zJ>NN}-%VXMr7oLZO&dj=cp9~ccU`JkYnv6 z55?@$Ga2oMLIclySWt=Gr=dykKCr)IewPX#z(g<$d!aTZVg(iwt&(KE_KZfZv1!lO zP5il@HN@>`V>{y&GfGJBhk>H+4G5}Ofe0%}gK(3WemKc~j91__Hm-4=!HjH4V|vOg zd`euFs?p?RO%@>gt#N&x757^FFk9Sjc>wHeZBq-LV&|IL@djJfTw%yV*3(>0XZpNZ zrn=Pt!m&asF)*sDu!f(xat-gr@->G@<|QP9h^#a*jmZ5dz|1mE?jUkq!fq9D7wLSn zxUQ4V$#x{Bk=KU_JF3dbL>1CDd98(S1sRm-UzIVwB3QJ$y5Y*QasjHWd|3oXk+1IGJI zvyjDPi#MI4G4Cp zlY2sw7dyVDk>0;$DpDCv=icNoGn2x;=?qgElIhQTIvV8Q zhlZ(@dfPyj_nTe3eC$ZqUyrD;&M*n{TX^U`y5cx09z`N@^ynxW)@*g7h}^HfJdN67 zNlRF-6sH>vbRF&7Ced{?xJ@d^(|j+tX5t>vd~@0|sDzy--b&^6w*81UW#5h@F8Gd2 z2Kb$%02fIbVX4__72%nwKsVWcThC~|w=%xUhMr0ZOWA?JVk}|b4lc%0rTC+>STxt| z47#g>0Y^}-k{#ZF>~{owF4^I(_EmYj?$F%oP>>mh`jsz+svj;2&2jqYdP5;cm0xx` zysm)LQ6^65z5 zgn+x;3E)Mj@RYmCz3#Gz$M28$d<}6q7K?>F0jJ*`iTgahXv`xAT`sRP7-^85aktX- zQ_+Z}lxic;xl0c#ALEw>bRXWJ;Bu^U(>FB&9`MtOfR9!KeH~?pX)8>Y0659!CTpCm l9{NSe<{?fHT(rDo50bTkG*05U`wI@CPjo{$I9d4o;6G=78l3Kmk z>s_tXE0k(^P$G?x_z|g;BCZWcg39V2M$)82B}OA0phCk(B_>EjzHOe594395UXC zg=sj#5_A{*fLUFzmJk9GY6x6MrUbq8C$)rpL&w(5<<0?J zRF|A&Cr?|KB=QV-71;X?pug9x$-V^p91_g79&kJW7P_i_EjdWf)HjgW$u%)& zP71c8&Nq|kTJW5-JvIfsK8QJquAPjP6Wk`Qa@@HKR6X>Gb3Vd9Dt#ZCy+;lGeNo zv?K#{TkbLKdlP-nb zG{vA5O|0v?nr`}a?AgHGj8l*_p+0^-48VnD%-o6N#?aL?!seWKC4@gFSKLWtx-=fb zc%Q}vZV0qf@n;E^`ncmfWEr#G`r!Ky1>ijVxq?M%!C^ksJkc@fxlt5r7K(8C{>85! zWxx)!^^PL+W|KQ$$f4#haikBtI+<}7eelBO0LFXLI)>~{TX5J#%NV@YM!z_} zRq&_axBE;wxMV_o*h;glJHz|!R#rZGwDqsYbXd(zAmi4u&|P@NF;qB$Qig5T2(hwPv&fUQTU!ng z!fE^4<7EEFXyRZHB@bVrw7_C}PL36xpA2}D{kQdq;d?6WtF7xO6Nr-@>?tIL^!uKL z#Hkg2c$&~hd%Fq(l@)=YXO85m5QC!2J11D~QrzxJm*@|A6e%DoK5tMv)?4v#fmkkj z6xru-1%k>Pm)BD%yUOKY&?S~uc-)l%Me&yUX~AIr|06aGK9RFv+`{J6AD@-)9?ovx zxo1|tc4V+?yy7kv0lWlCN{ijaUU!ig_Ig9AR4PesMUg$x+EP_jylPbSMSPM^^}C}! zF&q&^tu<9J=x}0fcs#fBu=Wx8oFneT>ol^I)VT3KRfI5jafR@IQG!x@ByfX*O9l@_ rp%!&2E(JL%VikN4!AHVJ1wV45_{O3{P>Q>9`-#u$hGGzD=xonF9R4Al diff --git a/App/HiDisp.dll b/App/HiDisp.dll index 84ccbe09699f47bce839d18af2fc225ecdb4162b..d09308e6f422000b6a958749028798953f19a9d6 100644 GIT binary patch delta 16552 zcmb_@3tSXc`~S=?yUWS~!a6D{0`gB0Gp2NMt9GTM#*j$SxuW6FG#) zp+s&;fJb68Ux__akzDBHuye0Yn~19!%sRL@p)rP$CZ_@^B)LAo5*A9!cc8i9CwP_YiqBk?$q)7$V1Cd`R@Hcj>WRD>>lh7{I z*9yWDcMCxH8rrrN%0V04nN`vco=oa&d{M5Q||~J*#oaE+q=|$}S_6 z`d!KofWF?X9Ef4OHesOcSP%>P$40P5$%!BdBxQ8p`$}v!3!MEKDBNi~0mR`DwII}$ zh~Ug5Za|V<5Z(jHK%vwY;tCVW^vFHRL~-QrpxYx1U*Lzdvhr=PW2F>mmI+R?%x+

~xsr^GN?3($7cQjz~KgX=|zN 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 delta 16551 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


D#0ug=`ZmWPZe`AWUL$Mh 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 Jd92ka{{wLg-unOm diff --git a/App/HiLicense.dll b/App/HiLicense.dll index 2a28c266372f9ecc24a4f5c1f88b6ff0001e29d5..1981485206286bff9657055ef9678626a99754d3 100644 GIT binary patch delta 312 zcmZqp!_x4FWkLsw?Gd#{8+(puF{(@s)b3U~v35<~zPj(&DezKj>hH(btX1=UB=Qx!a7#Wxu7#NhdZ?<3zXJj)V8LL>V9t=lV8CDr#HI{J42eL}1Snz-W~Bi|lNr*0JPU>tAS)TDJ`pIJ%wPso hl>(GW1&SB~X_M*utr^W(O&RnU3_$k(XPjuj1^|#VVe9|^ diff --git a/App/HiMech.dll b/App/HiMech.dll index 1ab825741f797245176f5908e2b1a13a1f8da101..6d296727a26bea2b5b13dea8102ef36284f6c86f 100644 GIT binary patch delta 432 zcma)yKTE?v7{=eTttOcS7gs?PEEn%Cx$D)bNr-}A9kjS9O-w|b3jSFuSn7~LrwD@h z6|_h;{Rnk&D=rEZMC{<^;#vFvzAw+ikB48gS8Vo*XQ%n_;^g5tX(gzYjI@&6U6OzO zMEC8+Ag@x$8iUdEL-dm6cE-FuGSj81hS5xVP}R23T>4bij?i4TvZ~c4FmpUgTq>|% z_8e@xjAB`GC6?T$o?qt7^(5>>`&+g3McM8KTGkD84NWs!aOnt&T~Q*~_8o>DB3$e+ zi`z_i(sE?_9qLp6Gb`JAW&A4wx3PD-d^J9M&aa<$v$Jh|vm=E`0Bi*FmPt)p6uCN^ zStN>yEYo^S!YGz;ol7QSS_(uUVoAd&%4Q~wlSkbI1UUdOv(B5*A3-9!d^a}Gnt&qk zzqf&b1q339RZA!Xh5C@g;U*Q=l`EAe6jLZcpy)TTS}FW`QR;sfydb~?lHM#B$3I5u Bb8G+r delta 432 zcma)&y-UMT6vgkeRg+ADi*5>jP{ON8-hIi7lTF%m5bI#YO-W4SEPkyD79BF^ltKRh zS1FP~a1cbdy0|%sP(eg@L45cZ$d7aG;c&Ub-GA2ipY@aDVsrZ8_8@Jiq@DJ))529+ zeElT%N1Iy_V)Qyz98>tGJsQQ-e_~_DVQ1K|D=Tfi6 z1M1l}dQQ!DDuJJUudCz#+nkHlxuMagyO--jeg2|xF6uv9WBEy}u66`38vsaPhLz1S zaytWXHnN;nsh*P}-+To*0fj|KOXx@3#dVPfFXYbky zS>m8W0wJJuTM~jHvE-D`00u4DbBTaRwvO~fW|TdHSPH@XOZazzfeTJn`_OnlhcX!1 I<*at_3sPBhBLDyZ diff --git a/App/HiNC-2025-win-desktop.deps.json b/App/HiNC-2025-win-desktop.deps.json index 06e12f6..e61c622 100644 --- a/App/HiNC-2025-win-desktop.deps.json +++ b/App/HiNC-2025-win-desktop.deps.json @@ -11,8 +11,8 @@ "dependencies": { "AvalonEdit": "6.3.0.90", "FontAwesome.Sharp": "6.3.0", - "Hi.Wpf": "3.1.36", - "HiNc": "3.1.56", + "Hi.Wpf": "3.1.37", + "HiNc": "3.1.57", "Microsoft.Extensions.Configuration.Json": "9.0.0", "Microsoft.Extensions.DependencyInjection": "9.0.0", "Microsoft.Extensions.Hosting": "9.0.0", @@ -1659,39 +1659,39 @@ } }, "Grpc.Tools/2.66.0": {}, - "Hi.Wpf/3.1.36": { + "Hi.Wpf/3.1.37": { "dependencies": { - "HiDisp": "3.1.41" + "HiDisp": "3.1.42" }, "runtime": { "lib/net9.0-windows7.0/Hi.Wpf.dll": { - "assemblyVersion": "3.1.36.0", - "fileVersion": "3.1.36.0" + "assemblyVersion": "3.1.37.0", + "fileVersion": "3.1.37.0" } } }, - "HiCbtr/3.1.41": { + "HiCbtr/3.1.42": { "dependencies": { - "HiDisp": "3.1.41" + "HiDisp": "3.1.42" }, "runtime": { "lib/net9.0/HiCbtr.dll": { - "assemblyVersion": "3.1.41.0", - "fileVersion": "3.1.41.0" + "assemblyVersion": "3.1.42.0", + "fileVersion": "3.1.42.0" } } }, - "HiDisp/3.1.41": { + "HiDisp/3.1.42": { "dependencies": { - "HiGeom": "3.1.37", + "HiGeom": "3.1.38", "System.Configuration.ConfigurationManager": "9.0.9", "System.Drawing.Common": "9.0.9", "System.Resources.Extensions": "9.0.9" }, "runtime": { "lib/net9.0/HiDisp.dll": { - "assemblyVersion": "3.1.41.0", - "fileVersion": "3.1.41.0" + "assemblyVersion": "3.1.42.0", + "fileVersion": "3.1.42.0" } }, "native": { @@ -1706,7 +1706,7 @@ } } }, - "HiGeom/3.1.37": { + "HiGeom/3.1.38": { "dependencies": { "Google.Protobuf": "3.28.3", "Grpc.AspNetCore": "2.66.0", @@ -1717,8 +1717,8 @@ }, "runtime": { "lib/net9.0/HiGeom.dll": { - "assemblyVersion": "3.1.37.0", - "fileVersion": "3.1.37.0" + "assemblyVersion": "3.1.38.0", + "fileVersion": "3.1.38.0" } }, "resources": { @@ -1730,27 +1730,27 @@ } } }, - "HiLicense/3.1.35": { + "HiLicense/3.1.36": { "dependencies": { - "HiGeom": "3.1.37" + "HiGeom": "3.1.38" }, "runtime": { "lib/net9.0/HiLicense.dll": { - "assemblyVersion": "3.1.35.0", - "fileVersion": "3.1.35.0" + "assemblyVersion": "3.1.36.0", + "fileVersion": "3.1.36.0" } } }, - "HiMech/3.1.45": { + "HiMech/3.1.46": { "dependencies": { "CommandLineParser": "2.9.1", - "HiCbtr": "3.1.41", + "HiCbtr": "3.1.42", "Microsoft.CodeAnalysis.CSharp.Scripting": "4.14.0" }, "runtime": { "lib/net9.0/HiMech.dll": { - "assemblyVersion": "3.1.45.0", - "fileVersion": "3.1.45.0" + "assemblyVersion": "3.1.46.0", + "fileVersion": "3.1.46.0" } }, "resources": { @@ -1765,20 +1765,20 @@ } } }, - "HiNc/3.1.56": { + "HiNc/3.1.57": { "dependencies": { "Google.Protobuf": "3.28.3", "Grpc.AspNetCore": "2.66.0", "Grpc.Net.Client": "2.66.0", - "HiLicense": "3.1.35", - "HiMech": "3.1.45", - "HiUniNc": "3.1.42", + "HiLicense": "3.1.36", + "HiMech": "3.1.46", + "HiUniNc": "3.1.43", "System.IO.Pipelines": "9.0.9" }, "runtime": { "lib/net9.0/HiNc.dll": { - "assemblyVersion": "3.1.56.0", - "fileVersion": "3.1.56.0" + "assemblyVersion": "3.1.57.0", + "fileVersion": "3.1.57.0" } }, "resources": { @@ -1790,14 +1790,14 @@ } } }, - "HiUniNc/3.1.42": { + "HiUniNc/3.1.43": { "dependencies": { - "HiMech": "3.1.45" + "HiMech": "3.1.46" }, "runtime": { "lib/net9.0/HiUniNc.dll": { - "assemblyVersion": "3.1.42.0", - "fileVersion": "3.1.42.0" + "assemblyVersion": "3.1.43.0", + "fileVersion": "3.1.43.0" } } }, @@ -2442,61 +2442,61 @@ "path": "grpc.tools/2.66.0", "hashPath": "grpc.tools.2.66.0.nupkg.sha512" }, - "Hi.Wpf/3.1.36": { + "Hi.Wpf/3.1.37": { "type": "package", "serviceable": true, - "sha512": "sha512-EVN8K4gzFqnFgRQtADXxZQnRTjIFhIO9QLfi+5mWbbb2UMDyEYDyvwiu0IDw4eA1DR6b5vfdQobs0Av1pPqO3w==", - "path": "hi.wpf/3.1.36", - "hashPath": "hi.wpf.3.1.36.nupkg.sha512" + "sha512": "sha512-EtVr2HqJmcDL4lYKdat1oiQKOLFlh12jrdpBQFFt3YdBxtpxbsbLNGGvY+mzxcIBgvQm1kfogFENbuJd7abfWg==", + "path": "hi.wpf/3.1.37", + "hashPath": "hi.wpf.3.1.37.nupkg.sha512" }, - "HiCbtr/3.1.41": { + "HiCbtr/3.1.42": { "type": "package", "serviceable": true, - "sha512": "sha512-XBU9N0INH8icytWhDlfwa1iDqqbSQvX44uswnr6ijwFuM+HFg60/Ppl9hX2dNE4q/uNxoyXE/TmnZLO4bayjpg==", - "path": "hicbtr/3.1.41", - "hashPath": "hicbtr.3.1.41.nupkg.sha512" + "sha512": "sha512-yQCJsbfgygBSbrHlnSARlddqg6b8M5JdtTnTxOLwxCMTNU85n09YpwErBVRCV+5m7q808NkD/WeYMFvHPX/xow==", + "path": "hicbtr/3.1.42", + "hashPath": "hicbtr.3.1.42.nupkg.sha512" }, - "HiDisp/3.1.41": { + "HiDisp/3.1.42": { "type": "package", "serviceable": true, - "sha512": "sha512-nrZDGaDHfum6mjf8+7NJSKnMDNgQrse/FNwX098lAs86/5teglcWlZaC5TE6ZtVB6nJ3pfVSz3Efb2SPfn0ucA==", - "path": "hidisp/3.1.41", - "hashPath": "hidisp.3.1.41.nupkg.sha512" + "sha512": "sha512-Bx/wHrgl8NW8u8tolcpQjLFdgKCWGb5Rjz7dpRqQXrjiqDjBn0c5PusGvBIuBuAz3YYbM5igHXcX4sH76MMm9g==", + "path": "hidisp/3.1.42", + "hashPath": "hidisp.3.1.42.nupkg.sha512" }, - "HiGeom/3.1.37": { + "HiGeom/3.1.38": { "type": "package", "serviceable": true, - "sha512": "sha512-L0K4B8LNMuPg+LPsirhC6n4FQEMgRETTaRuVuupl41NouAcLGItScojYwoN82qhWEiuKCSTJenhLCfbzIN+Wsw==", - "path": "higeom/3.1.37", - "hashPath": "higeom.3.1.37.nupkg.sha512" + "sha512": "sha512-3PPkKj5rxbNEGn+S5GW1Y2UBD6NYOWYtBapUrOBXxUgQ5GnhpzJ8m+SbH1vFZCemhMvh7smFceZNom/1ed/Olw==", + "path": "higeom/3.1.38", + "hashPath": "higeom.3.1.38.nupkg.sha512" }, - "HiLicense/3.1.35": { + "HiLicense/3.1.36": { "type": "package", "serviceable": true, - "sha512": "sha512-WX+X6qB6A5Y3gapFVlkfu6JZqd22/QPTIGKoVWgd1VhKYm9OdtprEFRvOPOfdLpSWv9kObt4Ej7C+AcCIeFcqg==", - "path": "hilicense/3.1.35", - "hashPath": "hilicense.3.1.35.nupkg.sha512" + "sha512": "sha512-Sa7hSVrrt0SY87F1kaFpCUOJrRRTutgP8S8RnHQCw/xYFHXWLBMwRSXTPhsfaUbEkVsQr81p0kM+XVf7F9fWzA==", + "path": "hilicense/3.1.36", + "hashPath": "hilicense.3.1.36.nupkg.sha512" }, - "HiMech/3.1.45": { + "HiMech/3.1.46": { "type": "package", "serviceable": true, - "sha512": "sha512-r3SUyfGLn379fZuvI1vlTs2wwk+Eu0BqhuYE1NH+3aggKZKppXFiH+0Q4Nbbqo79mCojTu5ufschfxvCgBkL8A==", - "path": "himech/3.1.45", - "hashPath": "himech.3.1.45.nupkg.sha512" + "sha512": "sha512-EipzArFnhYKy/lf+Uao/eicLyOcIkNybFOh4V94KSu5zgkZQqIwuIdnYy7/LNXQf+0Wu8A4EyoSTZ8bWzw3ccA==", + "path": "himech/3.1.46", + "hashPath": "himech.3.1.46.nupkg.sha512" }, - "HiNc/3.1.56": { + "HiNc/3.1.57": { "type": "package", "serviceable": true, - "sha512": "sha512-ycLAca8GH3a2onWeUzd2ybb3vN9ecfUTgg95U1L4zb0ids58dtBsLnr3Bh9Xd+zsag6hGaB2F+ZGo/skh+uD1g==", - "path": "hinc/3.1.56", - "hashPath": "hinc.3.1.56.nupkg.sha512" + "sha512": "sha512-P6oXneQ9CLCf32ubZ+dc0lqUuMpm+MmFiq2Pj/faE3As9GbhxXbF3idr+tZVv7yLWQL+Xcsa7so94gNIYKRvWA==", + "path": "hinc/3.1.57", + "hashPath": "hinc.3.1.57.nupkg.sha512" }, - "HiUniNc/3.1.42": { + "HiUniNc/3.1.43": { "type": "package", "serviceable": true, - "sha512": "sha512-StmovVfODJqZD5ObgdP8EmylZeLP+kSGjvENXUDNlCVrwF28A+hK2UHN+aE8QKHBvldzQUWTedtHzcxqkil3iA==", - "path": "hiuninc/3.1.42", - "hashPath": "hiuninc.3.1.42.nupkg.sha512" + "sha512": "sha512-balFPw+bQMyoNZO9fQATCkeyYhFoDQVN/CtJXCBJaK1PiNwUoI23o2iyMX3QqQ+dZ+xAmSAphLuluNg6Z82h8A==", + "path": "hiuninc/3.1.43", + "hashPath": "hiuninc.3.1.43.nupkg.sha512" }, "MathNet.Numerics/5.0.0": { "type": "package", diff --git a/App/HiNC-2025-win-desktop.dll b/App/HiNC-2025-win-desktop.dll index dfb227e4372a37b05c5e79381db0fc725b30583f..1aee71623ea4873b4cbf7eb7a3b8035e7b29660d 100644 GIT binary patch delta 327 zcmZpeV$v|hWI_i^$gaar8hcuM7+ZUoT6>tc_OPU|Gg?mn$j(yEr^kQ*i;Ac3<6se+ z-owGdBdLlIXE>Ax;V?5WGN?`8$iX7cs6G882TT0)6F{ZyCY&tWO*mP3;soTq*DY?@ zv)FZY>NTNU5ABQX0qLyU1Jc=;_A{DKSNzMSIsL#D4$JA;<{X~e|EaOB+<++@e1m;! z9J26splTf@sL1w%ksMd6U>u-fWqwdjdxA125OV=B_x1#3o-@2GR!kgcrW+XY1PDCk zT^66Boar^U{j%nST@szsCm8Y+DnLbl-Gz#R)c;ufPGU;T^IG*kCuO!P8u8q}4gf|} BZ-)Q? delta 327 zcmZpeV$v|hWI_kau9rM_8hcuM7+ZUoT6>tc_OPU|Gg?gl$j(wOsmp)>i;5v^W(GzE z&FPICEaH4B2w8?hdDHtiSj499;b7sJuE7Z;u5hq~Flx4IaGArR>PUX~o2Grg1{+1jelsm^SaO*MDZQlfi+J zp~e3HZE-UXkIidtOTWthGtVQ_IjN*bFC{03fq{{gQSb`G14f3W3sP#!n?Lz96@Fvk zX-q)^n4a)|G2*G z^sRW0OyAVx45*^y87=!66u23_q%t@aW^eMEC!jvjbiut$k4(R0sFHKRhh8x(U}bnJ zx@`jQw+{b}z7qxJn=!U}WQOJeRmnq@RZF~j&A`CSa9QQ|28*5U?z>MVOfP*L{JcG3 PFB1?mZ%^3EqF@04pmm0! delta 341 zcmZp8E!^;0ctVZHY;$GLdn->mZh7M6b#9aCMx$eQTN)>{PGHlhpu z8LCoyE-ru6@6?+*@8C;$H))Sd=cJM%y_B3B1_nmw>O{JYZz-=JRiS@Ohu(toOV< zQ|H-i^~iL|EG~d5+Gxl6lHtHQhWNtwClmw>Tvk-CGkeyfU+t0Uo|>NvQ>4H4GeZI! z!`a0$4vUTyde`q>J~ct)TeOu&rcY*aYF=?FR3Wov^FM|LMuvkd?vGu{9=c4|*SPp` zULA`^rf+I;22@dq`iVmf3fv5mSC2m0-Jcf^V<{l OG66C3_JqAG3Kjs`&xqy# diff --git a/App/HiNc.dll b/App/HiNc.dll index 370cc37002ef71985b0a4146ea6ed721b5865f11..c5ec20b1965e5b70a28a2062d0bda552e4f703a4 100644 GIT binary patch delta 10378 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 u%XG) zRPpTd8o61Tr3rBYD^z^(!yi%GrM{}}leMBIZV|s?AO8HeXYwBDd#w*=g%j)%nqXto z_lO^w_U;h}_sqTGHmJo0%klm*2c&cd*W?Gp_^JcaOoP`%GX;Fag;(&~ z`2z4ah3Mp9C-+kyJmx-G-QAR;3+-}gb%06V&|U3vMRlMlSMTFretS5n*^`s8_1opD z>IY7zi)YaTVu`e3gL%%V?&Gw>pWF|M#SnfF*P>OyhpuU-h}Q^1t zri+4BV%3ge-))`z&7541@PVzw({2OzVr5%+V^cplNb4!7W;us&k!%!(8$Q)kJK@b2 zZ2CYa4~5f3owkd(*>kgqCzj4C8(<#mV`}W)-Ql}*>?FdHP&kA|dTb*@;2cFIT z_yhyLB@EYpr5Sb=&JXLUxfYWDvU zfxEP6w2ZAgg%J-k2XDgFbEkOVxvcOD47^PkcDb#o`U&TWI&~9)$Le%e^v%&JTiyNz z4_qefTmG%t-x7hp&}k*h{R$&~%qn>kslNOb4_wFEw_@NHVR+`gW*8ux-_glO1nz>r zUh$=JSxZW%9Cdsv4_qPaCo7uH9TE6dotoJF3mEYj^SOvkjGAzfCiNf{>a%~+bcKYm z9VRJ)1hK0oDUKAV-m;WQ&F4)Wdb&$NrW3yIQh{3OB2~!d0%>69z3u+qxHa-cQxLo2 zE)93#qF$yTHO?%xktj~SGB@&-xq|}wTZ5%@FIi{_c`qRklPfBpgD^RW<#|Ycq<~d< zNL{_S)*TV@j>N6+Na<>mhg9R%jvo}#-EPb5vB#w4mMnZeHqmeJl+Z+fHmUDFCjCrE zn7Y+h%9Kft`b(f>A4q?b+5A!|%cahA-vr>pPLxWU|1V*LdV8WYtSd=kX|<9St1z)v zvg2P5-Kv#(lThY8SDHmaSmRuz5OwcdX{{-b{~-pz$3$zt(%bWT`?cO))Y}-`FS!0h zy>(#AC)we_|8xgnzlUAjTrbTvsY4e^eU)BuiE-(%nTeU<(eYV{;ju~4k>Tml8Ij>} z1JknxWekdqPK?b|XT2&NU(zcpAqGX6S>Z8pF)`t>8Bs~$N$IhP;gLz1nF#}9;v)yf z#IiD9Q{ewkbBnJj&+~fc-Am2CEzE5h-srh5p1h>G`Km63 z8b2X1WaNnF{4r1-Mp36V)9QSlSXVoM?uqax#C%3@-oOX7+nC#s(=GhIIAngsY$ zJq|WW-BBvn6Oy1Nl*u_HKLJAVPYEVKBE;Y|9-^QG;-CyaCn1$VF@B1~&n4Ky^~xX? pKS!c|6kg-dsto_fK(w$cM%hGmwp@;r6QD0dsvVw|ZxXyC{uddAIXwUX delta 10377 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 diff --git a/App/HiUniNc.dll b/App/HiUniNc.dll index f8e5f34b43262eb2257eb5c3ab9fc93dae3205c1..6d23bc25e081147ed8a857f12141f0faa121ec53 100644 GIT binary patch delta 402 zcma)%y-LGS6vxj=?O<^zh~O#~6+_~^xw$tti;&wieSjjawn?)(IZ37B;?SW^ne+u* z#E%Bi`T$OXZ=i@^mkxr02;K_ro5 zTZO;)T$xM-Kv>E~9b85`pWVZ|;-b$zu9y;*??%LOYi`vFs3WbK3_?M@Kv9vuAK;6u zD7_Zel(Iy`1Iv}6XGy`OC3rPbk*Yc&3A688T=?In8sd8SvGR2$uj}=j`>kx}x$&C! zhZt5Qvk8EUu*Pg^yUdJfn$lDV%B17?(j#roIBn5pLP#ta_u7fu^kb6GJmJa1w5i`L z=y%Qh;@tQ^Wclf(v55@^Cd5D?)tXeHMS+0?N6XjU0|IT}nsM#4bT%Q;jOaV@OFiu; Y;A-w`MzW28!HW!RAo8nE{aXP7x>n(2%SopGVxoqBv-`Z(&{^|08+N_yT#J-Z5j z^R@D;a)7XyzO``~Nme?*hx`H;wyiuCkcP)7kvdRBd5%p2=6X$6P(NVV`!T+#vQ|xp zIt@W+LwiJWmlGw0Pka$Ln(;d0K2N{zaqfS~`ViNP``xF7vy=IaZfWyyw>Y}Y`a|@~ ziq|NBL|79wR+GFcRU%a!>qK+uMlH&ya2$uRP{uS$M8vsjsYr&|%rjn$rYojq&eW}B zH`mrDBG0aFtsUIrPz4DJk_pEUgEm?NH{OK^T0nuB72r(3j0?>#Hn+$mg<)=>Oi~#w VAxyUimYwHN1Dc%`gxEc6T* z7)%%$^o{il^^7gFlTwV04GogbQY@3qQq59KO_MDwQxh$WEDe*AlZ+FMOp=pKQw>rr zH!HH|GIOdiFfuSRFfgcXp3WuA#Ava3HBUWbumyuQLlQ#@gE0^qG8ix|lMnIM!P(B%mje#OY3?^W3`;8iK!Uuo5dFTLsqH&CYz^mWq|_mR6a}PUjKClww2{wy;qzU=`*7 z9wEJF@Bo5{`FMDLmy_kBd)Rqx-n#YEWumgUNe&0;{`2qW&q;sr_};BfufA^j@8KU) zu7OJ7e3lpajHb?UU3e-BXIt&PWp7HJhro+qgQ=>PwXO}>cs9CCb~7j>0J8Y9cRWxO zKMw9yLzuz|j2Z(@YpE^jMZw)W&LCDxH#*MMV`^Eo)=ku6+$U91I}%Ybr5@o}6vuV$zceVG(vqXW))2-I85;xCmUmsPAz#+E%XyI7& G$Nm8ghBe** delta 231 zcmW-Zu}T9`5Jm6XHHZn~T8LnsDq%NocV>29TKxjiA9%~|1Ao9SB&CI*5G1Xog-v+) z3D$mv_yacD=nxKb@8uM;8n4EWcYDvt_HBEAo|-&bb5?(w|Mt~Fh{e#Jd%N+fL$MF Jx6x#O<{#m~H4Oj& diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html index a9e5448..cf507cb 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html @@ -1507,7 +1507,8 @@ public double CuttingDepth_mm { get; } -

Gets the cutting speed in mm/s.

+

Gets the cutting speed in mm/s. +The speed on the cutter outer radius by the spindle rotating.

@@ -1846,7 +1847,7 @@ public string FlagsText { get; } -

friction power to workpiece per cycle. +

friction power takes by workpiece per cycle. the unit is watt.

@@ -2253,7 +2254,9 @@ public double? MaxAbsForce_N { get; } -

Gets the maximum bottom edge deflection on tool running coordinate in millimeters

+

Gets the maximum bottom edge deflection on tool running coordinate in millimeters +It only make sense in end mill. +The z value of this factor is re-cut depth.

@@ -2723,7 +2726,9 @@ public double ProgramSideCusp_um { get; } -

Gets or sets the recut depth in micrometers.

+

Gets or sets the recut depth in micrometers. +The recut depth cause the cutting mark by the end mill. +The recut depth increased by the cutter radius increased.

@@ -2822,7 +2827,7 @@ public List<double> SideCuspList_um { get; } -

Gets the spindle cycle period in seconds.

+

Gets the spindle rotation cycle period in seconds.

@@ -3233,7 +3238,8 @@ public int ToolId { get; } -

Gets the tooth arc duration in seconds.

+

Gets the tooth arc duration in seconds by the spindle rotation. +The value is SpindleCyclePeriod_s div Cutter's teeth number.

@@ -3333,7 +3339,9 @@ public double? WorkpieceDermisTemperature_C { get; } -

Gets the workpiece plastic depth in micrometers

+

Gets the workpiece plastic depth in micrometers. +The depth is at the location that the cutting stress is equal to the yielding stress. +The cutting stress exert to the workpiece decreased on the depth increased.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.RakeFacePhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.RakeFacePhysicsBrief.html index c772c78..0b3b08a 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.RakeFacePhysicsBrief.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.RakeFacePhysicsBrief.html @@ -761,7 +761,7 @@ Class RakeFacePhysicsBrief -

friction power to workpiece per cycle. +

friction power takes by workpiece per cycle. the unit is watt.

diff --git a/App/wwwroot/HiAPI-docsite/brief/dev-doc/build-hinc/player/player-tool-bar.html b/App/wwwroot/HiAPI-docsite/brief/dev-doc/build-hinc/player/player-tool-bar.html index 75afae8..7983df4 100644 --- a/App/wwwroot/HiAPI-docsite/brief/dev-doc/build-hinc/player/player-tool-bar.html +++ b/App/wwwroot/HiAPI-docsite/brief/dev-doc/build-hinc/player/player-tool-bar.html @@ -329,37 +329,53 @@ namespace HiNcRcl.Areas.Player { InvokeAsync(StateHasChanged).ConfigureAwait(false); } - public void StartOrContinue() + public async Task StartOrContinue() { - if (!MachiningProject.PacePlayer.IsLocked) + await Task.Run(() => { - MachiningProject.PacePlayer.Start(); - } - else if (!MachiningProject.PacePlayer.IsRunning - && !MachiningProject.PacePlayer.IsFinished) + if (!MachiningProject.PacePlayer.IsLocked) + { + MachiningProject.PacePlayer.Start(); + } + else if (!MachiningProject.PacePlayer.IsRunning + && !MachiningProject.PacePlayer.IsFinished) + { + MachiningProject.PacePlayer.Resume(); + } + }).ShowIfCatched(this); + } + public async Task Pause() + { + await Task.Run(() => { - MachiningProject.PacePlayer.Resume(); - } + MachiningProject?.PacePlayer.Pause(); + }).ShowIfCatched(this); } - public void Pause() + public async Task RunToLineEnd() { - MachiningProject?.PacePlayer.Pause(); + await Task.Run(() => + { + MachiningProject?.NcRunner.RunToLineEnd(); + }).ShowIfCatched(this); } - public void RunToLineEnd() + public async Task RunToNextPace() { - MachiningProject?.NcRunner.RunToLineEnd(); + await Task.Run(() => + { + MachiningProject?.PacePlayer.RunToNextPace(); + }).ShowIfCatched(this); } - public void RunToNextPace() + public async Task Break() { - MachiningProject?.PacePlayer.RunToNextPace(); - } - public void Break() - { - MachiningProject?.PacePlayer.Terminate(); + await Task.Run(() => + { + MachiningProject?.PacePlayer.Terminate(); + }).ShowIfCatched(this); } public async Task Reset() { - await Task.Run(() => { + await Task.Run(() => + { MachiningProject?.PacePlayer.Reset(); }).ShowIfCatched(this); } diff --git a/App/wwwroot/HiAPI-docsite/index.json b/App/wwwroot/HiAPI-docsite/index.json index 8c236c0..71a7b04 100644 --- a/App/wwwroot/HiAPI-docsite/index.json +++ b/App/wwwroot/HiAPI-docsite/index.json @@ -2012,7 +2012,7 @@ "api/Hi.MachiningSteps.MachiningStep.html": { "href": "api/Hi.MachiningSteps.MachiningStep.html", "title": "Class MachiningStep | HiAPI-C# 2025", - "summary": "Class MachiningStep Namespace Hi.MachiningSteps Assembly HiMech.dll Represents a machining step enriched with physics, mapping and source metadata. public class MachiningStep : IGetIndexedFileLine, IFlexDictionaryHost, IGetFeedrate, IGetSpindleSpeed, IGetRgbWithPriority Inheritance object MachiningStep Implements IGetIndexedFileLine IFlexDictionaryHost IGetFeedrate IGetSpindleSpeed IGetRgbWithPriority Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) FlexDictionaryUtil.CallFlexDictionary(IFlexDictionaryHost) FlexDictionaryUtil.GetFlexDictionaryBytes(IFlexDictionaryHost, IntegerKeyDictionaryConverter) FlexDictionaryUtil.WriteFlexDictionary(IFlexDictionaryHost, BinaryWriter, IntegerKeyDictionaryConverter) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors MachiningStep(IMachiningStepHost, int, IIndexedFileLine, MachineMotionStep, MillingPhysicsStep, CollidedKeyPair[]) Initializes a new instance of the MachiningStep class. public MachiningStep(IMachiningStepHost host, int stepIndex, IIndexedFileLine sourceCommand, MachineMotionStep machiningStep, MillingPhysicsStep millingPhysicsStep, MachiningStep.CollidedKeyPair[] collidedKeyPairs) Parameters host IMachiningStepHost The host of the milling step. stepIndex int The index of the step. sourceCommand IIndexedFileLine The source command. machiningStep MachineMotionStep The machine motion step parameters. millingPhysicsStep MillingPhysicsStep The physics result for the step. collidedKeyPairs CollidedKeyPair[] The collided key pairs detected in this step. Properties AccumulatedCraterWear_um Gets the accumulated crater wear in micrometers [Present(\"Accumulated Crater Wear\", \"A.C.Wear\", PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double AccumulatedCraterWear_um { get; } Property Value double AccumulatedFlankWearDepth_um Gets the accumulated flank wear depth in micrometers [Present(\"Accumulated Flank Wear Depth\", \"A.F.Wear.Depth\", PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double AccumulatedFlankWearDepth_um { get; } Property Value double AccumulatedFlankWearWidth_um Gets the accumulated flank wear width in micrometers [Present(\"Accumulated Flank Wear Width\", \"A.F.Wear.Width\", PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double AccumulatedFlankWearWidth_um { get; } Property Value double AccumulatedSpindleEnergyConsumption_kWh Gets the accumulated spindle energy consumption in kilowatt-hours [Present(\"Accumulated Spindle Energy Consumption\", null, PhysicsUnit.kWh, \"G6\")] [JsAce(ClassExt = \"MachiningStep\")] public double AccumulatedSpindleEnergyConsumption_kWh { get; } Property Value double AccumulatedTime Gets the accumulated time. [Present(\"Time\", null, PhysicsUnit.None, \"G\")] [JsAce(ClassExt = \"MachiningStep\")] public TimeSpan AccumulatedTime { get; } Property Value TimeSpan AvgAbsMomentAboutSensorVec3d_Nm Gets the average absolute moment about sensor vector in Newton-meters [Present(\"Avg Abs Moment To Tool About Sensor\", \"Avg-Abs-M-ToTool-Sensor-SR\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public Vec3d AvgAbsMomentAboutSensorVec3d_Nm { get; } Property Value Vec3d AvgAbsMomentXAboutSensorOnSpindleRotationCoordinate_Nm Gets the average absolute moment X about sensor on spindle rotation coordinate in Newton-meters [Present(\"Avg Abs Moment X To Tool About Sensor On Spindle Rotation Coordinate\", \"AvgAbsMx-ToTool-Sensor-SR\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? AvgAbsMomentXAboutSensorOnSpindleRotationCoordinate_Nm { get; } Property Value double? AvgAbsMomentXAboutToolTipOnSpindleRotationCoordinate_Nm Gets the average absolute moment X about tool tip on spindle rotation coordinate in Newton-meters [Present(\"Avg Abs Moment X To Tool About Tool Tip On Spindle Rotation Coordinate\", \"AvgAbsMx-ToTool-Tip-SR\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double AvgAbsMomentXAboutToolTipOnSpindleRotationCoordinate_Nm { get; } Property Value double AvgAbsTorqueByMapping_Nm Gets the average absolute torque by mapping in Newton-meters [Present(\"Avg Abs Torque By Mapping\", \"AvgAbsTorque-Map\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? AvgAbsTorqueByMapping_Nm { get; } Property Value double? AvgAbsTorqueErrorRatioWithMapping numerator is sim value minus mapping value; denominator is the mapping value. [Present(\"Avg Torque Error Ratio by Mapping\", \"Torque-Err-R.\", PhysicsUnit.None, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? AvgAbsTorqueErrorRatioWithMapping { get; } Property Value double? AvgAbsTorqueSignedErrorRelationWithMapping The sign is from sim value minus mapping value. the quantity is Math.Sqrt(err.Square() / Math.Abs(sim * mapping)) [JsAce(ClassExt = \"MachiningStep\")] public double? AvgAbsTorqueSignedErrorRelationWithMapping { get; } Property Value double? AvgAbsTorque_Nm AvgAbsTorqueOnSpindleRotationCoordinate [Present(\"Avg Abs Torque\", \"AvgAbsTorque\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? AvgAbsTorque_Nm { get; } Property Value double? AvgForceToToolOnToolRunningCoordinate_N Gets the average force to tool on tool running coordinate in N. [Present(\"AvgForceToToolOnToolRunningCoordinate\", \"AvgForce-ToTool-TR\", PhysicsUnit.N, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public Vec3d AvgForceToToolOnToolRunningCoordinate_N { get; } Property Value Vec3d AvgForceXToToolOnToolRunningCoordinate_N Gets the average force X to tool on tool running coordinate in N. [JsAce(ClassExt = \"MachiningStep\")] public double? AvgForceXToToolOnToolRunningCoordinate_N { get; } Property Value double? AvgForceYToToolOnToolRunningCoordinate_N Gets the average force Y to tool on tool running coordinate in N. [JsAce(ClassExt = \"MachiningStep\")] public double? AvgForceYToToolOnToolRunningCoordinate_N { get; } Property Value double? AvgForceZToToolOnToolRunningCoordinate_N Gets the average force Z to tool on tool running coordinate in N. [JsAce(ClassExt = \"MachiningStep\")] public double? AvgForceZToToolOnToolRunningCoordinate_N { get; } Property Value double? AvgMomentAboutSensor_Nm Gets the average moment about sensor in Newton-meters [Present(\"Avg Moment To Tool About Sensor\", \"AvgM-ToTool-Sensor-SR\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? AvgMomentAboutSensor_Nm { get; } Property Value double? AvgMomentAboutToolTipOnProgramCoordinate_Nm Gets the average moment about tool tip on program coordinate in Newton-meters [Present(\"Avg Moment To Tool About Tool Tip On Workpiece Program Coordinate\", \"AvgAbsM-ToTool-Tip-W\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public Vec3d AvgMomentAboutToolTipOnProgramCoordinate_Nm { get; } Property Value Vec3d AvgMomentAboutToolTipOnToolRunningCoordinate_Nm Gets the average moment about tool tip on tool running coordinate in Newton-meters [Present(\"Avg Moment To Tool About Tool Tip On Tool Running Coordinate\", \"AvgAbsM-ToTool-Tip-TR\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public Vec3d AvgMomentAboutToolTipOnToolRunningCoordinate_Nm { get; } Property Value Vec3d AvgMomentAboutToolTip_Nm Gets the average moment about tool tip in Newton-meters [Present(\"Avg Moment To Tool About ToolTip\", \"AvgM-ToTool-Tip-SR\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? AvgMomentAboutToolTip_Nm { get; } Property Value double? AvgMomentXyAboutObservationPoint_Nm Gets the average moment XY about observation point in Newton-meters [Present(\"Avg Moment XY To Tool About Sensor\", \"AvgM-ToTool-Sensor.XY\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? AvgMomentXyAboutObservationPoint_Nm { get; } Property Value double? AvgMomentXyByMapping_Nm Gets the average moment XY by mapping in Newton-meters [Present(\"Avg Moment XY By Mapping\", \"AvgM-Map.XY\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? AvgMomentXyByMapping_Nm { get; } Property Value double? AvgMomentXyErrorRatioWithMapping Gets the average moment XY error ratio with mapping. Numerator is sim value minus mapping value; denominator is the mapping value. [Present(\"Avg Moment XY Error Ratio by Mapping\", \"M-XY-Err-R.\", PhysicsUnit.None, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? AvgMomentXyErrorRatioWithMapping { get; } Property Value double? AvgMomentXySignedErrorRelationWithMapping The sign is from sim value minus mapping value. the quantity is Math.Sqrt(err.Square() / Math.Abs(sim * mapping)) [JsAce(ClassExt = \"MachiningStep\")] public double? AvgMomentXySignedErrorRelationWithMapping { get; } Property Value double? BeginSpindleAngle_deg Gets the beginning spindle angle in degrees. [Present(\"Beginning Spindle Angle Shift\", \"Spd. Ang. Shift\", PhysicsUnit.deg, \"F2\")] [JsAce(ClassExt = \"MachiningStep\")] public double BeginSpindleAngle_deg { get; } Property Value double ChipMass_g Gets the chip mass in grams. [JsAce(ClassExt = \"MachiningStep\")] public double? ChipMass_g { get; } Property Value double? ChipMass_mg Gets the chip mass in milligrams. [Present(\"Chip Mass\", null, PhysicsUnit.mg, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? ChipMass_mg { get; } Property Value double? ChipTemperature_C Gets the chip temperature in Celsius [Present(\"Chip Temperature\", \"Chip T.\", PhysicsUnit.C, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? ChipTemperature_C { get; } Property Value double? ChipThickness_mm Gets the chip thickness in mm. [Present(\"Chip Thickness\", null, PhysicsUnit.mm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? ChipThickness_mm { get; } Property Value double? ChipThickness_um Gets the chip thickness in micrometers public double? ChipThickness_um { get; } Property Value double? ChipVolume_mm3 Gets the chip volume in mm³. [Present(\"Chip Volume\", null, PhysicsUnit.mm3, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? ChipVolume_mm3 { get; } Property Value double? Cl Gets the cutter location. [Present(\"Cutter Location\", \"CL\", PhysicsUnit.mm, \"F5\")] public DVec3d Cl { get; } Property Value DVec3d CollidedKeyPairs Gets or sets the collided key pairs if a collision was detected for this step. public MachiningStep.CollidedKeyPair[] CollidedKeyPairs { get; set; } Property Value CollidedKeyPair[] CollisionText A formatted text representing collided key pairs, e.g. \"(A,B);(C,D)\". Returns null when there is no collision. [Present] [JsAce(ClassExt = \"MachiningStep\")] public string CollisionText { get; } Property Value string CutterBodyTemperature_C Gets the cutter body temperature in Celsius [Present(\"Cutter Body Temperature\", \"Ct. Body T.\", PhysicsUnit.C, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? CutterBodyTemperature_C { get; } Property Value double? CutterDermisTemperature_C Gets the cutter dermis temperature in Celsius [Present(\"Cutter Dermis Temperature\", \"Ct. Dermis T.\", PhysicsUnit.C, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? CutterDermisTemperature_C { get; } Property Value double? CuttingDepth_mm Gets the cutting depth in mm. [Present(\"Cutting Depth\", \"ap\", PhysicsUnit.mm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double CuttingDepth_mm { get; } Property Value double CuttingSpeed_mmds Gets the cutting speed in mm/s. [Present(\"Cutting Speed\", \"Vc\", PhysicsUnit.mmds, \"G5\")] [JsAce(ClassExt = \"MachiningStep\")] public double? CuttingSpeed_mmds { get; } Property Value double? CuttingWidth_mm Gets the cutting width in mm. [Present(\"Cutting Width\", \"ae\", PhysicsUnit.mm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double CuttingWidth_mm { get; } Property Value double DeltaTipDeflectionOnToolRunningCoordinate_um Gets the delta tip deflection on tool running coordinate in micrometers [Present(\"Delta Tip Deflection On Tool Running Coordinate\", \"Dlt.Df.-Tip-TR\", PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public Vec3d DeltaTipDeflectionOnToolRunningCoordinate_um { get; } Property Value Vec3d FeedPerCycle_mm Gets the feed per cycle in mm. [Present(\"Feed per Cycle\", \"frc\", PhysicsUnit.mm, \"G5\")] [JsAce(ClassExt = \"MachiningStep\")] public double FeedPerCycle_mm { get; } Property Value double FeedPerTooth_mm Gets the feed per tooth in mm. [Present(\"Feed per Tooth\", \"frt\", PhysicsUnit.mm, \"G5\")] [JsAce(ClassExt = \"MachiningStep\")] public double FeedPerTooth_mm { get; } Property Value double Feedrate_mmdmin Gets the feedrate in mm/min. [Present(\"Feedrate\", \"F\", PhysicsUnit.mmdmin, \"G5\")] [JsAce(ClassExt = \"MachiningStep\")] public double Feedrate_mmdmin { get; } Property Value double Feedrate in mm/s FileNo Gets the file number. [Present] [JsAce(ClassExt = \"MachiningStep\")] public int? FileNo { get; } Property Value int? FilePath Gets the file path. [Present] [JsAce(ClassExt = \"MachiningStep\")] public string FilePath { get; } Property Value string FlagsText Gets the flags text. [Present] [JsAce(ClassExt = \"MachiningStep\")] public string FlagsText { get; } Property Value string FlexDictionary Gets or sets the flexible dictionary. public Dictionary FlexDictionary { get; set; } Property Value Dictionary FrictionPower_W friction power to workpiece per cycle. the unit is watt. [JsAce(ClassExt = \"MachiningStep\")] public double? FrictionPower_W { get; } Property Value double? Host Gets or sets the host of the milling step. public IMachiningStepHost Host { get; set; } Property Value IMachiningStepHost InfInsistentSpindlePowerRatio Continuous spindle power ratio: input power / time-unlimited maximum power per spindle capability. [Present(\"Continue Spindle Power Ratio\", \"Cont.Spd.Pow.R.\", PhysicsUnit.None, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? InfInsistentSpindlePowerRatio { get; } Property Value double? InfInsistentSpindleTorqueRatio Gets the infinite insistent spindle torque ratio [Present(\"Continue Spindle Torque Ratio\", \"Cont.Spd.Torque-R.\", PhysicsUnit.None, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? InfInsistentSpindleTorqueRatio { get; } Property Value double? InstantCraterWear_um Gets the instant crater wear in micrometers [Present(\"Instant Crater Wear\", \"I.C.Wear\", PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? InstantCraterWear_um { get; } Property Value double? IsTouched Gets whether the step is touched. [Present(\"Is Touched\", null, PhysicsUnit.None, \"G\")] [JsAce(ClassExt = \"MachiningStep\")] public bool IsTouched { get; } Property Value bool this[string] Gets or sets a value in the flexible dictionary by key. public object this[string key] { get; set; } Parameters key string The key to look up. Property Value object The value associated with the key, or null if not found. LineNo Gets the line number. [Present] [JsAce(ClassExt = \"MachiningStep\")] public int? LineNo { get; } Property Value int? LineText Gets the line text. [Present] [JsAce(ClassExt = \"MachiningStep\")] public string LineText { get; } Property Value string MachineMotionStep Gets or sets the machining step. public MachineMotionStep MachineMotionStep { get; set; } Property Value MachineMotionStep MachiningTool Gets the machining tool used for this milling step. public IMachiningTool MachiningTool { get; } Property Value IMachiningTool MaxAbsForce_N Max absolute force at the rotation cycle. [Present(\"Max Absolute Force\", \"Max Abs F.\", PhysicsUnit.N, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? MaxAbsForce_N { get; } Property Value double? MaxBottomEdgeDeflectionOnToolRunningCoordinate_mm Gets the maximum bottom edge deflection on tool running coordinate in millimeters [JsAce(ClassExt = \"MachiningStep\")] public Vec3d MaxBottomEdgeDeflectionOnToolRunningCoordinate_mm { get; } Property Value Vec3d MaxForceOnToolRunningCoordinate_N Gets the maximum force on tool running coordinate in N. public Vec3d MaxForceOnToolRunningCoordinate_N { get; } Property Value Vec3d MaxMomentAboutSensor_Nm Gets the maximum moment about sensor in Newton-meters [Present(\"Max Moment To Tool About Sensor\", \"MaxM-ToTool-Sensor-SR\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double MaxMomentAboutSensor_Nm { get; } Property Value double MaxMomentAboutToolTip_Nm Gets the maximum moment about tool tip in Newton-meters [Present(\"Max Moment To Tool About ToolTip\", \"MaxM-ToTool-Tip-SR\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double MaxMomentAboutToolTip_Nm { get; } Property Value double MaxSpindlePowerRatio Maximum spindle power ratio: input power / instantaneous maximum power per spindle capability. [Present(\"Max Spindle Power Ratio\", \"Max.Spd.Pow.R.\", PhysicsUnit.None, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? MaxSpindlePowerRatio { get; } Property Value double? MaxSpindleTorqueRatio Gets the maximum spindle torque ratio [Present(\"Max Spindle Torque Ratio\", \"Max.Spd.Torque-R.\", PhysicsUnit.None, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? MaxSpindleTorqueRatio { get; } Property Value double? MaxTipDeflectionOnToolRunningCoordinate_mm Gets the maximum tip deflection on tool running coordinate in millimeters [JsAce(ClassExt = \"MachiningStep\")] public Vec3d MaxTipDeflectionOnToolRunningCoordinate_mm { get; } Property Value Vec3d MaxTipDeflectionOnToolRunningCoordinate_um Gets the maximum tip deflection on tool running coordinate in micrometers [Present(\"Max Tip Deflection On Tool Running Coordinate\", \"Max.Df.-Tip-TR\", PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public Vec3d MaxTipDeflectionOnToolRunningCoordinate_um { get; } Property Value Vec3d MillingPhysicsStep Gets or sets the milling physics step. public MillingPhysicsStep MillingPhysicsStep { get; set; } Property Value MillingPhysicsStep MillingStepLuggage Get luggage by sequencing loading performance optimization. public MillingStepLuggage MillingStepLuggage { get; } Property Value MillingStepLuggage MoveOnProgramCoordinate Gets the move on program coordinate. [Present(\"Move On Workpiece Program Coordinate\", \"Move-W\", PhysicsUnit.mm, \"F4\")] [JsAce(ClassExt = \"MachiningStep\")] public Vec3d MoveOnProgramCoordinate { get; } Property Value Vec3d MovingLength_mm Gets the moving length in mm. [Present(\"Move Length\", \"Move Len.\", PhysicsUnit.mm, \"F4\")] [JsAce(ClassExt = \"MachiningStep\")] public double MovingLength_mm { get; } Property Value double Mrr_mm3ds Gets the material removal rate in mm³/s. [Present(\"MRR\", null, PhysicsUnit.mm3ds, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double Mrr_mm3ds { get; } Property Value double ProgramSideCusp_um Gets the program side cusp in micrometers. Side cusp without deformation. The value is count by feed per tooth and the tool radius. [Present(\"Program Side Cusp\", null, PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double ProgramSideCusp_um { get; } Property Value double ReCutDepth_um Gets or sets the recut depth in micrometers. [Present(\"Re-Cut Depth on Bottom Edge on Tool Running Coordinate\", \"Re-Cut Depth\", PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double ReCutDepth_um { get; } Property Value double SideCuspList_um Gets the list of side cusps in micrometers. [JsAce(ClassExt = \"MachiningStep\")] public List SideCuspList_um { get; } Property Value List SourceCommand Gets or sets the source command. public IIndexedFileLine SourceCommand { get; set; } Property Value IIndexedFileLine SpindleCyclePeriod_s Gets the spindle cycle period in seconds. [Present(\"Spindle Cycle Period\", null, PhysicsUnit.sec, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double SpindleCyclePeriod_s { get; } Property Value double SpindleInputPower_W Input spindle power in watts: energy entering the spindle. [Present(\"Spindle Input Power\", null, PhysicsUnit.watt, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double SpindleInputPower_W { get; } Property Value double Input spindle power in Watts. SpindleOutputPower_W Spindle output power in watts (axial power taken by workpiece). Energy at the cutting end after spindle losses; causes workpiece/chip deformation and temperature rise. [Present(\"Spindle Output Power\", null, PhysicsUnit.watt, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double SpindleOutputPower_W { get; } Property Value double SpindleSpeed_rpm Gets the spindle speed in RPM. [Present(\"Spindle Speed\", \"S\", PhysicsUnit.rpm, \"G5\")] [JsAce(ClassExt = \"MachiningStep\")] public double SpindleSpeed_rpm { get; } Property Value double Spindle speed in rad/s SpindleTemperature_C Gets the spindle temperature in Celsius [Present(\"Spindle Temperature\", \"Spd.Temp.\", PhysicsUnit.C, \"G2\")] [JsAce(ClassExt = \"MachiningStep\")] public double? SpindleTemperature_C { get; } Property Value double? SpindleWorkingTemperatureRatio Gets the spindle working temperature ratio [Present(\"Spindle Working Temperature Ratio\", \"Spd.Temp.R.\", PhysicsUnit.None, \"G2\")] [JsAce(ClassExt = \"MachiningStep\")] public double? SpindleWorkingTemperatureRatio { get; } Property Value double? StepDuration Gets the step duration. [Present(\"Step Duration\", \"duration\", PhysicsUnit.sec, \"ss\\\\.ffffff\")] [JsAce(ClassExt = \"MachiningStep\")] public TimeSpan StepDuration { get; } Property Value TimeSpan StepIndex Gets the index of the step. [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] [Present(\"Step Index\", \"S.I.\", PhysicsUnit.None, \"G\")] public int StepIndex { get; } Property Value int ThermalStress_MPa Gets the thermal stress in MPa [Present(\"Thermal Stress\", \"Th. S.\", PhysicsUnit.MPa, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? ThermalStress_MPa { get; } Property Value double? ThermalYieldRatio Gets the thermal yield ratio [Present(\"Thermal Yield Ratio\", \"Th. Yield R.\", PhysicsUnit.None, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? ThermalYieldRatio { get; } Property Value double? TipDeflectionsOnToolRunningCoordinate_um Gets the tip deflections on tool running coordinate in micrometers [JsAce(ClassExt = \"MachiningStep\")] public List TipDeflectionsOnToolRunningCoordinate_um { get; } Property Value List ToolId Gets the tool ID. [Present(\"Tool ID\", \"T\", PhysicsUnit.None, \"G\")] [JsAce(ClassExt = \"MachiningStep\")] public int ToolId { get; } Property Value int ToothArcDuration_s Gets the tooth arc duration in seconds. [Present(\"Tooth Arc Duration\", null, PhysicsUnit.sec, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double ToothArcDuration_s { get; } Property Value double ToothSeqOnToolRunningCoordinate Gets the sequence pair of transformation matrices representing tooth positions on the tool running coordinate system. public SeqPair ToothSeqOnToolRunningCoordinate { get; } Property Value SeqPair WorkpieceDermisTemperature_C Gets the workpiece dermis temperature in Celsius [Present(\"Workpiece Dermis Temperature\", \"W. Dermis T.\", PhysicsUnit.C, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? WorkpieceDermisTemperature_C { get; } Property Value double? WorkpiecePlasticDepth_um Gets the workpiece plastic depth in micrometers [Present(\"Workpiece Plastic Deformation Depth\", \"W.P.Depth\", PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double WorkpiecePlasticDepth_um { get; } Property Value double YieldingStressRatio Gets the yielding stress ratio [Present(\"Yielding Stress Ratio\", \"Y-Stress-R.\", PhysicsUnit.None, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? YieldingStressRatio { get; } Property Value double? Methods GetCutterDermisAvgTemperature_C(double) Gets the average cutter dermis temperature in Celsius at the specified depth. [JsAce(ClassExt = \"MachiningStep\")] public double GetCutterDermisAvgTemperature_C(double depth_mm) Parameters depth_mm double The depth in millimeters Returns double Average temperature in Celsius GetCutterDermisTemperature_C(double) Gets the cutter dermis temperature in Celsius at the specified depth. [JsAce(ClassExt = \"MachiningStep\")] public double GetCutterDermisTemperature_C(double depth_mm) Parameters depth_mm double The depth in millimeters Returns double Temperature in Celsius GetFeedrate_mmds() Gets the program feedrate in millimeters per second. public double GetFeedrate_mmds() Returns double Feedrate in mm/s GetIndexedFileLine() Gets the file line associated with this object. public IndexedFileLine GetIndexedFileLine() Returns IndexedFileLine The file line object. GetKeyToQuantityNativeDictionary(IMachiningChain) Internal use. public static ConcurrentDictionary> GetKeyToQuantityNativeDictionary(IMachiningChain machiningChain) Parameters machiningChain IMachiningChain Returns ConcurrentDictionary> GetMcValue(IMachiningChain, string) Gets the MC value for the specified tag in the machining chain. public double? GetMcValue(IMachiningChain chain, string tag) Parameters chain IMachiningChain The machining chain. tag string The tag to look up. Returns double? The MC value for the specified tag. GetMcValue(int) Gets the MC value at the specified index. [JsAce(ClassExt = \"MachiningStep\")] public double? GetMcValue(int index) Parameters index int The index to look up. Returns double? The MC value at the specified index. GetRgbWithPriority(out Vec3d, out double) Gets the RGB color and priority for the milling step. public void GetRgbWithPriority(out Vec3d rgb, out double priority) Parameters rgb Vec3d The RGB color vector. priority double The priority value. GetSpindleDirection() Gets the spindle direction for this milling step. [Present(\"Spindle Direction\", \"Spd.Dir.\", PhysicsUnit.None, \"G\")] [JsAce(ClassExt = \"MachiningStep\")] public SpindleDirection GetSpindleDirection() Returns SpindleDirection GetSpindleSpeed_radds() Gets the spindle speed in radians per second. public double GetSpindleSpeed_radds() Returns double Spindle speed in rad/s" + "summary": "Class MachiningStep Namespace Hi.MachiningSteps Assembly HiMech.dll Represents a machining step enriched with physics, mapping and source metadata. public class MachiningStep : IGetIndexedFileLine, IFlexDictionaryHost, IGetFeedrate, IGetSpindleSpeed, IGetRgbWithPriority Inheritance object MachiningStep Implements IGetIndexedFileLine IFlexDictionaryHost IGetFeedrate IGetSpindleSpeed IGetRgbWithPriority Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) FlexDictionaryUtil.CallFlexDictionary(IFlexDictionaryHost) FlexDictionaryUtil.GetFlexDictionaryBytes(IFlexDictionaryHost, IntegerKeyDictionaryConverter) FlexDictionaryUtil.WriteFlexDictionary(IFlexDictionaryHost, BinaryWriter, IntegerKeyDictionaryConverter) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors MachiningStep(IMachiningStepHost, int, IIndexedFileLine, MachineMotionStep, MillingPhysicsStep, CollidedKeyPair[]) Initializes a new instance of the MachiningStep class. public MachiningStep(IMachiningStepHost host, int stepIndex, IIndexedFileLine sourceCommand, MachineMotionStep machiningStep, MillingPhysicsStep millingPhysicsStep, MachiningStep.CollidedKeyPair[] collidedKeyPairs) Parameters host IMachiningStepHost The host of the milling step. stepIndex int The index of the step. sourceCommand IIndexedFileLine The source command. machiningStep MachineMotionStep The machine motion step parameters. millingPhysicsStep MillingPhysicsStep The physics result for the step. collidedKeyPairs CollidedKeyPair[] The collided key pairs detected in this step. Properties AccumulatedCraterWear_um Gets the accumulated crater wear in micrometers [Present(\"Accumulated Crater Wear\", \"A.C.Wear\", PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double AccumulatedCraterWear_um { get; } Property Value double AccumulatedFlankWearDepth_um Gets the accumulated flank wear depth in micrometers [Present(\"Accumulated Flank Wear Depth\", \"A.F.Wear.Depth\", PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double AccumulatedFlankWearDepth_um { get; } Property Value double AccumulatedFlankWearWidth_um Gets the accumulated flank wear width in micrometers [Present(\"Accumulated Flank Wear Width\", \"A.F.Wear.Width\", PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double AccumulatedFlankWearWidth_um { get; } Property Value double AccumulatedSpindleEnergyConsumption_kWh Gets the accumulated spindle energy consumption in kilowatt-hours [Present(\"Accumulated Spindle Energy Consumption\", null, PhysicsUnit.kWh, \"G6\")] [JsAce(ClassExt = \"MachiningStep\")] public double AccumulatedSpindleEnergyConsumption_kWh { get; } Property Value double AccumulatedTime Gets the accumulated time. [Present(\"Time\", null, PhysicsUnit.None, \"G\")] [JsAce(ClassExt = \"MachiningStep\")] public TimeSpan AccumulatedTime { get; } Property Value TimeSpan AvgAbsMomentAboutSensorVec3d_Nm Gets the average absolute moment about sensor vector in Newton-meters [Present(\"Avg Abs Moment To Tool About Sensor\", \"Avg-Abs-M-ToTool-Sensor-SR\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public Vec3d AvgAbsMomentAboutSensorVec3d_Nm { get; } Property Value Vec3d AvgAbsMomentXAboutSensorOnSpindleRotationCoordinate_Nm Gets the average absolute moment X about sensor on spindle rotation coordinate in Newton-meters [Present(\"Avg Abs Moment X To Tool About Sensor On Spindle Rotation Coordinate\", \"AvgAbsMx-ToTool-Sensor-SR\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? AvgAbsMomentXAboutSensorOnSpindleRotationCoordinate_Nm { get; } Property Value double? AvgAbsMomentXAboutToolTipOnSpindleRotationCoordinate_Nm Gets the average absolute moment X about tool tip on spindle rotation coordinate in Newton-meters [Present(\"Avg Abs Moment X To Tool About Tool Tip On Spindle Rotation Coordinate\", \"AvgAbsMx-ToTool-Tip-SR\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double AvgAbsMomentXAboutToolTipOnSpindleRotationCoordinate_Nm { get; } Property Value double AvgAbsTorqueByMapping_Nm Gets the average absolute torque by mapping in Newton-meters [Present(\"Avg Abs Torque By Mapping\", \"AvgAbsTorque-Map\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? AvgAbsTorqueByMapping_Nm { get; } Property Value double? AvgAbsTorqueErrorRatioWithMapping numerator is sim value minus mapping value; denominator is the mapping value. [Present(\"Avg Torque Error Ratio by Mapping\", \"Torque-Err-R.\", PhysicsUnit.None, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? AvgAbsTorqueErrorRatioWithMapping { get; } Property Value double? AvgAbsTorqueSignedErrorRelationWithMapping The sign is from sim value minus mapping value. the quantity is Math.Sqrt(err.Square() / Math.Abs(sim * mapping)) [JsAce(ClassExt = \"MachiningStep\")] public double? AvgAbsTorqueSignedErrorRelationWithMapping { get; } Property Value double? AvgAbsTorque_Nm AvgAbsTorqueOnSpindleRotationCoordinate [Present(\"Avg Abs Torque\", \"AvgAbsTorque\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? AvgAbsTorque_Nm { get; } Property Value double? AvgForceToToolOnToolRunningCoordinate_N Gets the average force to tool on tool running coordinate in N. [Present(\"AvgForceToToolOnToolRunningCoordinate\", \"AvgForce-ToTool-TR\", PhysicsUnit.N, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public Vec3d AvgForceToToolOnToolRunningCoordinate_N { get; } Property Value Vec3d AvgForceXToToolOnToolRunningCoordinate_N Gets the average force X to tool on tool running coordinate in N. [JsAce(ClassExt = \"MachiningStep\")] public double? AvgForceXToToolOnToolRunningCoordinate_N { get; } Property Value double? AvgForceYToToolOnToolRunningCoordinate_N Gets the average force Y to tool on tool running coordinate in N. [JsAce(ClassExt = \"MachiningStep\")] public double? AvgForceYToToolOnToolRunningCoordinate_N { get; } Property Value double? AvgForceZToToolOnToolRunningCoordinate_N Gets the average force Z to tool on tool running coordinate in N. [JsAce(ClassExt = \"MachiningStep\")] public double? AvgForceZToToolOnToolRunningCoordinate_N { get; } Property Value double? AvgMomentAboutSensor_Nm Gets the average moment about sensor in Newton-meters [Present(\"Avg Moment To Tool About Sensor\", \"AvgM-ToTool-Sensor-SR\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? AvgMomentAboutSensor_Nm { get; } Property Value double? AvgMomentAboutToolTipOnProgramCoordinate_Nm Gets the average moment about tool tip on program coordinate in Newton-meters [Present(\"Avg Moment To Tool About Tool Tip On Workpiece Program Coordinate\", \"AvgAbsM-ToTool-Tip-W\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public Vec3d AvgMomentAboutToolTipOnProgramCoordinate_Nm { get; } Property Value Vec3d AvgMomentAboutToolTipOnToolRunningCoordinate_Nm Gets the average moment about tool tip on tool running coordinate in Newton-meters [Present(\"Avg Moment To Tool About Tool Tip On Tool Running Coordinate\", \"AvgAbsM-ToTool-Tip-TR\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public Vec3d AvgMomentAboutToolTipOnToolRunningCoordinate_Nm { get; } Property Value Vec3d AvgMomentAboutToolTip_Nm Gets the average moment about tool tip in Newton-meters [Present(\"Avg Moment To Tool About ToolTip\", \"AvgM-ToTool-Tip-SR\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? AvgMomentAboutToolTip_Nm { get; } Property Value double? AvgMomentXyAboutObservationPoint_Nm Gets the average moment XY about observation point in Newton-meters [Present(\"Avg Moment XY To Tool About Sensor\", \"AvgM-ToTool-Sensor.XY\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? AvgMomentXyAboutObservationPoint_Nm { get; } Property Value double? AvgMomentXyByMapping_Nm Gets the average moment XY by mapping in Newton-meters [Present(\"Avg Moment XY By Mapping\", \"AvgM-Map.XY\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? AvgMomentXyByMapping_Nm { get; } Property Value double? AvgMomentXyErrorRatioWithMapping Gets the average moment XY error ratio with mapping. Numerator is sim value minus mapping value; denominator is the mapping value. [Present(\"Avg Moment XY Error Ratio by Mapping\", \"M-XY-Err-R.\", PhysicsUnit.None, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? AvgMomentXyErrorRatioWithMapping { get; } Property Value double? AvgMomentXySignedErrorRelationWithMapping The sign is from sim value minus mapping value. the quantity is Math.Sqrt(err.Square() / Math.Abs(sim * mapping)) [JsAce(ClassExt = \"MachiningStep\")] public double? AvgMomentXySignedErrorRelationWithMapping { get; } Property Value double? BeginSpindleAngle_deg Gets the beginning spindle angle in degrees. [Present(\"Beginning Spindle Angle Shift\", \"Spd. Ang. Shift\", PhysicsUnit.deg, \"F2\")] [JsAce(ClassExt = \"MachiningStep\")] public double BeginSpindleAngle_deg { get; } Property Value double ChipMass_g Gets the chip mass in grams. [JsAce(ClassExt = \"MachiningStep\")] public double? ChipMass_g { get; } Property Value double? ChipMass_mg Gets the chip mass in milligrams. [Present(\"Chip Mass\", null, PhysicsUnit.mg, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? ChipMass_mg { get; } Property Value double? ChipTemperature_C Gets the chip temperature in Celsius [Present(\"Chip Temperature\", \"Chip T.\", PhysicsUnit.C, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? ChipTemperature_C { get; } Property Value double? ChipThickness_mm Gets the chip thickness in mm. [Present(\"Chip Thickness\", null, PhysicsUnit.mm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? ChipThickness_mm { get; } Property Value double? ChipThickness_um Gets the chip thickness in micrometers public double? ChipThickness_um { get; } Property Value double? ChipVolume_mm3 Gets the chip volume in mm³. [Present(\"Chip Volume\", null, PhysicsUnit.mm3, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? ChipVolume_mm3 { get; } Property Value double? Cl Gets the cutter location. [Present(\"Cutter Location\", \"CL\", PhysicsUnit.mm, \"F5\")] public DVec3d Cl { get; } Property Value DVec3d CollidedKeyPairs Gets or sets the collided key pairs if a collision was detected for this step. public MachiningStep.CollidedKeyPair[] CollidedKeyPairs { get; set; } Property Value CollidedKeyPair[] CollisionText A formatted text representing collided key pairs, e.g. \"(A,B);(C,D)\". Returns null when there is no collision. [Present] [JsAce(ClassExt = \"MachiningStep\")] public string CollisionText { get; } Property Value string CutterBodyTemperature_C Gets the cutter body temperature in Celsius [Present(\"Cutter Body Temperature\", \"Ct. Body T.\", PhysicsUnit.C, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? CutterBodyTemperature_C { get; } Property Value double? CutterDermisTemperature_C Gets the cutter dermis temperature in Celsius [Present(\"Cutter Dermis Temperature\", \"Ct. Dermis T.\", PhysicsUnit.C, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? CutterDermisTemperature_C { get; } Property Value double? CuttingDepth_mm Gets the cutting depth in mm. [Present(\"Cutting Depth\", \"ap\", PhysicsUnit.mm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double CuttingDepth_mm { get; } Property Value double CuttingSpeed_mmds Gets the cutting speed in mm/s. The speed on the cutter outer radius by the spindle rotating. [Present(\"Cutting Speed\", \"Vc\", PhysicsUnit.mmds, \"G5\")] [JsAce(ClassExt = \"MachiningStep\")] public double? CuttingSpeed_mmds { get; } Property Value double? CuttingWidth_mm Gets the cutting width in mm. [Present(\"Cutting Width\", \"ae\", PhysicsUnit.mm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double CuttingWidth_mm { get; } Property Value double DeltaTipDeflectionOnToolRunningCoordinate_um Gets the delta tip deflection on tool running coordinate in micrometers [Present(\"Delta Tip Deflection On Tool Running Coordinate\", \"Dlt.Df.-Tip-TR\", PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public Vec3d DeltaTipDeflectionOnToolRunningCoordinate_um { get; } Property Value Vec3d FeedPerCycle_mm Gets the feed per cycle in mm. [Present(\"Feed per Cycle\", \"frc\", PhysicsUnit.mm, \"G5\")] [JsAce(ClassExt = \"MachiningStep\")] public double FeedPerCycle_mm { get; } Property Value double FeedPerTooth_mm Gets the feed per tooth in mm. [Present(\"Feed per Tooth\", \"frt\", PhysicsUnit.mm, \"G5\")] [JsAce(ClassExt = \"MachiningStep\")] public double FeedPerTooth_mm { get; } Property Value double Feedrate_mmdmin Gets the feedrate in mm/min. [Present(\"Feedrate\", \"F\", PhysicsUnit.mmdmin, \"G5\")] [JsAce(ClassExt = \"MachiningStep\")] public double Feedrate_mmdmin { get; } Property Value double Feedrate in mm/s FileNo Gets the file number. [Present] [JsAce(ClassExt = \"MachiningStep\")] public int? FileNo { get; } Property Value int? FilePath Gets the file path. [Present] [JsAce(ClassExt = \"MachiningStep\")] public string FilePath { get; } Property Value string FlagsText Gets the flags text. [Present] [JsAce(ClassExt = \"MachiningStep\")] public string FlagsText { get; } Property Value string FlexDictionary Gets or sets the flexible dictionary. public Dictionary FlexDictionary { get; set; } Property Value Dictionary FrictionPower_W friction power takes by workpiece per cycle. the unit is watt. [JsAce(ClassExt = \"MachiningStep\")] public double? FrictionPower_W { get; } Property Value double? Host Gets or sets the host of the milling step. public IMachiningStepHost Host { get; set; } Property Value IMachiningStepHost InfInsistentSpindlePowerRatio Continuous spindle power ratio: input power / time-unlimited maximum power per spindle capability. [Present(\"Continue Spindle Power Ratio\", \"Cont.Spd.Pow.R.\", PhysicsUnit.None, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? InfInsistentSpindlePowerRatio { get; } Property Value double? InfInsistentSpindleTorqueRatio Gets the infinite insistent spindle torque ratio [Present(\"Continue Spindle Torque Ratio\", \"Cont.Spd.Torque-R.\", PhysicsUnit.None, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? InfInsistentSpindleTorqueRatio { get; } Property Value double? InstantCraterWear_um Gets the instant crater wear in micrometers [Present(\"Instant Crater Wear\", \"I.C.Wear\", PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? InstantCraterWear_um { get; } Property Value double? IsTouched Gets whether the step is touched. [Present(\"Is Touched\", null, PhysicsUnit.None, \"G\")] [JsAce(ClassExt = \"MachiningStep\")] public bool IsTouched { get; } Property Value bool this[string] Gets or sets a value in the flexible dictionary by key. public object this[string key] { get; set; } Parameters key string The key to look up. Property Value object The value associated with the key, or null if not found. LineNo Gets the line number. [Present] [JsAce(ClassExt = \"MachiningStep\")] public int? LineNo { get; } Property Value int? LineText Gets the line text. [Present] [JsAce(ClassExt = \"MachiningStep\")] public string LineText { get; } Property Value string MachineMotionStep Gets or sets the machining step. public MachineMotionStep MachineMotionStep { get; set; } Property Value MachineMotionStep MachiningTool Gets the machining tool used for this milling step. public IMachiningTool MachiningTool { get; } Property Value IMachiningTool MaxAbsForce_N Max absolute force at the rotation cycle. [Present(\"Max Absolute Force\", \"Max Abs F.\", PhysicsUnit.N, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? MaxAbsForce_N { get; } Property Value double? MaxBottomEdgeDeflectionOnToolRunningCoordinate_mm Gets the maximum bottom edge deflection on tool running coordinate in millimeters It only make sense in end mill. The z value of this factor is re-cut depth. [JsAce(ClassExt = \"MachiningStep\")] public Vec3d MaxBottomEdgeDeflectionOnToolRunningCoordinate_mm { get; } Property Value Vec3d MaxForceOnToolRunningCoordinate_N Gets the maximum force on tool running coordinate in N. public Vec3d MaxForceOnToolRunningCoordinate_N { get; } Property Value Vec3d MaxMomentAboutSensor_Nm Gets the maximum moment about sensor in Newton-meters [Present(\"Max Moment To Tool About Sensor\", \"MaxM-ToTool-Sensor-SR\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double MaxMomentAboutSensor_Nm { get; } Property Value double MaxMomentAboutToolTip_Nm Gets the maximum moment about tool tip in Newton-meters [Present(\"Max Moment To Tool About ToolTip\", \"MaxM-ToTool-Tip-SR\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double MaxMomentAboutToolTip_Nm { get; } Property Value double MaxSpindlePowerRatio Maximum spindle power ratio: input power / instantaneous maximum power per spindle capability. [Present(\"Max Spindle Power Ratio\", \"Max.Spd.Pow.R.\", PhysicsUnit.None, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? MaxSpindlePowerRatio { get; } Property Value double? MaxSpindleTorqueRatio Gets the maximum spindle torque ratio [Present(\"Max Spindle Torque Ratio\", \"Max.Spd.Torque-R.\", PhysicsUnit.None, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? MaxSpindleTorqueRatio { get; } Property Value double? MaxTipDeflectionOnToolRunningCoordinate_mm Gets the maximum tip deflection on tool running coordinate in millimeters [JsAce(ClassExt = \"MachiningStep\")] public Vec3d MaxTipDeflectionOnToolRunningCoordinate_mm { get; } Property Value Vec3d MaxTipDeflectionOnToolRunningCoordinate_um Gets the maximum tip deflection on tool running coordinate in micrometers [Present(\"Max Tip Deflection On Tool Running Coordinate\", \"Max.Df.-Tip-TR\", PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public Vec3d MaxTipDeflectionOnToolRunningCoordinate_um { get; } Property Value Vec3d MillingPhysicsStep Gets or sets the milling physics step. public MillingPhysicsStep MillingPhysicsStep { get; set; } Property Value MillingPhysicsStep MillingStepLuggage Get luggage by sequencing loading performance optimization. public MillingStepLuggage MillingStepLuggage { get; } Property Value MillingStepLuggage MoveOnProgramCoordinate Gets the move on program coordinate. [Present(\"Move On Workpiece Program Coordinate\", \"Move-W\", PhysicsUnit.mm, \"F4\")] [JsAce(ClassExt = \"MachiningStep\")] public Vec3d MoveOnProgramCoordinate { get; } Property Value Vec3d MovingLength_mm Gets the moving length in mm. [Present(\"Move Length\", \"Move Len.\", PhysicsUnit.mm, \"F4\")] [JsAce(ClassExt = \"MachiningStep\")] public double MovingLength_mm { get; } Property Value double Mrr_mm3ds Gets the material removal rate in mm³/s. [Present(\"MRR\", null, PhysicsUnit.mm3ds, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double Mrr_mm3ds { get; } Property Value double ProgramSideCusp_um Gets the program side cusp in micrometers. Side cusp without deformation. The value is count by feed per tooth and the tool radius. [Present(\"Program Side Cusp\", null, PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double ProgramSideCusp_um { get; } Property Value double ReCutDepth_um Gets or sets the recut depth in micrometers. The recut depth cause the cutting mark by the end mill. The recut depth increased by the cutter radius increased. [Present(\"Re-Cut Depth on Bottom Edge on Tool Running Coordinate\", \"Re-Cut Depth\", PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double ReCutDepth_um { get; } Property Value double SideCuspList_um Gets the list of side cusps in micrometers. [JsAce(ClassExt = \"MachiningStep\")] public List SideCuspList_um { get; } Property Value List SourceCommand Gets or sets the source command. public IIndexedFileLine SourceCommand { get; set; } Property Value IIndexedFileLine SpindleCyclePeriod_s Gets the spindle rotation cycle period in seconds. [Present(\"Spindle Cycle Period\", null, PhysicsUnit.sec, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double SpindleCyclePeriod_s { get; } Property Value double SpindleInputPower_W Input spindle power in watts: energy entering the spindle. [Present(\"Spindle Input Power\", null, PhysicsUnit.watt, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double SpindleInputPower_W { get; } Property Value double Input spindle power in Watts. SpindleOutputPower_W Spindle output power in watts (axial power taken by workpiece). Energy at the cutting end after spindle losses; causes workpiece/chip deformation and temperature rise. [Present(\"Spindle Output Power\", null, PhysicsUnit.watt, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double SpindleOutputPower_W { get; } Property Value double SpindleSpeed_rpm Gets the spindle speed in RPM. [Present(\"Spindle Speed\", \"S\", PhysicsUnit.rpm, \"G5\")] [JsAce(ClassExt = \"MachiningStep\")] public double SpindleSpeed_rpm { get; } Property Value double Spindle speed in rad/s SpindleTemperature_C Gets the spindle temperature in Celsius [Present(\"Spindle Temperature\", \"Spd.Temp.\", PhysicsUnit.C, \"G2\")] [JsAce(ClassExt = \"MachiningStep\")] public double? SpindleTemperature_C { get; } Property Value double? SpindleWorkingTemperatureRatio Gets the spindle working temperature ratio [Present(\"Spindle Working Temperature Ratio\", \"Spd.Temp.R.\", PhysicsUnit.None, \"G2\")] [JsAce(ClassExt = \"MachiningStep\")] public double? SpindleWorkingTemperatureRatio { get; } Property Value double? StepDuration Gets the step duration. [Present(\"Step Duration\", \"duration\", PhysicsUnit.sec, \"ss\\\\.ffffff\")] [JsAce(ClassExt = \"MachiningStep\")] public TimeSpan StepDuration { get; } Property Value TimeSpan StepIndex Gets the index of the step. [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] [Present(\"Step Index\", \"S.I.\", PhysicsUnit.None, \"G\")] public int StepIndex { get; } Property Value int ThermalStress_MPa Gets the thermal stress in MPa [Present(\"Thermal Stress\", \"Th. S.\", PhysicsUnit.MPa, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? ThermalStress_MPa { get; } Property Value double? ThermalYieldRatio Gets the thermal yield ratio [Present(\"Thermal Yield Ratio\", \"Th. Yield R.\", PhysicsUnit.None, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? ThermalYieldRatio { get; } Property Value double? TipDeflectionsOnToolRunningCoordinate_um Gets the tip deflections on tool running coordinate in micrometers [JsAce(ClassExt = \"MachiningStep\")] public List TipDeflectionsOnToolRunningCoordinate_um { get; } Property Value List ToolId Gets the tool ID. [Present(\"Tool ID\", \"T\", PhysicsUnit.None, \"G\")] [JsAce(ClassExt = \"MachiningStep\")] public int ToolId { get; } Property Value int ToothArcDuration_s Gets the tooth arc duration in seconds by the spindle rotation. The value is SpindleCyclePeriod_s div Cutter's teeth number. [Present(\"Tooth Arc Duration\", null, PhysicsUnit.sec, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double ToothArcDuration_s { get; } Property Value double ToothSeqOnToolRunningCoordinate Gets the sequence pair of transformation matrices representing tooth positions on the tool running coordinate system. public SeqPair ToothSeqOnToolRunningCoordinate { get; } Property Value SeqPair WorkpieceDermisTemperature_C Gets the workpiece dermis temperature in Celsius [Present(\"Workpiece Dermis Temperature\", \"W. Dermis T.\", PhysicsUnit.C, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? WorkpieceDermisTemperature_C { get; } Property Value double? WorkpiecePlasticDepth_um Gets the workpiece plastic depth in micrometers. The depth is at the location that the cutting stress is equal to the yielding stress. The cutting stress exert to the workpiece decreased on the depth increased. [Present(\"Workpiece Plastic Deformation Depth\", \"W.P.Depth\", PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double WorkpiecePlasticDepth_um { get; } Property Value double YieldingStressRatio Gets the yielding stress ratio [Present(\"Yielding Stress Ratio\", \"Y-Stress-R.\", PhysicsUnit.None, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? YieldingStressRatio { get; } Property Value double? Methods GetCutterDermisAvgTemperature_C(double) Gets the average cutter dermis temperature in Celsius at the specified depth. [JsAce(ClassExt = \"MachiningStep\")] public double GetCutterDermisAvgTemperature_C(double depth_mm) Parameters depth_mm double The depth in millimeters Returns double Average temperature in Celsius GetCutterDermisTemperature_C(double) Gets the cutter dermis temperature in Celsius at the specified depth. [JsAce(ClassExt = \"MachiningStep\")] public double GetCutterDermisTemperature_C(double depth_mm) Parameters depth_mm double The depth in millimeters Returns double Temperature in Celsius GetFeedrate_mmds() Gets the program feedrate in millimeters per second. public double GetFeedrate_mmds() Returns double Feedrate in mm/s GetIndexedFileLine() Gets the file line associated with this object. public IndexedFileLine GetIndexedFileLine() Returns IndexedFileLine The file line object. GetKeyToQuantityNativeDictionary(IMachiningChain) Internal use. public static ConcurrentDictionary> GetKeyToQuantityNativeDictionary(IMachiningChain machiningChain) Parameters machiningChain IMachiningChain Returns ConcurrentDictionary> GetMcValue(IMachiningChain, string) Gets the MC value for the specified tag in the machining chain. public double? GetMcValue(IMachiningChain chain, string tag) Parameters chain IMachiningChain The machining chain. tag string The tag to look up. Returns double? The MC value for the specified tag. GetMcValue(int) Gets the MC value at the specified index. [JsAce(ClassExt = \"MachiningStep\")] public double? GetMcValue(int index) Parameters index int The index to look up. Returns double? The MC value at the specified index. GetRgbWithPriority(out Vec3d, out double) Gets the RGB color and priority for the milling step. public void GetRgbWithPriority(out Vec3d rgb, out double priority) Parameters rgb Vec3d The RGB color vector. priority double The priority value. GetSpindleDirection() Gets the spindle direction for this milling step. [Present(\"Spindle Direction\", \"Spd.Dir.\", PhysicsUnit.None, \"G\")] [JsAce(ClassExt = \"MachiningStep\")] public SpindleDirection GetSpindleDirection() Returns SpindleDirection GetSpindleSpeed_radds() Gets the spindle speed in radians per second. public double GetSpindleSpeed_radds() Returns double Spindle speed in rad/s" }, "api/Hi.MachiningSteps.MachiningStepUtil.html": { "href": "api/Hi.MachiningSteps.MachiningStepUtil.html", @@ -2867,7 +2867,7 @@ "api/Hi.MillingForces.RakeFacePhysicsBrief.html": { "href": "api/Hi.MillingForces.RakeFacePhysicsBrief.html", "title": "Class RakeFacePhysicsBrief | HiAPI-C# 2025", - "summary": "Class RakeFacePhysicsBrief Namespace Hi.MillingForces Assembly HiMech.dll Physics brief on rake face for milling. public class RakeFacePhysicsBrief Inheritance object RakeFacePhysicsBrief Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors RakeFacePhysicsBrief() Ctor. public RakeFacePhysicsBrief() RakeFacePhysicsBrief(int) Initializes a new instance of the RakeFacePhysicsBrief class with a specified rotation division number. public RakeFacePhysicsBrief(int rotationDivisionNum) Parameters rotationDivisionNum int The number of divisions for rotation calculations. Properties AvgAbsForce_N Gets the average absolute force in Newtons. public double AvgAbsForce_N { get; } Property Value double AvgAbsMomentAboutSensorVec3d_Nm Gets the average absolute moment about the sensor as a 3D vector in Newton-meters. public Vec3d AvgAbsMomentAboutSensorVec3d_Nm { get; } Property Value Vec3d AvgAbsMomentXAboutSensorOnSpindleRotationCoordinate_Nm Gets the average absolute moment about the sensor on spindle rotation coordinate in Newton-meters. public double AvgAbsMomentXAboutSensorOnSpindleRotationCoordinate_Nm { get; } Property Value double AvgAbsMomentXAboutToolTipOnSpindleRotationCoordinate_Nm Gets the average absolute moment about the tool tip on spindle rotation coordinate in Newton-meters. public double AvgAbsMomentXAboutToolTipOnSpindleRotationCoordinate_Nm { get; } Property Value double AvgAbsTorqueOnSpindleRotationCoordinate_Nm Gets the average of abs spindle axial torque on Spindle rotation coordinate. public double AvgAbsTorqueOnSpindleRotationCoordinate_Nm { get; } Property Value double AvgContactEdgeLengthPerFlute_mm Gets the average contact edge length per flute in millimeters. public double AvgContactEdgeLengthPerFlute_mm { get; } Property Value double AvgForceToToolOnToolRunningCoordinate_N Avg cutting force to tool on tool running coordinate. public Vec3d AvgForceToToolOnToolRunningCoordinate_N { get; } Property Value Vec3d AvgMomentAboutSensor_Nm Gets the average moment about the sensor in Newton-meters. public double AvgMomentAboutSensor_Nm { get; } Property Value double AvgMomentAboutToolTipOnProgramCoordinate_Nm Gets the average moment about the tool tip on program coordinate in Newton-meters. public Vec3d AvgMomentAboutToolTipOnProgramCoordinate_Nm { get; } Property Value Vec3d AvgMomentAboutToolTipOnToolRunningCoordinate_Nm Gets the average moment about the tool tip on tool running coordinate in Newton-meters. public Vec3d AvgMomentAboutToolTipOnToolRunningCoordinate_Nm { get; } Property Value Vec3d AvgMomentAboutToolTip_Nm Gets the average moment about the tool tip in the program coordinate system, measured in Newton-meters. public double AvgMomentAboutToolTip_Nm { get; } Property Value double AvgMomentXyAboutObservationPoint Gets the average moment about the tool tip in the program coordinate system, measured in Newton-meters. public double AvgMomentXyAboutObservationPoint { get; } Property Value double AvgRadialForcePerFluteToTool_N Gets the average radial force per flute applied to the tool in Newtons. public double AvgRadialForcePerFluteToTool_N { get; } Property Value double ChipThickness_mm Gets or sets the actual chip thickness in millimeters after cutting. public double ChipThickness_mm { get; } Property Value double ChipVolume_mm3 ChipVolume_mm3 per flute. public double ChipVolume_mm3 { get; } Property Value double DeltaTipDeflectionOnToolRunningCoordinate_mm Gets the delta tip deflection on tool running coordinate in millimeters. public Vec3d DeltaTipDeflectionOnToolRunningCoordinate_mm { get; } Property Value Vec3d FrictionPower_W friction power to workpiece per cycle. the unit is watt. public double FrictionPower_W { get; } Property Value double MaxAbsForce_N Gets the maximum absolute force in Newtons. public double MaxAbsForce_N { get; } Property Value double MaxAxialTorqueOnToolRunningCoordinateZero_Nm Gets the maximum axial torque at the tool running coordinate origin in Newton-meters. public double MaxAxialTorqueOnToolRunningCoordinateZero_Nm { get; } Property Value double MaxCompetingCuttingForceOnToolRunningCoordinate_N Gets the maximum competing cutting force on tool running coordinate in Newtons. This represents the second-strongest force during the cutting cycle. public Vec3d MaxCompetingCuttingForceOnToolRunningCoordinate_N { get; } Property Value Vec3d MaxForceOnToolRunningCoordinate_N Gets the maximum force on the tool running coordinate in Newtons. public Vec3d MaxForceOnToolRunningCoordinate_N { get; } Property Value Vec3d MaxMomentAboutSensor_Nm Gets the maximum moment about the sensor in Newton-meters. public double MaxMomentAboutSensor_Nm { get; } Property Value double MaxMomentAboutToolTip_Nm Gets the maximum moment about the tool tip in Newton-meters. public double MaxMomentAboutToolTip_Nm { get; } Property Value double RakeFaceCycleAvgContactArea_mm2 contact area along cutter outside contact point to circle center direction. The average is for each rotation angle. This property is for computing heat transfer. public double RakeFaceCycleAvgContactArea_mm2 { get; } Property Value double RotationAngleInterval_deg Delta angle in degree. The value is 360 / RotationDivisionNum. public double RotationAngleInterval_deg { get; } Property Value double RotationAngleInterval_rad Delta angle in radian. The value is 2 * pi / RotationDivisionNum. public double RotationAngleInterval_rad { get; } Property Value double RotationDivisionNum Gets the number of divisions used for rotation calculations. public int RotationDivisionNum { get; } Property Value int UncutChipThickness_mm Gets or sets the uncut chip thickness in millimeters. public double UncutChipThickness_mm { get; } Property Value double WorkpiecePlasticDepth_mm Positive value for compression. Negative value for tension. public double WorkpiecePlasticDepth_mm { get; } Property Value double YieldStressMinHeight_mm While computing cutter yielding, the small radial radius near the tool tip may cause singular computation. a small arbitrary gap is set to avoid the singular behavior. public static double YieldStressMinHeight_mm { get; set; } Property Value double YieldingStressRatio Gets the yielding stress ratio. public double YieldingStressRatio { get; } Property Value double Methods GetAbsAxialPower_W() Gets the absolute axial power in Watts. public double GetAbsAxialPower_W() Returns double Absolute axial power in Watts. GetAvgForceToWorkpieceOnProgramCoordinate(MachineMotionStep) Avg cutting force on workpiece coordinate. public Vec3d GetAvgForceToWorkpieceOnProgramCoordinate(MachineMotionStep machineStep) Parameters machineStep MachineMotionStep Returns Vec3d GetAxialPowerTakenByWorkpiece_W() Gets the axial power taken by workpiece in Watts. public double GetAxialPowerTakenByWorkpiece_W() Returns double Axial power taken by workpiece in Watts. GetDeflectionTransformOnWorkpieceGeomCoordinate(IMachiningTool, WorkpieceMaterial, MachineMotionStep, Func) Gets the deflection transformation matrix in the workpiece geometric coordinate system. public Mat4d GetDeflectionTransformOnWorkpieceGeomCoordinate(IMachiningTool millingTool, WorkpieceMaterial workpieceMaterial, MachineMotionStep machineStep, Func luggageFunc) Parameters millingTool IMachiningTool The milling tool. workpieceMaterial WorkpieceMaterial The workpiece material. machineStep MachineMotionStep The machining step. luggageFunc Func Function to get the milling force luggage. Returns Mat4d The deflection transformation matrix. GetIndexAtMaxCuttingForce() Gets the index at which the maximum cutting force occurs. public int GetIndexAtMaxCuttingForce() Returns int The index of the maximum cutting force. GetInputSpindlePower_W(SpindleCapability) Gets the input spindle power in Watts. public double GetInputSpindlePower_W(SpindleCapability spindleCapability) Parameters spindleCapability SpindleCapability The spindle capability information. Returns double Input spindle power in Watts. GetMaxAbsForceSlope_NdDeg(MachiningToolHouse, WorkpieceMaterial, MachineMotionStep, Func) Absolute max force changed per degree. public double GetMaxAbsForceSlope_NdDeg(MachiningToolHouse toolHouse, WorkpieceMaterial workpieceMaterial, MachineMotionStep machineStep, Func luggageFunc) Parameters toolHouse MachiningToolHouse workpieceMaterial WorkpieceMaterial machineStep MachineMotionStep luggageFunc Func Returns double GetMaxBottomEdgeDeflectionOnToolRunningCoordinate_mm(IMachiningTool, WorkpieceMaterial, MachineMotionStep, Func) Gets the maximum deflection of the bottom edge in the tool running coordinate system. public Vec3d GetMaxBottomEdgeDeflectionOnToolRunningCoordinate_mm(IMachiningTool millingTool, WorkpieceMaterial workpieceMaterial, MachineMotionStep machineStep, Func luggageFunc) Parameters millingTool IMachiningTool The milling tool to get the deflection for. workpieceMaterial WorkpieceMaterial The workpiece material. machineStep MachineMotionStep The machining step. luggageFunc Func Function to get the milling force luggage. Returns Vec3d The maximum deflection vector in millimeters. GetMaxDeflectionTransformOnToolRunningCoordinate(IMachiningTool, WorkpieceMaterial, MachineMotionStep, Func) GetDeflectionTransformationByTipMovementOnToolRunningCoordinate public Mat4d GetMaxDeflectionTransformOnToolRunningCoordinate(IMachiningTool millingTool_, WorkpieceMaterial workpieceMaterial, MachineMotionStep machineStep, Func luggageFunc) Parameters millingTool_ IMachiningTool workpieceMaterial WorkpieceMaterial machineStep MachineMotionStep luggageFunc Func Returns Mat4d GetMaxTipDeflectionOnToolRunningCoordinate_mm(IMachiningTool) Gets the maximum deflection of the tool tip in the tool running coordinate system. public Vec3d GetMaxTipDeflectionOnToolRunningCoordinate_mm(IMachiningTool millingTool) Parameters millingTool IMachiningTool The milling tool to get the deflection for. Returns Vec3d The maximum deflection vector in millimeters. PowerWithoutFriction_W() Gets the power without friction in watts, calculated as axial power taken by workpiece minus friction power. public double PowerWithoutFriction_W() Returns double" + "summary": "Class RakeFacePhysicsBrief Namespace Hi.MillingForces Assembly HiMech.dll Physics brief on rake face for milling. public class RakeFacePhysicsBrief Inheritance object RakeFacePhysicsBrief Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors RakeFacePhysicsBrief() Ctor. public RakeFacePhysicsBrief() RakeFacePhysicsBrief(int) Initializes a new instance of the RakeFacePhysicsBrief class with a specified rotation division number. public RakeFacePhysicsBrief(int rotationDivisionNum) Parameters rotationDivisionNum int The number of divisions for rotation calculations. Properties AvgAbsForce_N Gets the average absolute force in Newtons. public double AvgAbsForce_N { get; } Property Value double AvgAbsMomentAboutSensorVec3d_Nm Gets the average absolute moment about the sensor as a 3D vector in Newton-meters. public Vec3d AvgAbsMomentAboutSensorVec3d_Nm { get; } Property Value Vec3d AvgAbsMomentXAboutSensorOnSpindleRotationCoordinate_Nm Gets the average absolute moment about the sensor on spindle rotation coordinate in Newton-meters. public double AvgAbsMomentXAboutSensorOnSpindleRotationCoordinate_Nm { get; } Property Value double AvgAbsMomentXAboutToolTipOnSpindleRotationCoordinate_Nm Gets the average absolute moment about the tool tip on spindle rotation coordinate in Newton-meters. public double AvgAbsMomentXAboutToolTipOnSpindleRotationCoordinate_Nm { get; } Property Value double AvgAbsTorqueOnSpindleRotationCoordinate_Nm Gets the average of abs spindle axial torque on Spindle rotation coordinate. public double AvgAbsTorqueOnSpindleRotationCoordinate_Nm { get; } Property Value double AvgContactEdgeLengthPerFlute_mm Gets the average contact edge length per flute in millimeters. public double AvgContactEdgeLengthPerFlute_mm { get; } Property Value double AvgForceToToolOnToolRunningCoordinate_N Avg cutting force to tool on tool running coordinate. public Vec3d AvgForceToToolOnToolRunningCoordinate_N { get; } Property Value Vec3d AvgMomentAboutSensor_Nm Gets the average moment about the sensor in Newton-meters. public double AvgMomentAboutSensor_Nm { get; } Property Value double AvgMomentAboutToolTipOnProgramCoordinate_Nm Gets the average moment about the tool tip on program coordinate in Newton-meters. public Vec3d AvgMomentAboutToolTipOnProgramCoordinate_Nm { get; } Property Value Vec3d AvgMomentAboutToolTipOnToolRunningCoordinate_Nm Gets the average moment about the tool tip on tool running coordinate in Newton-meters. public Vec3d AvgMomentAboutToolTipOnToolRunningCoordinate_Nm { get; } Property Value Vec3d AvgMomentAboutToolTip_Nm Gets the average moment about the tool tip in the program coordinate system, measured in Newton-meters. public double AvgMomentAboutToolTip_Nm { get; } Property Value double AvgMomentXyAboutObservationPoint Gets the average moment about the tool tip in the program coordinate system, measured in Newton-meters. public double AvgMomentXyAboutObservationPoint { get; } Property Value double AvgRadialForcePerFluteToTool_N Gets the average radial force per flute applied to the tool in Newtons. public double AvgRadialForcePerFluteToTool_N { get; } Property Value double ChipThickness_mm Gets or sets the actual chip thickness in millimeters after cutting. public double ChipThickness_mm { get; } Property Value double ChipVolume_mm3 ChipVolume_mm3 per flute. public double ChipVolume_mm3 { get; } Property Value double DeltaTipDeflectionOnToolRunningCoordinate_mm Gets the delta tip deflection on tool running coordinate in millimeters. public Vec3d DeltaTipDeflectionOnToolRunningCoordinate_mm { get; } Property Value Vec3d FrictionPower_W friction power takes by workpiece per cycle. the unit is watt. public double FrictionPower_W { get; } Property Value double MaxAbsForce_N Gets the maximum absolute force in Newtons. public double MaxAbsForce_N { get; } Property Value double MaxAxialTorqueOnToolRunningCoordinateZero_Nm Gets the maximum axial torque at the tool running coordinate origin in Newton-meters. public double MaxAxialTorqueOnToolRunningCoordinateZero_Nm { get; } Property Value double MaxCompetingCuttingForceOnToolRunningCoordinate_N Gets the maximum competing cutting force on tool running coordinate in Newtons. This represents the second-strongest force during the cutting cycle. public Vec3d MaxCompetingCuttingForceOnToolRunningCoordinate_N { get; } Property Value Vec3d MaxForceOnToolRunningCoordinate_N Gets the maximum force on the tool running coordinate in Newtons. public Vec3d MaxForceOnToolRunningCoordinate_N { get; } Property Value Vec3d MaxMomentAboutSensor_Nm Gets the maximum moment about the sensor in Newton-meters. public double MaxMomentAboutSensor_Nm { get; } Property Value double MaxMomentAboutToolTip_Nm Gets the maximum moment about the tool tip in Newton-meters. public double MaxMomentAboutToolTip_Nm { get; } Property Value double RakeFaceCycleAvgContactArea_mm2 contact area along cutter outside contact point to circle center direction. The average is for each rotation angle. This property is for computing heat transfer. public double RakeFaceCycleAvgContactArea_mm2 { get; } Property Value double RotationAngleInterval_deg Delta angle in degree. The value is 360 / RotationDivisionNum. public double RotationAngleInterval_deg { get; } Property Value double RotationAngleInterval_rad Delta angle in radian. The value is 2 * pi / RotationDivisionNum. public double RotationAngleInterval_rad { get; } Property Value double RotationDivisionNum Gets the number of divisions used for rotation calculations. public int RotationDivisionNum { get; } Property Value int UncutChipThickness_mm Gets or sets the uncut chip thickness in millimeters. public double UncutChipThickness_mm { get; } Property Value double WorkpiecePlasticDepth_mm Positive value for compression. Negative value for tension. public double WorkpiecePlasticDepth_mm { get; } Property Value double YieldStressMinHeight_mm While computing cutter yielding, the small radial radius near the tool tip may cause singular computation. a small arbitrary gap is set to avoid the singular behavior. public static double YieldStressMinHeight_mm { get; set; } Property Value double YieldingStressRatio Gets the yielding stress ratio. public double YieldingStressRatio { get; } Property Value double Methods GetAbsAxialPower_W() Gets the absolute axial power in Watts. public double GetAbsAxialPower_W() Returns double Absolute axial power in Watts. GetAvgForceToWorkpieceOnProgramCoordinate(MachineMotionStep) Avg cutting force on workpiece coordinate. public Vec3d GetAvgForceToWorkpieceOnProgramCoordinate(MachineMotionStep machineStep) Parameters machineStep MachineMotionStep Returns Vec3d GetAxialPowerTakenByWorkpiece_W() Gets the axial power taken by workpiece in Watts. public double GetAxialPowerTakenByWorkpiece_W() Returns double Axial power taken by workpiece in Watts. GetDeflectionTransformOnWorkpieceGeomCoordinate(IMachiningTool, WorkpieceMaterial, MachineMotionStep, Func) Gets the deflection transformation matrix in the workpiece geometric coordinate system. public Mat4d GetDeflectionTransformOnWorkpieceGeomCoordinate(IMachiningTool millingTool, WorkpieceMaterial workpieceMaterial, MachineMotionStep machineStep, Func luggageFunc) Parameters millingTool IMachiningTool The milling tool. workpieceMaterial WorkpieceMaterial The workpiece material. machineStep MachineMotionStep The machining step. luggageFunc Func Function to get the milling force luggage. Returns Mat4d The deflection transformation matrix. GetIndexAtMaxCuttingForce() Gets the index at which the maximum cutting force occurs. public int GetIndexAtMaxCuttingForce() Returns int The index of the maximum cutting force. GetInputSpindlePower_W(SpindleCapability) Gets the input spindle power in Watts. public double GetInputSpindlePower_W(SpindleCapability spindleCapability) Parameters spindleCapability SpindleCapability The spindle capability information. Returns double Input spindle power in Watts. GetMaxAbsForceSlope_NdDeg(MachiningToolHouse, WorkpieceMaterial, MachineMotionStep, Func) Absolute max force changed per degree. public double GetMaxAbsForceSlope_NdDeg(MachiningToolHouse toolHouse, WorkpieceMaterial workpieceMaterial, MachineMotionStep machineStep, Func luggageFunc) Parameters toolHouse MachiningToolHouse workpieceMaterial WorkpieceMaterial machineStep MachineMotionStep luggageFunc Func Returns double GetMaxBottomEdgeDeflectionOnToolRunningCoordinate_mm(IMachiningTool, WorkpieceMaterial, MachineMotionStep, Func) Gets the maximum deflection of the bottom edge in the tool running coordinate system. public Vec3d GetMaxBottomEdgeDeflectionOnToolRunningCoordinate_mm(IMachiningTool millingTool, WorkpieceMaterial workpieceMaterial, MachineMotionStep machineStep, Func luggageFunc) Parameters millingTool IMachiningTool The milling tool to get the deflection for. workpieceMaterial WorkpieceMaterial The workpiece material. machineStep MachineMotionStep The machining step. luggageFunc Func Function to get the milling force luggage. Returns Vec3d The maximum deflection vector in millimeters. GetMaxDeflectionTransformOnToolRunningCoordinate(IMachiningTool, WorkpieceMaterial, MachineMotionStep, Func) GetDeflectionTransformationByTipMovementOnToolRunningCoordinate public Mat4d GetMaxDeflectionTransformOnToolRunningCoordinate(IMachiningTool millingTool_, WorkpieceMaterial workpieceMaterial, MachineMotionStep machineStep, Func luggageFunc) Parameters millingTool_ IMachiningTool workpieceMaterial WorkpieceMaterial machineStep MachineMotionStep luggageFunc Func Returns Mat4d GetMaxTipDeflectionOnToolRunningCoordinate_mm(IMachiningTool) Gets the maximum deflection of the tool tip in the tool running coordinate system. public Vec3d GetMaxTipDeflectionOnToolRunningCoordinate_mm(IMachiningTool millingTool) Parameters millingTool IMachiningTool The milling tool to get the deflection for. Returns Vec3d The maximum deflection vector in millimeters. PowerWithoutFriction_W() Gets the power without friction in watts, calculated as axial power taken by workpiece minus friction power. public double PowerWithoutFriction_W() Returns double" }, "api/Hi.MillingForces.ToolObservationReference.html": { "href": "api/Hi.MillingForces.ToolObservationReference.html", @@ -4917,7 +4917,7 @@ "brief/dev-doc/build-hinc/player/player-tool-bar.html": { "href": "brief/dev-doc/build-hinc/player/player-tool-bar.html", "title": "Player Tool Bar | HiAPI-C# 2025", - "summary": "Player Tool Bar Layout Player Tool Bar Status Text Field Start Button Pause Button Run-One-Line Button Run-One-Step Button Stop Button Reset Button Behavior of Player Tool Bar See the example code to: complete the behavior of the buttons and Status Text Field. The rapidly used buttons should has hotkey. At least the following buttons: Run One Line Button Run One Step Button Start/Continue Pause Both webapi and win-desktop applications use LocalProjectService events for monitoring PacePlayer status changes. In webapi applications, the PlayerStatusService subscribes to these LocalProjectService events and broadcasts status changes via PlayerStatusHub using SignalR for real-time communication. Win-desktop applications can directly subscribe to LocalProjectService events for status updates. Alter the background color of the Status Text Field if the status changed. Warning style color Running Secondary style color Paused No Project Success style color Finished Ready The action of Reset Button should be async for user experience. Tip Use icon instead of text to the tool bar button. Run One Line Button and Run One Step Button use the same icon, use the different color to resolve them. Run One Line Button > default color with green seasoned Run One Step Button > default color with blue seasoned The other button use the default color is enough. Source Code Path See this page for git repository. WPF Application Source Code Path Play/PlayerToolBar Web Page Application Source Code Path wwwroot/player/player-tool-bar.js Players/PlayerController.cs Players/PlayerStatusHub.cs Players/PlayerStatusService.cs SignalR Implementation (Webapi Only) PlayerStatusHub provides real-time player status updates, with methods GetPlayerStatus() and event PlayerStatusUpdated. PlayerStatusService monitors LocalProjectService events (PacePlayer_IsRunningChangedEvent, PacePlayer_IsLockedChangedEvent, PacePlayer_IsFinishedChangedEvent, PacePlayer_ResetedEvent) and broadcasts changes via SignalR. The JavaScript component connects to /playerStatusHub and listens for status updates. API endpoints include /api/player/start, /api/player/pause, /api/player/resume, /api/player/run-line, /api/player/run-step, /api/player/stop, and /api/player/reset. Razor Page Source Code @using Hi.Common.PathUtils; @using Hi.HiNcKits; @using Hi.MachiningProcs @using Hi.MillingProcs; @using Hi.Numerical.FilePlayers; @inject HiNcHost hiNcHost @{ MachiningProject machiningProject = hiNcHost.MachiningProject; bool disabledByMachiningProject = machiningProject == null; }
@if (machiningProject == null) { } else if (!machiningProject.PacePlayer.IsLocked) { } else { }
using Hi.Common; using Hi.MachiningProcs; using Hi.Parallels; using Microsoft.AspNetCore.Components; namespace HiNcRcl.Areas.Player { public partial class PlayerButtonGroup : IAsyncDisposable { [Parameter] public string Tid { set; get; } = System.Guid.NewGuid().ToString(); StringLocalizer Loc { get; } = new StringLocalizer(typeof(PlayerDiv)); SemaphoreSlim DisposeSemaphore { get; } = new SemaphoreSlim(1); MachiningProject MachiningProject => hiNcHost.MachiningProject; bool disposedValue = false; /// protected override async Task OnAfterRenderAsync(bool firstRender) { base.OnAfterRender(firstRender); if (firstRender) { using var _ = await DisposeSemaphore.EmbraceAsync(); if (disposedValue) return; var machiningProject = MachiningProject; if (machiningProject != null) { machiningProject.PacePlayer.IsLockedChangedEvent += EnumerablePlayer_IsLockedEventHandler; machiningProject.PacePlayer.IsRunningChangedEvent += EnumerablePlayer_IsLockedEventHandler; machiningProject.PacePlayer.IsFinishedChangedEvent += EnumerablePlayer_IsLockedEventHandler; } } } /// public async ValueTask DisposeAsync() { using var _ = await DisposeSemaphore.EmbraceAsync(); var machiningProject = MachiningProject; if (machiningProject != null) { machiningProject.PacePlayer.IsLockedChangedEvent -= EnumerablePlayer_IsLockedEventHandler; machiningProject.PacePlayer.IsRunningChangedEvent -= EnumerablePlayer_IsLockedEventHandler; machiningProject.PacePlayer.IsFinishedChangedEvent -= EnumerablePlayer_IsLockedEventHandler; } disposedValue = true; await ValueTask.CompletedTask; } private void EnumerablePlayer_IsLockedEventHandler(bool obj) { InvokeAsync(StateHasChanged).ConfigureAwait(false); } public void StartOrContinue() { if (!MachiningProject.PacePlayer.IsLocked) { MachiningProject.PacePlayer.Start(); } else if (!MachiningProject.PacePlayer.IsRunning && !MachiningProject.PacePlayer.IsFinished) { MachiningProject.PacePlayer.Resume(); } } public void Pause() { MachiningProject?.PacePlayer.Pause(); } public void RunToLineEnd() { MachiningProject?.NcRunner.RunToLineEnd(); } public void RunToNextPace() { MachiningProject?.PacePlayer.RunToNextPace(); } public void Break() { MachiningProject?.PacePlayer.Terminate(); } public async Task Reset() { await Task.Run(() => { MachiningProject?.PacePlayer.Reset(); }).ShowIfCatched(this); } } }" + "summary": "Player Tool Bar Layout Player Tool Bar Status Text Field Start Button Pause Button Run-One-Line Button Run-One-Step Button Stop Button Reset Button Behavior of Player Tool Bar See the example code to: complete the behavior of the buttons and Status Text Field. The rapidly used buttons should has hotkey. At least the following buttons: Run One Line Button Run One Step Button Start/Continue Pause Both webapi and win-desktop applications use LocalProjectService events for monitoring PacePlayer status changes. In webapi applications, the PlayerStatusService subscribes to these LocalProjectService events and broadcasts status changes via PlayerStatusHub using SignalR for real-time communication. Win-desktop applications can directly subscribe to LocalProjectService events for status updates. Alter the background color of the Status Text Field if the status changed. Warning style color Running Secondary style color Paused No Project Success style color Finished Ready The action of Reset Button should be async for user experience. Tip Use icon instead of text to the tool bar button. Run One Line Button and Run One Step Button use the same icon, use the different color to resolve them. Run One Line Button > default color with green seasoned Run One Step Button > default color with blue seasoned The other button use the default color is enough. Source Code Path See this page for git repository. WPF Application Source Code Path Play/PlayerToolBar Web Page Application Source Code Path wwwroot/player/player-tool-bar.js Players/PlayerController.cs Players/PlayerStatusHub.cs Players/PlayerStatusService.cs SignalR Implementation (Webapi Only) PlayerStatusHub provides real-time player status updates, with methods GetPlayerStatus() and event PlayerStatusUpdated. PlayerStatusService monitors LocalProjectService events (PacePlayer_IsRunningChangedEvent, PacePlayer_IsLockedChangedEvent, PacePlayer_IsFinishedChangedEvent, PacePlayer_ResetedEvent) and broadcasts changes via SignalR. The JavaScript component connects to /playerStatusHub and listens for status updates. API endpoints include /api/player/start, /api/player/pause, /api/player/resume, /api/player/run-line, /api/player/run-step, /api/player/stop, and /api/player/reset. Razor Page Source Code @using Hi.Common.PathUtils; @using Hi.HiNcKits; @using Hi.MachiningProcs @using Hi.MillingProcs; @using Hi.Numerical.FilePlayers; @inject HiNcHost hiNcHost @{ MachiningProject machiningProject = hiNcHost.MachiningProject; bool disabledByMachiningProject = machiningProject == null; }
@if (machiningProject == null) { } else if (!machiningProject.PacePlayer.IsLocked) { } else { }
using Hi.Common; using Hi.MachiningProcs; using Hi.Parallels; using Microsoft.AspNetCore.Components; namespace HiNcRcl.Areas.Player { public partial class PlayerButtonGroup : IAsyncDisposable { [Parameter] public string Tid { set; get; } = System.Guid.NewGuid().ToString(); StringLocalizer Loc { get; } = new StringLocalizer(typeof(PlayerDiv)); SemaphoreSlim DisposeSemaphore { get; } = new SemaphoreSlim(1); MachiningProject MachiningProject => hiNcHost.MachiningProject; bool disposedValue = false; /// protected override async Task OnAfterRenderAsync(bool firstRender) { base.OnAfterRender(firstRender); if (firstRender) { using var _ = await DisposeSemaphore.EmbraceAsync(); if (disposedValue) return; var machiningProject = MachiningProject; if (machiningProject != null) { machiningProject.PacePlayer.IsLockedChangedEvent += EnumerablePlayer_IsLockedEventHandler; machiningProject.PacePlayer.IsRunningChangedEvent += EnumerablePlayer_IsLockedEventHandler; machiningProject.PacePlayer.IsFinishedChangedEvent += EnumerablePlayer_IsLockedEventHandler; } } } /// public async ValueTask DisposeAsync() { using var _ = await DisposeSemaphore.EmbraceAsync(); var machiningProject = MachiningProject; if (machiningProject != null) { machiningProject.PacePlayer.IsLockedChangedEvent -= EnumerablePlayer_IsLockedEventHandler; machiningProject.PacePlayer.IsRunningChangedEvent -= EnumerablePlayer_IsLockedEventHandler; machiningProject.PacePlayer.IsFinishedChangedEvent -= EnumerablePlayer_IsLockedEventHandler; } disposedValue = true; await ValueTask.CompletedTask; } private void EnumerablePlayer_IsLockedEventHandler(bool obj) { InvokeAsync(StateHasChanged).ConfigureAwait(false); } public async Task StartOrContinue() { await Task.Run(() => { if (!MachiningProject.PacePlayer.IsLocked) { MachiningProject.PacePlayer.Start(); } else if (!MachiningProject.PacePlayer.IsRunning && !MachiningProject.PacePlayer.IsFinished) { MachiningProject.PacePlayer.Resume(); } }).ShowIfCatched(this); } public async Task Pause() { await Task.Run(() => { MachiningProject?.PacePlayer.Pause(); }).ShowIfCatched(this); } public async Task RunToLineEnd() { await Task.Run(() => { MachiningProject?.NcRunner.RunToLineEnd(); }).ShowIfCatched(this); } public async Task RunToNextPace() { await Task.Run(() => { MachiningProject?.PacePlayer.RunToNextPace(); }).ShowIfCatched(this); } public async Task Break() { await Task.Run(() => { MachiningProject?.PacePlayer.Terminate(); }).ShowIfCatched(this); } public async Task Reset() { await Task.Run(() => { MachiningProject?.PacePlayer.Reset(); }).ShowIfCatched(this); } } }" }, "brief/dev-doc/build-hinc/player/selected-step-info-panel.html": { "href": "brief/dev-doc/build-hinc/player/selected-step-info-panel.html", diff --git a/App/zh-Hans/HiMech.resources.dll b/App/zh-Hans/HiMech.resources.dll index cab7554851312e85bb361d4cb1928687fcc0e27f..80677da8d0a1ec60032fa8436d3e481ca5530381 100644 GIT binary patch delta 230 zcmZq3Xvmn*!BV*6#fgnQPRxvYo6j>VG6}p_2z@qdtG9P+-3lL3vvZxB*fJR{%=8Qx z7)%%$^o{il^-RpPO@Y9~$k-q?&A`IaFfq*_IW^59Ez#7%$Slp!JjpD{EX~3&IW=|j zLiV>RoO%q549pA+40@ZV>pW*-G}~OSU(Xn9#-Pn$3WX*NMhwOb1`MeTX+Y9~!IHs{ zArZ_@28&q$*@-~47C?1oK(--+IYSbV1;S}SQ9}lhy41;mhNi4$40;R(lLfWQHZvOi GX9NIbc{m0D delta 230 zcmZq3Xvmn*!6IXKy<=mK6Emak=JU*oOajf1K6yM64RPOBu83Cv+H`xFH diff --git a/App/zh-Hans/HiNc.resources.dll b/App/zh-Hans/HiNc.resources.dll index bc77d68c77fd10b4b45d7f23ef1403c966f93cbf..772d6e3ec37796f85b4d72c6711153f1714b05af 100644 GIT binary patch delta 231 zcmW-YF-t=+6ot?AwPK~h>nz>671E@6NnSQ_=vW6gx0lfT0XIP?bm`zAl+r)YS*Stq zA2_;owu^KBfnFWX;k);oGat+c&&$@w&E0zUbX}0opGEJad=UGqUH@^qoxJuZZ~L>= zvHe~Hnnup@*Xc{q@gNiceBPWd zh+Mwx-qWqa5EcP7G`odDgh68Vd?hqYk~wnn*Gs6FCHED(;Zf`uT*!hey* z^s%wl)+R1tSaxRi+u2|?c)HtvIUj$%J)8-Oc_sRL#q|33`EvPwaj)0n^zrX_{?qx0 zzLbC^j7+IY=Z9@lwexMTT1%Ufbd9Q{nMh|`ZK6?0H^JK~uo8C1maw J-;}A?(m%y5G?M@T diff --git a/App/zh-Hant/HiGeom.resources.dll b/App/zh-Hant/HiGeom.resources.dll index db01a4e68cdaf1979315d6b4df39096280692c54..b56f4c51ee55c2c8916117619e3c54ccbe7a0527 100644 GIT binary patch delta 231 zcmW-Wu}T9$6h-f34U!OK#mZK~CJx?_Vsbq{q%o{ zN(s~gH@Z}%rkQWGRx;Suc^hqOOduB!zxMH&I5Hu1}k6P(UC9P^9mJTbpHM=k^L#0i H$p6GYB}X-s delta 231 zcmWNFKTg9i6vjU{tq=&IR7~s%OGR+f*zaXvK|-p!a)LOH&%jbqHU@@P9lCLWssr*7 zH~<&u#3>j+^y#PX?=o9vtJh&z3_m~K?h}>AujFcwzW;uA{_cAA@~}UwpEAGs8T~O8 z8mJX+r$t#zY2q9=rKhTNw%6WU_NL-C1nzo4N769$L1S#^OePMvEXYI&mv9sD)l0Ei|$TcC)xJBSHZk$LU-} HmHw+EKKnHc diff --git a/App/zh-Hant/HiMech.resources.dll b/App/zh-Hant/HiMech.resources.dll index 8b8df76c8c20cd2c053b7a3db0b3278a455edc65..954383f34689ee0ad9c42c016e1f648ff5e9d152 100644 GIT binary patch delta 230 zcmXYnv1$TA6h-gsnhojPPY~=@#+lunw__X9q!bIQ6uZj|<_BV_kS2nNU}5biWamTj z1(v}^E8BpMlKZ%i!{y8;^U3~&)+E{H%rBkx9sHh^VWo?YxJ)XKx91I}%YbT66Kxi`=&jY-qqeC&k_YHPq$jXO58lN8A|m);1HWQ`EV?~ Fuq*h%IJW=* delta 230 zcmW-ZAx{HA5QX3NC)y@G?N-7+AP5vL>(23udm8TlTufJ+ zSH??e0X7&>S(Pk#3>=##SX&40sgEMQtz8>E_tX(r)GUVk8r;TETr3k78Vvl#JoTrKv@J| zLhNls1m7T_je4}0;X7w$7J8wtFL%#Rx9|5?#|8QPTs-V_pZcFCdOAP5{d#@5>utVQ zH+zqjD+QnlLsiPsxPc9o3RXswg14y-!bfRC(os}W7?qS7MN^AOzG${PEe}Egz~}Y; zlE~%W!HmWZ16Tx9Q0x{G5eA9b^OaCD3FgSjUoSy33+_vH!>hzn82#^R{!LbIho<3B NLgaq;gEAfc&@Wj0ILH71 delta 231 zcmW-YJ4!=g5QWd=YD7f{A&OvS9k~AQN1HaKEAYNHU}+Q3!a_udkVRO@kHk7jBPra0 zkQ8Pa$q)|1oO9-zkr|n{=Y!SsZ}Ryv$S9=W?5ovzm@U?4cZ1=_eED IDbeMYcB>jTsQ>@~